robotone 发表于 2014-7-17 15:43:44

Mush常用插件。学习用机器人。

本帖最后由 robotone 于 2014-7-20 02:36 AM 编辑

Mush,我要学好Mush。顺便读读古书。

聊天插件,fullme插件,就够了。新人任务不需要路径插件。
上边两个插件都是uniboee制作改进的,应该也是个高手,将来有问题请教一下。

文件-插件-添加,就可以了,以后启动游戏会自动加载。

看看别人写的机器人,也能学很多东西。
论坛有个lzkd写的sure钓鱼机器人增强版,应该不错。
一点一点弄明白了,练习一下怎么用,自己写机器人的时候就会用了。
学Mush要看很多的资料,还有就是研究很多别人的机器人,日积月累就学会了。

robotone 发表于 2014-7-17 18:49:19

正则

本帖最后由 robotone 于 2014-8-1 02:35 AM 编辑

正则一点都不难,不过复杂点的一次成功率很低,总得修改。

Mushclient爱好者网站的:正则详细说明。

正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
正则好像是计算机软件方面常用的东西,倒是非常适合写触发。

先从简了,好入门。然后再系统地学习,慢慢提高。
\d单个数字。
\w单个字母。
\s单个空格。
.    单个数字,字母,空格。
大写是相反的,\D非数字,\W非字母,\S非空格。
————————————————————————————
要匹配多个,后边加上说明就行。
? 0个或1个。
+1个或多个。
*0个或多个。
————————————————————————————
\d?=0个或1个数字。
\w+=1个或多个字母。
\s*=0个或多个空格。
.*=0个或多个数字,字母,空格。
————————————————————————————
()   引用。(\d+)写在别名触发里,就可以在下面引用了。
[]   范围。匹配1,2,3。匹配1,3。匹配1,3,5。“|”是选择的意思。
{}次数。5{3}匹配555。\d{5}匹配5个数。\s{2,5}匹配2-5个空格。
   ?={0,1}
   +={1}
   *={0,}
   后边不写范围,就是无穷大。
————————————————————————————
^   行首。
$   行尾。
\    还原。Zmud里好像是~。
   上边那么多字母符号有本来的意思,但是会被正则解读成另外的意思。加上\就还是原来的意思。
   \\=\。\*=*。\(\)=()。
====================================
上边的看看记记,然后就要在游戏里试试。
子曰:学而时习之,不亦乐乎。习:学习,练习,实习。

上边的是学习,该练习了。先建立一个test触发用。
在游戏里say 123。然后选择游戏里的“你说道:「123」”会自动复制在剪贴板里,如果没有,那是你没有好好学上一页的帖子。
点触发器按钮,点添加,最上边的“匹配”后边粘贴。发送框里写“good”。点选右边“正则表达式”。
发送选项选:execute(命令解析器)。序号改成0,组里写test。确定。

在游戏里输入say 123试试触发器。如果游戏里出现“你双手拼命地鼓掌,好!干得好!”就说明触发成功。

触发里的123可以改成\d\d\d,或者\d+,或者\d*。都行,但是最好用\d+。
游戏里say 1a三,触发里写什么对应中文呢?中文不是数字、字母、空格,所有用\D\D、\W\W、\S\S都行。
用一个是不行的,中文一个字2字节。游戏里匹配中文用\S+比较好,能和空格区分开。

然后say 1(2)3   ad   一{二三四}五六七
把三个括号里的内容用正则表达。空格不用数,用\s*。
触发里应该是:^你说道:「1\(\d\)3\s*a\[\w+\]d\s*一\{\S+\}五六七」$

触发写好了,不能用,是经常遇到的。
先对照几次,一个一个字对照,就可能发现哪里出问题了。还是不行,可以用排除法解决。
先写一部分:^你说道:「1\(\d\)3\s*
能触发的话,再写下一部分:^你说道:「1\(\d\)3\s*a\[\w+\]d\s*
实在找不出问题,一个一个往前删除,直到能触发。
记得点选正则表达式。

要引用触发里的内容,用()括起来就行了。
^你说道:「1\((\d)\)3\s*a\[(\w+)\]d\s*一\{(\S+)\}五六七」$
把发送改成say %1 %2 %3。会出现:你说道:「2 bc 二三四」

引用大于9,要加<>,%<10>。

为了让大家好理解正则,我把正则的解释从简了,就不够准确了。初期不太影响什么。
把HP、sc、sk命令显示的内容一行一行写成触发,把需要的数字提取出来,正则差不多就学会了。
=========================================================================
论坛正则相关的帖子。

robotone 发表于 2014-7-17 18:50:08

经验教训

本帖最后由 robotone 于 2014-8-8 07:03 AM 编辑

很早就学习过一次Mush,看了很多帖子,试着用,最后放弃了。
是因为Mush发送选项太复杂,还有就是函数太多,刚开始用Mush会为这些烦恼,等弄明白习惯了就入门了。

半个月就可以学会Mush,如果还玩大号,可能要一两个月,或者放弃掉了,因为一个月内都写不出来给大号用的机器人。
玩游戏还是学Mush?得做出个选择。为什么很多人知难而退?因为学Mush枯燥乏味,玩游戏多快乐。
快乐?不快乐?明白生亦何欢,死亦何哀的时候,你就会走上西天取经的道路。
不要傻傻地在游戏里追逐了,经验?潜能?宝石?武功?多年以后你回忆起来玩Mud的经历,是想起来这些吗?一定不是。
你会想起来诸葛不亮。十五年前我就玩过Mud,现在想起来的是那些回答我各种问题的人,让我follow给我带路的人,让我闻闻
花香晕过去,背我进少林寺的人,给我全套武器防具的人,给我剑上抹毒的人,死了给我救活的人,帮我杀掉草寇的人。虽然我
记不得他们的名字了,将来我也可能忘记诸葛不亮。要是诸葛不亮学了Mush,在这里写经验教训的就是他了。我又回来玩Mud,
希望多年以后想起来,我学了点东西,还教了一些人东西。背人帮助过,也帮助过别人。
我都不一定能学好Mush,你要有勇气不玩大号,一定能学好Mush,在这里呆着的都不是一般人。
Mush入门难,精通更难,需要读好多资料,研究好多机器人。入门的标准就是一两天能写好一个门派的新手任务机器人,其实
不太难。
我每天读点诗书给大家,比Mush简单多了。


1.当铺可以中文买东西,buy 说文解字。list book可以列出所有书籍,还能list武器防具药品。
   新手没事做就yun jing;du book for 10。或者吐纳打坐。

2.少林新手不用学读书写字和禅宗心法,读说文解字和佛经就可以。

3.关于send(),这是个脚本函数,发送选项要选择发送给脚本。send函数作用是发送命令给服务器。
   send ("north")可以执行,send ("2n")不行,send ("#2n")也不行。
   就因为很多这样的问题,当年我放弃了学习Mush。Mush要是把发送选项取消了,自动判定发送到哪里,就简单多了。
   send是发送到服务器,服务器不认识2n,#2n,Mush的命令解析器才认识。
   游戏里重复命令是do,所以要send ("do 2 n")。
   太复杂了,我打算不用send了,只用execute,就像发送选项只选发送到命令解析器和脚本,不发送到游戏和快速行走一样。

4.execute(),解析发送游戏命令、快速行走、脚本。
   做个test触发,say一下,你自言自语不知道在说些什么。发送里就可以测试函数的用法了。
   写上execute ("#2n"),确定。输入say回车,就可以触发了。
   还有DoAfter,也可以不用,只用DoAfterspecial。
   也许以后需要学会所有的方法,那将来再说吧,一切从简好入门,要不又要放弃了。

5.变量也有区别,一种是LUA脚本中定义的变量,在LUA脚本中当然可以直接使用了;
   另一种是MUSH定义的游戏中的变量,这种变量在LUA中使用时,就需要用 SetVariable() 设置,用 GetVariable() 取值。——ddid。
   Mush里的变量只有一种类型,字符型。
SetVariable ("test", "true")
print (type(GetVariable ("test")))
"true"不加引号会报错, 把"true"换成123可以不加引号,但是类型还是字符型。

6.tonumber 太长了,可以直接用A=A*1,就能变成数字了。——By maper。

7.触发语句太长的把没用的信息用.*替换掉,要不触发写多了不好识别。

8.游戏-->设置-->脚本-->脚本标志符-加上/
   这样就可以在Mush命令行执行脚本函数。——By lzkd。

9.经常路过的需要敲门,开门的地方,做成触发器,自动敲门,开门。

10.set brief 2,会隐藏房间的具体描述,有出口和npc信息。这时候做自动敲门开门的触发,需要用到多行触发。
    游戏里选中多行文本,点右键,选-制作多行触发器。就自动添加到触发器了,序号100,组Multi Line。所以不要用序号100。
    然后试试能不能触发,看看发送选项,改改组和序号。不能触发可能是因为匹配里有符号需要用\还原。
    要任务的时候用多行触发,自己动作的描述和别人一样的地方都要用多行触发器。

11.游戏里有个exp命令,能显示自己经验能支持的武功等级,连线时间和本次连线经验的变动。status_me可以显示一些自己的状态。

12 .checkbusy可以知道自己的busy状态。

13.匹配:^(\S{0,10})\s+- $,发送:SetVariable("roomname","%1")。获取当前房间名称。

14.游戏的命令也可以做成别名,比如dazuo,做成dazuo 100。Zmud和Mush都可以,命令行输入的命令都要经过客户端解析才
    发送到服务器。输入dazuo,客户端把dazuo解读成dazuo 1oo,发送到服务器。
    别名很好用,做得复杂点,可以定制很多实用的命令来用。别名也可以用中文。



===========================================================================
我在论坛找了很多关于Mush的帖子,里面有很多高手的回答,整理汇总起来,可以学到很多东西。

robotone 发表于 2014-7-18 15:49:45

问题汇总(一个小问题,代表着无穷无尽的其他问题。)

本帖最后由 robotone 于 2014-8-3 07:51 AM 编辑

1.Mush怎么在输出窗口显示一个变量的值?
   Print,Note。——By 本草。
   点Mush的变量按钮,添加一个abc变量,值是100。
   测试触发的发送里写:(测试触发怎么做,帖子里有,记不清了,自己找找看。)
test = GetVariable("abc")
print(test)
Note(test*2)
   发送到Script(脚本),点选正则表达式,确定。在游戏里say一下。
会有下边的输出:
say
你自言自语不知道在说些什么。
100
200

Mush客户端的变量要在脚本里用,要用GetVariable函数。脚本里的变量也不会直接存储在Mush客户端的变量列表里,要用SetVariable函数。
test = GetVariable("abc")
print(test)
Note(test*2)
test2=test*2
print(test2)
SetVariable("abc2",test2)
输出:
say
你自言自语不知道在说些什么。
100
200
200
点Mush的变量按钮,看看是不是又多了一个变量abc2,值是200。
游戏配置-命令,显示命令那里选个彩色的,输入的命令在游戏里容易分辨。
SetVariable("abc2",test2)后边的test2不能加"",test2被认为是变量,把值赋给abc2。
''test2''会被认为是个字符串,abc2的值就成test2了,不是200。

2.编辑触发器的窗口里,“名称”和“脚本”选项有什么用?怎么用?
   可以给每个触发器一个名称,方便在脚本中使用。注意名称必须是唯一的,不能有重复。
   如果使用了脚本文件(在“脚本”配置对话框中设置),你可以在这里填写这个文件中的一个函数名称,
   触发器被匹配时会自动调用这个函数。这个必须函数必须包含以下 3 个参数:name,line,wildcards。

3.Mush客户端的变量,怎么用?
   Mush的变量列表有个变量gongfu_lianxi,值是dodge。
   测试触发里发送:
