Release v0.7.0

Implemented Hacking
Ppdated Core and VG
This commit is contained in:
Bjanski 2016-05-06 09:52:30 +02:00
parent 6e7d916b2f
commit 916e91a4db
33 changed files with 616 additions and 16 deletions

View File

@ -0,0 +1 @@
exad_hacking

View File

@ -0,0 +1,150 @@
/*
fn_startHack.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.
*/
private ["_object","_player","_laptops","_pos","_laptop"];
_object = objectFromNetId ([_this, 0, "",[""]] call BIS_fnc_param);
_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{
[STR_ExAd_HACKING_NOTI_MAX_TERRITORY_HACKS_REACHED ,0,0.6,2,0] remoteExec ["BIS_fnc_dynamicText",owner _player];
};
_laptops = nearestObjects [getPos _object, ["Exile_Construction_Laptop_Static"], 200];
if(({(_x getVariable ["ExAd_HACKING_IN_PROGRESS", false])}count _laptops) >= 1)exitWith{
[STR_ExAd_HACKING_NOTI_TERRITORY_ONE_HACK,0,0.6,2,0] remoteExec ["BIS_fnc_dynamicText",owner _player];
false
};
if(isNil "ExAd_HACKS_IN_PROGRESS")then{
ExAd_HACKS_IN_PROGRESS = 0;
};
_pos = _player modelToWorld [0, +0.5, 0];
_pos set [2,((getPosATL _player) select 2)];
_laptop = createVehicle ["Exile_Construction_Laptop_Static", _pos, [], 0, "CAN_COLLIDE"];
_laptop setDir ((direction _player) - 90);
_laptop setVariable ["ExAd_HACKING_IN_PROGRESS", true, true];
_laptop animate ["LaptopLidRotation", 1];
_player removeItem "Exile_Item_Laptop";
[_object, _player, _laptop] spawn {
private ["_object","_player","_laptop","_markers","_marker","_success","_ticks","_newSize","_destroy","_msg"];
params ["_object","_player","_laptop"];
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];
if(ExAd_HACKS_IN_PROGRESS >= ExAd_HACKING_ALLOWED_HACKS)exitWith{
_laptop setVariable ["ExAd_HACKING_IN_PROGRESS", false, true];
_laptop setDamage 1;
[format[STR_ExAd_HACKING_NOTI_MAX_SIM_HACKS],0,0.6,2,0] remoteExec ["BIS_fnc_dynamicText",owner _player];
false
};
ExAd_HACKS_IN_PROGRESS = ExAd_HACKS_IN_PROGRESS + 1;
_markers = [getPos _laptop, ExAd_HACKING_MARKER_COLOR, 200, str (netId _object), ExAd_HACKING_MARKER_TITLE,true] call ExAdServer_fnc_createMarker;
_marker = _markers select 0;
_success = false;
while {!(_laptop getVariable ["ExAd_HACK_INTERUPTED",false]) && _laptop getVariable ["ExAd_HACK", 0] <= ExAd_HACKING_MAX_TIME} do {
UISleep 1;
_ticks = (_laptop getVariable ["ExAd_HACK", 0]) + 1;
_laptop setVariable ["ExAd_HACK", _ticks];
if((_ticks % (ExAd_HACKING_MAX_TIME / 10)) == 0)then{
_newSize = ((getMarkerSize _marker) select 0) - 20;
_marker setMarkerSize [_newSize,_newSize];
};
if(_ticks >= ExAd_HACKING_MAX_TIME)exitWith{_success = true};
waitUntil{{(_x distance (getPosATL _laptop)) < ExAd_HACKING_MAX_DISTANCE}count playableUnits > 0};
};
_laptop setVariable ["ExAd_HACKING_IN_PROGRESS", false, true];
_laptop animate ["LaptopLidRotation", 0];
_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{
private ["_vehList","_objId","_vehObj","_extDB2Message","_pos"];
_vehList = _object getVariable ["ExAdVGVeh", []];
if((count _vehList) > 0)then{
_objId = (_vehList call BIS_fnc_selectRandom) select 0;
{
if((_x select 0) isEqualTo _objId)exitWith{
_vehList deleteAt _forEachIndex;
}
}forEach _vehList;
_object setVariable ["ExAdVGVeh", _vehList, true];
_vehObj = _objId call ExileServer_object_vehicle_database_load;
_extDB2Message = ["loadVehFromVG", [_objId]] call ExileServer_util_extDB2_createMessage;
_extDB2Message call ExileServer_system_database_query_fireAndForget;
_pos = getPosATL _vehObj;
_pos set [2, (_pos select 2) + 0.1];
_vehObj setPosATL _pos;
_vehObj lock 0;
format[STR_ExAd_HACKING_NOTI_VG_SUCCESS, (getText(ConfigFile >> "CfgVehicles" >> typeOf _vehObj >> "displayName"))]
}else{
STR_ExAd_HACKING_NOTI_VG_NO_VEH
}
}else{
_object setVariable ["ExileIsLocked",0,true];
STR_ExAd_HACKING_NOTI_SAFE_SUCCESS
}
}else{
if(_laptop getVariable ["ExAd_HACK_INTERUPTED",false])then{
STR_ExAd_HACKING_NOTI_INTERUPTED
}else{
_destroy = true;
STR_ExAd_HACKING_NOTI_FAILED
}
};
if(_destroy)then{
_laptop setDamage 1;
}else{
private ["_holderPos","_holder"];
_holderPos = getPosATL _laptop;
deleteVehicle _laptop;
_holder = createVehicle ["GroundWeaponHolder", _holderPos, [], 0, "CAN_COLLIDE"];
_holder addMagazineCargoGlobal ["Exile_Item_Laptop", 1];
};
{
if(((getPosATL _laptop) distance (getPosATL _x)) < ExAd_HACKING_MAX_DISTANCE)then{
[_msg,0,0.6,2,0] remoteExec ["BIS_fnc_dynamicText", owner _x]
}
}forEach playableUnits;
ExAd_HACKS_IN_PROGRESS = ExAd_HACKS_IN_PROGRESS - 1;
{deleteMarker _x}forEach _markers;
};
true

View File

@ -0,0 +1,22 @@
/*
fn_stopHack.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.
*/
_object = objectFromNetId ([_this, 0, "",[""]] call BIS_fnc_param);
_object setVariable ["ExAd_HACK_INTERUPTED",true];
true

View File

@ -0,0 +1 @@
exad_hacking

View File

@ -0,0 +1,46 @@
/*
config.cpp
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.
*/
class CfgPatches {
class ExAd_Hacking {
requiredVersion = 0.1;
requiredAddons[] = {"ExAd_Core", "ExAd_VG"};
};
};
class CfgFunctions {
class ExAdServer {
class Hacking {
file = "exad_hacking\Functions";
class startHack {};
class stopHack {};
};
};
};
class CfgNetworkMessages
{
class startHack
{
parameters[] = {"STRING","STRING"};
};
class stopHack
{
parameters[] = {"STRING"};
};
};

View File

@ -22,7 +22,8 @@ _objVeh = objectFromNetId _objVehNetId;
_flagNetId = [_this,1,"",[""]] call BIS_fnc_param;
_flag = objectFromNetId _flagNetId;
_owner = owner _objVeh;
if!(_objVeh getVariable ["ExileIsPersistent", false])exitWith{(localize "STR_VG_STORE_NOTPERSISTENT") remoteExec ["hint", _owner]; false};
if!(_objVeh getVariable ["ExileIsPersistent", false])exitWith{[_requestFrom, "notificationRequest", ["Whoops", [STR_ExAd_VIRTUALGARAGE_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};
@ -55,7 +56,7 @@ if(_objVehId > -1 && _flagId > -1)then{
_flag setVariable ["ExAdVGVeh", _vehList, true];
if(ExAd_VG_SHOW_ADVHINT)then{
[["advancedHint", ["VGStore",[]]], _owner] call EXOServer_fnc_clientDispatch;
[["advancedHint", ["VGStore",[]]], _owner] call ExAdServer_fnc_clientDispatch;
};
};

View File

@ -3,6 +3,8 @@ compile !="call compile format[\"_messageParameters call ExAd_fnc_%1;\",_messa
createVehicle !="_parachuteObject = createVehicle [\"Steerable_Parachute_F\", getPosATL player, [], 0, \"CAN_COLLIDE\"]"
addAction !="ExAd_ACTION_PARACHUTE = player addaction [format"
drawLine3D !="drawLine3D [cursorTarget modelToWorld ["
playableUnits !="(({alive _x}count playableUnits) >= ExAd_HACKING_MIN_PLAYERS_ONLINE)"
Entities !="waitUntil {sleep 0.1; {player distance _x < 10 max (sizeOf typeOf _x)} count (player nearEntities [\"Helicopter_Base_F\", 20]) == 0}"
Units !="(({alive _x}count playableUnits) >= ExAd_HACKING_MIN_PLAYERS_ONLINE)"
disableCollisionWith !="_parachuteObject disableCollisionWith player"
remoteexec !="_this remoteExec [\"ExAdServer_fnc_clientRequest\",2]"

View File

@ -1,5 +1,19 @@
#<img src="logo.png" alt="ExAd" width="200" />
## Changelog:
### 160506 09:00 . v0.7.0
#### Fixed
* Small issue where VG didn't show an advancedHint when storing. (VirtualGarage)
#### Added
* New stringtable values (VirtualGarage)
* New customizable values (Core)
Must be implemented for Hacking to work proparly
* Implemented Hacking (Hacking)
* Added battleye Hacking exceptions
#### Deleted
## Changelog:
### 160505 01:40 . v0.6.1
#### Fixed

View File

@ -1,7 +1,7 @@
# Installation
Remember for this plugin to work you first need to install
* [Core](https://github.com/Bjanski/ExAd/blob/Core/docs/core/installation.md)
* [Core]((https://github.com/Bjanski/ExAd/blob/master/docs/core/installation.md)
## Client
@ -43,6 +43,8 @@ class Construction
};
};
```
* Modify - "mpmissions\exile.<MAP>\stringtable.xml" - add package="Grinding" and change to desirable notifications
* Now you can go into "mpmissions\exile.<MAP>\ExAdClient\Grinding\customize.sqf" and change to desirable settings.

1
docs/Hacking/examples.md Normal file
View File

@ -0,0 +1 @@
#Examples

View File

@ -0,0 +1,53 @@
# Installation
Remember for this plugin to work you first need to install
* [Core](https://github.com/Bjanski/ExAd/blob/master/docs/core/installation.md)
* [VirtualGarage](https://github.com/Bjanski/ExAd/blob/master/docs/VirtualGarage/installation.md)
## Client
* Place the folder "Hacking" into "mpmissions\exile.<MAP>\ExAdClient\"
* Goto "mpmissions\exile.<MAP>\ExAdClient\CfgFunctions" and uncomment
_From_
```cpp
//#include "Hacking\CfgFunctions.cpp"
```
_To_
```cpp
#include "Hacking\CfgFunctions.cpp"
```
* In "config.cpp" find ("CfgInteractionMenus") and add the actions you want used. If you don't want to use a specific action e.g. hacking safe just ignore adding it.
Available actions are
* HackVG -> ("CfgInteractionMenus" >> "Flag" >> "Actions" >> "HackVG")
* HackSafe -> ("CfgInteractionMenus" >> "Safe" >> "Actions" >> "HackSafe")
* StopHack -> ("CfgInteractionMenus" >> "Laptop" >> "Actions" >> "StopHack")
Example
```cpp
class Flag
{
targetType = 2;
target = "Exile_Construction_Flag_Static";
class Actions
{
class HackVG : ExileAbstractAction
{
title = "Hack Virtual Garage";
condition = "call ExAd_fnc_canHackVG";
action = "_this spawn ExAd_fnc_startHack";
};
};
};
```
* Modify - "mpmissions\exile.<MAP>\stringtable.xml" - add package="Hacking" and change to desirable notifications
* Now you can go into "mpmissions\exile.<MAP>\ExAdClient\Hacking\customize.sqf" and change to desirable settings.
## Server
* Copy over and pack "@ExileServer\addons\exad_hacking" into a pbo.

View File

@ -16,6 +16,8 @@ To
#include "HaloParachute\CfgFunctions.cpp"
```
* Modify - "mpmissions\exile.<MAP>\stringtable.xml" - add if missing package="HaloParachute" and change to desirable notifications
* Now you can go into "mpmissions\exile.<MAP>\ExAdClient\HaloParachute\customize.sqf" and change to desirable settings.
## Server

View File

@ -1,7 +1,7 @@
# Installation
Remember for this plugin to work you first need to install
* [Core](https://github.com/Bjanski/ExAd/blob/Core/docs/core/installation.md)
* [Core](https://github.com/Bjanski/ExAd/blob/master/docs/core/installation.md)
* [XM8 Apps Improved](https://github.com/vitalymind/XM8_apps_improved)
## Client
@ -26,6 +26,8 @@ _To_
```
* In "config.cpp" you can also add the ("CfgInteractionMenus" >> "Flag" >> "VG") class if you want to be able to fast load the app through your flag pole.
* Modify - "mpmissions\exile.<MAP>\stringtable.xml" - add if missing package="VirtualGarage" and change to desirable notifications
* Now you can go into "mpmissions\exile.<MAP>\ExAdClient\VirtualGarage\customize.sqf" and change to desirable settings.
### XM8 App

View File

@ -29,9 +29,13 @@ class CfgFunctions
};
```
* Copy over "Core" from "mpmissions\Exile.Altis\ExAdClient\"
* Copy over all files in "mpmissions\Exile.Altis\ExAdClient\"
These files includes the installation requirements for all other ExAd plugins
E.g in "mpmissions\Exile.Altis\ExAdClient\CfgFunctions.cpp" you can see that there are alot of lines commented out some of these need to be uncommented for plugins to work. Each plugin will describe more in detail which ones need to be adjusted.
E.g in "mpmissions\Exile.Altis\ExAdClient\CfgFunctions.cpp" you can see that there are alot of lines commented out some of these need to be uncommented for plugins to work. Each plugin will describe more in detail which ones need to be adjusted.
* Copy over "mpmissions\exile.<MAP>\stringtable.xml"
## Server
* Navigate to "@ExileServer\addons\"

View File

@ -1,17 +1,25 @@
#Core
## Changelog:
### 160430 09:20 . v0.5.2
### 160506 09:00 . v0.7.0
#### Fixed
* Description.ext was wrongly configured
#### Added
* New customizable values (Core)
#### Deleted
### 160430 09:20 . v0.5.2
#### Fixed
* Description.ext was wrongly configured
#### Added
#### Deleted
### 160429 14:04 . v0.5.1
### 160429 14:04 . v0.5.1
#### Fixed
* AdvHint trying to show EXO Logo
@ -21,6 +29,7 @@
#### Deleted
* EXO Logo.png
### 160425 12:00 . v0.5.0
#### Fixed

View File

@ -1,5 +1,9 @@
#Core
## Instructions:
### 160430 09:20 . v0.7.0
#### Update
* Replace "ExAdClient\Core\customize.sqf"
### 160430 09:20 . v0.5.1
#### Update
* Description.ext was wrongly configured fixed ("CfgRemoteExec" >> "Functions")

View File

@ -16,4 +16,12 @@
limitations under the License.
*/
ExAd_Debug = true; //True/False 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_Hint_Title_Color = "#E48A36"; //STRING - Hint message color
ExAd_Hint_Title_Size = 1.5; //SCALAR - Hint title size
ExAd_Hint_Title_Font = "TahomaB"; //STRING - Hint title font
ExAd_Hint_Msg_Color = "#ffffff"; //STRING - Hint message color
ExAd_Hint_Msg_Size = 1; //SCALAR - Hint message size
ExAd_Hint_Msg_Font = "TahomaB"; //STRING - Hint message font

View File

@ -17,4 +17,4 @@
*/
execVM "ExAdClient\Core\customize.sqf";
execVM "ExAdClient\Core\customize.sqf";

View File

@ -0,0 +1,8 @@
#Hacking
## Changelog:
### 160506 01:00 . v0.7.0
#### Fixed
#### Added
* Introduced **Hacking** to the ExAd package
#### Deleted

View File

@ -0,0 +1,28 @@
/*
CfgFunctions.cpp
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.
*/
class Hacking
{
file = "ExAdClient\Hacking\Functions";
class canHackSafe {};
class canHackVG {};
class startHack {};
class stopHack {};
class postInitHacking {file = "ExAdClient\Hacking\postInit.sqf"; postInit = 1;};
};

View File

@ -0,0 +1,19 @@
/*
fn_canHackSafe.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.
*/
(('Exile_Item_Laptop' in (magazines player)) && ((ExileClientInteractionObject getvariable ['ExileIsLocked',1]) isEqualTo -1) && (({alive _x}count playableUnits) >= ExAd_HACKING_MIN_PLAYERS_ONLINE))

View File

@ -0,0 +1,19 @@
/*
fn_canHackVG.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.
*/
(('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))

View File

@ -0,0 +1,21 @@
/*
fn_startHack.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.
*/
player playActionNow "SitDown";
["startHack", [netId (_this select 0), netId player]] call ExAd_fnc_serverDispatch;

View File

@ -0,0 +1,18 @@
/*
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.
*/
["stopHack", [netId (_this select 0)]] call ExAd_fnc_serverDispatch;

View File

@ -0,0 +1,5 @@
#Hacking
## Instructions:
### 160506 01:00 . v0.7.0
#### Full installation

View File

@ -0,0 +1,33 @@
/*
customize.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.
*/
ExAd_HACKING_MIN_PLAYERS_ONLINE = 30; //SCALAR - Minimun allowed players online to initalize a hack.
ExAd_HACKING_ALLOWED_HACKS = 1; //SCALAR - Simultaneous hacks allowed.
ExAd_HACKING_MAX_TIME = 1200; //SCALAR - Time to complete a hack
ExAd_HACKING_MAX_DISTANCE = 50; //SCALAR - Maximum distance away from the object being hack players for the hack to proceed.
ExAd_HACKING_TERRITORY_MAX = 3; //SCALAR - Maximun times a territory can get hacked before a new restart.
ExAd_HACKING_MARKER_COLOR = "ColorOrange"; //STRING - What color should the map marker have.
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.

View File

@ -0,0 +1,40 @@
/*
postInit.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.
*/
execVM "ExAdClient\Hacking\customize.sqf";
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!"};

View File

@ -26,5 +26,5 @@ class HaloParachute
class pullParachute {};
class showEject {};
class showParachute {};
class customize {file = "ExAdClient\HaloParachute\postInit.sqf"; postInit = 1;};
class postInitHP {file = "ExAdClient\HaloParachute\postInit.sqf"; postInit = 1;};
};

View File

@ -1,6 +1,12 @@
#VirtualGarage
## Changelog:
### 160506 09:00 . 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
#### Fixed
* Display null when entering Virtual Garage from Flag
@ -12,7 +18,5 @@
* VG App clear lists before onLoad and content being loaded.
### 160428 12:00 . v0.5.0
#### Fixed
#### Added
* Introduced **VirtualGarage** to the ExAd package
#### Deleted
* Introduced **VirtualGarage** to the ExAd package

View File

@ -24,5 +24,5 @@ class VirtualGarage
class fillVGList {};
class loadVGDetailView {};
class onBtnClickVG {};
class postInit {file = "ExAdClient\VirtualGarage\postInit.sqf"; postInit = 1;};
class postInitVG {file = "ExAdClient\VirtualGarage\postInit.sqf"; postInit = 1;};
};

View File

@ -1,6 +1,12 @@
#VirtualGarage
## Instructions:
### 160506 09:00 . v0.7.0
#### Update
* Copy over the new VirtualGarage Package in "stringtable.xml"
* Replace and pack "@ExileServer\addons\exad_vg"
### 160505 01:40 . v0.6.1
#### Update
* Modify config.cpp ("CfgInteractionMenus" >> "Flag")

View File

@ -17,6 +17,12 @@ class CfgInteractionMenus
condition = "(([_object, getPlayerUID player] call ExileClient_util_territory_getAccessLevel) select 0) >= ExAd_VG_ACCESS_LEVEL";
action = "[] spawn {[] call ExileClient_gui_xm8_show; UISleep 1; call XM8_VG_checkNearByFlags}";
};
class HackVG : ExileAbstractAction
{
title = "Hack Virtual Garage";
condition = "call ExAd_fnc_canHackVG";
action = "_this spawn ExAd_fnc_startHack";
};
};
};
class Construction
@ -41,4 +47,34 @@ class CfgInteractionMenus
};
};
};
class Safe
{
targetType = 2;
target = "Exile_Container_Safe";
class Actions
{
class HackSafe : ExileAbstractAction
{
title = "Hack Safe";
condition = "call ExAd_fnc_canHackSafe";
action = "_this spawn ExAd_fnc_startHack";
};
};
};
class Laptop
{
targetType = 2;
target = "Exile_Construction_Laptop_Static";
class Actions
{
class StopHack: ExileAbstractAction
{
title = "Interupt Hack";
condition = "(ExileClientInteractionObject getVariable ['ExAd_HACKING_IN_PROGRESS', false])";
action = "_this spawn ExAd_fnc_stopHack";
};
};
};
};

