[Ajuda] Sistema de UAV para todo o time
#1

Bom, fiz um sistema de UAV baseado num tutorial que vi aqui no fуrum. Estб funcionando, mas:
>Nгo manda a mensagem (UAV ONLINE) a todos do time.
>Quando zera o timer do UAV, desativa todos os uav ativados, atй do time inimigo.
>Queria que quando usassem o comando /uav com o uav ativo, deveria aparecer uma mensagem "UAV ja esta ativado, restam x segundos", OU setar o timer do UAV em 60s de novo.
pawn Код:
if (strcmp("/UAV",cmdtext, true) == 0)
        {
            if (Killspree[playerid]<3) return SendClientMessage(playerid, COLOR_GREY, "Vocк nгo pode ativar o UAV. (Somente apуs 3 killspree)");
            if (UAV[playerid]==1)
            {
//code para mandar a mensagem do tempo que ainda falta para ficar offline.
            }
            if (dUAV[playerid]==1)
            {
                for (new i = 0; i < MAX_PLAYERS; i++)
                {
                    if (GetPlayerTeam(playerid) == GetPlayerTeam(i))
                    {
                        UAV[i]=1;
                        SendClientMessage(i, COLOR_GREEN, "|| UAV ONLINE ||");
                        SetTimer("uavoffline", 60000, false);
                        dUAV[i]=0;
                    }
                }
            }
        }
forward uavoffline();
public uavoffline()
{
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
        if (UAV[i] ==1)
        {
            UAV[i]=0;
            SendClientMessage(i, COLOR_WHITE, "UAV OFFLINE");
        }
    }
    return 1;
}
Reply
#2

Й tгo dificil assim?
Reply
#3

nao entendi nada doke vc disse.
Reply
#4

Este seu UAV й para ver os jogadores do seu time ou os dos adversбrios?
Reply
#5

Sistema de UAV, parecido com o do jogo Call of Duty. Ao atingir 3 killspree, vc usa um comando /uav, e ativa o UAV para todos do time. (Duraзгo de 60s)
O mesmo nada mais й do que um RADAR que mostra os inimigos prуximos de vocк no minimap.

"BUG":
Se eu ativar o uav agora, comeзarб a contar os 60 segundos, mas se vocк ativar faltando 10 segundos para o meu timer zerar, vocк tambйm tem seu UAV desativado.
pawn Код:
forward uavoffline();
public uavoffline()
{
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
        if (UAV[i] ==1)
        {
            UAV[i]=0;
            SendClientMessage(i, COLOR_WHITE, "UAV OFFLINE");
        }
    }
    return 1;
}
Resumindo, preciso saber como faзo um timer para cada vez que o radar for ativado. Para que nгo aconteзa o que acabei de citar.

edit:
Quote:

Este seu UAV й para ver os jogadores do seu time ou os dos adversбrios?

Inimigos, jogadores do mesmo time sempre veem uns aos outros.
Reply
#6

Nao estou conseguindo ler todo o cуdigo porque estou no celular, mas tenta criar uma variбvel global para definir o timer e no final do cуdigo, poe killtimer(''nomedotimer'');
Reply
#7

Sгo quantos times?
Reply
#8

2 times. (por enquanto)
Reply
#9

pawn Код:
#define MAX_TEAMS 3

new
    bool:UAV[MAX_TEAMS];
   


    if(strcmp("/UAV",cmdtext, true) == 0)
    {
        if(Killspree[playerid] < 3)      return SendClientMessage(playerid,0xFF0000FF, "ERROR: Vocк nгo pode ativar o UAV. (Somente apуs 3 killspree)");
        if(UAV[GetPlayerTeam(playerid)]) return SendClientMessage(playerid,0xFF0000FF,"ERROR: Sua equipe jб estб com o UAV ligado.");
       
        new
            team = GetPlayerTeam(playerid);
           
        for(new ii = 0,sz = GetMaxPlayers(); ii != sz; ii++)
        {
            if(GetPlayerTeam(ii) == team && IsPlayerConnected(ii))
            {
                for(new en = 0; en != sz; en++)
                {
                    if(GetPlayerTeam(en) != team && IsPlayerConnected(en))
                    {
                        SetPlayerMarkerForPlayer(ii,en,0xFF0000FF);
                    }
                }
                SendClientMessage(ii,0x00C000FF,"INFO: O UAV estб ativado. Se desligando em 1 minuto.");
            }
        }
        UAV[time] = true;
        SetTimerEx("TurnOff",1000,false,"i",time);
    }
    return 1;

       
TurfOff(teamid);
public TurfOff(teamid)
{
    for(new ii = 0,sz = GetMaxPlayers(); ii != sz; ii++)
    {
        if(GetPlayerTeam(ii) == teamid && IsPlayerConnected(ii))
        {
            for(new en = 0; en != sz; en++)
            {
                if(GetPlayerTeam(en) != teamid && IsPlayerConnected(en))
                {
                    SetPlayerMarkerForPlayer(ii,en,0x00000000);
                }
            }
            SendClientMessage(ii,0x00C000FF,"INFO: O UAV foi desativado.");
        }
    }
    UAV[teamid] = false;
    return 1;
}
Quando almentar os times tem que almentar o MAX_TEAMS tmb, nгo compilei entгo qualquer erro me avise.
Reply
#10

Ae velho, dei uma adaptada no code e funcionou. Valeu!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)