Hallo NN!
Ich habe es geschafft die Sirene und Blaulicht auf das Mausrad Menü zu legen, nachdem in meinem ersten Tutorial danach gefragt worden ist xD
Hiermit verbiete ich die Verbreitung meines Tutorials ohne mein Einverständnis und blablabla
Wichtig bei der Bearbeitung: Ihr müsst die Scripts unbedingt eurem Server anpassen!
Schritt 1:
Geht in eure Mission.Karte -> core -> Cop
Erstellt dort eine neue Datei mit folgendem Inhalt:
In diesem Fall heißt die Datei "fn_code3.sqf"
#include "..\..\script_macros.hpp"
/*
File: Code3.sqf
Author: Ammorosh
Description:
Siren + Sirenlights via Playeraction
Wichtig bei rückgänigmachung: fn_sirenlights.sqf setvariables,etc sind vertauscht worden!
*/
if(playerSide != west) exitWith {};
_code = _this select 3;
_vehicle = vehicle player;
switch(_code) do
{
//----------------
//Blaulicht + Sirene
//----------------
case "Code3":
{
//Überprüfungen
_codecheck = _vehicle getVariable["code",false]; //Läuft gerade schon ein anderer Code?
if(_codecheck isEqualTo "Code3") exitWith {}; //Code 3 kann nicht 2x aufgerufen werden
if(_codecheck isEqualTo "Code2") then { //Wenn Code 2, Blaulicht und Sirene AUS -> Wird kurz darauf wieder eingeschaltet
_vehicle setVariable["lights",false,true];
[_vehicle] call life_fnc_sirenLights;
_vehicle setVariable["siren",false,true];
[_vehicle] remoteExec ["life_fnc_copSiren",RCLIENT];
sleep 0.2;
};
_vehicle setVariable["code",_code,true]; //vehicle aktuellen Code zuweisen für spätere checks
// Blaulicht einschalten
_dcheck = _vehicle getVariable["lights",false];
If(_dcheck) exitWith {}; //muss aus irgendwelchen gründen doppelt gecheckt werden...
if (vehicle player != player && (typeOf vehicle player) in ["C_Offroad_01_F","B_MRAP_01_F","C_SUV_01_F","C_Hatchback_01_F","O_Heli_Light_02_unarmed_F","I_Heli_light_03_unarmed_F","C_Hatchback_01_sport_F","I_MRAP_03_F","B_Heli_Light_01_F","B_Heli_Transport_01_F","C_Van_01_box_F","B_Truck_01_mover_F","I_Truck_02_covered_F","I_Truck_02_box_F","O_Truck_03_repair_F","O_Truck_03_fuel_F","O_Heli_Transport_04_medevac_F"]) then {
_vehicle setVariable["lights",true,true];
[_vehicle] call life_fnc_sirenLights;
};
// Sirene einschalten
_vehicle setVariable ["siren",true,true];
[_vehicle] remoteExec ["life_fnc_copSiren",RCLIENT];
};
//----------------
//Blaulicht only
//----------------
case "Code2":
{
//Überprüfungen
_codecheck = _vehicle getVariable["code",false]; //Läuft gerade schon ein anderer Code?
if(_codecheck isEqualTo "Code2") exitWith {}; //Code 2 kann nicht 2x aufgerufen werden
if(_codecheck isEqualTo "Code3") then { //Wenn Code 3, Blaulicht und Sirene AUS -> Wird kurz darauf wieder eingeschaltet
_vehicle setVariable["lights",false,true];
[_vehicle] call life_fnc_sirenLights;
_vehicle setVariable["siren",false,true];
[_vehicle] remoteExec ["life_fnc_copSiren",RCLIENT];
sleep 0.2;
};
_vehicle setVariable["code",_code,true]; //vehicle aktuellen Code zuweisen für spätere checks
//Blaulicht einschalten
_dcheck = _vehicle getVariable["lights",false];
If(_dcheck) exitWith {}; //muss aus irgendwelchen gründen doppelt gecheckt werden...
if (vehicle player != player && (typeOf vehicle player) in ["C_Offroad_01_F","B_MRAP_01_F","C_SUV_01_F","C_Hatchback_01_F","O_Heli_Light_02_unarmed_F","I_Heli_light_03_unarmed_F","C_Hatchback_01_sport_F","I_MRAP_03_F","B_Heli_Light_01_F","B_Heli_Transport_01_F","C_Van_01_box_F","B_Truck_01_mover_F","I_Truck_02_covered_F","I_Truck_02_box_F","O_Truck_03_repair_F","O_Truck_03_fuel_F","O_Heli_Transport_04_medevac_F"]) then {
_vehicle setVariable["lights",true,true];
[vehicle player] call life_fnc_sirenLights;
};
};
//----------------
//Alles Aus
//----------------
case "Code1":
{
_vehicle setVariable["lights",false,true];
[_vehicle] call life_fnc_sirenLights;
_vehicle setVariable["siren",false,true];
[_vehicle] remoteExec ["life_fnc_copSiren",RCLIENT];
_vehicle setVariable ["code",_code,true]; // Code setzten für spätere checks
sleep 1;
};
//----------------
//Durchsage
//----------------
case "durchsage":
{
_speechCheck = _vehicle getVariable["speech",false];
if (_speechCheck) exitWith {};
_vehicle setVariable["speech",true,true];
[_vehicle] remoteExec ["life_fnc_copSiren3",RCLIENT];
sleep 7;
_vehicle setVariable["speech",false,true];
};
};
Alles anzeigen
Schritt 2:
Im selben Ordner öffnet ihr eure fn_sirenLights.sqf und ersetzt diese mit folgendem:
#include "..\..\script_macros.hpp"
/*
File: fn_sirenLights.sqf
Author: Bryan "Tonic" Boardwine
Description:
Lets play a game! Can you guess what it does? I have faith in you, if you can't
then you have failed me and therefor I lose all faith in humanity.. No pressure.
*/
private["_vehicle"];
_vehicle = param [0,ObjNull,[ObjNull]];
if (isNull _vehicle) exitWith {}; //Bad entry!
if (!(typeOf _vehicle in ["C_Offroad_01_F","B_MRAP_01_F","C_SUV_01_F","C_Hatchback_01_sport_F","B_Heli_Light_01_F","B_Heli_Transport_01_F","I_Heli_light_03_unarmed_F","O_Heli_Light_02_unarmed_F","I_MRAP_03_F","C_Hatchback_01_F","","",""])) exitWith {}; //Last chance check to prevent something from defying humanity and creating a monster.
_trueorfalse = _vehicle getVariable ["lights",FALSE];
if (_trueorfalse) then {
_vehicle setVariable ["lights",true,true]; //getauscht
[_vehicle,0.22] remoteExec ["life_fnc_copLights",RCLIENT];
titleText [localize "Blaulicht AN","PLAIN"];
} else {
_vehicle setVariable ["lights",false,true]; //getauscht
titleText [localize "Blaulicht AUS","PLAIN"];
};
Alles anzeigen
Schritt 3:
Öffnet eure setupActions.sqf und fügt dort folgendes bei WEST hinzu:
// Code1/Code2/Code3
life_actions = life_actions + [player addAction["<t color='#B91818'>Code 3</t>",life_fnc_code3,"Code3",1,false,true,"",'vehicle player != player']];
life_actions = life_actions + [player addAction["<t color='#F2E532'>Code 2</t>",life_fnc_code3,"Code2",1,false,true,"",'vehicle player != player']];
life_actions = life_actions + [player addAction["<t color='#0055FF'>Code 1</t>",life_fnc_code3,"Code1",1,false,true,"",'vehicle player != player']];
Schritt 4:
Die neu erstellt Datei in die Functions.hpp hinzufügen!
Fertig
Bonus! Das selbe nochmal für die Medics!
Schritt 1:
Geht in eure Mission.Karte -> core -> medical
Erstellt dort eine neue Datei mit folgendem Inhalt:
In diesem Fall heißt die Datei "fn_code3med.sqf"
#include "..\..\script_macros.hpp"
/*
File: Code3med.sqf
Author: Ammorosh
Description:
Siren + Sirenlights via Playeraction
Wichtig bei rückgänigmachung: fn_sirenlights.sqf setvariables sind vertauscht worden!
*/
if(playerSide != independent) exitWith {};
_code = _this select 3;
_vehicle = vehicle player;
switch(_code) do
{
//----------------
//Blaulicht + Sirene
//----------------
case "Code3":
{
if (vehicle player != player && (typeOf _vehicle) in ["O_Heli_Light_02_unarmed_F","O_Heli_Transport_04_medevac_F"]) exitWith {}; //Helis haben bei dem RD keine Sirene!
//Überprüfungen
_codecheck = _vehicle getVariable["code",false]; //Läuft gerade schon ein anderer Code?
if(_codecheck isEqualTo "Code3") exitWith {}; //Code 3 kann nicht 2x aufgerufen werden
if(_codecheck isEqualTo "Code2") then { //Wenn Code 2, Blaulicht und Sirene AUS -> Wird kurz darauf wieder eingeschaltet
_vehicle setVariable["lights",false,true];
[_vehicle] call life_fnc_medicSirenLights;
_vehicle setVariable["siren",false,true];
[_vehicle] remoteExec ["life_fnc_fireSiren",RCLIENT];
[_vehicle] remoteExec ["life_fnc_medicSiren",RCLIENT];
sleep 0.2;
};
_vehicle setVariable["code",_code,true]; //vehicle aktuellen Code zuweisen für spätere checks
// Blaulicht einschalten
_dcheck = _vehicle getVariable["lights",false];
If(_dcheck) exitWith {}; //muss aus irgendwelchen gründen doppelt gecheckt werden...
if (vehicle player != player && (typeOf vehicle player) in ["C_Offroad_01_F","B_MRAP_01_F","C_SUV_01_F","C_Hatchback_01_F","O_Heli_Light_02_unarmed_F","I_Heli_light_03_unarmed_F","C_Hatchback_01_sport_F","I_MRAP_03_F","B_Heli_Light_01_F","B_Heli_Transport_01_F","C_Van_01_box_F","B_Truck_01_mover_F","I_Truck_02_covered_F","I_Truck_02_box_F","O_Truck_03_repair_F","O_Truck_03_fuel_F","O_Heli_Transport_04_medevac_F"]) then {
_vehicle setVariable["lights",true,true];
[_vehicle] call life_fnc_medicSirenLights;
};
// Sirene einschalten
if (vehicle player != player && (typeOf _vehicle) in ["I_Truck_02_box_F","O_Truck_03_repair_F","O_Truck_03_fuel_F"]) then {
_vehicle setVariable ["siren",true,true];
[_vehicle] remoteExec ["life_fnc_fireSiren",RCLIENT];
};
if (vehicle player != player && (typeOf _vehicle) in ["C_Offroad_01_F","C_SUV_01_F","C_Hatchback_01_sport_F","C_Van_01_box_F","C_Hatchback_01_F"]) then {
_vehicle setVariable ["siren",true,true];
[_vehicle] remoteExec ["life_fnc_medicSiren",RCLIENT];
};
};
//----------------
//Blaulicht only
//----------------
case "Code2":
{
//Überprüfungen
_codecheck = _vehicle getVariable["code",false]; //Läuft gerade schon ein anderer Code?
if(_codecheck isEqualTo "Code2") exitWith {}; //Code 2 kann nicht 2x aufgerufen werden
if(_codecheck isEqualTo "Code3") then { //Wenn Code 3, Blaulicht und Sirene AUS -> Wird kurz darauf wieder eingeschaltet
_vehicle setVariable["lights",false,true];
[_vehicle] call life_fnc_medicSirenLights;
_vehicle setVariable["siren",false,true];
[_vehicle] remoteExec ["life_fnc_fireSiren",RCLIENT];
[_vehicle] remoteExec ["life_fnc_medicSiren",RCLIENT];
sleep 0.2;
};
_vehicle setVariable["code",_code,true]; //vehicle aktuellen Code zuweisen für spätere checks
//Blaulicht einschalten
_dcheck = _vehicle getVariable["lights",false];
If(_dcheck) exitWith {}; //muss aus irgendwelchen gründen doppelt gecheckt werden...
if (vehicle player != player && (typeOf vehicle player) in ["C_Offroad_01_F","B_MRAP_01_F","C_SUV_01_F","C_Hatchback_01_F","O_Heli_Light_02_unarmed_F","I_Heli_light_03_unarmed_F","C_Hatchback_01_sport_F","I_MRAP_03_F","B_Heli_Light_01_F","B_Heli_Transport_01_F","C_Van_01_box_F","B_Truck_01_mover_F","I_Truck_02_covered_F","I_Truck_02_box_F","O_Truck_03_repair_F","O_Truck_03_fuel_F","O_Heli_Transport_04_medevac_F"]) then {
_vehicle setVariable["lights",true,true];
[vehicle player] call life_fnc_medicSirenLights;
};
};
//----------------
//Alles Aus
//----------------
case "Code1":
{
_vehicle setVariable["lights",false,true];
[_vehicle] call life_fnc_medicSirenLights;
_vehicle setVariable["siren",false,true];
[_vehicle] remoteExec ["life_fnc_fireSiren",RCLIENT];
[_vehicle] remoteExec ["life_fnc_medicSiren",RCLIENT];
_vehicle setVariable ["code",_code,true]; // Code setzten für spätere checks
sleep 1;
};
};
Alles anzeigen
Schritt 2:
Im selben Ordner öffnet ihr eure fn_medicSirenLights.sqf und ersetzt diese mit folgendem:
#include "..\..\script_macros.hpp"
/*
File: fn_sirenLights.sqf
Author: Bryan "Tonic" Boardwine
Description:
Lets play a game! Can you guess what it does? I have faith in you, if you can't
then you have failed me and therefor I lose all faith in humanity.. No pressure.
*/
_vehicle = param [0,ObjNull,[ObjNull]];
if (isNull _vehicle) exitWith {}; //Bad entry!
if (!(typeOf _vehicle in ["C_Offroad_01_F","C_SUV_01_F","C_Hatchback_01_sport_F","C_Hatchback_01_F","I_Truck_02_box_F","O_Truck_03_repair_F","O_Truck_03_fuel_F","C_Van_01_box_F","O_Heli_Light_02_unarmed_F","O_Heli_Transport_04_medevac_F"])) exitWith {}; //Last chance check to prevent something from defying humanity and creating a monster.
_trueorfalse = _vehicle getVariable ["lights",false];
if (_trueorfalse) then {
_vehicle setVariable ["lights",true,true]; //getauscht
[_vehicle,0.22] remoteExec ["life_fnc_medicLights",RCLIENT];
titleText [localize "Blaulicht AN","PLAIN"];
} else {
_vehicle setVariable ["lights",false,true]; //getauscht
titleText [localize "Blaulicht AUS","PLAIN"];
};
Alles anzeigen
Schritt 3:
Öffnet eure setupActions.sqf und fügt dort folgendes bei Independent hinzu:
//Code1/code2/code3
life_actions = life_actions + [player addAction["<t color='#B91818'>Code 3</t>",life_fnc_code3med,"Code3",1,false,true,"",'vehicle player != player']];
life_actions = life_actions + [player addAction["<t color='#F2E532'>Code 2</t>",life_fnc_code3med,"Code2",1,false,true,"",'vehicle player != player']];
life_actions = life_actions + [player addAction["<t color='#0055FF'>Code 1</t>",life_fnc_code3med,"Code1",1,false,true,"",'vehicle player != player']];
Schritt 4:
Fügt die neu erstellte Datei in die functions.hpp ein!
So! Jetzt sind wir aber fertig!
Ich hoffe ich konnte euch helfen! Bei fragen und Fehlern gerne Melden!