Implemented Grinding

This commit is contained in:
Bjanski 2016-05-02 23:56:13 +02:00
parent 020b43c865
commit b86f73d767
13 changed files with 348 additions and 0 deletions

View File

@ -0,0 +1 @@
exad_grinding

View File

@ -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

View File

@ -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

View File

@ -0,0 +1 @@
exad_grinding

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_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"};
};
};

View File

@ -0,0 +1,10 @@
#VirtualGarage
## Changelog:
### 160502 23:15 . v0.6.0
#### Fixed
#### Added
* Grinding introduced
#### Deleted

View File

@ -0,0 +1,26 @@
/*
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 VirtualGarage
{
file = "ExAdClient\Grinding\Functions";
class grindLock {};
class restoreLock {};
class postInit {file = "ExAdClient\Grinding\postInit.sqf"; postInit = 1;};
};

View File

@ -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 ["EXO_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;
['Whoops', [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;
};
_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

View File

@ -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";
['Whoops', [STR_ExAd_GRINDING_NOTI_RESTORED]] call ExileClient_gui_notification_event_addNotification;
["restoreLock", [netId _object]] call ExAd_fnc_serverDispatch;
call ExileClient_gui_interactionMenu_unhook;
true

View File

@ -0,0 +1,5 @@
#VirtualGarage
## Instructions:
### 160502 23:15 . v0.6.0
#### Full installation

View File

@ -0,0 +1,23 @@
/*
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_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.

View File

@ -0,0 +1,30 @@
/*
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";
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"};

View File

@ -25,4 +25,23 @@
</Key>
</Container>
</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>