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

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

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

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

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

Мне подсказали как повысить FPS:

1. В инфи вырезал это if ((count(toArray ADMINCHECK)) != 26) then {[] spawn {uiSleep (300 + (random 200));{_x setPosATL [5000,5000,100];} forEach (playableUnits+vehicles);};};

 херню
2. вот такие функции в инфи заменить
 
adminBanPerm =
 {
  {
   if (name x == this select 0) then
 
меняй там then на exitWith
 
примерно 20 их в инфи
3. И еще там есть поиск типа - nearestObjects и там цифры запредельные 10000000
можно смело менять на 30000 - такого размера карт уж точно не бывает
 
4. Уменьшил дальность прорисовки травы в файле extra_rc.hpp добавил это:

class ItemMap {
class trava10 {
text = "Трава: Ультра";
script = "setTerrainGrid 10; systemChat('Качество травы установлено на: Ультра');";
};
class trava25 {
text = "Трава: Нормально";
script = "setTerrainGrid 25; systemChat('Качество травы установлено на: Средне');";
};
class trava40 {
text = "Трава: Низко";
script = "setTerrainGrid 40; systemChat('Качество травы установлено на: низко');";
};
class trava50 {
text = "Трава: Выкл.";
script = "setTerrainGrid 50; systemChat('Трава отключена');";
};
};
};

 
Прирост фпс составил примерно 30% ,есть еще способы повысить фпс?

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


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

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

  • 0

Сливать с моего модифицированного инфи наработки не стоит, да и тут не только мой труд был указан. Хотя по факту это малая часть того, что можно в инфи убрать и упростить. Да и дальность травы можно регулировать через AHconfig.sqf


1. Вырезай то, что не требуется во всех файлах. Обычно мы половину параметров отключаем значением false или 0, однако если вам вообще какие-то функции не нужны, то их можно просто вырезать (Меньше занимает памяти как минимум).
2. Не используйте дублирующие файлы. Часто вижу что в миссии по 2-3 compile с разными изменениями. Полный бред, используйте один файл и все изменения делайте в нем. Так же я с epochmod.com упрощал compile. Правда я его еще чуток упрощу позже для себя.

if (!isDedicated) then 
{

	"filmic" setToneMappingParams [0.07, 0.31, 0.23, 0.37, 0.011, 3.750, 6, 4]; setToneMapping "Filmic";
	BIS_Effects_Burn = compile preprocessFile "\ca\Data\ParticleEffects\SCRIPTS\destruction\burn.sqf";
	
	fnc_usec_selfActions = compile preprocessFileLineNumbers "Fixes\fn_selfActions.sqf";

	_compile = [
		"player_zombieCheck",
		"player_zombieAttack",
		["fnc_usec_damageActions", "fn_damageActions"],
		["fnc_inAngleSector", "fn_inAngleSector"],
		["fnc_usec_unconscious", "fn_unconscious"],
		["player_temp_calculation", "fn_temperatur"],
		"player_weaponFiredNear",
		"player_animalCheck",
		"player_spawnCheck",
		"player_dumpBackpack",
		"building_spawnLoot",
		"building_spawnZombies",
		"player_fired",
		"player_harvest",
		["player_removeNearby", "object_removenearby"],
		"player_unlockDoor",
		"player_changeCombo",
		["player_plotPreview","object_showPlotRadius"],
		"player_upgradeVehicle",
		"player_updateGui",
		"player_crossbowBolt",
		"player_music",
		"player_death",
		"player_checkStealth",
		["world_sunRise","fn_sunRise"],
		["world_surfaceNoise","fn_surfaceNoise"],
		"player_humanityMorph",
		"player_throwObject",
		"player_alertZombies",
		"fn_gearMenuChecks",
		"object_roadFlare",
		["object_setpitchbank","fn_setpitchbank"],
		"object_monitorGear",
		"local_roadDebris",
		"zombie_findTargetAgent",
		"zombie_loiter",
		"zombie_generate",
		"wild_spawnZombies",
		"dog_findTargetAgent",
		"player_antiWall",
		["player_selectSlot","ui_selectSlot"],
		"player_gearSync",
		"ui_changeDisplay",
		"ui_gear_sound",
		["player_hasTools","fn_hasTools"],
		["player_checkItems","fn_checkItems"],
		["player_removeItems","fn_removeItems"],
		"player_traderCity",
		"epoch_returnChange"
	];

	{
		_prefix = "\z\addons\dayz_code\compile\";
		if (typename _x == "STRING") then {
			if (isNil _x) then { call compile format["%1 = compile preprocessFileLineNumbers ""%2%1.sqf"";", _x, _prefix]; };
		} else {
			if (isNil (_x select 0)) then { call compile format["%1 = compile preprocessFileLineNumbers ""%2%3.sqf"";", (_x select 0), _prefix, (_x select 1)]; };
		};
	} count _compile;

	diag_log "[Сервер] - [Compile]: Выполняется загрузка модифицированных функций...";
	
	player_switchModel 	= compile preprocessFileLineNumbers "Fixes\dayz_code\compile\player_switchModel.sqf";
	player_unlockVault 	= compile preprocessFileLineNumbers "Fixes\dayz_code\compile\player_unlockVault.sqf";
	player_lockVault 	= compile preprocessFileLineNumbers "Fixes\dayz_code\compile\player_lockVault.sqf";
	player_packTent 	= compile preprocessFileLineNumbers "Fixes\dayz_code\compile\player_packTent.sqf";
	player_packVault 	= compile preprocessFileLineNumbers "Fixes\dayz_code\compile\player_packVault.sqf";
	player_gearSet 		= compile preprocessFileLineNumbers "Fixes\dayz_code\compile\player_gearSet.sqf";
	snap_build			= compile preprocessFileLineNumbers "Scripts\SnapBuildPro_Vector\snap_build.sqf";
	
	diag_log "[Сервер] - [Compile]: Модифицированные функции загружены";
	
	call compile preprocessFileLineNumbers "z\addons\dayz_code\compile\player_murderMenu.sqf";

	_actions = [
		["player_removeObject","remove"],
		"player_countmagazines",
		"player_addToolbelt",
		"player_copyKey",
		["player_reloadMag","player_reloadMags"],
		"player_loadCrate",
		"player_craftItem",
		["player_tentPitch","tent_pitch"],
		["player_vaultPitch","vault_pitch"],
		"player_drink",
		"player_eat",
		"player_useMeds",
		["player_fillWater","water_fill"],
		"player_makeFire",
		"player_harvestPlant",
		"player_goFishing",
		"object_pickup",
		"player_flipvehicle",
		["player_deathBoard","list_playerDeathsAlt"]
	];
	
	{
		_prefix = "\z\addons\dayz_code\actions\";
		if (typename _x == "STRING") then {
			if (isNil _x) then { call compile format["%1 = compile preprocessFileLineNumbers ""%2%1.sqf"";", _x, _prefix]; };
		} else {
			if (isNil (_x select 0)) then { call compile format["%1 = compile preprocessFileLineNumbers ""%2%3.sqf"";", (_x select 0), _prefix, (_x select 1)]; };
		};
	} count _actions;
	
	dayz_spaceInterrupt 	= 	compile preprocessFileLineNumbers "Fixes\dayz_code\actions\dayz_spaceInterrupt.sqf";
	player_wearClothes 		= 	compile preprocessFileLineNumbers "Fixes\dayz_code\actions\player_wearClothes.sqf";
	player_build 			= 	compile preprocessFileLineNumbers "Fixes\dayz_code\actions\player_build.sqf";

	_system = [
		"player_monitor",
		"player_spawn_1",
		"player_spawn_2",
		["player_fireMonitor","fire_monitor"]
	];
	
	{
		_prefix = "\z\addons\dayz_code\system\";
		if (typename _x == "STRING") then {
			if (isNil _x) then { call compile format["%1 = compile preprocessFileLineNumbers ""%2%1.sqf"";", _x, _prefix]; };
		} else {
			if (isNil (_x select 0)) then { call compile format["%1 = compile preprocessFileLineNumbers ""%2%3.sqf"";", (_x select 0), _prefix, (_x select 1)]; };
		};
	} count _system;

	onPreloadStarted 			"dayz_preloadFinished = false;";
	onPreloadFinished 			"dayz_preloadFinished = true;";

	player_removeTankTrap = {
		//Object Array, Range, Error Message (@Skaronator)
		[["Hedgehog_DZ"], 1,"STR_EPOCH_ACTIONS_14"] call player_removeNearby;
	};
	player_removeNet = {
		[["DesertLargeCamoNet","ForestCamoNet_DZ","DesertLargeCamoNet_DZ","ForestLargeCamoNet_DZ"], 5,"str_epoch_player_8"] call player_removeNearby;
	};

	player_login = {
		private ["_unit","_detail"];
		_unit = _this select 0;
		_detail = _this select 1;
		if(_unit == getPlayerUID player) then {
			player setVariable["publish",_detail];
		};
	};

	// combination of check && remove items
	player_checkAndRemoveItems = {
		private ["_items","_b"];
		_items = _this;
		_b = _items call player_checkItems;
		if (_b) then {
			_b = _items call player_removeItems;
		};
		_b
	};

	dayz_HungerThirst = {
		dayz_hunger = dayz_hunger + (_this select 0);
		dayz_thirst = dayz_thirst + (_this select 1);
	};

	epoch_totalCurrency = {
		// total currency
		_total_currency = 0;
		{
			_part =  (configFile >> "CfgMagazines" >> _x);
			_worth =  (_part >> "worth");
			if isNumber (_worth) then {
				_total_currency = _total_currency + getNumber(_worth);
			};
		} count (magazines player);
		_total_currency
	};

	epoch_itemCost = {
		_trade_total = 0;
		{
			_part_in_configClass =  configFile >> "CfgMagazines" >> (_x select 0);
			if (isClass (_part_in_configClass)) then {
				_part_inWorth = (_part_in_configClass >> "worth");
				if isNumber (_part_inWorth) then {
					_trade_total = _trade_total + (getNumber(_part_inWorth) * (_x select 1));
				};
			};
		} count _this;

		//diag_log format["DEBUG TRADER ITEMCOST: %1", _this];
		_trade_total
	};

	// usage [["partinclassname",4]] call epoch_returnChange;

	dayz_losChance = {
		private["_agent","_maxDis","_dis","_val","_maxExp","_myExp"];
		_agent = 	_this select 0;
		_dis =		_this select 1;
		_maxDis = 	_this select 2;
		// diag_log ("VAL:  " + str(_this));
		_val = 		(_maxDis - _dis) max 0;
		_maxExp = 	((exp 2) * _maxDis);
		_myExp = 	((exp 2) * (_val)) / _maxExp;
		_myExp =	_myExp * 0.7;
		_myExp
	};

	ui_initDisplay = {
		private["_control","_ctrlBleed","_display","_ctrlFracture","_ctrlDogFood","_ctrlDogWater","_ctrlDogWaterBorder", "_ctrlDogFoodBorder"];
		disableSerialization;
		_display = uiNamespace getVariable 'DAYZ_GUI_display';
		_control = _display displayCtrl 1204;
		_control ctrlShow false;
		if (!r_player_injured) then {
			_ctrlBleed = _display displayCtrl 1303;
			_ctrlBleed ctrlShow false;
		};
		if (!r_fracture_legs && !r_fracture_arms) then {
			_ctrlFracture = _display displayCtrl 1203;
			_ctrlFracture ctrlShow false;
		};
		_ctrlDogFoodBorder = _display displayCtrl 1501;
		_ctrlDogFoodBorder ctrlShow false;
		_ctrlDogFood = _display displayCtrl 1701;
		_ctrlDogFood ctrlShow false;

		_ctrlDogWaterBorder = _display displayCtrl 1502;
		_ctrlDogWaterBorder ctrlShow false;
		_ctrlDogWater = _display displayCtrl 1702;
		_ctrlDogWater ctrlShow false
	};

	dayz_losCheck = {
		private["_target","_agent","_cantSee"];
		_target = _this select 0; // PUT THE PLAYER IN FIRST ARGUMENT!!!!
		_agent = _this select 1;
		_cantSee = true;
		if (!isNull _target) then {

			_tPos = visiblePositionASL _target;
			_zPos = visiblePositionASL _agent;

			_tPos set [2,(_tPos select 2)+1];
			_zPos set [2,(_zPos select 2)+1];

			if ((count _tPos > 0) && (count _zPos > 0)) then {
				_cantSee = terrainIntersectASL [_tPos, _zPos];
				if (!_cantSee) then {
					_cantSee = lineIntersects [_tPos, _zPos, _agent, vehicle _target];
				};
			};
		};
		_cantSee
	};

	dayz_equipCheck = {
		private ["_empty", "_needed","_diff","_success"];
		_config = _this;
		_empty = [player] call BIS_fnc_invSlotsEmpty;
		_needed = [_config] call BIS_fnc_invSlotType;
		_diff = [_empty,_needed] call BIS_fnc_vectorDiff;

		_success = true;
		{
			if (_x > 0) then {_success = false};
		} count _diff;
		hint format["Config: %5\nEmpty: %1\nNeeded: %2\nDiff: %3\nSuccess: %4",_empty,_needed,_diff,_success,_config];
		_success
	};

	vehicle_gear_count = {
		private["_counter"];
		_counter = 0;
		{
			_counter = _counter + _x;
		} count _this;
		_counter
	};

	player_tagFriendlyMsg = {
		if(player == (_this select 0)) then {
			cutText[(localize "str_epoch_player_2"),"PLAIN DOWN"];
		};
	};

	player_serverModelChange = {
		private["_object","_model"];
		_object = _this select 0;
		_model = _this select 1;
		if (_object == player) then {
			_model call player_switchModel;
		};
	};

	player_guiControlFlash = 	{
		private["_control"];
		_control = _this;
		if (ctrlShown _control) then {
			_control ctrlShow false;
		} else {
			_control ctrlShow true;
		};
	};
	
	gearDialog_create = {
		private ["_i","_dialog"];
		if (!isNull (findDisplay 106)) then {
			(findDisplay 106) closeDisplay 0;
		};
		openMap false;
		closeDialog 0;
		if (gear_done) then {sleep 0.001;};
		player action ["Gear", player];
		if (gear_done) then {sleep 0.001;};
		_dialog = findDisplay 106;
		_i = 0;
		while {isNull _dialog} do {//DO NOT CHANGE TO A FOR LOOP!
			_i = _i + 1;
			_dialog = findDisplay 106;
			if (gear_done) then {sleep 0.001;};
			if (_i in [100,200,299]) then {
				closeDialog 0;
				player action ["Gear", player];
			};
			if (_i > 300) exitWith {};
		};
		if (gear_done) then {sleep 0.001;};
		_dialog = findDisplay 106;
		if ((parseNumber(_this select 0)) != 0) then {
			ctrlActivate (_dialog displayCtrl 157);
			if (gear_done) then {
				waitUntil {ctrlShown (_dialog displayCtrl 159)};
				sleep 0.001;
			};
		};
		_dialog
	};

	gear_ui_offMenu = {
		private["_control","_parent","_menu"];
		disableSerialization;
		_control = _this select 0;
		_parent = findDisplay 106;
		if (!(_this select 3)) then {
			for "_i" from 0 to 9 do {
				_menu = _parent displayCtrl (1600 + _i);
				_menu ctrlShow false;
			};
			_grpPos = ctrlPosition _control;
			_grpPos set [3,0];
			_control ctrlSetPosition _grpPos;
			_control ctrlShow false;
			_control ctrlCommit 0;
		};
	};

	dze_surrender_off = {
		player setVariable ["DZE_Surrendered", false, true];
		DZE_Surrender = false;
	};

	gear_ui_init = {
		private["_control","_parent","_menu","_dspl","_grpPos"];
		disableSerialization;
		_parent = findDisplay 106;
		_control = 	_parent displayCtrl 6902;
		for "_i" from 0 to 9 do {
			_menu = _parent displayCtrl (1600 + _i);
			_menu ctrlShow false;
		};
		_grpPos = ctrlPosition _control;
		_grpPos set [3,0];
		_control ctrlSetPosition _grpPos;
		_control ctrlShow false;
		_control ctrlCommit 0;
	};

	dayz_eyeDir = {
		private["_vval","_vdir"];
		_vval = (eyeDirection _this);
		_vdir = (_vval select 0) atan2 (_vval select 1);
		if (_vdir < 0) then {_vdir = 360 + _vdir};
		_vdir
	};

	DZE_getModelName = {
		_objInfo = toArray(str(_this));
		_lenInfo = count _objInfo - 1;
		_objName = [];
		_i = 0;
		// determine where the object name starts
		{
			if (58 == _objInfo select _i) exitWith {};
			_i = _i + 1;
		} count _objInfo;
		_i = _i + 2; // skip the ": " part
		for "_k" from _i to _lenInfo do {
			_objName set [(count _objName), (_objInfo select _k)];
		};
		_objName = toLower(toString(_objName));
		_objName
	};

	dze_isnearest_player = {
		private ["_notClosest","_playerDistance","_nearPlayers","_obj","_playerNear"];
		if(!isNull _this) then {
			_nearPlayers = _this nearEntities ["CAManBase", 12];
			_playerNear = ({isPlayer _x} count _nearPlayers) > 1;
			_notClosest = false;
			if (_playerNear) then {
				// check if another player is closer
				_playerDistance = player distance _this;
				{
					if (_playerDistance > (_x distance _this)) exitWith { _notClosest = true; };
				} count _nearPlayers;
			};
		} else {
			_notClosest = false;
		};
		_notClosest
	};

	
	// trader menu code
	if (DZE_ConfigTrader) then {
		call compile preprocessFileLineNumbers "Fixes\dayz_code\compile\player_traderMenu.sqf";
	}else{
		call compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_traderMenuHive.sqf";
	};

	//This is still needed but the fsm should terminate if any errors pop up.
	[] spawn {
        private["_timeOut","_display","_control1","_control2"];
        disableSerialization;
        _timeOut = 0;
        dayz_loadScreenMsg = "";
		
        diag_log "[Сервер] - [Откладка]: Защитник загрузочного экрана включен.";
		
        _display = uiNameSpace getVariable "BIS_loadingScreen";
        if (!isNil "_display") then {
                _control1 = _display displayctrl 8400;
                _control2 = _display displayctrl 102;
        };
		if (!isNil "dayz_DisplayGenderSelect") then {
			waitUntil {!dayz_DisplayGenderSelect};
		};

        // 120 sec timeout (12000 * 0.01)
        while { _timeOut < 12000 } do 
		{
            if (dayz_clientPreload && dayz_authed) exitWith 
			{
				diag_log "[Сервер] - [Логин]: Вход успешно.";
				endLoadingScreen;
			};
            if (!isNil "_display") then {
                if ( isNull _display ) then {
                        waitUntil { !dialog; };
                        startLoadingScreen ["","RscDisplayLoadCustom"];
                        _display = uiNameSpace getVariable "BIS_loadingScreen";
                        _control1 = _display displayctrl 8400;
                        _control2 = _display displayctrl 102;
                };

                if ( dayz_loadScreenMsg != "" ) then {
                        _control1 ctrlSetText dayz_loadScreenMsg;
                        dayz_loadScreenMsg = "";
                };

                _control2 ctrlSetText format["%1",round(_timeOut*0.01)];
            };

            _timeOut = _timeOut + 1;

            if (_timeOut >= 12000) then {
                1 cutText [localize "str_player_login_timeout", "PLAIN DOWN"];
                sleep 10;
                endLoadingScreen;
                endMission "END1";
            };

            sleep 0.01;
        };
	};

	dayz_meleeMagazineCheck = {
		private["_meleeNum","_magType"];
		_magType = ([] + getArray (configFile >> "CfgWeapons" >> _wpnType >> "magazines")) select 0;
		_meleeNum = ({_x == _magType} count magazines player);
		if (_meleeNum < 1) then {
				player addMagazine _magType;
		};
	};

	dayz_originalPlayer = player;
	progressLoadingScreen 0.8;
};

	fnc_veh_ResetEH = compile preprocessFileLineNumbers "\z\addons\dayz_code\init\veh_ResetEH.sqf";
	
	_compileBoth = [
		["BIS_fnc_selectRandom","BIS_fnc\fn_selectRandom"],
		["BIS_fnc_vectorAdd","BIS_fnc\fn_vectorAdd"],
		["BIS_fnc_halo","BIS_fnc\fn_halo"],
		["BIS_fnc_findNestedElement","BIS_fnc\fn_findNestedElement"],
		["BIS_fnc_param","BIS_fnc\fn_param"],
		["fnc_buildWeightedArray","fn_buildWeightedArray"],
		["fnc_usec_damageVehicle","fn_damageHandlerVehicle"],
		"object_setHitServer",
		"object_setFixServer",
		"object_getHit",
		"object_setHit",
		"object_processHit",
		"object_delLocal",
		["fnc_usec_damageHandler","fn_damageHandler"],
		"vehicle_handleDamage",
		"vehicle_handleKilled",
		["fnc_inString","fn_inString"],
		["fnc_isInsideBuilding","fn_isInsideBuilding"],
		["fnc_isInsideBuilding2","fn_isInsideBuilding2"],
		["fnc_isInsideBuilding3","fn_isInsideBuilding3"],
		["dayz_zombieSpeak","object_speak"],
		"vehicle_getHitpoints",
		"local_gutObject",
		"local_lockUnlock",
		"local_gutObjectZ",
		["local_zombieDamage","fn_damageHandlerZ"],
		"local_eventKill",
		["curTimeStr","fn_curTimeStr"],
		"player_humanityChange",
		"spawn_loot",
		"spawn_loot_small"
	];
	
	{
		_prefix = "\z\addons\dayz_code\compile\";
		if (typename _x == "STRING") then {
			if (isNil _x) then { call compile format["%1 = compile preprocessFileLineNumbers ""%2%1.sqf"";", _x, _prefix]; };
		} else {
			if (isNil (_x select 0)) then { call compile format["%1 = compile preprocessFileLineNumbers ""%2%3.sqf"";", (_x select 0), _prefix, (_x select 1)]; };
		};
	} count _compileBoth;

	_medical = [
		["player_medBandage","medBandaged"],
		["player_medInject","medInject"],		
		["player_medEpi","medEpi"],		
		["player_medTransfuse","medTransfuse"],		
		["player_medMorphine","medMorphine"],		
		["player_breaklegs","medBreakLegs"],		
		["player_medPainkiller","medPainkiller"]		
	];
	
	{
		_prefix = "\z\addons\dayz_code\medical\publicEH\";
		if (typename _x == "STRING") then {
			if (isNil _x) then { call compile format["%1 = compile preprocessFileLineNumbers ""%2%1.sqf"";", _x, _prefix]; };
		} else {
			if (isNil (_x select 0)) then { call compile format["%1 = compile preprocessFileLineNumbers ""%2%3.sqf"";", (_x select 0), _prefix, (_x select 1)]; };
		};
	} count _medical;

	world_isDay = { if ((daytime < (24 - dayz_sunRise)) && (daytime > dayz_sunRise)) then {true} else {false} };

	FNC_GetSetPos = { //DO NOT USE IF YOU NEED ANGLE COMPENSATION!!!!
		private "_pos";
		_thingy = _this select 0;
		_pos = getPosASL _thingy;
		if (surfaceIsWater _pos) then {
			_thingy setPosASL _pos;
		} else {
			_thingy setPosATL (ASLToATL _pos);
		};
	};
	FNC_GetPos = {
		private "_pos";
		if (isNil {_this select 0}) exitWith {[0,0,0]};
		_thingy = _this select 0;
		_pos = getPosASL _thingy;
		if !(surfaceIsWater _pos) then {
			_pos =  ASLToATL _pos;
		};
		_pos
	};
	local_setFuel =	{
		private["_qty","_vehicle"];
		_vehicle = _this select 0;
		_qty = _this select 1;
		_vehicle setFuel _qty;
	};
	zombie_initialize = {
		private ["_unit","_position"];
		_unit = _this select 0;
		if (isServer) then {
			_unit addEventHandler ["local", {_this call zombie_findOwner}];
		};
		_id = _unit addeventhandler["HandleDamage", { _this call local_zombieDamage }];
		_id = _unit addeventhandler["Killed", { [_this, "zombieKills"] call local_eventKill }];
	};

	dayz_EjectPlayer = {
		// check if player in vehicle
        private ["_noDriver","_vehicle","_inVehicle"];
        _vehicle = vehicle player;
		_inVehicle = (_vehicle != player);
		if(_inVehicle) then {
			_noDriver = ((_vehicle emptyPositions "driver") > 0);
			if (_noDriver && (speed _vehicle) != 0) then {
				player action [ "eject", _vehicle];
			};
		};
	};

	player_sumMedical = {
		private["_character","_wounds","_legs","_arms","_medical"];
		_character = 	_this;
		_wounds =		[];
		if (_character getVariable["USEC_injured",false]) then {
			{
				if (_character getVariable[_x,false]) then {
					_wounds set [count _wounds,_x];
				};
			} count USEC_typeOfWounds;
		};
		_legs = _character getVariable ["hit_legs",0];
		_arms = _character getVariable ["hit_arms",0];
		_medical = [
			_character getVariable["USEC_isDead",false],
			_character getVariable["NORRN_unconscious", false],
			_character getVariable["USEC_infected",false],
			_character getVariable["USEC_injured",false],
			_character getVariable["USEC_inPain",false],
			_character getVariable["USEC_isCardiac",false],
			_character getVariable["USEC_lowBlood",false],
			_character getVariable["USEC_BloodQty",12000],
			_wounds,
			[_legs,_arms],
			_character getVariable["unconsciousTime",0],
			_character getVariable["messing",[0,0]]
		];
		_medical
	};

	//Server Only
	if (isServer) then {
		call compile preprocessFileLineNumbers "\z\addons\dayz_server\init\server_functions.sqf";
	} else {
		eh_localCleanup = {};
	};

initialized = true;

3. Если стоит ZSC 3.0, то там каждый файл чуть ли не дублируется для торговли. Различия только Есть Анимация и Нет, а дальше код просто одинаковый. Это вроде параметр Instance Trading
4. Чистка БД от хлама. Ну тут пояснять не надо, на сервер скапливаются ненужные постройки, брошенная закрытая техника и т.п. Меньше хлама, больше производительность.
5. Не используйте дополнительные параметры в запуск сервера. Я говорю про клиентские параметры, которые на сервер не работают. -noCB, -MaxMem и т.д
6. Оптимизация файлов. Как раз удаление лишнего уже дает тебе неплохой прирост. Особенно при работе с fn_selfaction. Да и вообще как Ультима говорил ранее от Скролл меню нужно избавляться, оставьте то, что нужно. Так же в Инфистаре есть пару функции со скролл меню, например упрощенная админка. Ее тоже можно нахрен вырезать если не используется.
7. Миссии и патрули. Не используй кучу систем. Используй одну или две максимум. В моем случае переписанные WAI 1.7.3 и EMS (Вроде 3.0, точно не помню). Патрули используются только WAIшные. Ну, а чтобы во все не грузить себя, то проще у Евгения взять ZEV. Это и патрули и миссии сразу + настраивать удобнее.
8. Правильная настройка сервера под количество народу. Например тот же Basic.cfg, если его плохо настроить то хоть не FPS будет ниже, но диссинхроны увеличатся точно. Mission.sqm тоже можно упростить.

class Vehicles
			{
				items = 50;
				
				class Item0
				{
					position[] 	= 	{10153.744,0.50311524,-4593.8862};
					azimut		=	-17.0839;
					id			=	11;
					side		=	"WEST";
					vehicle		=	"Survivor1_DZ";
					player		=	"PLAY CDG";
					skill		=	0.6;
					init		=	"this enableSimulation false;this allowDammage false;this disableAI 'FSM';this disableAI 'ANIM';this disableAI 'MOVE';";
				};
				
				class Item1: Item0
				{
					id		=	1;
 					player	=	"PLAYER COMMANDER";
 					leader	=	1;
 					rank	=	"SERGEANT";
				};
				
				class Item2: Item0 { id=2; };
				class Item3: Item0 { id=3; };
				class Item4: Item0 { id=4; };
				class Item5: Item0 { id=5; };
				class Item6: Item0 { id=6; };
				class Item7: Item0 { id=7; };
				class Item8: Item0 { id=8; };
				class Item9: Item0 { id=9; };
				class Item10: Item0 { id=10; };
				class Item11: Item0 { id=11; };
				class Item12: Item0 { id=12; };
				class Item13: Item0 { id=13; };
				class Item14: Item0 { id=14; };
				class Item15: Item0 { id=15; };
				class Item16: Item0 { id=16; };
				class Item17: Item0 { id=17; };
				class Item18: Item0 { id=18; };
				class Item19: Item0 { id=19; };
				class Item20: Item0 { id=20; };
				class Item21: Item0 { id=21; };
				class Item22: Item0 { id=22; };
				class Item23: Item0 { id=23; };
				class Item24: Item0 { id=24; };
				class Item25: Item0 { id=25; };
				class Item26: Item0 { id=26; };
				class Item27: Item0 { id=27; };
				class Item28: Item0 { id=28; };
				class Item29: Item0 { id=29; };
				class Item30: Item0 { id=30; };
				class Item31: Item0 { id=31; };
				class Item32: Item0 { id=32; };
				class Item33: Item0 { id=33; };
				class Item34: Item0 { id=34; };
				class Item35: Item0 { id=35; };
				class Item36: Item0 { id=36; };
				class Item37: Item0 { id=37; };
				class Item38: Item0 { id=38; };
				class Item39: Item0 { id=39; };
				class Item40: Item0 { id=40; };
				class Item41: Item0 { id=41; };
				class Item42: Item0 { id=42; };
				class Item43: Item0 { id=43; };
				class Item44: Item0 { id=44; };
				class Item45: Item0 { id=45; };
				class Item46: Item0 { id=46; };
				class Item47: Item0 { id=47; };
				class Item48: Item0 { id=48; };
				class Item49: Item0 { id=49; };
			};
		};

Уже 20 кб мы вырезали таким путем.
Так же все маркеры можно перенести в серверную часть, чем хранить в mission.sqm.

9. Больше НПС, больше проблем. По мимо этого еще лучше не использовать на них какую-нибудь анимацию, что только усугубит ФПС при ее использовании.
10. Пихаем все в серверную часть, что умеем. Перечислять все не буду, просто пару примеров: Постройки, NPC, базы, Andre Convoy, Сейв-зоны.
Так же пример построек в упрощенном формате:

private ["_object","_objects"];

_objects = 
[
    ["MAP_KBud", [6360.9355, 8688.9531, 0], -46],
	["MAP_KBud", [6362.9492, 8691.1191, 0], -44],
	["MAP_kulna", [6376.8599, 8635.3057, 0], 133],
	["MAP_misc_deerstand", [6383.8774, 8710.8193, 0], 150],
	["MAP_misc_deerstand", [6416.6289, 8661.1025, 0], -43],
	["MAP_PowerGenerator", [6368.354, 8675.5859, 0], 40],
	["MAP_stanek_3", [6375.7729, 8630.0508, 0], 40],
	["MAP_barrel_water", [6375.6313, 8632.2813, 0], 0],
	["MAP_drevena_bedna", [6373.1729, 8630.0732, 0], 0],
	["RoadBarrier_long", [6376.2949, 8711.043, 0], -36],
	["RoadBarrier_long", [6395.4487, 8677.7881, 0], -33],
	["SignM_UN_Base_EP1", [6421.502, 8652.5576, 0], -39],
	["SignM_UN_Base_EP1", [6375.4702, 8722.0313, 0], 143],
	["BRDMWreck", [6380.0801, 8707.1992, 0], 25],
	["T72Wreck", [6393.8257, 8681.082, 0], 41],
	["LADAWreck", [6409.7188, 8692.0488, 0], 45],
	["HMMWVWreck", [6396.8633, 8705.7461, 0], -95],
	["Loudspeakers_EP1", [6389.1367, 8668.457, 0], 0],
	["Land_Fire_burning", [6365.1733, 8686.9883, 0], 0],
	["Land_Fire_burning", [6369.9702, 8630.2275, 0], 0],
	["Land_stand_waterl_EP1", [6373.9902, 8628.0361, 0], 68],
	["Land_stand_meat_EP1", [6370.9766, 8623.1133, 0], 38],
	["Land_stand_small_EP1", [6374.6025, 8626.4189, 0], -45],
	["Haystack", [6392.5742, 8695.2354, 0], 62],
	["Land_Ind_TankSmall", [6344.7158, 8669.1748, 0], 133],
	["Land_Ind_TankSmall", [6349.6523, 8674.6963, 0], -47],
	["Land_stand_meat_EP1", [6369.8066, 8624.1328, 0], 39],
	["Land_transport_kiosk_EP1", [6372.0005, 8625.5869, 0], -128],
	["MAP_drevena_bedna", [6377.9941, 8633.1855, 0], 37],
	["Land_Carpet_rack_EP1", [6363.4805, 8629.709, 0], 0],
	["Land_transport_cart_EP1", [6367.9927, 8625.4443, 0], 49],
	["Land_Carpet_rack_EP1", [6366.3057, 8626.3398, 0], 0],
	["Axe_woodblock", [6368.3472, 8627.8389, 0], 0],
	["Land_bags_stack_EP1", [6363.7319, 8631.2959, 0], 0],
	["Land_bags_stack_EP1", [6363.2012, 8628.2617, 0], 0],
	["Land_Crates_stack_EP1", [6376.2813, 8633.5957, 0], 0],
	["Fort_Barricade_EP1", [6409.5278, 8666.627, 0], 48],
	["Fort_Barricade_EP1", [6401.748, 8676.29, 0], -130],
	["Land_fort_rampart", [6388.7646, 8674.5273, 0], 139],
	["Land_fort_rampart", [6368.7402, 8699.2148, 0], 38],
	["Hedgehog_EP1", [6375.0898, 8701.6758, 0], 0],
	["Hedgehog_EP1", [6376.8105, 8703.7607, 0], 0],
	["Hedgehog_EP1", [6374.2603, 8703.4971, 0], 0],
	["BagFenceRound_DZ", [6384.7012, 8657.4131, 0], 21],
	["BagFenceRound_DZ", [6374.6221, 8669.043, 0], 48],
	["MAP_RULaunchers", [6386.5059, 8661.8633, 0], -42],
	["MAP_RUOrdnance", [6386.0068, 8660.1133, 0], 11],
	["Land_Fire_burning", [6382.2202, 8691.459, 0], 0],
	["MAP_Astan", [6380.8989, 8679.1377, 0], -28],
	["MAP_A_tent", [6383.0654, 8676.8701, 0], 222],
	["MAP_A_tent", [6383.0229, 8682.2871, 0], -122],
	["US_WarfareBFieldhHospital_Base_EP1", [6376.9751, 8687.7041, 0], -219],
	["Land_Fire_burning", [6384.895, 8679.4414, 0], 0],
	["Misc_Backpackheap", [6365.1455, 8627.4863, 0], 0],
	["HMMWV_Ambulance_DES_EP1", [6386.6309, 8706.6797, 0], 192],
	["Fort_Barricade", [6392.4922, 8712.4609, 0], -185],
	["Hedgehog_EP1", [6397.5669, 8684.6934, 0], 0],
	["Hedgehog_EP1", [6400.4126, 8682.7803, 0], 0],
	["Hedgehog_EP1", [6400.167, 8686.2197, 0], 0],
	["Sign_1L_Firstaid", [6386.5103, 8685.2383, 0], 241],
	["Land_GuardShed", [6406.2681, 8685.751, 0], -29]

];

{
	_object 	= 	(_x select 0) createVehicle (_x select 1);
	_object setDir (_x select 2);
	_object setPos (_x select 1);
	_object allowDamage false;
	_object enableSimulation false;
	_object setVehicleLock "LOCKED";
} count _objects;

processInitCommands;

diag_log ['SERVER_TRADER1 LOAD'];

11. Нету ошибок, нету проблем. Смотрим все логи. РПТ сервера и клиента и HiveExt, а дальше решаем все ошибки которые имеются.

Вся инфа по этому всему есть на Epochmod.com. Так что не ленитесь там полазать, да и по всем файлам Эпоч тоже...
Так же часть Информации предоставлено этими ребятами и спасибо сказать позже не забудьте:
NoNameUltima
Linux
DimitriPokki

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


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



  • 0

убрать максимальное количество циклов while (true) | whille (1==1) из серверной части игры, так же с мода, подменяя файлы через мисиию. Переписать большие коды, используя минимальное кол-во функций, и переменных, не влияя на логику скрипта. Пересмотреть необходимость большинства функций в серверной части игры-часть их вообще нигде не используется и осталась со старых версий эпохи. Регулярно очищать БД от старых неиспользуемых транспорта/построек (только изза них недавно открывшийся сервер кажется лучше всех-и фпс есть, и на карте ничего нет). Убрать хлам с мисии. 

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


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

 

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

