北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 11077|回复: 16

请教个随机逃跑的问题。哪位有空的大侠帮忙看下

[复制链接]
发表于 2018-1-22 12:43:27 | 显示全部楼层 |阅读模式
本帖最后由 waiwai 于 2018-1-22 06:45 AM 编辑

在MUSH里 我想做个 抓出口然后随机逃跑的 触发 逃跑的时候不回到 刚才来过的房间   请问怎么能实现

找到个zmud 的例子 但是看不懂 不知道怎么转换到 mush 里   哪位大侠能麻烦帮忙下 非常感谢

例子如下

#va inter 0

#trigger {这里明显的出口是 (*)。}{#tz;chukou=%1;chukou=%replace(@chukou,"、","
");
chukou=%replace(@chukou," 和",'');num=%numwords(@chukou);
goto=%random(1,@num);fx=%word(@chukou,@goto);#wa @inter;@fx}

#trigger {这里唯一的出口是 (*)。}{chukou=%1;num=1;#wa @inter;%1}
例子能看懂了  先获取出口 然后去掉出口里的 、 和    然后放到一个表里   在随机抽取表里的一个方向 执行  


哎 怎么转换到MUSH 里啊 不会写啊       求指导

北大侠客行MUD,中国最好的MUD
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2018-1-22 17:55:33 | 显示全部楼层
本帖最后由 creat 于 2018-1-22 09:54 AM 编辑


处理过程看不懂
获取出口大致过程如此:
  1. function Find_Exit(l)
  2. l=string.gsub (l,"%W","!")        --替换掉非数字和字母
  3. local s,e,n,key,_=0,#l,1        --定义局部变量
  4. local t={}                                        --初始化局部变量t为一个表
  5. while s
  6. do _,s,key=string.find (l,"(%w+)!!",s)        --以s为起点查找数字或字母并赋值给key
  7. if key then t[n]=key n=n+1 end                        --如果找到key的情况下把key写进表t
  8. end       
  9. return t                                        --返回t
  10. end
复制代码
用法:假设你不知道怎么用
  1. l="    这里明显的方向有 west、east、down、south、north 和 up。"
  2. t=Find_Exit(l)
  3. for i,v in pairs(t)                --遍历t并打印它的内容
  4. do print (i,v )end
复制代码
不回到刚才来的方向需要提前记录之前的动作,并且对相应的出口进行标记。大致如此
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2018-1-22 18:08:28 | 显示全部楼层
回复 2# creat

十分感谢 教主 今天晚上就研究它了
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2018-1-22 20:29:14 | 显示全部楼层
回复 2# creat

初步完成  随机瞎跑触发  试了下  一眨眼 就知道跑到哪里去了 呵呵   还要完善下

再次感谢

local ck="%1"
ck1=string.gsub (ck,"%W","!")         
local s,e,n,key,_=0,#ck1,1        
local t={}                                 
while s do _,s,key=string.find (ck1,"(%w+)!!",s)
if key then t[n]=key n=n+1 end     
end   
tp=t[math.random(#t)]

Send(tp)
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2018-1-22 23:10:22 | 显示全部楼层
本帖最后由 jesyao 于 2018-1-22 03:13 PM 编辑

你要加上如果有堵路的方向,要二次逃跑的代码,不然很容易出事故~ 嗝屁
这个要是一个完整的定位出口处理:
1:定位你的当前房间
2:逃跑后确认不在那个房间
3:如果在,还要逃跑一次
4:逃跑成功,记录逃跑方向,方便自动回去接着肝
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2018-1-22 23:29:08 | 显示全部楼层
  1. Battle.Exits = function(strParam)
  2.         if strParam ~= "" then
  3.                 strParam = Way.ExitFix(strParam);
  4.                 Battle.strExit = utils.split(strParam, ";")[1];
  5.         else
  6.                 Battle.strExit = "";
  7.         end
  8.         --Note("逃离:" .. Battle.strExit);
  9. end
复制代码
Way.ExitFix是对出口的修正并用";"分隔,
出口修正可以自己写也可以去找nrm的分享,

至于逃跑,
用我之前写的单例事件方法即可,
  1. Battle.EscapeTry = function()
  2.         if Battle.bEscape and Battle.strExit ~= "" then
  3.                 Common.InstanceRun(Battle.EscapeAction, 0.5);
  4.         end
  5. end
复制代码
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2018-1-23 11:03:01 | 显示全部楼层
回复 5# jesyao
多谢提醒

还真忘了有堵门的情况了
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2018-1-23 11:21:59 | 显示全部楼层
回复 6# suineg

谢谢  指导

但是对于 我这个脚本小白,基本等于天书,一点都看不懂,也不知道怎么用

我只会用可以触发运行的例子,改成自己能用的。

你的这些例子我都不知道怎么下手
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2018-1-23 12:33:02 | 显示全部楼层
建议各位老大直接弄成一个插件就方便我等小白了
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2018-1-23 13:11:17 | 显示全部楼层
回复 2# creat

继续追问  就打算缠着你不放了

如果我 设置一个全局变量 a   

当这个变量取值为空的时候   触发一个 动作 应该怎么写

GetVariable("a")
if a=nil then Send ("kick") end    ???? 试过了不对
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-28 07:15 AM , Processed in 0.011545 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表