ddjch 发表于 2011-9-22 16:22:41

问题,关于lua里函数计算和if语句

function xl(nn,nm)                                                   -------nn,nm分别为打坐100气血后hp指令抓取到的当前和最大内力
   thp=(nm-nn)/100
   local agroup = GetVariable("test")                     ------test是抓取nn nm的trigger      
   local bgroup = GetVariable("dzrunning")             -------dzrunning是另一个trigger
   EnableTriggerGroup (agroup, false)                   ------关闭test
   EnableTriggerGroup (bgroup, ture)
end
function dz(qx,nn,nm)                                          -----重新抓取当前气血 当前内力和最大内力
   qa=math.ceil((nm*2-nn)/thp)                           
   if qa>qx                                       
   then send("dazuo "..qx)
   elseif qa==qx
   then send("dazuo "..qx)
   elseif qa<qx
   then send("dazuo "..qa)
   elseif qa<10
   then send("dazuo 10")
   else send("dazuo 10")
end






这段语句我自己看来看去都没看出问题
但就是执行不了
错误提示是下面这句
:19: 'end' expected (to close 'function' at line 8) near '<eof>'


请各位大侠帮忙指点一二,谢谢

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

mygame 发表于 2011-9-22 16:46:18

if op == "+" then
   r = a + b
elseif op == "-" then
   r = a - b
elseif op == "*" then
   r = a*b
elseif op == "/" then
   r = a/b
else
   error("invalid operation")
end

mygame 发表于 2011-9-22 16:48:05

function dz(qx,nn,nm)                                          -----重新抓取当前气血 当前内力和最大内力
    qa=math.ceil((nm*2-nn)/thp)                           
    if qa>qx then
      send("dazuo "..qx)
    elseif qa==qx then
      send("dazuo "..qx)
    elseif qa<qx then
      send("dazuo "..qa)
    elseif qa<10 then
      send("dazuo 10")
    else
      send("dazuo 10")
    end
end规范点

[ 本帖最后由 mygame 于 2011-9-22 04:49 PM 编辑 ]

ddjch 发表于 2011-9-22 16:55:00

晕 我少写了个end
不过这样一来又有新的问题了
:9: attempt to perform arithmetic on global 'thp' (a nil value)
stack traceback:
        :9: in function 'dz'
        :1: in main chunk

mygame 发表于 2011-9-22 17:06:53

global 'thp' (a nil value)
全局变量thp的值为nil

mygame 发表于 2011-9-22 17:11:06

函数xl没有调用
全局变量thp的值为空
qa=math.ceil((nm*2-nn)/thp)   
这句解析就会出问题

ddjch 发表于 2011-9-22 18:31:11

那请问我在xl函数里的赋值出错了么?
thp=(nm-nn)/100

难道不能这么写?

pizzagoo 发表于 2011-9-22 18:54:44

把触发器帖出来

mygame 发表于 2011-9-22 21:00:17

函数前面初始化下变量就好了

thp = 1(PS:加上这句,测试下)
function xl(nn,nm)   
..............
..............

ddjch 发表于 2011-9-22 21:41:56

我把脚本一行一行的删掉检测
现在可以确定问题出在

if qa>qx
   then send("dazuo "..qx)
   elseif qa==qx
   then send("dazuo "..qx)
   elseif qa<qx
   then send("dazuo "..qa)
   elseif qa<10
   then send("dazuo 10")
   else send("dazuo 10")
   end
这段代码里
thp的问题在于不能2个同样的触发来激活脚本
会同时执行2个函数 所以会出错
只要先执行xl的触发 然后关掉这个触发使用enable dz就行了(这块之后再研究 我想应该可以把2个函数捏成一个函数的) 后来我发现还是会有出错,把dz里的nn nm重新命名就没事了

现在关键是if这块不知道什么问题
:7: attempt to compare string with number
stack traceback:
        :7: in function 'dz'
        :1: in main chunk
这是加上if之后出现的错误提示
页: [1] 2
查看完整版本: 问题,关于lua里函数计算和if语句