北大侠客行MUD论坛

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

求教mush中如何做到alias中包含条件判断

[复制链接]
发表于 2013-2-1 22:04:14 | 显示全部楼层 |阅读模式
本帖最后由 cantus 于 2013-2-3 07:36 AM 编辑

比如在zmud7.21中,定义一个alias cmm,内容如下:
#if %1 {cast magic_missile on %1} {cast magic_missile}
这样有指定目标就对该目标施法,无目标时使用第二种选择

现在改学mush后,在alias上纠结了很久,没学过lua,看了中文手册和mush教程后,
还是做不出来,我尝试在mush中新建一个alias cmm(.*)  内容如下:
castcmm(%1)  选择发送至脚本分析器,然后在脚本中写:
function castcmm(target)
Note(target)
if target 有内容 -----(这里我不知道怎么写)
then Execute("cast magic_missile on target")    -----(这里变量不知道怎么才能展开)
else Execute("cast magic_missile")
end
end
太纠结了,文科生的悲哀啊,求各位前辈帮助指点下吧,我知道这是个傻问题...可就是不会...

谢谢前辈们指点,已经搞定了,代码如下:
  1. castcfname="arc_fire"
  2. AddAlias("castcf", "^cf\\b\\s?(\\w*)\\s?(\\w*)", "castattackspell(castcfname,'%1','%2')", 1+8+128+1024+16384, "")
  3. SetAliasOption("castcf","send_to", 12)

  4. castcmname="magic_missile"
  5. AddAlias("castcm", "^cm\\b\\s?(\\w*)\\s?(\\w*)", "castattackspell(castcmname,'%1','%2')", 1+8+128+1024+16384, "")
  6. SetAliasOption("castcm","send_to", 12)

  7. function castattackspell(spell,target1,target2)
  8. if target1=="" then
  9. Execute("cast "..spell)
  10. else
  11. Execute("cast "..spell.." on "..target1)
  12. end
  13. end
复制代码
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2013-2-1 23:01:22 | 显示全部楼层
感谢前辈指教,虽然看不大懂,我再琢磨下
貌似这个是个临时alias吧,
Execute("perform "..pfm.." "..target1.." "..target2)
这个格式不是很懂...
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2013-2-1 23:03:04 | 显示全部楼层
回复 4# cantus


    ..用来连接,pfm、target2是变量
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2013-2-1 23:20:52 | 显示全部楼层
"^lian\\s?(\\w*)\\s?(\\w*)"
这段正则看得迷迷糊糊的,为什么有两个\呢,
\s?比较好理解...
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2013-2-1 23:44:39 | 显示全部楼层
回复 6# cantus


    第一个\是转义符,就像zmud里的~一样。不过什么时候该用两个什么时候该用一个我也迷迷糊糊的,等待权威答案
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2013-2-2 00:52:52 | 显示全部楼层
哦,原来脚本里和mush alias里是有区别的,
那么请问你上面写的这段是不是脚本中使用的临时alias呢?
const eEnabled = 1                   ' 启用这个别名
const eReplace = 1024                ' 如果有相同名称的别名则替换它
const eAliasRegularExpression = 128  ' 匹配内容使用了正则表达式
const eTemporary = 16384             ' 临时别名 - 不会被保存到游戏配置文件中
8 的定义没找到...
如果平时手动的时候能不能用这个alias呢?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2013-2-2 01:25:48 | 显示全部楼层
我新建了个脚本文件,
把那段代码原封不动的黏贴进去了,然后就报错了,奇怪~

[string "Script file"]:1: unexpected symbol near '?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2013-2-2 01:39:59 | 显示全部楼层
本帖最后由 hijacker 于 2013-2-2 01:41 AM 编辑

回复 12# cantus


   
pfmwl=“sword.lian”

注意第一行的引号,应该是
  1. pfmwl="sword.lian"
复制代码
全角和半角的区别
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2013-2-2 01:48:57 | 显示全部楼层
果然可以了!感谢前辈指点!
最后一个问题...
临时别名 - 不会被保存到游戏配置文件中
但是我发现在alias里已经自动创建了这个alias,那临时又是指的什么呢?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2013-2-2 01:56:15 | 显示全部楼层
回复 14# cantus


    好像是说关闭这个游戏窗口再打开,就没有了,哪怕关闭前已经保存过。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-24 07:32 AM , Processed in 0.011209 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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