cantus 发表于 2013-2-1 22:04:14

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

本帖最后由 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
太纠结了,文科生的悲哀啊,求各位前辈帮助指点下吧,我知道这是个傻问题...可就是不会...

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

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

function castattackspell(spell,target1,target2)
if target1=="" then
Execute("cast "..spell)
else
Execute("cast "..spell.." on "..target1)
end
end

cantus 发表于 2013-2-1 23:01:22

感谢前辈指教,虽然看不大懂,我再琢磨下
貌似这个是个临时alias吧,
Execute("perform "..pfm.." "..target1.." "..target2)
这个格式不是很懂...

hijacker 发表于 2013-2-1 23:03:04

回复 4# cantus


    ..用来连接,pfm、target2是变量

cantus 发表于 2013-2-1 23:20:52

"^lian\\s?(\\w*)\\s?(\\w*)"
这段正则看得迷迷糊糊的,为什么有两个\呢,
\s?比较好理解...

hijacker 发表于 2013-2-1 23:44:39

回复 6# cantus


    第一个\是转义符,就像zmud里的~一样。不过什么时候该用两个什么时候该用一个我也迷迷糊糊的,等待权威答案

cantus 发表于 2013-2-2 00:52:52

哦,原来脚本里和mush alias里是有区别的,
那么请问你上面写的这段是不是脚本中使用的临时alias呢?
const eEnabled = 1                   ' 启用这个别名
const eReplace = 1024                ' 如果有相同名称的别名则替换它
const eAliasRegularExpression = 128' 匹配内容使用了正则表达式
const eTemporary = 16384             ' 临时别名 - 不会被保存到游戏配置文件中
8 的定义没找到...
如果平时手动的时候能不能用这个alias呢?

cantus 发表于 2013-2-2 01:25:48

我新建了个脚本文件,
把那段代码原封不动的黏贴进去了,然后就报错了,奇怪~

:1: unexpected symbol near '?

hijacker 发表于 2013-2-2 01:39:59

本帖最后由 hijacker 于 2013-2-2 01:41 AM 编辑

回复 12# cantus


    pfmwl=“sword.lian”
注意第一行的引号,应该是pfmwl="sword.lian"全角和半角的区别

cantus 发表于 2013-2-2 01:48:57

果然可以了!感谢前辈指点!
最后一个问题...
临时别名 - 不会被保存到游戏配置文件中
但是我发现在alias里已经自动创建了这个alias,那临时又是指的什么呢?

hijacker 发表于 2013-2-2 01:56:15

回复 14# cantus


    好像是说关闭这个游戏窗口再打开,就没有了,哪怕关闭前已经保存过。
页: [1] 2
查看完整版本: 求教mush中如何做到alias中包含条件判断