[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.0playerid203.4444,1442.0721,10.5859))
    {
        
GetPlayerName(playeridplayernameMAX_PLAYER_NAME);
        
format(celaosizeof(celao), "%s e seus comparзas estгo tentando explodir a cela 1 do presнdio!"playername);
        
SendClientMessageToAll(0xFF8C00FFcelao);
          
SendClientMessage(playerid, -1"Saia de perto, a cela serб explodida em 25 segundos!");
           
SetTimerEx("explodircela1"250000"i"playerid);   // 25 segundos para explodir a cela
        
SetTimer("UsarCela"36000000); // Explodir cela de novo....  1 hora
        
ContagemExplosaoPresidio[playerid] = SetTimerEx("ContagemPresidio"10001"i"playerid);
        
Contagem[playerid] = 25;
        
explodiracela[playerid] = 1;
        return 
1;
    }
     else if(
PlayerToPoint(5.0playerid179.7404,1441.3298,10.5912))
      {
           
format(celaosizeof(celao), "estб explodindo a cela nє2");
         
SendClientMessageToAll(-1celao);
         
SendClientMessage(playerid, -1"Aguarde 10 Segundos para explodir a cela.");
         
SetTimerEx("explodircela2"250000"i"playerid);   // 25 segundos para explodir a cela
         
SetTimer("UsarCela"36000000);       // Explodir cela de novo....  1 hora
        
ContagemExplosaoPresidio[playerid] = SetTimerEx("ContagemPresidio"10001"i"playerid);
        
Contagem[playerid] = 25;
        
explodiracela[playerid] = 1;
         return 
1;
     }
  else if(
PlayerToPoint(5.0playerid155.8453,1441.6713,10.5912))
      {
           
format(celaosizeof(celao), "estб explodindo a cela nє3");
         
SendClientMessageToAll(-1celao);
         
SendClientMessage(playerid, -1"Aguarde 10 Segundos para explodir a cela.");
         
SetTimerEx("explodircela3"250000"i"playerid);   // 25 segundos para explodir a cela
         
SetTimer("UsarCela"36000000);        // Explodir cela de novo....  1 hora
        
ContagemExplosaoPresidio[playerid] = SetTimerEx("ContagemPresidio"10001"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 iMAX_PLAYERSi++){
        
explodirCela[i] = true;
    }
}
// 1 hora depois...
for(new iMAX_PLAYERSi++){
    
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 iexplodirCela[MAX_PLAYERS]; i++){
        
explodirCela[i] = true;
    }
}
// 1 hora depois...
for(new iexplodirCela[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 iexplodirCela[MAX_PLAYERS]; i++){
        
explodirCela[i] = true;
    }
}
// 1 hora depois...
for(new iexplodirCela[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)