mud_sanc 板


LINE

不好意思...这篇小弟看了很久 因资质驽钝....仍然写不出来对某个视窗下指令的方法 文章也是很久以前的文,看能否有缘遇大神指导... 是这样的,小弟开了三个角色 想在A角色的视窗直接对B or C角色下达命令,recall之类... 我该怎麽做到,从zmud跳mushclient 真的是比登山难... 求大神能现身指教.... ※ 引述《hmml (hmml)》之铭言: : 这是一个对我而言蛮有用的功能,所以很早就在找怎麽 : 写这个功能了,它相当於zMUD的"ID:指令"或#all,#all是向 : 全部视窗发布命令。'ID:指令'其实是切换视窗,送命令只是 : 顺便而已。 : 在MushClient里,它需要这个函数: : GetWorld (视窗名称):用来取得指定视窗的位址。 : 当然,也可以用这个: : GetWorldById(视窗ID):用法同上,只是你要取得 : 视窗的ID值有点麻烦,当视窗名称撞名的时候,才 : 可能采用它,谁那麽无聊,不同角色的视窗都用同 : 一个名字呢? : 写法如下: : 1. 决定别名的写法,记得点选正规表示法项目: : ^to(\S+) (.*)$ : 以to为起头,蓝色部份为%1,代表角色的ID(假设 : 视窗名设得跟游戏中的角色ID相同),黄色部份为%2 : ,用来输入指令。蓝色部份和黄色部份中间空一格。 : 注意大小写,不管是正规表示法还是Lua,都很明确细 : 份大小写,A 不等同 a,And and aNd 虽然只差大小 : 写,但三者都不一样。 : 2. 将GetWorld的内容指定到一个变数里: : toName = GetWorld(%1) : 3. 再用toName去接发送的指令行: : toName:Send('%2') : 基本上,这样就完成了,如果你正在玩弄kimokimo : 走不开,想对aiggkimd下个recall的指令,就这麽输入 : : : toaiggkimd recall : 这样,aiggkimd就会recall了。 : 4. Send()是用来对MUD送命令的,如果只是想显示个讯 : 息,就要用: : toName:Note('%2') : 5. 另外还有: : toName:Execute('%2') : 如果你送的命令是MushClient的alias,只有这个才 : 能展开它。 : 6. 瑞士小刀: : toName:DoAfterSpecial(0.1,'%2',12) : 其实它相当於zMUD的#alarm +Sec {commands}, : 不过它是我目前找到唯一能把指令送给脚本分析器 : 再分析内容的函数,所以它能吃内含函数的指令, : 改动第三个参数的值,可以决定把内容送去哪里: : 0:游戏 : 1:命令 : 2:输出窗口 : 3:状态栏 : 4:记事本(新建) : 5:记事本(追加) : 6:记录文件 : 7:记事本(替换) : 8:命令队列 : 9:变数 : 10:执行(等同於在命令窗口输入命令) : 11:快速行走(把发送内容解析为快速行走路径) : 12:脚本(发送给脚本解析器来执行脚本命令) : 13:立即发送(在命令队列执行之前就发送给游戏) : 用途广泛,0相当於Send,2相当於Note,10相当於Execute, : 12可以执行程式码,先记这几个就行了。第一个参数可以设 : 定几秒後执行,从0.1秒到23时59分59秒之间都可以。所以, : 用它必然要接受至少0.1秒的延时输出,应该还能接受吧! : 当使用它以脚本分析来对其它视窗输出指令时,如: : toName:DoAfterSpecial(0.1,'Send('save')',12) : 就格式而言没什麽问题,不过,它会出错,要改成: : toName:DoAfterSpecial(0.1,'Send([[save]])',12) : 才会正常,其它函数也一样!这个就是重点,因为我常常忘 : 记,所以写这篇的啦!找出这个解法花一个小时,然後下次 : 再用,又花一个小时想发生什麽事...Orz : 7. GetWorldById() 赢过 GetWorld() 的地方,就是它不用将 : 内容存到变数就能直接引用,虽然我没用过,不过, : http://mc.chinaido.com/help.php?function=GetWorldById : 它范例是直接引用。 : 8. #all 的功能就是这个指令再加强,使用for回圈去完成它: : for key, value in pairs (GetWorldList()) do : toName = GetWorld (value) : toName: DoAfterSpecial(0.1,'%2',12) : end --for : 这里,多了一个新同伴:GetWorldList(),这函数应该是一 : 个表,内容是全部正打开的视窗的名字和位址。key就是名字 : ,value就是位址。透过for回圈把全部内容呼叫一次。 : 红色部份是固定格式不能改动;黄色部份是你要它做什麽事; : 蓝色部份是资料表的名称,可能是内建的函数,也可能是你提 : 供的able。绿色部份,你可以自行决定它的名字,判断它功能 : 的依据是位置不是名字,不要用什麽: : for、if、break、end...这样的名字就好了。 : 重点是不要让自己用起来很麻烦。 : ※ 这里只是写机的碎碎念,算是除错的小小提示: : a. Lua 只要会用: : if...then...else...end : for...do...end : tablename = {a,b,c,d,e...} : 就能写很多东西了。剩下的时间就是抓虫,这个比写的时间还多。 : 第6点讲的那个只是其中之一。模式大概就是: : tablename = {a,b,c,d,e....}     --资料表 : if '%1' == 'string' then     --if判断 : for key,value in pairs(tablename) do --进入回圈去翻资料 : Note(key,' = ',value) --要干什麽事自已写,这只是例子 : end --封闭for回圈 : else --否则要怎样,这不一定要有 : Note('string') --要干什麽事自已写,这只是例子 : end --封闭if判断 : 或着: : tablename = {a,b,c,d,e....} --资料表 : for key,value in pairs(tablename) do --进入回圈去翻资料 : if value == 'string' then --if判断,翻到时要干什麽 : Note ('Answer:',key) --要干什麽事自已写,这只是例子 : break --跳出这个for回圈,如果要找到底就免了 : end --封闭if判断 : end --封闭for回圈 : 这两种套路,可以写好大部份的触发。 : b. 还有一例: : if a < b then : Note('it is true!') : else : Note('it is false!') : end : 这个写在MushClient内建的写机功能是正常的;不过,写在Plugin : 里会出错,因为这个:<script>,它把a < b 当作你要宣告一个标 : 签...这个太----难抓了吧!不是很玩弄人吗? : if a == 1 then : Note('it is one!') : else if a == 2 then : Note('it is two!') : else : Note('it is three up!') : end : end : 这个if的扩充写法,网路上有教学文说:无论else if 有几个,後面 : 只要一个end,听起来太美妙了!嗯~请相信自己实作的结果,他一 : 定跟我用不同版的Lua... : c. Table是Lua的编表格式,格式可以参考: : #6911 Hamano □ [心得] MUSHclient - Plugins:自动补 Heart : 这个资料的顺序依行位决定。所以要叫出想要的资料,可以靠 : 自己的记忆,不然就用for回圈去比对。 : #7789 hmml R: [心得] MUSHclient - Plugins:自动重设en技能 : 这个就是编辑者自行编排索引,也就是 key值=value值 的对应模 : 式,有人说这叫字典索引,可以用key直接叫出value,相对於前 : 一种要好记很多,如果用for回圈去翻,用key值能取value值, : value值也能回抓key值,相当方便。要注意的,是用变数去代入 : key值: : 变数有两种,一种是已经给名的,如:a、b、kimokimo... : 另一种是还分配到正式名字的,如:%1、%2、%3.... : 当你将第一种的变数用在呼叫表中的对应内容时,这麽写: : TableName[a]、TableName[b]、TableName[kimokimo]、... : 而第二种状态的变数,这样写: : TableName['%1']、TableName['%2']、TableName['%3']、... : 这样才能得到你想要的。 : 因为太整齐了,所以比zMUD好维护到不能同意更多。你愿意的话, : 还能写得像亚马逊河一样,树枝状,一层叠一层,包山包海(据说 : Lua本身就是那样)。一开始发现Lua没case可以用,想说用if是 : 要叠end到101那麽高,结果原来因为有Table,case就没那麽重要了 : 。 : 当写成Plugin时,你可以选择把Table写在: : <send> : 这里 : </send> : 也可以外放到: : <script> : <![CDATA[ : 这里 : ]]> : </script> : 基本上都能好好干活;不过,Table里有引用变数的话,就不同了, : 第一种可以成功引用,顺利完成工作;第二种,%1只是%1,a就是a : ,变数什麽的完全不知道,啊~~~苦恼啊! : d. 变数的类型有八种,由Lua自己判断是哪一种,不是使用者去决定的 : ,这里有一个比较麻烦的问题,就是数值>>字串,非常简单;而 : 字串想变成数值,有点难。这也是除错的重点。 : str = loadstring("return " .. str)() : 这里有一个去找来的片段,它的功能相当於zMUD的#eval。我还没 : 掌握这个函数(loadstring()())的格式,不过是直接拿来用而已... : e. 虽然抓BUG抓得很苦恼,不过学习是累积经验的过程,确实,一周比 : 一周更顺利了。 ----- Sent from JPTT on my iPhone --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 49.215.210.173
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/mud_sanc/M.1522254305.A.A07.html
1F:→ laechan : 你用zmud也可以做到,用tell去模拟就好了 03/29 07:49
2F:→ LZN : www.mushclient.com/plugins/multiple_send.xml 03/30 10:15







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP