Redo
04.12.2016, 22:44
Помогите доделать систему каптов,хуть я и знаю математику на базе 9 классов,но мне это еще как-то сложно..,а именно: Я пытался сделать проверку на близ стоящие территории..То есть что бы когда игрок писал команду /capture в квадрате который не соприкасается с территорий его банды ему писала типо "Данную территорию нельзя завоевать. Нужно находиться возле своей территории!"
Вот код
CMD:capture(playerid, params[])
{
if(!pTemp[playerid][pLogined]) return 1;
new string[256];
if(IsAGang(playerid))
{
new h, ZonePos[MAX_PLAYERS]; gettime(h);
if(h < 13 || h > 23 ) return SendClientMessage(playerid, CGRAY, "Использовать команду можно только с 13:00 до 23:00");
if(pData[playerid][pRank] < 7) return SendClientMessage(playerid,COLOR_LIGHTRED,"Функция доступна с 7 ранга и выше!");
new faction = pData[playerid][pFraction];
if(!IsInAllowed(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Ваша банда уже учавствует в захвате зон!");
if(zGangTime[faction] <= 0) return SendClientMessage(playerid, -1, "Сегодня ваша банда больше не может учавствовать в захвате");
new bool: dostup = false;
for(new i; i < MAX_GZONE;i++)
{
if(PlayerToKvadrat(playerid,GZMZ[i][gCoords][0], GZMZ[i][gCoords][1],GZMZ[i][gCoords][2],GZMZ[i][gCoords][3]) && ZoneOnBattle[i] == 0)
{
ZonePos[playerid] = i;
switch(i)
{
case 1, 2, 3, 4, 5: dostup = true;
}
if(dostup == true) return SendClientMessage(playerid, COLOR_GREY, "Эта основная территория банды её нельзя захватить");
}
}
for(new i; i < MAX_GZONE;i++)
{
if ((PlayerToKvadrat(playerid,GZMZ[ZonePos[playerid]][gCoords][0], GZMZ[ZonePos[playerid]][gCoords][1],GZMZ[i][gCoords][2],GZMZ[i][gCoords][3]) || PlayerToKvadrat(playerid,GZMZ[i][gCoords][0], GZMZ[i][gCoords][1],GZMZ[ZonePos[playerid]][gCoords][2],GZMZ[ZonePos[playerid]][gCoords][3]))&& ZoneOnBattle[i] == 0)
{
if(GZMZ[i][gFrak] != pData[playerid][pFraction]) return SendClientMessage(playerid, COLOR_GREY, "Данную территорию нельзя завоевать. Нужно находится возле своей территории!");
}
}
if(FrakCD > 0)
{
new fd[128];
format(fd,128,"До следующего захвата территори %d минут.", floatround(FrakCD/60));
SendClientMessage(playerid,CGRAY,fd);
return 1;
}
for(new i=1;i<=TOTALGZ;i++)
{
if(PlayerToKvadrat(playerid,GZMZ[i][gCoords][0], GZMZ[i][gCoords][1],GZMZ[i][gCoords][2],GZMZ[i][gCoords][3]) && ZoneOnBattle[i] == 0)
{
if(IsPlayerInBandOnline(faction) < 1) return SendMes(playerid,COLOR_GREY, "В вашей банде мало игроков онлайн!");
if(IsPlayerInBandOnline(GZMZ[i][gFrak]) < 1) return SendMes(playerid,COLOR_GREY, "У банды \"%s\" мало игроков!", GetGangName(GZMZ[i][gFrak]));
if(IsCapture == 1) return SendClientMessage(playerid, COLOR_GREY, "Уже происходит захват одной из зон. Дождитесь окончания!");
format(string, 2024, ""W"Эта территория принадлежит %s\nВы уверены что хотите её захватить?",GetGangName(GZMZ[i][gFrak]));
ShowPlayerDialog(playerid,dZaxvat,DIALOG_STYLE_MSGBOX,"{F3FF02}Захват территории",string,"Да","Нет");
}
}
}
return true;
}
Конкретно сейчас фразу "Данную территорию нельзя завоевать. Нужно находиться возле своей территории!" пишет когда я пытаюсь захватить любой квадрат..даже своей банды...
Вот код
CMD:capture(playerid, params[])
{
if(!pTemp[playerid][pLogined]) return 1;
new string[256];
if(IsAGang(playerid))
{
new h, ZonePos[MAX_PLAYERS]; gettime(h);
if(h < 13 || h > 23 ) return SendClientMessage(playerid, CGRAY, "Использовать команду можно только с 13:00 до 23:00");
if(pData[playerid][pRank] < 7) return SendClientMessage(playerid,COLOR_LIGHTRED,"Функция доступна с 7 ранга и выше!");
new faction = pData[playerid][pFraction];
if(!IsInAllowed(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Ваша банда уже учавствует в захвате зон!");
if(zGangTime[faction] <= 0) return SendClientMessage(playerid, -1, "Сегодня ваша банда больше не может учавствовать в захвате");
new bool: dostup = false;
for(new i; i < MAX_GZONE;i++)
{
if(PlayerToKvadrat(playerid,GZMZ[i][gCoords][0], GZMZ[i][gCoords][1],GZMZ[i][gCoords][2],GZMZ[i][gCoords][3]) && ZoneOnBattle[i] == 0)
{
ZonePos[playerid] = i;
switch(i)
{
case 1, 2, 3, 4, 5: dostup = true;
}
if(dostup == true) return SendClientMessage(playerid, COLOR_GREY, "Эта основная территория банды её нельзя захватить");
}
}
for(new i; i < MAX_GZONE;i++)
{
if ((PlayerToKvadrat(playerid,GZMZ[ZonePos[playerid]][gCoords][0], GZMZ[ZonePos[playerid]][gCoords][1],GZMZ[i][gCoords][2],GZMZ[i][gCoords][3]) || PlayerToKvadrat(playerid,GZMZ[i][gCoords][0], GZMZ[i][gCoords][1],GZMZ[ZonePos[playerid]][gCoords][2],GZMZ[ZonePos[playerid]][gCoords][3]))&& ZoneOnBattle[i] == 0)
{
if(GZMZ[i][gFrak] != pData[playerid][pFraction]) return SendClientMessage(playerid, COLOR_GREY, "Данную территорию нельзя завоевать. Нужно находится возле своей территории!");
}
}
if(FrakCD > 0)
{
new fd[128];
format(fd,128,"До следующего захвата территори %d минут.", floatround(FrakCD/60));
SendClientMessage(playerid,CGRAY,fd);
return 1;
}
for(new i=1;i<=TOTALGZ;i++)
{
if(PlayerToKvadrat(playerid,GZMZ[i][gCoords][0], GZMZ[i][gCoords][1],GZMZ[i][gCoords][2],GZMZ[i][gCoords][3]) && ZoneOnBattle[i] == 0)
{
if(IsPlayerInBandOnline(faction) < 1) return SendMes(playerid,COLOR_GREY, "В вашей банде мало игроков онлайн!");
if(IsPlayerInBandOnline(GZMZ[i][gFrak]) < 1) return SendMes(playerid,COLOR_GREY, "У банды \"%s\" мало игроков!", GetGangName(GZMZ[i][gFrak]));
if(IsCapture == 1) return SendClientMessage(playerid, COLOR_GREY, "Уже происходит захват одной из зон. Дождитесь окончания!");
format(string, 2024, ""W"Эта территория принадлежит %s\nВы уверены что хотите её захватить?",GetGangName(GZMZ[i][gFrak]));
ShowPlayerDialog(playerid,dZaxvat,DIALOG_STYLE_MSGBOX,"{F3FF02}Захват территории",string,"Да","Нет");
}
}
}
return true;
}
Конкретно сейчас фразу "Данную территорию нельзя завоевать. Нужно находиться возле своей территории!" пишет когда я пытаюсь захватить любой квадрат..даже своей банды...