手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

冒险岛单机版简单的编写NPC脚本

时间:2024-10-13 01:08:16

1、首先各个冒险岛单机版版本的NPC文件一般都在服务端的\scripts\npc文件夹中,其中文件的名字对应游戏中NPC的代码:也就是说如果游戏中射手村村长长老斯坦的ID是:1012003,你只要修改\scripts\npc\1012003文件就能改变这个NPC的作用。(如果你发现没有这段代码你可以把其他文件重命名改成这个代码试试)

冒险岛单机版简单的编写NPC脚本

2、因为可能会编程的人是少数,我们就来魑徒扮阙简单分析个例子。下图是一个简单的实现在NPC对话中,点击选项栏中的"测试给我15星",给玩家15星强化卷轴的沪枭诽纾代码。其中只要大家细细琢磨下,会发现里面的"2049349"是物品的ID,而后面的5代表给的数量,因为"2049349"是15星强化卷轴的ID,所以会给15星强化卷。如果我们改成其他物品的ID,那么就会给那个物品了。(看到这个文件的名字了吗,那是NPC代码,你想哪个NPC实现这个代码的功能,就改成那个NPC的ID放进\scripts\npc中,主义文件后缀不是txt哦。)

冒险岛单机版简单的编写NPC脚本

3、下面我把代码贴出来大家可以试验试验。function start() { cm.sendSimple ("领取物品: #L0##r1:测试给我15星 #k\r\n");}function action(mode, type, selection) { cm.dispose(); if (selection == 0) { cm.gainItem(2049349, 5 ); }else { cm.dispose(); }}

4、再把个多重选项的代码贴出来,能活用上面的代码时改这个应该不难了。var status = 0挢旗扦渌;function start() { status = -1; action(1, 0, 0);}function action(mode, type, selection) { if (status == 0 && mode == 0) { cm.dispose(); return; } if (mode == 1) { status++; } else { status--; } if (status == 0) { var selStr = "领取会员福利:\r\n点击领取哦\r\n#b#L0#日常极品#l\r\n#L1#漩涡双手剑#l\r\n#L2#突破百万之石#l\r\n#L3#手套攻击卷轴#l\r\n#L4#漩涡弓#l\r\n#b#L5#漩涡双弩#l\r\n#b#L6#肃清者套装#l\r\n#b#L7#暗炎赎罪者套装#l\r\n#b#L8#漩涡套装#l\r\n#b#L9#奥尔卡套装#l\r\n#b#L10#漩涡恶魔剑#l\r\n#b#L11#漩涡手杖#l\r\n#b#L12#漩涡灵魂手铳#l\r\n#b#L13#漩涡长杖#l\r\n#b#L14#先代狂龙战士套装#l\r\n#b#L15#漩涡匕首#l\r\n#b#L16#斯乌套装#l\r\n#b#L17#漩涡锁链剑#l\r\n#b#L18#死亡之刃套装#l"; cm.sendSimple(selStr); } else if (status == 1) { switch (selection) { case 0: if (cm.getMeso() >= 1) { cm.gainItem(1112312,1) cm.gainItem(1112495,1) cm.gainItem(1112763,1) cm.gainItem(1112597,1) cm.gainItem(1113028,1) cm.gainItem(1132246,1) cm.gainItem(1122267,1) cm.gainItem(1032223,1) cm.gainItem(1113075,1) cm.gainItem(1202031,1) cm.gainItem(1202083,1) cm.gainItem(1202023,1) cm.gainItem(1672027,1) cm.gainItem(1142788,1) cm.gainItem(1182147,1) cm.gainItem(1122076,1) cm.gainItem(2041200,3) cm.gainItem(1022232,1) cm.gainItem(1012478,1) cm.gainItem(1190407,1) cm.gainItem(4032933,1) cm.gainItem(1162025,1) cm.gainItem(1152170,1) cm.gainItem(2000005,300) cm.gainItem(2050004,300) cm.gainItem(4001017,100) cm.gainItem(4031179,100) } else { cm.sendOk("金币不足"); } break; case 1: if (cm.getMeso() >= 1) { cm.gainItem(1402220,1) } else { cm.sendOk("金币不足"); } break; case 2: if (cm.getMeso() >= 1) { cm.gainItem(2614019,100); } else { cm.sendOk("金币不足"); } break; case 3: if (cm.getMeso() >= 1) { cm.gainItem(2040804,100); cm.gainItem(2040805,100); cm.gainItem(2040810,100); cm.gainItem(2040811,100); } else { cm.sendOk("金币不足"); } break; case 4: if (cm.getMeso() >= 1) { cm.gainItem(1452226,1) cm.gainItem(2061008,9999) cm.gainItem(2061008,9999) cm.gainItem(2061008,9999) cm.gainItem(2061008,9999) cm.gainItem(2061008,9999) cm.gainItem(2061008,9999) cm.gainItem(2061008,9999) cm.gainItem(2061008,9999) cm.gainItem(2061008,9999) cm.gainItem(2061008,9999) cm.gainItem(2061008,9999) cm.gainItem(2061008,9999) } else { cm.sendOk("金币不足"); } break; case 5: if (cm.getMeso() >= 1) { cm.gainItem(1522113,1) } else { cm.sendOk("金币不足"); } break; case 6: if (cm.getMeso() >= 1) { cm.gainMeso( - 1); cm.gainItem(1052709,1) cm.gainItem(1004095,1) cm.gainItem(1102671,1) cm.gainItem(1072911,1) cm.gainItem(1702490,1) } else { cm.sendOk("金币不足"); } break; case 7: if (cm.getMeso() >= 1) { cm.gainItem(1102605,1) cm.gainItem(1052643,1) cm.gainItem(1072848,1) cm.gainItem(1003934,1) } else { cm.sendOk("金币不足"); } break; case 8: if (cm.getMeso() >= 1) { cm.gainItem(1003976,1) cm.gainItem(1102623,1) cm.gainItem(1082556,1) cm.gainItem(1052669,1) cm.gainItem(1072870,1) } else { cm.sendOk("金币不足"); } break; case 9: if (cm.getMeso() >= 1) { cm.gainItem(1003390,1) cm.gainItem(1003533,1) cm.gainItem(1004146,1) cm.gainItem(1052416,1) cm.gainItem(1052360,1) cm.gainItem(1072622,1) } else { cm.sendOk("金币不足"); } break; case 10: if (cm.getMeso() >= 1) { cm.gainItem(1232084,1) } else { cm.sendOk("金币不足"); } break; case 11: if (cm.getMeso() >= 1) { cm.gainItem(1362109,1) cm.gainItem(1702120,1) } else { cm.sendOk("金币不足"); } break; case 12: if (cm.getMeso() >= 1) { cm.gainItem(1222084,1) } else { cm.sendOk("金币不足"); } break; case 13: if (cm.getMeso() >= 1) { cm.gainItem(1382231,1) cm.gainItem(1092089,1) cm.gainItem(1092106,1) } else { cm.sendOk("金币不足"); } break; case 14: if (cm.getMeso() >= 1) { cm.gainItem(1003625,1) cm.gainItem(1052532,1) cm.gainItem(1072751,1) } else { cm.sendOk("金币不足"); } break; case 15: if (cm.getMeso() >= 1) { cm.gainItem(1332247,1) cm.gainItem(1092049,1) cm.gainItem(1342082,1) } else { cm.sendOk("金币不足"); } break; case 16: if (cm.getMeso() >= 1) { cm.gainItem(1004140,1) cm.gainItem(1052576,1) cm.gainItem(1072783,1) cm.gainItem(1004336,1) cm.gainItem(1052852,1) } else { cm.sendOk("金币不足"); } break; case 17: if (cm.getMeso() >= 1) { cm.gainItem(1242090) } else { cm.sendOk("金币不足"); } break; case 18: if (cm.getMeso() >= 1) { cm.gainItem(1702565,1) cm.gainItem(1102809,1) cm.gainItem(1004450,1) cm.gainItem(1073041,1) } else { cm.sendOk("金币不足"); } break; case 19: if (cm.getMeso() >= 1) { cm.setEnhance(1); } else { cm.sendOk("金币不足"); } break; } cm.dispose(); }}

5、以上的内容仅供非编程人员参考,这里贴出基本语法,有更多想法的同学可以琢磨琢磨哦。格式:cm.[Commands]dispose对话结束示例:cm.dispose();send绿覆冗猩Next显示一个带“继续”按钮的对话窗口示例:cm.sendNext("[text]");sendPrev显示一个带“返回”按钮的对话窗口示例:cm.sendPrev("[text]");sendNextPrev显示一个带“继续”和“返回”按钮的对话窗口示例:cm.sendNextPrev("[text]");sendOk显示一个带“好”按钮的对话窗口示例:cm.sendOk("[text]");sendYesNo显示一个带“是”和“否”按钮的对话窗口,选“否”结束对话,否则做相反处理。示例:cm.sendYesNo("[text]");sendAcceptDecline显示一个带“接受”和“拒绝”按钮的对话窗口,选“拒绝”结束对话,否则做相反处理。示例:cm.sendAcceptDecline("[text]");sendSimple显示一个无按钮的对话窗口示例:cm.sendAcceptSimple("[text]");sendStyle显示一个选择性的对话窗口示例:cm.sendStyle("[Text]", [variable]); //需要声明一个变量warp传送玩家到指定地图 示例:cm.warp([mapid], [portal]); //[portal]位置值,默认为0openShop打开一个商店窗口示例:cm.openShop([shopid]);haveItem检查玩家是否具有指定物品示例:cm.haveItem([itemid]); //物品栏和装备栏gainItem给予或取走玩家指定物品示例:cm.gainItem([itemid],[ammount]); //-[ammount]表示取走数量changeJob改变玩家职业示例:cm.changeJob([jobid]);getJob取得玩家职业值示例:cm.getJob();startQuest开始任务示例:cm.startQuest([questid]);completeQuest完成任务示例:cm.completeQuest([questid]);forfeitQuest解除任务示例:cm.forfeitQuest([questid]);getMeso取得玩家金币数量值示例:cm.getMeso();gainMeso给予或取走玩家指定数量金币示例:cm.gainMeso([ammount]); //-[ammount]表示取走数量gainExp给予或取走玩家指定数量经验值示例:cm.gainExp([ammount]); //-[ammount]表示取走数量getLevel取得玩家等级值示例:cm.getLevel();teachSkill给予玩家指定技能示例:cm.teachSkill([skillid],[skilllevel],[maxskilllevel]);//[skillid]技能代码 [skilllevel]技能等级 [maxskilllevel]等级上限isGM判断玩家是否为GM示例:cm.isGM();get[Stat]取得玩家状态值示例:cm.get[Stat](); //[Stat]值的顺序为:HP, MP, STR, DEX, INT, LUK#k 黑色字#e 粗体字#b 蓝色字#d 紫色字#g 绿色字#r 红色字#n 普通字(移除粗体)#c[itemid]# 显示为玩家物品栏里指定物品的数量#f[imagelocation]# 引用.wz文件里的图片#h # 显示为玩家名字#l - Selection close.选择关闭?(不知道什么意思)#L[number]# - Selection open.选择打开?#m[mapid]# 显示为地图名称#o[mobid]# 显示为怪物名称#p[npcid]# 显示为NPC名称#q[skillid]# 显示为技能名称#s[skillid]# 显示为技能图标#t[itemid]# 显示为物品名称#z[itemid]# 显示为物品名称#v[itemid]# 显示为物品图标#i[itemid]# 显示为物品图片#x 显示为0%(不知道什么意思)#B[%]# 显示为一个进度条\r\n 在下一行显示

© 手抄报圈