[Ajuda] Bloquear comando no x1
#1

bom galera sou iniciante no pawn eu queria como fais pra bloquear todos os comandos no x1 meno o /kill pra sair dele
Reply
#2

cria uma variбvel de estado pra saber quando os jogadores estгo no x1, e ai sу verificar na callback de comandos

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(jogadorNoX1[playerid] == true && strcmp(cmdtext, "/kill"))
    {
        //jogador em X1, nгo pode usar nenhum comando.
        SendClientMessage(playerid, -1, "Vocк estб em x1, nгo pode usar este comando.");
        return 1;
    }
}
Reply
#3

pode explicar melhor?
Reply
#4

Ele setou uma variбvel para true, no momento em que o player entra no x1.
E na callback OnPlayerCommandText, ele faz uma verificaзгo para ver se a variбvel estб ligada e compara o comando digitado com strcmp, para saber se й diferente de kill. Se for retornarб a mensagem de erro.
Reply
#5

Olha carinha, no meu GM Quando o jogador estб AFK eu faзo assim para bloquear os comandos.

pawn Код:
//Topo
new bool:X1[MAX_PLAYERS];

//Quando entrar no X1
X1[playerid] = true;

//Quando o X1 Acabar
X1[playerid] = false;

//Quando tentar digitar algum comando й so fazer a verificaзгo

command(kill, playerid, params[])
{
   if(X1[playerid] == true) return  SendClientMessage(playerid, -1, "Vocк estб no x1 e nгo pode usar esse comando");
   SendClientMessage(playerid, -1, "Vocк se matou!");  
   SetPlayerHealth(playerid, 0);
   return 1;
}
Se nao quiser bloquear o comando й sу nгo colocar a verificaзгo..
Reply
#6

Quote:
Originally Posted by Ts3
Посмотреть сообщение
Olha carinha, no meu GM Quando o jogador estб AFK eu faзo assim para bloquear os comandos.

pawn Код:
//Topo
new bool:X1[MAX_PLAYERS];

//Quando entrar no X1
X1[playerid] = true;

//Quando o X1 Acabar
X1[playerid] = false;

//Quando tentar digitar algum comando й so fazer a verificaзгo

command(kill, playerid, params[])
{
   if(X1[playerid] == true) return  SendClientMessage(playerid, -1, "Vocк estб no x1 e nгo pode usar esse comando");
   SendClientMessage(playerid, -1, "Vocк se matou!");  
   SetPlayerHealth(playerid, 0);
   return 1;
}
Se nao quiser bloquear o comando й sу nгo colocar a verificaзгo..
Vocк faz assim ? Vai verificando de comando em comando quando tб usando zcmd ?

Nгo sei se vocк sabe, mas tem uma maneira melhor de fazer isso, atravйs do OnPlayerCommandReceived...
Reply
#7

Quote:
Originally Posted by Willian_Luigi
Посмотреть сообщение
Vocк faz assim ? Vai verificando de comando em comando quando tб usando zcmd ?

Nгo sei se vocк sabe, mas tem uma maneira melhor de fazer isso, atravйs do OnPlayerCommandReceived...
Sim sempre fiz assim, e tambйm nгo sabia que dava pra fazer com CommandReceived.

Do jeito que faзo acho que nгo estб errado.. mas do jeito que vocк falou seria um tipo de otimizaзгo nos cуdigos ou algo assim?
Reply
#8

Quote:
Originally Posted by Ts3
Посмотреть сообщение
Sim sempre fiz assim, e tambйm nгo sabia que dava pra fazer com CommandReceived.

Do jeito que faзo acho que nгo estб errado.. mas do jeito que vocк falou seria um tipo de otimizaзгo nos cуdigos ou algo assim?
Sim, nгo estб errado... Porйm imagine que vocк tem 5000 comandos, que trabalho de corno que seria dar ctrl+c, ctrl+v nessa linha, para todos os comandos...

quando na verdade vocк poderia simplesmente fazer:
pawn Код:
public OnPlayerCommandReceived(playerid, cmdtext[])
{
    SendClientMessage(playerid, -1, "Nгo pode usar comando em evento.");
    return 0;
}
Reply
#9

Sim realmente й uma grande otimizaзгo economiza muitas linhas..

No caso seria assim:

pawn Код:
public OnPlayerCommandReceived(playerid, cmdtext[])
{
    if(AFK[playerid] == true) return SendClientMessage(playerid, -1, "Nгo pode usar comando em evento.");
    return 0;
}
?
Reply
#10

eu consigui bloquear os comandos no x1 mais quando p player ganha ainda n da pra digitar

Ja coloquei no onplayerdeath

TaNoX1[playerid] = 0; // Vocк define 1 para nao pode usar o comando como se ele estiver no x1
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)