求助:问个关于mush的全局变量的问题
我在学做新手任务机器人在lua文件开头,定义一个变量quest_status(在这个位置定义的变量,应该是全局变量吧?),存储当前任务的状态
在执行任务时,会调用不同的函数。
现在遇到问题了,在函数内部,如何读写这个任务状态变量的值呢?
我用SetVariable 与GetVariable函数,报错。
但我不确定是不是这个变量的变量范围的问题
我这个变量,是全局变量吗?
如何在函数内部读写呢?
SetVariable函数不要理解为lua的变量。
这是整个mush的,脱离于lua存在的。
对于lua脚本,这两个函数请理解为 读写系统设置。 if quest_status == 1 then
elseif quest_status == 2 then
。
。
。
诸如此类,用if 判断你的变量值是啥,
SetVariable 与GetVariable函数是用来调用mush自带的变量表内容的,跟脚本里的全局变量不是一套活,当然可以起到一样的效果,mush这些个变量在客户端里可以直接看到。 local quest_status = 1,--这个前面加了local的就是定义quest_status为局部变量,只能在其归属的函数里生效。
quest_status = 1,--这个就是定义全局变量。
-------------一般不是特殊情况,没有必要用到mush客户端里的SetVariable 与GetVariable。
定义之后,可以简单运用
if quest_status == 1 then
Execute("hi")
quest_status = 2
elseif quest_status == 2 then
Execute("kill XXXX")
quest_status = 1
else
print("============")
end 变量quest_status就是变量quest_status,不是其他的
需要用的时候直接呼叫quest_status就可以了
类似的例子:
SetVariable是变量
GetVariable是变量
Send是变量
print是变量
Execute是变量
需要使用的时候直接呼叫对方的姓名即可{:01:} jarlyyn 发表于 2022-12-23 02:16 PM
SetVariable函数不要理解为lua的变量。
这是整个mush的,脱离于lua存在的。
那么,在lua文件内定义的变量,在mush的trigger里调用,也可以直接调用吗?
我这样理解对不对:如果不是为了调试与人工查阅的方便,只是想在lua文件与trigger里面使用的变量,那么GetVariable与SetVariable就不是必须使用的了? 理解得差不多吧
GetVariable与SetVariable是接口函数,不是必须使用的
优势在于可以写盘,人工查阅其实并一定不方便。 barderaa 发表于 2022-12-23 02:30 PM
那么,在lua文件内定义的变量,在mush的trigger里调用,也可以直接调用吗?
我这样理解对不对:如果不是 ...
不可以,触发是系统级的。
如果要触发mush变量。
下策是动态更新触发。
上策是正则获取后在脚本里判断。 本帖最后由 barderaa 于 2022-12-23 02:47 PM 编辑
creat 发表于 2022-12-23 02:33 PM
理解得差不多吧
GetVariable与SetVariable是接口函数,不是必须使用的
优势在于可以写盘,人工查阅其实并一 ...
那么,我在lua文件里不用GetVariable,用SetVariable把需要触发调用的变量储存;在触发里面用GetVariable与SetVariable(实现触发与lua的全局变量数值传递) 。
这样的方案是正确的吗? 并没有所谓的实现触发与lua之间的数值传递
这两个函数一直不用也不会有什么影响
建议自己多去尝试,理解一下内部环境和外部环境的边界在何处
页:
[1]
2