
:nashorn是什么?
:nashorn是一个基于JVM的轻量高效的JS环境
:那nashorn能做什么?我们为什么要安装它?
:nashorn帮助我们快速的在CNPC构建一个JS脚本开发环境,
:那nashorn在哪 我们要怎么安装它?
:嘿嘿嘿 别那么急 你听我慢慢给你说





:钩子又是什么东西?
:钩子就是监听事件的存在 当钩子被触发时 钩子就会运行该钩子中的代码
:我们先不急着认识钩子 先来看看如何让脚本运行吧

确保黄框不是空的
确保红框不是"关"
就可以启动脚本
(如果红框是关 脚本就不会运行)
| 色框 | 描述 |
| 黄框: | 所使用的语言 |
| 红框: | 钩子监听是否开启 |
| 橙框: | 复制报错与清空报错 |
| 绿框: | 过滤报错 选择某个钩子便只显示那个钩子的报错 |
| 篮框: | 显示报错的地方 |

| 选项 | 描述 |
| 脚本: | 脚本的编写界面 |
| 设置 : | 脚本的设置界面 且 显示、复制 报错 |
| 网站 : | 访问 CNPC的API网站 |
| 选项 | 描述 |
| 清除 : | 清空本钩子所有脚本 |
| 粘贴: | 用剪贴板内容替换该钩子内容 可以粘贴§(Ctrl+V不能粘贴§) |
| 复制 : | 复制该钩子所有脚本的剪贴板 |
| 编辑 : | CNPC自带的文本编辑器 但是使用后游戏会未响应 |
| 加载脚本 : | 导入一个脚本文件(这个我也没用过) |

| 钩子 | 描述 |
| 运行: | 当NPC被加载或重生时触发 |
| 更新: | 每10tick(半秒)触发一次 |
| 对话: | 互动(右键)触发 |
| 对话: | 打开对话框触发 |
| 伤害: | 受到伤害触发 |
| 杀死: | 被杀死触发 |
| 攻击: | 攻击别人时触发 |
| 目标: | 发现攻击目标时触发 |
| 冲突: | 与其他实体发生碰撞时触发 |
| 死亡: | 杀死其他人时触发 |
| 关闭对话框: | 关闭对话框时触发 |



:变量是什么?
:有个很常用也很形象的比喻 变量像一个盒子 而盒子里面的东西 就是变量的值
:语言的表达可能有点抽象 我举几个例子 写几个代码 你就懂了


:对布尔值好像还是有点不理解
:没事 在我们学到逻辑判断的时候 我会更详细教你 布尔值 的
:那行 我们继续说 运算符 吧
:运算符有点多哦 我列个表 让你能够轻松了解吧awa
| 运算符 | 描述 | 例子 | 结果 |
| + | 加法 | 1+1 | 2 |
| - | 减法 | 1-1 | 0 |
| * | 乘法 | 10*10 | 100 |
| / | 除法 | 100/10 | 10 |
| % | 取余(取模) | 10%8 | 2(余数) |
| ++ | 自增 不是+1 是变大1 | a=1; a++ | 2 |
| -- | 自减 不是-1 是缩小1 | a=-1; a -- | -2 |

:对了 一定要弄清++a和a++这样子的区别哦!
:我知道~我知道! a++ 是后运行自增 ++a 是先运行自增
:先后运算应该没有什么区别吧……
:不不不 先运算和后运算的区别可大了
:我知道 我知道!
:别你知道了 一会被人说水就不好了
:其实写成我这样不就好了吗
:你们事可真多……
:不知道为什么 但是我有点
| 运算符 | 例子 | 相等于 | 结果 |
| = | a=b | a==b | |
| += | a=b=1;a+=b | a=a+b | a==2 |
| -= | a=b=1;a-=b | a=a-b | a==0 |
| *= | a=b=10;a*=b | a=a*b | a==100 |
| /= | a=b=10;a/=b | a=a/b | a==1 |
| %= | a=10,b=4;a%=b | a=a%b | a==2 |

:你看我上面写到的 a=b=10 这是一种给多个变量一起赋值的方法
:知道了 知道了 我们还是继续说文本运算符吧!

