Представьте, что вы администратор только что открывшегося сервера! Вы выдаете лидерку какой-нибудь банды и ее лидер без всяких зазрений совести начинает захватывать гангзоны банд, у которых еще даже лидера нет! Это легко исправить просто поставив систему проверки на онлайн членов банд! Это значит, что зону будет нельзя атаковать, если игроков банды, которая ее контролируют нет в онлайне:ninja:. Приступим
Находим команду "/capture" (рассмотрим на примере этой):
PHP код:
if(!strcmp(cmd,"/capture",true))
{
if(FrakCD[PlayerInfo[playerid][pMember]] == 0)
{
if(!IsInAllowed(playerid)) return SendClientMessage(playerid,COLOR_GRAD1,"Вы не можете захватить территорию");
new tmphour, tmpminute, tmpsecond;
gettime(tmphour, tmpminute, tmpsecond);
tmphour = shifthour;
for(new i = 0;i<MAX_GANGZONES;i++)
{
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)
{
if(FrakCD[GZInfo[i][gFrakVlad]] != 0) return SendClientMessage(playerid,COLOR_GRAD1,"Банда на которую вы хотите напасть уже воевала в этом часу");
if(PlayerInfo[playerid][pMember] == GZInfo[i][gFrakVlad]) return SendClientMessage(playerid,COLOR_GRAD1,"Нельзя напасть на свою территорию");
if(StartBatleGZ == 1) return SendClientMessage(playerid, COLOR_GRAD1, "Ваша банда уже воевала/воюет войну за территорию");
if(IsATerra(playerid)) return SendClientMessage(playerid,COLOR_WHITE,"Нельзя захватить эту территорию");
if(ItsWar[GZInfo[i][gFrakVlad]] == true) return SendClientMessage(playerid,COLOR_GRAD1,"Ваша банда уже воюет/воевала за территорию");
if(ItsWar[PlayerInfo[playerid][pMember]] == true) return SendClientMessage(playerid,COLOR_GRAD1,"Ваша банда уже воюет/воевала за территорию");
format(string,sizeof(string),"[Внимание]: Ваша банда напала на территорию %s",GetGangName(GZInfo[i][gFrakVlad]));
SendFamilyMessage(PlayerInfo[playerid][pMember],0x1DAD8EAA,string);
SendClientMessage(playerid,COLOR_WHITE,"Территория будет мигать 6 минут. Победит банда, которая останется последней");
SendClientMessage(playerid,COLOR_WHITE,"Территория будет мигать до тех пор, пока на ней не останется 1 банда");
format(string,sizeof(string),"[Внимание]: На вашу территорию напала банда %s",GetGangName(PlayerInfo[playerid][pMember]));
SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_RED,string);
GangZoneFlashForAll(GZInfo[i][gID],COLOR_REDD);
FrakCD[PlayerInfo[playerid][pMember]] = 3000;
GZInfo[i][gNapad] = PlayerInfo[playerid][pMember];
GZSafeTime[i] = 360;
ZoneOnBattle[i] = 1;
ItsWar[GZInfo[i][gNapad]] = true;
ItsWar[GZInfo[i][gFrakVlad]] = true;
break;
}
}
}
}
Теперь вам необходимо вставить сюда это:
PHP код:
if(!IsPlayerInBandOnline(GZInfo[i][gFrakVlad])) return SendClientMessage(playerid,COLOR_LIGHTRED,"Зону банды которую вы хотите атаковать нет в онлайне!");
Должно получиться вот так:
PHP код:
if(!strcmp(cmd,"/capture",true))
{
if(FrakCD[PlayerInfo[playerid][pMember]] == 0)
{
if(!IsInAllowed(playerid)) return SendClientMessage(playerid,COLOR_GRAD1,"Вы не можете захватить территорию");
new tmphour, tmpminute, tmpsecond;
gettime(tmphour, tmpminute, tmpsecond);
tmphour = shifthour;
for(new i = 0;i<MAX_GANGZONES;i++)
{
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)
{
if(!IsPlayerInBandOnline(GZInfo[i][gFrakVlad])) return SendClientMessage(playerid,COLOR_LIGHTRED,"Зону банды которую вы хотите атаковать нет в онлайне!"); //Вот эта строка!
if(FrakCD[GZInfo[i][gFrakVlad]] != 0) return SendClientMessage(playerid,COLOR_GRAD1,"Банда на которую вы хотите напасть уже воевала в этом часу");
if(PlayerInfo[playerid][pMember] == GZInfo[i][gFrakVlad]) return SendClientMessage(playerid,COLOR_GRAD1,"Нельзя напасть на свою территорию");
if(StartBatleGZ == 1) return SendClientMessage(playerid, COLOR_GRAD1, "Ваша банда уже воевала/воюет войну за территорию");
if(IsATerra(playerid)) return SendClientMessage(playerid,COLOR_WHITE,"Нельзя захватить эту территорию");
if(ItsWar[GZInfo[i][gFrakVlad]] == true) return SendClientMessage(playerid,COLOR_GRAD1,"Ваша банда уже воюет/воевала за территорию");
if(ItsWar[PlayerInfo[playerid][pMember]] == true) return SendClientMessage(playerid,COLOR_GRAD1,"Ваша банда уже воюет/воевала за территорию");
format(string,sizeof(string),"[Внимание]: Ваша банда напала на территорию %s",GetGangName(GZInfo[i][gFrakVlad]));
SendFamilyMessage(PlayerInfo[playerid][pMember],0x1DAD8EAA,string);
SendClientMessage(playerid,COLOR_WHITE,"Территория будет мигать 6 минут. Победит банда, которая останется последней");
SendClientMessage(playerid,COLOR_WHITE,"Территория будет мигать до тех пор, пока на ней не останется 1 банда");
format(string,sizeof(string),"[Внимание]: На вашу территорию напала банда %s",GetGangName(PlayerInfo[playerid][pMember]));
SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_RED,string);
GangZoneFlashForAll(GZInfo[i][gID],COLOR_REDD);
FrakCD[PlayerInfo[playerid][pMember]] = 3000;
GZInfo[i][gNapad] = PlayerInfo[playerid][pMember];
GZSafeTime[i] = 360;
ZoneOnBattle[i] = 1;
ItsWar[GZInfo[i][gNapad]] = true;
ItsWar[GZInfo[i][gFrakVlad]] = true;
break;
}
}
}
}
Теперь ко всем stock мы добавляем:
PHP код:
stock IsPlayerInBandOnline(bandid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(PlayerInfo[i][pMember] == bandid || PlayerInfo[i][pLeader] == bandid)
return true;
}
return false;
}
Все готово, на всех РЛС модах и выходцах из РЛС идет 100%
Вырезал из какого-то старого мода названия не помню
так как не было указано автора тоже не было...
Надеюсь это вам поможет =)