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

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

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

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

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
LekstoR

Как добавлять объекты на карту с минимальной нагрузкой и не увеличивать файл миссии

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

В общем посмотрел раздел "Дополнительные карты, объекты" и был немного в шоке, вы все добавляете здания через файл миссии - всвязи с чем файл миссии неплохо увеличивается, у игрока просаживается фпс при прогрузке добавленных объектов.

Хотел бы вам предложить более оптимизированный вариант:

 

Заменяем в скрипте начало всех объектов с _vehicle_  на _bldObj  должно выглядеть так

 

 

_bldObj = objNull;
if (true) then
{
_bldObj = createVehicle ["Land_HBarrier_large", [6305.459, 7854.8101], [], 0, "CAN_COLLIDE"];
_bldObj setDir 36.99;
_bldObj setPosASL [6305.459, 7854.8101, 305.4];
};

 

После чего распаковываем dayz_server.pbo и создаем там папку Maps, в которую переносим файл с добавленными зданиями. 

Теперь заходим в \@DayZ_Epoch_Server\addons\dayz_server\init\server_function.sqf и добавляем в самый конец

 

execVM "\z\addons\dayz_server\Maps\название вашего файла.sqf";

 

и вуаля - все добавленные объекты как родные. 

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


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





В арме, вообще много чего можно на сервер перенести. Не только объекты, но и расчеты, броадкаст и т.п.

Как пример - посмотри, что происходит при "закапывании трупа".

- На стороне клиента

1. Происходит поиск игроков в радиусе 100м.

2. Затем в ЦИКЛЕ осуществляется рассылка на сервер(при чем по 1 сообщению, для каждого найденного юзера в радиусе 100м - т.е. нашел 20 игроков вокруг себя, - 20 пакетов послал на сервер).

*Что то вроде - "Я, хочу зарыть труп X, сообщи об этом игроку Y. И так 20 раз...(сколько нашел игроков).

 

- На стороне сервера

1. Разбор пакета - устанавливаем, что клиент просит передать игроку Y об исчезновении объекта X

2. Отсылка клиенту(Y), что объект (X) исчез.

 

Идиотизм чистейший.

Принципиально, клиент  вообще не должен давать указаний серверу, а только спрашивать - можно или низя.

т.е. - упрощенный вариант, - посылать хотя бы массив типа - "Я, хочу зарыть труп X, сообщи об этом игрокам Y1,Y2,Y3...." т.е. одним сообщением.

 

Идеальный вариант -

Клиент -

Шлет сообщение, с запросом на разрешение зарыть труп Х И ВСЕ! - ОДНО сообщение!

 

Сервер -

1. Проверяет - есть ли такое тело и дохлое ли оно(мб клиент гонит\читит и т.п.)

2. Если есть - именно сервер ищет всех игроков в радиусе запрашивающего.

3. В Цикле начинает рассылку найденным с сообщением об исчезновении объекта X

4. Удаляет объект.

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


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

Спасибо :thumbsup:  Это действительно на много лучше, чем вариант с запихиванием всего в миссию

А можно каким то образом загрузочный экран так же впихнуть? да и другие скрипты не мешало бы.

К примеру у меня стоит сектор ФНГ и к нему в инит у меня такие команды:

[] execVM "Scripts\sectorfng\sectorfng_init.sqf";
[] execVM "Scripts\Init_UPSMON.sqf";
[] execVM "Scripts\SHK_pos\shk_pos_init.sqf";
[] execVM "Scripts\SARGE\SAR_AI_init.sqf";

Как такое же сделать только в серверпбо?

 

Ага еще кое что

Там идет порядок

_vehicle_26

_vehicle_27

и т.д. Надо ли дописывать "_26" "_27" к "_bldObj"?

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

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


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

Кстати видел тему где-то на англоязычном форуме о том как сделать чтобы снять нагрузку с сервера и перенести на клиент пользователя. К примеру спавн зомби чтобы срабатывал у пользователя а не на сервере. Ну и еще там чет было, я толком ничего не понял, потому что с англ туго. И я так и не понял то был гайд или предложение о том как бы это сделать.

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


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

У меня вообще все строения и включая сектор Зла, перенесён в сервер и не чё фпс 70|80

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


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

Только единственное но, ящики с сектора пропадают через час роботы сервера

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


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

У меня вообще все строения и включая сектор Зла, перенесён в сервер и не чё фпс 70|80

если ты имеешь ввиду server.pbo то расскажи пожалуйста каким образом ты их подключил там?

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


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

Спасибо :thumbsup:  Это действительно на много лучше, чем вариант с запихиванием всего в миссию

А можно каким то образом загрузочный экран так же впихнуть? да и другие скрипты не мешало бы.

К примеру у меня стоит сектор ФНГ и к нему в инит у меня такие команды:

[] execVM "Scripts\sectorfng\sectorfng_init.sqf";

[] execVM "Scripts\Init_UPSMON.sqf";

[] execVM "Scripts\SHK_pos\shk_pos_init.sqf";

[] execVM "Scripts\SARGE\SAR_AI_init.sqf";

Как такое же сделать только в серверпбо?

 

Ага еще кое что

Там идет порядок

_vehicle_26

_vehicle_27

и т.д. Надо ли дописывать "_26" "_27" к "_bldObj"?

Не надо, протестировал. Если _bldObj_26 и т.д объектов не будет

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


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

Со строениями то всё просто, но как запихать на сервер скрипты активируемые игроком через fn_selfactions.sqf (типа перелив крови и т.п.)? Сколько не пытался ни фига не работает!

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


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

Со строениями то всё просто, но как запихать на сервер скрипты активируемые игроком через fn_selfactions.sqf (типа перелив крови и т.п.)? Сколько не пытался ни фига не работает!

Для этого надо создать\переписать событие, которое будет отправлять запрос на сервер.

Сервер при получении сообщения, будет разрешать или запрещать(ничего не делать\заносить в список читеров\..еще что то), данное событие.

В целом на серверной стороне надо переделать файл ServerToClient, а на стороне клиента переписать скрипты(типа переливки крови).

Если добавляются свои события, то надо будет их добавить в BattlEye.

Хотя, если переделывать все, то большинство функций БЕ попросту будут не нужны.

 

Посмотри выше мой пост #2, посмотри файлы на стороне клиента и сервера. Удивишься идиотизму построения.

 

Там много работы... Технически надо вообще удалять большинство клиентских функций, например лечение бинтом со стороны клиента и т.п.

Еще раз - Клиент должен только отправлять запрос на сервер(в примере с бинтом - "хочу юзануть бинт", - а уже сервер, должен посмотреть - есть ли бинт в инвентаре у игрока, если да - удалить бинт, остановить кровотечение и послать клиенту пакет, приняв который ,клиент всего лишь юзанет - BIS. Дабы отобразить остановку кровотечения.

Но скорее всего, еще придется удалять бинт, из ОТОБРАЖАЕМОГО инвентаря персонажа. Так арма устроена, к сожалению, что клиенту позволено почти все. А сервер, как бэ на вторых ролях - принеси\подай.

Но это все сторона безопасности, в т.ч. и от читов, если она мало волнует, то можно не замарачиваться.

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


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

О как завернул :biggrin:  Но нам бы чет попроще, на пример кинуть туда и вписать это сюда :D Ну или хотя бы один пример любого скрипта, обычно добавляемого в миссию

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


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

 

У меня вообще все строения и включая сектор Зла, перенесён в сервер и не чё фпс 70|80

если ты имеешь ввиду server.pbo то расскажи пожалуйста каким образом ты их подключил там?

Берёш всё что у тебя есть постройки в миссии переносиш в папку сервера 

и потом подключаешь их в init.sqf таким макаром

 

 

 

 

у меня в инете выглядит так

 

сразу после 

"filmic" setToneMappingParams [0.153, 0.357, 0.231, 0.1573, 0.011, 3.750, 6, 4]; setToneMapping "Filmic";

 

if (isServer) then {
  call compile preprocessFileLineNumbers "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\dynamic_vehicle.sqf";
  //Add Radioktive Base
  _nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\custombase.sqf";
  //Add Load Admin Base
  _nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\adminbase.sqf";
  //Add Otmel Building
  _nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\buildbase.sqf";
  //Add Trader Citys
  _nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\sektorzla.sqf";
  //Add Trader Citys
  _nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\mission.sqf";
  //Server Monitor
  _serverMonitor = [] execVM "\z\addons\dayz_code\system\server_monitor.sqf";
};
 
И всё работает на ура 70/80 fps
Как то так только есть 1 проблем ящики с сектора через некоторое время исчезают!
Если кто знает как поправить подскажите?
 

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


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

 

 

У меня вообще все строения и включая сектор Зла, перенесён в сервер и не чё фпс 70|80

если ты имеешь ввиду server.pbo то расскажи пожалуйста каким образом ты их подключил там?

Берёш всё что у тебя есть постройки в миссии переносиш в папку сервера 

и потом подключаешь их в init.sqf таким макаром

 

 

 

 

у меня в инете выглядит так

 

сразу после 

"filmic" setToneMappingParams [0.153, 0.357, 0.231, 0.1573, 0.011, 3.750, 6, 4]; setToneMapping "Filmic";

 

if (isServer) then {
  call compile preprocessFileLineNumbers "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\dynamic_vehicle.sqf";
  //Add Radioktive Base
  _nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\custombase.sqf";
  //Add Load Admin Base
  _nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\adminbase.sqf";
  //Add Otmel Building
  _nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\buildbase.sqf";

  //Add Trader Citys
  _nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\sektorzla.sqf";
  //Add Trader Citys
  _nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\mission.sqf";
  //Server Monitor
  _serverMonitor = [] execVM "\z\addons\dayz_code\system\server_monitor.sqf";
};
 
И всё работает на ура 70/80 fps
Как то так только есть 1 проблем ящики с сектора через некоторое время исчезают!
Если кто знает как поправить подскажите?
 

Ну такого фпс у меня нет даже на голом сервере :biggrin:  это ж еще и от машины зависит

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


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

Вы там не белены обожрались случаем? Какие могут быть прибавки или просадки ФПС, за счет переноса в другое pbo ?

У вас в скриптах загрузки построек должно стоять -

 

if (isServer) then {

..........

};

 

Все что между этих строк, выполняется на стороне сервера.

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


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

Вы там не белены обожрались случаем? Какие могут быть прибавки или просадки ФПС, за счет переноса в другое pbo ?

У вас в скриптах загрузки построек должно стоять -

 

if (isServer) then {

..........

};

 

Все что между этих строк, выполняется на стороне сервера.

Да это уже все давно знают, ты лучше подскажи пожалуйста как остальные скрипты все вынести в сервер с миссии (не здания)

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


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

В общем посмотрел раздел "Дополнительные карты, объекты" и был немного в шоке, вы все добавляете здания через файл миссии - всвязи с чем файл миссии неплохо увеличивается, у игрока просаживается фпс при прогрузке добавленных объектов.

Хотел бы вам предложить более оптимизированный вариант:

 

Заменяем в скрипте начало всех объектов с _vehicle_  на _bldObj  должно выглядеть так

 

 

_bldObj = objNull;

if (true) then

{

_bldObj = createVehicle ["Land_HBarrier_large", [6305.459, 7854.8101], [], 0, "CAN_COLLIDE"];

_bldObj setDir 36.99;

_bldObj setPosASL [6305.459, 7854.8101, 305.4];

};

 

После чего распаковываем dayz_server.pbo и создаем там папку Maps, в которую переносим файл с добавленными зданиями. 

Теперь заходим в \@DayZ_Epoch_Server\addons\dayz_server\init\server_function.sqf и добавляем в самый конец

 

execVM "\z\addons\dayz_server\Maps\название вашего файла.sqf";

 

и вуаля - все добавленные объекты как родные. 

Вы правда суёте сё в миссию? :laugh:

У меня всё в pbo и ни килобайта не надо качать. Я просто ржу

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


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

 

В общем посмотрел раздел "Дополнительные карты, объекты" и был немного в шоке, вы все добавляете здания через файл миссии - всвязи с чем файл миссии неплохо увеличивается, у игрока просаживается фпс при прогрузке добавленных объектов.

Хотел бы вам предложить более оптимизированный вариант:

 

Заменяем в скрипте начало всех объектов с _vehicle_  на _bldObj  должно выглядеть так

 

 

_bldObj = objNull;

if (true) then

{

_bldObj = createVehicle ["Land_HBarrier_large", [6305.459, 7854.8101], [], 0, "CAN_COLLIDE"];

_bldObj setDir 36.99;

_bldObj setPosASL [6305.459, 7854.8101, 305.4];

};

 

После чего распаковываем dayz_server.pbo и создаем там папку Maps, в которую переносим файл с добавленными зданиями. 

Теперь заходим в \@DayZ_Epoch_Server\addons\dayz_server\init\server_function.sqf и добавляем в самый конец

 

execVM "\z\addons\dayz_server\Maps\название вашего файла.sqf";

 

и вуаля - все добавленные объекты как родные. 

Вы правда суёте сё в миссию? :laugh:

У меня всё в pbo и ни килобайта не надо качать. Я просто ржу

Так поделись с народом как это сделать, будь добр :smile:

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


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

В mission.sqf (тот, что в dayz_server.pbo) суй объекты, вот и всё

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


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

В mission.sqf (тот, что в dayz_server.pbo) суй объекты, вот и всё

Я не про объекты (с этим уже решили, я добавил все так как предложил MetallurG), а про остальные скрипты, к примеру самозаливка, снятие скинов, буксировка и тд

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


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

Да закинь ты их как я выше сказал, да пути все поменяй. Делов-то.

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


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

 

В mission.sqf (тот, что в dayz_server.pbo) суй объекты, вот и всё

Я не про объекты (с этим уже решили, я добавил все так как предложил MetallurG), а про остальные скрипты, к примеру самозаливка, снятие скинов, буксировка и тд

Эти скрипты написаны под клиент. Их не перенести.

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

Или можеш слепить свой МОД_)

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


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

 

 

В mission.sqf (тот, что в dayz_server.pbo) суй объекты, вот и всё

Я не про объекты (с этим уже решили, я добавил все так как предложил MetallurG), а про остальные скрипты, к примеру самозаливка, снятие скинов, буксировка и тд

Эти скрипты написаны под клиент. Их не перенести.

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

Или можеш слепить свой МОД_)

Что то мне подсказывает, что все таки их можно абсолютно все всунуть в сервер, но вопрос как?

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


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

В общем посмотрел раздел "Дополнительные карты, объекты" и был немного в шоке, вы все добавляете здания через файл миссии - всвязи с чем файл миссии неплохо увеличивается, у игрока просаживается фпс при прогрузке добавленных объектов.

Хотел бы вам предложить более оптимизированный вариант:

 

Заменяем в скрипте начало всех объектов с _vehicle_  на _bldObj  должно выглядеть так

 

 

_bldObj = objNull;

if (true) then

{

_bldObj = createVehicle ["Land_HBarrier_large", [6305.459, 7854.8101], [], 0, "CAN_COLLIDE"];

_bldObj setDir 36.99;

_bldObj setPosASL [6305.459, 7854.8101, 305.4];

};

 

После чего распаковываем dayz_server.pbo и создаем там папку Maps, в которую переносим файл с добавленными зданиями. 

Теперь заходим в \@DayZ_Epoch_Server\addons\dayz_server\init\server_function.sqf и добавляем в самый конец

 

execVM "\z\addons\dayz_server\Maps\название вашего файла.sqf";

 

и вуаля - все добавленные объекты как родные. 

А у меня что то не выходит=( Сделал, вроде, всё как описано но, объекты не появились на карте=(

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


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

Походу нужен отдельный гайдик)) :smile:

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


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

 

В общем посмотрел раздел "Дополнительные карты, объекты" и был немного в шоке, вы все добавляете здания через файл миссии - всвязи с чем файл миссии неплохо увеличивается, у игрока просаживается фпс при прогрузке добавленных объектов.

Хотел бы вам предложить более оптимизированный вариант:

 

Заменяем в скрипте начало всех объектов с _vehicle_  на _bldObj  должно выглядеть так

 

 

_bldObj = objNull;

if (true) then

{

_bldObj = createVehicle ["Land_HBarrier_large", [6305.459, 7854.8101], [], 0, "CAN_COLLIDE"];

_bldObj setDir 36.99;

_bldObj setPosASL [6305.459, 7854.8101, 305.4];

};

 

После чего распаковываем dayz_server.pbo и создаем там папку Maps, в которую переносим файл с добавленными зданиями. 

Теперь заходим в \@DayZ_Epoch_Server\addons\dayz_server\init\server_function.sqf и добавляем в самый конец

 

execVM "\z\addons\dayz_server\Maps\название вашего файла.sqf";

 

и вуаля - все добавленные объекты как родные. 

Вы правда суёте сё в миссию? :laugh:

У меня всё в pbo и ни килобайта не надо качать. Я просто ржу

Пишу в этой теме так как связан вопрос именно с ней, я видел что многие хотят узнать как зделать скрипты некоторые на стороне сервера. Если не сложно ктонибудь сделайте гайд или напишите в коментах, как перенести на сторону сервера скрипт самозаливки крови и снятия одежды, оба скрипта есть на этом форуме

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


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

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

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

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

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

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

Войти

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

Войти сейчас

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.