Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • Не хотите БАН?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок
  • Загляните на рынок

    Там вы можете продать или купить
    Всё что касается игровых серверов
123new

[DayZ 0.61/0.62] Отключение спавна транспорта

Рекомендованные сообщения

В данной теме выкладываю информацию для новеньких, о том, как в официальной версии DayZ 0.61 и 0.62 отключить официальный спавнер транспорта на сервере.

Также, в теме помечу, как в моей сборке серверной части отключить спавн транспорта.

 

Для этого достаточно пройти по пути к файлу: MPMissions\dayz_Auto.ChernarusPlus\db\events.xml

И удалить блоки с вот этими строками из файла

 <event name="VehicleOffroadHatchback">
        <waves>3</waves>
        <nominal>6</nominal>
        <min>3</min>
        <max>6</max>
        <lifetime>25000</lifetime>
        <restock>0</restock>
        <saferadius>1000</saferadius>
        <distanceradius>2000</distanceradius>
        <cleanupradius>0</cleanupradius>
        <deletedamaged>1</deletedamaged>
        <flags>262400</flags>
        <children>
            <child flags="0" lootmax="0" lootmin="0" max="6" min="6" type="OffroadHatchback"/>
        </children>
    </event>
	<event name="VehicleCivilianSedan">
        <waves>3</waves>
        <nominal>4</nominal>
        <min>8</min>
        <max>8</max>
        <lifetime>0</lifetime>
        <restock>0</restock>
        <saferadius>1000</saferadius>
        <distanceradius>2000</distanceradius>
        <cleanupradius>0</cleanupradius>
        <deletedamaged>1</deletedamaged>
        <flags>262400</flags>
        <children>
            <child flags="0" lootmax="0" lootmin="0" max="8" min="8" type="CivilianSedan"/>
        </children>
    </event>    
    <event name="VehicleTransitBus">
        <waves>3</waves>
        <nominal>5</nominal>
        <min>3</min>
        <max>5</max>
        <lifetime>25000</lifetime>
        <restock>0</restock>
        <saferadius>1000</saferadius>
        <distanceradius>2000</distanceradius>
        <cleanupradius>0</cleanupradius>
        <deletedamaged>1</deletedamaged>
        <flags>262400</flags>
        <children>
            <child flags="0" lootmax="0" lootmin="0" max="5" min="5" type="TransitBus"/>
        </children>
    </event>
    <event name="VehicleV3SCargo">
        <waves>3</waves>
        <nominal>0</nominal>
        <min>3</min>
        <max>5</max>
        <lifetime>2500</lifetime>
        <restock>0</restock>
        <saferadius>1000</saferadius>
        <distanceradius>2000</distanceradius>
        <cleanupradius>0</cleanupradius>
        <deletedamaged>1</deletedamaged>
        <flags>262400</flags>
        <children>
            <child flags="0" lootmax="0" lootmin="0" max="5" min="5" type="V3S_Cargo_Orange"/>
            <child flags="0" lootmax="0" lootmin="0" max="5" min="5" type="V3S_Cargo_Blue"/>
            <child flags="0" lootmax="0" lootmin="0" max="5" min="5" type="V3S_Cargo_Grey"/>
            <child flags="0" lootmax="0" lootmin="0" max="5" min="5" type="V3S_Cargo"/>
        </children>
    </event>
    <event name="VehicleV3SChassis">
        <waves>3</waves>
        <nominal>10</nominal>
        <min>5</min>
        <max>10</max>
        <lifetime>2500</lifetime>
        <restock>0</restock>
        <saferadius>1000</saferadius>
        <distanceradius>1500</distanceradius>
        <cleanupradius>0</cleanupradius>
        <deletedamaged>1</deletedamaged>
        <flags>262400</flags>
        <children>
            <child flags="0" lootmax="0" lootmin="0" max="10" min="10" type="V3S_Chassis_Orange"/>
            <child flags="0" lootmax="0" lootmin="0" max="10" min="10" type="V3S_Chassis"/>
            <child flags="0" lootmax="0" lootmin="0" max="10" min="10" type="V3S_Chassis_Blue"/>
            <child flags="0" lootmax="0" lootmin="0" max="10" min="10" type="V3S_Chassis_Grey"/>
        </children>
    </event>

И удаляем папку с вашим storage из папки с сервером, если такая у вас имеется.

Если у вас стоит одна из моих сборок серверной части DayZ 0.62 или DayZ 0.61, то спавн транспорта у вас может быть также включен в виде скрипта. Отключаем его так:

Открываем файл MPMissions\dayz_Auto.ChernarusPlus\init.sqf в Notepad++ или блокноте

Выставляем параметр вот этот в такое значение:

_Enable_SPAWNER_CARS = false;
Изменено пользователем 123new (история изменений)

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


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


123new а что уже сервер есть офф в доступ а то что-то не догоняю исходя из "как в официальной версии DayZ 0.61 и 0.62 отключить официальный спавнер транспорта на сервере"

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


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

DimitriPokki офф доступа нету, зато есть чистая версия серверок игры где-то в сети на ragezone, в которой чтобы зайти на сервер надо с loadplayer поиграться, которая за эталон и оригинальность в данном случае принимается. А вобще, в сети далеко не одна моя сборка серверки гуляет, так вот, лишним для познания к любой серверке это точно не будет, поскольку сервер 0.62 и 0.61 в плане официальных функций сервера от разработчика (центральная экономика сервера) работает у всех одинаково.

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

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


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

123new Понятно. Я то думал они уже старт открытый дали по файлам раз занимаются другим проектом чтобы сообщество им активнее помогала.

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


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

DimitriPokki ну вот уже должны были 0.63 вчера серверные выложить, хоть еще и не релизной betta, а всего-лишь эксперементальной версии игры (т.е. игра до релиза 0.63 на стабильную ветку все еще на стадии alpha остается официально, как было сказано в их новостях от 11 числа), но тем не менее официально и в steam, но как всегда у них водится, в момент релиза что-то пошло не так и релиз отложили. От канона своего не выполнять обещанное в срок они не отстают))

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


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

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

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

    • Автор: AntonivkA
      Итак, господа. В 1.05 разрабы похоже сломали механику спавна лута. У меня предметы стали спавниться там, где их не должно быть. Заметил сразу, поскольку таблица лута у меня переделана основательно. Например, Песочный барьер у меня прописан только на Военках и Полиц.участке, и все работало корректно до 1.05. Теперь, песочный барьер я нахожу в гаражах, мастерских и жилых домах вокруг полиц. участка и в самом полиц. участке. Помимо этого, ребята стали замечать и скинули инфу, что на СЗ в гаражах и мастерских стал появлятся военный лут, хотя его там не должно быть.
      Кто-что скажет по этому поводу. Заметил ли кто-то подобное у себя?
       
    • Автор: 123new
      Нам понадобится:
      1. Сервер DayZ Standalone (см. тему вот эту)
      2. Notepad++: бесплатно на оф. сайте
      3. Немного времени и настойчивости (обычно бывает в комплекте и так)
       
      И так, начинаем:
      1. Открываем блокнотом mpmissions\dayzOffline.chernarusplus\init.c
      P.S. Имя папки dayzOffline.chernarusplus у вас может отличаться, будьте внимательны
      2. В начале файла добавляем:
      static int time_repeat_info_players = 10; //in seconds static string file_name_info_players = "$profile:PlayersLogFile.txt"; static void WriteFile(string file_name, string text) { private FileHandle fhandle; if ( !FileExist(file_name) ) { fhandle = OpenFile(file_name, FileMode.WRITE); } else { fhandle = OpenFile(file_name, FileMode.APPEND); } if ( fhandle == 0 ) { Print("[#Запись_в_файл]: Не удалось открыть файл для записи: " + file_name); Print("[#Запись_в_файл]: [Запись]: " + text); return; } FPrintln(fhandle, text); CloseFile(fhandle); } static void WritePlayersInfo() { array<Man> players = new array<Man>; Man player; Man player_test; GetGame().GetPlayers( players ); if (players.Count() > 0) { if ( FileExist(file_name_info_players) ) { DeleteFile(file_name_info_players); } for ( int i = 0; i < players.Count(); ++i ) { player_test = players.Get(i); if( player_test ) { PlayerIdentity p_identity = player_test.GetIdentity(); private string coord_pl = player_test.GetPosition().ToString(); private string Name_P = p_identity.GetName(); private string UID_P = p_identity.GetPlainId(); WriteFile(file_name_info_players, "User name: " + Name_P + " UID: " + UID_P + " Coords: " + coord_pl); } } } else { if ( FileExist(file_name_info_players) ) { DeleteFile(file_name_info_players); } } } Где 'PlayersLogFile.txt' меняем на нужное вам имя файла, а в 'time_repeat_info_players' настраиваем время повтора проверки списка игроков для перезаписи файла
      3. Находим в файле блок 'void main()' и в его конце перед закрывающей '}', поумолчанию это строка
      weather.SetWindFunctionParams(0.1, 0.3, 50); добавляем ниже строку:
      GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(WritePlayersInfo, (time_repeat_info_players * 1000), true); 4. Готово, если не допустили ошибок, при наличии хотя бы 1 игрока на сервере ваш файл с данными по игрокам будет присутствовать и заполняться информацией, а в случае их отсутствия удаляться.
    • Автор: 123new
      В данной теме я распишу возможность создания серверного мода для сервера на свобственном примере и объясню как его собрать.Работающий на момент публикации статьи на версии сервера игры 1.4.152050.
       
      Нам понадобятся:
      1. Сервер игры актуальной версии, не ниже патча 1.04. Как установить можно узнать тут:
      До версии 1.04 параметра servermod у сервера игры не существовало!!!
      2. Программа 'PBO manager' с состава инструментария армы из сети: https://www.armaholic.com/page.php?id=16369
      Зеркало: https://yadi.sk/d/_gmzoNSDpNJTt
      Еще зеркало:
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      4. Notepad++ https://notepad-plus-plus.org/download P.S. Вместо 'PBO manager' можно использовать DayZ Tools, но как им пользоваться разбираемся сами ;)
       
      И так, приступим:
      1. Предположим, что у нас имеется свой некий набор скриптов, который необходимо добавить серверу, но не на уровне миссии сервера, а на более ранних уровнях его загрузки. Например, добавить свой killfeed, модифицировать или изменить какой-либо из родных скриптов сервера игры, либо вовсе модификации, подключенной у вас.
      Для примера в этой теме и данного гайда я взял вот этот набор скриптов, собранный непосредственно для данной темы за 5 минут, и не изменяющий в сервере ровным счетом ничего. Он может послужить базой для создания своих модов, функций, переменных или классов. Данный гайд будем описывать, исходя из этого архива.
      Архив:
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      2. Создаем папку с нашим модом. Для примера, это будет папка '@My_Server_Mod'. В созданной нами папке создаем папку 'Addons', а в ней папку 'My_Server_Mod'.
      3. Помещаем содержимое распакованного архива в папку 'My_Server_Mod'. Должно получиться так:

      4. В папке 'My_Server_Mod' создаем файлик 'config.cpp' и заполняем его следующими данными (советую использовать Notepad++ для этого):
      class CfgPatches // требуется обязательно { class My_Server_Mod // требуется обязательно, совпадает с именем мода { units[]={}; // may be not worked weapons[]={}; // may be not worked requiredVersion=0.1; // may be not worked requiredAddons[]={}; /* requiredAddons[]= { "DZ_Data", // Перечисляем требуемые и используемые модом аддоны (pbo-файлы игры и модов по их внутренним скриптовым именам) }; */ }; }; class CfgMods // // требуется обязательно, совпадает с именем мода { // https://community.bistudio.com/wiki/DayZ:Modding_Structure#Mod_presentation class My_Server_Mod { dir = "My_Server_Mod"; // Имя папки мода, совпадает с именем мода picture = ""; // Картинка в описании мода action = ""; // Ссылка, например вот так: action = "https://dayz.com/"; hideName = 1; // Не уверен, что этот параметр работает hidePicture = 1; // Не уверен, что этот параметр работает name = "My_Server_Mod"; // Имя мода (а также его внутреннее скриптовое имя) logoSmall = "Mods/TestMod/modlogosmall.tga"; // значок рядом с именем мода, если описание не развернуто logo = "Mods/TestMod/modlogo.tga"; // логотип под меню игры logoOver = "Mods/TestMod/modlogohover.tga"; // при наведении курсора мыши на логотип tooltip = "tooltip"; // подсказка при наведении курсора мыши overview = "My Server Mod"; // Описание credits = "123new"; // credits author = "123new"; // author authorID = "0"; // author steam ID version = "1.0"; // version extra = 0; // Не уверен, что этот параметр работает type = "mod"; // требуется обязательно, остается неизменным // inputs = "mods\testmod\inputs\my_new_inputs.xml"; // необязательно, при использовании пользовательских inputs dependencies[]={"Core","GameLib","Game","World","Mission"}; // необязательно, если необходимо установить зависимость класса class defs { class engineScriptModule { value=""; // если значение пустое, используется функция ввода по умолчанию files[]={"My_Server_Mod/scripts/1_Core"}; // вы можете добавить любое количество файлов или каталогов, и они будут скомпилированы вместе с оригинальными скриптами игрового модуля }; class gameLibScriptModule { value=""; files[]={"My_Server_Mod/scripts/2_GameLib"}; }; class gameScriptModule { //value="CreateGameMod"; // когда значение заполнено, имя функции ввода модуля скрипта по умолчанию перезаписывается им value = ""; files[]={"My_Server_Mod/scripts/3_Game"}; }; class worldScriptModule { value=""; files[]={"My_Server_Mod/scripts/4_World"}; }; class missionScriptModule { value=""; files[]={"My_Server_Mod/scripts/5_Mission"}; }; }; // Если какой-то из разделов скриптинга вам не нужен и вы не сибираетесь его паковать, сотрите необходимый блок с ним выше и в массиве dependencies }; }; Пояснения в файле оставил. Файл готовый:
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      Как видите, в 'deffs' названия классов и путей соответствуют родным из 'scripts.pbo', но с допиской имени мода. Имя мода в данном случае и есть идентификатор для обращения к своему моду извне. А в 'dependencies' перечисляются используемые классы оригинальных скриптов без дописки номера секции. Количество используемых 'dependencies' и блоков 'deffs' должно быть идентично.
      Пояснения есть также и в официальной документации от разработчика: https://community.bistudio.com/wiki/DayZ:Modding_Structure#Mod_presentation
      5. Запаковываем нашу папку 'My_Server_Mod' в pbo-файл 'My_Server_Mod.pbo' через 'PBO manager', как на скриншоте ниже:

      Можно использовать и другие способы запаковки, если знаете их или привычны вам.
      6. Добавляем в параметры запуска сервера параметр:
      "-servermod=@My_Server_Mod;" -FilePatching 7. Радуемся, наш серверный мод готов. Пример готового серверного мода:
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      P.S. Создавать bikey файл для мода и bisign подписи для него не требуется, иначе это может привести к неработоспособности серверной модификации (возможно, недоработка сервера игры разработчиком)
       
      Отмечу сразу, что данный способ подходит для модификации и переписывания оригинальных классов скриптов сервера от разработчиков и модификации чужих модов с помощью моддинга, применяется исключительно на стороне сервера игры и клиент игры не затрагивает. Распространять такой мод игрокам НЕ НУЖНО!
      Изменение оригинальных скриптов, для которых не предусмотрена операция 'modded class' в движке игры, а также классов и функций, которые защищены языком и движком игры от такого рода действий через серверные моды не получится. Если вы столкнулись с этим, вам проще распаковать scripts.pbo и поместить папку scripts в корень сервера игры, добавить в параметры запуска сервера параметр -FilePatching и изменять напрямую в папке необходимые вам файлы. (правда из-за ошибки разработчиков на патче 1.04 данный метод не работает корректно)
       
      P.P.S. Процедура создания своего собственного клиент-серверного мода на основе скриптов работает таким же образом. В случае создания такого мода, файл 'config.cpp' может быть для стандартного мода более разнообразным, а также после требуется обязательная подпись такого мода в bisign и создание bikey файлов. Более подробно это освещать требуется отдельно!
    • Автор: 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
       
       
       
       
×
×
  • Создать...