一.脚本原理
本节不考虑引擎实现和服务端运行方式,仅讨论实际功能。
1.脚本执行方式
当点击NPC后,服务端会在scripts-zh-CN\npc或 scripts\npc文件夹中寻找相应的NPC去执行它。这里以明珠港巴士为例(1002000.js)。

如何知道NPC的ID呢?打开服务端resources的application.yml,找到USE_DEBUG,设定为true即可在点击NPC的时候在聊天框看到ID。


2.执行脚本基础框架
基本框架为 start + action。也是脚本执行必备的两个函数,其中,start只执行一次,action可以联想为持续不停的进行调用(并非严格意义上的持续调用,只是方便理解),当遇到dispose函数时结束循环,NPC对话结束并释放相关资源。有些小伙伴会反馈脚本执行后就卡住了,大多就是因为这个原因。
var status = -1;
function start()
{
//如果你的函数只需要一层对话,一个功能,那么start就能满足需求了。
status = -1;
action(1, 0, 0);
}
function action(mode, type, selection)
{
}
二.NPC对话基本函数
1.NPC对话基本函数
| Decs | BaseFunction | type | mode | section |
|---|---|---|---|---|
| -[弹出Yes/No对话框] | sendYesNo(str) | 1 | 是=1,否=0,结束=-1 | |
| -[弹出带有下一个的对话框] | sendNext(str) | 0 | 下一项=1,结束=-1 | |
| -[弹出带有上一个的对话框] | sendPrev(str) | 0 | 上一项=0,结束=-1 | |
| -[弹出带有确定的对话框] | sendOk(str) | 0 | 确定=1,结束=-1 | |
| -[弹出上&下一个的对话框] | sendNextPrev(str) | 0 | 上一项=0,下一项=1,停止=-1 | |
| -[弹出接受&拒绝的对话框] | sendAcceptDecline(str) | 12 | 接受=1,拒绝=0,结束=-1 | |
| -[弹出带有选项(#L索引# xxx #l)的对话框] | sendSimple(str) | 4 | 选择=1,结束=0 | 选择的索引 |
| -[弹出选择造型的对话框] | sendStyle(str,int styles[]) | 0 | 确定=1,取消=0,结束=-1 | 选择的索引 |
| -[弹出输入数字的对话框] | sendGetNumber(str,int def, int min, int max) | 0 | 确定=1,结束=0 | 输入的数字 |
| -[保存指定的字符串] | setGetText(str) | |||
| -[弹出带有输入字符串的对话框] | sendGetText(str) | 0 | 确定=1,结束=0 | |
| -[返回sendGetText(str)/setGetText(str)寫入的字符串] | getText() |
2.模拟训练
-修改明珠港NPC脚本,需求:点击NPC并输入数字获得指定的道具(&金币)。
var status;
//Start
function start()
{
status = -1;
action(1, 0, 0);
}
function action(

最低0.47元/天 解锁文章
875






