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

  1. Declaração: Crie uma função Lua que será chamada quando o evento correspondente ocorrer.

  2. Registro: Use GameServerFunctions.NomeDoEvento(Função) para associar sua função ao evento.

  3. Observação:

    • Cada função é disparada automaticamente pelo servidor em situações específicas (ex.: morte de monstro, level up, etc.).

    • Use a classe User para 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 slot pode ser usado com a classe Inventory para 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

3. MonsterDie(Player, Monster)

  • Descrição: Chamada quando um monstro morre.

  • Exemplo:

    Copy

4. MonsterDieGiveItem(Player, Monster)

  • Descrição: Chamada quando um monstro solta um item após morrer.

  • Exemplo:

    Copy

5. PlayerDie(aIndex, TargetIndex)

  • Descrição: Chamada quando o jogador morre.

  • Exemplo:

    Copy

6. PlayerAttack(aIndex, TargetIndex)

  • Descrição: Chamada quando o jogador ataca um alvo.

  • Exemplo:

    Copy

7. PlayerSendTrade(aIndex, TargetIndex)

  • Descrição: Chamada quando o jogador envia uma solicitação de troca (trade).

  • Exemplo:

    Copy

8. PlayerLevelUp(aIndex)

  • Descrição: Chamada quando o jogador sobe de nível.

  • Exemplo:

    Copy

9. PlayerRingEquiped(aIndex)

  • Descrição: Chamada quando o jogador equipa um anel.

  • Exemplo:

    Copy

10. PlayerTradeOk(aIndex, TargetIndex)

  • Descrição: Chamada quando o jogador confirma uma troca (trade) clicando em "OK".

  • Exemplo:

    Copy

11. PlayerLogout(aIndex)

  • Descrição: Chamada quando o jogador sai do jogo.

  • Exemplo:

    Copy

12. GuildWarProc(GuildName1, GuildPoints1, GuildName2, GuildPoints2)

  • Descrição: Chamada durante uma guerra de guildas, com os nomes e pontos das guildas.

  • Exemplo:

    Copy

13. EnterCharacter(aIndex)

  • Descrição: Chamada quando o jogador entra no jogo.

  • Exemplo:

    Copy

14. CharacterMove(aIndex, map, x, y)

  • Descrição: Chamada quando o jogador teleporta.

  • Exemplo:

    Copy

15. PlayerMove(aIndex, map, x, y, sx, sy)

  • Descrição: Chamada quando o jogador caminha no mapa.

  • Exemplo:

    Copy

16. RunningSkill(aIndex, TargetIndex, SkillNumber)

  • Descrição: Chamada quando o jogador usa uma habilidade.

  • Exemplo:

    Copy

17. NpcTalk(NpcIndex, PlayerIndex)

  • Descrição: Chamada quando o jogador fala com um NPC.

  • Exemplo:

    Copy

18. PlayerSellItem(aIndex, slot)

  • Descrição: Chamada quando o jogador tenta vender um item.

  • Exemplo:

    Copy

19. PlayerRepairItem(aIndex, slot)

  • Descrição: Chamada quando o jogador repara um item.

  • Exemplo:

    Copy

20. PlayerCanMove(aIndex)

  • Descrição: Chamada quando o jogador tenta se mover.

  • Exemplo:

    Copy

21. PlayerMoveItem(aIndex, SourceSlot, TargetSlot, Type)

  • Descrição: Chamada quando o jogador move um item no inventário.

  • Exemplo:

    Copy

22. PlayerVaultOpen(aIndex)

  • Descrição: Chamada quando o jogador abre o cofre.

  • Exemplo:

    Copy

23. DeclareWar(aIndex)

  • Descrição: Chamada quando o jogador declara guerra.

  • Exemplo:

    Copy

24. PlayerUseItem(aIndex, SourceSlot, TargetSlot)

  • Descrição: Chamada quando o jogador usa um item (clique direito).

  • Exemplo:

    Copy

25. PlayerVaultClose(aIndex)

  • Descrição: Chamada quando o jogador fecha o cofre.

  • Exemplo:

    Copy

26. PlayerSendTradeX(aIndex, TargetIndex)

  • Descrição: Chamada quando o jogador envia uma solicitação de TradeX.

  • Exemplo:

    Copy

27. PlayerTradeXOk(aIndex, TargetIndex)

  • Descrição: Chamada quando o jogador confirma um TradeX clicando em "OK".

  • Exemplo:

    Copy

28. PlayerOpenShop(aIndex)

  • Descrição: Chamada quando o jogador abre uma loja pessoal.

  • Exemplo:

    Copy

29. PlayerCloseShop(aIndex)

  • Descrição: Chamada quando o jogador fecha uma loja pessoal.

  • Exemplo:

    Copy

30. PlayerCanEquipItem(aIndex, SourceSlot, TargetSlot)

  • Descrição: Chamada quando o jogador tenta equipar um item.

  • Exemplo:

    Copy

31. GameServerProtocol(aIndex, Packet, PacketName)

  • Descrição: Chamada quando o jogador recebe um pacote personalizado do cliente.

  • Exemplo:

    Copy

32. MacAddressPlayer(aIndex, HWID)

  • Descrição: Chamada para receber o HWID do jogador do cliente.

  • Exemplo:

    Copy

33. PlayerAttackFenrirSkill(aIndex, TargetIndex)

  • Descrição: Chamada quando o jogador usa a habilidade Fenrir em um alvo.

  • Exemplo:

    Copy

34. RespawnUser(aIndex)

  • Descrição: Chamada quando o jogador morre e o tipo de respawn é 5.

  • Exemplo:

    Copy

35. MonsterReload()

  • Descrição: Chamada quando os monstros são recarregados no servidor.

  • Exemplo:

    Copy


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


Resumo

  • As funções do GameServerFunctions sã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