mirror of
https://github.com/Bjanski/ExAd.git
synced 2024-08-30 16:52:14 +00:00
commit
49c307c1b0
23
@ExileServer/addons/exad_core/Functions/Debug/fn_log.sqf
Normal file
23
@ExileServer/addons/exad_core/Functions/Debug/fn_log.sqf
Normal file
@ -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];
|
||||
}
|
@ -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
|
@ -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 {};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -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
|
@ -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
|
@ -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["<t color='%1' size='%2' font='%3'>%4</t><br/><t color='%5' size='%6' font='%7'>%8</t>", 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
|
||||
}
|
||||
};
|
||||
|
@ -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
|
@ -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;
|
||||
|
@ -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 <br/>Pin code: %2<br/>",_displayName, _pinCode];
|
||||
_text = format[STR_ExAd_VG_APP_DETAILS, "<br/>", _displayName, _pinCode, _fuel, _damage, _texture, _items, _magazines, _weapons];
|
||||
|
||||
[_text,_ctrl] remoteExec ["ExAd_fnc_loadVGDetailView", _requestFrom];
|
||||
[_text,_ctrl] remoteExec ["ExAd_fnc_loadVGDetailView", _requestFrom];
|
||||
};
|
||||
|
||||
true
|
@ -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 ["
|
||||
|
14
CHANGELOG.md
14
CHANGELOG.md
@ -1,7 +1,19 @@
|
||||
#<img src="logo.png" alt="ExAd" width="200" />
|
||||
|
||||
# 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)
|
||||
|
@ -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
|
||||
|
@ -1,13 +1,17 @@
|
||||
#VirtualGarage
|
||||
#Grinding
|
||||
## Instructions:
|
||||
|
||||
### v0.7.6
|
||||
* Replace or merge "mpmissions\Exile.<map>\ExAdClient\Grinding\customize.sqf"
|
||||
* Replace or merge "mpmissions\Exile.<map>\stringtable.xml"
|
||||
* Replace "mpmissions\Exile.<map>\ExAdClient\Grinding" - Big update
|
||||
* Replace and pack "@ExileServer\addons\exad_grinding"
|
||||
|
||||
### 160507 16:00 . v0.7.3
|
||||
#### Update
|
||||
### v0.7.3
|
||||
* Replace "mpmissions\Exile.<map>\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
|
||||
|
@ -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
|
||||
|
@ -1,14 +1,18 @@
|
||||
#Hacking
|
||||
## Instructions:
|
||||
|
||||
### v0.7.6
|
||||
* Replace or merge "mpmissions\Exile.<map>\ExAdClient\Hacking\customize.sqf"
|
||||
* Replace or merge "mpmissions\Exile.<map>\stringtable.xml"
|
||||
* Replace "mpmissions\Exile.<map>\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.<map>\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
|
||||
|
@ -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
|
||||
|
@ -1,8 +1,12 @@
|
||||
#HaloParachute
|
||||
## Instructions:
|
||||
|
||||
## 160510 21:00 . v0.7.5
|
||||
###Fixed
|
||||
### v0.7.6
|
||||
* Replace or merge "mpmissions\Exile.<map>\ExAdClient\HaloParachute\customize.sqf"
|
||||
* Replace or merge "mpmissions\Exile.<map>\stringtable.xml"
|
||||
* Replace "mpmissions\Exile.<map>\ExAdClient\HaloParachute" - Big update
|
||||
|
||||
## v0.7.5
|
||||
* replace "mpmissions\Exile.<map>\ExAdClient\HaloParachute\postInit.sqf"
|
||||
* replace "mpmissions\Exile.<map>\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.<map>\ExAdClient\HaloParachute\Functions"
|
||||
* Replace file "mpmissions\Exile.<map>\ExAdClient\HaloParachute\CfgFunctions.cpp"
|
||||
* Replace file "mpmissions\Exile.<map>\ExAdClient\HaloParachute\postInit.sqf"
|
||||
* Replace, or update manually, file "mpmissions\Exile.<map>\ExAdClient\HaloParachute\customize.sqf"
|
||||
|
||||
### 160507 16:00 . v0.7.3
|
||||
#### Update
|
||||
### v0.7.3
|
||||
* Replace "mpmissions\Exile.<map>\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
|
||||
### v0.5.0
|
||||
* Full installation
|
@ -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.<map>\ExAdClient\HaloParachute"
|
||||
* Compare old with new customize.sqf file - add extras
|
||||
* Replace plugin client folder, e.g. "mpmission\Exile.<map>\ExAdClient\HaloParachute"
|
||||
* Compare old with new customize.sqf file - add extras
|
||||
* Replace app specific files if there are any, e.g. for Virtual Garage
|
@ -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
|
||||
|
@ -1,18 +1,22 @@
|
||||
#VirtualGarage
|
||||
## Instructions:
|
||||
|
||||
### 160507 16:00 . v0.7.3
|
||||
#### Update
|
||||
### v0.7.6
|
||||
* Replace or merge "mpmissions\Exile.<map>\ExAdClient\VG\customize.sqf"
|
||||
* Replace or merge "mpmissions\Exile.<map>\stringtable.xml"
|
||||
* Replace "mpmissions\Exile.<map>\ExAdClient\VG" - Big update
|
||||
* Replace "mpmissions\Exile.<map>\XM8_apps\apps\XM8_VG"
|
||||
* Replace and pack "@ExileServer\addons\exad_vg"
|
||||
|
||||
### v0.7.3
|
||||
* Replace "mpmissions\Exile.<map>\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
|
||||
|
@ -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
|
@ -1,24 +1,26 @@
|
||||
#Core
|
||||
## Instructions:
|
||||
|
||||
### v0.7.6
|
||||
* Replace or merge "mpmissions\Exile.<map>\ExAdClient\Core\customize.sqf"
|
||||
* Replace or merge "mpmissions\Exile.<map>\stringtable.xml"
|
||||
* Replace "mpmissions\Exile.<map>\ExAdClient\Core" - Big update
|
||||
* Replace and pack "@ExileServer\addons\exad_core"
|
||||
|
||||
### 160507 16:00 . v0.7.3
|
||||
#### Update
|
||||
### v0.7.3
|
||||
* Replace "mpmissions\Exile.<map>\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
|
||||
### v0.5.0
|
||||
* Full installation
|
@ -30,4 +30,5 @@ class Utilities
|
||||
class advancedHint {};
|
||||
class call {};
|
||||
class getNearByLocalVeh {};
|
||||
class localize {};
|
||||
};
|
@ -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{""})]
|
||||
}
|
@ -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
|
@ -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
|
||||
|
@ -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;};
|
||||
|
@ -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]];
|
||||
}
|
||||
}];
|
||||
|
||||
|
@ -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
|
||||
*/
|
@ -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"};
|
||||
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};
|
@ -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))
|
@ -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))
|
@ -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.
|
||||
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.
|
@ -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!"};
|
||||
["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;
|
||||
|
@ -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;};
|
||||
|
@ -20,6 +20,7 @@
|
||||
class VirtualGarage
|
||||
{
|
||||
file = "ExAdClient\VirtualGarage\Functions";
|
||||
class allowedVGVeh {};
|
||||
class allowVGStore {};
|
||||
class fillVGList {};
|
||||
class loadVGDetailView {};
|
||||
|
@ -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};
|
||||
|
@ -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
|
@ -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.
|
||||
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.
|
@ -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;};
|
||||
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;
|
@ -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;
|
||||
}
|
||||
};
|
@ -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
|
||||
}
|
@ -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 ["<t size='1' align='right' color='%1'>%2/%3</t>",_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);
|
@ -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;
|
||||
|
@ -20,12 +20,41 @@
|
||||
</Package>
|
||||
<Package name="VirtualGarage">
|
||||
<Container name="Notifications">
|
||||
<Key ID="STR_ExAd_VIRTUALGARAGE_NOTI_FULL">
|
||||
<Key ID="STR_ExAd_VG_NOTI_FULL">
|
||||
<Original>You garage is full!</Original>
|
||||
</Key>
|
||||
<Key ID="STR_ExAd_VIRTUALGARAGE_NOTI_NOT_PERSISTENT">
|
||||
<Key ID="STR_ExAd_VG_NOTI_NOT_PERSISTENT">
|
||||
<Original>You can only store pincode protected vehicles into the garage!</Original>
|
||||
</Key>
|
||||
<Key ID="STR_ExAd_VG_NOTI_NOT_AVAILABLE">
|
||||
<Original>The vehicle is not available anymore!</Original>
|
||||
</Key>
|
||||
</Container>
|
||||
<Container name="APP">
|
||||
<Key ID="STR_ExAd_VG_APP_DETAILS">
|
||||
<Original>%2 %1Pin code: %3 %1Fuel: %4 %1Damage: %5 %1Texture: %6 %1Items: %7 %1Magazines: %8 %1Weapons: %9</Original> <!-- %1 - New line | %2 - Vehicle class display name | %3 - Pin Code | %4 - Fuel | %5 - Damage | %6 - Texture | %7 - Items | %8 - Magazines | %9 - Weapons -->
|
||||
</Key>
|
||||
<Key ID="STR_ExAd_VG_APP_BTN_BACK">
|
||||
<Original>Go Back</Original>
|
||||
</Key>
|
||||
<Key ID="STR_ExAd_VG_APP_BTN_FETCH">
|
||||
<Original>Fetch</Original>
|
||||
</Key>
|
||||
<Key ID="STR_ExAd_VG_APP_BTN_STORE">
|
||||
<Original>Store</Original>
|
||||
</Key>
|
||||
<Key ID="STR_ExAd_VG_APP_TTL_DETAILS">
|
||||
<Original>Stored Vehicle Details</Original>
|
||||
</Key>
|
||||
<Key ID="STR_ExAd_VG_APP_TTL_STORED">
|
||||
<Original>Stored</Original>
|
||||
</Key>
|
||||
<Key ID="STR_ExAd_VG_APP_TTL_NEAR">
|
||||
<Original>In Radius</Original>
|
||||
</Key>
|
||||
<Key ID="STR_ExAd_VG_APP_CB_SECRET">
|
||||
<Original>Stream friendly UI</Original>
|
||||
</Key>
|
||||
</Container>
|
||||
</Package>
|
||||
<Package name="Grinding">
|
||||
@ -57,6 +86,9 @@
|
||||
<Key ID="STR_ExAd_HACKING_NOTI_MAX_SIM_HACKS">
|
||||
<Original>The laptop overloaded and got destroyed! Another hacker is already using the grid.</Original>
|
||||
</Key>
|
||||
<Key ID="STR_ExAd_HACKING_NOTI_NO_PLAYER_PRESENT">
|
||||
<Original>No Wi-Fi available!</Original>
|
||||
</Key>
|
||||
<Key ID="STR_ExAd_HACKING_NOTI_VG_SUCCESS">
|
||||
<Original>Hack successful! The Virtual Garage unloaded a %1</Original> <!-- %1 indicates the vehicle class name that's going to be shown-->
|
||||
</Key>
|
||||
|
Loading…
Reference in New Issue
Block a user