mirror of
https://github.com/Bjanski/ExAd.git
synced 2024-08-30 16:52:14 +00:00
Completed Grinding implementation
This commit is contained in:
parent
b86f73d767
commit
c848fc4cd2
@ -2,6 +2,7 @@ eventHandler !="ExAd_ACTION_PARACHUTE_DETACH = (findDisplay 46) displayAddEvent
|
||||
compile !="call compile format[\"_messageParameters call ExAd_fnc_%1;\",_messageName]"
|
||||
createVehicle !="_parachuteObject = createVehicle [\"Steerable_Parachute_F\", getPosATL player, [], 0, \"CAN_COLLIDE\"]"
|
||||
addAction !="ExAd_ACTION_PARACHUTE = player addaction [format"
|
||||
drawLine3D !="drawLine3D [cursorTarget modelToWorld ["
|
||||
Entities !="waitUntil {sleep 0.1; {player distance _x < 10 max (sizeOf typeOf _x)} count (player nearEntities [\"Helicopter_Base_F\", 20]) == 0}"
|
||||
disableCollisionWith !="_parachuteObject disableCollisionWith player"
|
||||
remoteexec !="_this remoteExec [\"ExAdServer_fnc_clientRequest\",2]"
|
1
docs/Grinding/examples.md
Normal file
1
docs/Grinding/examples.md
Normal file
@ -0,0 +1 @@
|
||||
#Examples
|
51
docs/Grinding/installation.md
Normal file
51
docs/Grinding/installation.md
Normal file
@ -0,0 +1,51 @@
|
||||
# Installation
|
||||
|
||||
Remember for this plugin to work you first need to install
|
||||
* [Core](https://github.com/Bjanski/ExAd/blob/Core/docs/core/installation.md)
|
||||
|
||||
## Client
|
||||
|
||||
* Place the folder "Grinding" into "mpmissions\exile.<MAP>\ExAdClient\"
|
||||
|
||||
* Goto "mpmissions\exile.<MAP>\ExAdClient\CfgFunctions" and uncomment
|
||||
|
||||
_From_
|
||||
```cpp
|
||||
//#include "Grinding\CfgFunctions.cpp"
|
||||
```
|
||||
_To_
|
||||
```cpp
|
||||
#include "Grinding\CfgFunctions.cpp"
|
||||
```
|
||||
|
||||
* In "config.cpp" find "CfgInteractionMenus" and add to "Construction".
|
||||
```cpp
|
||||
class Construction
|
||||
{
|
||||
targetType = 2;
|
||||
target = "Exile_Construction_Abstract_Static";
|
||||
|
||||
class Actions
|
||||
{
|
||||
class Grind : ExileAbstractAction
|
||||
{
|
||||
title = "Grind Lock";
|
||||
condition = "call ExAd_fnc_canGrindLock";
|
||||
action = "_this spawn ExAd_fnc_grindLock";
|
||||
};
|
||||
|
||||
class RestoreLock : ExileAbstractAction
|
||||
{
|
||||
title = "Restore Lock";
|
||||
condition = "_object call ExAd_fnc_canRestoreLock";
|
||||
action = "_this spawn ExAd_fnc_restoreLock";
|
||||
};
|
||||
};
|
||||
};
|
||||
```
|
||||
|
||||
* Now you can go into "mpmissions\exile.<MAP>\ExAdClient\Grinding\customize.sqf" and change to desirable settings.
|
||||
|
||||
## Server
|
||||
|
||||
* Copy over and pack "@ExileServer\addons\exad_grinding" into a pbo.
|
@ -5,7 +5,7 @@
|
||||
## Client
|
||||
|
||||
* Place the folder "HaloParachute" into "mpmissions\exile.<MAP>\ExAd\"
|
||||
* Goto "mpmissions\exile.<MAP>\ExAd\CfgFunctions" and uncomment
|
||||
* Goto "mpmissions\exile.<MAP>\ExAdClient\CfgFunctions" and uncomment
|
||||
|
||||
From
|
||||
```cpp
|
||||
|
@ -8,7 +8,7 @@ Remember for this plugin to work you first need to install
|
||||
|
||||
* Place the folder "VirtualGarage" into "mpmissions\exile.<MAP>\ExAdClient\"
|
||||
|
||||
* Goto "mpmissions\exile.<MAP>\ExAd\CfgFunctions" and uncomment
|
||||
* Goto "mpmissions\exile.<MAP>\ExAdClient\CfgFunctions" and uncomment
|
||||
|
||||
_From_
|
||||
```cpp
|
||||
@ -22,7 +22,7 @@ _To_
|
||||
|
||||
* In "config.cpp" in the mission root folder, find class CfgExileCustomCode and add the following row
|
||||
```js
|
||||
ExileServer_system_territory_database_load = "EXOClient\CustomCode\ExileServer_system_territory_database_load.sqf";
|
||||
ExileServer_system_territory_database_load = "ExAdClient\CustomCode\ExileServer_system_territory_database_load.sqf";
|
||||
```
|
||||
* 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.
|
||||
|
||||
|
@ -6,5 +6,6 @@
|
||||
|
||||
#### Added
|
||||
* Grinding introduced
|
||||
* Grinding battleye scripts
|
||||
|
||||
#### Deleted
|
||||
|
@ -17,10 +17,12 @@
|
||||
*/
|
||||
|
||||
|
||||
class VirtualGarage
|
||||
class Grinding
|
||||
{
|
||||
file = "ExAdClient\Grinding\Functions";
|
||||
class canGrindLock {};
|
||||
class canRestoreLock {};
|
||||
class grindLock {};
|
||||
class restoreLock {};
|
||||
class postInit {file = "ExAdClient\Grinding\postInit.sqf"; postInit = 1;};
|
||||
class postInitGrinding {file = "ExAdClient\Grinding\postInit.sqf"; postInit = 1;};
|
||||
};
|
@ -0,0 +1,19 @@
|
||||
/*
|
||||
fn_canGrindLock.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.
|
||||
*/
|
||||
|
||||
(((ExileClientInteractionObject getvariable ['ExileIsLocked',1]) isEqualTo -1) && !ExAd_GRINDING && ('Exile_Item_Grinder' in (magazines player)))
|
@ -0,0 +1,19 @@
|
||||
/*
|
||||
fn_canRestoreLock.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_Codelock' in (magazines player)) && (ExileClientInteractionObject getVariable ['ExAd_Grinding_progress', 0] > 0))
|
@ -30,7 +30,7 @@ ExAd_DRAW3D_HANDLER = addMissionEventHandler ["Draw3D", {
|
||||
private ["_object","_progress"];
|
||||
|
||||
_object = if(isNil "ExAd_GRINDING_OBJECT")then{cursorTarget}else{ExAd_GRINDING_OBJECT};
|
||||
_progress = 1 min ((_object getVariable ["EXO_Grinding_progress", 1]) / ExAd_GRINDING_OBJECT_MAX);
|
||||
_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]];
|
||||
@ -69,14 +69,14 @@ while{(ExAd_GRINDING_OBJECT == cursorTarget) && ExAd_GRINDING}do{
|
||||
player removeItem "Exile_Magazine_Battery";
|
||||
|
||||
["grindProgress", [netId ExAd_GRINDING_OBJECT]] call ExAd_fnc_serverDispatch;
|
||||
['Whoops', [STR_ExAd_GRINDING_NOTI_PROGRESS]] call ExileClient_gui_notification_event_addNotification;
|
||||
['Success', [STR_ExAd_GRINDING_NOTI_PROGRESS]] call ExileClient_gui_notification_event_addNotification;
|
||||
|
||||
player playActionNow "medicStart";
|
||||
};
|
||||
|
||||
if(ExAd_GRINDING_OBJECT getVariable ["ExAd_Grinding_progress", 0] > ExAd_GRINDING_OBJECT_MAX)exitWith{
|
||||
UISleep 2;
|
||||
['Whoops', [STR_ExAd_GRINDING_NOTI_FINISHED]] call ExileClient_gui_notification_event_addNotification;
|
||||
['Success', [STR_ExAd_GRINDING_NOTI_FINISHED]] call ExileClient_gui_notification_event_addNotification;
|
||||
};
|
||||
_ticker = _ticker + 1;
|
||||
};
|
||||
|
@ -24,7 +24,7 @@ player playActionNow "medic";
|
||||
|
||||
UISleep 5;
|
||||
player removeItem "Exile_Item_Codelock";
|
||||
['Whoops', [STR_ExAd_GRINDING_NOTI_RESTORED]] call ExileClient_gui_notification_event_addNotification;
|
||||
['Success', [STR_ExAd_GRINDING_NOTI_RESTORED]] call ExileClient_gui_notification_event_addNotification;
|
||||
|
||||
["restoreLock", [netId _object]] call ExAd_fnc_serverDispatch;
|
||||
|
||||
|
@ -16,8 +16,12 @@
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
ExAd_GRINDING_PROGRESS_INTERVALL = 60; //SCALAR - Grinding, interval time measured in seconds.
|
||||
|
||||
ExAd_GRINDING_PROGRESS = 30; //SCALAR - Damage each finished interval will take from the code lock.
|
||||
|
||||
ExAd_GRINDING_OBJECT_MAX = 900; //SCALAR - Code lock sustainability.
|
||||
|
||||
ExAd_GRINDING_PROGRESS_INTERVALL = 60; //SCALAR - Damage each finished interval will take from the code lock.
|
||||
|
||||
ExAd_GRINDING_PROGRESS = 60; //SCALAR - Time each interval will take measured in seconds.
|
||||
/*
|
||||
The default values above means that a full succesful grind will take (900 / 30) * 60 = 1800 = 20 minutes
|
||||
*/
|
@ -19,6 +19,8 @@
|
||||
|
||||
execVM "ExAdClient\Grinding\customize.sqf";
|
||||
|
||||
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_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."};
|
||||
|
@ -19,4 +19,26 @@ class CfgInteractionMenus
|
||||
};
|
||||
};
|
||||
};
|
||||
class Construction
|
||||
{
|
||||
targetType = 2;
|
||||
target = "Exile_Construction_Abstract_Static";
|
||||
|
||||
class Actions
|
||||
{
|
||||
class Grind : ExileAbstractAction
|
||||
{
|
||||
title = "Grind Lock";
|
||||
condition = "call ExAd_fnc_canGrindLock";
|
||||
action = "_this spawn ExAd_fnc_grindLock";
|
||||
};
|
||||
|
||||
class RestoreLock : ExileAbstractAction
|
||||
{
|
||||
title = "Restore Lock";
|
||||
condition = "_object call ExAd_fnc_canRestoreLock";
|
||||
action = "_this spawn ExAd_fnc_restoreLock";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
Loading…
Reference in New Issue
Block a user