mushclient的automap之lua脚本实现

本文介绍了如何使用Lua脚本在mushclient中自定义路径生成器,通过解析命令行操作,实现游戏内的路径导航。通过等待时间、触发器和普通命令的执行,简化游戏内路径执行的复杂性。文章提供了简单的实现代码,并展示了如何保存和调用路径,以及支持反向步进功能,允许进一步扩展以增强命令行功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这几天操作了一下侠客行MUD游戏,通过mushclient这个软件。不过,自带的路径生成器,操作起来感觉不爽。
就自己重做了一个实现。全部命令行操作,比较方便。代码不多。

  1. --mushclient automap 工具 by suxiaojack 2008.9
  2. --完全在命令行实现。感觉比自带的操作起来方便。
  3. --说明,应该设置mushclient的脚本识别标识为'.'
  4. --这样命令行调用时使用.wk="内容"就可以调用了!
  5. --启动   .wait.make(automap)
  6. --开始执行一个新path.
  7. --              .wk="s"
  8. --进行步进 .wk="n/s"   表示我现在向北走返回为南
  9. --              .wk="nd/su" 等等
  10. --              可以写一半另一半自动识别
  11. --在处理开门关门顺序上需要连续书写两个
  12. --比如  .wk="open door;n/open door;s"
  13. --执行错误的一步怎么办?
  14. --         .wk="d"       表示删除上一步的内容,命令完全是无效的。
  15. --         .wk="b"       表示删除上一步的内容但是我的位置会自动回退
  16. --在路径错误,回退。或者是我要部分修改时回退等等。
  17. --其他:
  18. --         .wk="gb"   返回
  19. --         .wk="gg"    再走   这两个用来验证一下。
  20. --         .wk="save   xx"    保存正向alias xx
  21. --         .wk="save   xx ff"  保存正向 xx 反向ff 的alias
  22. --         .wk="show"            查看当前路径串
  23. --         .wk="nouse"   终止使用
  24. wk=""
  25. mappath=""
  26. mapper={
  27. ["n"]="s",
  28. ["s"]="n",
  29. ["w"]="e",
  30. ["e"]="w",
  31. ["u"]="d",
  32. ["d"]="u",
  33. ["ne"]="sw",
  34. ["nw"]="se",
  35. ["nu"]="sd",
  36. ["nd"]="su",
  37. ["se"]="nw",
  38. ["sw"]="ne",
  39. ["su"]="nd",
  40. ["sd"]="nu",
  41. ["wu"]="ed",
  42. ["wd"]="eu",
  43. ["eu"]="wd",
  44. ["ed"]="wu"
  45. }
  46. require "wait"
  47. function find(l,p)
  48.     return string.find(l,p) 
  49. end
  50. function automap()
  51.     Note("automap启动!")
  52.     Note("         by suxiaojack")
  53.     local pathlen,t
  54.     while 1 do
  55.     if wk ~= "" then
  56.         if wk=="s" then
  57.         --清空路径,开始新纪录
  58.             mappath=""
  59.             Send("place")   --!!!查看地图的命令,改为帮自己辨向的!!!
  60.         else
  61.             t=utils.split(mappath,".")
  62.             if t~=nil then
  63.                 pathlen=table.getn(t)
  64.                 t[1]=nil --开头一个总是空的
  65.             else
  66.                 pathlen=0
  67.             end
  68.             --
  69.             if wk=="gb" or wk=="gg" then
  70.                 local z=""
  71.                 local f=""
  72.                 if pathlen>1 then
  73.                     for i =2,pathlen do
  74.                         v=t[i]
  75.                         if v~=nil then
  76.                             re = rex.new ("(.*)/(.*)")
  77.                             s, e, tt = re:match (v)
  78.                             z=z..tt[1]..";"
  79.                             f=tt[2]..";"..f
  80.                         end
  81.                     end
  82.                 end
  83.                 if wk=="gg" then --再走
  84.                     Execute(z)
  85.                 end
  86.                 if wk=="gb" then --回去
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值