北大侠客行MUD论坛

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

求助:问个关于mush的全局变量的问题

[复制链接]
发表于 2022-12-23 14:12:48 | 显示全部楼层 |阅读模式
我在学做新手任务机器人
在lua文件开头,定义一个变量quest_status(在这个位置定义的变量,应该是全局变量吧?),存储当前任务的状态
在执行任务时,会调用不同的函数。
现在遇到问题了,在函数内部,如何读写这个任务状态变量的值呢?

我用SetVariable 与GetVariable函数,报错。
但我不确定是不是这个变量的变量范围的问题

我这个变量,是全局变量吗?
如何在函数内部读写呢?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2022-12-23 14:16:47 | 显示全部楼层
SetVariable函数不要理解为lua的变量。

这是整个mush的,脱离于lua存在的。

对于lua脚本,这两个函数请理解为 读写系统设置。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2022-12-23 14:17:40 | 显示全部楼层
if quest_status == 1 then
elseif quest_status == 2 then




诸如此类,用if 判断你的变量值是啥,
SetVariable 与GetVariable函数是用来调用mush自带的变量表内容的,跟脚本里的全局变量不是一套活,当然可以起到一样的效果,mush这些个变量在客户端里可以直接看到。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2022-12-23 14:22:15 | 显示全部楼层
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
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2022-12-23 14:22:16 | 显示全部楼层
变量quest_status就是变量quest_status,不是其他的
需要用的时候直接呼叫quest_status就可以了
类似的例子:
SetVariable是变量
GetVariable是变量
Send是变量
print是变量
Execute是变量
需要使用的时候直接呼叫对方的姓名即可
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2022-12-23 14:30:32 | 显示全部楼层
jarlyyn 发表于 2022-12-23 02:16 PM
SetVariable函数不要理解为lua的变量。

这是整个mush的,脱离于lua存在的。

那么,在lua文件内定义的变量,在mush的trigger里调用,也可以直接调用吗?

我这样理解对不对:如果不是为了调试与人工查阅的方便,只是想在lua文件与trigger里面使用的变量,那么GetVariable与SetVariable就不是必须使用的了?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2022-12-23 14:33:48 | 显示全部楼层
理解得差不多吧
GetVariable与SetVariable是接口函数,不是必须使用的
优势在于可以写盘,人工查阅其实并一定不方便。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2022-12-23 14:36:37 | 显示全部楼层
barderaa 发表于 2022-12-23 02:30 PM
那么,在lua文件内定义的变量,在mush的trigger里调用,也可以直接调用吗?

我这样理解对不对:如果不是 ...

不可以,触发是系统级的。

如果要触发mush变量。

下策是动态更新触发。

上策是正则获取后在脚本里判断。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2022-12-23 14:39:42 | 显示全部楼层
本帖最后由 barderaa 于 2022-12-23 02:47 PM 编辑
creat 发表于 2022-12-23 02:33 PM
理解得差不多吧
GetVariable与SetVariable是接口函数,不是必须使用的
优势在于可以写盘,人工查阅其实并一 ...

那么,我在lua文件里不用GetVariable,用SetVariable把需要触发调用的变量储存;在触发里面用GetVariable与SetVariable(实现触发与lua的全局变量数值传递) 。
这样的方案是正确的吗?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2022-12-23 14:47:58 | 显示全部楼层
并没有所谓的实现触发与lua之间的数值传递
这两个函数一直不用也不会有什么影响
建议自己多去尝试,理解一下内部环境和外部环境的边界在何处
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-20 07:16 AM , Processed in 0.010652 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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