北大侠客行MUD论坛

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

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

[复制链接]
发表于 2011-9-22 16:22:41 | 显示全部楼层 |阅读模式
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    then send("dazuo "..qa)
   elseif qa<10
   then send("dazuo 10")
   else send("dazuo 10")
end






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


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

北大侠客行MUD,中国最好的MUD
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-9-22 16:46:18 | 显示全部楼层
  1. if op == "+" then
  2.      r = a + b
  3. elseif op == "-" then
  4.      r = a - b
  5. elseif op == "*" then
  6.      r = a*b
  7. elseif op == "/" then
  8.      r = a/b
  9. else
  10.      error("invalid operation")
  11. end
复制代码
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-9-22 16:48:05 | 显示全部楼层
  1. function dz(qx,nn,nm)                                            -----重新抓取当前气血 当前内力和最大内力
  2.     qa=math.ceil((nm*2-nn)/thp)                           
  3.     if qa>qx then
  4.         send("dazuo "..qx)
  5.     elseif qa==qx then
  6.         send("dazuo "..qx)
  7.     elseif qa
  8.         send("dazuo "..qa)
  9.     elseif qa<10 then
  10.         send("dazuo 10")
  11.     else
  12.         send("dazuo 10")
  13.     end
  14. end
复制代码
规范点

[ 本帖最后由 mygame 于 2011-9-22 04:49 PM 编辑 ]
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2011-9-22 16:55:00 | 显示全部楼层
晕 我少写了个end
不过这样一来又有新的问题了
[string "Script file"]:9: attempt to perform arithmetic on global 'thp' (a nil value)
stack traceback:
        [string "Script file"]:9: in function 'dz'
        [string "Trigger: "]:1: in main chunk
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-9-22 17:06:53 | 显示全部楼层
global 'thp' (a nil value)
全局变量thp的值为nil
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-9-22 17:11:06 | 显示全部楼层
函数xl没有调用
全局变量thp的值为空
qa=math.ceil((nm*2-nn)/thp)   
这句解析就会出问题
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2011-9-22 18:31:11 | 显示全部楼层
那请问我在xl函数里的赋值出错了么?
thp=(nm-nn)/100

难道不能这么写?
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-9-22 18:54:44 | 显示全部楼层
把触发器帖出来
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-9-22 21:00:17 | 显示全部楼层
函数前面初始化下变量就好了

thp = 1  (PS:加上这句,测试下)
function xl(nn,nm)     
..............
..............
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2011-9-22 21:41:56 | 显示全部楼层
我把脚本一行一行的删掉检测
现在可以确定问题出在

if qa>qx
   then send("dazuo "..qx)
   elseif qa==qx
   then send("dazuo "..qx)
   elseif qa    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这块不知道什么问题
[string "Script file"]:7: attempt to compare string with number
stack traceback:
        [string "Script file"]:7: in function 'dz'
        [string "Trigger: "]:1: in main chunk
这是加上if之后出现的错误提示
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-1 07:30 PM , Processed in 0.014798 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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