Visão Geral

Esse arquivo concentra funções executadas no lado do cliente, acessadas via Config.clientFuncs, e utilizadas pelo painel de animações e também pelos exports disponíveis. O objetivo é fornecer uma base de controle para:
  • Validação de animações.
  • Controle de execução com cooldown.
  • Interação com outros jogadores próximos.
  • Hooks para quando a animação começa ou termina.
  • Bloqueio de teclas durante animações.

Funções Disponíveis

canPlayAnim(id: string): boolean

Verifica se o jogador pode iniciar uma animação. Retorna false se o jogador estiver “morto” (vida abaixo de 101) ou se estiver em cooldown.
Exibe um notify com o tempo restante de cooldown, se necessário.

getNearestPlayer(target?: integer, distance: integer): integer|nil

Busca a source do player mais próximo, respeitando a distância definida.
Caso um target seja passado, ele é utilizado diretamente.
Se nenhum player estiver por perto, exibe uma notificação e retorna nil.

onStartAnim(id: string, target: integer): void

Hook executado assim que a animação começa.
Você pode modificar o comportamento aqui, como mudar estados locais ou logar eventos.

onStopAnim(id: string, target: integer): void

Hook executado quando a animação para.
Também personalizável para alterar o estado do jogador, etc.

blockButtons(blockedToRun: boolean, blockButtons: boolean): void

Função executada em loop enquanto a animação está ativa.
  • blockedToRun: se true, bloqueia a tecla de correr (Shift).
  • blockButtons: se true, bloqueia uma lista completa de botões que poderiam interferir na animação.
Ideal para animações que não podem ser interrompidas.

Cooldown Embutido

O script já vem com uma lógica simples e eficaz de cooldown:
local playAnimCooldown = Cooldown:new(2) -- tempo em segundos
Isso evita spam no servidor e permite uma camada de controle por parte do desenvolvedor.
Você pode ajustar esse tempo facilmente alterando o valor ao instanciar o Cooldown.

Personalização

Essas funções foram projetadas para serem simples de alterar ou estender. Você pode, por exemplo:
  • Adicionar novas validações em canPlayAnim.
  • Alterar notificações.
  • Modificar os botões bloqueados conforme o tipo de animação.

Conclusão

O functions.lua do lado cliente é essencial para manter o controle das execuções de animações de forma segura, organizada e leve. Com essas ferramentas, você tem total liberdade para modificar, expandir e personalizar sua experiência no servidor.