客户端 API 参考¶
可用性
客户端 Lua 仅在 S21.1-2 中可用。其他版本不支持客户端 Lua。
客户端 Lua API 运行在 Main.dll 模块内,允许你自定义游戏客户端的 UI、处理输入、访问游戏内存,以及通过自定义数据包与服务器通信。
全局变量¶
| 变量 | 类型 | 说明 |
|---|---|---|
Hero |
table | 当前玩家角色数据(位置、属性、状态) |
CharacterAttribute |
table | 玩家属性(STR、AGI、VIT、ENE、CMD) |
Mouse |
table | 鼠标位置(Mouse.X、Mouse.Y)和按键状态 |
渲染函数¶
LoadInterface(filePath, imageId, startX, startY, width, height)¶
加载贴图/图片用于屏幕渲染。
RenderImage(imageId, x, y, width, height)¶
在指定位置绘制之前加载的图片。
文字渲染¶
| 函数 | 说明 |
|---|---|
UIRenderText_Left(x, y, text, r, g, b) |
渲染左对齐文字 |
UIRenderText_Center(x, y, text, r, g, b) |
渲染居中文字 |
UIRenderText_Right(x, y, text, r, g, b) |
渲染右对齐文字 |
Alpha 混合¶
| 函数 | 说明 |
|---|---|
EnableAlphaBlend() |
开启 Alpha 混合以实现透明渲染 |
DisableAlphaBlend() |
关闭 Alpha 混合 |
输入函数¶
| 函数 | 说明 |
|---|---|
SEASON3B_IsPress(key) |
检查按键是否正在被按下 |
SEASON3B_IsRelease(key) |
检查按键是否刚刚释放 |
SEASON3B_IsRepeat(key) |
检查按键是否被持续按住(重复) |
GetMouseX() |
返回当前鼠标 X 坐标 |
GetMouseY() |
返回当前鼠标 Y 坐标 |
IsWriteInterfaceOpen() |
文本输入框激活时返回 true |
if SEASON3B_IsPress(0x54) then -- 'T' 键
UIRenderText_Center(320, 240, "T is pressed!", 0, 255, 0)
end
网络(数据包)函数¶
在客户端和服务端之间发送和接收自定义数据包。
读取数据包¶
| 函数 | 说明 |
|---|---|
PacketGetByte(packet, offset) |
从数据包中读取一个 BYTE(1 字节) |
PacketGetWord(packet, offset) |
从数据包中读取一个 WORD(2 字节) |
PacketGetDword(packet, offset) |
从数据包中读取一个 DWORD(4 字节) |
PacketGetFloat(packet, offset) |
从数据包中读取一个 float(4 字节) |
PacketGetDouble(packet, offset) |
从数据包中读取一个 double(8 字节) |
发送数据包¶
| 函数 | 说明 |
|---|---|
PacketSend(packetFormat) |
向服务器发送格式化数据包 |
内存函数¶
高级功能
内存函数提供对游戏客户端内存的直接访问。使用不当可能导致客户端崩溃。
写入函数¶
| 函数 | 说明 |
|---|---|
SetByte(offset, value) |
向内存写入一个 BYTE |
SetWord(offset, value) |
向内存写入一个 WORD(2 字节) |
SetDword(offset, value) |
向内存写入一个 DWORD(4 字节) |
SetFloat(offset, value) |
向内存写入一个 float |
SetDouble(offset, value) |
向内存写入一个 double |
读取函数¶
| 函数 | 说明 |
|---|---|
GetByte(offset) |
从内存读取一个 BYTE |
GetWord(offset) |
从内存读取一个 WORD |
GetDword(offset) |
从内存读取一个 DWORD |
GetFloat(offset) |
从内存读取一个 float |
GetDouble(offset) |
从内存读取一个 double |
批量操作¶
| 函数 | 说明 |
|---|---|
MemoryCpy(offset, hexString) |
将十六进制数据复制到内存 |
MemorySet(offset, byteValue, size) |
用指定值填充内存区域 |
事件注册¶
注册 Lua 函数以在特定客户端事件时被调用:
LuaEventAttach("OnRender", function()
UIRenderText_Left(10, 10, "Custom UI Text", 255, 255, 255)
end)
LuaEventAttach("OnKeyPress", function(key)
if key == 0x74 then -- F5
PacketSend("\xC1\x04\xF3\x01")
end
end)
Help