MisaAmane

Настройка спавна машин

Вопрос

Где я могу настроить какие машины могут спавниться, а каккие нет. И их шанс спавна как в Arma 2.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

6 ответов на этот вопрос

Где я могу настроить какие машины могут спавниться, а каккие нет. И их шанс спавна как в Arma 2.

Файл epochconfig.hpp вот тут!

// vehicles - Max vehicle slots is calculated from per vehicle limits below. Warning! Higher the number lower the performance.
simulationHandler = false; // When enabled this feature disables simulation on vehicles that are not near players. Can help improve client fps at the cost of server fps. (This is disabled by default now that Arma has fixed the original issue)
vehicleLockTime = 604800; // Controls how many seconds it takes to allow another person/group to unlock vehicle.
allowedVehiclesList[] = {
    {"C_Offroad_01_EPOCH",1},
    {"C_Hatchback_01_EPOCH",2},
    {"C_Hatchback_02_EPOCH",2},
    {"C_SUV_01_EPOCH",3},
    {"C_Van_01_transport_EPOCH",2},
    {"B_Heli_Light_01_EPOCH",4},    
    {"B_Truck_01_transport_EPOCH",1},
    {"B_Truck_01_covered_EPOCH",2},
    {"B_Truck_01_mover_EPOCH",1},
    {"B_Truck_01_box_EPOCH",1},
    {"O_Truck_02_transport_EPOCH",1},
    {"O_Truck_03_covered_EPOCH",1},
    {"O_Truck_02_box_EPOCH",1},
    {"jetski_epoch",4},
    {"K01",2},
    {"K02",2},
    {"mosquito_epoch",2},
};

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Забронировать это рекламное место


А на Exile где спаун техники редактировать?

В @ExileServer\addons архив exile_server_config.pbo в нем config.cpp в районе 5200 строки, там же можно настроить стартлут, спавнлут, евенты и кучу всего :smile:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В @ExileServer\addons архив exile_server_config.pbo в нем config.cpp в районе 5200 строки, там же можно настроить стартлут, спавнлут, евенты и кучу всего :smile:

    ///////////////////////////////////////////////////////////////////////

    // VEHICLE SPAWN CONFIGURATION

    ///////////////////////////////////////////////////////////////////////

 

    class VehicleSpawn

    {

        /**

        * Grid Size for vehicle spawning,

        * smaller the number more vehicles,

        * you get the point

        */

        vehiclesGridSize = 2200;

 

        /**

        * Vehicle ammount per grid

        * kinda self explanitory

        */

        vehiclesGridAmount = 1;

 

        /**

        * Creates global markers for vehicle spawn tweeking,

        * after you are satisfied with vehicle ammount and spread set this to 0.

        */

        vehiclesDebugMarkers = 0;

 

        /**

        * The server will apply random damage up to this value when spawning a vehicle.

        */

        damageChance = 20; // 20% chance for a vehicle HITPOINT to be damaged

        maximumDamage = 0.9;

 

        // Stuff to spawn on water

        water[] =

        {

            "Exile_Boat_MotorBoat_Police",

            "Exile_Boat_MotorBoat_Orange",

            "Exile_Boat_MotorBoat_White",

            "Exile_Boat_RubberDuck_CSAT",

            "Exile_Boat_RubberDuck_Digital",

            "Exile_Boat_RubberDuck_Orange",

            "Exile_Boat_RubberDuck_Blue",

            "Exile_Boat_RubberDuck_Black",

            "Exile_Boat_SDV_CSAT",

            "Exile_Boat_SDV_Digital",

            "Exile_Boat_SDV_Grey"

        };

 

        // Stuff to spawn on roads

        ground[] =

        {

            "rhs_tigr_ffv_3camo_vdv",

            "rhs_tigr_ffv_vdv",

            "rhs_gaz66_r142_vmf",

            "rhs_gaz66_repair_vmf",

            "rhs_gaz66_vmf",

            "rhs_gaz66_flat_vdv",

            "rhs_gaz66o_vdv",

            "rhs_gaz66o_flat_vdv",

            "rhs_gaz66_ammo_vmf",

            "rhsusf_m1025_w",

            "rhsusf_m998_w_2dr",

            "rhsusf_m998_w_4dr",

            "rhsusf_m998_w_s_2dr_fulltop",

            "rhsusf_m998_d_s_2dr_fulltop",

            "rhsusf_m998_w_s_2dr_halftop",

            "rhsusf_m998_d_s_2dr_halftop",

            "rhsusf_m998_d_s_4dr_fulltop",

            "rhsusf_m998_w_s_4dr_fulltop",

            "rhsusf_m998_d_s_4dr_halftop",

            "rhsusf_m998_w_s_4dr_halftop",

            "rhsusf_M1078A1P2_wd_fmtv_usarmy",

            "rhsusf_M1078A1P2_d_fmtv_usarmy",

            "rhsusf_M1078A1P2_wd_open_fmtv_usarmy",

            "rhsusf_M1078A1P2_d_open_fmtv_usarmy",

            "rhsusf_M1078A1P2_wd_flatbed_fmtv_usarmy",

            "rhsusf_M1078A1P2_d_flatbed_fmtv_usarmy",

            "rhsusf_M1078A1P2_B_d_fmtv_usarmy",

            "rhsusf_M1078A1P2_B_wd_fmtv_usarmy",

            "rhsusf_M1078A1P2_B_wd_open_fmtv_usarmy",

            "rhsusf_M1078A1P2_B_d_open_fmtv_usarmy",

            "rhsusf_M1078A1P2_B_wd_flatbed_fmtv_usarmy",

            "rhsusf_M1078A1P2_B_d_flatbed_fmtv_usarmy",

            "rhs_uaz_vmf",

            "rhs_uaz_open_vmf",

            "RHS_Ural_Open_Civ_01",

            "RHS_Ural_Open_Civ_02",

            "RHS_Ural_Open_Civ_03",

            "RHS_Ural_MSV_01",

            "RHS_Ural_Fuel_MSV_01",

            "RHS_Ural_Open_MSV_01",

            "rhs_Ural_Flat_MSV_01",

            "Exile_Car_Volha_Blue",

            "Exile_Car_Volha_White",

            "Exile_Car_Lada_Green",

            "Exile_Car_Lada_Taxi",

            "Exile_Car_TowTractor_White",

            "Exile_Car_UAZ_Open_Green",

            "Exile_Car_UAZ_Green",

            "Exile_Car_LandRover_Ambulance_Desert",

            "Exile_Car_Tractor_Red",

            "Exile_Car_OldTractor_Red",

            "Exile_Car_Octavius_White"

        };

 

        /**

         * Enables or disables nightvision optics on ALL vehicles

         *

         * 0 = off

         * 1 = on

         */

        nightVision = 1;

 

        /**

         * Enables or disables thermal optics on ALL vehicles

         *

         * 0 = off

         * 1 = on

         */

        thermalVision = 0;

 

        /**

         * Set this to 1 to unlock vehicles on server boot if they are in safe zones

         *

         * 0 = off

         * 1 = on

         */

        unlockInSafeZonesAfterRestart = 1;    

    };

 

 

ГДЕ ТУТ КОЛИЧЕСТВО ТЕХНИКИ? ИЛИ КАК В ЭПОЧЕ НЕЛЬЗЯ НАСТРОИТЬ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В Exile система немного сложнее - задается количество спавнящейся техники vehiclesGridAmount на каждый квадрат мнимой сетки vehiclesGridSize ( = 2200 размер ячейки) + доп. параметры. Воспользуйся переводчиком (если не лады с английским) и все будет понятно. Удач :smile:

