mirror of
https://github.com/Bjanski/ExAd.git
synced 2024-08-30 16:52:14 +00:00
Release v0.7.0
Implemented Hacking Ppdated Core and VG
This commit is contained in:
parent
6e7d916b2f
commit
916e91a4db
1
@ExileServer/addons/exad_hacking/$PREFIX$
Normal file
1
@ExileServer/addons/exad_hacking/$PREFIX$
Normal file
@ -0,0 +1 @@
|
||||
exad_hacking
|
150
@ExileServer/addons/exad_hacking/Functions/fn_startHack.sqf
Normal file
150
@ExileServer/addons/exad_hacking/Functions/fn_startHack.sqf
Normal 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
|
22
@ExileServer/addons/exad_hacking/Functions/fn_stopHack.sqf
Normal file
22
@ExileServer/addons/exad_hacking/Functions/fn_stopHack.sqf
Normal 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
|
1
@ExileServer/addons/exad_hacking/PboPrefix.txt
Normal file
1
@ExileServer/addons/exad_hacking/PboPrefix.txt
Normal file
@ -0,0 +1 @@
|
||||
exad_hacking
|
46
@ExileServer/addons/exad_hacking/config.cpp
Normal file
46
@ExileServer/addons/exad_hacking/config.cpp
Normal 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"};
|
||||
};
|
||||
};
|
@ -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;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -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]"
|
14
CHANGELOG.md
14
CHANGELOG.md
@ -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
|
||||
|
@ -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
1
docs/Hacking/examples.md
Normal file
@ -0,0 +1 @@
|
||||
#Examples
|
53
docs/Hacking/installation.md
Normal file
53
docs/Hacking/installation.md
Normal 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.
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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\"
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
@ -17,4 +17,4 @@
|
||||
|
||||
*/
|
||||
|
||||
execVM "ExAdClient\Core\customize.sqf";
|
||||
execVM "ExAdClient\Core\customize.sqf";
|
8
mpmissions/Exile.Altis/ExAdClient/Hacking/CHANGELOG.md
Normal file
8
mpmissions/Exile.Altis/ExAdClient/Hacking/CHANGELOG.md
Normal file
@ -0,0 +1,8 @@
|
||||
#Hacking
|
||||
## Changelog:
|
||||
|
||||
### 160506 01:00 . v0.7.0
|
||||
#### Fixed
|
||||
#### Added
|
||||
* Introduced **Hacking** to the ExAd package
|
||||
#### Deleted
|
28
mpmissions/Exile.Altis/ExAdClient/Hacking/CfgFunctions.cpp
Normal file
28
mpmissions/Exile.Altis/ExAdClient/Hacking/CfgFunctions.cpp
Normal 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;};
|
||||
};
|
@ -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))
|
@ -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))
|
@ -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;
|
@ -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;
|
5
mpmissions/Exile.Altis/ExAdClient/Hacking/UPDATE.md
Normal file
5
mpmissions/Exile.Altis/ExAdClient/Hacking/UPDATE.md
Normal file
@ -0,0 +1,5 @@
|
||||
#Hacking
|
||||
## Instructions:
|
||||
|
||||
### 160506 01:00 . v0.7.0
|
||||
#### Full installation
|
33
mpmissions/Exile.Altis/ExAdClient/Hacking/customize.sqf
Normal file
33
mpmissions/Exile.Altis/ExAdClient/Hacking/customize.sqf
Normal 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.
|
40
mpmissions/Exile.Altis/ExAdClient/Hacking/postInit.sqf
Normal file
40
mpmissions/Exile.Altis/ExAdClient/Hacking/postInit.sqf
Normal 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!"};
|
@ -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;};
|
||||
};
|
@ -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
|
||||
|
@ -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;};
|
||||
};
|
@ -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")
|
||||
|
@ -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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user