PDA

Просмотр полной версии : [Вопрос] Можно каптить более 1-й терры



lowka123
01.09.2015, 14:33
Такая проблема:
При капте 2-х банд,можно каптить более 1-й терры
Подскажите как исправить.
P/S Что за код кидать?

https://youtu.be/SMayS6q1btg

else if(!strcmp(cmd,"/capture",true))//GzCheck
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pMember] == 12 || PlayerInfo[playerid][pMember] == 13 || PlayerInfo[playerid][pMember] == 15 || PlayerInfo[playerid][pMember] == 17 || PlayerInfo[playerid][pMember] == 18)
{
if(PlayerInfo[playerid][pRank] < 7) return SendClientMessage(playerid,COLOR_GREY,"Команда доступна с 7 ранга и выше");
new tmphour, tmpminute, tmpsecond;
new bigstringer[200];
gettime(tmphour, tmpminute, tmpsecond);
tmphour = shifthour;
//if(tmphour < 12 || tmphour > 24) return SendClientMessage(playerid, COLOR_GREY, "Ошибка: захват территории разрешен с 12:00 до 24:00!");
//if(capt == 1 || capt == 10) return SendClientMessage(playerid,COLOR_GREY,"Ошибка: война за территорию уже идет");
//if(capt == 4) return SendClientMessage(playerid, COLOR_GREY, "Ошибка: в этом часе уже прошло два возможных захвата. Больше в один час нельзя");
switch(tmpminute)
{
case 0..59:
{
for(new i = 0;i<130;i++)
{
if(PlayerToKvadrat(playerid,GZInfo[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3]))
{
if(GZInfo[i][gFrakVlad] == PlayerInfo[playerid][pMember]) return SendClientMessage(playerid,COLOR_GREY,"Ошибка: нельзя воевать за свою же территорию");
new namegang[24],namegangv[24];
switch(PlayerInfo[playerid][pMember])
{
case 15: namegang = "Grove Street Gang";
case 17: namegang = "Aztecas Gang";
case 12: namegang = "Ballas Gang";
case 18: namegang = "Rifa Gang";
case 13: namegang = "Vagos Gang";
}
switch(GZInfo[i][gFrakVlad])
{
case 15: namegangv = "Grove Street Gang";
case 17: namegangv = "Aztecas Gang";
case 12: namegangv = "Ballas Gang";
case 18: namegangv = "Rifa Gang";
case 13: namegangv = "Vagos Gang";
}
if(capt == 2 && PlayerInfo[playerid][pMember] == WarBeen[0]) return SendClientMessage(playerid,COLOR_GREY,"Ошибка: Ваша банда уже воевала в этом часе");
if(capt == 2 && GZInfo[i][gFrakVlad] == WarBeen[1]) return SendClientMessage(playerid,COLOR_GREY,"Ошибка: эта банда уже воевала в этом часе");
if(capt == 2 && PlayerInfo[playerid][pMember] == WarBeen[1]) return SendClientMessage(playerid,COLOR_GREY,"Ошибка: Ваша банда уже воевала в этом часе");
if(capt == 2 && GZInfo[i][gFrakVlad] == WarBeen[1]) return SendClientMessage(playerid,COLOR_GREY,"Ошибка: эта банда уже воевала в этом часе");
if(IsATerra(playerid)) return SendClientMessage(playerid,COLOR_GREY,"Нельзя захватить эту территорию");
new gonline;
foreach(Player, y)
{
if(PlayerInfo[y][pMember] == PlayerInfo[playerid][pMember]) gonline++;
}
//if(gonline < 3) return SendClientMessage(playerid, COLOR_GREY, "Ошибка: нельзя захватывать территорию, если в Вашей банде онлайн меньше 3 человек");
//else gonline = 0;
foreach(Player, y)
{
if(PlayerInfo[y][pMember] == GZInfo[i][gFrakVlad]) gonline++;
}
//if(gonline < 3) return SendClientMessage(playerid, COLOR_GREY, "Ошибка: нельзя захватывать территорию, если в вражейской банде онлайн меньше 3 человек");
if(capt == 0) capt = 1;
else if(capt == 2) capt = 10;
captureteam[0] = PlayerInfo[playerid][pMember];//Банда нападающих
captureteam[1] = GZInfo[i][gFrakVlad];//Банда обороняющихся
format(bigstringer, sizeof(bigstringer), "[F] Банда '%s' начала захват территории у '%s' в районе '%s' (Захват начал %s[%i])", namegang, namegangv, GetPlayerZone(playerid), PlayerInfo[playerid][pNames], playerid);
SendFamilyMessage(15, COLOR_RED, bigstringer); SendFamilyMessage(17, COLOR_RED, bigstringer); SendFamilyMessage(12, COLOR_RED, bigstringer); SendFamilyMessage(18, COLOR_RED, bigstringer); SendFamilyMessage(13, COLOR_RED, bigstringer);
format(bigstringer, sizeof(bigstringer), "[A] {FFCC00}Банда '%s' начала захват территории у '%s' в районе '%s' {B0B0B0}(Захват начал %s[%i])", namegang, namegangv, GetPlayerZone(playerid), PlayerInfo[playerid][pNames], playerid);
SendAdminMessage(0x99CC00FF, bigstringer);
GangZoneFlashForAll(GZInfo[i][gID],COLOR_REDD);
GZInfo[i][gNapad] = PlayerInfo[playerid][pMember];
WarTimeMin = 7;
WarTimeSec = 1;
WarZoneID = i;
WarBeen[0] = PlayerInfo[playerid][pMember];
WarBeen[1] = GZInfo[i][gFrakVlad];
CommandKill[0] = 0;
CommandKill[1] = 0;
ScoreZahvat[PlayerInfo[playerid][pMember]] = 0;
ScoreZahvat[GZInfo[i][gFrakVlad]] = 0;
capture[PlayerInfo[playerid][pMember]] = 1;
FrakCD[PlayerInfo[playerid][pMember]] = 1;
FrakCD[GZInfo[i][gFrakVlad]] = 1;
new ftext[20], ftext1[20];
switch(captureteam[0])
{
case 15: ftext = "Grove St.";
case 12: ftext = "Ballas";
case 18: ftext = "Rifa";
case 17: ftext = "Aztec";
case 13: ftext = "Vagos";
}
switch(captureteam[1])
{
case 15: ftext1 = "Grove St.";
case 12: ftext1 = "Ballas";
case 18: ftext1 = "Rifa";
case 17: ftext1 = "Aztec";
case 13: ftext1 = "Vagos";
}
TextDrawSetString(onecommand, ftext);
TextDrawSetString(twocommand, ftext1);
TextDrawSetString(kolone, "0");
TextDrawSetString(koltwo, "0");
foreach(Player, z)
{
if(PlayerInfo[z][pMember] == 15 || PlayerInfo[z][pMember] == 17 || PlayerInfo[z][pMember] == 12 || PlayerInfo[z][pMember] == 18 || PlayerInfo[z][pMember] == 13)
{
TextDrawShowForPlayer(z,fon);
TextDrawShowForPlayer(z,timetext);
TextDrawShowForPlayer(z,vremya);
TextDrawShowForPlayer(z,onecommand);
TextDrawShowForPlayer(z,twocommand);
TextDrawShowForPlayer(z,kolone);
TextDrawShowForPlayer(z,koltwo);
}
}
return true;
}
}
}
default: SendClientMessage(playerid,COLOR_GREY,"Воевать за территории можно в течение 30 минут после нового часа");
}
}
}
return true;
}

wAx
01.09.2015, 15:59
Просто заведи переменную куда при старте капта будешь записывать значение true а после завершения false. И проверять в этой же команде.

lowka123
02.09.2015, 21:06
Просто заведи переменную куда при старте капта будешь записывать значение true а после завершения false. И проверять в этой же команде.

Не понял,добавил код.

gangzone.ini
03.09.2015, 22:47
В начало

new capture;
В начало капта

capture = 1;
В конец

capture = 0;
В команду

if(capture == 1) return SendClientMessage(playerid, -1, "Уже идёт захват территории");

$continue$
03.09.2015, 23:39
В начало

new capture;
В начало капта

capture = 1;
В конец

capture = 0;
В команду

if(capture == 1) return SendClientMessage(playerid, -1, "Уже идёт захват территории");

Не удачно, как - то.
status_gang_capture - что ли