Primeros Pasos¶
El GameServer incluye un motor de scripting Lua 5.4. Los scripts registran manejadores de eventos a través de BridgeFunctionAttach() y se cargan automáticamente al iniciar mediante ScriptCore.lua.
Primer Script¶
Crea un archivo llamado Welcome.lua en tu directorio de scripts:
-- Welcome.lua - Send a welcome message when players log in
local function OnPlayerLogin(aIndex)
local player = GetUser(aIndex)
if player == nil then return end
GCNoticeSend(aIndex, 1, "Welcome to the server, " .. player.Name .. "!")
LogAdd(LOG_GREEN, "[Welcome] " .. player.Name .. " has logged in.")
end
-- Register the handler
BridgeFunctionAttach("OnCharacterEntry", OnPlayerLogin)
Conceptos Clave¶
Arquitectura Basada en Eventos¶
Los manejadores se adjuntan a eventos mediante BridgeFunctionAttach():
BridgeFunctionAttach("OnMonsterDie", function(aIndex, bIndex)
-- This runs every time a monster dies
-- aIndex = monster, bIndex = killer
end)
La Función GetUser()¶
Los manejadores reciben un aIndex (índice de objeto). GetUser() retorna el objeto completo:
local player = GetUser(aIndex)
if player then
-- Access properties
print(player.Name) -- Character name
print(player.Level) -- Current level
print(player.Map) -- Current map
print(player.Class) -- Character class
end
Valores de Retorno en Hooks¶
Algunos hooks usan valores de retorno para controlar el comportamiento del juego:
| Retorno | Significado |
|---|---|
0 |
Bloquear la acción predeterminada |
1 |
Permitir la acción predeterminada |
BridgeFunctionAttach("OnItemDrop", function(aIndex, slot, item)
if item:IsSetItem() then
GCNoticeSend(aIndex, 1, "You cannot drop Ancient items!")
return 0 -- Block the drop
end
return 1 -- Allow normally
end)
Siguientes Pasos¶
- Estructura de Scripts — Aprende sobre
ScriptCore.luayBridgeFunctionAttach - Compatibilidad de Versiones — Qué APIs están disponibles por versión del juego
- Referencia API del Servidor — Referencia completa de funciones
- Ejemplos — Ejemplos de scripts del mundo real