Bones51 129 Report post Posted December 26, 2016 (edited) Repair/Rearm script for exilemod. Features: Custom GUI (see pics below) Reloads all ammo types including smokes and flares. Per Bullet pricing for re-arming (define the cost for each bullet to be loaded, for each bullet type). Definable in the config file. Definable items used to determine cost of repairs (e.g. will retrieve the price of a wheel in the trader to determine repair cost for a wheel). % damage of parts determines final cost of repairs Both in vehicle and out of vehicle access to the service centre menu option (configurable) Highly configurable through a consolidated config file (configure everything in one location, from bullet cost to trigger objects!) Wide range of config options in the config file inc. enable/disable refueling, enable or disable default Arma refueling, configurable to work/not in safezones, configurable to work/not in territories, configurable to work/not if aggro'd, configurable (on/off) service point markers. Repair/reload sounds played Spoiler Download: https://github.com/Bones50/Advanced-Vehicle-Service-Centre Install Instructions in the link. Enjoy! Edited September 16, 2018 by Bones51 6 1 Share this post Link to post Share on other sites
BenaSC 0 Report post Posted December 28, 2016 I cant repair or rearm anything please help me Share this post Link to post Share on other sites
B.A.D. 45 Report post Posted December 29, 2016 does this need an aloowed idd in infistar,and if,whats it? installed this as intended,no errors,but the vehicle service point wont show up. Share this post Link to post Share on other sites
Bones51 129 Report post Posted December 29, 2016 Shouldn't required any IDD changes in infistar. Did you all change the class associated with re-arm/repair as per the install instructions. I think i had it set for the fuel bowsers on chernarus, so you will need to change it to an building from the map you are using ( e.g. Land_CarService_F and Land_fs_roof_F for Altis / Stratis) Share this post Link to post Share on other sites
B.A.D. 45 Report post Posted December 30, 2016 well sorry to say that i went for avs cause its plug n play.yes,i did set a class name for a building and even tried different ones like land_repair_center and land_a_fuelstation_feed as i run cherno also. but nvm,thanks anyways. Share this post Link to post Share on other sites
FlipM0d3 11 Report post Posted January 16, 2017 (edited) @Bones51 Hi , You guys did a nice job with the script it’s nice and small. I did the instruction but also have some trouble with the script. The repair function seems to work, only on a restart the repair is undone? Also with rearming I get the options but it doesn’t rearm. I have been on this now for about 6 hours and i can’t seem to make it work. Any help is appreciated. Init.sql Spoiler [] execVM "custom\ReArm\takegive_poptab_init.sqf"; if(hasInterface) then { [] execVM "custom\ReArm\service_point.sqf"; }; service_point.sqf Spoiler // Vehicle Service Point by Axe Cop +fix to rearm all weapons from driver+only delete ammo in rearmed weapon only (not entire turret) by HALV //reworked for a3 epoch by Halv //reworked for a3 exile by Dodo private ["_curturret","_folder","_servicePointClasses","_maxDistance","_costsFree","_message","_messageShown","_repair_enable","_repair_costs","_repair_repairTime","_rearm_enable","_rearm_costs","_lastVehicle","_lastRole","_fnc_removeActions","_fnc_getCosts","_fnc_actionTitle","_fnc_getWeapons"]; //====================== general settings _folder = "custom\ReArm\"; _servicePointClasses = ["Land_HelipadSquare_F"]; _maxDistance = 50; _costsFree = "free"; _message = "-- Vehicle Service Point --"; _actionColour = "#0096ff"; //====================== repair settings _repair_enable = true; _repair_repairTime = 2; _repair_costs = [ ["Air",100], ["AllVehicles",100] ]; //====================== rearm settings _rearm_enable = true; // enable or disable the rearm option //deny re-arm if more than this amount of current weapons magazines already in the vehicle _deny_already_armed_with = 4; //deny re-arm if more than this amount of magazines already in the vehicle _GlobalMagazineMAX = 4; //weapon classes disabled from re-arming _NoGoWeapCName = [ "Horn","SmokeLauncher","MiniCarHorn","SportCarHorn","TruckHorn2","TruckHorn","BikeHorn","CarHorn","TruckHorn3" ]; //magazine classnames not allowed to be rearmed _NoGoAmmoCName = [ ]; //cost per magazine for individual vehicles _rearm_costs = [ ["CUP_B_AH6J_MP_USA",100], ["O_T_MBT_02_cannon_ghex_F",100] //["AllVehicles",100], //["Air",100] ]; //debug weapons to see classnames in chat/rpt _debugWeapon = false; //=================================== CONFIG END _lastVehicle = objNull; _lastRole = []; SP_repair_action = -1; SP_rearm_actions = []; _messageShown = true; _fnc_removeActions = { if (isNull _lastVehicle) exitWith {}; _lastVehicle removeAction SP_repair_action; SP_repair_action = -1; { _lastVehicle removeAction _x; } forEach SP_rearm_actions; SP_rearm_actions = []; _lastVehicle = objNull; _lastRole = []; }; _fnc_getCosts = { private ["_vehicle","_costs","_cost"]; _vehicle = _this select 0; _costs = _this select 1; _cost = []; { private "_typeName"; _typeName = _x select 0; if (_vehicle isKindOf _typeName) exitWith { _cost = _x select 1; }; } forEach _costs; _cost }; _fnc_actionTitle = { private ["_actionName","_costs","_costsText","_actionTitle"]; _actionName = _this select 0; _costs = _this select 1; _costsText = _costsFree; if (_costs > 0) then { private ["_itemName","_displayName"]; _costsText = format ["%1 Pop tabs",_costs]; }; _actionTitle = format ["<t color='%3'>%1 (%2)</t>", _actionName, _costsText,_actionColour]; _actionTitle }; _fnc_getWeapons = { private ["_vehicle","_role","_weapons"]; _vehicle = _this select 0; //turrets positions to search for weapons _turrets = [[-1],[0],[1],[2],[0,0],[1,0],[2,0],[0,1],[0,2]]; _weapons = []; { _turret = _x; _weaponsTurret = _vehicle weaponsTurret _turret; { _weapon = _x; if !(_weapon in _NoGoWeapCName) then{ _weaponName = getText (configFile >> "CfgWeapons" >> _weapon >> "displayName"); _weapons pushBack [_weapon, _weaponName, _turret]; }; }forEach _weaponsTurret; }forEach _turrets; _weapons }; _fnc_getAmmo = { private ["_vehicle","_role","_weapons"]; _vehicle = _this select 0; _weapon = _this select 1; _allammo = getArray (configFile >> "CfgWeapons" >> _weapon >> "magazines"); _ammoreturn = []; { _curammo = _x; if !(_curammo in _NoGoAmmoCName) then{ _ammoname = getText (configFile >> "Cfgmagazines" >> _curammo >> "displayName"); _ammoreturn pushBack [_curammo, _ammoname]; }; }forEach _allammo; _ammoreturn }; while {true} do { private ["_vehicle","_inVehicle"]; _vehicle = vehicle player; _inVehicle = _vehicle != player; if (local _vehicle && _inVehicle) then { private ["_pos","_servicePoints","_inRange"]; _pos = getPosATL _vehicle; _servicePoints = (nearestObjects [_pos, _servicePointClasses, _maxDistance]) - [_vehicle]; _inRange = count _servicePoints > 0; if (_inRange && (speed (_vehicle) < 1) && (speed (_vehicle) > -1)) then { private ["_servicePoint","_role","_actionCondition","_costs","_actionTitle"]; _servicePoint = _servicePoints select 0; _role = assignedVehicleRole player; if (((str _role) != (str _lastRole)) || (_vehicle != _lastVehicle)) then { // vehicle or seat changed call _fnc_removeActions; }; _lastVehicle = _vehicle; _lastRole = _role; _actionCondition = "vehicle _this == _target && local _target"; if (SP_repair_action < 0 && _repair_enable) then { _costs = [_vehicle, _repair_costs] call _fnc_getCosts; _actionTitle = [format["Repair %1",getText (configFile >> "Cfgvehicles" >> typeOf _vehicle >> "displayName")], _costs] call _fnc_actionTitle; SP_repair_action = _vehicle addAction [format["<img size='1.5'image='\a3\Ui_f\data\IGUI\Cfg\Cursors\iconrepairvehicle_ca.paa'/> %1",_actionTitle], _folder + "service_point_repair.sqf", [_servicePoint, _costs, _repair_repairTime], -1, false, true, "", _actionCondition]; }; if ((count SP_rearm_actions == 0) && _rearm_enable) then { private ["_weapons"]; _costs = [_vehicle, _rearm_costs] call _fnc_getCosts; _weapons = [_vehicle, _role] call _fnc_getWeapons; { private "_weaponName"; _curweapon = _x select 0; _weaponName = _x select 1; _curturret = _x select 2; if(_debugWeapon)then{_msg = format["WEAPONS DEBUG: %1",_x];diag_log _msg;systemChat _msg;}; _ammo = [_vehicle,_curweapon] call _fnc_getAmmo; { _ammoclass = _x select 0; _ammoname = _x select 1; _actionTitle = [format["Rearm %1 %2 with %3", _weaponName,_curturret,_ammoname], _costs] call _fnc_actionTitle; SP_rearm_action = _vehicle addAction [format["<img size='1.5'image='\a3\Ui_f\data\IGUI\Cfg\WeaponIcons\mg_ca.paa'/> %1",_actionTitle], _folder + "service_point_rearm.sqf", [_servicePoint, _costs, [_weaponName,_ammoclass,_ammoname,_GlobalMagazineMAX,_deny_already_armed_with,_curturret]], -1, false, true, "", _actionCondition]; SP_rearm_actions set [count SP_rearm_actions, SP_rearm_action]; }forEach _ammo; } forEach _weapons; }; if (!_messageShown && _message != "") then { _messageShown = true; _vehicle vehicleChat _message; }; } else { call _fnc_removeActions; _messageShown = false; }; } else { call _fnc_removeActions; _messageShown = false; }; sleep 2; }; Is it possible with this script just to have like 2 options in scroll menu? One for repair and one for rearming the whole vehicle? ReArm script problem Edited January 16, 2017 by FlipM0d3 Share this post Link to post Share on other sites
GZRep 21 Report post Posted January 22, 2017 On 16.01.2017 at 9:00 AM, FlipM0d3 said: @Bones51 Hi , You guys did a nice job with the script it’s nice and small. I did the instruction but also have some trouble with the script. The repair function seems to work, only on a restart the repair is undone? Also with rearming I get the options but it doesn’t rearm. I have been on this now for about 6 hours and i can’t seem to make it work. Any help is appreciated. Init.sql Reveal hidden contents [] execVM "custom\ReArm\takegive_poptab_init.sqf"; if(hasInterface) then { [] execVM "custom\ReArm\service_point.sqf"; }; service_point.sqf Reveal hidden contents // Vehicle Service Point by Axe Cop +fix to rearm all weapons from driver+only delete ammo in rearmed weapon only (not entire turret) by HALV //reworked for a3 epoch by Halv //reworked for a3 exile by Dodo private ["_curturret","_folder","_servicePointClasses","_maxDistance","_costsFree","_message","_messageShown","_repair_enable","_repair_costs","_repair_repairTime","_rearm_enable","_rearm_costs","_lastVehicle","_lastRole","_fnc_removeActions","_fnc_getCosts","_fnc_actionTitle","_fnc_getWeapons"]; //====================== general settings _folder = "custom\ReArm\"; _servicePointClasses = ["Land_HelipadSquare_F"]; _maxDistance = 50; _costsFree = "free"; _message = "-- Vehicle Service Point --"; _actionColour = "#0096ff"; //====================== repair settings _repair_enable = true; _repair_repairTime = 2; _repair_costs = [ ["Air",100], ["AllVehicles",100] ]; //====================== rearm settings _rearm_enable = true; // enable or disable the rearm option //deny re-arm if more than this amount of current weapons magazines already in the vehicle _deny_already_armed_with = 4; //deny re-arm if more than this amount of magazines already in the vehicle _GlobalMagazineMAX = 4; //weapon classes disabled from re-arming _NoGoWeapCName = [ "Horn","SmokeLauncher","MiniCarHorn","SportCarHorn","TruckHorn2","TruckHorn","BikeHorn","CarHorn","TruckHorn3" ]; //magazine classnames not allowed to be rearmed _NoGoAmmoCName = [ ]; //cost per magazine for individual vehicles _rearm_costs = [ ["CUP_B_AH6J_MP_USA",100], ["O_T_MBT_02_cannon_ghex_F",100] //["AllVehicles",100], //["Air",100] ]; //debug weapons to see classnames in chat/rpt _debugWeapon = false; //=================================== CONFIG END _lastVehicle = objNull; _lastRole = []; SP_repair_action = -1; SP_rearm_actions = []; _messageShown = true; _fnc_removeActions = { if (isNull _lastVehicle) exitWith {}; _lastVehicle removeAction SP_repair_action; SP_repair_action = -1; { _lastVehicle removeAction _x; } forEach SP_rearm_actions; SP_rearm_actions = []; _lastVehicle = objNull; _lastRole = []; }; _fnc_getCosts = { private ["_vehicle","_costs","_cost"]; _vehicle = _this select 0; _costs = _this select 1; _cost = []; { private "_typeName"; _typeName = _x select 0; if (_vehicle isKindOf _typeName) exitWith { _cost = _x select 1; }; } forEach _costs; _cost }; _fnc_actionTitle = { private ["_actionName","_costs","_costsText","_actionTitle"]; _actionName = _this select 0; _costs = _this select 1; _costsText = _costsFree; if (_costs > 0) then { private ["_itemName","_displayName"]; _costsText = format ["%1 Pop tabs",_costs]; }; _actionTitle = format ["<t color='%3'>%1 (%2)</t>", _actionName, _costsText,_actionColour]; _actionTitle }; _fnc_getWeapons = { private ["_vehicle","_role","_weapons"]; _vehicle = _this select 0; //turrets positions to search for weapons _turrets = [[-1],[0],[1],[2],[0,0],[1,0],[2,0],[0,1],[0,2]]; _weapons = []; { _turret = _x; _weaponsTurret = _vehicle weaponsTurret _turret; { _weapon = _x; if !(_weapon in _NoGoWeapCName) then{ _weaponName = getText (configFile >> "CfgWeapons" >> _weapon >> "displayName"); _weapons pushBack [_weapon, _weaponName, _turret]; }; }forEach _weaponsTurret; }forEach _turrets; _weapons }; _fnc_getAmmo = { private ["_vehicle","_role","_weapons"]; _vehicle = _this select 0; _weapon = _this select 1; _allammo = getArray (configFile >> "CfgWeapons" >> _weapon >> "magazines"); _ammoreturn = []; { _curammo = _x; if !(_curammo in _NoGoAmmoCName) then{ _ammoname = getText (configFile >> "Cfgmagazines" >> _curammo >> "displayName"); _ammoreturn pushBack [_curammo, _ammoname]; }; }forEach _allammo; _ammoreturn }; while {true} do { private ["_vehicle","_inVehicle"]; _vehicle = vehicle player; _inVehicle = _vehicle != player; if (local _vehicle && _inVehicle) then { private ["_pos","_servicePoints","_inRange"]; _pos = getPosATL _vehicle; _servicePoints = (nearestObjects [_pos, _servicePointClasses, _maxDistance]) - [_vehicle]; _inRange = count _servicePoints > 0; if (_inRange && (speed (_vehicle) < 1) && (speed (_vehicle) > -1)) then { private ["_servicePoint","_role","_actionCondition","_costs","_actionTitle"]; _servicePoint = _servicePoints select 0; _role = assignedVehicleRole player; if (((str _role) != (str _lastRole)) || (_vehicle != _lastVehicle)) then { // vehicle or seat changed call _fnc_removeActions; }; _lastVehicle = _vehicle; _lastRole = _role; _actionCondition = "vehicle _this == _target && local _target"; if (SP_repair_action < 0 && _repair_enable) then { _costs = [_vehicle, _repair_costs] call _fnc_getCosts; _actionTitle = [format["Repair %1",getText (configFile >> "Cfgvehicles" >> typeOf _vehicle >> "displayName")], _costs] call _fnc_actionTitle; SP_repair_action = _vehicle addAction [format["<img size='1.5'image='\a3\Ui_f\data\IGUI\Cfg\Cursors\iconrepairvehicle_ca.paa'/> %1",_actionTitle], _folder + "service_point_repair.sqf", [_servicePoint, _costs, _repair_repairTime], -1, false, true, "", _actionCondition]; }; if ((count SP_rearm_actions == 0) && _rearm_enable) then { private ["_weapons"]; _costs = [_vehicle, _rearm_costs] call _fnc_getCosts; _weapons = [_vehicle, _role] call _fnc_getWeapons; { private "_weaponName"; _curweapon = _x select 0; _weaponName = _x select 1; _curturret = _x select 2; if(_debugWeapon)then{_msg = format["WEAPONS DEBUG: %1",_x];diag_log _msg;systemChat _msg;}; _ammo = [_vehicle,_curweapon] call _fnc_getAmmo; { _ammoclass = _x select 0; _ammoname = _x select 1; _actionTitle = [format["Rearm %1 %2 with %3", _weaponName,_curturret,_ammoname], _costs] call _fnc_actionTitle; SP_rearm_action = _vehicle addAction [format["<img size='1.5'image='\a3\Ui_f\data\IGUI\Cfg\WeaponIcons\mg_ca.paa'/> %1",_actionTitle], _folder + "service_point_rearm.sqf", [_servicePoint, _costs, [_weaponName,_ammoclass,_ammoname,_GlobalMagazineMAX,_deny_already_armed_with,_curturret]], -1, false, true, "", _actionCondition]; SP_rearm_actions set [count SP_rearm_actions, SP_rearm_action]; }forEach _ammo; } forEach _weapons; }; if (!_messageShown && _message != "") then { _messageShown = true; _vehicle vehicleChat _message; }; } else { call _fnc_removeActions; _messageShown = false; }; } else { call _fnc_removeActions; _messageShown = false; }; sleep 2; }; Is it possible with this script just to have like 2 options in scroll menu? One for repair and one for rearming the whole vehicle? ReArm script problem Would also like to se the posibillity to add just one scroll option to rearm all, and to be able to se the total poptab amount for rearming within this awesome script. Or even to be able to configure what ammo should be avaliable Share this post Link to post Share on other sites
SE7EN 4 Report post Posted February 28, 2017 Chernarus gasstations class names "Land_A_FuelStation_Shed","Land_Tovarna2" Share this post Link to post Share on other sites
kuplion 1759 Report post Posted March 2, 2017 Brilliant script, thank you for the update/release. 1 Share this post Link to post Share on other sites
BaroN 248 Report post Posted March 2, 2017 Quick question before I give this a try this evening, does it fix the problem the old version has where you can't rearm heli flares? Thanks Share this post Link to post Share on other sites