广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

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

    来源:网络收集  点击:  时间:2024-07-13
    【导读】:
    冒险岛单机版的玩家作为游戏里的GM,能随意调用各种权限与GM工具操作游戏内的数据。如果想让游戏本身的功能性可玩性更强,有能力的玩家可以改写游戏数据,下面我们来简单了解下如何改写添加游戏中NPC的功能:编写NPC脚本。工具/原料more一个编程的思维或者一个修改其他脚本代码的思维冒险岛代码查询器电脑方法/步骤1/5分步阅读

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

    2/5

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

    3/5

    下面我把代码贴出来大家可以试验试验。

    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/5

    再把个多重选项的代码贴出来,能活用上面的代码时改这个应该不难了。

    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/5

    以上的内容仅供非编程人员参考,这里贴出基本语法,有更多想法的同学可以琢磨琢磨哦。

    格式:cm.

    dispose

    对话结束

    示例:cm.dispose();

    sendNext

    显示一个带“继续”按钮的对话窗口

    示例:cm.sendNext();

    sendPrev

    显示一个带“返回”按钮的对话窗口

    示例:cm.sendPrev();

    sendNextPrev

    显示一个带“继续”和“返回”按钮的对话窗口

    示例:cm.sendNextPrev();

    sendOk

    显示一个带“好”按钮的对话窗口

    示例:cm.sendOk();

    sendYesNo

    显示一个带“是”和“否”按钮的对话窗口,选“否”结束对话,否则做相反处理。

    示例:cm.sendYesNo();

    sendAcceptDecline

    显示一个带“接受”和“拒绝”按钮的对话窗口,选“拒绝”结束对话,否则做相反处理。

    示例:cm.sendAcceptDecline();

    sendSimple

    显示一个无按钮的对话窗口

    示例:cm.sendAcceptSimple();

    sendStyle

    显示一个选择性的对话窗口

    示例:cm.sendStyle(, ); //需要声明一个变量

    warp

    传送玩家到指定地图

    示例:cm.warp(, ); //位置值,默认为0

    openShop

    打开一个商店窗口

    示例:cm.openShop();

    haveItem

    检查玩家是否具有指定物品

    示例:cm.haveItem(); //物品栏和装备栏

    gainItem

    给予或取走玩家指定物品

    示例:cm.gainItem(,); //-表示取走数量

    changeJob

    改变玩家职业

    示例:cm.changeJob();

    getJob

    取得玩家职业值

    示例:cm.getJob();

    startQuest

    开始任务

    示例:cm.startQuest();

    completeQuest

    完成任务

    示例:cm.completeQuest();

    forfeitQuest

    解除任务

    示例:cm.forfeitQuest();

    getMeso

    取得玩家金币数量值

    示例:cm.getMeso();

    gainMeso

    给予或取走玩家指定数量金币

    示例:cm.gainMeso(); //-表示取走数量

    gainExp

    给予或取走玩家指定数量经验值

    示例:cm.gainExp(); //-表示取走数量

    getLevel

    取得玩家等级值

    示例:cm.getLevel();

    teachSkill

    给予玩家指定技能

    示例:cm.teachSkill(,,);

    //技能代码 技能等级 等级上限

    isGM

    判断玩家是否为GM

    示例:cm.isGM();

    get

    取得玩家状态值

    示例:cm.get(); //值的顺序为:HP, MP, STR, DEX, INT, LUK

    #k 黑色字

    #e 粗体字

    #b 蓝色字

    #d 紫色字

    #g 绿色字

    #r 红色字

    #n 普通字(移除粗体)

    #c# 显示为玩家物品栏里指定物品的数量

    #f# 引用.wz文件里的图片

    #h # 显示为玩家名字

    #l - Selection close.选择关闭?(不知道什么意思)

    #L# - Selection open.选择打开?

    #m# 显示为地图名称

    #o# 显示为怪物名称

    #p# 显示为NPC名称

    #q# 显示为技能名称

    #s# 显示为技能图标

    #t# 显示为物品名称

    #z# 显示为物品名称

    #v# 显示为物品图标

    #i# 显示为物品图片

    #x 显示为0%(不知道什么意思)

    #B# 显示为一个进度条

    \r\n 在下一行显示

    注意事项

    如果编写的程序有错误点击NPC会弹出。

    代码基于冒险岛单机版v124版本

    冒险岛单机冒险岛冒险岛npc脚本
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_951364.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-07 16:16:00  耗时:0.026
    0.0259s