Me ajuda aqui amigгo meu sistema de dominio й esse aqui me diz como faзo pra deixar do jeito que te expliquei ai
PHP код:
//~ Dominio
#define DOMINIO_POS 5.0
#define MAX_TERRITORIOS 7
enum info
{
Float:dominioX,
Float:dominioY,
Float:dominioZ,
tNome[64],
tCor,
}
//
new Dominio[MAX_TERRITORIOS][info] =
{
{0.0, 0.0, 0.0, "Parque Uniгo", COLOR_RED},
{0.0, 0.0, 0.0, "Jacarй", COLOR_RED},
{0.0, 0.0, 0.0, "Vila Vintйm", COLOR_BLUE},
{0.0, 0.0, 0.0, "Batan", COLOR_BLUE},
{0.0, 0.0, 0.0, "Complexo Da Marй", COLOR_YELLOW},
{0.0, 0.0, 0.0, "Para Paz", COLOR_YELLOW},
{0.0, 0.0, 0.0, "Carobinha", COLOR_GREEN}
};
//
//~ Sistema de dominar
new
StringGZ[128],
SaiuPos[MAX_PLAYERS],
SaiuPos2[MAX_PLAYERS],
Bar:BarraDominando[MAX_PLAYERS] = {INVALID_BAR_ID, ...},
DoisMinutos[MAX_PLAYERS],
bool:PlayerDominado[MAX_PLAYERS],
Text3D:Gangs[sizeof(Dominio)],
DominadaMomento[sizeof(Dominio)],
Dominando[sizeof(Dominio)]
;
PHP код:
//=============================== [ COMMANDS ] =================================
//~ SISTEMA DE DOMINAR
CMD:dominar(playerid, params[])
{
// if(!strcmp(jDominio[Player[playerid][pTorcida]][tNome], Dominados(playerid))) return true; // SE Й DA MESMA TORCIDA
// if(MembrosProximos(playerid) < 5) return SendClientMessage(playerid, COR_ERRO, "ERRO: Vocк sу pode dominar com no mнnimo 5 membros prуximos."); // QUANTIDADE MINIMA DE PESSOAS PARA DOMINAR
for(new i; i < sizeof(Dominio); i ++)
{
if(IsPlayerInRangeOfPoint(playerid, DOMINIO_POS, Dominio[i][Spawn][0], Dominio[i][Spawn][1], Dominio[i][Spawn][2])) // SE ESTIVER PERTO DOS LOCAIS
{
if(Dominando[i])
return SendClientMessage(playerid, COLOR_RED, ""TAG_ERRO" Esse local jб estб sendo dominado ou foi dominado recentemente."), true;
else
{
Dominando[i] = 1;
SendClientMessage(playerid, COLOR_TEAL, ""TAG_INFO" Aguarde 2 segundos no mesmo local para comeзar a dominar.");
return SetTimerEx("AguardeDo", 2 , false, "ii", i, playerid);
}
}
}
return 1;
}
//Continuaзгo Dominio
Dominados(playerid)
{
new rr[128];
for(new i; i < sizeof(Dominio); i++)
{
if(IsPlayerInRangeOfPoint(playerid, DOMINIO_POS, Dominio[i][Spawn][0], Dominio[i][Spawn][1], Dominio[i][Spawn][2]))
format(rr, sizeof(rr), "%s", Dominio[i][tNome]);
}
return rr;
}
PHP код:
forward AguardeDo(GZ, playerid);
public AguardeDo(GZ, playerid)
{
if(Dominando[GZ] == 1)
{
if(!IsPlayerInRangeOfPoint(playerid, DOMINIO_POS, Dominio[GZ][Spawn][0], Dominio[GZ][Spawn][1], Dominio[GZ][Spawn][2]))
{
Dominando[GZ] = 0;
SCM(playerid, COLOR_RED, ""TAG_ERRO" Vocк saiu da бrea de dominio.");
return true;
}
PlayerDominado[playerid] = true;
SCMToAll(COLOR_TEAL, ""TAG_SERVE" O %s estб tentando dominar o local da {%06x}%s.", Nome(playerid), Dominio[GZ][tCor] >>> 8, Dominados(playerid));
SendClientMessage(playerid, COLOR_TEAL, "Aguarde 2 minutos no local para dominar. (Distвncia mбxima: 5 metros)");
SetPlayerCheckpoint(playerid, Dominio[GZ][Spawn][0], Dominio[GZ][Spawn][1], Dominio[GZ][Spawn][2], 10.0);
SaiuPos[playerid] = SetTimerEx("DominandoCP2", 2*60000, false, "ii", GZ, playerid);
SaiuPos2[playerid] = SetTimerEx("SaiuPosicao", 1000, true, "ii", GZ, playerid);
BarraDominando[playerid] = CreateProgressBar(170.00, 424.00, 279.50, 3.50, -1, 120.0);
ShowProgressBarForPlayer(playerid, BarraDominando[playerid]);
}
return true;
}
//
forward SaiuPosicao(GZ, playerid);
public SaiuPosicao(GZ, playerid)
{
if(Dominando[GZ])
{
if(!IsPlayerInRangeOfPoint(playerid, DOMINIO_POS, Dominio[GZ][Spawn][0], Dominio[GZ][Spawn][1], Dominio[GZ][Spawn][2]))
{
PlayerDominado[playerid] = false;
SCMToAll(-1, "O %s {FF0000}fracassou{FFFFFF} em dominar o local da {%06x}%s.", Nome(playerid), Dominio[GZ][tCor] >>> 8, Dominio[GZ][tNome]);
DisablePlayerCheckpoint ( playerid ) ;
DoisMinutos[playerid] = 0;
DestroyProgressBar(BarraDominando[playerid]);
KillTimer(SaiuPos[playerid]);
KillTimer(SaiuPos2[playerid]);
Dominando[GZ] = 0;
SendClientMessage(playerid, COLOR_RED, "Vocк saiu da posiзгo...");
return true;
}
}
DoisMinutos[playerid] ++;
if(DoisMinutos[playerid] == 60)
SetProgressBarColor(BarraDominando[playerid], 0xFF0000FF);
if(DoisMinutos[playerid] == 75)
SetProgressBarColor(BarraDominando[playerid], 0xEE0000FF);
if(DoisMinutos[playerid] == 90)
SetProgressBarColor(BarraDominando[playerid], 0xCD0000FF);
if(DoisMinutos[playerid] == 109)
SetProgressBarColor(BarraDominando[playerid], 0x8B0000FF);
if(DoisMinutos[playerid] == 114 || DoisMinutos[playerid] == 116 || DoisMinutos[playerid] == 118 )
{
HideProgressBarForPlayer(playerid, BarraDominando[playerid]);
return true;
}
if(DoisMinutos[playerid] == 115 || DoisMinutos[playerid] == 117 || DoisMinutos[playerid] == 119 )
ShowProgressBarForPlayer(playerid, BarraDominando[playerid]);
SetProgressBarValue(BarraDominando[playerid], DoisMinutos[playerid]);
UpdateProgressBar(BarraDominando[playerid], playerid);
return true;
}
forward DominandoCP2(playerid);
public DominandoCP2(playerid)
{
if(Dominando[playerid])
{
if(IsPlayerInRangeOfPoint(playerid, DOMINIO_POS, Dominio[playerid][Spawn][0], Dominio[playerid][Spawn][1], Dominio[playerid][Spawn][2]))
{
SetTimerEx("VoltarDominio", 15*60000, false, "i", playerid);
format(StringGZ, sizeof(StringGZ), "%s\nDominio: {e8e8e8}%s", Dominio[playerid][tNome], Nome(playerid));
Update3DTextLabelText(Gangs[playerid], Dominio[playerid][tCor], StringGZ);
}
}
DominadaMomento[playerid] = 1;
DisablePlayerCheckpoint ( playerid ) ;
DoisMinutos[playerid] = 0;
DestroyProgressBar(BarraDominando[playerid]);
PlayerDominado[playerid] = false;
KillTimer(SaiuPos2[playerid]);
SCMToAll(-1, "O %s {26cf0a}dominou {FFFFFF}o local da {%06x}%s.", Nome(playerid), Dominio[playerid][tCor] >>> 8, Dominados(playerid));
for(new money; money < MAX_PLAYERS; money ++)
{
if(DistanciaEntreDoisPlayers(playerid, money) <= 20)
if(Player[money][Faccoes] == Player[playerid][Faccoes])
GivePlayerMoney(money, 500),
SendClientMessage(money, COLOR_TEAL, "Vocк e quem estava perto ganhou 500R$ pelo dominio!");
}
return true;
}