Skip to main content
Os hooks são funções chamadas pelo script em momentos específicos. Eles existem para integrar o dk_dances com o resto do servidor sem alterar o core. Ficam em config/client/hooks.lua e config/server/hooks.lua, e todos rodam sob pcall: um erro dentro de um hook aparece no console, mas nunca derruba o recurso.
Os hooks que começam com onBefore cancelam a ação quando retornam exatamente false. Retornar nil ou esquecer o return não cancela. Mas atenção: um erro dentro de um onBefore também nega a ação. É a escolha segura, mas significa que um hook com bug bloqueia as danças.

A tabela dance

Os hooks recebem a dança do catálogo: Para decidir, use id, category e origin. Nos hooks do client, o dict de uma dança exclusiva já baixada leva o número do restart no nome (veja Carregamento remoto). No server, o dict é o do catálogo.

Client

Arquivo: config/client/hooks.lua A prévia só mostra a animação: quem decide se o jogador pode dançar é o onBeforePlay do servidor.

Bloquear dançar algemado

Casos comuns para o client: jogador algemado, em combate, ferido ou com outra interface aberta.

Bloquear o menu em combate

Server

Arquivo: config/server/hooks.lua O onStop roda ao parar, ao trocar de dança, quando uma dança injetada é removida e quando o jogador sai do servidor dançando.

Dança exclusiva só para VIP

Registrar quem dançou o quê

Client ou server?

  • Client: bloqueio por algemas ou combate, integração com outras interfaces e qualquer coisa que dependa do estado local do personagem
  • Server: regras de negócio, VIP, permissões, registro e qualquer coisa que não pode depender do client
Regra de decisão: se o hook precisa impedir alguma coisa de verdade, coloque a lógica no servidor. Um hook de client protege contra acidente, não contra má-fé.
Veja também Exports: as funções que outros scripts podem chamar no dk_dances.