Ir para o conteúdo

Referência da API do Cliente

Disponibilidade

Lua no cliente está disponível apenas no S21.1-2. Outras versões não possuem suporte a Lua no cliente.

A API Lua do cliente roda dentro do módulo Main.dll e permite customizar a UI do cliente do jogo, controlar input, acessar a memória do jogo e se comunicar com o servidor via pacotes customizados.


Variáveis Globais

Variável Tipo Descrição
Hero table Dados do personagem atual do jogador (posição, atributos, estado)
CharacterAttribute table Atributos e estatísticas do jogador (STR, AGI, VIT, ENE, CMD)
Mouse table Posição do mouse (Mouse.X, Mouse.Y) e estado dos botões

Funções de Renderização

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

Carrega uma textura/imagem para renderização na tela.

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

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

Desenha uma imagem previamente carregada na tela na posição especificada.

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

Renderização de Texto

Função Descrição
UIRenderText_Left(x, y, text, r, g, b) Renderiza texto alinhado à esquerda
UIRenderText_Center(x, y, text, r, g, b) Renderiza texto centralizado
UIRenderText_Right(x, y, text, r, g, b) Renderiza texto alinhado à direita
UIRenderText_Center(320, 50, "Hello World!", 255, 255, 0)

Alpha Blending

Função Descrição
EnableAlphaBlend() Ativa alpha blending para renderização transparente
DisableAlphaBlend() Desativa alpha blending

Funções de Input

Função Descrição
SEASON3B_IsPress(key) Verifica se a tecla está pressionada no momento
SEASON3B_IsRelease(key) Verifica se a tecla acabou de ser solta
SEASON3B_IsRepeat(key) Verifica se a tecla está mantida pressionada (repetição)
GetMouseX() Retorna a posição X atual do mouse
GetMouseY() Retorna a posição Y atual do mouse
IsWriteInterfaceOpen() Retorna true se um campo de texto está ativo
if SEASON3B_IsPress(0x54) then -- 'T' key
    UIRenderText_Center(320, 240, "T is pressed!", 0, 255, 0)
end

Funções de Rede (Pacotes)

Envia e recebe pacotes customizados entre cliente e servidor.

Leitura de Pacotes

Função Descrição
PacketGetByte(packet, offset) Lê um BYTE (1 byte) do pacote
PacketGetWord(packet, offset) Lê um WORD (2 bytes) do pacote
PacketGetDword(packet, offset) Lê um DWORD (4 bytes) do pacote
PacketGetFloat(packet, offset) Lê um float (4 bytes) do pacote
PacketGetDouble(packet, offset) Lê um double (8 bytes) do pacote

Envio de Pacotes

Função Descrição
PacketSend(packetFormat) Envia um pacote formatado para o servidor
-- Send a custom packet to the server
PacketSend("\xC1\x04\xF3\x01")

Funções de Memória

Avançado

Funções de memória fornecem acesso direto à memória do cliente do jogo. Uso incorreto pode causar crash no cliente.

Funções de Escrita

Função Descrição
SetByte(offset, value) Escreve um BYTE na memória
SetWord(offset, value) Escreve um WORD (2 bytes) na memória
SetDword(offset, value) Escreve um DWORD (4 bytes) na memória
SetFloat(offset, value) Escreve um float na memória
SetDouble(offset, value) Escreve um double na memória

Funções de Leitura

Função Descrição
GetByte(offset) Lê um BYTE da memória
GetWord(offset) Lê um WORD da memória
GetDword(offset) Lê um DWORD da memória
GetFloat(offset) Lê um float da memória
GetDouble(offset) Lê um double da memória

Operações em Lote

Função Descrição
MemoryCpy(offset, hexString) Copia dados hex para a memória
MemorySet(offset, byteValue, size) Preenche região de memória com um valor
-- Read a value from memory
local value = GetDword(0x12345678)

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

Registro de Eventos

Registre funções Lua para serem chamadas em eventos específicos do 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)