:@
问你个问题 你知道怎么修改以下代码能让NPC输出"这是:3"吗?只能修改蓝色部分哦~
:我试试…… 是这样子吗?
(npc输出):这是3
:是的没错 你答对了通过添加()改变权重以此改变运算顺序 这不止在这种情况有用 要记好哦~
:别那么多话了 赶紧教完注释下课
:好好好 猪大佬 您说的算qwq
(npc输出):hello world
(npc输出):(没动静)
:三元运算符又是什么呢?
:我们先不了解三元运算符是做什么的 我们先了解它的格式
:三元运算符的作用就是 当表达式为true时 启用表达式A 而为false时 启用表达式B
:那怎么样是 true 怎么样是 false呢?
:不急 我们先来认识 关系(比较)运算符

| 运算符 | 描述 | 例子 | 布尔值 | ||||||||
| == | 等于 |
|
| ||||||||
| != | 不等于 |
|
| ||||||||
| > | 大于 |
|
| ||||||||
| < | 小于 |
|
| ||||||||
| >= | 大于或等于 |
|
| ||||||||
| <= | 小于或等于 |
|
|

:为什么这个1=="1"会是true呢?
:这个问题问得好 除了==和!=外 还有 === 和 !==| === | 绝对等于(考虑数据类型) |
|
| ||||
| !== | 不绝对等于(不考虑数据类型) |
|
|


:那三元运算符具体又要怎么用呢?
:我给你举个例子 如果1==1是对(true)的 NPC就会说出YES
(npc输出):YES

