Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 11
  1. #1
    Аватар для verteich
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2019
    Сообщений
    117
    Репутация:
    2 ±

    Почему цикл не останавливается?

    Почему цикл не останавливается?:
    PHP код:
    CMD:spcars(playeridparams[])
    {
        if(
    PI[playerid][pAdmin] < 3)
            return 
    1;
        if(!
    ADuty{playerid})
            return 
    SendClientMessage(playeridCOLOR_GREYNO_DUTY_TEXT);
        
    extract params -> new Float:radius; else
            return 
    SendClientMessage(playeridCOLOR_RED, !"Используйте: /spcars [радиус]");
        if(!(
    1.0 <= radius <= 100.0))
            return 
    SendClientMessage(playeridCOLOR_RED, !"Используйте: /spcars [радиус > 0 или < 100]");
        new
            
    Float:x,
            
    Float:y,
            
    Float:z;
        for(new 
    1MAX_VEHICLESi++)
        {
            
    GetPlayerPos(playeridxyz);
            if(
    IsVehicleInRangeOfPoint(iradiusxyz))
            {
                for(new 
    bMAX_AUTO_BAZARb++) {
                    if(
    autoBazarInfo[b][autoBazarCarID] == i) {
                        break;
                    }
                    
    SetVehicleToRespawn(i);
                }
            }
        }
        new
            
    string[300];
        
    format(stringsizeof(string), "%s[%d] Заспавнил транспорт в радиусе %.01f"PN(playerid), playeridradius);
        
    SendAdminsMessage(COLOR_ORANGEstring);
        return 
    1;


  2. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Если речь о break, то оператор остановит только вложенный цикл.
    Если тебе нужно остановить оба цикла и не использовать код в циклах после break, можно использовать goto
    PHP код:
        for(new 1MAX_VEHICLESi++) 
        { 
            
    GetPlayerPos(playeridxyz); 
            if(
    IsVehicleInRangeOfPoint(iradiusxyz)) 
            { 
                for(new 
    bMAX_AUTO_BAZARb++) { 
                    if(
    autoBazarInfo[b][autoBazarCarID] == i) { 
                        goto 
    __break;
                    } 
                    
    SetVehicleToRespawn(i); 
                } 
            } 
        } 
        
    __break
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  3. #3
    Аватар для verteich
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2019
    Сообщений
    117
    Репутация:
    2 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Если речь о break, то оператор остановит только вложенный цикл.
    Если тебе нужно остановить оба цикла и не использовать код в циклах после break, можно использовать goto
    PHP код:
        for(new 1MAX_VEHICLESi++) 
        { 
            
    GetPlayerPos(playeridxyz); 
            if(
    IsVehicleInRangeOfPoint(iradiusxyz)) 
            { 
                for(new 
    bMAX_AUTO_BAZARb++) { 
                    if(
    autoBazarInfo[b][autoBazarCarID] == i) { 
                        goto 
    __break;
                    } 
                    
    SetVehicleToRespawn(i); 
                } 
            } 
        } 
        
    __break
    Сейчас попробую, спасибо.

  4. #4
    Аватар для Pa4enka
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.04.2016
    Адрес
    Украина
    Сообщений
    157
    Репутация:
    35 ±
    1. new
    2. Float:x, Float:y, Float:z,
    3. vehicleid;
    4.  
    5. GetPlayerPos(playerid, x, y, z);
    6.  
    7. for(new i = 1; i < MAX_VEHICLES; i++) {
    8.  
    9. if(IsVehicleInRangeOfPoint(i, radius, x, y, z)) {
    10.  
    11. vehicleid = i;
    12. break;
    13. }
    14. }
    15.  
    16. for(new b; b < MAX_AUTO_BAZAR; b++) {
    17.  
    18. if(autoBazarInfo[b][autoBazarCarID] != vehicleid)
    19. continue;
    20.  
    21. break;
    22.  
    23. }

  5. #5
    Аватар для verteich
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2019
    Сообщений
    117
    Репутация:
    2 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Если речь о break, то оператор остановит только вложенный цикл.
    Если тебе нужно остановить оба цикла и не использовать код в циклах после break, можно использовать goto
    PHP код:
        for(new 1MAX_VEHICLESi++) 
        { 
            
    GetPlayerPos(playeridxyz); 
            if(
    IsVehicleInRangeOfPoint(iradiusxyz)) 
            { 
                for(new 
    bMAX_AUTO_BAZARb++) { 
                    if(
    autoBazarInfo[b][autoBazarCarID] == i) { 
                        goto 
    __break;
                    } 
                    
    SetVehicleToRespawn(i); 
                } 
            } 
        } 
        
    __break
    Зареспавнился только автомобиль, у которого autoBazarCarID равен i

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

    Цитата Сообщение от Pa4enka Посмотреть сообщение
    1. new
    2. Float:x, Float:y, Float:z,
    3. vehicleid;
    4.  
    5. GetPlayerPos(playerid, x, y, z);
    6.  
    7. for(new i = 1; i < MAX_VEHICLES; i++) {
    8.  
    9. if(IsVehicleInRangeOfPoint(i, radius, x, y, z)) {
    10.  
    11. vehicleid = i;
    12. break;
    13. }
    14. }
    15.  
    16. for(new b; b < MAX_AUTO_BAZAR; b++) {
    17.  
    18. if(autoBazarInfo[b][autoBazarCarID] != vehicleid)
    19. continue;
    20.  
    21. break;
    22.  
    23. }
    символ i не обнаружен

  6. #6
    Аватар для Paradox
    Пользователь

    Статус
    Оффлайн
    Регистрация
    08.06.2015
    Адрес
    Запорожье
    Сообщений
    117
    Репутация:
    1 ±
    PHP код:
    new FloatxFloatyFloatzvehicleid;
    GetPlayerPos(playeridxyz);
    for(new 
    1MAX_VEHICLESi++)
    {
         if(
    IsVehicleInRangeOfPoint(iradiusxyz))
         {
              
    vehicleid i;
              break;
         }
    }

    for(new 
    iMAX_AUTO_BAZARi++)
    {
         if(
    autoBazarInfo[i][autoBazarCarID] != vehicleid) continue;
         
    SetVehicleToRespawn(i);
         break;


  7. #7
    Аватар для verteich
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2019
    Сообщений
    117
    Репутация:
    2 ±
    Цитата Сообщение от Paradox Посмотреть сообщение
    PHP код:
    new FloatxFloatyFloatzvehicleid;
    GetPlayerPos(playeridxyz);
    for(new 
    1MAX_VEHICLESi++)
    {
         if(
    IsVehicleInRangeOfPoint(iradiusxyz))
         {
              
    vehicleid i;
              break;
         }
    }

    for(new 
    iMAX_AUTO_BAZARi++)
    {
         if(
    autoBazarInfo[i][autoBazarCarID] != vehicleid) continue;
         
    SetVehicleToRespawn(i);
         break;

    Твой вариант тот же что и Pa4enk`i, только даже хуже из за того что переменные в цикле одинаковые

  8. #8
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от verteich Посмотреть сообщение
    Зареспавнился только автомобиль, у которого autoBazarCarID равен i
    Эмм, ну ты сам такое условие прописал, не?
    Что ты хочешь сделать вообще?
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  9. #9
    Аватар для verteich
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2019
    Сообщений
    117
    Репутация:
    2 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Эмм, ну ты сам такое условие прописал, не?
    Что ты хочешь сделать вообще?
    Чтоб если if(autoBazarInfo[i][autoBazarCarID] == i), то авто не респавнится

  10. #10
    Аватар для I'm Legend
    Пользователь

    Статус
    Оффлайн
    Регистрация
    03.08.2017
    Сообщений
    15
    Репутация:
    2 ±
    PHP код:
    CMD:spcars(playeridparams[]) 

        if(
    PI[playerid][pAdmin] < 3
            return 
    1
        
        if(!
    ADuty{playerid}) 
            return 
    SendClientMessage(playeridCOLOR_GREYNO_DUTY_TEXT); 
        
        
    extract params -> new Float:radius; else 
            return 
    SendClientMessage(playeridCOLOR_RED, !"Используйте: /spcars [радиус]"); 
        
        if(!(
    1.0 <= radius <= 100.0)) 
            return 
    SendClientMessage(playeridCOLOR_RED, !"Используйте: /spcars [радиус > 0 или < 100]"); 
        
        new 
            
    Float:x
            
    Float:y
            
    Float:z
        
        for(new 
    1MAX_VEHICLESi++) 
        { 
            
    GetPlayerPos(playeridxyz); 
            if(
    IsVehicleInRangeOfPoint(iradiusxyz)) 
            { 
                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(stringsizeof(string), msg_adminPN(playerid), playeridradius); 
        
    SendAdminsMessage(COLOR_ORANGEstring); 
        return 
    1
    }  

    stock IsBazarVehicle(veh_id)
    {
        for(new 
    0MAX_AUTO_BAZARi++) 
        { 
            if(
    autoBazarInfo[i][autoBazarCarID] != veh_id
                continue; 
            
            return 
    1;
        } 
        return 
    0;


  11. Пользователь сказал cпасибо:
    verteich (02.05.2019)
 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •