Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
jok4r

[FIX] Фиксим динамический спавн открытой техники

Recommended Posts

Многие сталкиваются с проблемой автоматического динамического спавна открытой техники на карте. И вот что происходит. Когда вы запускаете сервер с чистой базой данных, то все в порядке, но стоит игрокам начать покупать технику, строить базы и т.д. - открытые машины как-то резко заканчиваются. И больше не появляются.

 

Можно найти в файле init.sqf (в папке миссии) параметр MaxVehicleLimit и попробовать поставить значение побольше, но это не работает. И вот в чем дело. Когда запускается сервер, идет пересчет всей техники на карте, и открытой, и закрытой (купленной игроками). И если число этой техники превышает параметр MaxVehicleLimit, то тогда новой открытой техники больше не спавнится.

 

Я предлагаю это исправить и сделать так, чтобы считалась только та техника, которая изначально открыта (без ключей). И если этой открытой техники больше, чем MaxVehicleLimit, то только тогда не будет спавниться новая. Мне кажется, что изначально все так и задумывалось.

 

Итак, что нам понадобится:

 

1. Распаковываем файл сервера dayz_server.pbo (для этого необходим PBOManager)

 

2. Идем в папку dayz_server\system\ и открываем файл server_monitor.sqf

 

3. Ищем строку

 

_totalvehicles = _totalvehicles + 1;
 

И заменяем ее на

 

if(_ownerID == "0") then
{
_totalvehicles = _totalvehicles + 1;
};
 

4. Запаковываем папку dayz_server обратно в PBO :)

 

И все, теперь будет учитываться только техника без ключей!

 

Так же не забудьте в файле init.sqf прописать MaxVehicleLimit, равный тому количеству техники, которое вам нужно.

 

Так же вы можете редактировать спавн лист техники, находится он в папке dayz_server\missions\(ваша миссия), файл dynamic_vehicle.sqf

Share this post


Link to post
Share on other sites







Ничего не заканчивается. Технику тупо просто потом бросают или взрывают. Взорванная техника так и остается в БД. Надо чистить так-то.
Параметр MaxVehicleLimit никак не влияет на купленную технику. Это относиться только в ID = 0.

Я лично сделал так:
300 техники с ID = 0 разного состояния.
Каждый рестарт техника, которая не была использована в прошлый раз потихоню ломается пока не взорвется.
Как только техника взрывается, то БД удаляет ее и спавнить вместо нее в новом месте новую технику с ID = 0. В итоге сервер даже если и взорвет 37 техники их 300, то после рестарта он удалить эти 37 техники с БД и заспавнить ровно 37 вместо них. Опять же 300 техники открытой ровно. Все нормально.

Надо просто знать как это работает.

Share this post


Link to post
Share on other sites

Ничего не заканчивается. Технику тупо просто потом бросают или взрывают. Взорванная техника так и остается в БД. Надо чистить так-то.

Параметр MaxVehicleLimit никак не влияет на купленную технику. Это относиться только в ID = 0.

 

Я лично сделал так:

300 техники с ID = 0 разного состояния.

Каждый рестарт техника, которая не была использована в прошлый раз потихоню ломается пока не взорвется.

Как только техника взрывается, то БД удаляет ее и спавнить вместо нее в новом месте новую технику с ID = 0. В итоге сервер даже если и взорвет 37 техники их 300, то после рестарта он удалить эти 37 техники с БД и заспавнить ровно 37 вместо них. Опять же 300 техники открытой ровно. Все нормально.

 

Надо просто знать как это работает.

Да, дело именно в этом, надо знать как это работает. Дело в том, что этот самый счетчик стоит внутри одного условия, а именно:

 

if (_damage < 1) then {
То есть он априори не должен считать взорванную технику.

 

А по поводу поломки техники, которая не используется (стоит одиноко в лесу) - это интересно сделано.

Share this post


Link to post
Share on other sites

так всё таки MaxVehicleLimit ограничивает только динамический спавн? не считает купленную? или всё же считает?

Share this post


Link to post
Share on other sites

у меня как раз такая проблема была. Посмотрим что изменится. Спасибо за труд.

Share this post


Link to post
Share on other sites

Тут надо по другому как то,потому,что я заметил,что технику купленную он не учитывает да,все правильно работает,но...допустим у меня техники лимит 100 на карту,сервер стартует спавнит,сервер ее посчитал все ровно ошибок нет,потом зашло 40 человек на сервер и они начали покупать технику техника перевалила за отметку 100,так как не учитывается купленная техника,а в настройках стоит лимит 100,сервер усердно продолжает спавнить 100 техники после каждого рестарта не считая купленную технику,и при каждом старте он ее подсчитывает,но подсчитывает всю технику купленную и заспавненую,а так как там у нас стоит настройка учитывать только ту технику у которой нет владельца сервер начинает дико спамить в рапорт с ошибками,что лимит техники превышен:

>
 8:02:48   Error position: <_vehicle} count serverVehicleCounter;
