Alex_Lenez
Специалист
Урок нельзя считать как пособие. Было сделано на быструю руку и было выложено для осмотра критики и в большей степени для своих целей! 
И так начну. У каждого была ситуация когда при захвате территории нужно было сделать проверку на то, прикасается ли вражеская территория к своей или нет . Если такую проверку не сделать то захватывать зоны можно будет по всей карте а это не прикольно выглядит!
Внимание пример с моего мода RLS, если нужно для другого мода, пишите в комментариях!
Сама функция:
Команда с Данной функцией:
И так начну. У каждого была ситуация когда при захвате территории нужно было сделать проверку на то, прикасается ли вражеская территория к своей или нет . Если такую проверку не сделать то захватывать зоны можно будет по всей карте а это не прикольно выглядит!
Внимание пример с моего мода RLS, если нужно для другого мода, пишите в комментариях!
Сама функция:
PHP:
stock AroundPlace(playerid, i)
{
new res = sizeof(GZInfo) / 8;
if(GZInfo[i + 1][gFrakVlad] == PI[playerid][pMember]
|| GZInfo[i + res][gFrakVlad] == PI[playerid][pMember]
|| GZInfo[i - 1][gFrakVlad] == PI[playerid][pMember]
|| GZInfo[i - res][gFrakVlad] == PI[playerid][pMember])
return true;
return false;
}
Команда с Данной функцией:
PHP:
CMD:capture(playerid, params[])
{
if(FrakCD[PI[playerid][pMember]] != 0) return SendClientMessage(playerid,-1,"Ваша банда еще не окрепла с момента последнего захвата. Отдыхайте...");
if(!IsInAllowed(playerid)) return SendClientMessage(playerid,COLOR_GRAD1,"Вы не можете захватить территорию");
new tmphour, tmpminute, tmpsecond;
gettime(tmphour, tmpminute, tmpsecond);
tmphour = shifthour;
if(ghour >= 0 && ghour <=6) return SendClientMessage(playerid, COLOR_GRAD1, "В ночное время захват запрещён!");
if(GangWar == 1) return SendClientMessage(playerid, COLOR_REDD, "В данный момент захват запрещён (( Идёт война ... ))!");
for(new i = 0; i< 120; i++)
{
if(PlayerToKvadrat(playerid,GZInfo[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3]) && GZInfo[i][gFrakVlad] != PI[playerid][pMember] && ZoneOnBattle[i]==0)
{
if(!AroundPlace(playerid, i)) return SendClientMessage(playerid, COLOR_REDD, "Можно воевать за территории только те что вокруг своей!"); // Тут применяется данная функция
format(pstring[playerid],MAX_STRING,"%s спровоцировал войну за территорию против банды %s",Name(playerid),GetGangName(GZInfo[i][gFrakVlad]));
SendFamilyMessage(PI[playerid][pMember],0x00D900C8,pstring[playerid]);
format(pstring[playerid],MAX_STRING,"[Внимание]: На вашу территорию напала банда %s",GetGangName(PI[playerid][pMember]));
SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_GREEN,pstring[playerid]);
SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_WHITE,"До начала захвата территории осталось 5 минут(ы). Победит банда, которая останется последней");
SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_WHITE,"Территория будет мигать до тех пор, пока на ней не останется 1 банда");
SendFamilyMessage(PI[playerid][pMember],COLOR_WHITE,"До начала захвата территории осталось 5 минут(ы). которая останется последней");
SendFamilyMessage(PI[playerid][pMember],COLOR_WHITE,"Территория будет мигать до тех пор, пока на ней не останется 1 банда");
GangZoneFlashForAll(GZInfo[i][gID],GetGZColorF(PI[playerid][pMember]));
GZSafeTime[i] = 300;
FrakCD[PI[playerid][pMember]] = 600;
GZInfo[i][gNapad] = PI[playerid][pMember];
ZoneTimer[i] = 720;
ZoneOnBattle[i] = 1;
GangWar = 1;
GZTimer = SetTimer("GzCheck",1000,true);
break;
}
}
return true;
}
