Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 4 из 4
  1. #1
    Аватар для StevenH
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±

    Перебор машин (по типу foreach Player)

    Доброго времени суток. На Pro-Pawn наткнулся на темку с перебором машин, и в теме нашел 2 кода:

    1. Код с 3 страницы этой же темы
      Открыть/закрыть

    PHP код:
    #include <foreach> // by Y_Less 

    new Iterator:valid_vehicles<MAX_VEHICLES>; 

    #define forveh(%0) foreach (new %0 : valid_vehicles) 

    stock Forveh_CreateVehicle(modelidFloat:xFloat:yFloat:zFloat:anglecolor1color2respawn_delay

        new 
    vehid CreateVehicle(modelidxyz,anglecolor1color2respawn_delay); 
        
    Iter_Add(valid_vehiclesvehid); 
        return 
    vehid


    #if defined _ALS_CreateVehicle 
        #undef CreateVehicle 
    #else 
        #define _ALS_CreateVehicle 
    #endif 
    #define CreateVehicle Forveh_CreateVehicle 

    stock Forveh_AddStaticVehicle(modelidFloat:spawn_xFloat:spawn_yFloat:spawn_zFloat:anglecolor1color2

        new 
    vehid AddStaticVehicle(modelidspawn_xspawn_yspawn_zanglecolor1color2); 
        
    Iter_Add(valid_vehiclesvehid); 
        return 
    vehid


    #if defined _ALS_AddStaticVehicle 
        #undef AddStaticVehicle 
    #else 
        #define _ALS_AddStaticVehicle 
    #endif 
    #define AddStaticVehicle Forveh_AddStaticVehicle 

    stock Forveh_AddStaticVehicleEx(modelidFloat:spawn_xFloat:spawn_yFloat:spawn_zFloat:anglecolor1color2respawn_delay)

        new 
    vehid AddStaticVehicleEx(modelidspawn_xspawn_yspawn_zanglecolor1color2,respawn_delay); 
        
    Iter_Add(valid_vehiclesvehid); 
        return 
    vehid


    #if defined _ALS_AddStaticVehicleEx 
        #undef AddStaticVehicleEx 
    #else 
        #define _ALS_AddStaticVehicleEx 
    #endif 
    #define AddStaticVehicleEx Forveh_AddStaticVehicleEx 

    stock Forveh_DestroyVehicle(vehicleid

        if(
    Iter_Contains(valid_vehiclesvehicleid)) 
            
    Iter_Remove(valid_vehiclesvehicleid); 
        return 
    DestroyVehicle(vehicleid); 

    #if defined _ALS_DestroyVehicle 
        #undef DestroyVehicle 
    #else 
        #define _ALS_DestroyVehicle 
    #endif 
    #define DestroyVehicle Forveh_DestroyVehicle 


    2. Код автора темы:
      Открыть/закрыть

    PHP код:
    new forveh_vehicles[MAX_VEHICLES];
    new 
    forveh_count 0;

    #if !defined IsValidVehicle
         
    native IsValidVehicle(vehicleid);
    #endif

    #define forveh(%0) for(new ouf, %0=forveh_vehicles[ouf]; ouf<forveh_count; %0=forveh_vehicles[++ouf])

    stock Forveh_CreateVehicle(modelidFloat:xFloat:yFloat:zFloat:anglecolor1color2respawn_delay)
    {
        new 
    vehid CreateVehicle(modelidxyz,anglecolor1color2respawn_delay);
        
    forveh_vehicles[forveh_count++]=vehid;
        return 
    vehid;
    }
    #if defined _ALS_CreateVehicle
         #undef CreateVehicle
    #else
         #define _ALS_CreateVehicle
    #endif
    #define CreateVehicle Forveh_CreateVehicle

    stock Forveh_AddStaticVehicle(modelidFloat:spawn_xFloat:spawn_yFloat:spawn_zFloat:anglecolor1color2)
    {
        new 
    vehid AddStaticVehicle(modelidspawn_xspawn_yspawn_zanglecolor1color2);
        
    forveh_vehicles[forveh_count++]=vehid;
        return 
    vehid;
    }
    #if defined _ALS_AddStaticVehicle
         #undef AddStaticVehicle
    #else
         #define _ALS_AddStaticVehicle
    #endif
    #define AddStaticVehicle Forveh_AddStaticVehicle

    stock Forveh_AddStaticVehicleEx(modelidFloat:spawn_xFloat:spawn_yFloat:spawn_zFloat:anglecolor1color2respawn_delay)
    {
        new 
    vehid AddStaticVehicleEx(modelidspawn_xspawn_yspawn_zanglecolor1color2,respawn_delay);
        
    forveh_vehicles[forveh_count++]=vehid;
        return 
    vehid;
    }
    #if defined _ALS_AddStaticVehicleEx
        #undef AddStaticVehicleEx
    #else
        #define _ALS_AddStaticVehicleEx
    #endif
    #define AddStaticVehicleEx Forveh_AddStaticVehicleEx

    stock Forveh_DestroyVehicle(vehicleid)
    {
        if(!
    IsValidVehicle(vehicleid)) return 0;
        for(new 
    i=0;i<forveh_count;i++)
        {
            if(
    forveh_vehicles[i]==vehicleid)
            {
                
    forveh_vehicles[i]=forveh_vehicles[--forveh_count];
                break;
            }
        }
        return 
    DestroyVehicle(vehicleid);
    }
    #if defined _ALS_DestroyVehicle
        #undef DestroyVehicle
    #else
        #define _ALS_DestroyVehicle
    #endif
    #define DestroyVehicle Forveh_DestroyVehicle 


    Вопрос состоит в следующем, стоит ли использовать перебор этих машин, вместо стандартного цикла, и если да, то какой код лучше, первый или второй?

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Стоит.
    Если используешь foreach, то первый
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  3. #3
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Могу предложить этот foreach: https://github.com/Open-GTO/foreach
    Там уже встроена итерация по транспорту. Такой же, как и в первом варианте, только без колхоза с #define forveh(%0) foreach (new %0 : valid_vehicles) и с поддержкой FS.

  4. Пользователь сказал cпасибо:
    StevenH (27.03.2017)
  5. #4
    Аватар для StevenH
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Могу предложить этот foreach: https://github.com/Open-GTO/foreach
    Там уже встроена итерация по транспорту. Такой же, как и в первом варианте, только без колхоза с #define forveh(%0) foreach (new %0 : valid_vehicles) и с поддержкой FS.
    Спасибо, взял эту версию foreach.. Даже смотрю foreach для актеров есть, правда не совсем понятно зачем)

 

 

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

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

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

Ваши права

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