View File

@ -23,6 +23,9 @@
<Key ID="STR_ExAd_VIRTUALGARAGE_NOTI_FULL">
<Original>You garage is full!</Original>
</Key>
<Key ID="STR_ExAd_VIRTUALGARAGE_NOTI_NOT_PERSISTENT">
<Original>You can only store pincode protected vehicles into the garage!</Original>
</Key>
</Container>
</Package>
<Package name="Grinding">
@ -43,5 +46,43 @@
<Original>You've changed the look</Original>
</Key>
</Container>
<Package name="Hacking">
<Container name="Notifications">
<Key ID="STR_ExAd_HACKING_NOTI_MAX_TERRITORY_HACKS_REACHED">
<Original>Connection failed! Territory Wi-Fi is down!</Original>
</Key>
<Key ID="STR_ExAd_HACKING_NOTI_TERRITORY_ONE_HACK">
<Original>Wi-Fi occupied!!</Original>
</Key>
<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_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>
<Key ID="STR_ExAd_HACKING_NOTI_VG_NO_VEH">
<Original>Hack successful! No vehicles were stored in the Virtual Garage.</Original>
</Key>
<Key ID="STR_ExAd_HACKING_NOTI_SAFE_SUCCESS">
<Original>Hack successful! The safe is now unlocked.</Original>
</Key>
<Key ID="STR_ExAd_HACKING_NOTI_INTERUPTED">
<Original>Hack has been interupted</Original>
</Key>
<Key ID="STR_ExAd_HACKING_NOTI_FAILED">
<Original>Hack failed! Circuits overloaded!</Original>
</Key>
</Container>
<Container name="Hint">
<Key ID="STR_ExAd_HACKING_HINT_TITLE">
<Original>Hack Activity</Original>
</Key>
<Key ID="STR_ExAd_HACKING_HINT_HACK_START">
<Original>A brute force hack is detected on the grid!</Original>
</Key>
<Key ID="">
<Original></Original>
</Key>
</Container>
</Package>
</Project>