gongfu_lianxi=GetVariable ("gongfu_lianxi")--把Mush的变量转换成Lua脚本的变量。
Note (gongfu_lianxi)
Note ("要练习的功夫是"..gongfu_lianxi)--两个点是连接操作符,把两个字符串连接起来。
Send ("lian "..gongfu_lianxi.." 1")--三个字符串的连接。
——————————————————————————————
say
你自言自语不知道在说些什么。
dodge
要练习的功夫是dodge
lian dodge 1
你的体力太差了,不能练少林身法。
——————————————————————————————
..是Lua的字符连接操作符,可以把两个字符串连接起来。
send ("lian "..gongfu_lianxi.." 1"),lian后边有空格,1前边有空格。
--是Lua的注释符号,--后边的内容不会被执行。
程序能看懂,大概就会用了。还是要一行一行写,写几遍就记住了,细节问题很多。
=====================================================
关于变量,更简单的方法,Mush里也可以像Zmud一样,直接用@引用变量。要选中“展开变量”选项。
发送:
Note (abc)
Note ("abc")
abc=@abc
Note (@abc)
Note ("变量abc="..@abc)
Note ("变量abc=@abc")
输出:
say
你自言自语不知道在说些什么。
100
abc
100
变量abc=100
变量abc=100
上边的例子也可以直接用:lian @gongfu_lianxi 1
@好像不能反向引用,要给Mush里的变量赋值,还得用SetVariable ()。
别名也可以设置xuexi,xue @shifu for @gongfu_xuexi 50。

4.定时器关闭的时候,有剩余时间,剩余时间消失前,用EnableTimer()打开的话,会从上次剩余的时间开始。
EnableTimer() 以后马上执行ResetTimer()会重新开始计时。
有剩余时间,手动点“启动”的话,不是从剩余时间开始,会重新开始。
ResetTimer()对关闭的定时器不起作用。

robotone 发表于 2014-7-18 19:54:30

忠厚传家久,诗书继世长。

本帖最后由 robotone 于 2014-7-19 01:57 AM 编辑

说文解字太浪费时间了,就像正则一个字一个字匹配触发一样。
我用说文解字的办法把诗书弄明白了,意译给大家。

柏舟(邶风)

泛彼柏舟,亦泛其流。耿耿不寐,如有隐忧。微我无酒,以敖以游。
我心匪鉴,不可以茹。亦有兄弟,不可以据。薄言往愬,逢彼之怒。
我心匪石,不可转也。我心匪席,不可卷也。威仪棣棣,不可选也。
忧心悄悄,愠于群小。觏闵既多,受侮不少。静言思之,寤辟有摽。
日居月诸,胡迭而微?心之忧矣,如匪浣衣。静言思之,不能奋飞。

泛彼柏舟,亦泛其流。耿耿不寐,如有隐忧。微我无酒,以敖以游。
有人请我当大副开大船,出海远行。
没有出过海,有点担心船会出什么事,翻来覆去睡不着。
船主好言劝我别喝酒,何以解忧。

我心匪鉴,不可以茹。亦有兄弟,不可以据。薄言往愬,逢彼之怒。
事情该怎么办就怎么办,我对谁都要求严格。
我也有好兄弟,可是我不像他们一样合伙排挤别人。
强龙不压地头蛇,他们生气的时候,我忍气吞声少说话。

我心匪石,不可转也。我心匪席,不可卷也。威仪棣棣,不可选也。
我决定的事情就要坚决执行,钢铁般的纪律才能保平安。
船主也对我言听计从,因为我说的话有道理。
我威风凛凛,把水手管得服服帖帖,做得这么好的大副不好找。

忧心悄悄,愠于群小。觏闵既多,受侮不少。静言思之,寤辟有摽。
一切正常,我还是会担心有什么意外,所以对水手们不客气。
真心诚意要开好船,早请示晚汇报,没少在船主那里受气。
静下心来好好想想,大家都团结合作乘风破浪该多好,难哪。

日居月诸,胡迭而微?心之忧矣,如匪浣衣。静言思之,不能奋飞。
时间长了,船上的麻烦事越来越少了,会不会将来就不用我了?
这样担心时间长了,发现自己工作缺乏动力和诚意了。
静下心来好好想想,我要有自己的船乘风破浪该多好。

好大副!
===========================================
古代把失去丈夫叫做“柏舟之痛”,因为出海的水手很多回不来了。把坚守贞洁叫“柏舟之节”。

robotone 发表于 2014-7-19 20:23:49

本帖最后由 robotone 于 2014-8-1 02:50 AM 编辑

有个dzy写的新手指南的帖子,很好。
大家要练小号,看看那个帖子就知道该怎么练了。
新人流程引导帖——By dzy

还有lzkd写的新人的北侠之路,也很好。
新人的北侠之路——By lzkd

====================================
子路无宿诺。今天答应的事,今天兑现。
孔子的弟子中,我最喜欢的是子路,其次是子贡。
子路的理想是:愿车马,衣轻裘,与朋友共,敝之而无憾。
子曰:“衣敝缊袍,与衣狐貉者立而不耻者,其由也与?“不忮不求,何用不臧?”子路终身诵之。
孔子说:穿着穷人的衣服,跟荣华富贵的人在一起也很尊贵,除了子路还能有谁?
诗经里说:自己不贪心,也不有求于别人,用的什么不是好的?子路一辈子念诵这句话。
孔子只有两个弟子当大官,冉有和子路,子路不缺钱,都送人了。
忮:心,支。贪心,妄念,想要这想要那。
臧:好的意思。藏:草,臧。草好才能藏起来。藏族,他们找草好的地方生活。可是那里没什么好草。


每天学一点Mush,每天读一首古诗。说到做到才行。

昨天的诗补上,找个短的。

式微

原文:
式微,式微,胡不归?微君之故,胡为乎中露!
式微,式微,胡不归?微君之躬,胡为乎泥中!

式微,式微,胡不归?微君之故,胡为乎中露!
在外做的事越来越小了,一天不如一天,为什么还不回家乡?
只是因为一直和你同甘共苦,要不为什么风餐露宿。
胡:古,月,古像葫芦做成的瓢,背面看像圆月,侧面看像半月,正面看是空的,像月牙。
    胡的意思是为什么?胡人是北方少数民族,“非我族类,其心必异。”他们的很多言行汉人难以理解,
    比如吃饭的时候子女吃肉,骨头给老人吃。难以理解吧?胡就是难以理解的意思。

式微,式微,胡不归?微君之躬,胡为乎泥中!
在外做的事越来越小了,一天不如一天,为什么还不回家乡?
只是因为你总是身先士卒,要不为什么甘心吃苦受罪。

===============================================
下次要是没时间,给大家读段佛经。
说文解字是次要的,知己知人才更重要。
世事洞明皆学问,人情练达即文章。

robotone 发表于 2014-7-20 11:27:24

本帖最后由 robotone 于 2014-7-20 07:24 AM 编辑

少林的新人任务好几个,不能选择,机器人不好做。别的门派可能也差不多。

我计划将来把几个名门正派的新人任务一半写成机器人,另一半让学Mush的玩家自己写。
诸葛不亮说的,授人以渔不如授人以渔。我会把机器人怎么写成的,具体告诉大家,差不多就学会了。

我的少林新人现在才3000经验,学了内功,内力精力都快打坐满了。
刚开始的时候抄经一次一gold,买东西吃喝。
求人不如求己,诸葛不亮当年也到处捡垃圾卖钱,还到处跟人说。
有时候学Mush没意思了,到处走走看看捡垃圾卖几gold。
现在读书写字和禅宗心法也不读了,经常不吃不喝挂在云台街,看手册,看帖子,在游戏里试试。
在这里写东西也浪费太多时间,还要读诗书,不过这些是有意义的事,值得。
你们小时候是不是也经常写作文:一件有意义的事。
或者写做了好事,最后跟人说:这是我应该做的。
今天我一大早,做了件更有意义的事:给我外公买了两只红嘴鹦鹉。

robotone 发表于 2014-7-20 14:40:20

正则应用

本帖最后由 robotone 于 2014-8-1 02:52 AM 编辑

空格有或者没有,可能会变动,不放心的话都用\s*,需要的数字最好用\d+。到底是+还是*,灵活运用。
太复杂的正则,原文和正则都放在记事本里,一个一个对应着改。

【 气血 】 24    / 32   [ 10%]【 内力 】 400   / 400   (+   1)
匹配:^[> ]*【 气血 】\s*(\d+)\s*/\s*(\d+)\s*\[\s*(\d+)\%\]\s*【 内力 】\s*(\d+)\s*/\s*(\d+)\s*\(\+\s*(\d+)\)$
发送:say %1 %2 %3 %4 %5 %6
点选正则,发送到execute(命令解析器),确定。
游戏里hp
你说道:「24 ... 32 ... 10 ... 400 ... 400 ... 1」

然后把抓到的数字保存成变量。
SetVariable ("qixue","%1")
SetVariable ("qixue_max","%2")
SetVariable ("qixue_percent","%3")
SetVariable ("neili","%4")
SetVariable ("neili_max","%5")
SetVariable ("neili_jiali","%6")
发送到脚本。
Wiki里有机器共享,那里的机器人应该都是比较好的。挑简单的下载安装,看看里边的触发能学到很多东西,脚本看不太懂,Lua得慢慢学。
.MCL是游戏配置文件,里面包含连接、触发、别名、变量等内容。.lua是脚本文件,游戏配置-脚本-外部脚本文件,浏览安装。

触发里有通用的触发,HP状态的,连接等,把其他没用的删除掉,剩下的触发单独保存成.mct文件,然后载入到自己的触发里,就可以用了。
————————————————————————————————————————————————————————————-
要学好Mush,得多看相关资料,论坛里搜索Mush相关的帖子,下载高手老玩家写的机器人,这些是必须的。需要很多时间精力。

fwnp 发表于 2014-7-20 18:03:23

我从今天开始也要学mush了,希望能学会,这个帖子希望能坚持写下去,给大家分享你的心得~共勉

robotone 发表于 2014-7-20 20:51:25

书山无路勤为径,学海无涯苦作舟。

本帖最后由 robotone 于 2014-7-20 01:25 PM 编辑

不要太着急,慢慢总能学会。
其实我更希望大家每天读一点书,读书是正事,比游戏重要。
每天打开游戏前,先到古诗文网读十分钟书,有什么难的呢?
大家其实心里都知道读书比游戏重要,只是没养成习惯而已。

北门(邶风)(前几首也都是邶风,北方小国家流传的诗)

出自北门,忧心殷殷。终窭且贫,莫知我艰。已焉哉!天实为之,谓之何哉!
王事适我,政事一埤益我。我入自外,室人交遍谪我。已焉哉!天实为之,谓之何哉!
王事敦我,政事一埤遗我。我入自外,室人交遍摧我。已焉哉!天实为之,谓之何哉!


出自北门,忧心殷殷。终窭且贫,莫知我艰。已焉哉!天实为之,谓之何哉!
自己是进城的乡下人,有很多烦恼。世代贫穷受苦,城里人不知道我们的艰辛。算了吧,都是上天的安排,怪谁呢。

王事适我,政事一埤益我。我入自外,室人交遍谪我。已焉哉!天实为之,谓之何哉!
领导安排的事情我能做好,日常工作也做得不错。可是因为我出身乡下,同事们都指责我。算了吧,都是上天的安排,怪谁呢。

王事敦我,政事一埤遗我。我入自外,室人交遍摧我。已焉哉!天实为之,谓之何哉!
难办的事情领导总是催促,不好办的事大家都推给我。我出身乡下,同事们故意催我为难我。算了吧,都是上天的安排,怪谁呢。

邶国的北边,更偏僻穷困的地方,窭是头上顶东西用的垫子,像是朝鲜。
这是个很有本事的乡下人,进城当公务员,跟城里人合不来,有文化差异。
========================================================================
百度真好,什么字不明白,百度一下。
互联网是学习的好工具。
页: 1 [2] 3 4 5 6
查看完整版本: 少林和尚从零开始学Mush,真难啊。