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

Recommended Posts

Спасибо большое за помощь Ramond

 

И так, речь пойдет о прорисовке объектов на карте у клиента только в радиусе его обитания!

Тесты еще по фпс толком не проводил, но тему нужно развить, так как не хотелось оффтопить в другой теме

 

начнем:

 

1)

 

 

нам понадобится файл со списком объектов добавленных в массив ( переделанный файл dayz_server\missions\DayZ_Epoch_11.Chernarus\mission.sqf)

 

Скачать с дополнительными постройками, если что, удаляем лишнее для вас (сектор FNG, Трасса,  доп. казармы + пожарка, снеговики )

 

Вынесенные сами торговцы в отдельный файл Скачать

 

Это все ложем в dayz_server\missions\DayZ_Epoch_11.Chernarus\  и запаковываем обратно

 

 

 

 

 

 

Программа для конвертирования из формата редактора в формат динамических построек

 

2)

 

 

Открываем init.sqf В папке с вашей миссией

 

В блок

 

 

if (isServer) then {
    
   ..............
};
 

Вставляем :

 

 

_nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\traders.sqf";
 

У вас должно получится два подгружаемых файла в этом блоке:

 

 

 

  // Add trader citys
    _nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\mission.sqf";
    _nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\traders.sqf";
 

 

 

Здесь же ищем блок:

 

 

if (!isDedicated) then {
..........................
};
 

В этот блок прописываем

 

 

#include "client_init.sqf";
 

 

 

 

 

 

3)

 

 

 

Создаем в корне миссии файл client_init.sqf с таким содержимым:

 

 

[] spawn {

        private ["_objects","_total","_spawned","_upd_range","_pos_player","_object","_t","_moved","_a","_r"];

        PVDZE_load_objects = player;
        publicVariableServer "PVDZE_load_objects";

        waitUntil{!isNil "allObjects"};

        if(DZEdebug) then {    diag_log format["[DynObj] Receiving object from server took %1s",str (diag_tickTime - _t1)]; };

        waitUntil {!isNil "dayz_animalCheck"};

        _objects     = allObjects;
        allObjects     = nil;
        _total        = count _objects;
        _spawned     = [];
        _upd_range     = 300;
        _pos_player = getPos player;
        
        _t = diag_tickTime;
        {
            _object = (_x select 0) createVehicleLocal [0,0,0];
            _object setDir (_x select 2);
            _object setPos (_x select 1);

            if(count _x > 3 && (_x select 3)) then {
                _object setVehicleLock "LOCKED";
            };

            _spawned set[count _spawned,[_object,_x]];
        } count _objects;

        _objects = [];

        diag_log format["[DynObj] Initializing %2 objects in %1s ",str(diag_tickTime - _t),_total];

        while{alive player} do {

            _moved = _pos_player distance player;

            if(_moved > _upd_range) then { // Only update when player has moved at least _upd_range meters from his last saved position

                if(DZEdebug) then {
                    systemChat format["[DynObj] Player moved %1m since last cycle, checking for new/removable objects",_moved];

                     _t = diag_tickTime; // start timer for debug purposes
                    _a = 0; // keep track of how many objects added this cycle
                    _r = 0; // keep track of how many objects removed this cycle
                };

                _pos_player = getPos player;
                _i             = 0; // keep track of object index (outperforms forEach / _foreachIndex)

                {

                    if(player distance (_x select 1) < 1500) then {
                        _object = (_x select 0) createVehicleLocal [0,0,0];
                        _object setDir (_x select 2);
                        _object setPos (_x select 1);

                        if(count _x > 3 && (_x select 3)) then {
                            _object setVehicleLock "LOCKED";
                        };

                        if(DZEdebug) then { _a = _a + 1; };

                        _spawned set[count _spawned,[_object,_x]];
                        _objects set[_i,-1];
                    };
                    _i = _i + 1;
                } count _objects;

                _objects = _objects - [-1]; // remove added objects from objects array
                _i = 0;    // reset counter for use in spawned array

                {
                    if(player distance (_x select 0) > 1750) then {
                        _spawned set[_i,-1];
                        _objects set[count _objects, (_x select 1)];
                        deleteVehicle (_x select 0);
                        if(DZEdebug) then { _r = _r + 1; };
                    };
                    _i = _i + 1;
                } count _spawned;

                _spawned = _spawned - [-1];

                if(DZEdebug) then {
                    diag_log format["[DynObj] Added % objects - removed %2 objects - total active %3 - cycle took %4s",_a,_r,count _spawned,str (diag_tickTime - _t)];
                };

            } else {
                if(DZEdebug) then { diag_log format["[DynObj] Player moved %1m, not updating until %2m",_moved,_upd_range]; };
            };

            if(_moved > _upd_range-(_upd_range/4)) then {
                sleep 3; // almost at the edge, updating faster
            } else {
                sleep 6;
            };

        };
        
    };
 

 

 

Сохраняем

 

 

 

 

И самое важное, не забываем добавить в publicvariable.txt

 

!="PVDZE_load_objects"
 

 

 

Первоисточник

Edited by thorus (see edit history)

Share this post


Link to post
Share on other sites





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

Edited by thorus (see edit history)

Share this post


Link to post
Share on other sites

Спасибо большое за помощь игроку Ramond

 

И так, речь пойдет о прорисовке объектов на карте у клиента только в радиусе его обитания!

Тесты еще по фпс толком не проводил, но тему нужно развить, так как не хотелось оффтопить в другой теме

 

начнем:

 

1)

 

 

нам понадобится файл со списком объектов добавленных в массив ( переделанный файл dayz_server\missions\DayZ_Epoch_11.Chernarus\mission.sqf)

 

Скачать

 

Вынесенные сами торговцы в отдельный файл Скачать

 

Это все ложем в dayz_server\missions\DayZ_Epoch_11.Chernarus\  и запаковываем обратно

 

 

 

 

 

2)

 

 

Открываем init.sqf В папке с вашей миссией

 

В блок

 

 

if (isServer) then {
    
   ..............
};
 

Вставляем :

 

 

_nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\traders.sqf";
 

У вас должно получится два подгружаемых файла в этом блоке:

 

 

 

  // Add trader citys
    _nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\mission.sqf";
    _nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\traders.sqf";
 

 

 

Здесь же ищем блок:

 

 

if (!isDedicated) then {
..........................
};
 

В этот блок прописываем

 

 

#include "client_init.sqf";
 

 

 

 

 

 

3)

 

 

 

Создаем в корне миссии файл client_init.sqf с таким содержимым:

 

 

