Просмотр полной версии : [Вопрос] Почему цикл не останавливается?
verteich
01.05.2019, 19:21
Почему цикл не останавливается?:
CMD:spcars(playerid, params[])
{
if(PI[playerid][pAdmin] < 3)
return 1;
if(!ADuty{playerid})
return SendClientMessage(playerid, COLOR_GREY, NO_DUTY_TEXT);
extract params -> new Float:radius; else
return SendClientMessage(playerid, COLOR_RED, !"Используйте: /spcars [радиус]");
if(!(1.0 <= radius <= 100.0))
return SendClientMessage(playerid, COLOR_RED, !"Используйте: /spcars [радиус > 0 или < 100]");
new
Float:x,
Float:y,
Float:z;
for(new i = 1; i < MAX_VEHICLES; i++)
{
GetPlayerPos(playerid, x, y, z);
if(IsVehicleInRangeOfPoint(i, radius, x, y, z))
{
for(new b; b < MAX_AUTO_BAZAR; b++) {
if(autoBazarInfo[b][autoBazarCarID] == i) {
break;
}
SetVehicleToRespawn(i);
}
}
}
new
string[300];
format(string, sizeof(string), "%s[%d] Заспавнил транспорт в радиусе %.01f", PN(playerid), playerid, radius);
SendAdminsMessage(COLOR_ORANGE, string);
return 1;
}
Если речь о break, то оператор остановит только вложенный цикл.
Если тебе нужно остановить оба цикла и не использовать код в циклах после break, можно использовать goto
for(new i = 1; i < MAX_VEHICLES; i++)
{
GetPlayerPos(playerid, x, y, z);
if(IsVehicleInRangeOfPoint(i, radius, x, y, z))
{
for(new b; b < MAX_AUTO_BAZAR; b++) {
if(autoBazarInfo[b][autoBazarCarID] == i) {
goto __break;
}
SetVehicleToRespawn(i);
}
}
}
__break:
verteich
01.05.2019, 19:53
Если речь о break, то оператор остановит только вложенный цикл.
Если тебе нужно остановить оба цикла и не использовать код в циклах после break, можно использовать goto
for(new i = 1; i < MAX_VEHICLES; i++)
{
GetPlayerPos(playerid, x, y, z);
if(IsVehicleInRangeOfPoint(i, radius, x, y, z))
{
for(new b; b < MAX_AUTO_BAZAR; b++) {
if(autoBazarInfo[b][autoBazarCarID] == i) {
goto __break;
}
SetVehicleToRespawn(i);
}
}
}
__break:
Сейчас попробую, спасибо.
new
Float:x, Float:y, Float:z,
vehicleid;
GetPlayerPos(playerid, x, y, z);
for(new i = 1; i < MAX_VEHICLES; i++) {
if(IsVehicleInRangeOfPoint(i, radius, x, y, z)) {
vehicleid = i;
break;
}
}
for(new b; b < MAX_AUTO_BAZAR; b++) {
if(autoBazarInfo[b][autoBazarCarID] != vehicleid)
continue;
SetVehicleToRespawn(i);
break;
}
verteich
01.05.2019, 19:58
Если речь о break, то оператор остановит только вложенный цикл.
Если тебе нужно остановить оба цикла и не использовать код в циклах после break, можно использовать goto
for(new i = 1; i < MAX_VEHICLES; i++)
{
GetPlayerPos(playerid, x, y, z);
if(IsVehicleInRangeOfPoint(i, radius, x, y, z))
{
for(new b; b < MAX_AUTO_BAZAR; b++) {
if(autoBazarInfo[b][autoBazarCarID] == i) {
goto __break;
}
SetVehicleToRespawn(i);
}
}
}
__break:
Зареспавнился только автомобиль, у которого autoBazarCarID равен i
- - - Добавлено - - -
new
Float:x, Float:y, Float:z,
vehicleid;
GetPlayerPos(playerid, x, y, z);
for(new i = 1; i < MAX_VEHICLES; i++) {
if(IsVehicleInRangeOfPoint(i, radius, x, y, z)) {
vehicleid = i;
break;
}
}
for(new b; b < MAX_AUTO_BAZAR; b++) {
if(autoBazarInfo[b][autoBazarCarID] != vehicleid)
continue;
SetVehicleToRespawn(i);
break;
}
символ i не обнаружен
new Float: x, Float: y, Float: z, vehicleid;
GetPlayerPos(playerid, x, y, z);
for(new i = 1; i < MAX_VEHICLES; i++)
{
if(IsVehicleInRangeOfPoint(i, radius, x, y, z))
{
vehicleid = i;
break;
}
}
for(new i; i < MAX_AUTO_BAZAR; i++)
{
if(autoBazarInfo[i][autoBazarCarID] != vehicleid) continue;
SetVehicleToRespawn(i);
break;
}
verteich
01.05.2019, 21:20
new Float: x, Float: y, Float: z, vehicleid;
GetPlayerPos(playerid, x, y, z);
for(new i = 1; i < MAX_VEHICLES; i++)
{
if(IsVehicleInRangeOfPoint(i, radius, x, y, z))
{
vehicleid = i;
break;
}
}
for(new i; i < MAX_AUTO_BAZAR; i++)
{
if(autoBazarInfo[i][autoBazarCarID] != vehicleid) continue;
SetVehicleToRespawn(i);
break;
}
Твой вариант тот же что и Pa4enk`i, только даже хуже из за того что переменные в цикле одинаковые
Зареспавнился только автомобиль, у которого autoBazarCarID равен i
Эмм, ну ты сам такое условие прописал, не?
Что ты хочешь сделать вообще?
verteich
01.05.2019, 22:05
Эмм, ну ты сам такое условие прописал, не?
Что ты хочешь сделать вообще?
Чтоб если if(autoBazarInfo[i][autoBazarCarID] == i), то авто не респавнится
I'm Legend
02.05.2019, 10:22
CMD:spcars(playerid, params[])
{
if(PI[playerid][pAdmin] < 3)
return 1;
if(!ADuty{playerid})
return SendClientMessage(playerid, COLOR_GREY, NO_DUTY_TEXT);
extract params -> new Float:radius; else
return SendClientMessage(playerid, COLOR_RED, !"Используйте: /spcars [радиус]");
if(!(1.0 <= radius <= 100.0))
return SendClientMessage(playerid, COLOR_RED, !"Используйте: /spcars [радиус > 0 или < 100]");
new
Float:x,
Float:y,
Float:z;
for(new i = 1; i < MAX_VEHICLES; i++)
{
GetPlayerPos(playerid, x, y, z);
if(IsVehicleInRangeOfPoint(i, radius, x, y, z))
{
if(IsBazarVehicle(i))
continue;
SetVehicleToRespawn(i);
}
}
static const
msg_admin[] = "%s[%d] Заспавнил транспорт в радиусе %.01f";
new
string[sizeof(msg_admin) + (-2+MAX_PLAYER_NAME) + (-2+3)*2];
format(string, sizeof(string), msg_admin, PN(playerid), playerid, radius);
SendAdminsMessage(COLOR_ORANGE, string);
return 1;
}
stock IsBazarVehicle(veh_id)
{
for(new i = 0; i < MAX_AUTO_BAZAR; i++)
{
if(autoBazarInfo[i][autoBazarCarID] != veh_id)
continue;
return 1;
}
return 0;
}
verteich
02.05.2019, 11:25
CMD:spcars(playerid, params[])
{
if(PI[playerid][pAdmin] < 3)
return 1;
if(!ADuty{playerid})
return SendClientMessage(playerid, COLOR_GREY, NO_DUTY_TEXT);
extract params -> new Float:radius; else
return SendClientMessage(playerid, COLOR_RED, !"Используйте: /spcars [радиус]");
if(!(1.0 <= radius <= 100.0))
return SendClientMessage(playerid, COLOR_RED, !"Используйте: /spcars [радиус > 0 или < 100]");
new
Float:x,
Float:y,
Float:z;
for(new i = 1; i < MAX_VEHICLES; i++)
{
GetPlayerPos(playerid, x, y, z);
if(IsVehicleInRangeOfPoint(i, radius, x, y, z))
{
if(IsBazarVehicle(i))
continue;
SetVehicleToRespawn(i);
}
}
static const
msg_admin[] = "%s[%d] Заспавнил транспорт в радиусе %.01f";
new
string[sizeof(msg_admin) + (-2+MAX_PLAYER_NAME) + (-2+3)*2];
format(string, sizeof(string), msg_admin, PN(playerid), playerid, radius);
SendAdminsMessage(COLOR_ORANGE, string);
return 1;
}
stock IsBazarVehicle(veh_id)
{
for(new i = 0; i < MAX_AUTO_BAZAR; i++)
{
if(autoBazarInfo[i][autoBazarCarID] != veh_id)
continue;
return 1;
}
return 0;
}
Благодарю!!! Все работает
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot