addaction - removeAllActions
Hallo zusammen,
ich bin gerade dabei eine Art Menü (addaction) zu schreiben. Nun bin ich dabei angelang, dass ich 4 Gruppen habe (addAction["weaponmenu", "weaponmenu.sqf"] usw), nun möchte ich, dass wenn ich auf eines dieser Gruppendrücke, alle von meinen bisherigen (die anderen Gruppen) gelöscht werden und nur noch der inhalt dieser Gruppe dort steht. Der Inhalt besteht aus weiteren addactions die dann das entgültige script aufrufen. Nun habe ich ein Problem ALLE addactions die ich vorher als gruppen hatte zu löschen. Habt ihr ne Idee wie ich das machen kann? Bsp.: Code:
player addAction ["<t color=""#E8BE6F"">" +"_WeaponMenu", "scripts\arma2weaponmenu.sqf"]; => Gruppe 1 und 2 wenn man auf sie drückt: Code:
player addAction ["<t color=""#E8BE6F"">" +"_CivClass", "scripts\arma2civclass.sqf"]; |
In diesem Beispiel wird so ein Menü-System verwendet: http://hx3.de/editing-scripting-167/...ugzeuge-20992/
|
Das script sieht an sich nach genau dem aus was ich such. Doch da ich leider noch nicht so bewandert bin in der arma 2 programmierung ist es schwer für mich solch ein script zu verstehen. Ich bräuchte halt so ne mustlösung wie in den wikis die Beispiele. Aber danke für deine Mühe!
|
Du müsstes für deine Zwecke die HQ-Aktionen.sqf anpassen. Etwas Hilfe bringt dabei die Datei Info.txt. Aber wie du bereits erkannt hast, ist die Anwendung ohne Kenntnis der Skript-Sprache schwierig. Das "Verschachteln" von Aktionen ist nicht einfach zu lösen.
|
Ich dachte zuerst das die Sprache so aufgebaut ist wie C/C# usw. Ich wollte halt einfach ne Variable _actionNumber übergeben und alle die in dieser Liste stehen werden gelöscht. Wie in c# halt: void loeschen(array _actionNumber){} usw. Arma 2 ist erstaunlich unterschiedlich zu allen Sprachen die ich bisher kenne.
|
Ist schon ähnlich C: https://community.bistudio.com/wiki/Control_Structures
Zuerst muss du dich mit dem Befehl https://community.bistudio.com/wiki/addAction vertraut machen. Der gibt für jede Aktion eine Identifikationsnummer zurück, um eine Aktion wieder gezielt löschen zu können |
Naja C ähnlich ist schon was anderes als nur if/else und switch ;D
Das mit den Ids hatte ich auch schon vermutet, aber ich dachte, dass am nur die Id von der Action aufrufen kann, wenn man in dem script ist also: Action.sqf Code:
player addAction["script", "aufrufen.sqf"] Code:
_caller this select 0; _id this select 2; removeAction _caller id; |
Du kannst die IDs in einer globalen Variablen speichern, die in allen Skripten sichtbar ist. Mehrere IDs in einem Array.
http://hx3.de/editing-scripting-167/sqf-handbuch-22579/ https://community.bistudio.com/wiki/Variables https://community.bistudio.com/wiki/Array https://community.bistudio.com/wiki/...Commands_ArmA2 |
Das heißt ich erstelle einfach eine private addAction variable (zB _id) und mache dann removeAction _id?
Kann ich dich liken? (Ich möchte mich bedanken und dir auch was "zurückgeben") |
"Private" Variable sind die lokalen Variablen in Skripten welche mit einem Unterstrich beginnen.
z.B. _AktionID1 = player addAction [...]; player removeAction _AktionID1; Die ID der Aktion wird auch dem Skript der Aktion als Parameter übergeben. Die Aktion kann somit auch im Skript entfernt werden. Oder mit globaler Variabler (ohne beginnenden Unterstrich) in jedem Skript: AktionID1 = Tank1 addAction [...]; Tank1 removeAction AktionID1; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:58 Uhr. |
Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias