Script: Asservatenkammer System
Version: Jede (Sollte)
Schiwerigkeitsgrad: Mittel einfach
Funktionen:
~ Gebt euren Cops die möglichkeit die Sachen in einer Kammer zu lagern, die nächste Matrix wieder da sind! Außerdem kann jeder Bürger diese Ausrauben.
Willkommen in meinem zweiten Tutorial!
Das ganze wurde mit blackfisch Entwickelt, und für die Server (MountainValley RPG und SwitchYourDream) weiter entwickelt.
- Wir bearbeiten:
Life_Server
Mission
Datenbank
Macht bitte Backups!
Anleitung:
- Öffnet euren life_server\Functions Ordner und erstellt einen neuen Ordner Names Waffenkammer mit folgendem Inhalt (Siehe Anhang)
- Tragt in eure life_server\init.sqf unter [] spawnTON_fnc_initHouses;folgendes ein: [] spawn TON_fnc_spawnKammer;
- Tragt folgendes in eure life_server\config.cpp unter Systems aka TON_Systems ein:
class Waffenkammer
{
file = "\life_server\Functions\Waffenkammer";
class spawnKammer {};
class updateKammer {};
};
- Öffnet euer Database System und führt folgenden Befehl aus:
CREATE TABLE `policekammer` (
`inventory` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `policekammer` VALUES ('\"[[[],[]],[[],[]],[[],[]],[[],[]]]\"');
- Geht in eure Mission und in die fn_inventoryOpened.sqf und fügt folgenden Inhalt ein:
if((typeOf _container) in ["plp_ct_HighSecContRed"]) exitWith {
if!(playerSide == WEST) exitWith {
if (_container getVariable "life_closed") exitWith {hintSilent "Die Waffenkammer ist abgeschlossen!"; [] spawn {closeDialog 0;
waitUntil {!isNull (findDisplay 602)}; closeDialog 0;};};
};
};
- Öffnet eure fn_inventoryClosed.sqf und fügt folgenden Inhalt ein:
if((typeOf _container) in ["plp_ct_HighSecContRed"]) exitWith {
[_container] remoteExec ["TON_fnc_updateKammer",2];
};
- Dann geht ihr in euren core\functions Ordner und erstellt ein neues File Namens fn_robKammer.sqf mit neuem Inhalt: (Basiert auf das Tankstellen Ausraub System)
/*
*Author: Fl0rixn / blackfisch
*Version: 1.0
*For: https://native-network.net/ | sydrpg | mvrpg
*Description:
- Rob the Kammer
*/
private["_kammer","_cops"];
_kammer = [_this,0,ObjNull,[ObjNull]] call BIS_fnc_param;
_cops = (west countSide playableUnits);
if!(playerSide == CIVILIAN) exitWith {hintSilent "Dir fehlt passendes Werkzeug!";};
if(player distance _kammer > 5) exitWith {hintSilent "Geh hin, trau dich, die Kammer beißt nicht!";};
if(_cops < 2) exitWith{hintSilent "Die Waffenkammer ist zu fest abgeschlossen, warte auf mehr Polizisten!";};
if !(_container getVariable "life_closed") exitWith {hintSilent "Die Waffenkammer ist bereits offen!";};
hintSilent "Der Alarm wurde ausgelöst!";
[format["<t size='2' color='#EAF200'>• • • - - - • • •</t><br/><t size='2.5' color='#00B4F5'>Waffenkammer Alarm</t><br/><br/><br/><t color='#ff0000' size='1.5'>Standort: PolizeiHQ Lakeside</t><br/><t size='1.2'><br/>Der Notruf wurde auf der Karte makiert.</t><br/>"]] remoteExec ["life_fnc_broadcast",west];
//^^ Change the Position above! 'Standort: PolizeiHQ Lakeside'
disableSerialization;
5 cutRsc ["life_progress","PLAIN"];
_ui = uiNameSpace getVariable "life_progress";
_progress = _ui displayCtrl 38201;
_pgText = _ui displayCtrl 38202;
_pgText ctrlSetText format["Wird geknackt! (1%1)...","%"];
_progress progressSetPosition 0.01;
_cP = 0.01;
for "_i" from 0 to 1 step 0 do
{
uiSleep 0.75;
_cP = _cP + 0.01;
_progress progressSetPosition _cP;
_pgText ctrlSetText format["Wird geknackt! (%1%2)...",round(_cP * 100),"%"];
_pos = position _kammer;
_marker = createMarker ["Marker200", _pos];
"Marker200" setMarkerColor "ColorRed";
"Marker200" setMarkerText "!ACHTUNG! Waffenkammer sclägt Alarm !ACHTUNG!";
"Marker200" setMarkerType "mil_warning";
if(_cP >= 1) exitWith {};
if(player distance _kammer > 10.5) exitWith {hintSilent "Die Waffenkammer hat ihre Eisenwände hochgefahren! Du warst zu weit weg!"; 5 cutText ["","PLAIN"];};
if!(alive player) exitWith {5 cutText ["","PLAIN"];};
};
if!(alive player) exitWith {};
if(player distance _kammer > 10.5) exitWith {deleteMarker "Marker200"; hintSilent "Die Waffenkammer hat ihre Eisenwände hochgefahren! Du warst zu weit weg!"; 5 cutText ["","PLAIN"];};
5 cutText ["","PLAIN"];
deleteMarker "Marker200";
_kammer setVariable ["life_closed",false,true];
hintSilent "Die Waffenkammer ist nun offen!";
Alles anzeigen
- Und tragt die fn_robKammer unter Functions bei eurer functions.hpp ein! (class robKammer {};)
- Letzter Schritt um alles für euch anzupassen:
- Ändert den Classname plp_ct_HighSecContRed zu eurer Box die es werden soll in folgenden Files fn_inventoryOpen.sqf, fn_inventoryClosed.sqf und fn_spawnKammer.sqf im Life_Server
- Erstellt einen Marker wie z.B auch die Fahrzeugspawns oder Aufwachpunkte mit folgendem Namen "cop_weapon_lakeside", die Kammer passt sich dem Marker seine Position an!
- Und vorallem ändert meine Naricht bei der robKammer ab, weil dort keine Parameter verwendet werden, sondern nur die Standhafte Position!
Parameter für das Ausrauben: [_target] spawn syd_fnc_robKammer; | Target passend ersetzen z.B cursorTarget
Parameter für Cops zum reparieren: player switchMove "AinvPknlMstpSnonWnonDnon_medic_1"; player playMoveNow "AinvPknlMstpSnonWnonDnon_medic_1"; _target setVariable ["life_closed",true,true]; hintSilent "Waffenkammer wurde repariert"; | _target wieder anpassen.
Konnte jetzt keine eigene Action erstellen, weil ich alles über ACE³ mache xD Falls wer das macht, leg ich das hier noch mit Credit rein.
Das war's auch schon!
Solltet ihr einen Fehler entdecken/haben so schreibt doch was!
Lust auf mehr, so teilt es mir doch Privat mit, ich bin für Wünsche offen.
Ich bitte auch um Verbesserungsvorschläge oder Kritik, denn auch ich möchte mich verbessern.
Viel Spaß damit!
Mit freundlichen Grüßen,
Fl0rixn