北大侠客行MUD论坛

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

请教mushclient个问题

[复制链接]
发表于 2011-6-30 13:50:31 | 显示全部楼层 |阅读模式
遇到个难题,以前用zmud写的比较容易。现在用mushclient不知道如何写。
举个简单的例子:
#alias aaa {e;e;bbb {s;e;s}}
#alias bbb {#t+ 1;look;#alias temp %-1}
trigger class 1是
#TR {xxxxx} {#t- 1;temp}

在mushclient里上面的功能如何实现?用alias 和 函数分别给个例子。

北大侠客行MUD,中国最好的MUD

[ 本帖最后由 randomcho 于 2011-6-30 01:52 PM 编辑 ]
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-6-30 21:17:55 | 显示全部楼层
问的好,我也想知道,这里的mush手册都是关于函数的,对mush本体的一些操作命令好像很少提到
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-6-30 21:36:36 | 显示全部楼层
1、alias嵌套的问题,其实在mush中并不像zmud中方便。但是由于函数的灵活性,使得嵌套也显得十分灵活。可以考虑下面的做法,其核心思想就是把命令变成了执行函数的方式而已。
2、MUSH中的lua自己内部函数一般是小写的方式表示,而mc本身的函数多数是以大写字母开头,如:DoAfterSpecial等。
你可以在下拉菜单中帮助-->函数列表查到。或ctrl+alt+shift+L查询
下面代码没测试。也许有错误。。。。表达个意思吧。。

1.#alias aaa {e;e;bbb {s;e;s}}
  1. AddAlias("alias_aaa","aaa","",alias_flag.Enabled + alias_flag.Replace,"cmd_aaa")

  2. cmd_aaa=function()
  3. Execute("e;e")
  4. cmd_bbb()
  5. end

  6. cmd_bbb=function()
  7. Execute("s;e;s")
  8. end
复制代码
2. #alias bbb {#t+ 1;look;#alias temp %-1}
#alias temp %-1====>没看懂楼主的意思。
  1. AddAlias("alias_bbb2","bbb","",alias_flag.Enabled + alias_flag.Replace,"cmd_bbb")
  2. cmd_bbb=function()
  3. EnableTrigger("1",1)
  4. Execute("look")
  5. ---temp=。。。。。
  6. end
复制代码

[ 本帖最后由 littleknife 于 2011-6-30 09:38 PM 编辑 ]
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-6-30 22:08:26 | 显示全部楼层
zmud中%-1 代表alias后所有参数。
比如alias bbb  ,如果你用bbb e,那么e=%1
如果你用bbb e s,如果你想获得bbb后面的两个参数,可以e=%1,s=%2,
或则干脆e s=%-1
其实我上面得例子那就是代表temp={s;e;s},当然这里可以用%1
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-6-30 22:13:00 | 显示全部楼层
倒!littleknife没看懂我的列子啊!
如果分开来做我会做的。就是通过alias发给脚本,脚本里调用函数。
其实我的列子就是alias aaa要完成一些列的动作.e;e;bbb {s;e;s}
其中bbb 这个动作是个带参数的alias,这个alias比较特别,他不是马上向游戏释放他的参数s;e;s
而是要执行一些其他的动作后才释放s;e;s,其他的动作=执行一些trigger触发,也就是#TR {xxxxx} {#t- 1;temp}

[ 本帖最后由 randomcho 于 2011-6-30 10:17 PM 编辑 ]
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-6-30 22:19:16 | 显示全部楼层
原帖由 randomcho 于 2011-6-30 10:08 PM 发表
zmud中%-1 代表alias后所有参数。
比如alias bbb  ,如果你用bbb e,那么e=%1
如果你用bbb e s,如果你想获得bbb后面的两个参数,可以e=%1,s=%2,
或则干脆e s=%-1
其实我上面得例子那就是代表temp={s;e;s},当然这里 ...
  1. AddAlias("alias_bbb","bbb (.+)","",alias_flag.Enabled + alias_flag.Replace + alias_flag.RegularExpression,"alias_bbb")

  2. alias_bbb=function(n,l,w)
  3.      temp=w[1]     
  4. end
复制代码

[ 本帖最后由 littleknife 于 2011-6-30 10:20 PM 编辑 ]
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-6-30 22:22:32 | 显示全部楼层
看得我头晕
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-6-30 22:24:53 | 显示全部楼层
没看懂function(n,l,w)
     temp=w[1]     
end
function里的参数n,l代表什么?
w是代表参数是个table吧?
问题是mush 的alias 里好像不支持带分号的,不然会解释层换行
不像zmud可以用{}框起来
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-6-30 22:25:40 | 显示全部楼层

回复 7楼 的帖子

alias是可以直接用代码进行加载的,其mush命令就是AddAlias而已。
若你的alias里有参数,就在函数引用上用参数法引用就是了。bbb=function(n,l,w).......w[1],第一个参数,w[2]第二个参数。

help----trigger选项:

sub MyTrigger (name, line, wildcards)
  world.Note "Trigger " & name & " matched."
  world.Note "Wildcard 1 was" & wildcards (1)
end sub



问题是mush 的alias 里好像不支持带分号的,不然会解释层换行

单行多命令,这个是可以设置的。

[ 本帖最后由 littleknife 于 2011-7-1 07:19 AM 编辑 ]
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-6-30 22:33:01 | 显示全部楼层
算了 我就举个例子吧。
比如我想走到某个room去。从出发地-->目的地的
路径是这样e;e;然后渡河;渡河好后再走s;e;s
就这么简单;如果用zmud我可以用一个alias解决,方法就是1楼得列子。
#TR {你渡过河了} {#sa 执行渡河后动作;temp} 1  (这句最后的1代表class)
#alias aaa {e;e;bbb {s;e;s}}
#alias bbb {#t+1;duhe;#alias temp %-1} (因为我敲aaa的时候会执行bbb {s;e;s},那么这里%-1就是e;s;e,也就是会生成一个alias temp {e;s;e})
那么我敲下aaa,就会自动渡河,然后渡河完成后再走e;s;e
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-24 09:12 AM , Processed in 0.013163 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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