PDA

Просмотр полной версии : [Вопрос] Как, при достижении последней итерации цикла, запустить его по новой



$continue$
06.10.2014, 16:32
Приветствую всех уважаемый посетители Pro Pawn!
И у меня проблема, почему то не доходит код до обнуление (сбораса), не могу понять почему?



stock NextPlayerSpec(playerid)
{
_NextTick:
PI[playerid][pSpecID]++;
if(!IsPlayerConnected(PI[playerid][pSpecID]) || PlayerLogged[PI[playerid][pSpecID]] == 0 || PI[playerid][pSpecID] == playerid) goto _NextTick;
format(PI[playerid][pCMDstr], 69, "PLAYERID: %d || PI[playerid][pSpecID]: %d", playerid, PI[playerid][pSpecID]);
SendClientMessageToAll(COLOR_LIGHTRED, PI[playerid][pCMDstr]);
if(PI[playerid][pSpecID] == MAX_PLAYERS - 1) PI[playerid][pSpecID] = 0, SendClientMessageToAll(COLOR_LIGHTRED, "Сброс");
StartSpectate(playerid, PI[playerid][pSpecID]);
return 1;
}


Суть кода такова: В слежке сделал прокручивание игроков, хочу сделать что бы, например: 99 ID последний на сервере, дохожу до 99 ID нажимаю далее, и заново начинался круг с ID 0 (или какой подключен наименьший ID)

Ответить с цитированием
Заранее спасибо.

#Diego
06.10.2014, 17:30
Интересно,зачем? Но попробуй этот код:

if(strcmp(cmd, "/spec", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= 1)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,COLOR_GREY," /spec [id]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if(GetPlayerState(giveplayerid) == 1)
{
SetPlayerInterior(playerid,GetPlayerInterior(giveplayerid));
SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(giveplayerid));
TogglePlayerSpectating(playerid, 1);
PlayerSpectatePlayer(playerid, giveplayerid);
PlayerSpectateID[playerid] = giveplayerid;
PlayerSpec[giveplayerid] = playerid;
}
else if(GetPlayerState(giveplayerid) == 2)
{
SetPlayerInterior(playerid,GetPlayerInterior(giveplayerid));
SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(giveplayerid));
new idid = GetPlayerVehicleID(giveplayerid);
TogglePlayerSpectating(playerid, 1);
PlayerSpectateVehicle(playerid, idid);
PlayerSpectateID[playerid] = giveplayerid;
PlayerSpec[giveplayerid] = playerid;
}
else if(GetPlayerState(giveplayerid) == 3)
{
SetPlayerInterior(playerid,GetPlayerInterior(giveplayerid));
SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(giveplayerid));
new idid = GetPlayerVehicleID(giveplayerid);
TogglePlayerSpectating(playerid, 1);
PlayerSpectateVehicle(playerid, idid);
PlayerSpectateID[playerid] = giveplayerid;
PlayerSpec[giveplayerid] = playerid;
}
else
{
SendClientMessage(playerid,COLOR_YELLOW,"Ошибка");
}
}
}
return 1;
}

if(strcmp(cmd, "/specoff", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= 1)
{
TogglePlayerSpectating(playerid, 0);
SetCameraBehindPlayer(playerid);
SendClientMessage(playerid,COLOR_YELLOW,"Слежка закончена!");
PlayerSpec[PlayerSpectateID[playerid]] = -1;
PlayerSpectateID[playerid] = -1;
}
return 1;
}

$continue$
06.10.2014, 17:44
Интересно,зачем? Но попробуй этот код:

if(strcmp(cmd, "/spec", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= 1)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,COLOR_GREY," /spec [id]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if(GetPlayerState(giveplayerid) == 1)
{
SetPlayerInterior(playerid,GetPlayerInterior(giveplayerid));
SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(giveplayerid));
TogglePlayerSpectating(playerid, 1);
PlayerSpectatePlayer(playerid, giveplayerid);
PlayerSpectateID[playerid] = giveplayerid;
PlayerSpec[giveplayerid] = playerid;
}
else if(GetPlayerState(giveplayerid) == 2)
{
SetPlayerInterior(playerid,GetPlayerInterior(giveplayerid));
SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(giveplayerid));
new idid = GetPlayerVehicleID(giveplayerid);
TogglePlayerSpectating(playerid, 1);
PlayerSpectateVehicle(playerid, idid);
PlayerSpectateID[playerid] = giveplayerid;
PlayerSpec[giveplayerid] = playerid;
}
else if(GetPlayerState(giveplayerid) == 3)
{
SetPlayerInterior(playerid,GetPlayerInterior(giveplayerid));
SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(giveplayerid));
new idid = GetPlayerVehicleID(giveplayerid);
TogglePlayerSpectating(playerid, 1);
PlayerSpectateVehicle(playerid, idid);
PlayerSpectateID[playerid] = giveplayerid;
PlayerSpec[giveplayerid] = playerid;
}
else
{
SendClientMessage(playerid,COLOR_YELLOW,"Ошибка");
}
}
}
return 1;
}

if(strcmp(cmd, "/specoff", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= 1)
{
TogglePlayerSpectating(playerid, 0);
SetCameraBehindPlayer(playerid);
SendClientMessage(playerid,COLOR_YELLOW,"Слежка закончена!");
PlayerSpec[PlayerSpectateID[playerid]] = -1;
PlayerSpectateID[playerid] = -1;
}
return 1;
}


Лесом РЛС.

- - - Добавлено - - -


Интересно,зачем? Но попробуй этот код:

if(strcmp(cmd, "/spec", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= 1)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,COLOR_GREY," /spec [id]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if(GetPlayerState(giveplayerid) == 1)
{
SetPlayerInterior(playerid,GetPlayerInterior(giveplayerid));
SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(giveplayerid));
TogglePlayerSpectating(playerid, 1);
PlayerSpectatePlayer(playerid, giveplayerid);
PlayerSpectateID[playerid] = giveplayerid;
PlayerSpec[giveplayerid] = playerid;
}
else if(GetPlayerState(giveplayerid) == 2)
{
SetPlayerInterior(playerid,GetPlayerInterior(giveplayerid));
SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(giveplayerid));
new idid = GetPlayerVehicleID(giveplayerid);
TogglePlayerSpectating(playerid, 1);
PlayerSpectateVehicle(playerid, idid);
PlayerSpectateID[playerid] = giveplayerid;
PlayerSpec[giveplayerid] = playerid;
}
else if(GetPlayerState(giveplayerid) == 3)
{
SetPlayerInterior(playerid,GetPlayerInterior(giveplayerid));
SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(giveplayerid));
new idid = GetPlayerVehicleID(giveplayerid);
TogglePlayerSpectating(playerid, 1);
PlayerSpectateVehicle(playerid, idid);
PlayerSpectateID[playerid] = giveplayerid;
PlayerSpec[giveplayerid] = playerid;
}
else
{
SendClientMessage(playerid,COLOR_YELLOW,"Ошибка");
}
}
}
return 1;
}

if(strcmp(cmd, "/specoff", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= 1)
{
TogglePlayerSpectating(playerid, 0);
SetCameraBehindPlayer(playerid);
SendClientMessage(playerid,COLOR_YELLOW,"Слежка закончена!");
PlayerSpec[PlayerSpectateID[playerid]] = -1;
PlayerSpectateID[playerid] = -1;
}
return 1;
}


Лесом РЛС.

DeimoS
06.10.2014, 18:12
stock NextPlayerSpec(playerid)
{
_NextTick:
PI[playerid][pSpecID]++;
if(PI[playerid][pSpecID] == MAX_PLAYERS - 1) PI[playerid][pSpecID] = 0, SendClientMessageToAll(COLOR_LIGHTRED, "Сброс");
if(!IsPlayerConnected(PI[playerid][pSpecID]) || PlayerLogged[PI[playerid][pSpecID]] == 0 || PI[playerid][pSpecID] == playerid) goto _NextTick;
format(PI[playerid][pCMDstr], 69, "PLAYERID: %d || PI[playerid][pSpecID]: %d", playerid, PI[playerid][pSpecID]);
SendClientMessageToAll(COLOR_LIGHTRED, PI[playerid][pCMDstr]);
StartSpectate(playerid, PI[playerid][pSpecID]);
return 1;
}

$continue$
08.10.2014, 22:18
Спасибо, можно закрывать тему.