Hi Leute,
dies ist mein erstes Tutorial, also seid nicht allzu streng mit mir^^
Hier geht es darum, dass Zivilisten auf andere Spieler die Aktionstaste (Standard: Windows links) drücken und dann wie die Cops ein Menü sehen.
INFO: Dieses Menü bleibt leer, die Inhalte bzw Aktionen müssen selbst eingetragen werden.
Getestet wurde das Script mit der 5.0, sollte allerdings auch mit anderen Versionen funktionieren.
Es ist untersagt, das Tutorial ohne meine Erlaubnis in anderen Foren zu verbreiten.
Schritt 1: Geht in die core/functions/fn_actionKeyHandler.sqf
Füge dort unter
if (playerSide isEqualTo west && {player getVariable ["isEscorting",false]}) exitWith {
[] call life_fnc_copInteractionMenu;
};
folgendes ein:
if (playerSide isEqualTo civilian) exitWith {
[_curObject] call life_fnc_civInteractionMenu;
};
Schritt 2: Erstellt in core/civilian eine Datei namens fn_civInteractionMenu.sqf
Und packt dort folgenden Inhalt mit rein:
Spoiler anzeigen
#include "..\..\script_macros.hpp"
/*
File: fn_civInteractionMenu.sqf
Author: John 'Hannibal' Smith
Description:
Setzt ein Interaktionsmenü für die Zivilisten
*/
#define Btn1 37450
#define Btn2 37451
#define Btn3 37452
#define Btn4 37453
#define Btn5 37454
#define Btn6 37455
#define Btn7 37456
#define Btn8 37457
#define Title 37401
private ["_display","_curTarget","_Btn1","_Btn2","_Btn3","_Btn4","_Btn5","_Btn6","_Btn7","_Btn8"];
disableSerialization;
_curTarget = param [0,objNull,[objNull]];
if (player getVariable ["restrained", false]) exitWith { closeDialog 0; };
if (isNull _curTarget) exitWith { closeDialog 0; };
if (!isPlayer _curTarget) exitWith { closeDialog 0; };
if (player distance _curTarget > 4 ) exitWith { closeDialog 0; };
if (!dialog) then {
createDialog "pInteraction_Menu";
};
_display = findDisplay 37400;
_Btn1 = _display displayCtrl Btn1;
_Btn2 = _display displayCtrl Btn2;
_Btn3 = _display displayCtrl Btn3;
_Btn4 = _display displayCtrl Btn4;
_Btn5 = _display displayCtrl Btn5;
_Btn6 = _display displayCtrl Btn6;
_Btn7 = _display displayCtrl Btn7;
_Btn8 = _display displayCtrl Btn8;
life_pInact_curTarget = _curTarget;
//Button 1
_Btn1 ctrlSetText localize "";
_Btn1 buttonSetAction "closeDialog 0;";
//Button 2
_Btn2 ctrlSetText "";
_Btn2 buttonSetAction "closeDialog 0;";
//Button 3
_Btn3 ctrlSetText localize "";
_Btn3 buttonSetAction "closeDialog 0;";
//Button 4
_Btn4 ctrlSetText localize "";
_Btn4 buttonSetAction "closeDialog 0;";
//Button 5
_Btn5 ctrlSetText localize "";
_Btn5 buttonSetAction "closeDialog 0;";
//Button 6
_Btn6 ctrlSetText localize "";
_Btn6 buttonSetAction "closeDialog 0;";
//Button 7
_Btn7 ctrlSetText localize "";
_Btn7 buttonSetAction "closeDialog 0;";
//Button 8
_Btn8 ctrlSetText localize "";
_Btn8 buttonSetAction "closeDialog 0;";
//SETZE false AUF true WENN DU DEN BUTTON ANGEZEIGT HABEN WILLST!
_Btn1 ctrlShow false;
_Btn2 ctrlShow false;
_Btn3 ctrlShow false;
_Btn4 ctrlShow false;
_Btn5 ctrlShow false;
_Btn6 ctrlShow false;
_Btn7 ctrlShow false;
_Btn8 ctrlShow false;
Alles anzeigen
Setze in den untersten Zeilen false auf true wenn du den Button sichtbar haben willst.
Schritt 3: Öffne die Functions.hpp
Trage dort unter class Civilian { ... } folgendes ein: class civInteractionMenu {};
So, das wars auch schon. Für Fragen stehe ich gerne zur Verfügung.