[Ajuda] Bloquear jogadores de usar comandos não está funcionando - Versão de Impressão +- Portal SAMP (https://portalsamp.com) +-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5) +--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6) +--- Tópico: [Ajuda] Bloquear jogadores de usar comandos não está funcionando (/showthread.php?tid=3281) |
Bloquear jogadores de usar comandos não está funcionando - AllanSG - 02/02/2023 Olá, Estou fazendo um sistema de bloquear jogadores de usarem comandos. O sistema está quase pronto, porém mesmo o jogador estando bloqueado ele executa o comando e a mensagem de que ele esta bloqueado aparece logo em seguida que o comando foi executado. Citar:if(Player[playerid][SegBlock] != 0) return SendClientMessage(playerid, vermelho, "Você está bloqueado de usar comandos."); uso esse codigo na public OnPlayerCommandPerformed, ja tentei colocar na OnPlayerCommandText e OnPlayerCommandReceived e mesmo assim o comando primeiro executa e depois diz que não posso usar comando. Minhas publics ficam na parte de cima do GM e os comandos (zcmd) ficam no final do gm. Tem algum jeito que eu possa arrumar isso sem precisar colocar a verificação no script de cada comando individualmente? Já agradeço quem puder ajudar. RE: Bloquear jogadores de usar comandos não está funcionando - White_Blue - 02/02/2023 Bom, o comando passa pela OnPlayerCommandReceived antes de passar pela OnPlayerCommandPerformed no zcmd, e não vai funcionar se colocar na OnPlayerCommandText, por que você está usando zcmd como você disse. O código abaixo deve funcionar se estiver tudo certo. Código PHP: new bool:blockcmd[MAX_PLAYERS] = false; RE: Bloquear jogadores de usar comandos não está funcionando - MarcosBrazz - 03/02/2023 Se as ajudas acima não funcionar: Verificando na própia include e vi que para impedir do comando ser usado, precisa retornar 0 ou false na public OnPlayerCommandPerformed. Seu código mostra que você está retornando SendClientMessage. Verificando os valores de retorno de SendClientMessage: Citar:ReturnsTraduzindo: retorna 1 se a função foi executada corretamente e 0 se não funcionar. Ou seja, usar "return SendClientMessage" é o mesmo que usar "return 1", e você precisa retornar 0 ou false para impedir o uso do comando. Exemplo usando sua variavel: Código PHP: public OnPlayerCommandReceived(playerid, cmdtext[]) { RE: Bloquear jogadores de usar comandos não está funcionando - AllanSG - 04/02/2023 Funcionou guys, agradeço a ajuda. Coloquei o código do MarcosBrazz e evitou do comando ser executado. Agradeço tambem ao white blue e bruno por terem me explicado melhor. |