99 then DoAfterspecial(2,"gobuyyuer" ... 求教一个MUSH机器极简单的问题 ,北大侠客行MUD论坛" />

afu 发表于 2012-2-25 16:48:05

求教一个MUSH机器极简单的问题

脚本文件内容如下:
function begindy()
num=1
DoAfterSpecial(2,"godiaoyu",10)
end

function diaoyu()
num=num+1
if num>99 then DoAfterspecial(2,"gobuyyuer",10)
    else
      Execute("gua yuer")
      Execute("diao yu")
    end
end

机器触发如下:
^[> ]*你从杨永福那里买下了一百个鱼饵。
执行:begindy()
^[> ]*你的经验增加了*点。
执行:diaoyu()

如此设置后,每次经验增加就报错:
:7: attempt to perform arithmetic on global 'num' (a nil value)
stack traceback:
        :7: in function 'diaoyu'
        :1: in main chunk

求解!谢谢大家!

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

afu 发表于 2012-2-25 16:48:50

本帖最后由 afu 于 2012-2-25 04:50 PM 编辑

附加说明,godiaoyu和gobuyyuer是两个alias,分别是去钓鱼和去买鱼饵
我特意先去买了一次100个鱼饵,触发了去钓鱼的alias,按我的想法num应该等于1的。。。

afu 发表于 2012-2-25 17:51:29

错长老,怎么在MUSH里面显示变量值啊?

maper 发表于 2012-2-25 19:17:31

在function begindy()的前一行加 num=1
问题的症结在于:没有定义全局变量num,你在function begindy()中定义的num只是一个局部变量。

trace 发表于 2012-2-26 00:28:57

是的。函数里也可以声明全局变量。
页: [1]
查看完整版本: 求教一个MUSH机器极简单的问题