请教个随机逃跑的问题。哪位有空的大侠帮忙看下
本帖最后由 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 里啊 不会写啊 hzl 求指导hzn
北大侠客行MUD,中国最好的MUD 本帖最后由 creat 于 2018-1-22 09:54 AM 编辑
处理过程看不懂
获取出口大致过程如此:function Find_Exit(l)
l=string.gsub (l,"%W","!") --替换掉非数字和字母
local s,e,n,key,_=0,#l,1 --定义局部变量
local t={} --初始化局部变量t为一个表
while s<e
do _,s,key=string.find (l,"(%w+)!!",s) --以s为起点查找数字或字母并赋值给key
if key then t=key n=n+1 end --如果找到key的情况下把key写进表t
end
return t --返回t
end用法:假设你不知道怎么用l=" 这里明显的方向有 west、east、down、south、north 和 up。"
t=Find_Exit(l)
for i,v in pairs(t) --遍历t并打印它的内容
do print (i,v )end不回到刚才来的方向需要提前记录之前的动作,并且对相应的出口进行标记。大致如此 回复 2# creat
十分感谢 教主hze 今天晚上就研究它了hz6 回复 2# creat
初步完成随机瞎跑触发试了下一眨眼 就知道跑到哪里去了 呵呵 还要完善下
再次感谢
local ck="%1"
ck1=string.gsub (ck,"%W","!")
local s,e,n,key,_=0,#ck1,1
local t={}
while s<e
do _,s,key=string.find (ck1,"(%w+)!!",s)
if key then t=key n=n+1 end
end
tp=t
Send(tp) 本帖最后由 jesyao 于 2018-1-22 03:13 PM 编辑
你要加上如果有堵路的方向,要二次逃跑的代码,不然很容易出事故~ 嗝屁
这个要是一个完整的定位出口处理:
1:定位你的当前房间
2:逃跑后确认不在那个房间
3:如果在,还要逃跑一次
4:逃跑成功,记录逃跑方向,方便自动回去接着肝 Battle.Exits = function(strParam)
if strParam ~= "" then
strParam = Way.ExitFix(strParam);
Battle.strExit = utils.split(strParam, ";");
else
Battle.strExit = "";
end
--Note("逃离:" .. Battle.strExit);
endWay.ExitFix是对出口的修正并用";"分隔,
出口修正可以自己写也可以去找nrm的分享,
至于逃跑,
用我之前写的单例事件方法即可,Battle.EscapeTry = function()
if Battle.bEscape and Battle.strExit ~= "" then
Common.InstanceRun(Battle.EscapeAction, 0.5);
end
end 回复 5# jesyao
多谢提醒
还真忘了有堵门的情况了 回复 6# suineg
谢谢指导
但是对于 我这个脚本小白,基本等于天书hzl,一点都看不懂,也不知道怎么用
我只会用可以触发运行的例子,改成自己能用的。
你的这些例子我都不知道怎么下手hz9 建议各位老大直接弄成一个插件就方便我等小白了 回复 2# creat
继续追问hzn就打算缠着你不放了hzk
如果我 设置一个全局变量 a
当这个变量取值为空的时候 触发一个 动作 应该怎么写
GetVariable("a")
if a=nil then Send ("kick") end ???? 试过了不对hze
页:
[1]
2