[Ajuda] Sistema de Gang Zone : Jonathan_Feitosa
#1

Olб a todos. Desde de ontem, eu estou esquentando a cabeзa com um probleminha muito insuportбvel que estou tento no game mode que estou realizando..

Escolhi o tutorial do Jonathan_Feitosa , pois achei muito bem explicado ! Vou deixar o link abaixo para ajudar a vocкs entender.

Fiz quase de mesma forma, tudo funcionou perfeitamente, mais nгo quero deixar igual й claro.. Estou tendo problemas em dar um ponto de score para todos do time X , pelo fato daquele membro do time ter dominado aquela GZ.

Meu sistema se encontra aqui..

Quote:
pawn Код:
#define MAX_TEAMS 5
#define brasil 0
#define eua 1
#define asia 2
#define urss 3
#define europa 4
#define none 5
pawn Код:
//NEWS GZ GERAL

new Dominando[MAX_PLAYERS]; // Usaremos Quando o Player For Dominar
new GZCasarao; // Da Nome a Nossa GZ
new donoCasarao; // Define quem й o dono da GZ
new GuerranoCasarao; // Se Estiver Em Guerra o Casarao.
new ProvocoCasarao[MAX_PLAYERS]; // Se Ele der /do no casarгo.
new TempoGuerraCasarao; // Tempo Para Dominar/
forward GuerraCasarao(playerid); // Public de Dominar.
new CelulasJFS[128]; // new Que Iremos usar Para Nossas format.
new NomeJFS[MAX_PLAYER_NAME]; // Pegarб o Nome do Player ^^
OnPlayerConnect


Dominando[playerid] = 0;
GangZoneStopFlashForAll(GZCasarao);
GangZoneShowForAll(GZCasarao, 0xC0C0C0AA);
ProvocoCasarao[playerid] = 0;
GuerranoCasarao = 0;
donoCasarao = 0;

pawn Код:
if(donoCasarao,GetPlayerTeam(playerid) == none) // Se o DonoCasarao For 0, й Branca, de Ninguem.
    {
     GangZoneShowForPlayer(playerid, GZCasarao, 0xFFFFFF00); // GangZone de Cor Normal ( Branca ).
    }
pawn Код:
public GuerraCasarao(playerid)
{
      if(GetPlayerTeam(playerid) == brasil)
      {
          if(ProvocoCasarao[playerid] == 1)
          {
                if(IsPlayerInCasarao(playerid))
                {
                    GetPlayerName(playerid, NomeJFS, MAX_PLAYER_NAME);
                    format(CelulasJFS, sizeof(CelulasJFS), "[Info] %s da naзгo brasileira dominou o casarгo.",NomeJFS);
                    SendClientMessageToAll(color_brasil, CelulasJFS);
                    SendClientMessage(playerid, -1, "Vocк Dominou a GangZone do Casarгo.");
                    GangZoneStopFlashForAll(GZCasarao);
                    GangZoneShowForAll(GZCasarao, color_brasil);
                    Dominando[playerid] = 0;
                    ProvocoCasarao[playerid] = 0;
                    GuerranoCasarao = 0;
                    donoCasarao = GetPlayerTeam(playerid) == brasil;
                    KillTimer(TempoGuerraCasarao);
                    SetPlayerScore(playerid, GetPlayerScore(playerid) + 5);
                    new Str[12];
                    format(Str,sizeof(Str),"%d", GetPlayerScore(playerid)); // Vamos converter nosso score para um texto
                    TextDrawSetString(Textdraw3[playerid], Str); // Setar o texto da textdraw
                    TextDrawShowForPlayer(playerid, Textdraw3[playerid]); // Mostrar / atualizar o valor da nossa text
                    GameTextForPlayer(playerid,"~w~Dominado ~g~+5scr!",5000,3);
                    SetPlayerScore(GetPlayerTeam(playerid) == brasil, GetPlayerScore(GetPlayerTeam(playerid) == brasil + 1));
                    SendClientMessage(GetPlayerTeam(playerid) == brasil, color_red, "Vocкs receberam 1 pontos de score por seu time dominar o casarгo.");
                    return true;
                }
                else
                {
                   SendClientMessage(playerid, color_brasil, "Vocк nгo estб no casarгo.");
                   Dominando[playerid] = 0;
                   GangZoneStopFlashForAll(GZCasarao);
                   GangZoneShowForAll(GZCasarao, 0xC0C0C0AA);
                   ProvocoCasarao[playerid] = 0;
                   GuerranoCasarao = 0;
                   donoCasarao = 0;
                   KillTimer(TempoGuerraCasarao);
                   return true;
                }
          }
          return true;
      }
      if(GetPlayerTeam(playerid) == eua)
      {
          if(ProvocoCasarao[playerid] == 1)
          {
                if(IsPlayerInCasarao(playerid))
                {
                       GetPlayerName(playerid, NomeJFS, MAX_PLAYER_NAME);
                       format(CelulasJFS, sizeof(CelulasJFS), "[Info] %s da naзгo americana dominou o casarгo.",NomeJFS);
                       SendClientMessageToAll(color_eua, CelulasJFS);
                       SendClientMessage(playerid, -1, "Vocк dominou o Casarгo.");
                       GangZoneStopFlashForAll(GZCasarao);
                       GangZoneShowForAll(GZCasarao, color_eua);
                       Dominando[playerid] = 0;
                       ProvocoCasarao[playerid] = 0;
                       GuerranoCasarao = 0;
                       donoCasarao = GetPlayerTeam(playerid) == eua;
                       KillTimer(TempoGuerraCasarao);
                       SetPlayerScore(playerid, GetPlayerScore(playerid) + 5);
                       GameTextForPlayer(playerid,"~w~Dominado ~g~+ 5 scr!",5000,3);
                       new Str[12];
                       format(Str,sizeof(Str),"%d", GetPlayerScore(playerid)); // Vamos converter nosso score para um texto
                       TextDrawSetString(Textdraw3[playerid], Str); // Setar o texto da textdraw
                       TextDrawShowForPlayer(playerid, Textdraw3[playerid]); // Mostrar / atualizar o valor da nossa text
                       SetPlayerScore(GetPlayerTeam(playerid) == eua, GetPlayerScore(GetPlayerTeam(playerid) == eua + 1));
                       SendClientMessage(GetPlayerTeam(playerid) == eua, color_red, "Vocкs receberam 1 pontos de score por seu time dominar o casarгo.");
                       return true;
                }
                else
                {
                       SendClientMessage(playerid, color_eua, "Vocк nгo estб no casarгo.");
                       Dominando[playerid] = 0;
                       GangZoneStopFlashForAll(GZCasarao);
                       GangZoneShowForAll(GZCasarao, 0xC0C0C0AA);
                       ProvocoCasarao[playerid] = 0;
                       GuerranoCasarao = 0;
                       donoCasarao = 0;
                       KillTimer(TempoGuerraCasarao);
                       return true;
                }
          }
          return true;
      }
Etc.. nгo vo por tudo por que fica grande..

pawn Код:
CMD:dominar(playerid)
{
        if(GetPlayerTeam(playerid) == brasil) // se for vagos
        {
              if(!IsPlayerInCasarao(playerid)) return SendClientMessage(playerid, -1, "Vocк nгo estб em nenhum territуrio!");
              if(Dominando[playerid] == 1) return SendClientMessage(playerid, -1, "Vocк Jб Estб Dominando um Territorio.");
              if(GuerranoCasarao == 1) return SendClientMessage(playerid, -1, "Jб estб tendo uma guerra nesse territorio.");
              GetPlayerName(playerid, NomeJFS, MAX_PLAYER_NAME); // pegando o nome do playe
              format(CelulasJFS, sizeof(CelulasJFS), "[Info Gz] %s estб atacando o Casarгo",NomeJFS); // mensagem ao dominar
              SendClientMessageToAll(-1, CelulasJFS); // para todos a mensagem.
              SendClientMessage(playerid, -1, "Fique esperto, Todos os Terroristas Foi Avisados!");
              SendClientMessage(playerid, -1, "Espere 1 minuto para dominar estб area.");
              GangZoneFlashForAll(GZCasarao, color_brasil); // Ficar piscando para todos.
              Dominando[playerid] = 1; // setando o 'DOMINANDO' Para 1.
              ProvocoCasarao[playerid] = 1; // setando o 'ProvocoCasarao' Para 1.
              GuerranoCasarao = 1; // setando o 'GuerranoCasarao ' Para 1.
              TempoGuerraCasarao = SetTimerEx("GuerraCasarao", 3000, 0, "i", playerid); // SetTimer Atй dominar ( 1 MIN )
              return true;
        }
        if(GetPlayerTeam(playerid) == eua) // se for grove
        {
              if(!IsPlayerInCasarao(playerid)) return SendClientMessage(playerid, -1, "Vocк nгo estб em nenhum territуrio!");
              if(Dominando[playerid] == 1) return SendClientMessage(playerid, -1, "Vocк Jб Estб Dominando um Territorio.");
              if(GuerranoCasarao == 1) return SendClientMessage(playerid, -1, "Jб estб tendo uma guerra nesse territorio.");
              GetPlayerName(playerid, NomeJFS, MAX_PLAYER_NAME); // getando o nome do player.
              format(CelulasJFS, sizeof(CelulasJFS), "[Info Gz] %s estб atacando o Casarгo",NomeJFS); // mensagem
              SendClientMessageToAll(-1, CelulasJFS); // mensagem a cima para todos
              SendClientMessage(playerid, -1, "Fique esperto, Todos os Terroristas Foi Avisados!");
              SendClientMessage(playerid, -1, "Espere 1 minuto para dominar estб area.");
              GangZoneFlashForAll(GZCasarao, color_eua);// Ficar piscando para todos.
              Dominando[playerid] = 1; // setando o 'DOMINANDO' Para 1.
              ProvocoCasarao[playerid] = 1; // setando o 'ProvocoCasarao' Para 1.
              GuerranoCasarao = 1; // setando o 'GuerranoCasarao ' Para 1.
              TempoGuerraCasarao = SetTimerEx("GuerraCasarao", 3000, 0, "i", playerid);// SetTimer Atй dominar ( 1 MIN )
              return true;
        }
        return true;
}
Fiz Umas alteraзхes de acordo com o gm que iniciei.. Atй certo ponto conseguir, fazer eles dominarem normalmente sem problemas etc.

Mais com o sistema que tentei criar de avisar a todos do time, e dar 1 de score a todos do time.. Nгo tem jeito , eu jб tentei por Time[playerid] == eua; , entre outros.. E nгo funciona..

Na maioria das vezes em que tentei, acontecia :

Eu ia la e dominava pelo brasil

Quem ganhava o ponto para todo time, era o Estados Unidos e nгo o time que dominou..

Atй assim ja tentei : SetPlayerScore(donoCasarao, GetPlayerScore(donoCasarao) + 1); E NADA

Queria saber, em que parte estou errando, por ta acontecendo essas falhas dentro do jogo..
Quem puder encontrar , me ajudar ficaria eternamente grato *-*
Reply
#2

pawn Код:
// isto estб totalmente errado, se donocasarгo for igual a 1, ele irб dar o score apenas pro id 1.
 SetPlayerScore(donoCasarao, GetPlayerScore(donoCasarao) + 1);

//Enfim, para dar score para dar pontos a todos do seu time, apenas fazer um loop.

for(new i = 0; i != MAX_PLAYERS; ++i)
{
    if(time[i] == brasil) {
        SetPlayerScore(i,GetPlayerScore(i)+1);
    }
}
Reply
#3

Ok..
E para mandar a mensagem para todos do time,

loop tambйm?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)