- Offizieller Beitrag
Das Urheberrecht dieses Beitrags liegt bei nic_noc, am 5. Aug 2014!
Zitat von nic_nocAlles anzeigenHallo Leute,
heute möchte ich ein kleines Tutorial darüber machen, wie ihr einen Alkohol- und Drogentester einfügt.
Dieser testet bei Civs, ob diese in der letzten halben Stunde (Wert ist natürlich veränderbar) Drogen genommen haben oder
welchen Promillewert sie besitzen.Voraussetzung hierfür sind schon vorhander Alkohol den man zu sich nehmen kann,
sowie/oder Drogen, welche man konsumieren kann.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Dateien die bearbeitet/erstellt werden müssen: (Farbe blau = bearbeiten; Farbe grün = neu erstellen)
1 MISSION/core/cop/fn_alkoholdrugtester.sqf
2 MISSION/core/pmenu/fn_useItem.sqf
3 MISSION/core/cop/fn_copInteractionMenu.sqf
4 MISSION/dialog/pInteraction.h
5 MISSION/Functions.h
6 MISSION/core/configuration.sqf
7 stringtable.xml
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------1. Wir erstellen die Datei fn_alkoholdrugtester.sqf im Ordner cop und fügen folgenden Inhalt ein:
Spoiler anzeigen
/*file:fn_alkoholdrugtester author:[midgetgrimm] edited by nic_noc for testing drugusing on civs*/
private["_cop","_drinky","_drugy"];
_cop = [_this,0,ObjNull,[ObjNull]] call BIS_fnc_param;
if(isNull _cop) exitWith {};
//life_drink und life_drug muessen spaeter noch in configuration.sqf eingefügt werden
_drinky = life_drink;
_drugy = life_drug;
//Den Wert > 0.4 kann man natuerlich aendern
if(_drinky > 0.4) then {
[[1,format["Alkoholtest %1 \n\n Promille: %2 \n\n Nicht im legalen Bereich! ",name player,[_drinky] call life_fnc_numberText]],"life_fnc_broadcast",_cop,false] spawn life_fnc_MP;
} else {
[[1,format["Alkoholtest %1 \n\n Promille: %2 \n\n Im legalen Bereich! ",name player,[_drinky] call life_fnc_numberText]],"life_fnc_broadcast",_cop,false] spawn life_fnc_MP;
};
//Beide Tests werden nacheinander (5 Sekunden unterschied) angezeigt - man testet also quasi beides in einem
sleep 5;
//Wenn > 0 dann hat der Spieler irgendwas genommen - also ist es dann ein positives Ergebnis
if(_drugy > 0) then {
[[1,format["Drogentest %1 \n\n Ergebnis: Positiv \n\n Der Spieler steht unter Drogeneinfluss! ",name player]],"life_fnc_broadcast",_cop,false] spawn life_fnc_MP;
} else {
[[1,format["Drogentest %1 \n\n Ergebnis: Negativ \n\n Der Spieler ist clean! ",name player]],"life_fnc_broadcast",_cop,false] spawn life_fnc_MP;
};
2. Wir öffnen die Datei fn_useitem.sqf und fuegen bei dem Punkt wo man Alkohol/Drogen zu sich nehmen kann folgendes hinzu: (Ich nehme mal das Beispiel Bier - sofern ih halt Bier habt)Spoiler anzeigen
case (_item =="bottledbeer"):
{
if(playerSide in [west,independent]) exitWith {hint localize "STR_MISC_WestIndNoNo";};
if((player getVariable ["inDrink",FALSE])) exitWith {hint localize "STR_MISC_AlreadyDrinking";};
if(([false,_item,1] call life_fnc_handleInv)) then
{
if(isNil "life_drink") then {life_drink = 0;};
//Wenn ihr das Bier trinkt, dann habe ihr also 0.15 Promille
life_drink = life_drink + 0.15;
if (life_drink < 0.2) exitWith {};
[] spawn life_fnc_drinkbeer;
};
};
3. Wir öffnen die Datei fn_copInteractionMenu.sqf und ergänzen folgendes/tragen folgendes ein:
Spoiler anzeigen
//Oben in der Datei den neuen Button hinzufuegen
#define Btn9 37458//_btn9 zum Array hinzufuegen
private["_display","_curTarget","_Btn1","_Btn2","_Btn3","_Btn4","_Btn5","_Btn6","_Btn7","_Btn8","_Btn9"];//displayCtrl fuer button 9
_Btn9 = _display displayCtrl Btn9;//Den eigentlichen Alkohol- und Drogentest-Button hinzufuegen
_Btn9 ctrlSetText localize "STR_pInAct_Breathalyzer";
_Btn9 buttonSetAction "[[player],""life_fnc_alkoholdrugtester"",life_pInact_curTarget,FALSE] spawn life_fnc_MP;closeDialog 0";
4. Wir öffnen die Datei pInteraction.h und fügen folgendes unter class pInteraction_Menu hinzu:
Spoiler anzeigen
//button 9 note the idc number, as it corresponds with copInteractionmenu directly
class ButtonNine : life_RscButtonMenu
{
idc = 37458;
colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"};
text = "";
sizeEx = 0.025;
x = BGX + 0.03;
y = BGY + 0.47;
w = 0.24;
h = 0.038;
};
5. Wir öffnen die Functions.h und fügen folgendes unter class cop hinzu:
Spoiler anzeigen
class alkoholdrugtester {};
6. Wir öffnen die configuration.sqf und fügen folgendes unter Backend Variables hinzu:
Spoiler anzeigen
life_drink = 0;
life_drug = 0;
7. Wir öffnen die stringtable.xml und fuegen folgendes bei MISC ein:
Spoiler anzeigen
<Key ID="STR_MISC_AlreadyDrinking">
<Original>Du trinkst bereits geiles Zeug...</Original>
</Key>
<Key ID="STR_MISC_WestIndNoNo">
<Original>Im Dienst wird nicht getrunken</Original>
</Key>
<Key ID="STR_pInAct_Breathalyzer">
<Original>Alkohol-Drogentest</Original>
</Key>
Falls ihr Fragen oder Probleme habt, dann schreibt mir einfach
Gruß
nic_noc