[] spawn {

        private ["_objects","_total","_spawned","_upd_range","_pos_player","_object","_t","_moved","_a","_r"];

        PVDZE_load_objects = player;
        publicVariableServer "PVDZE_load_objects";

        waitUntil{!isNil "allObjects"};

        if(DZEdebug) then {    diag_log format["[DynObj] Receiving object from server took %1s",str (diag_tickTime - _t1)]; };

        waitUntil {!isNil "dayz_animalCheck"};

        _objects     = allObjects;
        allObjects     = nil;
        _total        = count _objects;
        _spawned     = [];
        _upd_range     = 300;
        _pos_player = getPos player;
        
        _t = diag_tickTime;
        {
            _object = (_x select 0) createVehicleLocal [0,0,0];
            _object setDir (_x select 2);
            _object setPos (_x select 1);

            if(count _x > 3 && (_x select 3)) then {
                _object setVehicleLock "LOCKED";
            };

            _spawned set[count _spawned,[_object,_x]];
        } count _objects;

        _objects = [];

        diag_log format["[DynObj] Initializing %2 objects in %1s ",str(diag_tickTime - _t),_total];

        while{alive player} do {

            _moved = _pos_player distance player;

            if(_moved > _upd_range) then { // Only update when player has moved at least _upd_range meters from his last saved position

                if(DZEdebug) then {
                    systemChat format["[DynObj] Player moved %1m since last cycle, checking for new/removable objects",_moved];

                     _t = diag_tickTime; // start timer for debug purposes
                    _a = 0; // keep track of how many objects added this cycle
                    _r = 0; // keep track of how many objects removed this cycle
                };

                _pos_player = getPos player;
                _i             = 0; // keep track of object index (outperforms forEach / _foreachIndex)

                {

                    if(player distance (_x select 1) < 1500) then {
                        _object = (_x select 0) createVehicleLocal [0,0,0];
                        _object setDir (_x select 2);
                        _object setPos (_x select 1);

                        if(count _x > 3 && (_x select 3)) then {
                            _object setVehicleLock "LOCKED";
                        };

                        if(DZEdebug) then { _a = _a + 1; };

                        _spawned set[count _spawned,[_object,_x]];
                        _objects set[_i,-1];
                    };
                    _i = _i + 1;
                } count _objects;

                _objects = _objects - [-1]; // remove added objects from objects array
                _i = 0;    // reset counter for use in spawned array

                {
                    if(player distance (_x select 0) > 1750) then {
                        _spawned set[_i,-1];
                        _objects set[count _objects, (_x select 1)];
                        deleteVehicle (_x select 0);
                        if(DZEdebug) then { _r = _r + 1; };
                    };
                    _i = _i + 1;
                } count _spawned;

                _spawned = _spawned - [-1];

                if(DZEdebug) then {
                    diag_log format["[DynObj] Added % objects - removed %2 objects - total active %3 - cycle took %4s",_a,_r,count _spawned,str (diag_tickTime - _t)];
                };

            } else {
                if(DZEdebug) then { diag_log format["[DynObj] Player moved %1m, not updating until %2m",_moved,_upd_range]; };
            };

            if(_moved > _upd_range-(_upd_range/4)) then {
                sleep 3; // almost at the edge, updating faster
            } else {
                sleep 6;
            };

        };
        
    };
 

 

 

Сохраняем

 

 

 

 

И самое важное, не забываем добавить в publicvariable.txt

 

!="PVDZE_load_objects"
 

 

Если что забыл, поправлю, не ругать строго)

 

Первоисточник

Проверил всё работает построек нет пока нет игроков рядом,только торговцы стоят на своих местах.Спасибо за гайд

Edited by Vitalik (see edit history)

Share this post


Link to post
Share on other sites

Проверил всё работает построек нет пока нет игроков рядом,только торговцы стоят на своих местах.Спасибо за гайд

Я еще сам тестирую, проверяю как и что

 

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

Edited by thorus (see edit history)

Share this post


Link to post
Share on other sites

Я еще сам тестирую, проверяю как и что

 

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

Вот это без понятия даже,слушай а выложи свой файл с дополнительными твоими постройками 

Share this post


Link to post
Share on other sites

Я еще сам тестирую, проверяю как и что

 

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

diag_fps

Share this post


Link to post
Share on other sites

Не увидел примера новой структуры mission.sqf. Кратко о том как перевести в новый формат:

 

Берем стандартный код объектов:
_vehicle_1 = objNull;
if (true) then
{
  _this = createVehicle ["MAP_Mil_Barracks_i", [18149.762, 2082.8643, 0.044930469], [], 0, "CAN_COLLIDE"];
  _vehicle_1 = _this;
  _this setDir 40.678017;
  _this setPos [18149.762, 2082.8643, 0.044930469];
};

_vehicle_2 = objNull;
if (true) then
{
  _this = createVehicle ["MAP_Mil_House", [18119.195, 2022.3765, 0.00010681152], [], 0, "CAN_COLLIDE"];
  _vehicle_2 = _this;
  _this setDir 95.604897;
  _this setPos [18119.195, 2022.3765, 0.00010681152];
};

...
...
...

_vehicle_115 = objNull;
if (true) then
{
  _this = createVehicle ["MAP_Misc_PowerStation", [18292.102, 2247.5325, 0.63055074], [], 0, "CAN_COLLIDE"];
  _vehicle_115 = _this;
  _this setDir 40.77528;
  _this setPos [18292.102, 2247.5325, 0.63055074];
};

 

Переводим по формуле ["ObjectName",[setPosX,setPosY,setPosZ],setDir], в результате должно получиться так:
"PVDZE_load_objects" addPublicVariableEventHandler {
    allObjects = [
    ["Land_Mil_Barracks_i",[18149.762,2082.8643,0.044930469],40.678017],
    ["Land_Mil_House",[18119.26,2022.3821,0.00010681152],95.604897],
...
...
...
    ["Land_Misc_PowerStation",[18292.102,2247.5325,0.63055074],40.77528]
    ],
    owner (_this select 1) publicVariableClient "allObjects";
};

Внимание! У последнего объекта запятой быть не должно!

 

 

Файл traders.sqf должен выглядеть примерно так:


_unit_31 = objNull;
if (true) then
{
  _this = createAgent ["Soldier_MG_PKM_PMC", [8264.5371, 15495.855, 3.7374172], [], 0, "CAN_COLLIDE"];
  _unit_31 = _this;
  _this setDir 56.102802;
  _this setVehicleInit "this allowDammage false; this disableAI 'FSM'; this disableAI 'MOVE'; this disableAI 'AUTOTARGET'; this disableAI 'TARGET'; this setBehaviour 'CARELESS'; this forceSpeed 0;";
  _this setUnitAbility 0.60000002;
_this allowDammage false; _this disableAI 'FSM'; _this disableAI 'MOVE'; _this disableAI 'AUTOTARGET'; _this disableAI 'TARGET'; _this setBehaviour 'CARELESS'; _this forceSpeed 0;_this enableSimulation false;};


_unit_32 = objNull;
if (true) then
{
  _this = createAgent ["GUE_Woodlander3", [8266.668, 15482.221, 0.10264076], [], 0, "CAN_COLLIDE"];
  _unit_32 = _this;
  _this setDir -141.76392;
  _this setVehicleInit "this allowDammage false; this disableAI 'FSM'; this disableAI 'MOVE'; this disableAI 'AUTOTARGET'; this disableAI 'TARGET'; this setBehaviour 'CARELESS'; this forceSpeed 0;";
  _this setUnitAbility 0.60000002;
_this allowDammage false; _this disableAI 'FSM'; _this disableAI 'MOVE'; _this disableAI 'AUTOTARGET'; _this disableAI 'TARGET'; _this setBehaviour 'CARELESS'; _this forceSpeed 0;_this enableSimulation false;};

...
...
...


_unit_263 = objNull;
if (true) then
{
  _this = createAgent ["pook_Doc_Bell47", [8269.4893, 15490.62, 3.3378601e-006], [], 0, "CAN_COLLIDE"];
  _unit_263 = _this;
  _this setDir -104.75245;
  _this setVehicleInit "this allowDammage false; this disableAI 'FSM'; this disableAI 'MOVE'; this disableAI 'AUTOTARGET'; this disableAI 'TARGET'; this setBehaviour 'CARELESS'; this forceSpeed 0;  ";
  _this setUnitAbility 0.60000002;
_this allowDammage false; _this disableAI 'FSM'; _this disableAI 'MOVE'; _this disableAI 'AUTOTARGET'; _this disableAI 'TARGET'; _this setBehaviour 'CARELESS'; _this forceSpeed 0;_this enableSimulation false;};


processInitCommands;

 

Дистанцию подгрузки и выгрузки объектов можно изменить в client_init.sqf:

                {
                    if(player distance (_x select 1) < 1500) then { // настройка дистанции
                        _object = (_x select 0) createVehicleLocal [0,0,0];
                        _object setDir (_x select 2);
                        _object setPos (_x select 1);

                        if(count _x > 3 && (_x select 3)) then {
                            _object setVehicleLock "LOCKED";
                        };

                        if(DZEdebug) then { _a = _a + 1; };

                        _spawned set[count _spawned,[_object,_x]];
                        _objects set[_i,-1];
                    };
                    _i = _i + 1;
                } count _objects;

                _objects = _objects - [-1]; // remove added objects from objects array
                _i = 0;    // reset counter for use in spawned array

                {
                    if(player distance (_x select 0) > 1750) then { // настройка дистанции
                        _spawned set[_i,-1];
                        _objects set[count _objects, (_x select 1)];
                        deleteVehicle (_x select 0);
                        if(DZEdebug) then { _r = _r + 1; };
                    };
                    _i = _i + 1;
                } count _spawned;

 

 

Добавлю немного готовых решений для карты NAPF.

 

