SA-MP Forums Archive
[Ajuda] Bloquear para todos os players - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Bloquear para todos os players (/showthread.php?tid=590210)



Bloquear para todos os players - Sennior - 26.09.2015

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;




Re: Bloquear para todos os players - Thider - 26.09.2015

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



Re: Bloquear para todos os players - Sennior - 26.09.2015

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... :/


Re: Bloquear para todos os players - JonathanFeitosa - 27.09.2015

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


Re: Bloquear para todos os players - Cor3y - 27.09.2015

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;




Re: Bloquear para todos os players - JonathanFeitosa - 27.09.2015

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'.


Re: Bloquear para todos os players - n0minal - 27.09.2015

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++)



Re: Bloquear para todos os players - Sennior - 27.09.2015

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