🚦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)
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:
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)
CharacterSet(aIndex)Descrição: Chamada quando o personagem do jogador é atualizado (ex.: atributos como ataque ou defesa).
Exemplo:
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)
MonsterDie(Player, Monster)Descrição: Chamada quando um monstro morre.
Exemplo:
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)
MonsterDieGiveItem(Player, Monster)Descrição: Chamada quando um monstro solta um item após morrer.
Exemplo:
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)
PlayerDie(aIndex, TargetIndex)Descrição: Chamada quando o jogador morre.
Exemplo:
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)
PlayerAttack(aIndex, TargetIndex)Descrição: Chamada quando o jogador ataca um alvo.
Exemplo:
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)
PlayerSendTrade(aIndex, TargetIndex)Descrição: Chamada quando o jogador envia uma solicitação de troca (trade).
Exemplo:
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)
PlayerLevelUp(aIndex)Descrição: Chamada quando o jogador sobe de nível.
Exemplo:
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)
PlayerRingEquiped(aIndex)Descrição: Chamada quando o jogador equipa um anel.
Exemplo:
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)
PlayerTradeOk(aIndex, TargetIndex)Descrição: Chamada quando o jogador confirma uma troca (trade) clicando em "OK".
Exemplo:
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)
PlayerLogout(aIndex)Descrição: Chamada quando o jogador sai do jogo.
Exemplo:
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)
GuildWarProc(GuildName1, GuildPoints1, GuildName2, GuildPoints2)Descrição: Chamada durante uma guerra de guildas, com os nomes e pontos das guildas.
Exemplo:
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)
EnterCharacter(aIndex)Descrição: Chamada quando o jogador entra no jogo.
Exemplo:
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)
CharacterMove(aIndex, map, x, y)Descrição: Chamada quando o jogador teleporta.
Exemplo:
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)
PlayerMove(aIndex, map, x, y, sx, sy)Descrição: Chamada quando o jogador caminha no mapa.
Exemplo:
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)
RunningSkill(aIndex, TargetIndex, SkillNumber)Descrição: Chamada quando o jogador usa uma habilidade.
Exemplo:
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)
NpcTalk(NpcIndex, PlayerIndex)Descrição: Chamada quando o jogador fala com um NPC.
Exemplo:
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)
PlayerSellItem(aIndex, slot)Descrição: Chamada quando o jogador tenta vender um item.
Exemplo:
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)
PlayerRepairItem(aIndex, slot)Descrição: Chamada quando o jogador repara um item.
Exemplo:
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)
PlayerCanMove(aIndex)Descrição: Chamada quando o jogador tenta se mover.
Exemplo:
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)
PlayerMoveItem(aIndex, SourceSlot, TargetSlot, Type)Descrição: Chamada quando o jogador move um item no inventário.
Exemplo:
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)
PlayerVaultOpen(aIndex)Descrição: Chamada quando o jogador abre o cofre.
Exemplo:
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)
DeclareWar(aIndex)Descrição: Chamada quando o jogador declara guerra.
Exemplo:
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)
PlayerUseItem(aIndex, SourceSlot, TargetSlot)Descrição: Chamada quando o jogador usa um item (clique direito).
Exemplo:
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)
PlayerVaultClose(aIndex)Descrição: Chamada quando o jogador fecha o cofre.
Exemplo:
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)
PlayerSendTradeX(aIndex, TargetIndex)Descrição: Chamada quando o jogador envia uma solicitação de TradeX.
Exemplo:
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)
PlayerTradeXOk(aIndex, TargetIndex)Descrição: Chamada quando o jogador confirma um TradeX clicando em "OK".
Exemplo:
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)
PlayerOpenShop(aIndex)Descrição: Chamada quando o jogador abre uma loja pessoal.
Exemplo:
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)
PlayerCloseShop(aIndex)Descrição: Chamada quando o jogador fecha uma loja pessoal.
Exemplo:
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)
PlayerCanEquipItem(aIndex, SourceSlot, TargetSlot)Descrição: Chamada quando o jogador tenta equipar um item.
Exemplo:
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)
GameServerProtocol(aIndex, Packet, PacketName)Descrição: Chamada quando o jogador recebe um pacote personalizado do cliente.
Exemplo:
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)
MacAddressPlayer(aIndex, HWID)Descrição: Chamada para receber o HWID do jogador do cliente.
Exemplo:
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)
PlayerAttackFenrirSkill(aIndex, TargetIndex)Descrição: Chamada quando o jogador usa a habilidade Fenrir em um alvo.
Exemplo:
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)
RespawnUser(aIndex)Descrição: Chamada quando o jogador morre e o tipo de respawn é 5.
Exemplo:
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()
MonsterReload()Descrição: Chamada quando os monstros são recarregados no servidor.
Exemplo:
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.
-- 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.
Last updated