Асфальтированная дорога в торговый город Шраттен:

    //NAPF asphalted road Trader City Schratten
    ["MAP_kr_t_asf2_asf2",[12961.76,5964.8501,0.15310472],-10.671323],
    ["MAP_asf2_7_100",[12930.017,5960.1909],77.587875],
    ["MAP_asf2_7_100",[12955.713,5963.6875,1.5258789e-005],-100.71323],
    ["MAP_asf2_7_100",[12917.463,5956.6279,6.1035156e-005],70.514389],
    ["MAP_asf2_7_100",[12905.515,5951.5269,-0.00010681152],63.253605],
    ["MAP_asf2_7_100",[12894.314,5945.0688,-1.5258789e-005],56.341312],
    ["MAP_asf2_1_1000",[12879.95,5935.3545,-1.5258789e-005],55.49305],
    ["MAP_asf2_7_100",[12869.803,5927.2026,4.5776367e-005],47.660374],
    ["MAP_asf2_1_1000",[12856.908,5915.7285,4.5776367e-005],47.868805],
    ["MAP_asf2_1_1000",[12844.306,5903.8462,0.00012207031],46.32745],
    ["MAP_asf2_7_100",[12835.914,5894.1909,4.5776367e-005],36.739189],
    ["MAP_asf2_7_100",[12829.659,5882.9961,4.5776367e-005],25.568272],
    ["MAP_asf2_1_1000",[12823.605,5867.1274,0],20.118275],
    ["MAP_asf2_0_2000",[12817.941,5850.8198,6.1035156e-005],18.996674],
    ["MAP_asf2_0_2000",[12812.266,5834.458,-1.5258789e-005],18.961143],
    ["MAP_asf2_0_2000",[12806.635,5818.0415,6.1035156e-005],18.447439],
    ["MAP_asf2_0_2000",[12801.018,5801.6597,-6.1035156e-005],18.669155],
    ["MAP_asf2_7_100",[12801.099,5801.8203,6.1035156e-005],201.17354],
    ["MAP_asf2_7_100",[12795.614,5789.9873,-3.0517578e-005],209.06213],
    ["MAP_asf2_0_2000",[12788.701,5779.2607,4.5776367e-005],-140.57358],
    ["MAP_asf2_0_2000",[12777.543,5765.9336,0.00010681152],-139.87437],
    ["MAP_asf2_0_2000",[12766.168,5752.8398,0],-139.17378],
    ["MAP_asf2_0_2000",[12754.739,5739.7109,-4.5776367e-005],-138.42322],
    ["MAP_asf2_7_100",[12743.185,5726.8022,0.00015258789],222.39578],
    ["MAP_asf2_7_100",[12733.965,5717.9482,0.00015258789],228.63528],
    ["MAP_asf2_0_2000",[12723.871,5710.1357,1.5258789e-005],-127.61487],
    ["MAP_asf2_0_2000",[12710.236,5699.7227,0.00018310547],-130.19102],
    ["MAP_asf2_22_50",[12684.475,5673.5396,-0.00024414063],28.383541],
    ["MAP_asf2_0_2000",[12675.876,5658.6016,-3.0517578e-005],29.571743],
    ["MAP_asf2_0_2000",[12667.312,5643.4717,0.00015258789],29.093756],
    ["MAP_asf2_0_2000",[12658.713,5628.5283,4.5776367e-005],29.571743],
    ["MAP_asf2_0_2000",[12650.103,5613.521,6.1035156e-005],29.571743],
    ["MAP_asf2_0_2000",[12641.524,5598.583,1.5258789e-005],29.571743],
    ["MAP_asf2_22_50",[12634.366,5580.7642,7.6293945e-005],10.591627],
    ["MAP_asf2_0_2000",[12630.915,5563.8789,-1.5258789e-005],11.410409],
    ["MAP_asf2_0_2000",[12629.36,5525.4233,-3.0517578e-005],-168.01964],
    ["MAP_asf2_22_50",[12629.826,5544.7173,-4.5776367e-005],-7.9248333],
    ["MAP_asf2_22_50",[12629.801,5544.8755,4.5776367e-005],170.0592],
    ["MAP_asf2_0_2000",[12618.268,5490.7397,0.00012207031],-144.99414],
    ["MAP_asf2_22_50",[12625.673,5508.4951,4.5776367e-005],191.4584],
    ["MAP_asf2_0_2000",[12608.246,5476.562,-0.00010681152],-144.99414],
    ["MAP_asf2_0_2000",[12598.226,5462.4521,-0.00019836426],-144.99414],
    ["MAP_asf2_22_50",[12581.991,5430.1714,-7.6293945e-005],8.0685301],
    ["MAP_asf2_0_2000",[12579.054,5413.1895,0.00010681152],9.6576042],
    ["MAP_asf2_22_50",[12579.195,5413.71,4.5776367e-005],-166.46851],
    ["MAP_asf2_22_50",[12571.106,5396.1196,-6.1035156e-005],-142.16188],
    ["MAP_asf2_0_2000",[12556.486,5383.4302,0],-120.19775],
    ["MAP_asf2_0_2000",[12541.514,5374.7935,4.5776367e-005],-120.19775],
    ["MAP_asf2_0_2000",[12526.5,5366.1313,-1.5258789e-005],-120.19775],
    ["MAP_asf2_0_2000",[12511.476,5357.4668,3.0517578e-005],-120.19775],
    ["MAP_asf2_22_50",[12481.611,5336.3604,-9.1552734e-005],38.767746],
    ["MAP_asf2_0_2000",[12471.125,5322.6348,0.00021362305],37.194469],
    ["MAP_asf2_0_2000",[12462.639,5308.0112,0.00010681152],30.022554],
    ["MAP_asf2_22_50",[12456.357,5289.7759,0.00010681152],7.7718935],
    ["MAP_asf2_22_50",[12456.412,5289.9404,4.5776367e-005],188.39738],
    ["MAP_asf2_0_2000",[12449.95,5271.7358,0],-151.13425],
    ["MAP_asf2_0_2000",[12441.505,5256.585,-1.5258789e-005],-150.38803],
    ["MAP_asf2_0_2000",[12432.807,5241.5347,1.5258789e-005],-150.38803],
    ["MAP_asf2_0_2000",[12424.162,5226.4478,1.5258789e-005],-150.38803],
    ["MAP_asf2_0_2000",[12415.536,5211.4189,-1.5258789e-005],-150.38803],
    ["MAP_asf2_0_2000",[12406.978,5196.5063,-1.5258789e-005],-150.38803],
    ["MAP_asf2_22_50",[12391.285,5163.417,1.5258789e-005],10.087194],
    ["MAP_asf2_0_2000",[12388.303,5146.2896,-1.5258789e-005],9.7330446],
    ["MAP_asf2_0_2000",[12386.209,5129.2861,4.5776367e-005],6.7555504],
    ["MAP_asf2_22_50",[12388.193,5110.2261,1.5258789e-005],-17.109587],
    ["MAP_asf2_0_2000",[12393.962,5093.9917,6.1035156e-005],-19.840439],
    ["MAP_asf2_6konec",[12396.037,5088.2959,-6.1035156e-005],-19.853428],
    ["MAP_t_pyrus2s",[12381.131,5078.8618,-1.2484815],25.367994],
    ["MAP_t_quercus2f",[12402.81,5104.4409,0.34566125],-90.784027],
    ["MAP_t_populus3s",[12391.747,5122.624,-3.0517578e-005],25.872578],
    ["MAP_t_pinusS2f",[12419.986,5046.5391,-0.00015258789],16.578789],
    ["MAP_t_populus3s",[12395.714,5150.7075,-3.0517578e-005],20.484444],
    ["MAP_t_populus3s",[12404.16,5178.7041,4.5776367e-005],20.484444],
    ["MAP_t_populus3s",[12437.676,5237.1641,-0.00010681152],20.484444],
    ["MAP_t_populus3s",[12453.387,5265.4536,0.12509425],31.977455],
    ["MAP_t_populus3s",[12463.763,5295.6968,0.078610808],-17.665117],
    ["MAP_t_populus3s",[12483.958,5327.5596,7.6293945e-005],20.484444],
    ["MAP_t_populus3s",[12507.187,5347.0508,-0.00019836426],20.484444],
    ["MAP_t_populus3s",[12534.619,5363.5791,-6.1035156e-005],20.484444],
    ["MAP_t_populus3s",[12572.636,5389.1646,-0.00021362305],20.484444],
    ["MAP_t_populus3s",[12585.167,5407.8857,1.5258789e-005],20.484444],
    ["MAP_t_populus3s",[12594.908,5443.7573,4.5776367e-005],20.484444],
    ["MAP_t_populus3s",[12628.753,5494.4067,0.00016784668],20.484444],
    ["MAP_t_populus3s",[12634.842,5518.8501,-0.00012207031],20.484444],
    ["MAP_t_populus3s",[12643.348,5583.519,-0.00015258789],20.484444],
    ["MAP_t_populus3s",[12692.736,5671.7485,3.0517578e-005],20.484444],
    ["MAP_t_populus3s",[12730.438,5705.6533,0.00016784668],20.484444],
    ["MAP_t_populus3s",[12768.995,5744.1948,4.5776367e-005],20.484444],
    ["MAP_t_populus3s",[12801.028,5784.0645,3.0517578e-005],20.484444],
    ["MAP_t_populus3s",[12814.593,5815.8687,3.0517578e-005],20.484444],
    ["MAP_t_populus3s",[12826.802,5850.1631,6.1035156e-005],20.484444],
    ["MAP_t_populus3s",[12840.684,5886.2412,-3.0517578e-005],20.484444],
    ["MAP_t_populus3s",[12870.388,5917.1426,0.00024414063],20.484444],
    ["MAP_t_populus3s",[12901.829,5940.2227,0.00021362305],20.484444],
    ["MAP_t_populus3s",[12931.166,5953.0938,-0.0001373291],20.484444],
    ["MAP_t_populus3s",[12955.889,5956.7402,6.1035156e-005],20.484444],
    ["MAP_t_populus3s",[12675.719,5643.7969,0.20396914],-44.703213],
    ["MAP_t_populus3s",[12654.184,5607.1416,0.15627691],-34.953941],
    ["MAP_t_populus3s",[12421.755,5209.5605,0.16859712],20.484444],
    ["MAP_t_populus3s",[12783.314,5762.4585,-3.0517578e-005],-20.693563],
    ["MAP_t_pyrus2s",[12379.632,5092.2349,0.20175517],-142.66637],
    ["MAP_t_pinusN2s",[12378.704,5107.3486,0.1038281],22.037758],
    ["MAP_t_fraxinus2W",[12413.718,5043.3687,3.0517578e-005],-9.7274151],
    ["ClutterCutter_EP1",[12838.171,5873.1226,6.1035156e-005],0],
    ["ClutterCutter_EP1",[12834.66,5892.0098,4.5776367e-005],0],
    ["ClutterCutter_small_EP1",[12841.059,5900.2749,9.1552734e-005],0],
    ["ClutterCutter_small_EP1",[12847.492,5907.1162,0.00010681152],0],
    ["ClutterCutter_small_EP1",[12854.642,5913.7441,9.1552734e-005],0],
    ["ClutterCutter_small_EP1",[12863.591,5922.187,-7.6293945e-005],0],
    ["ClutterCutter_small_EP1",[12872.363,5929.5669,3.0517578e-005],0],
    ["ClutterCutter_small_EP1",[12878.904,5933.5049,-3.0517578e-005],0],
    ["ClutterCutter_small_EP1",[12884.042,5938.0298,-1.5258789e-005],0],
    ["ClutterCutter_small_EP1",[12894.727,5945.7837,4.5776367e-005],0],
    ["ClutterCutter_small_EP1",[12906.163,5952.4795,0],0],
    ["ClutterCutter_small_EP1",[12923.688,5958.4336,9.1552734e-005],0],

 

