suineg 发表于 2017-12-8 15:27:30

[Mush]如何用Timer做机器实例:学习-领悟-修练-侠客岛机器(修复崩溃问题)

本帖最后由 suineg 于 2018-7-3 10:45 AM 编辑



本次上岛碰到了本渣不停的刷葫芦,导致我的机器拿不了水无法继续,
就把这一块改了,现在不再需要自己写触发就能流畅的挂侠客岛了.
同时补充了学技能的触发SL,
更新了技能的识别触发.
修复了崩溃问题,我有遗留的代码没有删掉


timer型机器,
就是主体只用一个timer不停的执行,
并且在timer里面判断状态是否进入下一步,
尽量少用或着不用trigger,
这样最大的好处就是不会被触发内容出错而干扰

本机器就是这样一个机器,
主题是分享和互相学习代码,
因为是应群内网友提出,
而将自己的各代码模块整合出来,
实际上分各文件会更好理解易懂;

使用需要两点:
1.加载我修改过的状态机器;
2.改文件头部参数并加载;
然后就可以在游戏中使用了
老BT们都有自己的机器了,希望新来的用户如果用本脚本,
能好好通过我的代码中学习怎么编写机器和写脚本代码,
同时也要学会在出错的地方(不改参数就会出错)调试脚本代码,
只有真正的会写机器了,才能好好的享受玩这MUD的乐趣
=========================================
==用法说明:
==学技能:在老师点输入SL XXX级    比如:SL 350
==领悟:在领悟点输入LW XXX级      比如:LW 400
==侠客岛:在石壁任意位置输入XKD XXX级   比如:XKD 400
==其他参数需要自己修改
==有些屏刷信息,不想看的可以自己加触发屏蔽
==在Variable里面添加一个名字为ID的变量,ID为自己角色ID的变量
                  可实现不同角色加载同一脚本领悟不同的武功
                  因为我大号小号练的时间差较大,在学习上不存在这个问题,所以没写这一块,
                  可以参照领悟那一块的方式去修改
==我的角色数据获取方式也是一个亮点,看各位会不会使用了
    如果各位中已经有自己的,可以改对应模块即可
=========================================-----------------------------------------
--             学技能参数            --
-----------------------------------------      
LearnSkill = {};

LearnSkill.nSkillWanna = { "九阴神功", "玉女心法", "纤云步法", "基本剑法", "基本内功", "基本招架", "玄铁剑法"};
LearnSkill.nTeacherID = "yang";
--从睡到到老师的路径
LearnSkill.wayTeacher = "n;e;e;n;n;n;w;n;n;n;n";
--从老师到睡觉的路径,末尾带sleep
LearnSkill.waySleep = "s;s;s;s;e;s;s;s;w;w;s;sleep";


------------------------------------------
--             领悟与练参数             --
------------------------------------------
LingwuSkills = LingwuSkills or {};
if Common.id == "suineg" then
      --arrLingwus与arrLians为基本与特殊武功,要一一对应,基本可重复
      --只支持单一内功,自己改代码可支持多内功
      --第一个必为内功
      LingwuSkills.arrLingwus = {"基本内功", "基本轻功", "基本剑法", "基本招架", "基本剑法", "基本掌法"};
      LingwuSkills.arrLians = {"玉女心法", "纤云步法", "玄铁剑法", "玄铁剑法", "玉女剑法", "黯然销魂掌"};
      --对应特殊武功需要的jifa与装备,空手注意unwield all
      LingwuSkills.arrLiansCmd = {"", "", "wield sword;jifa sword xuantie-jian", "wield sword;jifa parry xuantie-jian", "wield sword;jifa sword yunu-jianfa", "unwield all"};
      --从睡觉到领悟点路径
      LingwuSkills.strWayLingwu = "e;eat;drink;s";
      --从领悟点到睡觉路径,结束带sleep
      LingwuSkills.strWaySleep = "n;w;sleep";
      --出错时的修正路径,结束带sleep,保证中间任一点中断都能回到睡觉点,不会写可空着
      LingwuSkills.strFixWay = "n;w;sleep";
      --特殊内功开始修练的等级
      LingwuSkills.nStartXL = 380;
      --特殊内功修练方式
      LingwuSkills.strXL = "xiulian yunu-xinfa";
elseif Common.id == "suinegy" then
      LingwuSkills.arrLingwus = {"基本内功", "基本轻功", "基本剑法", "基本招架", "基本剑法", "基本拳法" };
      LingwuSkills.arrLians = {"玉女心法", "纤云步法", "玄铁剑法", "玄铁剑法", "玉女剑法", "美女拳"};
      LingwuSkills.arrLiansCmd = {"", "", "wield sword;jifa sword xuantie-jian", "wield sword;jifa parry xuantie-jian", "wield sword;jifa sword yunu-jianfa", "unwield all"};
      LingwuSkills.strWayLingwu = "e;eat;drink;s";
      LingwuSkills.strWaySleep = "n;w;sleep";
      LingwuSkills.strFixWay = "n;w;sleep";
      LingwuSkills.nStartXL = 380;
      LingwuSkills.strXL = "xiulian yunu-xinfa";
end

-----------------------------------------
--             侠客岛参数            --
-----------------------------------------      
XKD = {};

--从大门刚进去后最右边,也就是最右下角为起点写应对路径
--路径和技能名要一一对应
--自己保持正确性;
XKD.strGo = {
      "w;w;w;w;w;w;n;n;n;n",
      "w;w",
      "n;n;n;n;n;n;w",
      "w;w;w",
      "n;n",
}
XKD.strSkill = {
      "读书写字",
      "医    术",
      "基本硬功",
      "基本掌法",
      "基本拳脚",
}因为采用0.3秒一次的暴力timer,
同时会自动修正lingwu的最大次数,
所以效率非常高,
会经常在等待睡觉

侠客岛会自动拿食物,
所以可以直接上岛即用,
不用担心食物的问题

状态插件:

机器脚本:


睡觉等待触发没有的自己加,因为这个一般人都有,我怕写在脚本里会重复

北大侠客行MUD,中国最好的MUD

sarsmark 发表于 2017-12-8 15:30:14

感谢,收下了

candyqing 发表于 2017-12-8 15:32:07

感谢分享~~下载学习一下~~

musasi 发表于 2017-12-8 15:32:13

膜拜ing
正好缺这个,另外如果规则允许,楼主能否发一个遍历机器人?剔除遍历数据的话应该可以发。

creat 发表于 2017-12-8 15:49:34

简单的固定路线遍历只需要3个变量,大致如下。用法也不难path={"e","e","w","w","w","e"}        ----路径定义
ct=1                                                        ----控制变量
check=true                                                ----状态变量

--第一步
Send(path)
--第二步
ct=ct+1
Send (path)
--第三步
ct=ct+1
Send (path)
--切换状态
check=false
--需要判断状态时
if check
then Send (path)
else ct=1 check=true--返回初始状态
end

candyqing 发表于 2017-12-8 16:26:19

要是有动态遍历就好了,从一个房间出发,遍历指定的深度,像二叉树一样?

creat 发表于 2017-12-8 20:27:54

动态遍历自己想办法。
吃自己消化不了的东西容易肠胃不好ttk_41

xurufeng 发表于 2017-12-8 20:42:22

点赞~~~yct27

candyqing 发表于 2017-12-9 08:31:46

回复 7# creat

办法我倒是也想了,从原点出发,到一个新的节点,就把这个节点的方向存到表里,再检查深度,没达到预定深度就再找新节点,同时记录一条回原点的路径。

不过总感觉好像挺笨的,而且速度也不快。

jiaming 发表于 2017-12-10 00:22:58

谢谢了,真是一级棒!
页: [1] 2
查看完整版本: [Mush]如何用Timer做机器实例:学习-领悟-修练-侠客岛机器(修复崩溃问题)