[Ajuda] Bloquear para todos os players
#1

Bom, criei um sistema para explodir os portoes do presidio, e com ele, um explodircela[playerid] = 0 que significa que vocк pode explodir a cela, e explodircela[playerid] = 1 que significa que vocк nгo pode explodir a cela, o problema й que eu explodo a cela e quando vou tentar de novo bloqueia por causa que no explodircela[playerid] = 1 certo? Mas pra outra pessoa nгo bloqueia, so bloqueia pra mim, eu queria que fosse setado o explodircela[playerid] = 1 para o server todo, como faзo isso?

PHP код:
if (!strcmp(cmdtext, "/explodircela", true)) {
    new 
celao[100];
    if (
explodiracela[playerid] == 1) return SendClientMessage(playerid, -1, "Alguem jб atacou o presнdio, tente novamente mais tarde!");
    if(
PlayerToPoint(5.0, playerid, 203.4444,1442.0721,10.5859))
    {
        
GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
        
format(celao, sizeof(celao), "%s e seus comparзas estгo tentando explodir a cela 1 do presнdio!", playername);
        
SendClientMessageToAll(0xFF8C00FF, celao);
          
SendClientMessage(playerid, -1, "Saia de perto, a cela serб explodida em 25 segundos!");
           
SetTimerEx("explodircela1", 25000, 0, "i", playerid);   // 25 segundos para explodir a cela
        
SetTimer("UsarCela", 3600000, 0); // Explodir cela de novo....  1 hora
        
ContagemExplosaoPresidio[playerid] = SetTimerEx("ContagemPresidio", 1000, 1, "i", playerid);
        
Contagem[playerid] = 25;
        
explodiracela[playerid] = 1;
        return 
1;
    }
     else if(
PlayerToPoint(5.0, playerid, 179.7404,1441.3298,10.5912))
      {
           
format(celao, sizeof(celao), "estб explodindo a cela nє2");
         
SendClientMessageToAll(-1, celao);
         
SendClientMessage(playerid, -1, "Aguarde 10 Segundos para explodir a cela.");
         
SetTimerEx("explodircela2", 25000, 0, "i", playerid);   // 25 segundos para explodir a cela
         
SetTimer("UsarCela", 3600000, 0);       // Explodir cela de novo....  1 hora
        
ContagemExplosaoPresidio[playerid] = SetTimerEx("ContagemPresidio", 1000, 1, "i", playerid);
        
Contagem[playerid] = 25;
        
explodiracela[playerid] = 1;
         return 
1;
     }
  else if(
PlayerToPoint(5.0, playerid, 155.8453,1441.6713,10.5912))
      {
           
format(celao, sizeof(celao), "estб explodindo a cela nє3");
         
SendClientMessageToAll(-1, celao);
         
SendClientMessage(playerid, -1, "Aguarde 10 Segundos para explodir a cela.");
         
SetTimerEx("explodircela3", 25000, 0, "i", playerid);   // 25 segundos para explodir a cela
         
SetTimer("UsarCela", 3600000, 0);        // Explodir cela de novo....  1 hora
        
ContagemExplosaoPresidio[playerid] = SetTimerEx("ContagemPresidio", 1000, 1, "i", playerid);
        
Contagem[playerid] = 25;
        
explodiracela[playerid] = 1;
         return 
1;
     }
    return 
true;
} 
Reply
#2

Crie uma variбvel global, no caso vou dar um exemplo usando a bool.

PHP код:
//Topo do GM
new bool:explodircela;
//No comando (Verificaзгo): 
if(explodircela == true)
         return 
SendClientMessage(playerid, -1, "Alguem jб atacou o presнdio, tente novamente mais tarde!");
// Apуs explodir:
explodircela = true;
// no Timer de 1 hora para explodir novamente
explodircela = false; 
Reply
#3

Ainda nгo foi, por exemplo, se o id 1 explode a cela, ai depois ela bloqueia pra ele, mas se o id 2 tenta explodir, a cela explode, eu queria que bloqueasse para todos do server, se 1 pessoa ja explodiu, ela so pode ser explodida de novo depois do tempo que eu colocar... :/
Reply
#4

Como jб foi dito acima, troque sua variбvel explodiracela para Global, ao invйs de utilizar MAX_PLAYERS aliado a playerid.
Reply
#5

Quote:
Originally Posted by ipsLeon
Посмотреть сообщение
Correзгo:

Код:
for(new i; i < MAX_PLAYERS; i++)
PHP код:
new bool:explodirCela [MAX_PLAYERS] = false;
// CMD: Explodir
CMD:explodir(playerid){
    
// verifica se explodirCela й verdadeiro com o ID do player que usou o comando
    
if(explodirCela[playerid] == true) return SendClientMessage(playerid, #fff, "Alguйm jб explodiu.")
    
    // se a variбvel nгo for verdadeira...
    
for(new i; i < MAX_PLAYERS; i++){
        
explodirCela[i] = true;
    }
}
// 1 hora depois...
for(new i; i < MAX_PLAYERS; i++){
    
explodirCela[i] = false;
} 
Reply
#6

Quote:
Originally Posted by Cor3y
Посмотреть сообщение
PHP код:
new bool:explodirCela [MAX_PLAYERS];
// CMD: Explodir
CMD:explodir(playerid){
    
// verifica se explodirCela й verdadeiro com o ID do player que usou o comando
    
if(explodirCela[playerid]) return SendClientMessage(playerid, #fff, "Alguйm jб explodiu.")
    
    // se nгo a variбvel nгo for verdadeira...
    
for(new i; i < explodirCela[MAX_PLAYERS]; i++){
        
explodirCela[i] = true;
    }
}
// 1 hora depois...
for(new i; i < explodirCela[MAX_PLAYERS]; i++){
    
explodirCela[i] = false;
} 
Esse mйtodo apesar de eficiente, nгo terб bons resultados, logo nгo serб eficaz. Alйm de abusar da memуria, o player que loga apуs nгo vai ter sua variбvel 'iniciada'.
Reply
#7

Quote:
Originally Posted by Cor3y
Посмотреть сообщение
PHP код:
new bool:explodirCela [MAX_PLAYERS];
// CMD: Explodir
CMD:explodir(playerid){
    
// verifica se explodirCela й verdadeiro com o ID do player que usou o comando
    
if(explodirCela[playerid]) return SendClientMessage(playerid, #fff, "Alguйm jб explodiu.")
    
    // se nгo a variбvel nгo for verdadeira...
    
for(new i; i < explodirCela[MAX_PLAYERS]; i++){
        
explodirCela[i] = true;
    }
}
// 1 hora depois...
for(new i; i < explodirCela[MAX_PLAYERS]; i++){
    
explodirCela[i] = false;
} 
Correзгo:

Код:
for(new i; i < MAX_PLAYERS; i++)
Reply
#8

Vou tentar o do Cor3y e com a correзгo do Leon, nгo posso testar agora pфs sу tem eu e preciso de outra pessoa
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)