Изменено пользователем ripdok (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В Exile система немного сложнее - задается количество спавнящейся техники vehiclesGridAmount на каждый квадрат мнимой сетки vehiclesGridSize ( = 2200 размер ячейки) + доп. параметры. Воспользуйся переводчиком (если не лады с английским) и все будет понятно. Удач :smile:

Благодарю!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Похожие публикации

    • Автор: ownness
      Ребят, подскажите, можно ли добавить цвета/текстуры на автомобили, чтобы при покупке выбирать?
       
      вот кусок кода Config_Vehicles.hpp... в нем две телеги, у первой есть цвета (так и не понял, откуда они тянутся), у второй - нет. есть варианты реализации?
      class madsa_hummer_h2 { realname="Hummer H2"; buyPrice=344000; inventory=85; side="CIV"; insurance=0; disableOwnerInfos=1; licenses[]={"rebelle_1"}; fuel="SP95"; fuelCapacity=121; colors[]= { "madsa_hummer_h2_black_F", "madsa_hummer_h2_blue_F", "madsa_hummer_h2_gold_F", "madsa_hummer_h2_green_F", "madsa_hummer_h2_pink_F", "madsa_hummer_h2_purple_F", "madsa_hummer_h2_red_F", "madsa_hummer_h2_silver_F", "madsa_hummer_h2_white_F", "madsa_hummer_h2_yellow_F" }; }; class madsa_hummer_h2_black_F: madsa_hummer_h2 {}; class madsa_hummer_h2_blue_F: madsa_hummer_h2 {}; class madsa_hummer_h2_gold_F: madsa_hummer_h2 {}; class madsa_hummer_h2_green_F: madsa_hummer_h2 {}; class madsa_hummer_h2_pink_F: madsa_hummer_h2 {}; class madsa_hummer_h2_purple_F: madsa_hummer_h2 {}; class madsa_hummer_h2_red_F: madsa_hummer_h2 {}; class madsa_hummer_h2_silver_F: madsa_hummer_h2 {}; class madsa_hummer_h2_white_F: madsa_hummer_h2 {}; class madsa_hummer_h2_yellow_F: madsa_hummer_h2 {}; class madsa_zl1_f { realname="Chevrolet zl1f"; buyprice=260000; inventory=20; side="CIV"; insurance=1; licence[]={"driver"}; fuel="SP98"; fuelCapacity=67; colors[]={}; };  
    • Автор: Karmagedon
      Всем привет! Ребят. Подскажите где кавырнуть что бы к примеру определенный вид оружия спавнился только на тисах! Заранее спасибо!
    • Автор: BorizzK
      Как и обещал выкладываю код и небольшой гайд
       
      Собственно речь о функции загрузки UID и координат из файла в массив m_playersSpawnPoints класса миссии, который в последствии можно исполдьзовать в других функциях в классе миссии
       
      Отступление
      массив m_playersSpawnPoints это массив типа map
      В данном случае <string,string> где и индекс и значение текстовые строки
      индексом выступает записанный UID,  а значением координаты, которые перед использованием преобразуются из текста в vector c помощью функции ToVector()
      Но об этом позже
       
      Раздел 1. Подключение
       
      КОд функции:
      //Players personal spawn points (for new connected players) ref map<string,string> m_playersSpawnPoints = new map<string,string>; void LoadPlayersSpawnPoints() { /* Файл playersSpawnPoints.lst кладем в папку указанную в параметре запуска сервера -profiles= тогда путь будет "$Profile:" или если кладем в файл в mpmissions\dayzOffline.chernarusplus\_CONF путь будет "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\_CONF\\" Путь меняется в переменной m_SettingsPath - "$Profile:" или "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\_CONF\\" Можете указать свой путь, но он должен быть либо в $Profiles: либо в $CurrentDir:\\mpmissions\\dayzOffline.chernarusplus Формат файла: Steam UID в привычном виде 17 цифр Координаты Комментарий (через пробелы) Помните любая ошибка может привести к крашу сервера Не желательны пустые строки! Пример: 76562298156537008 1300 0 5600 Дима 76561998116927209 3000 0 3000 Вася из Новороссийска Про массив: ref map<string, string> m_playersSpawnPoints = new map<string, string>; m_playersSpawnPoints тут массив типа map, где каждый элемент массива состоит из 2х ячеек. 1. Индекс - тип string 2. Значение - тип string Пример работы с массивом типа map Запись в массив m_playersSpawnPoints.Insert("76562298156537008", "1300 0 5600"); //записываем первый элемент - индекс dayz, значение 10 m_playersSpawnPoints.Insert("76561998116927209", "3000 0 3000"); //записываем второй элемент - индекс dayzf, значение 17 Чтение из массива: Получаем значение 0го элемента string m = m_playersSpawnPoints.GetElement(0); // = "1300 0 5600" Получаем индекс 0го элемента string name = m_playersSpawnPoints.GetKey(0); / /= "76562298156537008" Получаем значение по индексу (в данном случае нас интерисует именно ЭТО) string n = m_playersSpawnPoints.Get("76561998116927209"); // = "3000 0 3000" //затем n переводим в вектор Usage in CreateCharacter function for change default spawn position: string PlayerUID = identity.GetPlainId(); if (PlayerUID) { if (m_playersSpawnPoints.Contains(PlayerUID) { pos = m_playersSpawnPoints.Get(PlayerUID).ToVector(); } } */ string FileName = "playersSpawnPoints.lst"; string m_SettingsPath = "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\_CONF\\"; //Folder with config files - .ini or .lst // Or "$Profiles:\\" FileHandle file; string file_line; array<string> read_line; int linecount = 0; //Comments check bool skipline = false; bool skipblock = false; //Comments check file = OpenFile(m_SettingsPath + FileName, FileMode.READ); if (file != 0) { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read File: " + m_SettingsPath + FileName + " :::"); while (FGets(file, file_line) >= 0) { linecount++; //Comments check and skip if (file_line.IndexOfFrom(0,"//") == 0 || file_line.IndexOfFrom(0,"#") == 0 || file_line.IndexOfFrom(0," ") == 0 || file_line.Length() <= 0) { skipline = true; } else { skipline = false; } if (file_line.IndexOfFrom(0,"/*") == 0) { skipblock = true; } else if (file_line.IndexOfFrom(0,"*/") == 0) { skipblock = false; skipline = true; } //Comments check if (!skipline && !skipblock) { read_line = new array<string>; file_line.Split(" ",read_line); if (read_line.Count() >= 4) { if (read_line.Get(0).Length() == 17) { if (read_line.Get(1).ToFloat() > 0 && read_line.Get(3).ToFloat() > 0) { if (!m_playersSpawnPoints.Contains(read_line.Get(0))) { m_playersSpawnPoints.Insert(read_line.Get(0), read_line.Get(1) + " " + read_line.Get(2) + " " + read_line.Get(3)); // UID, Position Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read Line c" + linecount + " Add UID " + read_line.Get(0) + " spawnpoint: " + read_line.Get(1) + " " + read_line.Get(2) + " " + read_line.Get(3) + " to m_playersSpawnPoints"); } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read Line c" + linecount + " UID " + read_line.Get(0) + " duplicated, check file!"); } } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read Line c" + linecount + " Position error: '" + read_line.Get(1) + " " + read_line.Get(2) + " " + read_line.Get(3) + "' :::"); } } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read Line c" + linecount + " UID error: " + file_line + " :::"); } } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read Line c" + linecount + " have errors: " + file_line + " :::"); } } } CloseFile(file); if (m_playersSpawnPoints.Count() > 0) { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Players personal spawn points count: " + m_playersSpawnPoints.Count() + " :::"); } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Players personal spawn points is not loaded! :::"); } } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Error open file: " + m_SettingsPath + FileName + " :::"); } } Комментарии, а так же диагностические принты в лог не убираю сознательно
       
      ПОдключение и использование.
       
      Функцию размещаем в теле класса миссии в init.c или если она вынесена в другой файл (и файл подключени через #include) в том самом файле в теле класса миссии
       
      Вот как-то так:
       
      class CustomMission : MissionServer { //Тут разные функции и определение переменных класса... //Вот тут переопределенный штатно OnInit override void OnInit () { //тут его код ) //Тут определяем наш массив и функцию //Players personal spawn points (for new connected players) ref map<string,string> m_playersSpawnPoints = new map<string,string>; void LoadPlayersSpawnPoints() { //тут ее код } //Тут разные функции... }  
      Ну Вы поняли...
       
      Далее нам надо при запуске и инициализации сервера эту функцию выполнить
      Но прежде надо создать файл по нужному пути в котором будут UID'ы и координаты
      В данной редакции используется путь "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\_CONF\\" и имя файла "playersSpawnPoints.lst"
      те в папке mpmissions\dayzOffline.chernarusplus нужно создать папку _CONF и поместить в нее этот файл
      Но вы можете это переделать как Вам больше нравится
       
      Формат файла:
       
      6561198156925007 2698.36 0 5989.59 USER
      6561198156924007 2698.36 0 5989.59 ВАСЯ
       
      6561198156923007 2698.36 0 5989.59 ПЕТЯ
      //Тут комментарий
      /*
      6561193356923001 3698.36 30 5189.59 ПЕТЯ
      */
       
      //Тут комментарий
      #Тут комментарий
       
      Первое поле - позиция - Это Steam UID (17 цифирь)
      2,3,4 поля позиции числа это координаты X Z Y (Z = высота) - если 0 система поставит перса на землю или ближайшую твердую поверхность под ним
      все что дальше игнорится
       
      Можно каментить строки с помощью // , #
      Можно каментить блоки
      /*
      */
       
      Если первый символ в строке пробел, все остальное то же игнорится
      Пустые строки то же игнорятся
       
      Если в строке с UID и координатами ошибка об этом напишет в лог с указанием номера строки
      Если UID дублируется об этом то же напишет в лог
       
      Ок
      Файл создали
       
      Теперь добавим вызов этой функции в тело функции OnInit в классе миссии (про нее речь шла Выше)
      Функция OnInit ВСЕГДА выполняется при запуске сервера
      Внутрь мы добавим вызов LoadPlayersSpawnPoints()
      В итоге при запуске сервера LoadPlayersSpawnPoints() выполнется и запишет в массив m_playersSpawnPoints UID'ы и координат
       
      Добавляем как-то так:
       
      override void OnInit() { //Тут может быть различный код //Тут вызов нашей функции //Load players personal spawn poins LoadPlayersSpawnPoints(); // => m_playersSpawnPoints // "UID", "Position" //Тут может быть различный код }  
      Запустили  сервер и увидели в логе что файл прочитался и все ок
      .... LoadPlayersSpawnPoints() ::: Players personal spawn points count: итд итп
      Или ошибки
      Если ошибки - читаем все еще раз и/или задаем вопросы в теме (НЕ В ЛИЧКЕ!!!) показывая что куда и как Вы прописали
       
      Отлично
      Тормозим в сервер
       
      Продолжение следует минут через 15
       
       
       
       
    • Автор: BorizzK
      Не изучал эту тему, было не нужно
      Поглядел пару тем включая эту
      И пытаюсь понять
      А как мне увеличить спавн лута, например на базе Павлово + добавить туда спавн лута, который по умолчанию ТАМ не спавнится?
       
      Спасибо!
       
    • Автор: BorizzK
      //AUTHOR: BORIZZ.K //Version 20.12.2018.0011 void PlaceAllCarsToGround() { array<Object> nearest_objects = new array<Object>; array<CargoBase> proxy_cargos = new array<CargoBase>; Object object; string className; int objectcount = 0; vector mapcenter = "7500 0 7500"; int radius = 20000; vector foundcar_pos; mapcenter[1] = GetGame().SurfaceY( mapcenter[0], mapcenter[2] ); GetGame().GetObjectsAtPosition(mapcenter, radius, nearest_objects, proxy_cargos); for ( int i = 0; i < nearest_objects.Count(); i++ ) { object = nearest_objects.Get(i); className = object.GetType(); if ( GetGame().IsKindOf(className, "Car" ) ) //if ( className == "OffroadHatchback" || className == "V3SVehicle" || className == "V3SChassis" || className == "CivilianSedan") { EntityAI objectEnt = EntityAI.Cast(object); if (objectEnt) { foundcar_pos = objectEnt.GetPosition(); Print("::: PlaceAllCarsToGround() ::: Found car: " + className + ", objectEnt: " + objectEnt + ", Position: " + foundcar_pos.ToString() + ", SurfaceGetNormal: " + GetGame().SurfaceGetNormal(foundcar_pos[0], foundcar_pos[2]).ToString()); //Check surface under car /* string surface_type; int liquidType; GetGame().SurfaceUnderObject(object, surface_type, liquidType); Print("::: PlaceAllCarsToGround() ::: Found car: " + className + ", objectEnt: " + objectEnt + ", surface_type: " + surface_type + ", liquidType: " + liquidType); */ if ( foundcar_pos[1] < (GetGame().SurfaceY(foundcar_pos[0], foundcar_pos[2])) - 0.1 || foundcar_pos[1] > (GetGame().SurfaceY(foundcar_pos[0], foundcar_pos[2])) + 0.1 ) { foundcar_pos[1] = GetGame().SurfaceY(foundcar_pos[0], foundcar_pos[2]); objectEnt.SetPosition(foundcar_pos); objectEnt.SetOrientation(objectEnt .GetOrientation()); objectEnt.SetDirection(objectEnt .GetDirection()); Print("::: PlaceAllCarsToGround() ::: Position changed for car : " + className + ", objectEnt: " + objectEnt + ", Position: " + foundcar_pos.ToString()); } else { Print("::: PlaceAllCarsToGround() ::: No position change required for car : " + className + ", objectEnt: " + objectEnt); } } } } } Добавить код в init.c (ВНЕ КЛАССА)
      Вызывать в конце функции main()
      Просто вставив в конце
      PlaceAllCarsToGround();
       
      P.S. Поправил код, + учел рекомендации Ультимы
      У меня на сервере с машинами все ок