HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-167/)
-   -   addaction - removeAllActions (https://hx3.de/editing-scripting-167/addaction-removeallactions-23604/)

PrimeIsTime 31.03.2014 20:13

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"];
player addAction ["<t color=""#D99800"">" +"_PlayerMenu", "scripthis\arma2playermenu.sqf"];


=> Gruppe 1 und 2 wenn man auf sie drückt:
Code:

player addAction ["<t color=""#E8BE6F"">" +"_CivClass", "scripts\arma2civclass.sqf"];
player addAction ["<t color=""#E8BE6F"">" +"_AssaultClass", "scripts\arma2assaultclass.sqf"];
player addAction ["<t color=""#E8BE6F"">" +"_SniperClass", "scripts\arma2sniperclass.sqf"];

HIER SOLLEN DANN AUCH DIE ANDEREN GRUPPEN VERSCHINDEN.

Vienna 31.03.2014 22:49

In diesem Beispiel wird so ein Menü-System verwendet: http://hx3.de/editing-scripting-167/...ugzeuge-20992/

PrimeIsTime 01.04.2014 14:34

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!

Vienna 01.04.2014 18:42

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.

PrimeIsTime 01.04.2014 22:41

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.

Vienna 02.04.2014 10:08

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

PrimeIsTime 02.04.2014 13:12

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"]
Und nur in der Aufrufen sqf kann ich die löschen dachte ich also:
Code:

_caller this select 0; _id this select 2; removeAction _caller id;
Kann ich auch in einem anderen Script die Actions löschen oder muss ich das in dem aufgerufenen script machen? und wie kriege ich die ids raus oder kann ich auch mit variablen arbeiten? thx schon mal

Vienna 02.04.2014 15:41

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

PrimeIsTime 03.04.2014 12:46

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")

Vienna 03.04.2014 13:02

"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


SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119