[AJUDA] Sistema de arena. helpme!
#1

Olб, bom, eu fiz um sistema de arena que estб funcionando direitinho, sу nгo esta perfeito porque ele esta com um errozinho(bug), e eu queria que vocкs me ajudassem, o problema й esse:

Bom, esta funcionando direitinho, eu vo pra arena, aaparece a mensagem e mostra quantas vagas tem normal, e quando sai tambem mostra quantas tem normal, exemplo, eu vo pra arena ai aparece que sу resta 14 vagas, ai quando saio fala que alguem saiu da arena e que agora tem 15 vagas.

Mas o problema й, exemplo: Eu vo pra arena (/irarena), ai fica 14 vagas sobrando neh, ai o admin vai la e fecha a arena (/fechararena) ai nгo tem como eu sair... mas se o admin fecha a arena e depois abre a arena e eu uso /sairarena fala que tem 16 vagas, e eu queria que falasse que tem 15, porque tinha 14 ai eu sai vai sobre 15, e se 2 pessoas estivessem na arena sobraria 13 vagas neh, porque 15-2= 13, ai o admin fecha e abre a arena e 1 sу de nos 2 da /sairarena fala que tem 14 vagas e assim em diante, aqui uma SS pra vocкs:


Codigos:

Variavйl das vagas da aarena:
PHP код:
new ArenaVagas[MAXPLAYERS]; 
PHP код:
if(strcmp(cmd"/abrirarena"true) ==0)
    {
        new 
string[75];
        if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playeridCOR_CINZA1" Vocк nгo й um Admin ¬¬'");
        {
        if(
ArenaLibero[playerid] == 0)//-- Verifica se a arena esta fechada...
         
{
        
ArenaLibero[playerid] = 1;//-- Define que a arena esta aberta
        
GetPlayerName(playeridnomefodasizeof(nomefoda));
        
format(stringsizeof(string)," O admin %s liberou a arena e temos somente 15 vagas, use /irarena para ir atй a arena "nomefoda);
        
SendClientMessageToAll(COR_AZULZAOstring);
        
ArenaVagas[playerid] = 0;
        }
        }
        return 
0x01;
    } 
PHP код:
if(strcmp(cmd"/fechararena"true) ==0)
    {
        new 
string[69];
        if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playeridCOR_CINZA1" Vocк nгo й um Admin ¬¬'");
        {
        if(
ArenaLibero[playerid] == 1)//-- Verifica se a arena esta aberta.
         
{
        
GetPlayerName(playeridnomefodasizeof(nomefoda));
        
format(stringsizeof(string)," O admin %s fechou a arena, ninguem mais pode ir "nomefoda);
        
SendClientMessageToAll(COR_AZULZAOstring);
        
ArenaLibero[playerid] = 0;//-- Define que a arena esta fechada.
        
}
        }
        return 
0x01;
    } 
PHP код:
if(strcmp(cmd"/irarena"true)==0)
    {
        new 
string[80];
        if(
ArenaLibero[playerid] == 0)//-- Verifica se a arena esta fechada, se ela estiver fechada manda essa mensagem abaixo!
         
{
             
SendClientMessage(playeridCOR_CINZA1" A arena esta fechada, nгo pode ir");
             return 
0x01;
          }
          if(
ArenaVagas[playerid] == 15)
        {
            
SendClientMessage(playeridCOR_CINZA2" A arena esta lotada, nгo pode mais ir!");
            return 
0x01;
        }
        if(
TaNaArena[playerid] == 1)
         {
             
SendClientMessage(playeridCOR_CINZA3" Vocк ja estб na arena.");
             return 
0x01;
          }
        if(
ArenaLibero[playerid] == 1)//-- Verifica se a arena esta aberta, se ela estiver aberta executa essas funзхes abaixo!
         
{
         
ArenaVagas[playerid] ++;
         if(
ArenaVagas[playerid] > 0)
        {
            
format(stringsizeof(string), "Um jogador foi para a arena, entгo agora sу resta %d vagas.", (15-ArenaVagas[playerid]));
            
SendClientMessageToAll(COR_VERDEstring);
        }
        
SetPlayerPos(playerid1416.107000,0.268620,1000.926000);//- Seta ele pra essa posiзгo.
        
SendClientMessage(playeridCOR_CINZA1" Vocк foi pra arena de x1"); //- mensagem.
        
SetPlayerInterior(playerid,1);//- Interior.
        
SetPlayerVirtualWorld(playerid0);
        
TaNaArena[playerid] = 1//- Define que ele esta na arena
        
}
        return 
0x01;
    } 

