Kala4ik
Компетентный
Добрый вечер, создал систему /capture на сервере. Но столкнулся с такой проблемой, при капте ганг зона мигает не той фракции которая забила вар, а после завершения нормально становится. И после рестарта сервера ганг зоны попросту не сохраняются и приходится заного бить капт .
PHP:
CMD:capture(playerid,params[])
{
new string[144];
new faction = Player[playerid][pMember];
if(Player[playerid][pMember] > 14 || Player[playerid][pMember] < 10)
return send(playerid, COLOR_RED,"[ОШИБКА] {FFFFFF}Захват зон доступен только бандам.");
if(Player[playerid][pRank] < 4)
return send(playerid,COLOR_GREY,"[ОШИБКА] {FFFFFF}Захват зон доступен с 4 ранга и выше.");
if(FrakCD != 0)
{
f(string,"Новый захват можно организовать через %d минут.",FrakCD/60);
return send(playerid,0xFFFFFFAA,string);
}
if(IsCapture == true)
return send(playerid,0xFF0000AA,"[ОШИБКА] {FFFFFF}На территории штата уже идет война, дождитесь ее окончания.");
if(Player[playerid][pRank] < 3)
return NoRights;
if(IsPlayerInBandOnline(faction) < 1)
return send(playerid,0xFF0000AA,"[ОШИБКА] {FFFFFF}Не достаточно союзников для захвата зоны.");
if(IsPlayerInAnyVehicle(playerid))
return send(playerid,0xFF0000AA,"[ОШИБКА] {FFFFFF}Команду нельзя использовать в транспорте.");
for(new i = 0; i < sizeof(GZInfo); i++)
{
if(IsPlayerToSquare(playerid,GZInfo[i][gCoords][0],GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3]) && GZInfo[i][gFrak] != 0 && ZoneOnBattle[i] == 0)
{
if(GZInfo[i][gFrak] == Player[playerid][pMember])return send(playerid,0xFF0000AA,"[ОШИБКА] {FFFFFF}Вы не можете напасть на свою территорию");
switch(GZInfo[i][gID])
{
case 6,24,31,41,46:
return send(playerid,0xFF0000AA,"[ОШИБКА] {FFFFFF}Данную территорию нельзя атаковать.");
}
if(IsPlayerInBandOnline(GZInfo[i][gFrak]) < 1)
{
f(string,"[ОШИБКА] {FFFFFF}У банды \"%s\" мало игроков, нужно минимум 3.",GetGangName(GZInfo[i][gFrak]));
return send(playerid,0xFF0000AA,string);
}
f(string,"[Война] {FFFFFF}%s %s борьбу за зону против \"%s\".",sendername(playerid),GetPVarInt(playerid, "Sex") == 1 ? ("начал") : ("начала"),GetGangName(GZInfo[i][gFrak]));
SendTeamM(faction,0xFFFF00AA,string);
f(string,"[Война] {FFFFFF}Ваша зона под атакой банды \"%s\".",FInfo[Player[playerid][pMember]][fName]);
SendTeamM(GZInfo[i][gFrak],0xFFFF00AA,string);
GangZoneFlashForAll(GangZone[i], GetGangZoneColor(GZInfo[i][gFrak]));
GZSafeTime[i] = 600;
FrakCD = 2000;
GZInfo[i][gNapad] = faction;
ZoneOnBattle[i] = 1;
GangInfo[faction][capture] = 1;
GangInfo[GZInfo[i][gFrak]][capture] = 1;
GangInfo[GZInfo[i][gFrak]][captureid] = faction;
GangInfo[faction][captureid] = faction;
GangInfo[faction][gangnumber] = 1;
GangInfo[GZInfo[i][gFrak]][gangnumber] = 0;
CaptureStart(faction, GZInfo[i][gFrak]);
break;
}
}
return 1;
}
PHP:
stock CaptureStart(familyone,familytwo)
{
new SCORE[64];
foreach(new i: Player)
{
if(Logged[i] == false) continue;
if(Player[i][pMember] == familyone || Player[i][pMember] == familytwo)
{
for(new s; s < 7; s++) PlayerTextDrawShow(i, CaptureTD[i][s]);
f(SCORE,"%s", GetGangName(familyone));
PlayerTextDrawSetString(i,CaptureTD[i][3],SCORE);
f(SCORE,"%s", GetGangName(familytwo));
PlayerTextDrawSetString(i,CaptureTD[i][4],SCORE);
PlayerTextDrawSetString(i,CaptureTD[i][5],"0");
PlayerTextDrawSetString(i,CaptureTD[i][6],"0");
drawcapt[i] = true;
IsCapture = true;
}
}
}
stock CaptureEnd(familyone,familytwo)
{
foreach(new i: Player)
{
if(Player[i][pMember] == familyone || Player[i][pMember] == familytwo)
{
for(new s; s < 7; s++) PlayerTextDrawHide(i, CaptureTD[i][s]);
drawcapt[i] = false;
}
}
}
PHP:
stock GzCheck()
{
new string[256];
if(GoMafiaWar == 1 && MZSafeTime == 0)
{
if(AtackMafiaPoint == DefenceMafiaPoint)
{
f(string,"[Фракция]{FFFFFF}Вы отстояли свой бизнес!");
SendTeamM(DefenceMafiaFraction,TAXI_COLOR,string);
f(string,"[Фракция]{FFFFFF}Вы не смогли захватить бизнес!");
SendTeamM(AtackMafiaFraction,TAXI_COLOR,string);
GangZoneStopFlashForAll(zons);
GangZoneHideForAll(zons);
OverWar();
WarTimer();
return true;
}
if(DefenceMafiaPoint > AtackMafiaPoint)
{
f(string,"[Фракция]{FFFFFF}Вы отстояли свой бизнес!");
SendTeamM(DefenceMafiaFraction,TAXI_COLOR,string);
f(string,"[Фракция]{FFFFFF}Вы не смогли захватить новый бизнес!");
SendTeamM(AtackMafiaFraction,TAXI_COLOR,string);
if(DefenceMafiaFraction == 5) lcnscore += 1;
if(DefenceMafiaFraction == 6) yakudzascore += 1;
if(DefenceMafiaFraction == 15) rmscore += 1;
GangZoneStopFlashForAll(zons);
GangZoneHideForAll(zons);
SaveInstrument();
OverWar();
WarTimer();
return true;
}
if(DefenceMafiaPoint < AtackMafiaPoint)
{
f(string,"[Фракция]{FFFFFF}Вы потеряли бизнес %s!",BiznesInfo[BiznesOnBattle-1][bMessage]);
SendTeamM(DefenceMafiaFraction,TAXI_COLOR,string);
f(string,"[Фракция]{FFFFFF}Вы завоевали бизнес %s!",BiznesInfo[BiznesOnBattle-1][bMessage]);
SendTeamM(AtackMafiaFraction,TAXI_COLOR,string);
if(AtackMafiaFraction == 5) lcnscore += 1;
if(AtackMafiaFraction == 6) yakudzascore += 1;
if(AtackMafiaFraction == 15) rmscore += 1;
BiznesInfo[BiznesOnBattle-1][bMafia] = AtackMafiaFraction;
GangZoneStopFlashForAll(zons);
GangZoneHideForAll(zons);
UpdateBiz(BiznesOnBattle-1);
SaveBiznes();
OverWar();
WarTimer();
SaveInstrument();
return true;
}
foreach(new i: Player)
{
if(Player[i][pLeader] == DefenceMafiaFraction || Player[i][pMember] == DefenceMafiaFraction || Player[i][pLeader] == AtackMafiaFraction || Player[i][pMember] == AtackMafiaFraction)
{
TextDrawHideForPlayer(i,MzScore[i]);
}
}
}
new SCORE[128];
for(new i = 0; i < sizeof(GZInfo); i++)
{
if(ZoneOnBattle[i] == 1 && IsCapture == true)
{
foreach(new x: Player)
{
if(Logged[x] == false && drawcapt[x] == true) continue;
if(Player[x][pMember] == GZInfo[i][gNapad] || Player[x][pMember] == GZInfo[i][gFrak])
{
for(new s; s < 7; s++) PlayerTextDrawShow(x, CaptureTD[x][s]);
format(SCORE, sizeof(SCORE), "%s", GetGangName(GZInfo[i][gNapad]));
PlayerTextDrawSetString(x, CaptureTD[x][3], SCORE);
format(SCORE, sizeof(SCORE), "%s", GetGangName(GZInfo[i][gFrak]));
PlayerTextDrawSetString(x, CaptureTD[x][4], SCORE);
format(SCORE, sizeof(SCORE), "%d", GangInfo[GZInfo[i][gNapad]][score]);
PlayerTextDrawSetString(x, CaptureTD[x][5], SCORE);
format(SCORE, sizeof(SCORE), "%d", GangInfo[GZInfo[i][gFrak]][score]);
PlayerTextDrawSetString(x, CaptureTD[x][6], SCORE);
GangZoneFlashForPlayer(x,GangZone[i],GetGangZoneColor(GZInfo[i][gNapad]));
drawcapt[x] = true;
}
}
}
if(ZoneOnBattle[i] == 1 && GZSafeTime[i] == 0)
{
if(GangInfo[GZInfo[i][gNapad]][score] == GangInfo[GZInfo[i][gFrak]][score])
{
new zh = GZInfo[i][gNapad];
new zj = i;
new zg = GZInfo[i][gFrak];
f(string,"[Война] {FFFFFF}Вы захватили новую территорию, которая находилась под контролем банды %s",GetGangName(zg));
SendTeamM(GZInfo[i][gNapad],TAXI_COLOR,string);
f(string,"[Война] {FFFFFF}Вам не удалось отстоять свою территорию, теперь эта территория под контролем банды %s",GetGangName(zh));
SendTeamM(GZInfo[i][gFrak],TAXI_COLOR,string);
ZoneOnBattle[i] = 0;
IsCapture = false;
CaptureEnd(GZInfo[i][gNapad], GZInfo[i][gFrak]);
GangInfo[GZInfo[i][gNapad]][captureid] =
GangInfo[GZInfo[i][gNapad]][capture] =
GangInfo[GZInfo[i][gNapad]][score] =
GangInfo[GZInfo[i][gFrak]][captureid] =
GangInfo[GZInfo[i][gFrak]][capture] =
GangInfo[GZInfo[i][gFrak]][score] =
GangInfo[GZInfo[i][gNapad]][gangnumber] =
GangInfo[GZInfo[i][gFrak]][gangnumber] = 0;
GZInfo[zj][gFrak] = zh;
GZInfo[zj][gNapad] = 0;
GangZoneStopFlashForAll(GangZone[zj]);
GangZoneHideForAll(GangZone[zj]);
GangZoneShowForAll(GangZone[zj],GetGangZoneColor(zj));
SaveGZ(zj);
}
else if(GangInfo[GZInfo[i][gNapad]][score] > GangInfo[GZInfo[i][gFrak]][score])
{
new zx = GZInfo[i][gNapad];
new zl = i;
f(string,"Вы захватили новую территорию, которая находилась под контролем банды %s", GetGangName(GZInfo[i][gFrak]));
SendTeamM(GZInfo[i][gNapad],COLOR_GREEN,string);
f(string,"Вам не удалось отстоять свою территорию, теперь эта территория под контролем банды %s",GetGangName(zx));
SendTeamM(GZInfo[i][gFrak],COLOR_RED,string);
ZoneOnBattle[zl] = 0;
CaptureEnd(GZInfo[zl][gNapad], GZInfo[zl][gFrak]);
GangInfo[GZInfo[zl][gNapad]][captureid] =
GangInfo[GZInfo[zl][gNapad]][capture] =
GangInfo[GZInfo[zl][gNapad]][score] =
GangInfo[GZInfo[zl][gFrak]][captureid] =
GangInfo[GZInfo[zl][gFrak]][capture] =
GangInfo[GZInfo[zl][gFrak]][score] =
GangInfo[GZInfo[i][gNapad]][gangnumber] =
GangInfo[GZInfo[i][gFrak]][gangnumber] = 0;
GZInfo[zl][gFrak] = zx;
GZInfo[zl][gNapad] = 0;
IsCapture = false;
GangZoneStopFlashForAll(GangZone[zl]);
GangZoneHideForAll(GangZone[zl]);
GangZoneShowForAll(GangZone[zl],GetGangZoneColor(zl));
SaveGZ(zl);
}
else if(GangInfo[GZInfo[i][gNapad]][score] < GangInfo[GZInfo[i][gFrak]][score])
{
new zx = GZInfo[i][gFrak];
new zl = i;
SendTeamM(GZInfo[i][gNapad],COLOR_RED,"Вам не удалось захватить новую территорию");
SendTeamM(GZInfo[i][gFrak],COLOR_GREEN,"Вы отстояли свою территорию");
ZoneOnBattle[zl] = 0;
CaptureEnd(GZInfo[zl][gNapad], GZInfo[zl][gFrak]);
GangInfo[GZInfo[zl][gNapad]][captureid] =
GangInfo[GZInfo[zl][gNapad]][capture] =
GangInfo[GZInfo[zl][gNapad]][score] =
GangInfo[GZInfo[zl][gFrak]][captureid] =
GangInfo[GZInfo[zl][gFrak]][capture] =
GangInfo[GZInfo[zl][gFrak]][score] =
GangInfo[GZInfo[i][gNapad]][gangnumber] =
GangInfo[GZInfo[i][gFrak]][gangnumber] = 0;
IsCapture = false;
GZInfo[zl][gFrak] = zx;
GZInfo[zl][gNapad] = 0;
GangZoneStopFlashForAll(GangZone[zl]);
GangZoneHideForAll(GangZone[zl]);
GangZoneShowForAll(GangZone[zl],GetGangZoneColor(zl));
SaveGZ(zl);
}
}
}
for(new i = 0; i < sizeof(GZInfo); i++)
{
for(new z = 0; z < 20; z++)
{
OnZONE[i][z] = 0;
}
}
return 1;
}
PHP:
stock SaveGZ(idx)
{
new string[124];
f(string,"UPDATE gangzone SET fraction = %i WHERE id = %i", GZInfo[idx][gFrak], idx);
mysql_tquery(mySQLDB,string,"","");
return 1;
}
publics LoadGZ()
{
new rows,fields;
cache_get_data(rows,fields);
if(rows)
{
for(new idx = 0; idx < rows; idx++)
{
GZInfo[idx][gID] = cache_get_row_int(idx,0,mySQLDB); // id
GZInfo[idx][gCoords][0] = cache_get_row_float(idx,1,mySQLDB); // ginfo1
GZInfo[idx][gCoords][1] = cache_get_row_float(idx,2,mySQLDB); // ginfo2
GZInfo[idx][gCoords][2] = cache_get_row_float(idx,3,mySQLDB); // ginfo3
GZInfo[idx][gCoords][3] = cache_get_row_float(idx,4,mySQLDB); // ginfo4
GZInfo[idx][gFrak] = cache_get_row_int(idx,5,mySQLDB); // fraction
GangZone[idx] = GangZoneCreate(GZInfo[idx][gCoords][0], GZInfo[idx][gCoords][1], GZInfo[idx][gCoords][2], GZInfo[idx][gCoords][3]);
ZoneOnBattle[idx] = 0;
GZSafeTime[idx] = 0;
}
}
printf("Ãàíã çîíû çàãðóæåíû.");
return 1;
}
