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
LekstoR

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

Recommended Posts

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

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

 

Заменяем в скрипте начало всех объектов с _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";

 

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

Share this post


Link to post
Share on other sites



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

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

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

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. Удаляет объект.

Share this post


Link to post
Share on other sites

Спасибо :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"?

Edited by voks32 (see edit history)

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Спасибо :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 и т.д объектов не будет

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

 

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

 

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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

 

У меня вообще все строения и включая сектор Зла, перенесён в сервер и не чё фпс 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 проблем ящики с сектора через некоторое время исчезают!
Если кто знает как поправить подскажите?
 

Share this post


Link to post
Share on other sites

 

 

У меня вообще все строения и включая сектор Зла, перенесён в сервер и не чё фпс 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:  это ж еще и от машины зависит

Share this post


Link to post
Share on other sites

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

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

 

if (isServer) then {

..........

};

 

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

Share this post


Link to post
Share on other sites

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

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

 

if (isServer) then {

..........

};

 

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

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

Share this post


Link to post
Share on other sites

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

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

 

Заменяем в скрипте начало всех объектов с _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 и ни килобайта не надо качать. Я просто ржу

Share this post


Link to post
Share on other sites

 

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

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

 

Заменяем в скрипте начало всех объектов с _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:

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

 

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

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

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

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

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

Share this post


Link to post
Share on other sites

 

 

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

 

Заменяем в скрипте начало всех объектов с _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";

 

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

 

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

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

 

Заменяем в скрипте начало всех объектов с _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 и ни килобайта не надо качать. Я просто ржу

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

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

×
×
  • 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.