PHP код:
if(strcmp(cmd"/sairarena"true)==0)
    {
        new 
string[80];
        if(
TaNaArena[playerid] == 0)//-- Verifica se ele esta na arena de x1 ou nгo, se ele nгo estiver aparece essa mensagem abaixo \/. Mas se ele estiver ele sera setado...
         
{
             
SendClientMessage(playeridCOR_CINZA1" Vocк nгo esta na arena por isso nгo tem como sair dela ¬¬'");
             return 
0x01;
          }
          if(
ArenaLibero[playerid] == 0)//-- Verifica se a arena esta fechada...
         
{
             
SendClientMessage(playeridCOR_CINZA1" A Arena estб fechada entгo vocк nгo pode sair dela, pessa para um administrador te /setar");
             return 
0x01;
        }
           
TaNaArena[playerid] = 0;
           
ArenaVagas[playerid] --;
           
format(stringsizeof(string), "Um jogador saiu da arena entгo agora temos %d vagas ", (15-ArenaVagas[playerid]));
         
SendClientMessageToAll(COR_AMARELO2string);
        
SetPlayerInterior(playerid,0);
        if(
djTeam[playerid] == Aztecas)return SetPlayerPos(playerid,315.6819,-1770.3193,4.6507);//- Se ele for Azteca ele sera setado pra essa posiзгo, assim em diante... \/
           
if(djTeam[playerid] == Groove)return SetPlayerPos(playerid,2495.5049,-1689.8768,14.7656);
           if(
djTeam[playerid] == PCC)return SetPlayerPos(playerid,1324.3105,-876.0802,39.5781);
           if(
djTeam[playerid] == Vagos)return SetPlayerPos(playerid,2807.8022,-1176.7153,25.3853);
           if(
djTeam[playerid] == Ballas)return SetPlayerPos(playerid,1153.2631,-1180.9392,32.8187);
           if(
djTeam[playerid] == Policia)return SetPlayerPos(playerid,1529.9481,-1662.2065,6.2188);
        return 
0x01;
    } 
Reply
#2

GetPVarInt e SetPVarInt :}
Reply
#3

Corrigi o cуdigo, teste ai:
pawn Код:
new ArenaVagas;
new bool:ArenaLiberada;

if(strcmp(cmd, "/abrirarena", true) ==0)
{
    new string[75];
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COR_CINZA1, " Vocк nгo й um Admin ¬¬'");
    if(!ArenaLiberada)//-- Verifica se a arena esta fechada...
    {
        ArenaLiberada = true;//-- Define que a arena esta aberta
        GetPlayerName(playerid, nomefoda, sizeof(nomefoda));
        format(string, sizeof(string)," O admin %s liberou a arena e temos somente 15 vagas, use /irarena para ir atй a arena ", nomefoda);
        SendClientMessageToAll(COR_AZULZAO, string);
        ArenaVagas = 15;
    }
    return 0x01;
}

if(strcmp(cmd, "/fechararena", true) ==0)
{
    new string[69];
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COR_CINZA1, " Vocк nгo й um Admin ¬¬'");
    if(ArenaLiberada)//-- Verifica se a arena esta aberta.
    {
        GetPlayerName(playerid, nomefoda, sizeof(nomefoda));
        format(string, sizeof(string)," O admin %s fechou a arena, ninguem mais pode ir ", nomefoda);
        SendClientMessageToAll(COR_AZULZAO, string);
        ArenaLiberada = false;//-- Define que a arena esta fechada.
    }
    return 0x01;
}
   
if(strcmp(cmd, "/irarena", true)==0)
{
    new string[80];
    if(TaNaArena[playerid] == 1)
    {
        SendClientMessage(playerid, COR_CINZA3, " Vocк ja estб na arena.");
        return 0x01;
    }
    if(!ArenaLiberada)//-- Verifica se a arena esta fechada, se ela estiver fechada manda essa mensagem abaixo!
    {
        SendClientMessage(playerid, COR_CINZA1, " A arena esta fechada, nгo pode ir");
        return 0x01;
    }
    if(!ArenaVagas)
    {
        SendClientMessage(playerid, COR_CINZA2, " A arena esta lotada, nгo pode mais ir!");
        return 0x01;
    }
    if(ArenaLiberada)//-- Verifica se a arena esta aberta, se ela estiver aberta executa essas funзхes abaixo!
    {
        ArenaVagas--;
        format(string, sizeof(string), "Um jogador foi para a arena, entгo agora sу resta %d vagas.", ArenaVagas);
        SendClientMessageToAll(COR_VERDE, string);
        SetPlayerPos(playerid, 1416.107000,0.268620,1000.926000);//- Seta ele pra essa posiзгo.
        SendClientMessage(playerid, COR_CINZA1, " Vocк foi pra arena de x1"); //- mensagem.
        SetPlayerInterior(playerid,1);//- Interior.
        SetPlayerVirtualWorld(playerid, 0);
        TaNaArena[playerid] = 1; //- Define que ele esta na arena
    }
    return 0x01;
}
   
