Saltar a contenido

Referencia de la API del Cliente

Disponibilidad

Lua del lado del cliente solo está disponible en S21.1-2. Otras versiones no tienen soporte de Lua del cliente.

La API Lua del lado del cliente se ejecuta dentro del módulo Main.dll y permite personalizar la UI del cliente del juego, manejar entrada, acceder a la memoria del juego y comunicarse con el servidor mediante paquetes personalizados.


Variables Globales

Variable Tipo Descripción
Hero table Datos del personaje actual del jugador (posición, estadísticas, estado)
CharacterAttribute table Estadísticas y atributos del jugador (STR, AGI, VIT, ENE, CMD)
Mouse table Posición del mouse (Mouse.X, Mouse.Y) y estado de botones

Funciones de Renderizado

LoadInterface(filePath, imageId, startX, startY, width, height)

Carga una textura/imagen para renderizar en pantalla.

LoadInterface("Data\\Custom\\MyUI.tga", 100, 0, 0, 256, 256)

RenderImage(imageId, x, y, width, height)

Dibuja una imagen previamente cargada en pantalla en la posición especificada.

RenderImage(100, 400, 300, 128, 128)

Renderizado de Texto

Función Descripción
UIRenderText_Left(x, y, text, r, g, b) Renderizar texto alineado a la izquierda
UIRenderText_Center(x, y, text, r, g, b) Renderizar texto centrado
UIRenderText_Right(x, y, text, r, g, b) Renderizar texto alineado a la derecha
UIRenderText_Center(320, 50, "Hello World!", 255, 255, 0)

Mezcla Alfa

Función Descripción
EnableAlphaBlend() Habilitar mezcla alfa para renderizado transparente
DisableAlphaBlend() Deshabilitar mezcla alfa

Funciones de Entrada

Función Descripción
SEASON3B_IsPress(key) Verificar si una tecla está presionada actualmente
SEASON3B_IsRelease(key) Verificar si una tecla acaba de ser soltada
SEASON3B_IsRepeat(key) Verificar si una tecla está mantenida (repetición)
GetMouseX() Retorna la posición X actual del mouse
GetMouseY() Retorna la posición Y actual del mouse
IsWriteInterfaceOpen() Retorna true si un campo de texto está activo
if SEASON3B_IsPress(0x54) then -- 'T' key
    UIRenderText_Center(320, 240, "T is pressed!", 0, 255, 0)
end

Funciones de Red (Paquetes)

Enviar y recibir paquetes personalizados entre cliente y servidor.

Lectura de Paquetes

Función Descripción
PacketGetByte(packet, offset) Leer un BYTE (1 byte) del paquete
PacketGetWord(packet, offset) Leer un WORD (2 bytes) del paquete
PacketGetDword(packet, offset) Leer un DWORD (4 bytes) del paquete
PacketGetFloat(packet, offset) Leer un float (4 bytes) del paquete
PacketGetDouble(packet, offset) Leer un double (8 bytes) del paquete

Envio de Paquetes

Función Descripción
PacketSend(packetFormat) Envía un paquete formateado al servidor
-- Send a custom packet to the server
PacketSend("\xC1\x04\xF3\x01")

Funciones de Memoria

Avanzado

Las funciones de memoria proporcionan acceso directo a la memoria del cliente del juego. Un uso incorrecto puede causar que el cliente se cierre inesperadamente.

Funciones de Escritura

Función Descripción
SetByte(offset, value) Escribir un BYTE en memoria
SetWord(offset, value) Escribir un WORD (2 bytes) en memoria
SetDword(offset, value) Escribir un DWORD (4 bytes) en memoria
SetFloat(offset, value) Escribir un float en memoria
SetDouble(offset, value) Escribir un double en memoria

Funciones de Lectura

Función Descripción
GetByte(offset) Leer un BYTE de memoria
GetWord(offset) Leer un WORD de memoria
GetDword(offset) Leer un DWORD de memoria
GetFloat(offset) Leer un float de memoria
GetDouble(offset) Leer un double de memoria

Operaciones Masivas

Función Descripción
MemoryCpy(offset, hexString) Copiar datos hexadecimales a memoria
MemorySet(offset, byteValue, size) Llenar una región de memoria con un valor
-- Read a value from memory
local value = GetDword(0x12345678)

-- Fill a memory region
MemorySet(0x12345678, 0x90, 5)

Registro de Eventos

Registra funciones Lua para ser llamadas en eventos específicos del cliente:

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)