Думаю простому пользователю это будет трудно :) 

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


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

Думаю простому пользователю это будет трудно :) 

а то что ты описал легко?

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


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

а то что ты описал легко?

Ну, я часть файлов прикрепил в основном + в инфи изменения я скидываю ребятам. Так что попроще :)

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


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

 

Мне подсказали как повысить FPS:

1. В инфи вырезал это if ((count(toArray ADMINCHECK)) != 26) then {[] spawn {uiSleep (300 + (random 200));{_x setPosATL [5000,5000,100];} forEach (playableUnits+vehicles);};};

 херню
2. вот такие функции в инфи заменить
 
adminBanPerm =
 {
  {
   if (name x == this select 0) then
 
меняй там then на exitWith
 
примерно 20 их в инфи
3. И еще там есть поиск типа - nearestObjects и там цифры запредельные 10000000
можно смело менять на 30000 - такого размера карт уж точно не бывает
 
4. Уменьшил дальность прорисовки травы в файле extra_rc.hpp добавил это:

class ItemMap {

class trava10 {

text = "Трава: Ультра";

script = "setTerrainGrid 10; systemChat('Качество травы установлено на: Ультра');";

};

class trava25 {

text = "Трава: Нормально";

script = "setTerrainGrid 25; systemChat('Качество травы установлено на: Средне');";

};

class trava40 {

text = "Трава: Низко";

script = "setTerrainGrid 40; systemChat('Качество травы установлено на: низко');";

};

class trava50 {

text = "Трава: Выкл.";

script = "setTerrainGrid 50; systemChat('Трава отключена');";

};

};

};

 

 
Прирост фпс составил примерно 30% ,есть еще способы повысить фпс?

Пробовал сделать так же с травой,у админов меняется а у игроков на секунду мелькает и не работает,инфистар что ли блочит надо что то отключать в нем 

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


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

Пробовал сделать так же с травой,у админов меняется а у игроков на секунду мелькает и не работает,инфистар что ли блочит надо что то отключать в нем 

Надо в файле AHconfig.sqf удалить _FTG =    25;, в файле AH.sqf :

1.'_FTG',

2. if(isNil '_FTG') then {_FTG = 25;_cconfig=true;};

3. _FTG =     "+str _FTG+";

4. setTerrainGrid _FTG;

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


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

Надо в файле AHconfig.sqf удалить _FTG =    25;, в файле AH.sqf :

1.'_FTG',

2. if(isNil '_FTG') then {_FTG = 25;_cconfig=true;};

3. _FTG =     "+str _FTG+";

4. setTerrainGrid _FTG;

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

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

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


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

Как вы думаете какое будущие у мода Dayz Epoch на Arma 2? Я конечно думаю что любители остануться но уже сейчас большая часть серверов пустует. Игроки зажрались, если нету автозаправки и автопочинки сразу уходят. 

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


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

Ну вот, ё-маё.. Полез опять я в инфи  :laugh:

531 изменений ёпрст, теперь разгребать 2 часа буду  :wink:  - где чего лишнего перепилил.

Кстати по траве. Или я гоню, или при значении 50 травы по колено? 

Ща так стоит:

/* Force Terrain Grid ? */ _FTG = 12.5; /* 50, 25, 12.5  */ /* recommended: 25 */ /* if set to 50 grass will be very low for better client FPS */

И вроде немного её..

 

А по сабжу - база данных у меня крутилась с 2013 года, чистил, оптимизировал. НО! Номера объектов имели разрывы из-за удалений в несколько тысяч. ИМХО - двиг мускула время тратит на пропуск несуществующих и поиск нужных, и из-за этого лагает. Рассуждаю как обычный шаман- академиев не кончал  :smile:

База работала последние полгода со скрипом. Вайп - вот истинное лекарство от всех болячек БД!  :laugh:

Я чесгря пытался найти-написать запрос SQL для оптимизации ID но не сумел и забил короче.. Если кто шарит и запилит - думаю хорошо подействует на работоспособность любого сервера.

Рацуха такая от меня имеется  :wink: , буду мониторить тему - вдруг кто родит такое Событие для БД..

 

Ещё есть наблюдение конкретное - количество триггеров на карте. Вот уж где УайлТру-то крутится!!! И не нашёл метода проредить апдейты.. У меня триггеров с сейфами было за 70, для моего компа 2007 года сиё было фризовато..  :smile:

Порешал все сейф-зоны и френдли-зоны - полегчало явно и серву и клиенту  :wink:

 

И выше ессно правильно писали про оптимизацию скриптов..

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


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

Ну вот, ё-маё.. Полез опять я в инфи  :laugh:

531 изменений ёпрст, теперь разгребать 2 часа буду  :wink:  - где чего лишнего перепилил.

Кстати по траве. Или я гоню, или при значении 50 травы по колено? 

Ща так стоит:

/* Force Terrain Grid ? */ _FTG = 12.5; /* 50, 25, 12.5  */ /* recommended: 25 */ /* if set to 50 grass will be very low for better client FPS */

И вроде немного её..

 

А по сабжу - база данных у меня крутилась с 2013 года, чистил, оптимизировал. НО! Номера объектов имели разрывы из-за удалений в несколько тысяч. ИМХО - двиг мускула время тратит на пропуск несуществующих и поиск нужных, и из-за этого лагает. Рассуждаю как обычный шаман- академиев не кончал  :smile:

База работала последние полгода со скрипом. Вайп - вот истинное лекарство от всех болячек БД!  :laugh:

Я чесгря пытался найти-написать запрос SQL для оптимизации ID но не сумел и забил короче.. Если кто шарит и запилит - думаю хорошо подействует на работоспособность любого сервера.

Рацуха такая от меня имеется  :wink: , буду мониторить тему - вдруг кто родит такое Событие для БД..

 

Ещё есть наблюдение конкретное - количество триггеров на карте. Вот уж где УайлТру-то крутится!!! И не нашёл метода проредить апдейты.. У меня триггеров с сейфами было за 70, для моего компа 2007 года сиё было фризовато..  :smile:

Порешал все сейф-зоны и френдли-зоны - полегчало явно и серву и клиенту  :wink:

 

И выше ессно правильно писали про оптимизацию скриптов..

Наоборот 50 убирает траву.

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


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

Оки, сделаю 50, спс! Как-то всё некогда было заморочиться и сравнить конкретно..

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


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

Как вы думаете какое будущие у мода Dayz Epoch на Arma 2? Я конечно думаю что любители остануться но уже сейчас большая часть серверов пустует. Игроки зажрались, если нету автозаправки и автопочинки сразу уходят. 

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

----

Много серверов пустые-почему? Мое мнение:

1) Человек не пойдет на пустой сервер где онлайна 0

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

3) ФПС

4) Администрация. Это вообще отдельная тема. Где то админы ставят себя так: что в итоге при любом сбое на сервере-многие игроки начинают требовать действий, в т.ч. возврат лута, всяческой поддержки и т.д. Где то просят хоть чуток восстановить ) Где то вообще админов - нянек нет. 

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


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

Тема очищена от оффтопа

За дальнейший оффтоп по теме AH Енота не в спец. теме будут выдаваться предупреждения.

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


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

а мой топик с вопросом по теме за что?

Подробнее можете про спрятам все что можно в сервер?

что можно? и тд

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


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

а мой топик с вопросом по теме за что?

Подробнее можете про спрятам все что можно в сервер?

что можно? и тд

Сорян, нечаянно  :whistling:

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


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

Оптимизировать сам пк, под сервер, поставитьcpu control, распределить ядра, определить и распределить использование RAM памяти, отключить не нужные службы Windows, почистить реестр, и т.п

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


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

а как провести именно оптимизация кода сервера

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


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

а как провести именно оптимизация кода сервера

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

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


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

Сделай лимит мета-полов на сервер, меньше тачек и т.д. в общем меньше обьектов на серве, и хост помощнее

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

    • Автор: 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"
      Ну вот и всё готово, всё сохранили и запаковали как было!
       
    • Автор: fedotovyasha
      Хочу немного изменить сообщения перед отправкой клиенту
    • Автор: fedotovyasha
      Пишу свой лаунчер на c#. Скачал клиент в котором был loader.exe. С ним работает норм, но я хочу без него запускать игру. Как это сделать? (Пиратка)
    • Автор: Miduznya
      Собственно как, как отключить battleye на сервере античит

      параметр BattlEye=0; не работает я так понял 
    • Автор: DrTauren
      На нашем сайте предусмотрена возможность рекламирования вашего игрового сервера/сайта/програмного обеспечения при помощи баннеров и ссылок.
       
      Баннеры под первым сообщением темы ↓
       
      Баннер на главной странице (над чатом) ↓
       
      Ссылки над первым сообщением темы ↓
       
      Ссылка на главной странице (над чатом) ↓
       
       

      Заявку вы можете заполнить в этой же теме, либо написать мне в ЛС.
      Любые сообщения не по теме запрещены.
  • Наш выбор

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

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

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