diff --git a/@ExileServer/addons/exad_core/Functions/Debug/fn_log.sqf b/@ExileServer/addons/exad_core/Functions/Debug/fn_log.sqf new file mode 100644 index 0000000..f757345 --- /dev/null +++ b/@ExileServer/addons/exad_core/Functions/Debug/fn_log.sqf @@ -0,0 +1,23 @@ +/* + fn_log.sqf + + Copyright 2016 Jan Babor + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +params ["_file","_msg"]; + +if(ExAd_Logging)then{ + "Arma_Log" callExtension format['%1\%2:%3',ExAd_Log_Folder,_file,_msg]; +} \ No newline at end of file diff --git a/@ExileServer/addons/exad_core/Functions/Utils/fn_territoryPlayerPresent.sqf b/@ExileServer/addons/exad_core/Functions/Utils/fn_territoryPlayerPresent.sqf new file mode 100644 index 0000000..64ed671 --- /dev/null +++ b/@ExileServer/addons/exad_core/Functions/Utils/fn_territoryPlayerPresent.sqf @@ -0,0 +1 @@ +/* fn_territoryPlayerPresent.sqf Copyright 2016 Jan Babor Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ params ["_flag","_res"]; _res = false; { if( (([_flag, getPlayerUID _x ] call ExileClient_util_territory_getAccessLevel) select 0) > 0 ) exitWith { _res = true } }forEach playableUnits; _res \ No newline at end of file diff --git a/@ExileServer/addons/exad_core/config.cpp b/@ExileServer/addons/exad_core/config.cpp index 79f7c41..0d90f39 100644 --- a/@ExileServer/addons/exad_core/config.cpp +++ b/@ExileServer/addons/exad_core/config.cpp @@ -25,6 +25,10 @@ class CfgPatches { class CfgFunctions { class ExAdServer { + class Debug { + file = "exad_core\Functions\Debug"; + class log {}; + }; class System { file = "exad_core\Functions\System"; class clientDispatch {}; @@ -36,6 +40,7 @@ class CfgFunctions { class createCrate {}; class createMarker {}; class putInContainer {}; + class territoryPlayerPresent {}; }; }; }; diff --git a/@ExileServer/addons/exad_grinding/Functions/fn_grindProgress.sqf b/@ExileServer/addons/exad_grinding/Functions/fn_grindProgress.sqf index 101cf6c..4e1c75d 100644 --- a/@ExileServer/addons/exad_grinding/Functions/fn_grindProgress.sqf +++ b/@ExileServer/addons/exad_grinding/Functions/fn_grindProgress.sqf @@ -28,8 +28,12 @@ if((_object getVariable ["ExAd_Grinding_progress", 0]) >= ExAd_GRINDING_OBJECT_M _databaseID = _object getVariable ["ExileDatabaseID",0]; format ["addDoorLock:%1:%2","000000",_databaseID] call ExileServer_system_database_query_fireAndForget; + + ["Grinding", format["Grind successful: Territory ID - %1|Object ID - %2", _object setVariable ["ExileTerritoryID", -1], _object getVariable ["ExileDatabaseID",0]]] call ExAdServer_fnc_log; }; + + _object setVariable ["ExAd_Grinding_progress", (_object getVariable ["ExAd_Grinding_progress", 0]) + ExAd_GRINDING_PROGRESS, true]; true \ No newline at end of file diff --git a/@ExileServer/addons/exad_grinding/Functions/fn_restoreLock.sqf b/@ExileServer/addons/exad_grinding/Functions/fn_restoreLock.sqf index d1a72c3..b465969 100644 --- a/@ExileServer/addons/exad_grinding/Functions/fn_restoreLock.sqf +++ b/@ExileServer/addons/exad_grinding/Functions/fn_restoreLock.sqf @@ -24,4 +24,6 @@ if(isNull _object)exitWith{false}; _object setVariable ["ExAd_Grinding_progress", 0, true]; +["Grinding", format["Lock restored: Territory ID - %1|Object ID - %2", _object setVariable ["ExileTerritoryID", -1], _object getVariable ["ExileDatabaseID",0]]] call ExAdServer_fnc_log; + true \ No newline at end of file diff --git a/@ExileServer/addons/exad_hacking/Functions/fn_startHack.sqf b/@ExileServer/addons/exad_hacking/Functions/fn_startHack.sqf index 05dc04a..2323d1e 100644 --- a/@ExileServer/addons/exad_hacking/Functions/fn_startHack.sqf +++ b/@ExileServer/addons/exad_hacking/Functions/fn_startHack.sqf @@ -22,7 +22,13 @@ _player = objectFromNetId ([_this, 1, "",[""]] call BIS_fnc_param); if(isNull _object || isNull _player)exitWith{false}; -if(((((getPos _object) nearObjects ["Exile_Construction_Flag_Static", 150]) select 0) getVariable ["ExAd_HACKS_SUCCEEDED",0]) >= ExAd_HACKING_TERRITORY_MAX)exitWith{ +_flag = ((getPos _object) nearObjects ["Exile_Construction_Flag_Static", 150]) select 0; + +if(ExAd_HACKING_PLAYER_ONLINE && !([_flag] call ExAdServer_fnc_territoryPlayerPresent))exitWith{ + [STR_ExAd_HACKING_NOTI_NO_PLAYER_PRESENT ,0,0.6,2,0] remoteExec ["BIS_fnc_dynamicText",owner _player]; +}; + +if(_flag getVariable ["ExAd_HACKS_SUCCEEDED",0] >= ExAd_HACKING_TERRITORY_MAX)exitWith{ [STR_ExAd_HACKING_NOTI_MAX_TERRITORY_HACKS_REACHED ,0,0.6,2,0] remoteExec ["BIS_fnc_dynamicText",owner _player]; }; @@ -36,6 +42,8 @@ if(isNil "ExAd_HACKS_IN_PROGRESS")then{ ExAd_HACKS_IN_PROGRESS = 0; }; +["Hacking", format["Hack started: Player - %1(%2)|Territory - %3|Hacks in motion - %4",name _player, getPlayerUID _player, _flag getVariable ["ExileTerritoryName", "Unknown"], ExAd_HACKS_IN_PROGRESS]] call ExAdServer_fnc_log; + _pos = _player modelToWorld [0, +0.5, 0]; _pos set [2,((getPosATL _player) select 2)]; @@ -47,8 +55,8 @@ _laptop animate ["LaptopLidRotation", 1]; _player removeItem "Exile_Item_Laptop"; -[_object, _player, _laptop] spawn { - params ["_object","_player","_laptop","_markers","_marker","_success","_ticks","_newSize","_destroy","_msg"]; +[_object, _player, _laptop, _flag] spawn { + params ["_object","_player","_laptop","_flag","_markers","_marker","_success","_ticks","_newSize","_destroy","_msg"]; UISleep 2; (parseText (format["%4
%8", ExAd_Hint_Title_Color, ExAd_Hint_Title_Size, ExAd_Hint_Title_Font,STR_ExAd_HACKING_HINT_TITLE, ExAd_Hint_Msg_Color, ExAd_Hint_Msg_Size, ExAd_Hint_Msg_Font, STR_ExAd_HACKING_HINT_HACK_START])) remoteExec ["hint", -2]; @@ -86,7 +94,6 @@ _player removeItem "Exile_Item_Laptop"; _destroy = false; _msg = if(_success && ((random 1) > ExAd_HACKING_FAILED_HACK))then{ - _flag = ((getPos _object) nearObjects ["Exile_Construction_Flag_Static", 150]) select 0; _flag setVariable ["ExAd_HACKS_SUCCEEDED", (_flag getVariable ["ExAd_HACKS_SUCCEEDED",0]) + 1]; if(_object isKindOf "Exile_Construction_Flag_Static")then{ if(!isClass(configFile >> "CfgPatches" >> "ExAd_VG"))then{ @@ -113,20 +120,28 @@ _player removeItem "Exile_Item_Laptop"; _vehObj setPosATL _pos; _vehObj lock 0; - format[STR_ExAd_HACKING_NOTI_VG_SUCCESS, (getText(ConfigFile >> "CfgVehicles" >> typeOf _vehObj >> "displayName"))] + _displayName = getText(ConfigFile >> "CfgVehicles" >> typeOf _vehObj >> "displayName"); + ["Hacking", format["Hack Successful: Territory - %1| Virtual Garage - %2(%3)",_flag getVariable ["ExileTerritoryName", "Unknown"], _displayName, _objId]] call ExAdServer_fnc_log; + + format[STR_ExAd_HACKING_NOTI_VG_SUCCESS, _displayName] }else{ + ["Hacking", format["Hack Successful: Territory - %1| Virtual Garage - No Vehicle",_flag getVariable ["ExileTerritoryName", "Unknown"]]] call ExAdServer_fnc_log; STR_ExAd_HACKING_NOTI_VG_NO_VEH } } }else{ + ["Hacking", format["Hack Successful: Territory - %1| Safe(%2) opened",_flag getVariable ["ExileTerritoryName", "Unknown"], _object getVariable ["ExileDatabaseID", -1]]] call ExAdServer_fnc_log; + _object setVariable ["ExileIsLocked",0,true]; STR_ExAd_HACKING_NOTI_SAFE_SUCCESS } }else{ if(_laptop getVariable ["ExAd_HACK_INTERUPTED",false])then{ + ["Hacking", format["Hack Interupted: Territory - %1",_flag getVariable ["ExileTerritoryName", "Unknown"]]] call ExAdServer_fnc_log; STR_ExAd_HACKING_NOTI_INTERUPTED }else{ _destroy = true; + ["Hacking", format["Hack Failed: Territory - %1",_flag getVariable ["ExileTerritoryName", "Unknown"]]] call ExAdServer_fnc_log; STR_ExAd_HACKING_NOTI_FAILED } }; diff --git a/@ExileServer/addons/exad_vg/Functions/fn_VGLoad.sqf b/@ExileServer/addons/exad_vg/Functions/fn_VGLoad.sqf index f052709..7794999 100644 --- a/@ExileServer/addons/exad_vg/Functions/fn_VGLoad.sqf +++ b/@ExileServer/addons/exad_vg/Functions/fn_VGLoad.sqf @@ -1,4 +1,6 @@ /* + fn_VGLoad.sqf + Copyright 2016 Jan Babor Licensed under the Apache License, Version 2.0 (the "License"); @@ -12,7 +14,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - */ private ["_objVehNetId","_objVeh","_flagNetId","_flag","_objVehId","_flagId","_data","_extDB2Message","_vehList"]; @@ -21,7 +22,8 @@ _objId = [_this,0,"",[""]] call BIS_fnc_param; _flagNetId = [_this,1,"",[""]] call BIS_fnc_param; _playerNetId = [_this,2,"",[""]] call BIS_fnc_param; _flag = objectFromNetId _flagNetId; -_requestFrom = owner (objectFromNetId _playerNetId); +_player = objectFromNetId _playerNetId; +_requestFrom = owner _player; _proceed = false; _vehList = _flag getVariable ["ExAdVGVeh", []]; @@ -33,7 +35,7 @@ _vehList = _flag getVariable ["ExAdVGVeh", []]; } }forEach _vehList; -if(!_proceed)exitWith{[_requestFrom, "notificationRequest", ["Whoops", ["They vehicle is not available anymore"]]] call ExileServer_system_network_send_to}; +if(!_proceed)exitWith{[_requestFrom, "notificationRequest", ["Whoops", [STR_ExAd_VG_NOTI_NOT_AVAILABLE]]] call ExileServer_system_network_send_to}; _flag setVariable ["ExAdVGVeh", _vehList, true]; @@ -49,4 +51,6 @@ _pos = getPosATL _vehObj; _pos set [2, (_pos select 2) + 0.1]; _vehObj setPosATL _pos; +["VirtualGarage", format["Spawned: Player - %1(%2)|Vehicle - %3(%4)|",name _player, getPlayerUID _player, typeOf _vehObj, _objId]] call ExAdServer_fnc_log; + true \ No newline at end of file diff --git a/@ExileServer/addons/exad_vg/Functions/fn_VGStore.sqf b/@ExileServer/addons/exad_vg/Functions/fn_VGStore.sqf index 8aa90a9..8b73cf8 100644 --- a/@ExileServer/addons/exad_vg/Functions/fn_VGStore.sqf +++ b/@ExileServer/addons/exad_vg/Functions/fn_VGStore.sqf @@ -22,8 +22,9 @@ _objVeh = objectFromNetId _objVehNetId; _flagNetId = [_this,1,"",[""]] call BIS_fnc_param; _flag = objectFromNetId _flagNetId; _owner = owner _objVeh; +_player = {if(owner _x == _owner)exitWith{_x}}forEach playableUnits; -if!(_objVeh getVariable ["ExileIsPersistent", false])exitWith{[_requestFrom, "notificationRequest", ["Whoops", [STR_ExAd_VIRTUALGARAGE_NOTI_NOT_PERSISTENT]]] call ExileServer_system_network_send_to; false}; +if!(_objVeh getVariable ["ExileIsPersistent", false])exitWith{[_owner, "notificationRequest", ["Whoops", [STR_ExAd_VG_NOTI_NOT_PERSISTENT]]] call ExileServer_system_network_send_to; false}; if!(_objVeh setOwner 2)exitWith{format["Get out of the vehicle before storing it."] remoteExec ["hint", _owner]; false}; @@ -42,6 +43,8 @@ _objVehId = _objVeh getVariable ["ExileDatabaseID",-1]; _flagId = _flag getVariable ["ExileDatabaseID", -1]; if(_objVehId > -1 && _flagId > -1)then{ + ["VirtualGarage", format["Store: Player - %1(%2)|Vehicle - %3(%4)|Reset gear - %5",name _player, getPlayerUID _player, typeOf _objVeh, _objVehId, str ExAd_VG_CLEAN_ON_STORE]] call ExAdServer_fnc_log; + _data = [_flagId, _objVehId]; _extDB2Message = ["loadVehToVG", _data] call ExileServer_util_extDB2_createMessage; diff --git a/@ExileServer/addons/exad_vg/Functions/fn_requestVGDetailInfo.sqf b/@ExileServer/addons/exad_vg/Functions/fn_requestVGDetailInfo.sqf index 9013e33..406ebe0 100644 --- a/@ExileServer/addons/exad_vg/Functions/fn_requestVGDetailInfo.sqf +++ b/@ExileServer/addons/exad_vg/Functions/fn_requestVGDetailInfo.sqf @@ -26,15 +26,21 @@ _ctrl = [_this,4,-1,[0]] call BIS_fnc_param; _flag = objectFromNetId _flagNetId; _requestFrom = owner (objectFromNetId _playerNetId); -/*Check if vehicle is in flag - avoid cheaters fishing for pin codes*/ - _data = format ["loadVehicle:%1", _objId] call ExileServer_system_database_query_selectSingle; -_displayName = getText(ConfigFile >> "CfgVehicles" >> (_data select 1) >> "displayName"); -_pinCode = if(_streamFriendlyUI == 0)then{_data select 20}else{"XXXX"}; +if(count _data > 0)then{ + _displayName = getText(ConfigFile >> "CfgVehicles" >> (_data select 1) >> "displayName"); + _pinCode = if(_streamFriendlyUI == 0)then{_data select 20}else{"XXXX"}; + _fuel = _data select 5; + _damage = _data select 6; + _texture = _data select 21; + _items = _data select 17; + _magazines = _data select 18; + _weapons = _data select 19; -_text = format["%1
Pin code: %2
",_displayName, _pinCode]; + _text = format[STR_ExAd_VG_APP_DETAILS, "
", _displayName, _pinCode, _fuel, _damage, _texture, _items, _magazines, _weapons]; -[_text,_ctrl] remoteExec ["ExAd_fnc_loadVGDetailView", _requestFrom]; + [_text,_ctrl] remoteExec ["ExAd_fnc_loadVGDetailView", _requestFrom]; +}; true \ No newline at end of file diff --git a/BattlEye/scripts.txt b/BattlEye/scripts.txt index 7208b43..292439c 100644 --- a/BattlEye/scripts.txt +++ b/BattlEye/scripts.txt @@ -1,5 +1,5 @@ eventHandler !="ExAd_ACTION_PARACHUTE_DETACH = (findDisplay 46) displayAddEventHandler ["KeyDown",{" -compile !="call compile format[\"_messageParameters call ExAd_fnc_%1;\",_messageName]" +compile !="call compile format[\"_messageParameters call ExAd_fnc_%1;\",_messageName]" !="call compile format['%1 = if(isLocalized \"%1\")then{localize \"%1\"}else{\"%3" createVehicle !="_parachuteObject = createVehicle [\"Steerable_Parachute_F\", getPosATL player, [], 0, \"CAN_COLLIDE\"]" addAction !="ExAd_ACTION_PARACHUTE = player addaction [format" drawLine3D !="drawLine3D [cursorTarget modelToWorld [" diff --git a/CHANGELOG.md b/CHANGELOG.md index 06fc04c..c8f1394 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,19 @@ #ExAd - # Changelog: +## 160610 01:20 . v0.7.6 +###Fixed +* Quick-fix - VG App scroll for stored list(Virtual Garage) +* The configuration file could be reed after the postInit script (All) - IMPORTANT TO UPDATE ALL PLUGINS. + +###Added +* Extra loggin functionality (All) +* Progress bar height customizable (Grinding) +* Added a lot of new custom UI Display texts - Check stringtabl.xml for new ones. (All) +* Added vehicle details to VirtualGarage DetailsView (Virtual Garage) +* Added function ExAd_fnc_territoryPlayerPresent, to see if a player with permissions for a specific flag is online (Core) +* Added a feature so the server owner can decide if hacking should require a player with premissions to be online.(Hacking) + ## 160510 21:00 . v0.7.5 ###Fixed * Syntax error in postInit.sqf (HaloParachute) diff --git a/docs/Grinding/changelog.md b/docs/Grinding/changelog.md index a9c1f81..f1a5aa5 100644 --- a/docs/Grinding/changelog.md +++ b/docs/Grinding/changelog.md @@ -1,15 +1,24 @@ -#VirtualGarage +#Grinding ## Changelog: -### 160510 16:00 . v0.7.3 +### v0.7.6 +####Fixed +* The configuration file could be reed after the postInit script - IMPORTANT TO UPDATE ALL PLUGINS. + +###Added +* Extra loggin functionality +* Added a lot of new custom UI Display texts - Check stringtabl.xml for new ones. +* Progress bar height customizable + +### v0.7.3 #### Fixed * Declaration of un custamized variables -### 160505 01:40 . v0.6.1 +### v0.6.1 #### Fixed * Sound error for grinding, tmp fix, sound will work on Chernarus -### 160502 23:15 . v0.6.0 +### v0.6.0 #### Added * Grinding introduced * Grinding battleye scripts diff --git a/docs/Grinding/update.md b/docs/Grinding/update.md index cff423e..8f32cb4 100644 --- a/docs/Grinding/update.md +++ b/docs/Grinding/update.md @@ -1,13 +1,17 @@ -#VirtualGarage +#Grinding ## Instructions: + +### v0.7.6 +* Replace or merge "mpmissions\Exile.\ExAdClient\Grinding\customize.sqf" +* Replace or merge "mpmissions\Exile.\stringtable.xml" +* Replace "mpmissions\Exile.\ExAdClient\Grinding" - Big update +* Replace and pack "@ExileServer\addons\exad_grinding" -### 160507 16:00 . v0.7.3 -#### Update +### v0.7.3 * Replace "mpmissions\Exile.\ExAdClient\Grinding\postInit.sqf" -### 160505 01:40 . v0.6.1 -#### Update +### v0.6.1 * Replace "ExAdClient\Grinding\Functions" -### 160502 23:15 . v0.6.0 -#### Full installation +### v0.6.0 +* Full installation diff --git a/docs/Hacking/changelog.md b/docs/Hacking/changelog.md index 403582c..25de682 100644 --- a/docs/Hacking/changelog.md +++ b/docs/Hacking/changelog.md @@ -1,15 +1,24 @@ #Hacking ## Changelog: -### 160510 16:00 . v0.7.3 +### v0.7.6 +####Fixed +* The configuration file could be reed after the postInit script - IMPORTANT TO UPDATE ALL PLUGINS. + +###Added +* Extra loggin functionality +* Added a lot of new custom UI Display texts - Check stringtabl.xml for new ones. +* Added a feature so the server owner can decide if hacking should require a player with premissions to be online. + +### v0.7.3 #### Fixed * Cleaned the server code * Declaration of un custamized variables -### 160507 09:00 . v0.7.1 +### v0.7.1 #### Fixed * Removed dependency for VirtualGarage -### 160506 01:00 . v0.7.0 +### v0.7.0 #### Added * Introduced **Hacking** to the ExAd package diff --git a/docs/Hacking/update.md b/docs/Hacking/update.md index 169d085..2a5030d 100644 --- a/docs/Hacking/update.md +++ b/docs/Hacking/update.md @@ -1,14 +1,18 @@ #Hacking ## Instructions: + +### v0.7.6 +* Replace or merge "mpmissions\Exile.\ExAdClient\Hacking\customize.sqf" +* Replace or merge "mpmissions\Exile.\stringtable.xml" +* Replace "mpmissions\Exile.\ExAdClient\Hacking" - Big update +* Replace and pack "@ExileServer\addons\exad_hacking" -### 160507 16:00 . v0.7.3 -#### Update +### v0.7.3 * Replace and pack "@ExileServer\addons\exad_hacking" * Replace "mpmissions\Exile.\ExAdClient\Hacking\postInit.sqf" -### 160507 09:00 . v0.7.1 -#### Update +### v0.7.1 * Replace and pack "@ExileServer\addons\exad_hacking" -### 160506 01:00 . v0.7.0 -#### Full installation +### v0.7.0 +* Full installation diff --git a/docs/HaloParachute/changelog.md b/docs/HaloParachute/changelog.md index b9e6b03..62afb03 100644 --- a/docs/HaloParachute/changelog.md +++ b/docs/HaloParachute/changelog.md @@ -1,28 +1,36 @@ #HaloParachute ## Changelog: -## 160510 21:00 . v0.7.5 +### v0.7.6 +####Fixed +* The configuration file could be reed after the postInit script - IMPORTANT TO UPDATE ALL PLUGINS. + +###Added +* Extra loggin functionality +* Added a lot of new custom UI Display texts - Check stringtabl.xml for new ones. + +## v0.7.5 ###Fixed * Syntax error in postInit.sqf * Remove parachute backpack when parachute is pulled. * Removed one action when carrying parachute backpack * Added battleye exceptions -### 160510 18:00 . v0.7.4 +### v0.7.4 #### Added * Feature - Customization for using key bindings instead of displayed addActions #### Deleted * "mpmission\Exile.Altis\ExAdClient\HaloParachute\Functions\canDetachParachute.sqf -### 160510 16:00 . v0.7.3 +### v0.7.3 #### Fixed * Declaration of un custamized variables -### 160429 14:04 . v0.5.1 +### v0.5.1 #### Fixed * Added BattlEye exceptions -### 160425 12:00 . v0.5.0 +### v0.5.0 #### Added * Introduced **HaloParachute** to the ExAd package diff --git a/docs/HaloParachute/update.md b/docs/HaloParachute/update.md index 6d790e1..42c1434 100644 --- a/docs/HaloParachute/update.md +++ b/docs/HaloParachute/update.md @@ -1,8 +1,12 @@ #HaloParachute ## Instructions: -## 160510 21:00 . v0.7.5 -###Fixed +### v0.7.6 +* Replace or merge "mpmissions\Exile.\ExAdClient\HaloParachute\customize.sqf" +* Replace or merge "mpmissions\Exile.\stringtable.xml" +* Replace "mpmissions\Exile.\ExAdClient\HaloParachute" - Big update + +## v0.7.5 * replace "mpmissions\Exile.\ExAdClient\HaloParachute\postInit.sqf" * replace "mpmissions\Exile.\ExAdClient\HaloParachute\Functions" * Replace battleye exceptions - Entities @@ -10,20 +14,17 @@ !="waitUntil {sleep 0.1; ({player distance _x < (10 max (sizeOf typeOf _x))} count (player nearEntities [\"Air\", 20])) == 0};" ``` -### 160507 18:00 . v0.7.4 -#### Update +### v0.7.4 * Replace folder "mpmissions\Exile.\ExAdClient\HaloParachute\Functions" * Replace file "mpmissions\Exile.\ExAdClient\HaloParachute\CfgFunctions.cpp" * Replace file "mpmissions\Exile.\ExAdClient\HaloParachute\postInit.sqf" * Replace, or update manually, file "mpmissions\Exile.\ExAdClient\HaloParachute\customize.sqf" -### 160507 16:00 . v0.7.3 -#### Update +### v0.7.3 * Replace "mpmissions\Exile.\ExAdClient\HaloParachute\postInit.sqf" -### 160429 14:04 . v0.5.1 -#### Update +### v0.5.1 * Add battleye exceptions -### 160425 12:00 . v0.5.0 -#### Full installation \ No newline at end of file +### v0.5.0 +* Full installation \ No newline at end of file diff --git a/docs/README.md b/docs/README.md index 310a2c6..de1ee1e 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,14 +1,15 @@ #Documentation -Each subfolder withholds the choosen documentation including installation instruction and examples on useage. +Each subfolder withholds the subproject's documentation including installation instruction and examples of useage. To simplify the proccess for me, I've decided to simply devide everything and leave a changelog and update instructions in every subprojects documentation folder. This way you won't miss any information related to that subproject and it will be simple for me to keep the track off all changes with out skimming a general changelog. ## How to Update -Since this project consist of multiple sub projects I've had some issues deciding how to structure the project for a simple update process. +Since this project consist of multiple subprojects I've had some issues deciding how to structure the project for a simple update process. #### Problems remember which version you have? General update for all mods are to -* replace plugin specific server files +* Replace plugin specific server files * Copy and save plugin specific customization file -* replace plugin client folder, e.g. "mpmission\Exile.\ExAdClient\HaloParachute" -* Compare old with new customize.sqf file - add extras \ No newline at end of file +* Replace plugin client folder, e.g. "mpmission\Exile.\ExAdClient\HaloParachute" +* Compare old with new customize.sqf file - add extras +* Replace app specific files if there are any, e.g. for Virtual Garage \ No newline at end of file diff --git a/docs/VirtualGarage/changelog.md b/docs/VirtualGarage/changelog.md index 8491fd9..357cd3b 100644 --- a/docs/VirtualGarage/changelog.md +++ b/docs/VirtualGarage/changelog.md @@ -1,26 +1,38 @@ #VirtualGarage ## Changelog: -### 160510 16:00 . v0.7.3 +# Changelog: +## v0.7.6 +###Fixed +* Quick-fix - VG App scroll for stored list +* The configuration file could be reed after the postInit script - IMPORTANT TO UPDATE ALL PLUGINS. + +###Added +* Extra loggin functionality +* Added a lot of new custom UI Display texts - Check stringtabl.xml for new ones. +* Added a more detailed description of the vehicle for the App +* Added the possibility to decide of which vehicles type should be storable + +### v0.7.3 #### Fixed * Declaration of un custamized variables -### 160506 09:00 . v0.7.0 +### v0.7.0 #### Fixed * Small issue where VG didn't show an advancedHint when storing. #### Added * New stringtable values -### 160505 01:40 . v0.6.1 +### v0.6.1 #### Fixed * Display null when entering Virtual Garage from Flag -### 160429 14:04 . v0.5.1 +### v0.5.1 #### Fixed * BattlEye filters been updated * VG App return to sideApp on unLoad * VG App clear lists before onLoad and content being loaded. -### 160428 12:00 . v0.5.0 +### v0.5.0 #### Added * Introduced **VirtualGarage** to the ExAd package diff --git a/docs/VirtualGarage/update.md b/docs/VirtualGarage/update.md index fa7a783..46d07fd 100644 --- a/docs/VirtualGarage/update.md +++ b/docs/VirtualGarage/update.md @@ -1,18 +1,22 @@ #VirtualGarage ## Instructions: -### 160507 16:00 . v0.7.3 -#### Update +### v0.7.6 +* Replace or merge "mpmissions\Exile.\ExAdClient\VG\customize.sqf" +* Replace or merge "mpmissions\Exile.\stringtable.xml" +* Replace "mpmissions\Exile.\ExAdClient\VG" - Big update +* Replace "mpmissions\Exile.\XM8_apps\apps\XM8_VG" +* Replace and pack "@ExileServer\addons\exad_vg" + +### v0.7.3 * Replace "mpmissions\Exile.\ExAdClient\VirtualGarage\postInit.sqf" -### 160506 09:00 . v0.7.0 -#### Update +### v0.7.0 * Copy over the new VirtualGarage Package in "stringtable.xml" * Replace and pack "@ExileServer\addons\exad_vg" -### 160505 01:40 . v0.6.1 -#### Update +### v0.6.1 * Modify config.cpp ("CfgInteractionMenus" >> "Flag") ```cpp class VG : ExileAbstractAction @@ -24,12 +28,11 @@ class VG : ExileAbstractAction ``` -### 160429 14:04 . v0.5.1 -#### Update +### v0.5.1 * Add battleye exceptions * Replace "ExAdClient\VirtualGarage\Functions" * Replace "ExAdClient\VirtualGarage\CfgHints.cpp" * Replace "XM8_apps\apps\XM8_VG" ### 160428 12:00 . v0.5.0 -#### Full installation +* Full installation diff --git a/docs/core/changelog.md b/docs/core/changelog.md index debb2cf..ca3d4da 100644 --- a/docs/core/changelog.md +++ b/docs/core/changelog.md @@ -1,29 +1,28 @@ #Core -## Changelog: +## Changelog: -### 160510 16:00 . v0.7.3 +### v0.7.6 +####Fixed +* The configuration file could be reed after the postInit script - IMPORTANT TO UPDATE ALL PLUGINS. + +####Added +* Extra loggin functionality +* Changeable variables for logging functionality +* Added function ExAd_fnc_territoryPlayerPresent, to see if a player with permissions for a specific flag is online + +### v0.7.3 #### Fixed * Declaration of un custamized variables -### 160506 09:00 . v0.7.0 -#### Fixed - +### v0.7.0 #### Added * New customizable values (Core) -#### Deleted - - -### 160430 09:20 . v0.5.2 +### v0.5.2 #### Fixed * Description.ext was wrongly configured -#### Added - -#### Deleted - - -### 160429 14:04 . v0.5.1 +### v0.5.1 #### Fixed * AdvHint trying to show EXO Logo @@ -33,12 +32,6 @@ #### Deleted * EXO Logo.png - -### 160425 12:00 . v0.5.0 - -#### Fixed - +### v0.5.0 #### Added -* Introduced **Core** to the ExAd package - -#### Deleted +* Introduced **Core** to the ExAd package \ No newline at end of file diff --git a/docs/core/update.md b/docs/core/update.md index 1c30f9d..6655433 100644 --- a/docs/core/update.md +++ b/docs/core/update.md @@ -1,24 +1,26 @@ #Core ## Instructions: + +### v0.7.6 +* Replace or merge "mpmissions\Exile.\ExAdClient\Core\customize.sqf" +* Replace or merge "mpmissions\Exile.\stringtable.xml" +* Replace "mpmissions\Exile.\ExAdClient\Core" - Big update +* Replace and pack "@ExileServer\addons\exad_core" -### 160507 16:00 . v0.7.3 -#### Update +### v0.7.3 * Replace "mpmissions\Exile.\ExAdClient\Core\postInit.sqf" -### 160430 09:20 . v0.7.0 -#### Update +### v0.7.0 * Replace "ExAdClient\Core\customize.sqf" -### 160430 09:20 . v0.5.1 -#### Update +### v0.5.1 * Description.ext was wrongly configured fixed ("CfgRemoteExec" >> "Functions") ```js class ExAdServer_fnc_clientRequest { allowedTargets=2; }; ``` -### 160429 14:04 . v0.5.1 -#### Update +### v0.5.1 * Add "ExAdClient\Core\Img" -### 160425 12:00 . v0.5.0 -#### Full installation \ No newline at end of file +### v0.5.0 +* Full installation \ No newline at end of file diff --git a/mpmissions/Exile.Altis/ExAdClient/Core/CfgFunctions.cpp b/mpmissions/Exile.Altis/ExAdClient/Core/CfgFunctions.cpp index e242c2f..3c8a9de 100644 --- a/mpmissions/Exile.Altis/ExAdClient/Core/CfgFunctions.cpp +++ b/mpmissions/Exile.Altis/ExAdClient/Core/CfgFunctions.cpp @@ -30,4 +30,5 @@ class Utilities class advancedHint {}; class call {}; class getNearByLocalVeh {}; + class localize {}; }; \ No newline at end of file diff --git a/mpmissions/Exile.Altis/ExAdClient/Core/Functions/System/fn_debugHandler.sqf b/mpmissions/Exile.Altis/ExAdClient/Core/Functions/System/fn_debugHandler.sqf index 566df80..b4657b2 100644 --- a/mpmissions/Exile.Altis/ExAdClient/Core/Functions/System/fn_debugHandler.sqf +++ b/mpmissions/Exile.Altis/ExAdClient/Core/Functions/System/fn_debugHandler.sqf @@ -15,8 +15,8 @@ See the License for the specific language governing permissions and limitations under the License. */ -params ["_fnc","_exception",["_server", false]]; +params ["_fnc","_exception"]; if(ExAd_Debug)then{ - diag_log format["ExAd%3 Debugger: Error in %1 - '%2'",_fnc, _exception, (if(_server)then{"Server"}else{""})] + diag_log format["ExAd%3 Debugger: Error in %1 - '%2'",_fnc, _exception, (if(isDedicated)then{"Server"}else{""})] } \ No newline at end of file diff --git a/mpmissions/Exile.Altis/ExAdClient/Core/Functions/Utils/fn_localize.sqf b/mpmissions/Exile.Altis/ExAdClient/Core/Functions/Utils/fn_localize.sqf new file mode 100644 index 0000000..538aedd --- /dev/null +++ b/mpmissions/Exile.Altis/ExAdClient/Core/Functions/Utils/fn_localize.sqf @@ -0,0 +1 @@ +/* fn_localize.sqf Copyright 2016 Jan Babor Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ params [ ["_key", "", [""]], ["_value","N/A",[""]] ]; if(count _key == 0)exitWith{["localize", "_key is undefined/empty"] call ExAd_fnc_DebugHandler}; call compile format['%1 = if(isLocalized "%1")then{localize "%1"}else{"%3"};', _key, _value]; true \ No newline at end of file diff --git a/mpmissions/Exile.Altis/ExAdClient/Core/customize.sqf b/mpmissions/Exile.Altis/ExAdClient/Core/customize.sqf index 361db56..6e0f6e0 100644 --- a/mpmissions/Exile.Altis/ExAdClient/Core/customize.sqf +++ b/mpmissions/Exile.Altis/ExAdClient/Core/customize.sqf @@ -16,7 +16,9 @@ limitations under the License. */ -ExAd_Debug = true; //BOOLEAN - If you want the ExAd code to generate debug logs. +ExAd_Debug = true; //BOOLEAN - If you want the ExAd code to generate debug logs +Exad_Logging = true; //BOOLEAN - If you want the ExAd code to generate extra logs. - Requires InfiStar installed +ExAd_Log_Folder = "ExAd_Logs"; //STRING - The folder ExAd writes logs to. You need to create the defined folder if it doesn't exist. If you don't create it - the DLL won't be able to write any Log files ExAd_Hint_Title_Color = "#E48A36"; //STRING - Hint message color ExAd_Hint_Title_Size = 1.5; //SCALAR - Hint title size diff --git a/mpmissions/Exile.Altis/ExAdClient/Core/postInit.sqf b/mpmissions/Exile.Altis/ExAdClient/Core/postInit.sqf index ffba2d2..9fb29ca 100644 --- a/mpmissions/Exile.Altis/ExAdClient/Core/postInit.sqf +++ b/mpmissions/Exile.Altis/ExAdClient/Core/postInit.sqf @@ -14,12 +14,20 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - */ -execVM "ExAdClient\Core\customize.sqf"; +_path = "ExAdClient\Core\customize.sqf"; +call compile preprocessFileLineNumbers _path; if(isNil "ExAd_Debug")then{ExAd_Debug = true;}; +if(isNil "ExAd_Logging")then{ExAd_Logging = true;}; +if(isDedicated)then{ + if(!isClass(ConfigFile >> "CfgPatches" >> "a3_infiSTAR_Exile"))then{ + ExAd_Logging = false; + ["Core/postInit","Server can't find InfiStar addon"] call ExAd_fnc_debugHandler + } +}; +if(isNil "ExAd_Log_Folder")then{ExAd_Log_Folder = "ExAd_Logs";}; if(isNil "ExAd_Hint_Title_Color")then{ExAd_Hint_Title_Color = "#E48A36";}; if(isNil "ExAd_Hint_Title_Size")then{ExAd_Hint_Title_Size = 1.5;}; diff --git a/mpmissions/Exile.Altis/ExAdClient/Grinding/Functions/fn_grindLock.sqf b/mpmissions/Exile.Altis/ExAdClient/Grinding/Functions/fn_grindLock.sqf index fdf0cff..26496e2 100644 --- a/mpmissions/Exile.Altis/ExAdClient/Grinding/Functions/fn_grindLock.sqf +++ b/mpmissions/Exile.Altis/ExAdClient/Grinding/Functions/fn_grindLock.sqf @@ -31,25 +31,27 @@ player playActionNow "medicStart"; ExAd_DRAW3D_HANDLER = addMissionEventHandler ["Draw3D", { private ["_object","_progress"]; + _height = ExAd_GRINDING_PROGRESSBAR_POS; + _object = if(isNil "ExAd_GRINDING_OBJECT")then{cursorTarget}else{ExAd_GRINDING_OBJECT}; _progress = 1 min ((_object getVariable ["ExAd_Grinding_progress", 1]) / ExAd_GRINDING_OBJECT_MAX); - drawLine3D [cursorTarget modelToWorld [-0.5, -0.15, 1], cursorTarget modelToWorld [0.5, -0.15, 1], [0,0,0,1]]; - drawLine3D [cursorTarget modelToWorld [-0.5, -0.15, 0.95], cursorTarget modelToWorld [0.5, -0.15, 0.95], [0,0,0,1]]; - drawLine3D [cursorTarget modelToWorld [-0.5, 0.15, 1], cursorTarget modelToWorld [0.5, 0.15, 1], [0,0,0,1]]; - drawLine3D [cursorTarget modelToWorld [-0.5, 0.15, 0.95], cursorTarget modelToWorld [0.5, 0.15, 0.95], [0,0,0,1]]; + drawLine3D [cursorTarget modelToWorld [-0.5, -0.15, _height], cursorTarget modelToWorld [0.5, -0.15, _height], [0,0,0,1]]; + drawLine3D [cursorTarget modelToWorld [-0.5, -0.15, _height - 0.05], cursorTarget modelToWorld [0.5, -0.15, _height - 0.05], [0,0,0,1]]; + drawLine3D [cursorTarget modelToWorld [-0.5, 0.15, _height], cursorTarget modelToWorld [0.5, 0.15, _height], [0,0,0,1]]; + drawLine3D [cursorTarget modelToWorld [-0.5, 0.15, _height - 0.05], cursorTarget modelToWorld [0.5, 0.15, _height - 0.05], [0,0,0,1]]; - drawLine3D [cursorTarget modelToWorld [-0.5, -0.15, 1], cursorTarget modelToWorld [-0.5, -0.15, 0.95], [0,0,0,1]]; - drawLine3D [cursorTarget modelToWorld [0.5, -0.15, 1], cursorTarget modelToWorld [0.5, -0.15, 0.95], [0,0,0,1]]; - drawLine3D [cursorTarget modelToWorld [-0.5, 0.15, 1], cursorTarget modelToWorld [-0.5, 0.15, 0.95], [0,0,0,1]]; - drawLine3D [cursorTarget modelToWorld [0.5, -0.15, 1], cursorTarget modelToWorld [0.5, -0.15, 0.95], [0,0,0,1]]; + drawLine3D [cursorTarget modelToWorld [-0.5, -0.15, _height], cursorTarget modelToWorld [-0.5, -0.15, _height - 0.05], [0,0,0,1]]; + drawLine3D [cursorTarget modelToWorld [0.5, -0.15, _height], cursorTarget modelToWorld [0.5, -0.15, _height - 0.05], [0,0,0,1]]; + drawLine3D [cursorTarget modelToWorld [-0.5, 0.15, _height], cursorTarget modelToWorld [-0.5, 0.15, _height - 0.05], [0,0,0,1]]; + drawLine3D [cursorTarget modelToWorld [0.5, -0.15, _height], cursorTarget modelToWorld [0.5, -0.15, _height - 0.05], [0,0,0,1]]; for "_i" from 1 to 49 do { - drawLine3D [cursorTarget modelToWorld [-0.5, -0.15, 1 - (0.001 * _i)], cursorTarget modelToWorld [((-0.5) + _progress), -0.15, 1 - (0.001 * _i)], [1,0.482,0,1]]; - drawLine3D [cursorTarget modelToWorld [0.5, 0.15, 1 - (0.001 * _i)], cursorTarget modelToWorld [((0.5) - _progress), 0.15, 1 - (0.001 * _i)], [1,0.482,0,1]]; + drawLine3D [cursorTarget modelToWorld [-0.5, -0.15, _height - (0.001 * _i)], cursorTarget modelToWorld [((-0.5) + _progress), -0.15, _height - (0.001 * _i)], [1,0.482,0,1]]; + drawLine3D [cursorTarget modelToWorld [0.5, 0.15, _height - (0.001 * _i)], cursorTarget modelToWorld [((0.5) - _progress), 0.15, _height - (0.001 * _i)], [1,0.482,0,1]]; - drawLine3D [cursorTarget modelToWorld [0.5, -0.15, 1 - (0.001 * _i)], cursorTarget modelToWorld [((-0.5) + _progress), -0.15, 1 - (0.001 * _i)], [0.55,0.55,0.55,1]]; - drawLine3D [cursorTarget modelToWorld [-0.5, 0.15, 1 - (0.001 * _i)], cursorTarget modelToWorld [((0.5) - _progress), 0.15, 1 - (0.001 * _i)], [0.55,0.55,0.55,1]]; + drawLine3D [cursorTarget modelToWorld [0.5, -0.15, _height - (0.001 * _i)], cursorTarget modelToWorld [((-0.5) + _progress), -0.15, _height - (0.001 * _i)], [0.55,0.55,0.55,1]]; + drawLine3D [cursorTarget modelToWorld [-0.5, 0.15, _height - (0.001 * _i)], cursorTarget modelToWorld [((0.5) - _progress), 0.15, _height - (0.001 * _i)], [0.55,0.55,0.55,1]]; } }]; diff --git a/mpmissions/Exile.Altis/ExAdClient/Grinding/customize.sqf b/mpmissions/Exile.Altis/ExAdClient/Grinding/customize.sqf index 0706812..7edbe85 100644 --- a/mpmissions/Exile.Altis/ExAdClient/Grinding/customize.sqf +++ b/mpmissions/Exile.Altis/ExAdClient/Grinding/customize.sqf @@ -22,6 +22,8 @@ ExAd_GRINDING_PROGRESS = 30; //SCALAR - Damage each finished interval will tak ExAd_GRINDING_OBJECT_MAX = 900; //SCALAR - Code lock sustainability. +ExAd_GRINDING_PROGRESSBAR_POS = "Mid"; //SCALAR/STRING - You can use values between 0.3-2 or using "LOW"|"MID"|"HIGH" + /* The default values above means that a full succesful grind will take (900 / 30) * 60 = 1800 = 20 minutes */ \ No newline at end of file diff --git a/mpmissions/Exile.Altis/ExAdClient/Grinding/postInit.sqf b/mpmissions/Exile.Altis/ExAdClient/Grinding/postInit.sqf index 749c6b3..f9d8f77 100644 --- a/mpmissions/Exile.Altis/ExAdClient/Grinding/postInit.sqf +++ b/mpmissions/Exile.Altis/ExAdClient/Grinding/postInit.sqf @@ -14,10 +14,10 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - */ -execVM "ExAdClient\Grinding\customize.sqf"; +_path = "ExAdClient\Grinding\customize.sqf"; +call compile preprocessFileLineNumbers _path; if(isNil "ExAd_GRINDING_PROGRESS_INTERVALL")then{ExAd_GRINDING_PROGRESS_INTERVALL = 60;}; if(isNil "ExAd_GRINDING_PROGRESS")then{ExAd_GRINDING_PROGRESS = 30;}; @@ -25,12 +25,23 @@ if(isNil "ExAd_GRINDING_OBJECT_MAX")then{ExAd_GRINDING_OBJECT_MAX = 900;}; ExAd_GRINDING = false; -STR_ExAd_GRINDING_NOTI_BROKE = if(isLocalized "STR_ExAd_GRINDING_NOTI_BROKE")then{localize "STR_ExAd_GRINDING_NOTI_BROKE"}else{"Your grinder broke, get a new one before you can continue."}; +["STR_ExAd_GRINDING_NOTI_BROKE", "Your grinder broke, get a new one before you can continue."] call ExAd_fnc_localize; +["STR_ExAd_GRINDING_NOTI_EMPTY_BAT", "Find some batteries to get the grinder to work."] call ExAd_fnc_localize; +["STR_ExAd_GRINDING_NOTI_PROGRESS", "Your grinder broke, get a new one before you can continue."] call ExAd_fnc_localize; +["STR_ExAd_GRINDING_NOTI_FINISHED", "You have broken the code lock."] call ExAd_fnc_localize; +["STR_ExAd_GRINDING_NOTI_RESTORED", "You've changed the look"] call ExAd_fnc_localize; -STR_ExAd_GRINDING_NOTI_EMPTY_BAT = if(isLocalized "STR_ExAd_GRINDING_NOTI_EMPTY_BAT")then{localize "STR_ExAd_GRINDING_NOTI_EMPTY_BAT"}else{"Find some batteries to get the grinder to work."}; - -STR_ExAd_GRINDING_NOTI_PROGRESS = if(isLocalized "STR_ExAd_GRINDING_NOTI_PROGRESS")then{localize "STR_ExAd_GRINDING_NOTI_PROGRESS"}else{"Your grinder broke, get a new one before you can continue."}; - -STR_ExAd_GRINDING_NOTI_FINISHED = if(isLocalized "STR_ExAd_GRINDING_NOTI_FINISHED")then{localize "STR_ExAd_GRINDING_NOTI_FINISHED"}else{"You have broken the code lock."}; - -STR_ExAd_GRINDING_NOTI_RESTORED = if(isLocalized "STR_ExAd_GRINDING_NOTI_RESTORED")then{localize "STR_ExAd_GRINDING_NOTI_RESTORED"}else{"You've changed the look"}; \ No newline at end of file +ExAd_GRINDING_PROGRESSBAR_POS = if!(isNil "ExAd_GRINDING_PROGRESSBAR_POS")then{ + if(typeName ExAd_GRINDING_PROGRESSBAR_POS isEqualTo "SCALAR")then{ + ((2 min ExAd_GRINDING_PROGRESSBAR_POS) max 0.3) + }else{ + if(typeName ExAd_GRINDING_PROGRESSBAR_POS isEqualTo "STRING")then{ + switch (toLower ExAd_GRINDING_PROGRESSBAR_POS) do { + case "low": {0.3}; + case "mid": {1}; + case "high": {1.8}; + default {1}; + } + } else {1} + } +}else{1}; \ No newline at end of file diff --git a/mpmissions/Exile.Altis/ExAdClient/Hacking/Functions/fn_canHackSafe.sqf b/mpmissions/Exile.Altis/ExAdClient/Hacking/Functions/fn_canHackSafe.sqf index 208b501..bafa96a 100644 --- a/mpmissions/Exile.Altis/ExAdClient/Hacking/Functions/fn_canHackSafe.sqf +++ b/mpmissions/Exile.Altis/ExAdClient/Hacking/Functions/fn_canHackSafe.sqf @@ -15,5 +15,4 @@ See the License for the specific language governing permissions and limitations under the License. */ - (('Exile_Item_Laptop' in (magazines player)) && ((ExileClientInteractionObject getvariable ['ExileIsLocked',1]) isEqualTo -1) && (({alive _x}count playableUnits) >= ExAd_HACKING_MIN_PLAYERS_ONLINE)) \ No newline at end of file diff --git a/mpmissions/Exile.Altis/ExAdClient/Hacking/Functions/fn_canHackVG.sqf b/mpmissions/Exile.Altis/ExAdClient/Hacking/Functions/fn_canHackVG.sqf index f96b9a1..5bd5a25 100644 --- a/mpmissions/Exile.Altis/ExAdClient/Hacking/Functions/fn_canHackVG.sqf +++ b/mpmissions/Exile.Altis/ExAdClient/Hacking/Functions/fn_canHackVG.sqf @@ -15,5 +15,4 @@ See the License for the specific language governing permissions and limitations under the License. */ - (('Exile_Item_Laptop' in (magazines player)) && ((([ExileClientInteractionObject, getPlayerUID player] call ExileClient_util_territory_getAccessLevel) select 0) < ExAd_VG_ACCESS_LEVEL) && (({alive _x}count playableUnits) >= ExAd_HACKING_MIN_PLAYERS_ONLINE)) \ No newline at end of file diff --git a/mpmissions/Exile.Altis/ExAdClient/Hacking/customize.sqf b/mpmissions/Exile.Altis/ExAdClient/Hacking/customize.sqf index 085f568..4eb4a6c 100644 --- a/mpmissions/Exile.Altis/ExAdClient/Hacking/customize.sqf +++ b/mpmissions/Exile.Altis/ExAdClient/Hacking/customize.sqf @@ -30,4 +30,6 @@ ExAd_HACKING_MARKER_COLOR = "ColorOrange"; //STRING - What color should the map ExAd_HACKING_MARKER_TITLE = "Hacker activity"; //STRING - What title should the map marker have. -ExAd_HACKING_FAILED_HACK = 0.15; //SCALAR - 0-1 The possability for the hack to fail once finished. \ No newline at end of file +ExAd_HACKING_FAILED_HACK = 0.15; //SCALAR - 0-1 The possability for the hack to fail once finished. + +ExAd_HACKING_PLAYER_ONLINE = false; //BOLLEAN - True if a player with build permissions for a base needs to be online for a hack to be possible. \ No newline at end of file diff --git a/mpmissions/Exile.Altis/ExAdClient/Hacking/postInit.sqf b/mpmissions/Exile.Altis/ExAdClient/Hacking/postInit.sqf index f0918c0..11e09c6 100644 --- a/mpmissions/Exile.Altis/ExAdClient/Hacking/postInit.sqf +++ b/mpmissions/Exile.Altis/ExAdClient/Hacking/postInit.sqf @@ -17,7 +17,8 @@ */ -execVM "ExAdClient\Hacking\customize.sqf"; +_path = "ExAdClient\Hacking\customize.sqf"; +call compile preprocessFileLineNumbers _path; if(isNil "ExAd_HACKING_MIN_PLAYERS_ONLINE")then{ExAd_HACKING_MIN_PLAYERS_ONLINE = 30;}; if(isNil "ExAd_HACKING_ALLOWED_HACKS")then{ExAd_HACKING_ALLOWED_HACKS = 1;}; @@ -28,24 +29,18 @@ if(isNil "ExAd_HACKING_MARKER_COLOR")then{ExAd_HACKING_MARKER_COLOR = "ColorOran if(isNil "ExAd_HACKING_MARKER_TITLE")then{ExAd_HACKING_MARKER_TITLE = "Hacker activity";}; if(isNil "ExAd_HACKING_FAILED_HACK")then{ExAd_HACKING_FAILED_HACK = 0.15;}; +if(isNil "ExAd_VG_ACCESS_LEVEL")then{ExAd_VG_ACCESS_LEVEL = 1;}; + if(isNil "ExAd_HACKING_FAILED_HACK")then{ExAd_VG_ACCESS_LEVEL = 1;}; /*Needs to be here if peolpe don't use the VirtualGarage*/ -STR_ExAd_HACKING_NOTI_MAX_TERRITORY_HACKS_REACHED = if(isLocalized "STR_ExAd_HACKING_NOTI_MAX_TERRITORY_HACKS_REACHED")then{localize "STR_ExAd_HACKING_NOTI_MAX_TERRITORY_HACKS_REACHED"}else{"Connection failed! Territory Wi-Fi is down!"}; - -STR_ExAd_HACKING_NOTI_TERRITORY_ONE_HACK = if(isLocalized "STR_ExAd_HACKING_NOTI_TERRITORY_ONE_HACK")then{localize "STR_ExAd_HACKING_NOTI_TERRITORY_ONE_HACK"}else{"Wi-Fi occupied!!"}; - -STR_ExAd_HACKING_NOTI_MAX_SIM_HACKS = if(isLocalized "STR_ExAd_HACKING_NOTI_MAX_SIM_HACKS")then{localize "STR_ExAd_HACKING_NOTI_MAX_SIM_HACKS"}else{"The laptop overloaded and got destroyed! Another hacker is already using the grid."}; - -STR_ExAd_HACKING_HINT_TITLE = if(isLocalized "STR_ExAd_HACKING_HINT_TITLE")then{localize "STR_ExAd_HACKING_HINT_TITLE"}else{"Hack Activity"}; - -STR_ExAd_HACKING_HINT_HACK_START = if(isLocalized "STR_ExAd_HACKING_HINT_HACK_START")then{localize "STR_ExAd_HACKING_HINT_HACK_START"}else{"A brute force hack is detected on the grid!"}; - -STR_ExAd_HACKING_NOTI_VG_SUCCESS = if(isLocalized "STR_ExAd_HACKING_NOTI_VG_SUCCESS")then{localize "STR_ExAd_HACKING_NOTI_VG_SUCCESS"}else{"Hack successful! The Virtual Garage unloaded a %1"}; - -STR_ExAd_HACKING_NOTI_VG_NO_VEH = if(isLocalized "STR_ExAd_HACKING_NOTI_VG_NO_VEH")then{localize "STR_ExAd_HACKING_NOTI_VG_NO_VEH"}else{"Hack successful! No vehicles were stored in the Virtual Garage."}; - -STR_ExAd_HACKING_NOTI_SAFE_SUCCESS = if(isLocalized "STR_ExAd_HACKING_NOTI_SAFE_SUCCESS")then{localize "STR_ExAd_HACKING_NOTI_SAFE_SUCCESS"}else{"Hack successful! The safe is now unlocked."}; - -STR_ExAd_HACKING_NOTI_INTERUPTED = if(isLocalized "STR_ExAd_HACKING_NOTI_INTERUPTED")then{localize "STR_ExAd_HACKING_NOTI_INTERUPTED"}else{"Hack has been interupted"}; - -STR_ExAd_HACKING_NOTI_FAILED = if(isLocalized "STR_ExAd_HACKING_NOTI_FAILED")then{localize "STR_ExAd_HACKING_NOTI_FAILED"}else{"Hack failed! Circuits overloaded!"}; \ No newline at end of file +["STR_ExAd_HACKING_NOTI_MAX_TERRITORY_HACKS_REACHED", "Connection failed! Territory Wi-Fi is down!"] call ExAd_fnc_localize; +["STR_ExAd_HACKING_NOTI_TERRITORY_ONE_HACK", "Wi-Fi occupied!!"] call ExAd_fnc_localize; +["STR_ExAd_HACKING_NOTI_MAX_SIM_HACKS", "The laptop overloaded and got destroyed! Another hacker is already using the grid."] call ExAd_fnc_localize; +["STR_ExAd_HACKING_NOTI_NO_PLAYER_PRESENT", "No Wi-Fi available!"] call ExAd_fnc_localize; +["STR_ExAd_HACKING_HINT_TITLE", "Hack Activity"] call ExAd_fnc_localize; +["STR_ExAd_HACKING_HINT_HACK_START", "A brute force hack is detected on the grid!"] call ExAd_fnc_localize; +["STR_ExAd_HACKING_NOTI_VG_SUCCESS", "Hack successful! The Virtual Garage unloaded a %1"] call ExAd_fnc_localize; +["STR_ExAd_HACKING_NOTI_VG_NO_VEH", "Hack successful! No vehicles were stored in the Virtual Garage."] call ExAd_fnc_localize; +["STR_ExAd_HACKING_NOTI_SAFE_SUCCESS", "Hack successful! The safe is now unlocked."] call ExAd_fnc_localize; +["STR_ExAd_HACKING_NOTI_INTERUPTED", "Hack has been interupted"] call ExAd_fnc_localize; +["STR_ExAd_HACKING_NOTI_FAILED", "Hack failed! Circuits overloaded!"] call ExAd_fnc_localize; diff --git a/mpmissions/Exile.Altis/ExAdClient/HaloParachute/postInit.sqf b/mpmissions/Exile.Altis/ExAdClient/HaloParachute/postInit.sqf index 1d7a545..358efb2 100644 --- a/mpmissions/Exile.Altis/ExAdClient/HaloParachute/postInit.sqf +++ b/mpmissions/Exile.Altis/ExAdClient/HaloParachute/postInit.sqf @@ -17,9 +17,9 @@ */ -ExAd_HALOPARACHUTE_VERSION = "v0.7.4"; +_path = "ExAdClient\HaloParachute\customize.sqf"; +call compile preprocessFileLineNumbers _path; -execVM "ExAdClient\HaloParachute\customize.sqf"; if(isNil "ExAd_HALOPARACHUTE_SAFE_MODE")then{ExAd_HALOPARACHUTE_SAFE_MODE = false;}; if(isNil "ExAd_HALOPARACHUTE_USE_ACTIONS")then{ExAd_HALOPARACHUTE_USE_ACTIONS = true;}; diff --git a/mpmissions/Exile.Altis/ExAdClient/VirtualGarage/CfgFunctions.cpp b/mpmissions/Exile.Altis/ExAdClient/VirtualGarage/CfgFunctions.cpp index ad894ae..1f16de0 100644 --- a/mpmissions/Exile.Altis/ExAdClient/VirtualGarage/CfgFunctions.cpp +++ b/mpmissions/Exile.Altis/ExAdClient/VirtualGarage/CfgFunctions.cpp @@ -20,6 +20,7 @@ class VirtualGarage { file = "ExAdClient\VirtualGarage\Functions"; + class allowedVGVeh {}; class allowVGStore {}; class fillVGList {}; class loadVGDetailView {}; diff --git a/mpmissions/Exile.Altis/ExAdClient/VirtualGarage/Functions/fn_allowVGStore.sqf b/mpmissions/Exile.Altis/ExAdClient/VirtualGarage/Functions/fn_allowVGStore.sqf index 3a6969b..bb23263 100644 --- a/mpmissions/Exile.Altis/ExAdClient/VirtualGarage/Functions/fn_allowVGStore.sqf +++ b/mpmissions/Exile.Altis/ExAdClient/VirtualGarage/Functions/fn_allowVGStore.sqf @@ -20,7 +20,7 @@ private ["_res","_flag"]; if(isNil "ExAdCurFlagNetId")exitWith{diag_log "ExAdClient: allowVGStore - ExAdCurFlagNetId is nil";false}; _flag = objectFromNetId ExAdCurFlagNetId; -_allowedVeh = ExAd_VG_MIN_ALLOWED_VEH + ExAd_VG_ALLOWED_VEH_MULTIPLE_FACTOR * (_flag getVariable ["ExileTerritoryLevel", 1]); +_allowedVeh = _flag call ExAd_fnc_allowedVGVeh; _storedVeh = count (_flag getVariable ["ExAdVGVeh", []]); _res = if(_allowedVeh > _storedVeh)then{true}else{false}; diff --git a/mpmissions/Exile.Altis/ExAdClient/VirtualGarage/Functions/fn_allowedVGVeh.sqf b/mpmissions/Exile.Altis/ExAdClient/VirtualGarage/Functions/fn_allowedVGVeh.sqf new file mode 100644 index 0000000..1edc066 --- /dev/null +++ b/mpmissions/Exile.Altis/ExAdClient/VirtualGarage/Functions/fn_allowedVGVeh.sqf @@ -0,0 +1,22 @@ +/* + fn_allowedVGVeh.sqf + + Copyright 2016 Jan Babor + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +params ["_flag"]; + +_res = ExAd_VG_MIN_ALLOWED_VEH + round(ExAd_VG_ALLOWED_VEH_MULTIPLE_FACTOR * (_flag getVariable ["ExileTerritoryLevel", 1])); + +_res \ No newline at end of file diff --git a/mpmissions/Exile.Altis/ExAdClient/VirtualGarage/customize.sqf b/mpmissions/Exile.Altis/ExAdClient/VirtualGarage/customize.sqf index f1cf87d..bcba508 100644 --- a/mpmissions/Exile.Altis/ExAdClient/VirtualGarage/customize.sqf +++ b/mpmissions/Exile.Altis/ExAdClient/VirtualGarage/customize.sqf @@ -24,4 +24,6 @@ ExAd_VG_ACCESS_LEVEL = 1; //SCALAR - Lowest level that can access the Virtua ExAd_VG_CLEAN_ON_STORE = true; //BOOLEAN - If vehicle inventory should reset when stored. -ExAd_VG_SHOW_ADVHINT = false //BOOLEAN - If the virtual garage should display an Advanced hint upon store and fetch. \ No newline at end of file +ExAd_VG_SHOW_ADVHINT = false; //BOOLEAN - If the virtual garage should display an Advanced hint upon store and fetch. + +ExAd_VG_ALLOWED_VEH_TYPE = ["Car","Air"];//ARRAY - Array with allowed vehicle types for the virtual garage. | "Car", "Tank", "Helicopter", "Plane" or "Air" for both WARNING DON'T USE "LandVehicle" Can crash the Exile system. \ No newline at end of file diff --git a/mpmissions/Exile.Altis/ExAdClient/VirtualGarage/postInit.sqf b/mpmissions/Exile.Altis/ExAdClient/VirtualGarage/postInit.sqf index 87171f0..cba1e22 100644 --- a/mpmissions/Exile.Altis/ExAdClient/VirtualGarage/postInit.sqf +++ b/mpmissions/Exile.Altis/ExAdClient/VirtualGarage/postInit.sqf @@ -17,10 +17,25 @@ */ -execVM "ExAdClient\VirtualGarage\customize.sqf"; +_path = "ExAdClient\VirtualGarage\customize.sqf"; +call compile preprocessFileLineNumbers _path; if(isNil "ExAd_VG_MIN_ALLOWED_VEH")then{ExAd_VG_MIN_ALLOWED_VEH = 5;}; if(isNil "ExAd_VG_ALLOWED_VEH_MULTIPLE_FACTOR")then{ExAd_VG_ALLOWED_VEH_MULTIPLE_FACTOR = 3;}; if(isNil "ExAd_VG_ACCESS_LEVEL")then{ExAd_VG_ACCESS_LEVEL = 1;}; if(isNil "ExAd_VG_CLEAN_ON_STORE")then{ExAd_VG_CLEAN_ON_STORE = true;}; -if(isNil "ExAd_VG_SHOW_ADVHINT")then{ExAd_VG_SHOW_ADVHINT = false;}; \ No newline at end of file +if(isNil "ExAd_VG_SHOW_ADVHINT")then{ExAd_VG_SHOW_ADVHINT = false;}; +if(isNil "ExAd_VG_ALLOWED_VEH_TYPE")then{ExAd_VG_ALLOWED_VEH_TYPE = ["Car","Air"];}; + +["STR_ExAd_VG_NOTI_FULL", "The garage is full"] call ExAd_fnc_localize; +["STR_ExAd_VG_NOTI_NOT_PERSISTENT", "You can only store pincode protected vehicles into the garage!"] call ExAd_fnc_localize; +["STR_ExAd_VG_NOTI_NOT_AVAILABLE", "The vehicle is not available anymore!"] call ExAd_fnc_localize; + +["STR_ExAd_VG_APP_DETAILS", "%2 %1Pin code: %3 %1Fuel: %4 %1Damage: %5 %1Texture: %6 %1Items: %7 %1Magazines: %8 %1Weapons: %9"] call ExAd_fnc_localize; +["STR_ExAd_VG_APP_BTN_BACK", "Go Back"] call ExAd_fnc_localize; +["STR_ExAd_VG_APP_BTN_FETCH", "Fetch"] call ExAd_fnc_localize; +["STR_ExAd_VG_APP_BTN_STORE", "Store"] call ExAd_fnc_localize; +["STR_ExAd_VG_APP_TTL_STORED", "Stored"] call ExAd_fnc_localize; +["STR_ExAd_VG_APP_TTL_DETAILS", "Stored Vehicle Details"] call ExAd_fnc_localize; +["STR_ExAd_VG_APP_TTL_NEAR", "In Radius"] call ExAd_fnc_localize; +["STR_ExAd_VG_APP_CB_SECRET", "Stream friendly UI"] call ExAd_fnc_localize; \ No newline at end of file diff --git a/mpmissions/Exile.Altis/XM8_apps/apps/XM8_VG/XM8_VG_config.sqf b/mpmissions/Exile.Altis/XM8_apps/apps/XM8_VG/XM8_VG_config.sqf index 9dc983d..a85e659 100644 --- a/mpmissions/Exile.Altis/XM8_apps/apps/XM8_VG/XM8_VG_config.sqf +++ b/mpmissions/Exile.Altis/XM8_apps/apps/XM8_VG/XM8_VG_config.sqf @@ -12,9 +12,12 @@ XM8_VG_elChanged = { _ref = _listCtrl lbData (lbCurSel _listCtrl); _data = {if(str (_x select 0) == _ref)exitWith{_x}}forEach ((objectFromNetId ExAdCurFlagNetId) getVariable["ExAdVGVeh",[]]); - - _pic = getText(configFile >> "CfgVehicles" >> (_data select 1) >> "picture"); - ctrlSetText [_picCtrl, _pic]; - - ["requestVGDetailInfo", [_ref, ExAdCurFlagNetId, (profileNamespace getVariable["ExAd_StreamFriendlyUI",0]), netId player, _strCtrl]] call ExAd_fnc_serverDispatch; + if(!isNil "_data")then{ + _pic = getText(configFile >> "CfgVehicles" >> (_data select 1) >> "picture"); + ctrlSetText [_picCtrl, _pic]; + ["requestVGDetailInfo", [_ref, ExAdCurFlagNetId, (profileNamespace getVariable["ExAd_StreamFriendlyUI",0]), netId player, _strCtrl]] call ExAd_fnc_serverDispatch; + }else{ + ctrlSetText [_picCtrl, ""]; + ["",_strCtrl] call ExAd_fnc_loadVGDetailView; + } }; \ No newline at end of file diff --git a/mpmissions/Exile.Altis/XM8_apps/apps/XM8_VG/scripts/XM8_VG_checkNearByFlags.sqf b/mpmissions/Exile.Altis/XM8_apps/apps/XM8_VG/scripts/XM8_VG_checkNearByFlags.sqf index 3195f2d..53f14aa 100644 --- a/mpmissions/Exile.Altis/XM8_apps/apps/XM8_VG/scripts/XM8_VG_checkNearByFlags.sqf +++ b/mpmissions/Exile.Altis/XM8_apps/apps/XM8_VG/scripts/XM8_VG_checkNearByFlags.sqf @@ -8,23 +8,29 @@ Part of the ExAd Virtual Garage script private ["_flags","_flag"]; _flags = nearestObjects [player,["Exile_Construction_Flag_Static"],150]; -if(count _flags == 0)exitWith{ - ["Whoops", ["No connetion to a Virtual Garage"]] call ExileClient_gui_notification_event_addNotification; - ["sideApps", 1] call ExileClient_gui_xm8_slide -}; - -_flag = _flags select 0; -if((player distance _flag) > (_flag getVariable ["ExileTerritorySize", 50]))exitWith{ - ["Whoops", ["No connetion to a Virtual Garage"]] call ExileClient_gui_notification_event_addNotification; - ["sideApps", 1] call ExileClient_gui_xm8_slide -}; - -if((([_flag, getPlayerUID player] call ExileClient_util_territory_getAccessLevel) select 0) >= ExAd_VG_ACCESS_LEVEL)then{ - ExAdCurFlagNetId = netId _flag; - ["mainVGSlide", 0] call ExileClient_gui_xm8_slide; - call XM8_VG_loadContent; -} -else +try { - ["Whoops", ["You aren't eligible to access this virtual garage!"]] call ExileClient_gui_notification_event_addNotification; + if(count _flags == 0)exitWith{ + throw "No connetion to a Virtual Garage" + }; + + _flag = _flags select 0; + if((player distance _flag) > (_flag getVariable ["ExileTerritorySize", 50]))exitWith{ + throw "Weak signal, get closer" + }; + + if((([_flag, getPlayerUID player] call ExileClient_util_territory_getAccessLevel) select 0) >= ExAd_VG_ACCESS_LEVEL)then{ + ExAdCurFlagNetId = netId _flag; + ["mainVGSlide", 0] call ExileClient_gui_xm8_slide; + call XM8_VG_loadContent; + } + else + { + throw "You aren't eligible to access this virtual garage!" + } +} +catch +{ + ["Whoops", [_exception]] call ExileClient_gui_notification_event_addNotification; + ["sideApps", 1] call ExileClient_gui_xm8_slide } \ No newline at end of file diff --git a/mpmissions/Exile.Altis/XM8_apps/apps/XM8_VG/scripts/XM8_VG_loadContent.sqf b/mpmissions/Exile.Altis/XM8_apps/apps/XM8_VG/scripts/XM8_VG_loadContent.sqf index 77ad4dd..30e3c7c 100644 --- a/mpmissions/Exile.Altis/XM8_apps/apps/XM8_VG/scripts/XM8_VG_loadContent.sqf +++ b/mpmissions/Exile.Altis/XM8_apps/apps/XM8_VG/scripts/XM8_VG_loadContent.sqf @@ -29,7 +29,7 @@ _getControl = { _flag = if(typeName ExAdCurFlagNetId == "STRING")then{objectFromNetId ExAdCurFlagNetId}else{ExAdCurFlagNetId}; -_allowedVeh = ExAd_VG_MIN_ALLOWED_VEH + ExAd_VG_ALLOWED_VEH_MULTIPLE_FACTOR * (_flag getVariable ["ExileTerritoryLevel", 1]); +_allowedVeh = _flag call ExAd_fnc_allowedVGVeh; _storedVeh = count (_flag getVariable ["ExAdVGVeh", []]); _strTxtVehCntColor = if(_allowedVeh > _storedVeh)then{"#FFFFFF"}else{"#B22400"}; @@ -37,7 +37,10 @@ _strTxtVehCnt = "SubTitle1Cnt" call _getControl; _strTxtVehCnt ctrlSetStructuredText parseText format ["%2/%3",_strTxtVehCntColor,_storedVeh,_allowedVeh]; [(objectFromNetId ExAdCurFlagNetId) getVariable ["ExAdVGVeh", []],ctrlIDC ("StoreVehList" call _getControl)] call ExAd_fnc_fillVGList; +for "_i" from 0 to 3 do { + _index = lbAdd[ctrlIDC ("StoreVehList" call _getControl),""]; +}; -[[_flag, ["Car","Air"],_flag getVariable ["ExileTerritorySize", 50]] call ExAd_fnc_getNearByLocalVeh,ctrlIDC ("NearVehicleList" call _getControl)] call ExAd_fnc_fillVGList; +[[_flag, ExAd_VG_ALLOWED_VEH_TYPE,_flag getVariable ["ExileTerritorySize", 50]] call ExAd_fnc_getNearByLocalVeh,ctrlIDC ("NearVehicleList" call _getControl)] call ExAd_fnc_fillVGList; ("InfoCB" call _getControl) cbSetChecked ((profileNamespace getVariable["ExAd_StreamFriendlyUI",0]) == 1); \ No newline at end of file diff --git a/mpmissions/Exile.Altis/XM8_apps/apps/XM8_VG/scripts/XM8_VG_mainVGSlide_onLoad.sqf b/mpmissions/Exile.Altis/XM8_apps/apps/XM8_VG/scripts/XM8_VG_mainVGSlide_onLoad.sqf index 39c097c..7846054 100644 --- a/mpmissions/Exile.Altis/XM8_apps/apps/XM8_VG/scripts/XM8_VG_mainVGSlide_onLoad.sqf +++ b/mpmissions/Exile.Altis/XM8_apps/apps/XM8_VG/scripts/XM8_VG_mainVGSlide_onLoad.sqf @@ -113,7 +113,7 @@ _unloadScript = ' if (ExileClientXM8CurrentSlide == "mainVGSlide") then { ExileClientXM8CurrentSlide = "sideApps"; }; - ExAd_Cur_Flag_NetId = nil; + ExAdCurFlagNetId = nil; '; _display displayAddEventHandler ["unload",_unloadScript]; @@ -121,10 +121,10 @@ XM8_VG_mainVGSlideIDCmap = []; _thisSlide = _display ctrlCreate ["RscExileXM8Slide",("mainVGSlide" call _getNextIDC),_slides]; -[_thisSlide,("backButton" call _getNextIDC),[27.6 * _pW, 17.7 * _pH, 6 * _pW, 1 * _pH],'["sideApps", 1] call ExileClient_gui_xm8_slide;',"GO BACK",""] call _makeButton; +[_thisSlide,("backButton" call _getNextIDC),[27.6 * _pW, 17.7 * _pH, 6 * _pW, 1 * _pH],'["sideApps", 1] call ExileClient_gui_xm8_slide;',STR_ExAd_VG_APP_BTN_BACK,""] call _makeButton; /*Stored Vehicle Details*/ -[_thisSlide,("InfoTitle" call _getNextIDC),[_rightCol * _pW, 2.75 * _pH, _rightColW * _pW, 1 * _pH],"Stored Vehicle Detail","PuristaMedium",1.2,"#ffffff","left",1] call _makeStructuredText; +[_thisSlide,("InfoTitle" call _getNextIDC),[_rightCol * _pW, 2.75 * _pH, _rightColW * _pW, 1 * _pH],STR_ExAd_VG_APP_TTL_DETAILS,"PuristaMedium",1.2,"#ffffff","left",1] call _makeStructuredText; [_thisSlide,("InfoBgBox" call _getNextIDC),[_rightCol * _pW, 4 * _pH, _rightColW * _pW, 13.5 * _pH]] call _makeBackgroundGUI; @@ -134,24 +134,24 @@ _idcInfoPic = "InfoPic" call _getNextIDC; _idcInfoStr = "InfoVehStr" call _getNextIDC; [_thisSlide,_idcInfoStr,[(_rightCol + _margin) * _pW, (4 + _margin) * _pH, (_rightColW - 2 * _margin) * _pW, (13.5 - 2 * _margin) * _pH],"","PuristaMedium",0.75,"#ffffff","left",1] call _makeStructuredText; -[_thisSlide,("InfoCBStr" call _getNextIDC),[(_rightCol + _margin + 0.4) * _pW, (16.5 - _margin + 0.25 ) * _pH, (_rightColW - 2 * _margin) * _pW, (13.5 - 2 * _margin) * _pH],"Stream friendly UI","PuristaMedium",0.65,"#ffffff","left",1] call _makeStructuredText; +[_thisSlide,("InfoCBStr" call _getNextIDC),[(_rightCol + _margin + 0.4) * _pW, (16.5 - _margin + 0.25 ) * _pH, (_rightColW - 2 * _margin) * _pW, (13.5 - 2 * _margin) * _pH],STR_ExAd_VG_APP_CB_SECRET,"PuristaMedium",0.65,"#ffffff","left",1] call _makeStructuredText; [_thisSlide,("InfoCB" call _getNextIDC),[(_rightCol + _margin) * _pW, (16.5 - _margin + 0.2) * _pH, 0.75 * _pW, 0.75 * _pH],'profileNamespace setVariable["ExAd_StreamFriendlyUI",_this select 1]',"Toogle - Stream friendly UI"] call _makeCheckBox; /*Stored Vehicles*/ -[_thisSlide,("SubTitle1" call _getNextIDC),[_leftCol * _pW, 2.75 * _pH, _leftColW * _pW, 1 * _pH],"Stored","PuristaMedium",1.2,"#ffffff","left",1] call _makeStructuredText; +[_thisSlide,("SubTitle1" call _getNextIDC),[_leftCol * _pW, 2.75 * _pH, _leftColW * _pW, 1 * _pH],STR_ExAd_VG_APP_TTL_STORED,"PuristaMedium",1.2,"#ffffff","left",1] call _makeStructuredText; [_thisSlide,("SubTitle1Cnt" call _getNextIDC),[_leftCol * _pW, 3 * _pH, _leftColW * _pW, 1 * _pH],"","PuristaMedium",1,"#ffffff","right",1] call _makeStructuredText; _idcStoredVehList = "StoreVehList" call _getNextIDC; [_thisSlide,_idcStoredVehList,[_leftCol * _pW, 4 * _pH, _leftColW * _pW, 5 * _pH],format["[_this select 0,%1,%2] call XM8_VG_elChanged",_idcInfoPic,_idcInfoStr],""] call _makeList; -[_thisSlide,("fetchButton" call _getNextIDC),[_leftCol*_pW, 9*_pH, _leftColW*_pW, 1*_pH],format["disableUserInput true;['VGLoad', %1] call ExAd_fnc_onBtnClickVG",_idcStoredVehList],"Fetch",""] call _makeButton; +[_thisSlide,("fetchButton" call _getNextIDC),[_leftCol*_pW, 9*_pH, _leftColW*_pW, 1*_pH],format["disableUserInput true;['VGLoad', %1] call ExAd_fnc_onBtnClickVG",_idcStoredVehList],STR_ExAd_VG_APP_BTN_FETCH,""] call _makeButton; /*Nearby vehicles*/ -[_thisSlide,("SubTitle2" call _getNextIDC),[_leftCol * _pW, 10.25 * _pH, _leftColW * _pW, 1 * _pH],"In Radius","PuristaMedium",1.2,"#ffffff","left",1] call _makeStructuredText; +[_thisSlide,("SubTitle2" call _getNextIDC),[_leftCol * _pW, 10.25 * _pH, _leftColW * _pW, 1 * _pH],STR_ExAd_VG_APP_TTL_NEAR,"PuristaMedium",1.2,"#ffffff","left",1] call _makeStructuredText; _idcNearVehList = "NearVehicleList" call _getNextIDC; [_thisSlide,_idcNearVehList,[_leftCol * _pW, 11.5 * _pH, _leftColW * _pW, 5 * _pH],"",""] call _makeList; -[_thisSlide,("storeButton" call _getNextIDC),[_leftCol * _pW, 16.5 * _pH, _leftColW * _pW, 1 * _pH],format["if(call ExAd_fnc_allowVGStore)then{disableUserInput true;['VGStore', %1] call ExAd_fnc_onBtnClickVG}else{['Whoops', ['%2']] call ExileClient_gui_notification_event_addNotification}",_idcNearVehList,localize "STR_ExAd_VIRTUALGARAGE_NOTI_FULL"],"Store",""] call _makeButton; +[_thisSlide,("storeButton" call _getNextIDC),[_leftCol * _pW, 16.5 * _pH, _leftColW * _pW, 1 * _pH],format["if(call ExAd_fnc_allowVGStore)then{disableUserInput true;['VGStore', %1] call ExAd_fnc_onBtnClickVG}else{['Whoops', ['%2']] call ExileClient_gui_notification_event_addNotification}",_idcNearVehList,STR_ExAd_VG_NOTI_FULL],STR_ExAd_VG_APP_BTN_STORE,""] call _makeButton; diff --git a/mpmissions/Exile.Altis/stringtable.xml b/mpmissions/Exile.Altis/stringtable.xml index 4b45425..4c917b5 100644 --- a/mpmissions/Exile.Altis/stringtable.xml +++ b/mpmissions/Exile.Altis/stringtable.xml @@ -20,12 +20,41 @@ - + You garage is full! - + You can only store pincode protected vehicles into the garage! + + The vehicle is not available anymore! + + + + + %2 %1Pin code: %3 %1Fuel: %4 %1Damage: %5 %1Texture: %6 %1Items: %7 %1Magazines: %8 %1Weapons: %9 + + + Go Back + + + Fetch + + + Store + + + Stored Vehicle Details + + + Stored + + + In Radius + + + Stream friendly UI + @@ -57,6 +86,9 @@ The laptop overloaded and got destroyed! Another hacker is already using the grid. + + No Wi-Fi available! + Hack successful! The Virtual Garage unloaded a %1