mirror of
https://github.com/Bjanski/ExAd.git
synced 2024-08-30 16:52:14 +00:00
commit
33445d4b1b
1
@ExileServer/addons/exad_grinding/$PREFIX$
Normal file
1
@ExileServer/addons/exad_grinding/$PREFIX$
Normal file
@ -0,0 +1 @@
|
|||||||
|
exad_grinding
|
@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
fn_grindProgress.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","_databaseID"];
|
||||||
|
|
||||||
|
_object = objectFromNetId ([_this, 0, "",[""]] call BIS_fnc_param);
|
||||||
|
|
||||||
|
if(isNull _object)exitWith{false};
|
||||||
|
|
||||||
|
if((_object getVariable ["ExAd_Grinding_progress", 0]) >= ExAd_GRINDING_OBJECT_MAX)then{
|
||||||
|
_object setVariable ["ExileAccessCode", nil];
|
||||||
|
_object setVariable ["ExileIsLocked", nil, true];
|
||||||
|
|
||||||
|
_databaseID = _object getVariable ["ExileDatabaseID",0];
|
||||||
|
format ["addDoorLock:%1:%2","000000",_databaseID] call ExileServer_system_database_query_fireAndForget;
|
||||||
|
};
|
||||||
|
|
||||||
|
_object setVariable ["ExAd_Grinding_progress", (_object getVariable ["ExAd_Grinding_progress", 0]) + ExAd_GRINDING_PROGRESS, true];
|
||||||
|
|
||||||
|
true
|
@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
fn_restoreLock.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","_databaseID"];
|
||||||
|
|
||||||
|
_object = objectFromNetId ([_this, 0, "",[""]] call BIS_fnc_param);
|
||||||
|
|
||||||
|
if(isNull _object)exitWith{false};
|
||||||
|
|
||||||
|
_object setVariable ["ExAd_Grinding_progress", 0, true];
|
||||||
|
|
||||||
|
true
|
1
@ExileServer/addons/exad_grinding/PboPrefix.txt
Normal file
1
@ExileServer/addons/exad_grinding/PboPrefix.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
exad_grinding
|
46
@ExileServer/addons/exad_grinding/config.cpp
Normal file
46
@ExileServer/addons/exad_grinding/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_Grinding {
|
||||||
|
requiredVersion = 0.1;
|
||||||
|
requiredAddons[] = {"ExAd_Core"};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class CfgFunctions {
|
||||||
|
class ExAdServer {
|
||||||
|
class Grinding {
|
||||||
|
file = "exad_grinding\Functions";
|
||||||
|
class grindProgress {};
|
||||||
|
class restoreLock {};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class CfgNetworkMessages
|
||||||
|
{
|
||||||
|
class grindProgress
|
||||||
|
{
|
||||||
|
parameters[] = {"STRING"};
|
||||||
|
};
|
||||||
|
class restoreLock
|
||||||
|
{
|
||||||
|
parameters[] = {"STRING"};
|
||||||
|
};
|
||||||
|
};
|
@ -2,6 +2,7 @@ eventHandler !="ExAd_ACTION_PARACHUTE_DETACH = (findDisplay 46) displayAddEvent
|
|||||||
compile !="call compile format[\"_messageParameters call ExAd_fnc_%1;\",_messageName]"
|
compile !="call compile format[\"_messageParameters call ExAd_fnc_%1;\",_messageName]"
|
||||||
createVehicle !="_parachuteObject = createVehicle [\"Steerable_Parachute_F\", getPosATL player, [], 0, \"CAN_COLLIDE\"]"
|
createVehicle !="_parachuteObject = createVehicle [\"Steerable_Parachute_F\", getPosATL player, [], 0, \"CAN_COLLIDE\"]"
|
||||||
addAction !="ExAd_ACTION_PARACHUTE = player addaction [format"
|
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}"
|
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"
|
disableCollisionWith !="_parachuteObject disableCollisionWith player"
|
||||||
remoteexec !="_this remoteExec [\"ExAdServer_fnc_clientRequest\",2]"
|
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
|
## Client
|
||||||
|
|
||||||
* Place the folder "HaloParachute" into "mpmissions\exile.<MAP>\ExAd\"
|
* 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
|
From
|
||||||
```cpp
|
```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\"
|
* 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_
|
_From_
|
||||||
```cpp
|
```cpp
|
||||||
@ -22,7 +22,7 @@ _To_
|
|||||||
|
|
||||||
* In "config.cpp" in the mission root folder, find class CfgExileCustomCode and add the following row
|
* In "config.cpp" in the mission root folder, find class CfgExileCustomCode and add the following row
|
||||||
```js
|
```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.
|
* 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.
|
||||||
|
|
||||||
|
11
mpmissions/Exile.Altis/ExAdClient/Grinding/CHANGELOG.md
Normal file
11
mpmissions/Exile.Altis/ExAdClient/Grinding/CHANGELOG.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#VirtualGarage
|
||||||
|
## Changelog:
|
||||||
|
|
||||||
|
### 160502 23:15 . v0.6.0
|
||||||
|
#### Fixed
|
||||||
|
|
||||||
|
#### Added
|
||||||
|
* Grinding introduced
|
||||||
|
* Grinding battleye scripts
|
||||||
|
|
||||||
|
#### Deleted
|
28
mpmissions/Exile.Altis/ExAdClient/Grinding/CfgFunctions.cpp
Normal file
28
mpmissions/Exile.Altis/ExAdClient/Grinding/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 Grinding
|
||||||
|
{
|
||||||
|
file = "ExAdClient\Grinding\Functions";
|
||||||
|
class canGrindLock {};
|
||||||
|
class canRestoreLock {};
|
||||||
|
class grindLock {};
|
||||||
|
class restoreLock {};
|
||||||
|
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))
|
@ -0,0 +1,92 @@
|
|||||||
|
/*
|
||||||
|
fn_grindLock.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 ["_soundSrc","_ticker"];
|
||||||
|
|
||||||
|
if(vehicle player != player)exitWith{false};
|
||||||
|
|
||||||
|
ExAd_GRINDING_OBJECT = _this select 0;
|
||||||
|
ExAd_GRINDING = true;
|
||||||
|
call ExileClient_gui_interactionMenu_unhook;
|
||||||
|
_soundSrc = createSoundSource ["Sound_Factory10", position ExAd_GRINDING_OBJECT, [], 0];
|
||||||
|
player playActionNow "medicStart";
|
||||||
|
|
||||||
|
|
||||||
|
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 ["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, 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]];
|
||||||
|
|
||||||
|
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, 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]];
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
|
||||||
|
_ticker = 1;
|
||||||
|
while{(ExAd_GRINDING_OBJECT == cursorTarget) && ExAd_GRINDING}do{
|
||||||
|
UISleep 1;
|
||||||
|
if(random[0,50,100] < 1)exitWith{
|
||||||
|
player removeItem "Exile_Item_Grinder";
|
||||||
|
['Whoops', [STR_ExAd_GRINDING_NOTI_BROKE]] call ExileClient_gui_notification_event_addNotification;
|
||||||
|
false
|
||||||
|
};
|
||||||
|
|
||||||
|
if!("Exile_Magazine_Battery" in (magazines player))exitWith{
|
||||||
|
['Whoops', [STR_ExAd_GRINDING_NOTI_EMPTY_BAT]] call ExileClient_gui_notification_event_addNotification;
|
||||||
|
false
|
||||||
|
};
|
||||||
|
|
||||||
|
if((_ticker % ExAd_GRINDING_PROGRESS_INTERVALL) == 0)then{
|
||||||
|
player removeItem "Exile_Magazine_Battery";
|
||||||
|
|
||||||
|
["grindProgress", [netId ExAd_GRINDING_OBJECT]] call ExAd_fnc_serverDispatch;
|
||||||
|
['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;
|
||||||
|
['Success', [STR_ExAd_GRINDING_NOTI_FINISHED]] call ExileClient_gui_notification_event_addNotification;
|
||||||
|
};
|
||||||
|
_ticker = _ticker + 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
deleteVehicle _soundSrc;
|
||||||
|
player playActionNow "medicStop";
|
||||||
|
removeMissionEventHandler ["Draw3D",ExAd_DRAW3D_HANDLER];
|
||||||
|
|
||||||
|
ExAd_GRINDING_OBJECT = nil;
|
||||||
|
ExAd_GRINDING = false;
|
||||||
|
call ExileClient_gui_interactionMenu_unhook;
|
||||||
|
|
||||||
|
true
|
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
fn_restoreLock.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["_object"];
|
||||||
|
|
||||||
|
if(vehicle player != player)exitWith{false};
|
||||||
|
|
||||||
|
call ExileClient_gui_interactionMenu_unhook;
|
||||||
|
player playActionNow "medic";
|
||||||
|
|
||||||
|
UISleep 5;
|
||||||
|
player removeItem "Exile_Item_Codelock";
|
||||||
|
['Success', [STR_ExAd_GRINDING_NOTI_RESTORED]] call ExileClient_gui_notification_event_addNotification;
|
||||||
|
|
||||||
|
["restoreLock", [netId _object]] call ExAd_fnc_serverDispatch;
|
||||||
|
|
||||||
|
call ExileClient_gui_interactionMenu_unhook;
|
||||||
|
|
||||||
|
true
|
5
mpmissions/Exile.Altis/ExAdClient/Grinding/UPDATE.md
Normal file
5
mpmissions/Exile.Altis/ExAdClient/Grinding/UPDATE.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#VirtualGarage
|
||||||
|
## Instructions:
|
||||||
|
|
||||||
|
### 160502 23:15 . v0.6.0
|
||||||
|
#### Full installation
|
27
mpmissions/Exile.Altis/ExAdClient/Grinding/customize.sqf
Normal file
27
mpmissions/Exile.Altis/ExAdClient/Grinding/customize.sqf
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
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_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.
|
||||||
|
|
||||||
|
/*
|
||||||
|
The default values above means that a full succesful grind will take (900 / 30) * 60 = 1800 = 20 minutes
|
||||||
|
*/
|
32
mpmissions/Exile.Altis/ExAdClient/Grinding/postInit.sqf
Normal file
32
mpmissions/Exile.Altis/ExAdClient/Grinding/postInit.sqf
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
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\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."};
|
||||||
|
|
||||||
|
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"};
|
@ -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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
@ -25,4 +25,23 @@
|
|||||||
</Key>
|
</Key>
|
||||||
</Container>
|
</Container>
|
||||||
</Package>
|
</Package>
|
||||||
|
<Package name="Grinding">
|
||||||
|
<Container name="Notifications">
|
||||||
|
<Key ID="STR_ExAd_GRINDING_NOTI_BROKE">
|
||||||
|
<Original>Your grinder broke, get a new one before you can continue.</Original>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ExAd_GRINDING_NOTI_EMPTY_BAT">
|
||||||
|
<Original>Find some batteries to get the grinder to work.</Original>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ExAd_GRINDING_NOTI_PROGRESS">
|
||||||
|
<Original>I think I'm getting through.</Original>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ExAd_GRINDING_NOTI_FINISHED">
|
||||||
|
<Original>You have broken the code lock.</Original>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ExAd_GRINDING_NOTI_RESTORED">
|
||||||
|
<Original>You've changed the look</Original>
|
||||||
|
</Key>
|
||||||
|
</Container>
|
||||||
|
</Package>
|
||||||
</Project>
|
</Project>
|
||||||
|
Loading…
Reference in New Issue
Block a user