if(strcmp(cmd, "/sairarena", true)==0)
{
    new string[80];
    if(TaNaArena[playerid] == 0)//-- Verifica se ele esta na arena de x1 ou nгo, se ele nгo estiver aparece essa mensagem abaixo \/. Mas se ele estiver ele sera setado...
    {
        SendClientMessage(playerid, COR_CINZA1, " Vocк nгo esta na arena por isso nгo tem como sair dela ¬¬'");
        return 0x01;
    }
    if(!ArenaLiberada)//-- Verifica se a arena esta fechada...
    {
        SendClientMessage(playerid, COR_CINZA1, " A Arena estб fechada entгo vocк nгo pode sair dela, pessa para um administrador te /setar");
        return 0x01;
    }
    TaNaArena[playerid] = 0;
    ArenaVagas++;
    format(string, sizeof(string), "Um jogador saiu da arena entгo agora temos %d vagas ", ArenaVagas);
    SendClientMessageToAll(COR_AMARELO2, string);
    SetPlayerInterior(playerid,0);
    if(djTeam[playerid] == Aztecas)return SetPlayerPos(playerid,315.6819,-1770.3193,4.6507);//- Se ele for Azteca ele sera setado pra essa posiзгo, assim em diante... \/
    if(djTeam[playerid] == Groove)return SetPlayerPos(playerid,2495.5049,-1689.8768,14.7656);
    if(djTeam[playerid] == PCC)return SetPlayerPos(playerid,1324.3105,-876.0802,39.5781);
    if(djTeam[playerid] == Vagos)return SetPlayerPos(playerid,2807.8022,-1176.7153,25.3853);
    if(djTeam[playerid] == Ballas)return SetPlayerPos(playerid,1153.2631,-1180.9392,32.8187);
    if(djTeam[playerid] == Policia)return SetPlayerPos(playerid,1529.9481,-1662.2065,6.2188);
    return 0x01;
}
Reply
#4

Quote:
Originally Posted by CyNiC
Посмотреть сообщение
Corrigi o cуdigo, teste ai:
pawn Код:
new ArenaVagas;
new bool:ArenaLiberada;

if(strcmp(cmd, "/abrirarena", true) ==0)
{
    new string[75];
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COR_CINZA1, " Vocк nгo й um Admin ¬¬'");
    if(!ArenaLiberada)//-- Verifica se a arena esta fechada...
    {
        ArenaLiberada = true;//-- Define que a arena esta aberta
        GetPlayerName(playerid, nomefoda, sizeof(nomefoda));
        format(string, sizeof(string)," O admin %s liberou a arena e temos somente 15 vagas, use /irarena para ir atй a arena ", nomefoda);
        SendClientMessageToAll(COR_AZULZAO, string);
        ArenaVagas = 15;
    }
    return 0x01;
}

if(strcmp(cmd, "/fechararena", true) ==0)
{
    new string[69];
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COR_CINZA1, " Vocк nгo й um Admin ¬¬'");
    if(ArenaLiberada)//-- Verifica se a arena esta aberta.
    {
        GetPlayerName(playerid, nomefoda, sizeof(nomefoda));
        format(string, sizeof(string)," O admin %s fechou a arena, ninguem mais pode ir ", nomefoda);
        SendClientMessageToAll(COR_AZULZAO, string);
        ArenaLiberada = false;//-- Define que a arena esta fechada.
    }
    return 0x01;
}
   
if(strcmp(cmd, "/irarena", true)==0)
{
    new string[80];
    if(TaNaArena[playerid] == 1)
    {
        SendClientMessage(playerid, COR_CINZA3, " Vocк ja estб na arena.");
        return 0x01;
    }
    if(!ArenaLiberada)//-- Verifica se a arena esta fechada, se ela estiver fechada manda essa mensagem abaixo!
    {
        SendClientMessage(playerid, COR_CINZA1, " A arena esta fechada, nгo pode ir");
        return 0x01;
    }
    if(!ArenaVagas)
    {
        SendClientMessage(playerid, COR_CINZA2, " A arena esta lotada, nгo pode mais ir!");
        return 0x01;
    }
    if(ArenaLiberada)//-- Verifica se a arena esta aberta, se ela estiver aberta executa essas funзхes abaixo!
    {
        ArenaVagas--;
        format(string, sizeof(string), "Um jogador foi para a arena, entгo agora sу resta %d vagas.", ArenaVagas);
        SendClientMessageToAll(COR_VERDE, string);
        SetPlayerPos(playerid, 1416.107000,0.268620,1000.926000);//- Seta ele pra essa posiзгo.
        SendClientMessage(playerid, COR_CINZA1, " Vocк foi pra arena de x1"); //- mensagem.
        SetPlayerInterior(playerid,1);//- Interior.
        SetPlayerVirtualWorld(playerid, 0);
        TaNaArena[playerid] = 1; //- Define que ele esta na arena
    }
    return 0x01;
}
   
if(strcmp(cmd, "/sairarena", true)==0)
{
    new string[80];
    if(TaNaArena[playerid] == 0)//-- Verifica se ele esta na arena de x1 ou nгo, se ele nгo estiver aparece essa mensagem abaixo \/. Mas se ele estiver ele sera setado...
    {
        SendClientMessage(playerid, COR_CINZA1, " Vocк nгo esta na arena por isso nгo tem como sair dela ¬¬'");
        return 0x01;
    }
    if(!ArenaLiberada)//-- Verifica se a arena esta fechada...
    {
        SendClientMessage(playerid, COR_CINZA1, " A Arena estб fechada entгo vocк nгo pode sair dela, pessa para um administrador te /setar");
        return 0x01;
    }
    TaNaArena[playerid] = 0;
    ArenaVagas++;
    format(string, sizeof(string), "Um jogador saiu da arena entгo agora temos %d vagas ", ArenaVagas);
    SendClientMessageToAll(COR_AMARELO2, string);
    SetPlayerInterior(playerid,0);
    if(djTeam[playerid] == Aztecas)return SetPlayerPos(playerid,315.6819,-1770.3193,4.6507);//- Se ele for Azteca ele sera setado pra essa posiзгo, assim em diante... \/
    if(djTeam[playerid] == Groove)return SetPlayerPos(playerid,2495.5049,-1689.8768,14.7656);
    if(djTeam[playerid] == PCC)return SetPlayerPos(playerid,1324.3105,-876.0802,39.5781);
    if(djTeam[playerid] == Vagos)return SetPlayerPos(playerid,2807.8022,-1176.7153,25.3853);
    if(djTeam[playerid] == Ballas)return SetPlayerPos(playerid,1153.2631,-1180.9392,32.8187);
    if(djTeam[playerid] == Policia)return SetPlayerPos(playerid,1529.9481,-1662.2065,6.2188);
    return 0x01;
}
Funciono atй uma parte, mas ainda ta dando o mesmo probleminha, se eu vou pra arena e o admin fecha e abre ela denovo, fala que tem 16 vagas D:

Aqui у a SS:

http://i.imgur.com/UpxC6.png
Reply
#5

Tenta colocar pra quando o cara fechar a arena fazer isso:

ArenaVagas = 15;
Reply
#6

Tire isso: ArenaVagas = 15; do comando de abrir e inicialize a array com 15.
pawn Код:
new ArenaVagas = 15;
Reply
#7

Quote:
Originally Posted by CyNiC
Посмотреть сообщение
Tire isso: ArenaVagas = 15; do comando de abrir e inicialize a array com 15.
pawn Код:
new ArenaVagas = 15;
Entгo й pra eu tirar o ArenaVagas = 15; do /abrirarena e colocar
PHP код:
new ArenaVagas 15
no comando neh?
Se for isso, eu fiz e deu esses erros:

pawn Код:
(1168) : warning 219: local variable "ArenaVagas" shadows a variable at a preceding level
(1168) : warning 204: symbol is assigned a value that is never used: "ArenaVagas"
Comando todo:

PHP код:
if(strcmp(cmd"/abrirarena"true) ==0)
    {
        new 
ArenaVagas 15;
        new 
string[75];
        if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playeridCOR_CINZA1" Vocк nгo й um Admin ¬¬'");
        if(!
ArenaLiberada)//-- Verifica se a arena esta fechada...
        
{
        
ArenaLiberada true;//-- Define que a arena esta aberta
        
GetPlayerName(playeridnomefodasizeof(nomefoda));
        
format(stringsizeof(string)," O admin %s liberou a arena e temos somente 15 vagas, use /irarena para ir atй a arena "nomefoda);
        
SendClientMessageToAll(COR_AZULZAOstring);
        }
           return 
0x01;
    } 
Reply
#8

Nгo seria no comando, bastava colocar = 15; onde ela estava sendo inicializada antes(no topo).
Reply
#9

Vlw, funciono, estrelinha pra vocк
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)