Jump to content

zealot111

Member
  • Content Count

    64
  • Joined

  • Last visited

  • Medals

Everything posted by zealot111

  1. Helicopter fastroping script. Allows players to toss ropes from helicopter and the fastrope to the ground using these ropes. Ropes are 50m long (A3 has ropes only this length) so you can fastrope from that height. Helicopter must maintain speed under 10km/h while fastroping. 29/12/2013 Added animation while fastroping.(thanks to TheSystem for idea). Slightly increased fastroping speed. Heli pilot now cannot fastrope :) Helicopter doors close after cutting the ropes. 26/12/2013 Added limited support of AI units fastroping. AI Members of the players team will fastrope after the leader. (Players still need to select "Fastrope" from the menu themselves) Fixed mh-9 once more :) 26/12/2013 Now script supports respawn. Increased speed limit for helicopter while fastroping. 25/12/2013 Updated script for mh-9 hummingbird. Now ropes should not damage helicopter while tossing. Installation and Usage: Put this script into your mission folder in Documents\Arma 3 - Other Profiles\{YOUR ARMA PROFILE NMAE}\MPMissions Put in your init.sqf string: [] execVM "zlt_fastrope.sqf"; Sample mission: http://stels-arma.ucoz.ru/rope_example.Stratis.zip Script: http://stels-arma.ucoz.ru/zlt_fastrope.sqf zlt_fastrope.sqf: // v1g Fast Rope by [sTELS]Zealot #define MAX_SPEED_WHILE_FASTROPING 10 #define MAX_SPEED_ROPES_AVAIL 30 #define STR_TOSS_ROPES "Toss Ropes" #define STR_FAST_ROPE "Fast Rope" #define STR_CUT_ROPES "Cut Ropes" if (isdedicated) exitwith {}; waituntil {player == player}; zlt_rope_ropes = []; zlt_mutexAction = false; zlt_rope_helis = ["O_Heli_Light_02_unarmed_F","O_Heli_Light_02_F","B_Heli_Transport_01_F","B_Heli_Transport_01_camo_F","O_Heli_Attack_02_F","O_Heli_Attack_02_black_F","I_Heli_Transport_02_F","B_Heli_Light_01_F"]; zlt_rope_helidata = [ [ ["O_Heli_Light_02_unarmed_F", "O_Heli_Light_02_F"], [1.35,1.35,-24.95], [-1.45,1.35,-24.95] ], [ ["B_Heli_Transport_01_F", "B_Heli_Transport_01_camo_F"], [-1.11,2.5,-24.7], [1.11,2.5,-24.7] ], [ ["O_Heli_Attack_02_F", "O_Heli_Attack_02_black_F"], [1.3,1.3,-25], [-1.3,1.3,-25] ], [ ["I_Heli_Transport_02_F"], [0,-5,-26], [] ], [ ["B_Heli_Light_01_F"], [0.6,0.5,-25.9], [-0.8,0.5,-25.9] ] ]; zlt_fnc_tossropes = { private ["_heli","_ropes","_oropes","_rope"]; _heli = _this; _ropes = []; _oropes = _heli getvariable ["zlt_ropes",[]]; if (count _oropes != 0 ) exitwith {}; _i = 0; { if ((typeof _heli) in (_x select 0)) exitwith { _ropes = _ropes + [_x select 1]; if ( count (_x select 2) !=0 ) then { _ropes = _ropes + [_x select 2]; }; }; _i = _i +1; } foreach zlt_rope_helidata; sleep random 0.3; if ( count (_heli getvariable ["zlt_ropes",[]]) != 0 ) exitwith { zlt_mutexAction = false; }; _heli animateDoor ['door_R', 1]; _heli animateDoor ['door_L', 1]; { _rope = createVehicle ["land_rope_f", [0,0,0], [], 0, "CAN_COLLIDE"]; _rope setdir (getdir _heli); _rope attachto [_heli, _x]; _oropes = _oropes + [_rope]; } foreach _ropes; _heli setvariable ["zlt_ropes",_oropes,true]; _heli spawn { private ["_heli","_ropes"]; _heli = _this; while {alive _heli and count (_heli getvariable ["zlt_ropes", []]) != 0 and abs (speed _heli) < MAX_SPEED_ROPES_AVAIL } do { sleep 0.3; }; _ropes = (_heli getvariable ["zlt_ropes", []]); {deletevehicle _x} foreach _ropes; _heli setvariable ["zlt_ropes", [], true]; }; }; zlt_fnc_ropes_cond = { _veh = vehicle player; _flag = (_veh != player) and {(not zlt_mutexAction)} and {count (_veh getvariable ["zlt_ropes", []]) == 0} and { (typeof _veh) in zlt_rope_helis } and {alive player and alive _veh and (abs (speed _veh) < MAX_SPEED_ROPES_AVAIL ) }; _flag; }; zlt_fnc_fastropeaiunits = { private ["_heli","_grunits"]; diag_log ["zlt_fnc_fastropeaiunits", _this]; _heli = _this select 0; _grunits = _this select 1; dostop (driver _heli ); (driver _heli) setBehaviour "Careless"; (driver _heli) setCombatMode "Blue"; _heli spawn zlt_fnc_tossropes; [_heli, _grunits] spawn { private ["_units","_heli"]; sleep random 0.5; _units = _this select 1; _heli = (_this select 0); _units = _units - [player]; _units = _units - [driver _heli]; {if (!alive _x or isplayer _x or vehicle _x != _heli) then {_units = _units - [_x];}; } foreach _units; { sleep (0.5 + random 0.7); _x spawn zlt_fnc_fastropeUnit; } foreach _units; waituntil {sleep 0.5; { (getpos _x select 2) < 1 } count _units == count _units; }; sleep 10; (driver _heli) doFollow (leader group (driver _heli )); (driver _heli) setBehaviour "Aware"; (driver _heli) setCombatMode "White"; _heli call zlt_fnc_cutropes; }; }; zlt_fnc_fastrope = { diag_log ["fastrope", _this]; zlt_mutexAction = true; sleep random 0.3; if (player == leader group player) then { [vehicle player, units group player] call zlt_fnc_fastropeaiunits; }; player call zlt_fnc_fastropeUnit; zlt_mutexAction = false; }; zlt_fnc_fastropeUnit = { private ["_unit","_heli","_ropes","_rope","_zmax","_zdelta","_zc"]; _unit = _this; _heli = vehicle _unit; if (_unit == _heli) exitWith {}; _ropes = (_heli getvariable ["zlt_ropes", []]); if (count _ropes == 0) exitwith {}; _rope = _ropes call BIS_fnc_selectRandom; _zmax = 22; _zdelta = 7 / 10 ; _zc = _zmax; _unit action ["eject", _heli]; _unit switchmove "gunner_standup01"; _unit setpos [(getpos _unit select 0), (getpos _unit select 1), 0 max ((getpos _unit select 2) - 3)]; while {alive _unit and (getpos _unit select 2) > 1 and (abs (speed _heli)) < MAX_SPEED_WHILE_FASTROPING and _zc > -24} do { _unit attachTo [_rope, [0,0,_zc]]; _zc = _zc - _zdelta; sleep 0.1; }; _unit switchmove ""; detach _unit; }; zlt_fnc_cutropes = { _veh = _this; _ropes = (_veh getvariable ["zlt_ropes", []]); {deletevehicle _x} foreach _ropes; _veh setvariable ["zlt_ropes", [], true]; _veh animateDoor ['door_R', 0]; _veh animateDoor ['door_L', 0]; }; zlt_fnc_removeropes = { (vehicle player) call zlt_fnc_cutropes; }; zlt_fnc_createropes = { zlt_mutexAction = true; (vehicle player) call zlt_fnc_tossropes; zlt_mutexAction = false; }; player createDiarySubject [sTR_SCRIPTS_NAME,STR_SCRIPTS_NAME]; player createDiaryRecord [sTR_SCRIPTS_NAME,[sTR_SCRIPT_NAME, STR_HELP]]; player addAction["<t color='#ffff00'>"+STR_TOSS_ROPES+"</t>", zlt_fnc_createropes, [], -1, false, false, '','[] call zlt_fnc_ropes_cond']; player addAction["<t color='#ff0000'>"+STR_CUT_ROPES+"</t>", zlt_fnc_removeropes, [], -1, false, false, '','not zlt_mutexAction and count ((vehicle player) getvariable ["zlt_ropes", []]) != 0']; player addAction["<t color='#00ff00'>"+STR_FAST_ROPE+"</t>", zlt_fnc_fastrope, [], 15, false, false, '','not zlt_mutexAction and count ((vehicle player) getvariable ["zlt_ropes", []]) != 0 and player != driver vehicle player']; player addEventHandler ["Respawn", { player addAction["<t color='#ffff00'>"+STR_TOSS_ROPES+"</t>", zlt_fnc_createropes, [], -1, false, false, '','[] call zlt_fnc_ropes_cond']; player addAction["<t color='#ff0000'>"+STR_CUT_ROPES+"</t>", zlt_fnc_removeropes, [], -1, false, false, '','not zlt_mutexAction and count ((vehicle player) getvariable ["zlt_ropes", []]) != 0']; player addAction["<t color='#00ff00'>"+STR_FAST_ROPE+"</t>", zlt_fnc_fastrope, [], 15, false, false, '','not zlt_mutexAction and count ((vehicle player) getvariable ["zlt_ropes", []]) != 0 and player != driver vehicle player']; }];
  2. Hi, I am proud to present new civilian vehicles script. It automatically spawns(when players are near the city or town) and despawn civilian vehicles in cities around all Altis (will work with other islands as well). Vehicles just stand empty near houses in the cities and towns. Useful when you want to give your players additional backup vehicles. Script tested in MP with ~50 users. Installation: Copy to your unpacked mission folder Include in init.sqf next string: [] execvm "zlt_civveh.sqf"; zlt_civveh.sqf: // v1d Civilian Vehicles from [sTELS]Zealot if (not isserver) exitwith {}; zlt_civveh_round = 0; zlt_civveh_vehicles = []; zlt_civveh_spawnedloc = []; zlt_rnd_seed = 3; zlt_fnc_random = { private ["_a","_c","_m"]; _a = 75; _c = 0; _m = 65537; zlt_rnd_seed = ( zlt_rnd_seed * _a + _c ) mod (_m); (zlt_rnd_seed / _m) ; }; zlt_fnc_selectrandom = { _this select floor ( ([] call zlt_fnc_random) * count (_this)); }; zlt_fnc_civvehs = { _debug = [_this, 1, false] call bis_fnc_param; _lrange = _this select 2; _cars = _this select 3; _t1 = diag_ticktime; _startpos= _this select 0; _houses = _startpos nearobjects ["House",_lrange]; //_vehmax = _cars; _vehmax = (round ((sqrt (count _houses)) * 0.5)) max 1; _classes = ["C_Offroad_01_F"]; _vehs = 0; _attemps = 0; _class = _classes select 0; zlt_rnd_seed = ((_startpos select 0) + (_startpos select 1) mod 65537); while {_vehs < _vehmax and _attemps < 10} do { //diag_log ["CV",_startpos, _lrange, _houses]; _house = _houses call zlt_fnc_selectrandom; _housepos = _house modeltoworld [0,0,0]; _newpos = _housepos findEmptyPosition [ 3 , 15, _class ]; _houses = _houses - [_house]; if (count _newpos == 0) then { _attemps = _attemps + 1; } else { _veh = _class createVehicle (_newpos ) ; _veh setvariable ["zlt_civveh", true]; zlt_civveh_vehicles set [count zlt_civveh_vehicles, _veh]; _direction = (random 360); _nearRoads = _newpos nearRoads 10; if(count _nearRoads > 0) then { _road = _nearRoads select 0; _roadConnectedTo = roadsConnectedTo _road; if (count _roadConnectedTo > 0) then { _connectedRoad = _roadConnectedTo select 0; _direction = [_road, _connectedRoad] call BIS_fnc_DirTo; }; }; _veh setdir _direction; _attemps = 0; _vehs = _vehs + 1; if (_debug) then { ["crt"+str(_newpos), _newpos] call zlt_fnc_createmarkerlocal; }; }; }; _t2 = diag_ticktime; if (_debug) then { diag_log str ["civeh.sqf", _t2-_t1]; }; }; zlt_civ_checkloop = { zlt_civveh_notemptyloc = []; { _veh = vehicle _x; _isInVeh = (vehicle _x != _x); // or _veh getvariable ["zlt_civ_round", -1] != zlt_civveh_round if (!_isInVeh || {_veh isKindOf "LandVehicle"}) then { _dist = 1000; _locations = nearestLocations [(getpos vehicle _x), ["NameCityCapital","NameCity","NameVillage"], _dist]; _locations2 = nearestLocations [(getpos vehicle _x), ["NameCityCapital","NameCity","NameVillage"], 2500]; { if ( not (_x in zlt_civveh_spawnedloc) ) then { _lrange = 50; _cars = 1; switch (type _x) do { case ("NameCityCapital") : {_lrange = 250; _cars = 7;}; case ("NameCity") : {_lrange = 150; _cars = 3;}; }; _pos = position _x; [ [_pos select 0, _pos select 1, 0], false, _lrange, _cars] call zlt_fnc_civvehs; zlt_civveh_spawnedloc pushBack _x; // _x setside east; }; } foreach _locations; { zlt_civveh_notemptyloc pushBack _x; } foreach _locations2; if (_isInVeh) then { _veh setvariable ["zlt_civ_round", zlt_civveh_round];}; }; } foreach (if (player in playableunits) then {playableunits} else {[player]}); { _pos = [(position _x) select 0, (position _x) select 1, 0]; _ent = ( (_pos) nearEntities ["C_Offroad_01_F", 300] ); { if ( _x getvariable ["zlt_civveh", false] and {count crew _x == 0 and fuel _x == 1}) then { deletevehicle _x; }; } foreach _ent; zlt_civveh_spawnedloc = zlt_civveh_spawnedloc - [_x]; } foreach (zlt_civveh_spawnedloc-zlt_civveh_notemptyloc); zlt_civveh_round = zlt_civveh_round + 1; }; while {true} do { //scan loop sleep 3.4; //magic number [] call zlt_civ_checkloop; };
  3. I want to share field repair script which we using in our TvT games and which I believe adds additional realism to the game. It add every unit additional ability to field repair heavy damaged vehicle to "Yellow" state. Repair takes 30-300 seconds (depends on number of heavy damaged parts) and requires dispensable ToolKit in backpack or in vehicle cargo, this kit dissapears after the repair. But you can repair vehicle first time without ToolKit, this simulates spare parts set which always exists on every military vehicle. Repair trucks could repair 5 times and each repair lasts 120 sec. 27/01/2014 Bugfixes, reduced repair times to 30 secs. for each damaged part and 120 secs. fr repair truck 25/12/2013 Player respawn support. 24/12/2013 Another one hotfix. 22/12/2013 Hotfix for "Repair interrupted" problem. 15/12/2013 Script updated. Repair time depends now from vehicle damage level, repair lasts from (40 sec - 1 broken wheel) to 400 sec. Minor bugfixes. 12/12/2013 Script updated. Support for dynamically created vehicles but repair trucks. See "Installation and usage" for info regarding dynamically created repair trucks. 09/12/2013 Script updated. Several bugfixes regarding working on dedicated MP server. 05/12/2013 Updated with latest script version. Added support for repair tracks. Repair truck also fixes vehicles for 3 min., but completely restores them. Repair truck can be used 5 times. To use repair track you should sat into drivers place of the damaged vehicle then look on repair truck and select 'Full repair' in the menu. Any suggestions welcome. Installation and Usage: Just copy zlt_fieldrepair.sqf file into your mission folder in Documents\Arma 3 - Other Profiles\{YOUR ARMA PROFILE NMAE}\MPMissions directory. Put in yoyr init.sqf string: [] execVM "zlt_fieldrepair.sqf"; or if you use dynamically created repair trucks in your mission: [true] execVM "zlt_fieldrepair.sqf"; Sample mission: http://stels-arma.ucoz.ru/sample.Stratis.zip Script: http://stels-arma.ucoz.ru/zlt_fieldrepair.sqf Current limitations: You should not use Engineer or Repair Specialist classes when using this script, because it doesnt remove vanilla repair actions from their menus and they still will be able to repair vehicles for 1 second. zlt_fieldrepair.sqf: // Field repair by [sTELS]Zealot // Just add // [] execVM "zlt_fieldrepair.sqf"; // http://forums.bistudio.com/showthread.php?168714-Realistic-repair-script #define DEFAULT_FREPAIR_VER "1P" #define DEFAULT_FIELDREPAIR_EACH_PART_TIME 30 #define DEFAULT_FIELDREPAIR_EACH_HARDPART_TIME 60 #define DEFAULT_FULLREPAIR_LENGTH 120 #define DEFAULT_REPAIR_TRUCK_USES 5 #define DEFAULT_FREE_REPAIRS 1 #define STR_FIELD_REPAIR "Field repair" #define STR_CANCEL_ACTION "Cancel action" #define STR_SERIOUS_REPAIR "Full repair" #define STR_REPAIR_CONDITIONS "Bad conditions for repair" #define STR_ANOTHER_ACTION "Another action in progress" #define STR_NEED_TOOLKIT "Need ToolKit in inventory yours or vehicle." #define STR_REPAIR_INTERRUPTED "Repair interrupted" #define STR_REPAIR_FINISHED "Repair finished" #define STR_REPAIR_MSG_STRING "%2 will be repaired in %1 sec" #define STR_REPAIR_TRUCK_DEPLETED "Spare parts depleted in repair truck" #define STR_HELP "Realistic field repair (Author: Zealot) <br/>Script gives each player ability to repair vehicles. <br/>- Repair lasts for 40-400 sec. (Longer for heavy damaged vehicles), it can be interrupted and the continued, time saves.<br/>- Each vehicle could be repaired 1 time for spare parts stored in the vehicle itself.For the next repairs you should have Toolkit in your backpack or in vehicle cargo.<br/>- Field repair fixes only some parts of the vehicle and only to 'Yellow state'.<br/>- Repair from repair trucks lasts 3 min. but completely repairs vehicles. Repair truck can be used 5 times, then spare parts in it will be depleted.<br/>- To use repair truck you should sat on the drivers place of the repair truck then look on damaged vehicle and select 'Full repair' in menu.<br/>" #define STR_SCRIPTS_NAME "Scripts" #define STR_SCRIPT_NAME "Field repair" #define STR_PUSH_APC "Push vehicle" zlt_repair_loop = [_this, 0, false] call BIS_fnc_param; if (isServer) then { [] spawn { _first = true; while {_first or zlt_repair_loop} do { { if (getRepairCargo _x > 0) then { _x setRepairCargo 0; _x setVariable ["zlt_repair_cargo", 1, true]; }; } foreach vehicles; _first = false; sleep 26.1; }; }; }; zlt_fnc_partrepair = { private "_veh"; _veh = [_this, 0] call BIS_fnc_param; if (isNil {_veh} ) exitWith {}; { _dmg = (_veh getHitPointDamage _x); if (not isNil {_dmg}) then { if ( _dmg > 0.64 ) then { if (_x in zlt_hardRepairParts) then { _veh setHitPointDamage [_x,0.64]; } else { _veh setHitPointDamage [_x,0]; }; }; }; } foreach zlt_repair_hps; }; zlt_fnc_fullrepair = { private "_veh"; _veh = [_this, 0] call BIS_fnc_param; _veh setDamage 0; }; zlt_repair_hps = ["HitLFWheel","HitLBWheel","HitLMWheel","HitLF2Wheel","HitRFWheel","HitRBWheel","HitRMWheel","HitRF2Wheel" ,"HitEngine", "HitLTrack","HitRTrack"] + ["HitFuel","HitAvionics","HitVRotor","HitHRotor"]; zlt_hardRepairParts = ["HitEngine", "HitLTrack","HitRTrack"] + ["HitFuel","HitAvionics","HitHRotor"]; if (isDedicated) exitWith {}; waitUntil {player == player}; zlt_mutexAction = false; zlt_fnc_vehicledamaged = { private ["_veh","_vehtype","_flag"]; _veh = [_this, 0] call BIS_fnc_param; if (isNil {_veh}) exitWith {false}; _vehtype = typeOf _veh; _flag = false; if (true) then { { _cdmg = _veh getHitPointDamage (_x); if (not isNil {_cdmg} ) then { if (_cdmg > 0.64) exitWith {_flag = true}; }; } forEach zlt_repair_hps; }; _flag; }; zlt_frpr_getPartsRepairTime = { private ["_veh","_vehtype","_flag"]; _veh = [_this, 0] call BIS_fnc_param; if (isNil {_veh}) exitWith {1}; _rprTime = 0; { _cdmg = _veh getHitPointDamage (_x); if (not isNil {_cdmg} ) then { diag_log str ["REPAIR ", _x, _cdmg]; if (_cdmg > 0.64) exitWith {_rprTime = _rprTime + ( if (_x in zlt_hardRepairParts) then {DEFAULT_FIELDREPAIR_EACH_HARDPART_TIME} else {DEFAULT_FIELDREPAIR_EACH_PART_TIME}); }; }; } forEach zlt_repair_hps; _rprTime; }; zlt_fnc_notify = { [ format["<t size='0.75' color='#ffff00'>%1</t>",_this], 0,1,5,0,0,301] spawn bis_fnc_dynamicText; }; zlt_fnc_hastk = { private ["_ret"]; _ret = 0; if ("ToolKit" in (items player)) then {_ret = 1;}; if ("ToolKit" in (itemCargo _veh)) then {_ret = 2;}; if ( (_veh getVariable ["zlt_longrepair_times",0] ) < DEFAULT_FREE_REPAIRS) then {_ret = 3;}; _ret; }; zlt_fnc_removeitemfromcargo = { private ["_veh"]; _item = [_this,0,""] call BIS_fnc_param; _veh = [_this,1] call BIS_fnc_param; _allitems = itemcargo _veh; clearItemCargoGlobal _veh; _allitems = _allitems call BIS_fnc_consolidateArray; _n = [_allitems, _item] call BIS_fnc_findInPairs; _allitems set [_n, [(_allitems select _n) select 0, ((_allitems select _n) select 1) - 1]]; { _veh addItemCargoGlobal [_x select 0, _x select 1 ];} foreach _allitems; }; zlt_prc_repairvehicle = { private ["_veh"]; _veh = (nearestObjects [player,["LandVehicle","Air","Ship"], 7]) select 0; if (isNil {_veh}) exitWith {}; if (zlt_mutexAction) exitWith { STR_ANOTHER_ACTION call zlt_fnc_notify; }; if (not alive player or (player distance _veh) > 7 or (vehicle player != player) or speed _veh > 3) exitWith {STR_REPAIR_CONDITIONS call zlt_fnc_notify;}; _hastk = [] call zlt_fnc_hastk; if ( _hastk == 0 ) exitWith {STR_NEED_TOOLKIT call zlt_fnc_notify;}; _repairFinished = false; zlt_mutexAction = true; _lastPlayerState = animationState player; player playActionNow "medicStartRightSide"; sleep 0.5; _maxlength = _veh getVariable["zlt_longrepair",[_veh] call zlt_frpr_getPartsRepairTime]; _vehname = getText ( configFile >> "CfgVehicles" >> typeOf(_veh) >> "displayName"); _length = _maxlength; _cycle = 0; while {alive player and (player distance _veh) < 7 and (vehicle player == player) and speed _veh < 3 and not _repairFinished and zlt_mutexAction and (_cycle < 3 or (["medic",animationState player] call BIS_fnc_inString))} do { // diag_log ("ANIM STATE = "+str(animationState player)); (format[sTR_REPAIR_MSG_STRING, _length, _vehname] ) call zlt_fnc_notify; if (_length <= 0) then {_repairFinished = true;}; _length = _length - 1; sleep 1; _hastk = [] call zlt_fnc_hastk; if (_hastk <= 0) exitWith {STR_NEED_TOOLKIT call zlt_fnc_notify; sleep 1.;}; _cycle = _cycle + 1; }; if (_repairFinished) then { _hastk = [] call zlt_fnc_hastk; if (_hastk == 0) exitWith {STR_NEED_TOOLKIT call zlt_fnc_notify; sleep 1.;}; STR_REPAIR_FINISHED call zlt_fnc_notify; [_veh,"zlt_fnc_partrepair", _veh] call bis_fnc_MP; if (_hastk == 1) then {player removeItem "ToolKit";}; if (_hastk == 2) then { ["ToolKit",_veh] call zlt_fnc_removeitemfromcargo;}; _veh setVariable["zlt_longrepair",nil, true]; _veh setVariable["zlt_longrepair_times", (_veh getVariable ["zlt_longrepair_times",0]) + 1 , true ]; } else { STR_REPAIR_INTERRUPTED call zlt_fnc_notify; _veh setVariable["zlt_longrepair",_length, true]; }; zlt_mutexAction = false; player playActionNow "medicstop"; }; zlt_fnc_repair_cond = { private ["_veh","_ret"]; _ret = false; _veh = (nearestObjects [player,["LandVehicle","Air","Ship"], 7]) select 0; if (isNil {_veh}) exitWith {_ret}; _dmged = _veh call zlt_fnc_vehicledamaged; _ret = (alive player and {(player distance _veh) <= 7} and {(vehicle player == player)} and {speed _veh < 3} and {not zlt_mutexAction} and {_dmged} and {alive _veh}); _ret; }; zlt_fnc_heavyRepair = { _caller = player; _truck = vehicle _caller; _veh = cursorTarget; if (isNil "_veh" or {isNull _truck} or {isNull _veh}) exitWith {false}; if (zlt_mutexAction) exitWith { STR_ANOTHER_ACTION call zlt_fnc_notify; }; if (_truck getVariable ["zlt_repair_cargo", 0] <= 0) then { STR_REPAIR_TRUCK_DEPLETED call zlt_fnc_notify; }; if (not alive player or vehicle player == player or speed _veh > 3 or _veh distance _truck > 15 ) exitWith {STR_REPAIR_CONDITIONS call zlt_fnc_notify;}; _repairFinished = false; zlt_mutexAction = true; _maxlength = _veh getVariable["zlt_longrepairTruck",DEFAULT_FULLREPAIR_LENGTH]; _vehname = getText ( configFile >> "CfgVehicles" >> typeOf(_veh) >> "displayName"); _length = _maxlength; while { alive player and alive _truck and alive _veh and vehicle _caller != _caller and speed _veh <= 3 and not _repairFinished and zlt_mutexAction and _veh distance _truck <= 15 } do { (format[sTR_REPAIR_MSG_STRING, _length, _vehname] ) call zlt_fnc_notify; if (_length <= 0) then {_repairFinished = true;}; _length = _length - 1; sleep 1; }; if (_repairFinished) then { STR_REPAIR_FINISHED call zlt_fnc_notify; [_veh,"zlt_fnc_fullrepair", _veh] call bis_fnc_MP; _truck setVariable ["zlt_repair_cargo", ( (_truck getVariable ["zlt_repair_cargo", 0] )- (1 / DEFAULT_REPAIR_TRUCK_USES) ), true] ; _veh setVariable["zlt_longrepairTruck", nil, true]; _veh setVariable["zlt_fullrepair_times", (_veh getVariable ["zlt_fullrepair_times",0]) + 1 , true ]; } else { STR_REPAIR_INTERRUPTED call zlt_fnc_notify; _veh setVariable["zlt_longrepairTruck",_length, true]; }; zlt_mutexAction = false; }; zlt_pushapc = { private ["_veh","_unit"]; _veh = vehicle player; if (zlt_mutexAction) exitWith {}; zlt_mutexAction = true; sleep 1.; _spd = 3; _dir = direction _veh; _veh setVelocity [(sin _dir)*_spd, (cos _dir)*_spd, 0]; zlt_mutexAction = false; }; // obsolete zlt_fnc_heavyRepairCOnd = { _truck = vehicle player; _veh = cursorTarget; if (isNull _truck or isNull _veh) exitWith {false}; _isRepair = _truck getVariable ["zlt_repair_cargo", -1]; if (_isRepair == -1) exitWith {false}; _res = _veh distance _truck <= 15 and {player == (driver _truck)} and {(_veh isKindOf "LandVehicle" or _veh isKindOf "Ship" or _veh isKindOf "Air")} and {alive _truck} and {alive player} and {alive _veh} and {not zlt_mutexAction} and {speed _veh <= 3} and {(damage _veh != 0)}; _res; }; if (isNil "zlt_cancelActionId") then { zlt_cancelActionId = player addAction["<t color='#0000ff'>"+STR_CANCEL_ACTION+"</t>", {zlt_mutexAction = false}, [], 10, false, true, '',' zlt_mutexAction ']; player addAction["<t color='#ff0000'>"+STR_FIELD_REPAIR+"</t>", zlt_prc_repairvehicle, [], -1, false, true, '','[] call zlt_fnc_repair_cond']; player addAction["<t color='#ff0000'>"+STR_SERIOUS_REPAIR+ "</t>", zlt_fnc_heavyRepair, [], -1, false, true, '','_truck=(vehicle player);_truck getVariable ["zlt_repair_cargo", -1] != -1 and {alive cursorTarget} and {_truck distance cursorTarget <= 15} and {(cursorTarget isKindOf "LandVehicle" or cursorTarget isKindOf "Ship" or cursorTarget isKindOf "Air")} and {not zlt_mutexAction} and {speed cursorTarget <= 3} and {(damage cursorTarget != 0)}']; player addAction["<t color='#FF9900'>"+STR_PUSH_APC+"</t>",zlt_pushapc,[],5,false,true,"","canMove (vehicle player) and ((vehicle player) isKindOf 'Wheeled_APC_F') and player == driver (vehicle player) and surfaceIsWater getpos (vehicle player) and abs(speed (vehicle player) ) < 3 and not zlt_mutexAction"]; player createDiarySubject [sTR_SCRIPTS_NAME,STR_SCRIPTS_NAME]; player createDiaryRecord [sTR_SCRIPTS_NAME,[sTR_SCRIPT_NAME, STR_HELP]]; }; player addEventHandler ["Respawn", { zlt_cancelActionId = player addAction["<t color='#0000ff'>"+STR_CANCEL_ACTION+"</t>", {zlt_mutexAction = false}, [], 10, false, true, '',' zlt_mutexAction ']; player addAction["<t color='#ff0000'>"+STR_FIELD_REPAIR+"</t>", zlt_prc_repairvehicle, [], -1, false, true, '','[] call zlt_fnc_repair_cond']; player addAction["<t color='#ff0000'>"+STR_SERIOUS_REPAIR+ "</t>", zlt_fnc_heavyRepair, [], -1, false, true, '','_truck=(vehicle player);_truck getVariable ["zlt_repair_cargo", -1] != -1 and {alive cursorTarget} and {_truck distance cursorTarget <= 15} and {(cursorTarget isKindOf "LandVehicle" or cursorTarget isKindOf "Ship" or cursorTarget isKindOf "Air")} and {not zlt_mutexAction} and {speed cursorTarget <= 3} and {(damage cursorTarget != 0)}']; player addAction["<t color='#FF9900'>"+STR_PUSH_APC+"</t>",zlt_pushapc,[],5,false,true,"","canMove (vehicle player) and ((vehicle player) isKindOf 'Wheeled_APC_F') and player == driver (vehicle player) and surfaceIsWater getpos (vehicle player) and abs(speed (vehicle player) ) < 3 and not zlt_mutexAction"]; }];
  4. zealot111

    Arma Debug Window (ADW)

    I mean special dialog for changing font for RPT text window, or at least ability to set font via command line parameters. Also look at the ADW competitor . It have additional list with RPT files on the left of its windows. Could you add the same to the ADW please?
  5. zealot111

    Arma Debug Window (ADW)

    Good. Thanks. Definetely will try. I think that directory should be scanned 1 time per 15 seconds. (It is reasonable to add checkbox "Autoswitch to latest" for this feature). It is very useful if you often restart Arma3 and forget to switch files manually. Also request ability to change font (or at least ability to edit text file with parameters) for rpt log text. PS Tried latest version and it works with my language just fine.
  6. zealot111

    Arma Debug Window (ADW)

    I open RPT files as UTF-8 in notepad++ and always see my national symbols OK only in this encoding. And this is obvious for me, All Arma3 files (mission files and etc.) use utf-8 encoding. And you should interpret them as using UTF-8 encoding, even when the are ANSI (in English localization). Could you send me source code of your program please? I would try to locate the problem.
  7. zealot111

    Arma Debug Window (ADW)

    Nope, Arma writes RPT as UTF-8, but shows on screenshots as UTF-8 misidentified as ANSI. It is easy to verify. RPT is written without BOM. Maybe it makes java misunderstood it as ANSI. I attached one of my logs with erorrs as example. Also suggest to add feature to automatically scan RPT files directory for new files and autoswitch to latest of them.
  8. Try replace this null = [this, "MILITARY"] execVM 'Terrorists\initUnit.sqf'; with 0 = [this, "MILITARY"] call compilefinal preprocessfilelinenumbers 'Terrorists\initUnit.sqf'; execvm shouldnt be used in unit init since it runs script throught scheduler. Also replace waitUntil {!isNull player}; in loadout file with if (!local(_this select 0)) exitwith {}; Or you will have problems in multiplayer. And loadout script should not have any sleeps and waituntils
  9. zealot111

    Arma Debug Window (ADW)

    Good app, thanks. But it has problems with localized errors on RPT (RPT has UTF-8 encoding) Could you fix this issue please?
  10. Thanks for the SMS. But now 3D wires looks too contrast from very far distances. Suggest following change in the line 29 of vip_sms\fn\fn_init.sqf: drawLine3D [(_x select 0), (_x select 1), [0,0,0,0.75]] replace by if (player distance (_x select 0) < 25 || {player distance (_x select 1) < 25}) then {drawLine3D [(_x select 0), (_x select 1), [0,0,0,0.75]]}; Then wires will be visible only when player is closer than 25 m to them.
  11. zealot111

    GF Post Process Effect Editor

    Excellent and very useful tool. Thanks!
  12. zealot111

    TF47 Launchers [WIP]

    It would be great to have some opfor AT launchers, (suggest RPG-29, similar to M3 MAAWS, since RPG-7 already exists in several addons (RHS, Sudden's EvW, etc.)). Updated: Also interesting variant is https://en.wikipedia.org/wiki/M79_Osa
  13. zealot111

    TRYK's Multi-Play Uniforms

    Hi, guys. Thanks for the excellent mod. Sometimes when selecting unit in virtual arsenal following error appears on screen and logs: 9:08:45 Warning Message: Cannot load texture tryk_unit\data\dt\dusty_jacke_co.paa. 9:08:45 Warning Message: Cannot load material file tryk_unit\data\dt\dusty_jacke.rvmat. 9:08:45 Cannot load material file tryk_unit\data\dt\dusty_jacke.rvmat And also tryk_units.pbo contains some unbinarized p3d's. Noticed that when tried to manually repack pbo by Mikero tools.
  14. zealot111

    Arma 2 BRDM-2/BTR-60PB Port

    Sorry, have no idea either. Will inform you if find any document/manual. ---------- Post added at 20:16 ---------- Previous post was at 20:14 ---------- Because this mod contains many various skins for btr60 which are very fun to make missions with.
  15. zealot111

    Arma 2 BRDM-2/BTR-60PB Port

    Thank you for excellent mod, could you make optional pbo compatible with RHS damage system?
  16. Great script, player cannot to remove helmet and uniform, but anyway he can to exchange helmet or uniform with the dead body. How can that could be disabled?
  17. Try this script variant // v1d Civilian Vehicles from [sTELS]Zealot if (not isserver) exitwith {}; zlt_civveh_round = 0; zlt_civveh_vehicles = []; zlt_civveh_spawnedloc = []; zlt_rnd_seed = 3; zlt_fnc_random = { private ["_a","_c","_m"]; _a = 75; _c = 0; _m = 65537; zlt_rnd_seed = ( zlt_rnd_seed * _a + _c ) mod (_m); (zlt_rnd_seed / _m) ; }; zlt_fnc_selectrandom = { _this select floor ( ([] call zlt_fnc_random) * count (_this)); }; zlt_fnc_civvehs = { _debug = [_this, 1, false] call bis_fnc_param; _lrange = _this select 2; _cars = _this select 3; _t1 = diag_ticktime; _startpos= _this select 0; _houses = _startpos nearobjects ["House",_lrange]; //_vehmax = _cars; _vehmax = (round ((sqrt (count _houses)) * 0.5)) max 1; _classes = ["C_Offroad_01_F"]; _vehs = 0; _attemps = 0; _class = _classes select 0; zlt_rnd_seed = ((_startpos select 0) + (_startpos select 1) mod 65537); while {_vehs < _vehmax and _attemps < 10} do { //diag_log ["CV",_startpos, _lrange, _houses]; _house = _houses call zlt_fnc_selectrandom; _housepos = _house modeltoworld [0,0,0]; _newpos = _housepos findEmptyPosition [ 3 , 15, _class ]; _houses = _houses - [_house]; if (count _newpos == 0) then { _attemps = _attemps + 1; } else { _veh = _class createVehicle (_newpos ) ; _veh setvariable ["zlt_civveh", true]; zlt_civveh_vehicles set [count zlt_civveh_vehicles, _veh]; _direction = (random 360); _nearRoads = _newpos nearRoads 10; if(count _nearRoads > 0) then { _road = _nearRoads select 0; _roadConnectedTo = roadsConnectedTo _road; if (count _roadConnectedTo > 0) then { _connectedRoad = _roadConnectedTo select 0; _direction = [_road, _connectedRoad] call BIS_fnc_DirTo; }; }; _veh setdir _direction; _attemps = 0; _vehs = _vehs + 1; if (_debug) then { ["crt"+str(_newpos), _newpos] call zlt_fnc_createmarkerlocal; }; }; }; _t2 = diag_ticktime; if (_debug) then { diag_log str ["civeh.sqf", _t2-_t1]; }; }; zlt_civ_checkloop = { zlt_civveh_notemptyloc = []; { _veh = vehicle _x; _isInVeh = (vehicle _x != _x); // or _veh getvariable ["zlt_civ_round", -1] != zlt_civveh_round if (!_isInVeh || {_veh isKindOf "LandVehicle"}) then { _dist = 1000; _locations = nearestLocations [(getpos vehicle _x), ["NameCityCapital","NameCity","NameVillage"], _dist]; _locations2 = nearestLocations [(getpos vehicle _x), ["NameCityCapital","NameCity","NameVillage"], 2500]; { if ( not (_x in zlt_civveh_spawnedloc) ) then { _lrange = 50; _cars = 1; switch (type _x) do { case ("NameCityCapital") : {_lrange = 250; _cars = 7;}; case ("NameCity") : {_lrange = 150; _cars = 3;}; }; _pos = position _x; [ [_pos select 0, _pos select 1, 0], false, _lrange, _cars] call zlt_fnc_civvehs; zlt_civveh_spawnedloc pushBack _x; // _x setside east; }; } foreach _locations; { zlt_civveh_notemptyloc pushBack _x; } foreach _locations2; if (_isInVeh) then { _veh setvariable ["zlt_civ_round", zlt_civveh_round];}; }; } foreach (if (player in playableunits) then {playableunits} else {[player]}); { _pos = [(position _x) select 0, (position _x) select 1, 0]; _ent = ( (_pos) nearEntities ["C_Offroad_01_F", 300] ); { if ( _x getvariable ["zlt_civveh", false] and {count crew _x == 0 and fuel _x == 1}) then { deletevehicle _x; }; } foreach _ent; zlt_civveh_spawnedloc = zlt_civveh_spawnedloc - [_x]; } foreach (zlt_civveh_spawnedloc-zlt_civveh_notemptyloc); zlt_civveh_round = zlt_civveh_round + 1; }; while {true} do { //scan loop sleep 3.4; //magic number [] call zlt_civ_checkloop; };
  18. zealot111

    TF47 Launchers [WIP]

    Great thanks for the RHS compatibility patch!
  19. zealot111

    TF47 Launchers [WIP]

    Thanks BlackPixxel for this mod. Do you have any plans of adding optional config to add compatibility with RHS damage system? This will helps a lot peoples which plays Arma3 using RHS: Escalation.
  20. Arma 3 frozes to dead in big cities on some maps. Reproducibility 100% - just fly to the Cherno in editor (in camera mode or heli). Problem is related to one of the buildings in city. Cannot say classname of the building, is the big building with 6 big tankers, arma 3 just hangs when I try to look at these buildings. (The same reproduced by all my teammates). Requesting hotfix.
  21. zealot111

    Realistic repair script

    What kind of restriction you want to add?
  22. zealot111

    Realistic repair script

    Its a bug in the script with server owned vehicles. I have just fixed it and uploaded new version on the first post. ---------- Post added at 13:12 ---------- Previous post was at 13:11 ---------- I have just uploaded new version. Please look to line #define DEFAULT_FREE_REPAIRS 1 Change value to 0 and each field repair would require repair kit.
  23. zealot111

    Helicopter fastrope script

    Its coordinates of the ropes in the model space of helicopter
  24. zealot111

    Helicopter fastrope script

    To add your favorite helicopter from addon you should modify 2 global variables: zlt_rope_helis - which defines classes of helicopters which is allowed to use fastrope and zlt_rope_helidata - which defines mount points fro ropes on helicopter model; for example, if you want to add support for CH_147F from Canadian Army addon you should change the script: add "CH_147F" to zlt_rope_helis variable and add [ ["CH_147F"], [-0.1,0.3,-27.7], [] ] to zlt_rope_helidata Example: // v1g Fast Rope by [sTELS]Zealot #define MAX_SPEED_WHILE_FASTROPING 10 #define MAX_SPEED_ROPES_AVAIL 30 #define STR_TOSS_ROPES "Toss Ropes" #define STR_FAST_ROPE "Fast Rope" #define STR_CUT_ROPES "Cut Ropes" if (isdedicated) exitwith {}; waituntil {player == player}; zlt_rope_ropes = []; zlt_mutexAction = false; zlt_rope_helis = ["O_Heli_Light_02_unarmed_F","O_Heli_Light_02_F","B_Heli_Transport_01_F","B_Heli_Transport_01_camo_F","O_Heli_Attack_02_F","O_Heli_Attack_02_black_F","I_Heli_Transport_02_F","B_Heli_Light_01_F","CH_147F"]; zlt_rope_helidata = [ [ ["O_Heli_Light_02_unarmed_F", "O_Heli_Light_02_F"], [1.35,1.35,-24.95], [-1.45,1.35,-24.95] ], [ ["B_Heli_Transport_01_F", "B_Heli_Transport_01_camo_F"], [-1.11,2.5,-24.7], [1.11,2.5,-24.7] ], [ ["O_Heli_Attack_02_F", "O_Heli_Attack_02_black_F"], [1.3,1.3,-25], [-1.3,1.3,-25] ], [ ["I_Heli_Transport_02_F"], [0,-5,-26], [] ], [ ["B_Heli_Light_01_F"], [0.6,0.5,-25.9], [-0.8,0.5,-25.9] ], [ ["CH_147F"], [-0.1,0.3,-27.7], [] ] ]; zlt_fnc_tossropes = { private ["_heli","_ropes","_oropes","_rope"]; _heli = _this; _ropes = []; _oropes = _heli getvariable ["zlt_ropes",[]]; if (count _oropes != 0 ) exitwith {}; _i = 0; { if ((typeof _heli) in (_x select 0)) exitwith { _ropes = _ropes + [_x select 1]; if ( count (_x select 2) !=0 ) then { _ropes = _ropes + [_x select 2]; }; }; _i = _i +1; } foreach zlt_rope_helidata; sleep random 0.3; if ( count (_heli getvariable ["zlt_ropes",[]]) != 0 ) exitwith { zlt_mutexAction = false; }; _heli animateDoor ['door_R', 1]; _heli animateDoor ['door_L', 1]; { _rope = createVehicle ["land_rope_f", [0,0,0], [], 0, "CAN_COLLIDE"]; _rope setdir (getdir _heli); _rope attachto [_heli, _x]; _oropes = _oropes + [_rope]; } foreach _ropes; _heli setvariable ["zlt_ropes",_oropes,true]; _heli spawn { private ["_heli","_ropes"]; _heli = _this; while {alive _heli and count (_heli getvariable ["zlt_ropes", []]) != 0 and abs (speed _heli) < MAX_SPEED_ROPES_AVAIL } do { sleep 0.3; }; _ropes = (_heli getvariable ["zlt_ropes", []]); {deletevehicle _x} foreach _ropes; _heli setvariable ["zlt_ropes", [], true]; }; }; zlt_fnc_ropes_cond = { _veh = vehicle player; _flag = (_veh != player) and {(not zlt_mutexAction)} and {count (_veh getvariable ["zlt_ropes", []]) == 0} and { (typeof _veh) in zlt_rope_helis } and {alive player and alive _veh and (abs (speed _veh) < MAX_SPEED_ROPES_AVAIL ) }; _flag; }; zlt_fnc_fastropeaiunits = { private ["_heli","_grunits"]; diag_log ["zlt_fnc_fastropeaiunits", _this]; _heli = _this select 0; _grunits = _this select 1; dostop (driver _heli ); (driver _heli) setBehaviour "Careless"; (driver _heli) setCombatMode "Blue"; _heli spawn zlt_fnc_tossropes; [_heli, _grunits] spawn { private ["_units","_heli"]; sleep random 0.5; _units = _this select 1; _heli = (_this select 0); _units = _units - [player]; _units = _units - [driver _heli]; {if (!alive _x or isplayer _x or vehicle _x != _heli) then {_units = _units - [_x];}; } foreach _units; { sleep (0.5 + random 0.7); _x spawn zlt_fnc_fastropeUnit; } foreach _units; waituntil {sleep 0.5; { (getpos _x select 2) < 1 } count _units == count _units; }; sleep 10; (driver _heli) doFollow (leader group (driver _heli )); (driver _heli) setBehaviour "Aware"; (driver _heli) setCombatMode "White"; _heli call zlt_fnc_cutropes; }; }; zlt_fnc_fastrope = { diag_log ["fastrope", _this]; zlt_mutexAction = true; sleep random 0.3; if (player == leader group player) then { [vehicle player, units group player] call zlt_fnc_fastropeaiunits; }; player call zlt_fnc_fastropeUnit; zlt_mutexAction = false; }; zlt_fnc_fastropeUnit = { private ["_unit","_heli","_ropes","_rope","_zmax","_zdelta","_zc"]; _unit = _this; _heli = vehicle _unit; if (_unit == _heli) exitWith {}; _ropes = (_heli getvariable ["zlt_ropes", []]); if (count _ropes == 0) exitwith {}; _rope = _ropes call BIS_fnc_selectRandom; _zmax = 22; _zdelta = 7 / 10 ; _zc = _zmax; _unit action ["eject", _heli]; _unit switchmove "gunner_standup01"; _unit setpos [(getpos _heli select 0), (getpos _heli select 1), 0 max ((getpos _heli select 2) - 3)]; while {alive _unit and (getpos _unit select 2) > 1 and (abs (speed _heli)) < MAX_SPEED_WHILE_FASTROPING and _zc > -24} do { _unit attachTo [_rope, [0,0,_zc]]; _zc = _zc - _zdelta; sleep 0.1; }; _unit switchmove ""; detach _unit; }; zlt_fnc_cutropes = { _veh = _this; _ropes = (_veh getvariable ["zlt_ropes", []]); {deletevehicle _x} foreach _ropes; _veh setvariable ["zlt_ropes", [], true]; _veh animateDoor ['door_R', 0]; _veh animateDoor ['door_L', 0]; }; zlt_fnc_removeropes = { (vehicle player) call zlt_fnc_cutropes; }; zlt_fnc_createropes = { zlt_mutexAction = true; (vehicle player) call zlt_fnc_tossropes; zlt_mutexAction = false; }; player createDiarySubject [sTR_SCRIPTS_NAME,STR_SCRIPTS_NAME]; player createDiaryRecord [sTR_SCRIPTS_NAME,[sTR_SCRIPT_NAME, STR_HELP]]; player addAction["<t color='#ffff00'>"+STR_TOSS_ROPES+"</t>", zlt_fnc_createropes, [], -1, false, false, '','[] call zlt_fnc_ropes_cond']; player addAction["<t color='#ff0000'>"+STR_CUT_ROPES+"</t>", zlt_fnc_removeropes, [], -1, false, false, '','not zlt_mutexAction and count ((vehicle player) getvariable ["zlt_ropes", []]) != 0']; player addAction["<t color='#00ff00'>"+STR_FAST_ROPE+"</t>", zlt_fnc_fastrope, [], 15, false, false, '','not zlt_mutexAction and count ((vehicle player) getvariable ["zlt_ropes", []]) != 0 and player != driver vehicle player']; player addEventHandler ["Respawn", { player addAction["<t color='#ffff00'>"+STR_TOSS_ROPES+"</t>", zlt_fnc_createropes, [], -1, false, false, '','[] call zlt_fnc_ropes_cond']; player addAction["<t color='#ff0000'>"+STR_CUT_ROPES+"</t>", zlt_fnc_removeropes, [], -1, false, false, '','not zlt_mutexAction and count ((vehicle player) getvariable ["zlt_ropes", []]) != 0']; player addAction["<t color='#00ff00'>"+STR_FAST_ROPE+"</t>", zlt_fnc_fastrope, [], 15, false, false, '','not zlt_mutexAction and count ((vehicle player) getvariable ["zlt_ropes", []]) != 0 and player != driver vehicle player']; }];
  25. I have found solution of the problem: http://dev.arma3.com/sitrep-00039 At least it fixed issue in my case. "... In case you are experiencing difficulties running the Arma 3 Server tool, please try the following two steps: Make sure the steam_appid.txt in the installation folder contains value 107410. Unfortunately the Steam client currently automatically changes this to 233780 with every update of the app. We're trying to solve this with Valve. ..."
×