Mich@elson
Умник
Приветствую. Вообщем вырезал систему капта. Всё работает отлично, но одну банду могут закаптить одновременно другие банды.
Вот сама команда /capture
Вот сам GzCheck
Проверку на капт ставил, но ничего не помогает.
Вот сама команда /capture
PHP:
CMD:capture(playerid, params[])
{
if(PlayerInfo[playerid][pLogin] == 0) return true;
if(Flood[playerid] > 0) return SendClientMessage(playerid, 0xFFD5BBAA, "Не флуди!");
Flood[playerid] = 1;
if(FrakCD[PlayerInfo[playerid][pMember]] != 0) return SendClientMessage(playerid,COLOR_GREY,"Ваша банда уже воевала за территорию.");
if(!IsInAllowed(playerid)) return SendClientMessage(playerid,COLOR_GRAD1, "Вы не можете захватить территорию");
if(!CaptureTimes()) return SCM(playerid,0xAFAFAFAA,"В данное время захват невозможен. Только после PayDay");
new tmphour, tmpminute, tmpsecond;
gettime(tmphour, tmpminute, tmpsecond);
tmphour = shifthour;
for(new i = 0; i < 133; i++)
{
if(FrakCD[PlayerInfo[playerid][pMember]] != 1 && FrakCD[GZInfo[i][gFrakVlad]] != 1)
{
if(PlayerToKvadrat(playerid,GZInfo[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3]) && GZInfo[i][gFrakVlad] != PlayerInfo[playerid][pMember] && ZoneOnBattle[i]==0)
{
new playerss = 0;
for(new idx=0, m=0; idx<cvector_size(players); idx++)
{
m = cvector_get(players, idx);
if(PlayerInfo[m][pMember] == GZInfo[i][gFrakVlad]) playerss++;
}
if(!IsPlayerInBandOnline(GZInfo[i][gFrakVlad])) return SCM(playerid,0xAFAFAFAA, "Банда на которую вы собираетесь напасть нет в сети!");
if(FrakCD[GZInfo[i][gFrakVlad]] != 0) return SendClientMessage(playerid,COLOR_GRAD1,"Банда на которую Вы хотите напасть уже воевала в этом часу");
if(IsATerra(playerid)) return SCM(playerid,0xFFFFFFAA,"Нельзя захватить эту территорию");
FrakCD[GZInfo[i][gFrakVlad]] = 1;
FrakCD[PlayerInfo[playerid][pMember]] = 1;
format(YCMDstr,sizeof(YCMDstr),"[Внимание]: Ваша банда напала на территорию %s",GetGangName(GZInfo[i][gFrakVlad]));
SendFamilyMessage(PlayerInfo[playerid][pMember],0x00B953AA,YCMDstr);
format(YCMDstr,sizeof(YCMDstr), "[Внимание]: На Вашу территорию напала банда %s",GetGangName(PlayerInfo[playerid][pMember]));
SendFamilyMessage(GZInfo[i][gFrakVlad],0xFF8CEFAA,YCMDstr);
GangZoneFlashForAll(GZInfo[i][gID],GetGZColorF(PlayerInfo[playerid][pMember]));
SendClientMessage(playerid,COLOR_WHITE,"Территория будет мигать 5 минут. Победит банда, которая останется последней");
SendClientMessage(playerid,COLOR_WHITE,"Территория будет мигать до тех пор, пока на ней не останется 1 банда");
new string[128],str[64];
switch(GZInfo[i][gFrakVlad])
{
case 12: str="Ballas";
case 13: str="Vagos";
case 15: str="Grove";
case 17: str="Aztecas";
case 18: str="Rifa";
}
switch(PlayerInfo[playerid][pMember])
{
case 12: str2="Ballas";
case 13: str2="Vagos";
case 15: str2="Grove";
case 17: str2="Aztecas";
case 18: str2="Rifa";
}
format(string,128,"Банда %s начала войну против банды %s.",str2,str);
SendAdminMessage(0xff0000ff,string);
GangZoneFlashForAll(GZInfo[i][gID],GetGZColorF(PlayerInfo[playerid][pMember]));
GZSafeTime[i] = 600;
FrakCD[PlayerInfo[playerid][pMember]] = 3600;
GZInfo[i][gNapad] = PlayerInfo[playerid][pMember];
ZoneOnBattle[i] = 1;
captures++;
if(GzCheckOn == 0)
{
GzCheckTimer = SetTimer("GzCheck", 1000,1);
GzCheckOn = 1;
}
break;
}
}
}
return true;
}
Вот сам GzCheck
PHP:
stock GzCheck()
{
for(new i = 1; i <= TotalGz; i++)
{
new OnZONE[133][20];
if(ZoneOnBattle[i] == 1)
{
if(GZSafeTime[i] > 0)
{
GZSafeTime[i] --;
}
foreach(new x : Player)
{
if(PlayerInfo[x][pMember] == GZInfo[i][gNapad] || PlayerInfo[x][pMember] == GZInfo[i][gFrakVlad])
{
if(PlayerToKvadrat(x,GZInfo[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3]))
{
if(ZoneOnBattle[i] == 1)
{
OnZONE[i][PlayerInfo[x][pMember]] ++;
}
}
}
}
foreach(new x : Player)
{
new string[128];
if(PlayerInfo[x][pMember] == GZInfo[i][gNapad] || PlayerInfo[x][pMember] == GZInfo[i][gFrakVlad])
{
if(CaptureOn[x] == 0)
{
CaptureTextDraws(x);
PlayerTextDrawShow(x, CaptureTime[x]);
PlayerTextDrawShow(x, CaptureGang[x]);
PlayerTextDrawShow(x, CaptureWar[x]);
CaptureOn[x] = 1;
}
format(string,120,"~y~Time:~w~ %s",Convert(GZSafeTime[i]));
PlayerTextDrawSetString(x,CaptureTime[x],string);
format(string,120,"~y~%s:~w~ %d",GetGangName(GZInfo[i][gNapad]),OnZONE[i][GZInfo[i][gNapad]]);
PlayerTextDrawSetString(x,CaptureGang[x],string);
format(string,120,"~y~%s:~w~ %d",GetGangName(GZInfo[i][gFrakVlad]),OnZONE[i][GZInfo[i][gFrakVlad]]);
PlayerTextDrawSetString(x,CaptureWar[x],string);
}
}
new asd;
for(new x; x < 20; x++)
{
if(OnZONE[i][x] > 0 && IsInAllowedF(x) && GZSafeTime[i] <= 0) asd++;
}
if(asd == 1)
{
new string[200];
for(new z = 0; z < 20; z++)
{
if(OnZONE[i][z] > 0)
{
new zx, zl;
zx = z;
zl = i;
if(GZInfo[i][gFrakVlad] == z)
{
SendFamilyMessage(GZInfo[i][gFrakVlad],0x00B953AA,"Вы отстояли свою территорию");
SendFamilyMessage(GZInfo[i][gNapad],0xC56565AA,"Вам не удалось захватить территорию");
foreach(new y : Player)
{
if(PlayerInfo[y][pMember] == GZInfo[i][gNapad] || PlayerInfo[y][pMember] == GZInfo[i][gFrakVlad])
{
CaptureOn[y] = 0;
PlayerTextDrawDestroy(y, CaptureTime[y]);
PlayerTextDrawDestroy(y, CaptureGang[y]);
PlayerTextDrawDestroy(y, CaptureWar[y]);
}
}
}
else
{
SendFamilyMessage(GZInfo[i][gNapad], 0x00B953AA,"Вы взяли под свой контроль новую территорию");
for(new y = 1; y <= TotalGz; y++)
{
if(GZInfo[y][gFrakVlad] == 12) TotalGzB++;
if(GZInfo[y][gFrakVlad] == 13) TotalGzV++;
if(GZInfo[y][gFrakVlad] == 15) TotalGzG++;
if(GZInfo[y][gFrakVlad] == 17) TotalGzA++;
if(GZInfo[y][gFrakVlad] == 18) TotalGzR++;
}
switch(GZInfo[i][gNapad])
{
case 12:
{
format(string, sizeof(string), "Теперь Ваша банда будет получать каждый час %d вирт",TotalGzB*300);
SendFamilyMessage(GZInfo[i][gNapad], 0x00B953AA, string);
}
case 13:
{
format(string, sizeof(string), "Теперь Ваша банда будет получать каждый час %d вирт",TotalGzV*300);
SendFamilyMessage(GZInfo[i][gNapad], 0x00B953AA, string);
}
case 15:
{
format(string, sizeof(string), "Теперь Ваша банда будет получать каждый час %d вирт",TotalGzG*300);
SendFamilyMessage(GZInfo[i][gNapad], 0x00B953AA, string);
}
case 17:
{
format(string, sizeof(string), "Теперь Ваша банда будет получать каждый час %d вирт",TotalGzA*300);
SendFamilyMessage(GZInfo[i][gNapad], 0x00B953AA, string);
}
case 18:
{
format(string, sizeof(string), "Теперь Ваша банда будет получать каждый час %d вирт",TotalGzR*300);
SendFamilyMessage(GZInfo[i][gNapad], 0x00B953AA, string);
}
}
SendFamilyMessage(GZInfo[i][gFrakVlad], 0xC56565AA,"Вы потеряли контроль одной из своих территорий");
foreach(new y : Player)
{
if(PlayerInfo[y][pMember] == GZInfo[i][gNapad] || PlayerInfo[y][pMember] == GZInfo[i][gFrakVlad])
{
CaptureOn[y] = 0;
PlayerTextDrawDestroy(y, CaptureTime[y]);
PlayerTextDrawDestroy(y, CaptureGang[y]);
PlayerTextDrawDestroy(y, CaptureWar[y]);
}
}
}
captures --;
ItsWar[GZInfo[i][gNapad]] = -1;
ItsWar[GZInfo[i][gFrakVlad]] = -1;
ZoneOnBattle[zl] = 0;
GZInfo[zl][gNapad] = 0;
GZInfo[zl][gFrakVlad] = zx;
GangZoneStopFlashForAll(GZInfo[zl][gID]);
GangZoneHideForAll(GZInfo[zl][gID]);
GangZoneShowForAll(GZInfo[zl][gID],GetGangZoneColor(zl));
SaveGZ(zl);
if(captures == 0)
{
KillTimer(GzCheckTimer);
GzCheckOn = 0;
}
break;
}
}
}
}
}
}
Проверку на капт ставил, но ничего не помогает.
PHP:
if(FrakCD[GZInfo[i][gFrakVlad]] == 1 || FrakCD[PlayerInfo[playerid][pMember]] == 1) return SendClientMessage(playerid,COLOR_GREY,"Банда уже воюет за территорию");
Последнее редактирование:
