CE Lua 语法、控制台与执行时机
Lua 能把重复的 CE 操作写成脚本。本篇面向已经能在 CE 中打开官方 Tutorial 的读者,介绍控制台、基本语法与脚本执行时机。
从控制台试起
在 CE 菜单中打开 Lua Engine,在输入区运行 print("hello"),观察输出区。local n = 3 创建局部变量;if n > 1 then print(n) end 是条件语句。Lua 用 nil 表示没有值,数值 0 在条件判断中仍为真;只有 false 与 nil 为假。注意字符串拼接用 ..,不要把十六进制地址文本与十进制数值混淆。
函数与错误
可先写 local function double(x) return x * 2 end,再调用 print(double(4))。括号、引号或 end 缺失会导致语法错误;先检查报错行和前一行。不要从不可信地址表或网页直接运行 Lua:脚本可能读写进程或文件。练习时先复制最小片段,用输出验证每一步。
脚本在哪里执行
Lua Engine 中运行的脚本、地址表的表格 Lua 脚本,以及 Auto Assembler 的 {$lua} 段触发时机不同。地址表脚本可能在表格加载时执行;AA 段可能在检查语法时执行,因此需要检查 syntaxcheck。CE 7.7 的不同 Lua Engine 窗口使用独立 Lua 状态,不应假设局部变量或全局变量跨窗口存在。
练习与验证
先分别运行赋值、函数和条件片段,确认输出符合预期。关闭并重新打开窗口后,不应把先前变量存在当成前提。接下来可读进程选择和地址解析;只有确认目标是官方 Tutorial 或自己的练习进程之后,才继续尝试读写。
进一步验证
阅读现成脚本时,先标出变量在哪里创建、在哪里读取和何时停止使用。局部变量只在所在作用域可见,函数内部创建的局部变量不会自动成为另一个脚本的配置项。把实验拆成几次运行,逐步加入条件判断和函数调用,有助于判断出错的是语法还是环境。对于包含外部依赖的代码,先找到它需要的函数与对象,再决定是否适合自己的练习版本。
可以把数据和行为分开练习:先打印一个数字,再把它作为参数传给函数,最后增加条件判断。每次只修改一处代码,并观察输出是否符合预期。Lua 表可以保存一组值,但它不是 CE 地址表;只有通过 CE 提供的接口获取的记录,才对应地址列表中的项目。关闭运行窗口后,如果需要再次使用脚本,应从已保存的文件或可靠来源重新加载。