>
 8:02:48   Error Undefined variable in expression: _vehicle
 8:02:48 File z\addons\dayz_server\init\server_functions.sqf, line 260
 8:02:48 Error in expression <imit = _random select 1;

_qty = {_x == _vehicle} count serverVehicleCounter; 

казало все бы ничего,поставить 200 лимит техники и ошибка исчезла,но не тут то было,когда техника на карте снова переваливает за 200,снова начинается спам,вывод:фикс работает неправильно!

P.S 

А еще бывает по неизвестным причинам после рестарта сервера у игроков иногда пропадает техника и неважно куплена она или нет,думаю это относится к этому фиксу.

Edited by sanek327 (see edit history)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Serdce
      Данный скрипт, меняет процесс ремонта вашей техники, делая её более логичней, как было в А2.
      Для замены колеса, на нужно собственно само колесо, и тд. и тп. 
      Подробный список чего и для чего вы найдёте в файлах.
       
      Итак, преступим!
      Я не автор, я всего лишь перевожу.
      Первоисточник - https://github.com/aussie-battler/Exilemod-Super-Advanced-Repair-System-SARS
      По ссылке выше скачиваем архив, распаковываем в удобное место.
      Распаковываем ваше миссию "Exile.ваша карта"
      Из архива копируем папку "Custom" в папку вашей миссии "Exile.ваша карта"
      Открываем ваш description.ext  в нем мы ищем showHUD[] = 
      и полностью меняем на это - 
      Далее открываем ваш - initPLayerLocal.sqf
      В этом файле, сразу после строки - if (!hasInterface || isServer) exitWith {};
      Мы добавляем 
      //Bones Super Advanced Repair System (SARS)
      Bones_fnc_salvageAndRepairMenu = compileFinal preprocessFileLineNumbers "Custom\advancedRepair\Bones_fnc_salvageAndRepairMenu.sqf"; 
      Далее открываем ваш - config.cpp
      В нем мы ищем - class Car
      Внутри этого класса мы ищем
       
      И меняем на 
      Так же далее чуть ниже - class Air
      В нем мы также меняем это
      На это 
       
      Далее для если у вас есть Infistar!
      Распаковываем ваш инфистар и открываем его конфиг.
      В нём ищем     KCM = "true"; /* Just close ALL CommandingMenus */
      И меняем значение на false
      Чуть ниже в строке allowedCommandingMenus
      Мы добавляем  "#USER:ASL_Show_Repair_Options_Menu_Array"
      Ну вот и всё готово, всё сохранили и запаковали как было!
       
    • By BorizzK
      Ктонить разбирался с этим?
      С зомбями все понятно
      А вот с энималсами?
       
      Как я не ковырял, как не пытался - не хотят спавнится отдельно собачки
       
      Есть идеи?
    • By paranoyk
      Делается это немного нудно,но сравнительно просто (когда есть точки спавна).
      При спавне Land_Wreck_Uaz с помощью оффлайнера получим строку следующего вида.
      SpawnObject( "Land_Wreck_Uaz", "14348.268555 4.133186 13191.887695", "0.000000 0.000000 0.000000" );
      Нам необходимо задать точку для спавна "сетки лута".
      Для этого мы в файл по mapgrouppos.xml прописываем координаты взятые из строчки для спавна объекта (выше).
      <group name="Land_Wreck_Uaz" pos="14348.268555 4.133186 13191.887695" rpy="0.000000 0.000000 0.000000" a="0.000000" />
       
      group name="Land_Wreck_Uaz" pos="14348.268555 4.133186 13191.887695 - координаты запавненого УАЗика.
      rpy="0.000000 0.000000 0.000000" - числовые значения Yaw,Pitch,Roll соответственно. Берём их из всё той же строчки, но важно помнить что они там записаны в обратном порядке.
      a="0.000000"- угол порота сетки относительно угла поворота......короче! (Yaw-90) х (-1) Уже писал,что можно играться с 360 градусами,но пишу всегда полученное значение,проблем нет.

      И главное "сетка лута". Изначально её УАЗик не имеет, пишем её сами в файл mapGroupProto.xml .
       
      <group name="Land_Wreck_Uaz" lootmax="11"> <usage name="...класс вещей для спавна" /> <usage name="...класс вещей для спавна" /> <container name="lootfloor" lootmax="5"> -"контейнер" для описания спавна, максимальное колличество в спавне. <category name="...категория вещей для спавна" /> (возможен тэг- <tag name="floor" /> или <tag name="shelves" /> ) <point pos="0.511211 -0.372110 0.0254000" range="0.244141" height="0.513353" />-левое сиденье <point pos="-0.320921 -0.387334 -0.400000" range="0.310141" height="0.610353" />-правое переднее седение полик <point pos="-0.000921 -0.383194 0.301000" range="0.400186" height="0.590424" />-место за кпп середина <point pos="-0.211211 0.228620 -0.698000" range="0.360231" height="0.520142" />-правая часть капота возле стекла <point pos="0.681211 0.216190 -1.358000" range="0.262781" height="0.621102" />левая часть капота впереди </container> <container name="lootshelves" lootmax="3"> -"контейнер" для описания спавна, максимальное колличество в спавне. <category name="...категория вещей для спавна" /> (возможен тэг- <tag name="floor" /> или <tag name="shelves" /> ) <point pos="-0.406211 -0.098190 -1.131250" range="0.246819" height="0.620459" />-правое переднее крыло <point pos="0.306211 -0.436570 -1.651250" range="0.424141" height="0.810353" />- центр переднего бампера <point pos="0.906211 -0.359570 -1.664250" range="0.124141" height="0.100353" />-слева на бампере </container> <container name="lootweapons" lootmax="3">-"контейнер" для спавна длинногоствольного оружия, максимальное колличество в спавне, патронов и гранат. <category name="weapons" /> <category name="explosives" /> (возможен тэг- <tag name="floor" /> или <tag name="shelves" /> ) <point pos="0.256211 -0.372050 1.264250" range="0.724141" height="1.313353" /> -центр багажника <point pos="0.868211 -0.138190 1.398000" range="0.293625" height="0.605487" />-заднее левое крыло <point pos="-0.506211 -0.108190 1.431250" range="0.250879" height="0.582143" />-заднее правое крыло </container> </group> Вставляем нужные категории,классы и тэги,это практически конструктор.
      К примеру у меня пока выглядит так -
       
      <group name="Land_Wreck_Uaz" lootmax="11"> <usage name="Military" /> <usage name="Industrial" /> <usage name="Office" /> <container name="lootfloor" lootmax="5"> <category name="food" /> <category name="clothes" /> <point pos="0.511211 -0.372110 0.0254000" range="0.244141" height="0.513353" /> <point pos="-0.320921 -0.387334 -0.400000" range="0.310141" height="0.610353" /> <point pos="-0.000921 -0.383194 0.301000" range="0.400186" height="0.590424" /> <point pos="-0.211211 0.228620 -0.698000" range="0.360231" height="0.520142" /> <point pos="0.681211 0.216190 -1.358000" range="0.262781" height="0.621102" /> </container> <container name="lootshelves" lootmax="3"> <category name="tools" /> <category name="vehiclesparts" /> <point pos="-0.406211 -0.098190 -1.131250" range="0.246819" height="0.620459" /> <point pos="0.306211 -0.436570 -1.651250" range="0.424141" height="0.810353" /> <point pos="0.906211 -0.359570 -1.664250" range="0.124141" height="0.100353" /> </container> <container name="lootweapons" lootmax="3"> <category name="weapons" /> <category name="explosives" /> <point pos="0.256211 -0.372050 1.264250" range="0.724141" height="1.313353" /> <point pos="0.868211 -0.138190 1.398000" range="0.293625" height="0.605487" /> <point pos="-0.506211 -0.108190 1.431250" range="0.250879" height="0.582143" /> </container> </group> Также можно даже исключить полностью строчку lootmax="...". Большой разницы я не заметил.
      Сразу скажу,баги стандартные -длинноствол в багажнике может пробить ствол,иногда возможна "левитация" предметов.
      Во общем как то так.
      (возможно позже вылож сетку и для обломков V3S и С130. Решение для "заброшенной колонны" на севере-тоже в процессе.Кому надо-пишите)
    • By iMazdo
      Кто нибудь сталкивался с таким? В радиусе 500 метров сервер засыпаем Truck_01_Chassis при этом данный класс я не нашел вообще нигде.

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
  • Our picks

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.