Южный аэродром:

    //South Airfield
    ["Land_Mil_Barracks_i",[18135.889,2066.3982,-0.1007977],40.678017],
    ["Land_Mil_Barracks_i",[18142.84,2074.5413,-0.10120597],40.678017],
    ["Land_Mil_Barracks_i",[18149.762,2082.8643,0.044930469],40.678017],
    ["Land_Mil_House",[18119.26,2022.3821,0.00010681152],95.604897],
    ["Land_Misc_PowerStation",[18292.102,2247.5325,0.63055074],40.77528],
    ["Land_Ind_TankSmall2",[18306.32,2262.9219,-0.051772546],40.199081],
    ["Land_Ind_Workshop01_01",[18347.258,2310.3188,0.071510009],-15.696789],
    ["Land_Ind_Workshop01_L",[18351.926,2300.7358,9.1552734e-005],-15.102435],
    ["Land_Ind_Workshop01_02",[18344.361,2294.5403,0.080210939],75.138786],
    ["Land_a_stationhouse",[18379.014,2306.6187,0.14486513],-15.492865],
    ["Land_Mil_Barracks",[18157.201,2092.0188,0.044887237],39.95377],
    ["Land_Mil_Barracks",[18165.625,2102.1077,0.034802496],40.140522],
    ["Land_Mil_Mil_Guardhouse",[18224.063,2164.9766,0.52437258],-139.96834],
    ["Land_Barrack2",[18216.773,2153.9507,-0.29207313],-140.27924],
    ["Land_Barrack2",[18210.078,2145.9851,-0.13304824],40.30899],

 

THORUS, читай ЛС.

 

Ув.модераторы, поправьте ошибку в названии темы, вместо "Динамиеские" - "Динамические" 

Edited by Ramond (see edit history)

Share this post


Link to post
Share on other sites

спасибо

Перекачай файл из шапки, там в твоем запятая пропущена была

Share this post


Link to post
Share on other sites

Перекачай файл из шапки, там в твоем запятая пропущена была

я че то уже пол часа сижу и с шапки пробовал и ото всюду не появляются вообще объекты не че понять не могу вчера работало  :smile:  сейчас ещё буду пробовать спасибо

Share this post


Link to post
Share on other sites

diag_fps

это разве серверный? это клиентский вроде как

Share this post


Link to post
Share on other sites

я че то уже пол часа сижу и с шапки пробовал и ото всюду не появляются вообще объекты не че понять не могу вчера работало  :smile:  сейчас ещё буду пробовать спасибо

 

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

 

я че то уже пол часа сижу и с шапки пробовал и ото всюду не появляются вообще объекты не че понять не могу вчера работало  :smile:  сейчас ещё буду пробовать спасибо

Забирай из шапки, ссылку в шапке не обновил просто, уже все ок, и перепроверил

 

Как раз проверял сектор и подтвердились ожидания))) для ботов этих построек не существует, ботовские пули пролетают насквозь

Share this post


Link to post
Share on other sites

 

для ботов этих построек не существует

 

Вот что говорят на этот счет авторы:

 

Предлагается использовать createVehicleLocal скрипт в серверной части.

Share this post


Link to post
Share on other sites

 

Вот что говорят на этот счет авторы:

 

Предлагается использовать createVehicleLocal скрипт в серверной части.

 

Дома буду, посмотрим на этот счет

А то на работе у меня епочмод блокируется сисадминами)

Share this post


Link to post
Share on other sites

Дома буду, посмотрим на этот счет А то на работе у меня епочмод блокируется сисадминами)

 

Не совсем понятно что они имеют в виду. В своих стресс-тестах используется немного другой код. Статистика конечно положительная. Сервер с свежей БД (стандартной) и дистанцией видимости 1600 падает при спавне 100 000 динамическикх объектов, когда при тех же параметрах достаточно 30 000 глобальных объектов для падения сервера. Вывод: комфортно при хорошем онлайне можно смело использовать 10 000 - 20 000 динамических объектов без ущерба производительности.

Edited by Ramond (see edit history)

Share this post


Link to post
Share on other sites

в дополнение к гайду скину ссылку на программу для перевода из формата редактора в формат под динамические постройки
http://s-platoon.ru/index.php?/topic/4596-programma-dlia-konvertirovaniia-iz-formata-reda/

Share this post


Link to post
Share on other sites

я че то уже пол часа сижу и с шапки пробовал и ото всюду не появляются вообще объекты не че понять не могу вчера работало  :smile:  сейчас ещё буду пробовать спасибо

скрипт предназначен только для 1 файла,нужно все постройки в 1 файл пихать,иначе работать не будет

сам долго голову ломал

Share this post


Link to post
Share on other sites

Удачи с использованием) Почитали бы чтоль баг репорты, и там же выкладка есть по замерам ФПС.

Дурацкий скрипт, и не вытянет своего предназначения.

Баги попрут только в путь.

1. Лут - глобальный. Каждый игрок создавая себе через локал объект будет спавнить лут.

2. Один игрок сломл домик, и ушел, другой подбежал и домик целенький. т.к. по скрипту он его локально создает.

3. Техника....... ну тут вообще молчу.

4. Отсутствие синхронизации звука, анимации, и т.д. и т.п.

 

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

 

А попросту - взяли и попробовали свалить постройки с сервака на бедных клиентов.

 

Юзать надо волшебные функции армы -

hideObject

enableSimulation

и т.п.

И юзать их надо на ботов, а на статике все это никак не сказывается. Один хрен все в проксиках.

Отключение симуляции, на миссиях при отсутствии внутри триггер зоны игроков, даст прирост, и серверу и клиентам.

Скрытие объектов даст прирост только при небольшой визуальной дальности отображения. - Когда скрывают объекты дальше ~800м, а то что там дальше 2.5км уже значения не имеет ни какого.

 

И мне интересно -

А если тело летит на вертолете, этж с какой еб эпической скоростью будут удаляться\создаваться объекты, отрисовываться скрытые, включаться\выключаться симуляция....

Полный алес.

Ну это все мое имхо.))

Share this post


Link to post
Share on other sites

 

1. Лут - глобальный. Каждый игрок создавая себе через локал объект будет спавнить лут. 2. Один игрок сломл домик, и ушел, другой подбежал и домик целенький. т.к. по скрипту он его локально создает. 3. Техника....... ну тут вообще молчу. 4. Отсутствие синхронизации звука, анимации, и т.д. и т.п.

 

Ничего из перечисленного за год использования не наблюдалось.

1. Лут спавнится как обычно, для каждого свой, удаляется по очистке server_functions. Для лута это вообще не используется никак. Не надо вводить в заблуждение.

2. Постройки только те, которые прописываются в mission.sqf, пользовательские не участвуют. 

3. Техника? Транспорт тем более никакого отношения не имеет. Смотри код скрипта.

4. Анимация? О какой анимации и звуке идет речь? Дверей? Ворот? Это вообще никак не влияет на производительность, на стабильность и подавно.

 

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

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

 

Я не понимаю, откуда такое неприятие этого скрипта? Или это было в приватном разделе на коммерческих рельсах, а я пришел и весь ваш бизнес испортил?

То эпочевцы украли код, то это вообще скрипт плохой и от него будет только хуже. Может хватит уже?

Share this post


Link to post
Share on other sites

Ничего из перечисленного за год использования не наблюдалось.

1. Лут спавнится как обычно, для каждого свой, удаляется по очистке server_functions. Для лута это вообще не используется никак. Не надо вводить в заблуждение.

2. Постройки только те, которые прописываются в mission.sqf, пользовательские не участвуют. 

3. Техника? Транспорт тем более никакого отношения не имеет. Смотри код скрипта.

4. Анимация? О какой анимации и звуке идет речь? Дверей? Ворот? Это вообще никак не влияет на производительность, на стабильность и подавно.

 

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

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

 

Я не понимаю, откуда такое неприятие этого скрипта? Или это было в приватном разделе на коммерческих рельсах, а я пришел и весь ваш бизнес испортил?

То эпочевцы украли код, то это вообще скрипт плохой и от него будет только хуже. Может хватит уже?

Мне плевать на скрпт, и на коммерческую ветку, и никакого подобного скрипта там не было.

Тут ставят скрипты 90% вообще не понимая за каким хреном это делают.

И если ты предлогаешь ставить это УГ(а это УГ) то распиши вменяемо.

 

P.S. К выше написаному, - какой код украли? Где я это писал? - Про формат данных? Я там написал что мне насрать вроде не?

 

 

Теперь по скриптам этим -

 

Епрст, а лут что не привязан к зданию? - Посмотри cfgBuildingLoot.hpp

И

если каждый игрок ставит здание самостоятельно - то наверное и лут в

нем ресает самостоятельно. Только лут - является глобальным.

Хотя проще говоря(из тестов той ветки):

 

 

A few problems with using createVehicleLocal for buildings and vehicles:

  • Damage, sounds, physics, etc. will not be synchronized. So the building may be destroyed on one client and standing on another.
  • Entering a vehicle created locally (such as bike) will not show for

    other clients. To them your player will be left standing where you got

    in the vehicle. They can shoot and kill your player where they see it

    standing. Then on your client you fall out of the vehicle and die. If

    you get out of the local vehicle somewhere else other clients will see

    your player teleport away from the get in position.

  • Loot is global, so if friends are looting together they see each

    other pick things up, etc. Every time a player relogs they will recreate

    these local buildings on their client and respawn loot globally. To

    prevent that exploit you would need to add some exception that checks if

    the building is local to the client. If it is then it needs to check if

    loot was spawned there recently and not respawn it.

 

И в догонку:

 

Local buildings > 2km away:

  • hideObject true: no difference, FPS identical before and after hiding
  • enableSimulation false: small but consistent FPS

    boost of 10-15% (2-3 FPS). I tested several times because the difference

    was so small. It is more significant with more objects. With 10k

    objects it was only ~8%, 30k objects ~11% and 15% with 80k objects.

  • deleteVehicle: significant boost of 15%+ (8-10 FPS) @ 10k objects

Global buildings > 2km away:

  • hideObject true: no difference
  • enableSimulation false: significant difference with 100k objects spawned on the server, client FPS jumped from 5 all the way to 51-52 after disabling simulation client side
  • deleteVehicle: did not test, assume FPS increase

Local AI:

  • hideObject true: no difference
  • enableSimulation false: big (9-10) FPS increase
  • deleteVehicle: obvious FPS increase

 

Global AI:

  • hideObject true: did not test, assume no difference
  • enableSimulation false: assume FPS increase, epoch traders already use it
  • deleteVehicle: assume FPS increase

 

Global drivable vehicles:

  • hideObject true: did not test, assume no difference
  • enableSimulation false: small boost 10-15%
  • deleteVehicle: assume FPS increase

 

Уже исходя из тестов можно вытащить очевидное

1. Замеры для HideObj не проводились толком. Т.к. не указана дистанция, кол-во объектов и дистанция скрытия.

2.

Отключение симуляции дает прирост, хотя опять автор не написал - каким

объектам он отключал симуляцию. - У бисов разрабы уже писали, что для

статики это не играет роли.

Судя по тому что прирост давало по тестам, - значит отключали на всем подряд в т.ч. и на ботах.

3. Удаление объектов дает прирост - это и ежу понятно, но в совокупности с косяками(при

быстром передвижении персонажа - вертолет например, воссоздание и

прорисовка будут эпично жрать клиентский проц идавить на память), нет

синхронизации - да тех самых открытия дверей и т.п. - один открыл у

другого закрыта. Про транспорт - этот скрипт можно и на транспорт

прицепить или ты не видел там AllVehicles в массиве?? Про лут уже писал.

И в той теме об этом так же написано. Как следствие - если у тебя на

сервере 100к объектов, и ты свалил все на клиентов, вместо чистки БД, то

наверное ты в какой то степени вернешь ФПС для ряда игроков которые

привыкли бегать пешком, которым плевать на синхронизацию и т.п. вещи.

 

Описывать данные минусы при создании тем - обязательно надо. А не просто ссылку на оригинал кидать.

Edited by NoNameUltima (see edit history)

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Хотя проще говоря(из тестов той ветки):

 

Ты опустил самое главное. Если как ты говоришь, это ничего не дает:

 

 

Other stuff:
 
Global objects have a much more severe impact on client FPS than local objects. I was able to spawn up to 100K local objects before my FPS tanked to 13-15. With only 30k global objects spawned on the server my FPS was single digits (5-7).
AI are much worse than buildings. With only 2k local AI my FPS was already down to 13-15.
Server FPS is cut by 1/3 after spawning 4k global cars 45 --> 30
Server FPS is almost halved by spawning 30k global buildings 45 --> 25

Ссылка.

Я скажу что имел в виду автор: 100к локальных объектов = 13-15 fps, 30к глобальных объектов = 5-7 fps. Это о многом говорит. И никто не обязывает всенепременно поставить на сервер эти 100 тысяч объектов, разгружаешь с сервера 1500 объектов по клиентам, и то не разом, они будут им подгружаться по мере их приближения к этим объектам. Второе, при глобальных объектах клиенту грузится все, чего нельзя сказать о локальных. Каждый клиент подгружает столько объектов, сколько ему необходимо в данный момент в радиусе тех координат, где он находится. И также выгружается, когда необходимость в этих объектах отпадает. У меня прирост FPS с момента установки этого скрипта. За год ни один клиент не жаловался на понижение фпс, баги, лаги, фризы - все что может быть связано с объектами. Стабильность и быстродействие. 

 

Что касается техники. Да сколько можно повторять? Скажи, ты прописываешь в mission.sqf транспорт? Нет? Так причем здесь тогда транспорт! Ах да, AllVehicles! А что это такое? А давай посмотрим: https://community.bistudio.com/wiki/ArmA_2:_CfgVehicles. Ты хочешь чтобы вместо AllVehicles были перечислены все классы зданий? Куда проще указать супер-класс для всего. И указание супер-класса не руководство к действию - использовать CreateVehicleLocal для техники, мозг надо включать иногда. Кто будет это использовать для транспорта, покажи мне таких, посмеюсь.

 

И в вертолетах, да что там, самолетах - при максимальной скорости передвижения ни у кого проблем не возникало. Насчет базы данных не переживай, чистится с каждым рестартом и по расписанию необходимыми функциями. Скрипт обрабатывает свои 1500 динамических объектов, тест по 100к я тебе уже привел, для комфортной работы хватит и 10-15к, без ущерба серверу и клиентам. В перспективе есть запас производительности.

 

Описывать минусы надо, но не вводить в заблуждение. Каждый сам для себя решит. Поставит, посмотрит, оценит высокий fps, оставит. Не понравится чтото, в чем я лично сомневаюсь, уберет. Да и более того, никто не обязывает использовать исключительно этот метод, можно совмещать оба, локальные и глобальные. Смотря что и для чего ставить на карте.

 

Оптимизация делается только на статические объекты: архитектура, укрепления, торговые города - все что ты сделаешь в редакторе и захочешь вставить. 

Тебя никто не заставляет ставить это УГ. И я понимаю почему для тебя это УГ. Ты занимаешься оптимизацией серверов. Не бесплатно.

И если человек говорит что у него чтото украли, значит ему не плевать, как ты выразился. Иначе не написал бы, что эпочевцы твой формат украли.

 

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

 

Всем хорошего FPS и настроения!

Edited by Ramond (see edit history)

Share this post


Link to post
Share on other sites

ЛяЭбу - футоболист такой.

30к объектов - это эпично перегруженная БД.

Если пол черно застроить, и у тебя на серваке 50 тел играют нон стоп - ну давай посчитаем -

База 200 объектов на норм серверах на 1 тело.

50*200=10к + ~1.5к статика такая как обломки, СЗ и т.п.

Да даже если все игроки как один построят себе по 2 базы не будет никаких 30к.

 

В реалиях в БД ~ 7-9к объектов при онлайне 20-30 считая технику!

 

И за счет чего вырос ФПС в городе? а?

Там объектов стало меньше? Так вроде скрипт спавнит равное кол-во объектов при заходе в зону.

 

Буферизация дальности уже есть в арме, если ты об этом не слышал - называется она - дальность обзора.

И если на сервере стоит 5к дальность - то конечно потом можно придумывать костыли и вводить свою дальность.

 

"И если человек говорит что у него чтото украли, значит ему не плевать, как ты выразился. Иначе не написал бы, что эпочевцы твой формат украли."

1. Я написал это в кавычках - понимаешь сарказм? см п.2

2. За 4 года они наконец додумались ввести вменяемый формат вместо портянок с объектами по 15к строк. Чему я даже рад.

 

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

 

И то, что тут обсуждение идет - это хорошо и жЫрный плюс.

 

А если ты за поднятие ФПС - вот тебе скрипт, 100 летней давности, в который необходимо добавить отключение\включение симуляции для объектов.

Скрипт был еще года 2+++ назад написан, я лично забил исходя из того, что меньше 60фпс мало у кого на сервере.(сам скрипт ниже)

Да и БИСовцы отписали, что значения особого не прибавит еще аж в 2011г

Posted on 12 Nov, 2011
HomerJohnston
Contrary to Krause's suggestions above, using "this enableSimulation False" on static objects has no effect on a dedicated server's bandwidth usage or FPS (as per current 1.59 Release version).

 

Но тут оговорка - статик обжект, да и версия 1.59, а значит к АИ вполне применимо, да и на 1.63 мб что то поменялось.

Что касается скрытия объектов, - дает прирост, и зависит напрямую от дальности видимости.

 

Сам скрипт:

 

[] spawn
    {
        diag_log("[#Ultima]: Запуск скрипта скрытия, или отображения объектов...");
        uiSleep 90;    //    Ожидание пролага и стабилизации.
        diag_log("[#Ultima]: Скрипт скрытия, или отображения объектов запущен.");
        Private ["_refreshDistance", "_visualDistance", "_allObj", "_lastPos", "_mapCenter", "_mapRadius", "_objs", "_hide", "_visual"];
        //    Х метров - Расстояние обновления видимости объектов (Если игрок удалился от точки отсчета на X метров - обновить точку отсчета, и обновить видимость объектов)
        _refreshDistance = 200;
        //    Дальность прорисовки объектов от игрока за вычитанием _refreshDistance
        _visualDistance  = 800;
        //    Массив объектов которые можно и необходимо скрывать\отображать
        _allObj          =
            [
                "AllVehicles"
                ,"BuiltItems"
                ,"DZE_Base_Object"
                ,"DZE_Housebase"
                ,"House"
                ,"ModularItems"
            ];
        _lastPos   = [-1000, -1000, -1000];
        _mapCenter = getMarkerPos "center";
        _mapRadius = _mapCenter select 0;
        while {true} do
            {
                if ( (player distance _lastPos) > _refreshDistance ) then
                    {
                        _lastPos = getPos player;
                        //_hide    = 0;
                        //_visual  = 0;
                        _objs = nearestObjects [_mapCenter, _allObj, _mapRadius];
                        {
                            if ( (player distance _x) < _visualDistance ) then
                                {
                                    _x hideObject false;
                                    //_visual = _visual + 1;
                                }
                            else
                                {
                                    _x hideObject true;
                                    //_hide = _hide + 1;
                                };
                        } forEach _objs;
                        //diag_log(format["[#Ultima]: Скрыто за цикл: %1. Отображено за цикл: %2.", _hide, _visual]);
                    };
                if ( (vehicle player) == player ) then
                    {uiSleep 5;}
                else
                    {uiSleep 2;};
            };
    };


P.S. Оптимизацией не занимаюсь, ни платно ни бесплатно.

Edited by NoNameUltima (see edit history)

Share this post


Link to post
Share on other sites

И тем не менее ты добавил в свою сборку

 

Текущее обновление v.0.0.4.4   Добавлено Добавлен скрипт, скрытия, или отображения объектов в зависимости от дистанции до персонажа. Добавлен скрипт включающий, или отключающий симуляцию объектов, в зависимости от дистанции до персонажа. *Оба скрипта выше, вынесены в единый скрипт. В сборке по умолчанию отключены. Исправлено

 

Но не так давно утверждал что это лишнее, что клиентам от этого хуже.

Двойные стандарты.

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 Venom21
      Появилась такая проблема, нужно закрыть некоторые слоты под одежду, когда на определённый слот одет предмет…
      пример: возьмём экзоскелет от Фидова, там есть две версии которая одеваеться как на тело и ноги, и есть которая одеваться на разгрузку и пояс, так вот, нужно например чтобы при одетом экзаче на тело и ноги слоты под пояс и разгрузку блокировались, либо только под определенные предметы, если есть интерес то цену можем в личке обсудить…
      P.S. Разрешение от Фидова на переделку и переупаковку есть)
    • By CubeIn
      Здарова, уважаемые знатоки, вопрос.
      Мне скриптер скинул скрипт и сказал закинуть её в северную часть, но не указал куда именно. Подскажите пожалуйста, куда мне её деть? 
    • By CubeIn
      Здарова всем!
      У меня срочный вопрос опытным хозяинам серверостроения. Есть ли возможность настроить холод на карте Namalsk? А то слишком холодновато игрокам, а где это настраивать...
    • By BorizzK
      Накатал по быстрому для себя и своих ребят от нефиг делать, тк в командировке и дейзить возможности нет, только удаленно ковырять сервер
      Внутри настройки через переменные
      путь к базе сервера и инстанс ид берет из конфига сервера (нужно настроить имя файла и путь в файле)
      Мониторит сервер по названию окна, сохранив pid
      При вылете в 90% случаев корректно убивает процесс
      При перезапуске так же
      При каждом старте с 0 и при перезапусках делает бэкапы баз/настроек/
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • By BorizzK
      В эксперементалке 1.08 если сбросить предмет находясь на машине (крыше, багажнике, капоте в кузове) предмет проваливается сквозь машину на землю или оказывается в ее текстурах
       
      Тикет
      https://feedback.bistudio.com/T152071
       
      ответ богемии поразителен - сейчас нет простого решения
       
      А ниже что? Проще не бывает...
       
      Собственно код фикса (Автор Я)
       
      Code ``` modded class ItemBase extends InventoryItem { override void EEItemLocationChanged(notnull InventoryLocation oldLoc, notnull InventoryLocation newLoc) { super.EEItemLocationChanged(oldLoc,newLoc); if (newLoc.GetType() == InventoryLocationType.GROUND) { if (oldLoc.GetParent()) { PlayerBase player = PlayerBase.Cast(oldLoc.GetParent()); if (player) { FixPositionIfDropOnCar(player); } } } } void FixPositionIfDropOnCar(PlayerBase player) { vector m_RayStart; vector m_RayEnd; m_RayStart = player.GetPosition(); m_RayStart[1] = m_RayStart[1] + 0.5; m_RayEnd = m_RayStart; m_RayEnd[1] = m_RayEnd[1] - 1; RaycastRVParams m_RayCastInput = new RaycastRVParams(m_RayStart, m_RayEnd, this, 0.05); array<ref RaycastRVResult> m_RayCastResults = new array<ref RaycastRVResult>; m_RayCastInput.with = player; m_RayCastInput.flags = CollisionFlags.FIRSTCONTACT; if (DayZPhysics.RaycastRVProxy(m_RayCastInput, m_RayCastResults)) { if (m_RayCastResults.Count() > 0) { Car car; if (Class.CastTo(car, m_RayCastResults[0].obj) || Class.CastTo(car, m_RayCastResults[0].parent)) { this.SetPosition(m_RayCastResults[0].pos + (player.GetDirection() * 0.1)); } } } } } ``` Наверное имеет смысл чуть приподнять предмет над поверхностью, но необходимость этого зависит от типа предмета, потому не стал этого делать
       
      чуть откорректировал код
  • 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.