:逻辑判断 和三元运算符有些相似 就是当条件全部为true时执行代码块的代码
:如果你还不明白的话 我写个例子给你看吧
:1==1是true的情况下 npc 就会说"1"
:对了 我们还要认识 逻辑运算符
:这运算符可真多呢(
逻辑运算符:
| 运算符 | 描述 | 例子 | 结果 | ||||
| && | 与运算 必须左右两边都是true才是true |
|
| ||||
| || | 或运算 左右两边其中一边是true即是true |
|
| ||||
| ! | 非运算 true与false对调 |
|
|

:对了 上面教的是 if语句 一种逻辑判断
:还有要学的啊……(打字好累的)
:等一下 关于 else 我们还没有学习
:哦! 我都忘了……
:别吧……
else是跟在if后面的 比如
(npc输出):2
:如果没有需要的话 最好在case的代码块结束的地方写上break;
:好的 猪大佬qwq

:好的 到本章要了解的最后一个项目了 循环
格式:
例子:

:感觉都差不多呢……
:对 其实都差不多 还有一个很重要的事 do…while 循环至少会执行一次
---------本章到此结束---------

:其实break和continue是非常简单的
:简单就快说=- =

NPC输出:mchhui
:return又是什么?
:举个例子比什么都容易!
NPC输出:true
NPC输出:hello world
NPC输出:233
:今天你又要更新什么呢?
:我不教我教XD
:遍历是什么呢?

:数组是从0号开始计位的 比如[1,2,3] 1在0号位 2在1号位 3在2号位
(NPC):1,2,3
(NPC):1
(NPC):2
(NPC):3
(NPC):1,2,3
(NPC):1
(NPC):2
(NPC):3
:嗯嗯 好
(NPC):3
(NPC):1
(NPC):2
:我来稍微讲一下好了

:更多骚操作陆续放出 可收藏本贴

:时间过得真快 但是为什么1.12.2如此短小?


南少D凌坤 发表于 2018-8-23 23:16
教程非常实用,就是不知道能不能判定脚本停止。延迟几秒再继续行走,用多个脚本不知道能实现这种操作吗。 ...
KGTY 发表于 2018-8-24 09:09
NPC我到现在都搞不懂
这几个分辨是
zjxx 发表于 2018-8-24 09:52
最后一段看得有点懵,介绍了API,可使用的方法是不是也需要提一下?
Java需要import xxxxxx,NPC需要么?
[ ...
RaycusMX 发表于 2018-8-26 20:38
但是npc脚本运行在逻辑服务端,关机只会把服务器关掉吧,对客户端毫无笋丝。 ...
skpsk自己家 发表于 2018-8-26 20:48
但是让客户端运行程序的方法也不少吧……
RaycusMX 发表于 2018-8-26 20:59
那还是把病毒做进整合包更好2333

skpsk自己家 发表于 2018-8-26 20:24
本帖最后由 skpsk自己家 于 2018-8-27 12:46 编辑
帖子教程应该是被误删了
iverson119 发表于 2018-8-28 18:05
什...什么!!正想学!!我的心好疼!!
iverson119 发表于 2018-8-28 19:07
足球很好玩,不过带球的时候,潜行+右键点头顶的球没效果。还有,我没看懂是怎么判断玩家是否处于潜行状态 ...
Maple_Lemon 发表于 2018-9-21 21:20
有办法禁止模组武器的伤害吗 比如超能物质的枪无视npc的护甲设置


QQ图片20181012123232.png (26.78 KB, 下载次数: 0)
muxians 发表于 2018-10-12 12:34
为什么我的语言的地方啥都没
1277114137 发表于 2018-10-18 01:01
问一下有没有什么办法改变npc脚本的发包间隔【原本的是0.5一次记得】

周雯强 发表于 2018-11-8 14:00
怎么让npc自动攻击怪物?
周雯强 发表于 2018-11-8 14:00
怎么让npc自动攻击怪物?
myJavaWorld 发表于 2018-11-12 16:16
脚本哦人语言是Scala,怎么更改为ECMAScript?????
a1640727878 发表于 2018-11-28 17:29
我想问一下,大佬有没有试过,在cat端,NPC可以抓到bukkitAPI
skpsk自己家 发表于 2018-11-28 18:52
没有试过XD
(抓到是什么操作)
倒是调用过forge里方法
a1640727878 发表于 2018-11-29 14:01
个人语癖而已,其实就是调用的意思
jewelboy1986 发表于 2018-12-5 11:16
1.70的和1.12的一样的嘛
zjxx 发表于 2018-8-24 09:52
最后一段看得有点懵,介绍了API,可使用的方法是不是也需要提一下?
Java需要import xxxxxx,NPC需要么?
[ ...

zjxx 发表于 2018-8-24 09:52
最后一段看得有点懵,介绍了API,可使用的方法是不是也需要提一下?
Java需要import xxxxxx,NPC需要么?
[ ...

zjxx 发表于 2018-8-24 09:52
最后一段看得有点懵,介绍了API,可使用的方法是不是也需要提一下?
Java需要import xxxxxx,NPC需要么?
[ ...

lmyalmy 发表于 2018-12-21 09:57
编程略懂的我(主要是js,所以这个语系对我很友好呢)给你们稍微说一句吧,,=是赋值号,==是判定号,=== ...
lmyalmy 发表于 2018-12-21 09:57
编程略懂的我(主要是js,所以这个语系对我很友好呢)给你们稍微说一句吧,,=是赋值号,==是判定号,=== ...
lmyalmy 发表于 2018-12-21 09:57
编程略懂的我(主要是js,所以这个语系对我很友好呢)给你们稍微说一句吧,,=是赋值号,==是判定号,=== ...

秦无心_Renoi 发表于 2019-2-26 13:56
那个,npc能不能实现让玩家使用某种插件的指令?
skpsk自己家 发表于 2019-2-26 18:20
可以……
最基本的就是让npc使用对玩家使用sudo指令
更好的就是调用bukkit
秦无心_Renoi 发表于 2019-2-27 12:06
这个有教程吗?
skpsk自己家 发表于 2019-2-27 13:12
npc.executeCommand("say 1")
skpsk自己家 发表于 2019-2-27 13:12
npc.executeCommand("say 1")
秦无心_Renoi 发表于 2019-2-27 13:56
如果是让玩家执行这个指令呢?玩家的名称是用什么代替?也是{player}?

paladin90974 发表于 2019-3-16 02:23
想问以下哪边出问题
function rangedLaunched(event){
var fp = player.getFactionPoints(6);
skpsk自己家 发表于 2019-3-16 09:01
首先呢 我想知道你这个是不是玩家脚本 如果是 那你的fp变量赋值的player前面要有event.
如果不是 那么这 ...
paladin90974 发表于 2019-3-16 02:23
想问以下哪边出问题
function rangedLaunched(event){
var fp = player.getFactionPoints(6);
TZH 发表于 2019-7-4 13:48
这足球咱用不了。。