GameServerFunctions
Documentação das Funções do GameServer para Lua
As funções do GameServerFunctions são chamadas automaticamente pelo servidor de jogo em eventos específicos e podem ser "hookadas" em scripts Lua para personalizar comportamentos. Esta documentação explica cada função de forma clara, intuitiva e com exemplos práticos e concisos.
Como Usar as Funções do GameServer
Declaração: Crie uma função Lua que será chamada quando o evento correspondente ocorrer.
Registro: Use
GameServerFunctions.NomeDoEvento(Função)para associar sua função ao evento.Observação:
Cada função é disparada automaticamente pelo servidor em situações específicas (ex.: morte de monstro, level up, etc.).
Use a classe
Userpara obter informações sobre jogadores ou monstros.
Funções do GameServerFunctions
Abaixo está a lista de funções, com descrições simples e exemplos práticos de uso:
1. PlayerDropItem(aIndex, x, y, slot)
Descrição: Chamada quando o jogador solta um item no chão. O
slotpode ser usado com a classeInventorypara identificar o item.Exemplo:
Copy
function OnPlayerDropItem(aIndex, x, y, slot) local player = User.new(aIndex) LogAdd(string.format("[DropItem] - [%s] soltou item no slot %d em (%d, %d)", player:getName(), slot, x, y), 0) end GameServerFunctions.PlayerDropItem(OnPlayerDropItem)
2. CharacterSet(aIndex)
Descrição: Chamada quando o personagem do jogador é atualizado (ex.: atributos como ataque ou defesa).
Exemplo:
Copy
function OnCharacterSet(aIndex) local player = User.new(aIndex) LogAdd(string.format("[CharacterSet] - [%s] teve atributos atualizados", player:getName()), 0) end GameServerFunctions.CharacterSet(OnCharacterSet)
3. MonsterDie(Player, Monster)
Descrição: Chamada quando um monstro morre.
Exemplo:
Copy
function OnMonsterDie(Player, Monster) local player = User.new(Player) local monster = User.new(Monster) LogAdd(string.format("[MonsterDie] - [%s] matou %s", player:getName(), monster:getName()), 0) end GameServerFunctions.MonsterDie(OnMonsterDie)
4. MonsterDieGiveItem(Player, Monster)
Descrição: Chamada quando um monstro solta um item após morrer.
Exemplo:
Copy
function OnMonsterDieGiveItem(Player, Monster) local player = User.new(Player) LogAdd(string.format("[MonsterDieGiveItem] - [%s] recebeu item de monstro", player:getName()), 0) end GameServerFunctions.MonsterDieGiveItem(OnMonsterDieGiveItem)
5. PlayerDie(aIndex, TargetIndex)
Descrição: Chamada quando o jogador morre.
Exemplo:
Copy
function OnPlayerDie(aIndex, TargetIndex) local player = User.new(aIndex) LogAdd(string.format("[PlayerDie] - [%s] morreu", player:getName()), 0) end GameServerFunctions.PlayerDie(OnPlayerDie)
6. PlayerAttack(aIndex, TargetIndex)
Descrição: Chamada quando o jogador ataca um alvo.
Exemplo:
Copy
function OnPlayerAttack(aIndex, TargetIndex) local player = User.new(aIndex) LogAdd(string.format("[PlayerAttack] - [%s] atacou um alvo", player:getName()), 0) end GameServerFunctions.PlayerAttack(OnPlayerAttack)
7. PlayerSendTrade(aIndex, TargetIndex)
Descrição: Chamada quando o jogador envia uma solicitação de troca (trade).
Exemplo:
Copy
function OnPlayerSendTrade(aIndex, TargetIndex) local player = User.new(aIndex) LogAdd(string.format("[PlayerSendTrade] - [%s] enviou solicitação de troca", player:getName()), 0) end GameServerFunctions.PlayerSendTrade(OnPlayerSendTrade)
8. PlayerLevelUp(aIndex)
Descrição: Chamada quando o jogador sobe de nível.
Exemplo:
Copy
function OnPlayerLevelUp(aIndex) local player = User.new(aIndex) LogAdd(string.format("[PlayerLevelUp] - [%s] subiu de nível", player:getName()), 0) end GameServerFunctions.PlayerLevelUp(OnPlayerLevelUp)
9. PlayerRingEquiped(aIndex)
Descrição: Chamada quando o jogador equipa um anel.
Exemplo:
Copy
function OnPlayerRingEquiped(aIndex) local player = User.new(aIndex) LogAdd(string.format("[PlayerRingEquiped] - [%s] equipou um anel", player:getName()), 0) end GameServerFunctions.PlayerRingEquiped(OnPlayerRingEquiped)
10. PlayerTradeOk(aIndex, TargetIndex)
Descrição: Chamada quando o jogador confirma uma troca (trade) clicando em "OK".
Exemplo:
Copy
function OnPlayerTradeOk(aIndex, TargetIndex) local player = User.new(aIndex) LogAdd(string.format("[PlayerTradeOk] - [%s] confirmou a troca", player:getName()), 0) end GameServerFunctions.PlayerTradeOk(OnPlayerTradeOk)
11. PlayerLogout(aIndex)
Descrição: Chamada quando o jogador sai do jogo.
Exemplo:
Copy
function OnPlayerLogout(aIndex) local player = User.new(aIndex) LogAdd(string.format("[PlayerLogout] - [%s] saiu do jogo", player:getName()), 0) end GameServerFunctions.PlayerLogout(OnPlayerLogout)
12. GuildWarProc(GuildName1, GuildPoints1, GuildName2, GuildPoints2)
Descrição: Chamada durante uma guerra de guildas, com os nomes e pontos das guildas.
Exemplo:
Copy
function OnGuildWarProc(GuildName1, GuildPoints1, GuildName2, GuildPoints2) LogAdd(string.format("[GuildWarProc] - %s (%d) vs %s (%d)", GuildName1, GuildPoints1, GuildName2, GuildPoints2), 0) end GameServerFunctions.GuildWarProc(OnGuildWarProc)
13. EnterCharacter(aIndex)
Descrição: Chamada quando o jogador entra no jogo.
Exemplo:
Copy
function OnEnterCharacter(aIndex) local player = User.new(aIndex) LogAdd(string.format("[EnterCharacter] - [%s] entrou no jogo", player:getName()), 0) end GameServerFunctions.EnterCharacter(OnEnterCharacter)
14. CharacterMove(aIndex, map, x, y)
Descrição: Chamada quando o jogador teleporta.
Exemplo:
Copy
function OnCharacterMove(aIndex, map, x, y) local player = User.new(aIndex) LogAdd(string.format("[CharacterMove] - [%s] teleportou para mapa %d (%d, %d)", player:getName(), map, x, y), 0) end GameServerFunctions.CharacterMove(OnCharacterMove)
15. PlayerMove(aIndex, map, x, y, sx, sy)
Descrição: Chamada quando o jogador caminha no mapa.
Exemplo:
Copy
function OnPlayerMove(aIndex, map, x, y, sx, sy) local player = User.new(aIndex) LogAdd(string.format("[PlayerMove] - [%s] moveu-se no mapa %d para (%d, %d)", player:getName(), map, x, y), 0) end GameServerFunctions.PlayerMove(OnPlayerMove)
16. RunningSkill(aIndex, TargetIndex, SkillNumber)
Descrição: Chamada quando o jogador usa uma habilidade.
Exemplo:
Copy
function OnRunningSkill(aIndex, TargetIndex, SkillNumber) local player = User.new(aIndex) LogAdd(string.format("[RunningSkill] - [%s] usou habilidade %d", player:getName(), SkillNumber), 0) end GameServerFunctions.RunningSkill(OnRunningSkill)
17. NpcTalk(NpcIndex, PlayerIndex)
Descrição: Chamada quando o jogador fala com um NPC.
Exemplo:
Copy
function OnNpcTalk(NpcIndex, PlayerIndex) local player = User.new(PlayerIndex) LogAdd(string.format("[NpcTalk] - [%s] falou com NPC %d", player:getName(), NpcIndex), 0) end GameServerFunctions.NpcTalk(OnNpcTalk)
18. PlayerSellItem(aIndex, slot)
Descrição: Chamada quando o jogador tenta vender um item.
Exemplo:
Copy
function OnPlayerSellItem(aIndex, slot) local player = User.new(aIndex) LogAdd(string.format("[PlayerSellItem] - [%s] tentou vender item no slot %d", player:getName(), slot), 0) end GameServerFunctions.PlayerSellItem(OnPlayerSellItem)
19. PlayerRepairItem(aIndex, slot)
Descrição: Chamada quando o jogador repara um item.
Exemplo:
Copy
function OnPlayerRepairItem(aIndex, slot) local player = User.new(aIndex) LogAdd(string.format("[PlayerRepairItem] - [%s] reparou item no slot %d", player:getName(), slot), 0) end GameServerFunctions.PlayerRepairItem(OnPlayerRepairItem)
20. PlayerCanMove(aIndex)
Descrição: Chamada quando o jogador tenta se mover.
Exemplo:
Copy
function OnPlayerCanMove(aIndex) local player = User.new(aIndex) LogAdd(string.format("[PlayerCanMove] - [%s] tentou se mover", player:getName()), 0) end GameServerFunctions.PlayerCanMove(OnPlayerCanMove)
21. PlayerMoveItem(aIndex, SourceSlot, TargetSlot, Type)
Descrição: Chamada quando o jogador move um item no inventário.
Exemplo:
Copy
function OnPlayerMoveItem(aIndex, SourceSlot, TargetSlot, Type) local player = User.new(aIndex) LogAdd(string.format("[PlayerMoveItem] - [%s] moveu item do slot %d para %d", player:getName(), SourceSlot, TargetSlot), 0) end GameServerFunctions.PlayerMoveItem(OnPlayerMoveItem)
22. PlayerVaultOpen(aIndex)
Descrição: Chamada quando o jogador abre o cofre.
Exemplo:
Copy
function OnPlayerVaultOpen(aIndex) local player = User.new(aIndex) LogAdd(string.format("[PlayerVaultOpen] - [%s] abriu o cofre", player:getName()), 0) end GameServerFunctions.PlayerVaultOpen(OnPlayerVaultOpen)
23. DeclareWar(aIndex)
Descrição: Chamada quando o jogador declara guerra.
Exemplo:
Copy
function OnDeclareWar(aIndex) local player = User.new(aIndex) LogAdd(string.format("[DeclareWar] - [%s] declarou guerra", player:getName()), 0) end GameServerFunctions.DeclareWar(OnDeclareWar)
24. PlayerUseItem(aIndex, SourceSlot, TargetSlot)
Descrição: Chamada quando o jogador usa um item (clique direito).
Exemplo:
Copy
function OnPlayerUseItem(aIndex, SourceSlot, TargetSlot) local player = User.new(aIndex) LogAdd(string.format("[PlayerUseItem] - [%s] usou item no slot %d", player:getName(), SourceSlot), 0) end GameServerFunctions.PlayerUseItem(OnPlayerUseItem)
25. PlayerVaultClose(aIndex)
Descrição: Chamada quando o jogador fecha o cofre.
Exemplo:
Copy
function OnPlayerVaultClose(aIndex) local player = User.new(aIndex) LogAdd(string.format("[PlayerVaultClose] - [%s] fechou o cofre", player:getName()), 0) end GameServerFunctions.PlayerVaultClose(OnPlayerVaultClose)
26. PlayerSendTradeX(aIndex, TargetIndex)
Descrição: Chamada quando o jogador envia uma solicitação de TradeX.
Exemplo:
Copy
function OnPlayerSendTradeX(aIndex, TargetIndex) local player = User.new(aIndex) LogAdd(string.format("[PlayerSendTradeX] - [%s] enviou solicitação de TradeX", player:getName()), 0) end GameServerFunctions.PlayerSendTradeX(OnPlayerSendTradeX)
27. PlayerTradeXOk(aIndex, TargetIndex)
Descrição: Chamada quando o jogador confirma um TradeX clicando em "OK".
Exemplo:
Copy
function OnPlayerTradeXOk(aIndex, TargetIndex) local player = User.new(aIndex) LogAdd(string.format("[PlayerTradeXOk] - [%s] confirmou TradeX", player:getName()), 0) end GameServerFunctions.PlayerTradeXOk(OnPlayerTradeXOk)
28. PlayerOpenShop(aIndex)
Descrição: Chamada quando o jogador abre uma loja pessoal.
Exemplo:
Copy
function OnPlayerOpenShop(aIndex) local player = User.new(aIndex) LogAdd(string.format("[PlayerOpenShop] - [%s] abriu uma loja pessoal", player:getName()), 0) end GameServerFunctions.PlayerOpenShop(OnPlayerOpenShop)
29. PlayerCloseShop(aIndex)
Descrição: Chamada quando o jogador fecha uma loja pessoal.
Exemplo:
Copy
function OnPlayerCloseShop(aIndex) local player = User.new(aIndex) LogAdd(string.format("[PlayerCloseShop] - [%s] fechou a loja pessoal", player:getName()), 0) end GameServerFunctions.PlayerCloseShop(OnPlayerCloseShop)
30. PlayerCanEquipItem(aIndex, SourceSlot, TargetSlot)
Descrição: Chamada quando o jogador tenta equipar um item.
Exemplo:
Copy
function OnPlayerCanEquipItem(aIndex, SourceSlot, TargetSlot) local player = User.new(aIndex) LogAdd(string.format("[PlayerCanEquipItem] - [%s] tentou equipar item do slot %d", player:getName(), SourceSlot), 0) end GameServerFunctions.PlayerCanEquipItem(OnPlayerCanEquipItem)
31. GameServerProtocol(aIndex, Packet, PacketName)
Descrição: Chamada quando o jogador recebe um pacote personalizado do cliente.
Exemplo:
Copy
function OnGameServerProtocol(aIndex, Packet, PacketName) local player = User.new(aIndex) LogAdd(string.format("[GameServerProtocol] - [%s] recebeu pacote %s", player:getName(), PacketName), 0) end GameServerFunctions.GameServerProtocol(OnGameServerProtocol)
32. MacAddressPlayer(aIndex, HWID)
Descrição: Chamada para receber o HWID do jogador do cliente.
Exemplo:
Copy
function OnMacAddressPlayer(aIndex, HWID) local player = User.new(aIndex) LogAdd(string.format("[MacAddressPlayer] - [%s] HWID: %s", player:getName(), HWID), 0) end GameServerFunctions.MacAddressPlayer(OnMacAddressPlayer)
33. PlayerAttackFenrirSkill(aIndex, TargetIndex)
Descrição: Chamada quando o jogador usa a habilidade Fenrir em um alvo.
Exemplo:
Copy
function OnPlayerAttackFenrirSkill(aIndex, TargetIndex) local player = User.new(aIndex) LogAdd(string.format("[PlayerAttackFenrirSkill] - [%s] usou habilidade Fenrir", player:getName()), 0) end GameServerFunctions.PlayerAttackFenrirSkill(OnPlayerAttackFenrirSkill)
34. RespawnUser(aIndex)
Descrição: Chamada quando o jogador morre e o tipo de respawn é 5.
Exemplo:
Copy
function OnRespawnUser(aIndex) local player = User.new(aIndex) LogAdd(string.format("[RespawnUser] - [%s] foi ressuscitado (tipo 5)", player:getName()), 0) end GameServerFunctions.RespawnUser(OnRespawnUser)
35. MonsterReload()
Descrição: Chamada quando os monstros são recarregados no servidor.
Exemplo:
Copy
function OnMonsterReload() LogAdd("[MonsterReload] - Monstros foram recarregados no servidor", 0) end GameServerFunctions.MonsterReload(OnMonsterReload)
Exemplo Prático Completo
Abaixo está um exemplo fictício que combina várias funções do GameServerFunctions em um único script para monitorar ações de um jogador, como entrada no jogo, morte de monstros e level up.
Copy
-- Sistema de monitoramento de eventos
EVENT_MONITOR = {}
-- Monitora quando o jogador entra no jogo
function EVENT_MONITOR.OnEnterCharacter(aIndex)
local player = User.new(aIndex)
local playerName = player:getName()
LogAdd(string.format("[EventMonitor] - [%s] entrou no jogo", playerName), 0)
end
-- Monitora quando o jogador mata um monstro
function EVENT_MONITOR.OnMonsterDie(Player, Monster)
local player = User.new(Player)
local monster = User.new(Monster)
local playerName = player:getName()
local monsterName = monster:getName()
if monster:getClass() == 500 then
LogAdd(string.format("[EventMonitor] - [%s] matou o monstro %s (classe 500)", playerName, monsterName), 0)
SendMessageGlobal(string.format("Jogador %s matou %s!", playerName, monsterName), 1)
end
end
-- Monitora quando o jogador sobe de nível
function EVENT_MONITOR.OnPlayerLevelUp(aIndex)
local player = User.new(aIndex)
local playerName = player:getName()
LogAdd(string.format("[EventMonitor] - [%s] subiu de nível", playerName), 0)
end
-- Registra as funções
GameServerFunctions.EnterCharacter(EVENT_MONITOR.OnEnterCharacter)
GameServerFunctions.MonsterDie(EVENT_MONITOR.OnMonsterDie)
GameServerFunctions.PlayerLevelUp(EVENT_MONITOR.OnPlayerLevelUp)
return EVENT_MONITORResumo
As funções do
GameServerFunctionssão disparadas automaticamente em eventos específicos do servidor, como morte de monstros, level up, ou trocas.Para usá-las, crie uma função Lua e registre-a com
GameServerFunctions.NomeDoEvento(Função).O exemplo prático mostra como monitorar eventos como entrada no jogo, morte de monstros e level up, usando logs com
LogAdd.
Atualizado