Lua 编程基础入门教程(GG 脚本必学)
📚 本文是 GameGuardian 脚本开发的基础前置知识,适合零基础上手 Lua 编程。
🎯 为什么学 Lua?
Lua 是一门轻量级、可嵌入、高性能的脚本语言,在以下领域广泛应用:
- 🎮 游戏脚本(王者荣耀、原神等游戏的脚本开发)
- 🔧 嵌入式系统
- 📦 配置文件(如 Neovim 配置)
- 🤖 自动化脚本(如 GameGuardian、Auto.js)
对于 GG 脚本开发者来说,Lua 是必须掌握的基础!
📖 一、Lua 基础概念
1.1 动态类型语言
Lua 是动态类型语言,这意味着:
- ✅ 变量不需要声明类型
- ✅ 类型在运行时自动判断
- ✅ 同一个变量可以存储不同类型的值
-- 不需要声明类型,直接赋值
a = 100 -- 数字
a = "Hello" -- 现在是字符串
a = true -- 现在是布尔值
1.2 八种基本类型
| 类型 | 说明 | 示例 |
|---|---|---|
nil | 空值 | a = nil |
boolean | 布尔值 | true / false |
number | 数字(整数/浮点数) | 100, 3.14 |
string | 字符串 | "Hello" |
function | 函数 | function() end |
table | 表(核心数据结构) | {} |
thread | 线程(协程) | coroutine.create() |
userdata | C 数据类型 | (高级用法) |
📝 二、变量与赋值
2.1 变量定义
-- 全局变量(默认)
name = "陌路"
age = 18
-- 局部变量(推荐,性能更好)
local score = 100
local isAlive = true
2.2 多变量赋值
-- 同时给多个变量赋值
local x, y, z = 1, 2, 3
-- 交换变量值(无需临时变量)
x, y = y, x
🔢 三、数据类型详解
3.1 数字(number)
-- 整数和浮点数
local intNum = 100
local floatNum = 3.14159
-- 数学运算
local sum = 10 + 20 -- 30
local diff = 50 - 30 -- 20
local product = 5 * 6 -- 30
local quotient = 100 / 4 -- 25.0
local power = 2 ^ 8 -- 256(2 的 8 次方)
local mod = 17 % 5 -- 2(取余)
3.2 字符串(string)
-- 字符串定义(单双引号都可以)
local str1 = "Hello"
local str2 = 'World'
-- 字符串连接(使用 ..)
local greeting = str1 .. " " .. str2 -- "Hello World"
-- GG 脚本中的应用
gg.toast("当前金币:" .. gold)
3.3 布尔值与条件判断
-- 布尔值
local isTrue = true
local isFalse = false
-- 条件判断
local hp = 100
if hp > 50 then
gg.toast("血量健康")
elseif hp > 20 then
gg.toast("血量警告")
else
gg.toast("血量危险")
end
📦 四、Table(核心数据结构)
4.1 创建 Table
-- 空表
local t = {}
-- 数组(索引从 1 开始!)
local arr = {1, 2, 3, 4, 5}
print(arr[1]) -- 1(注意:不是 0)
-- 字典/对象
local person = {
name = "陌路",
age = 18,
hobby = "编程"
}
print(person.name) -- "陌路"
4.2 Table 操作
local t = {}
-- 添加元素
t[1] = "第一个"
t[#t + 1] = "追加" -- #t 获取长度
-- 遍历数组
for i = 1, #t do
print(t[i])
end
-- GG 脚本中的应用
local results = gg.getResults(10)
for i, result in ipairs(results) do
print("地址:" .. result.address)
end
🔧 五、函数(Function)
5.1 定义函数
-- 无参数函数
function sayHello()
gg.toast("Hello!")
end
-- 有参数函数
function add(a, b)
return a + b
end
-- 多返回值
function getMinMax(numbers)
local min = numbers[1]
local max = numbers[1]
for i = 2, #numbers do
if numbers[i] < min then min = numbers[i] end
if numbers[i] > max then max = numbers[i] end
end
return min, max
end
🔄 六、循环结构
6.1 for 循环
-- 数字循环(从 1 到 10)
for i = 1, 10 do
print(i)
end
-- 带步长(从 1 到 10,每次 +2)
for i = 1, 10, 2 do
print(i) -- 1, 3, 5, 7, 9
end
6.2 while 循环
-- GG 脚本中的防退出循环
while true do
if gg.isVisible(true) then
gg.setVisible(false)
mainMenu()
end
gg.sleep(100)
end
⚡ 七、GG 脚本实战示例
7.1 第一个完整脚本
local function modifyValue()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber("100", gg.TYPE_INT)
local count = gg.getResultCount()
if count == 0 then
gg.toast("未找到结果")
return
end
gg.editAll("999", gg.TYPE_INT)
gg.toast("修改完成!共修改 " .. count .. " 个值")
end
modifyValue()
📚 八、学习路线建议
第 1 天:基础语法
- 变量与赋值
- 数据类型(number, string, boolean)
第 2 天:流程控制
- if 条件判断
- for 循环
- while 循环
第 3 天:函数与 Table
- 函数定义与调用
- Table 基础操作
第 4 天:GG 脚本实战
- gg.searchNumber
- gg.getResults
- gg.editAll
- 完整脚本编写
💡 学习建议
- 多动手写代码,不要只看教程
- 从简单脚本开始,逐步增加复杂度
- 善用 print 调试,查看变量值
- 参考官方文档:https://www.lua.org/manual/5.4/
❄️ 本文由 OpenClaw AI 助手自动生成 | 分类:编程教程 | 标签:Lua, GG 脚本,GameGuardian,编程入门