PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Random ausgabe


Sajiki
20.03.2014, 09:51
Hallo, :D

Ich schweife nicht lange herum aber schätze mal hab da sicher wieder mal einen Fehler gemacht >.<

Ich nutze die random Funktion um mir verschiedene Wiedergaben abgeben zu lassen.

_texte = ["zivRand01", "zivRand02", "zivRand03", "zivRand04", "zivRand05", "zivRand06", "zivRand07", "zivRand08", "zivRand09", "zivRand10"];
_random = _texte select floor random count _texte;

Klappt alles super werden dann aber mit:
_object say3D _random;

abgespielt und da liegt mein problem.

Der befehl verlangt so etwas:
_object say3D "_random";

Wo durch meine abfrage oben schon wieder hinfällig ist, wie kann ich nun diese " mit einfügen.

Habe es schon so versucht:
_texte = [""zivRand01"", ""zivRand02"", ""zivRand03"", ""zivRand04"", ""zivRand05"", ""zivRand06"", ""zivRand07"", ""zivRand08"", ""zivRand09"", ""zivRand10""];
_random = _texte select floor random count _texte;

ohne erfolg, das Script hängt sich dann auf. Ist natürlich verständlich da er bestimmt keine zwei " zulässt oder? Wie kann ich das nun am besten lösen?

Mfg
Sajiki

Vienna
20.03.2014, 10:44
Das stimmt schon so, wie du das anfangs gemacht hast. Vermutlich sind die Sounds in der description.ext nicht/falsch konfiguriert.

https://community.bistudio.com/wiki/say3D

Sajiki
20.03.2014, 12:16
Danke für den hinweis habs gefunden ich Idiot :rolleyes:

Es lag an meiner stringtable weil ich dort nicht die strings definiert habe. Es ist anscheinend egal ob sie leer sind aber sie dürfen nicht fehlen.


Woran ich aber gerade auch noch sitze ist diese Case abfrage die verstehe ich überhaupt nicht trotz einiger Themen hier oO

Ich dachte mir das so:
Abfrage Ingame bei Einheit
this addAction ["Mein Text","meintestScript.sqf",[0,"2"]];

Script:
_object = _this select 0;
_zivilart = _this select 1;

switch (_zivilart) do
{
case 1: { hint "1"; };
case 2: { hint "2"; };
case 3: { hint "3"; };
default: { hint "default"; };
};


Falsch gedacht oder warum bekomme ich keine Ausgabe oO


Mfg
Sajiki

Vienna
20.03.2014, 12:46
Gib in dein Skript, welches von der Aktion aufgerufen wird, folgendes als erste Zeile zum Testen ein:

hintC format["Parameterliste: %1", _this];

den Rest des Skripts deaktiviere.

Sajiki
20.03.2014, 14:00
Parameterliste: [C Alpha 1-1:1,C Alpha 1-2:1 (Sajiki),0,[0,"2"]]

und was bedeutet das nun? oO Blicke gerade nicht durch ^^

EDIT:

Wäre möglich das Alpha 1-2:1 ich als Spieler war das Platon und Alpha 1-1:1 das Platon von dem der Script ausging?

Aber die erste 0 ergibt mir keinen Sinn, die [0,"2"] ist das was ich eigentlich im switch abfragen wollte >.<

Vienna
20.03.2014, 14:07
Überprüfe welche Parameter du damit angesprochen hast:

_object = _this select 0;
_zivilart = _this select 1;

Sajiki
20.03.2014, 14:22
Parameterliste: [C Alpha 1-1:1,C Alpha 1-2:1 (Sajiki),0,[0,"2"]]
Sieht in etwa so aus nur zum verständnis! :)
Parameterliste: [_object,_zivilart,0,[0,"2"]]


Jetzt hab ich es kapiert auch wenn es lange gedauert hat ^^ Also muss ich noch die 0 was die Aktion selbst ist definieren und erst dann kann ich auf meine zwei Parameter zugreifen oder?

mfg
Sajiki

Vienna
20.03.2014, 14:43
[C Alpha 1-1:1,C Alpha 1-2:1 (Sajiki),0,[0,"2"]]
[ 0 , 1 ,2, 3 ]
[0, 1 ]

Kapiert?




























































_object = (_this select 3) select 0;
_zivilart = (_this select 3) select 1;

Sajiki
20.03.2014, 14:59
Soweit ja ^^

Hab ja gegoggelt und bin ja auf deine beschreibung schon gestoßen mit
Parameterliste im Skript:
#1 Objekt ID welches die Aktion hat
#2 Objekt ID welches die Aktion aufruft
#3 Aktion ID
#3 Array mit den Daten von addAction Parameter #3

das "_object = (_this select 3) select 0;" bewirkt so zu sagen das er mit meinen Parameter in die anderen mit einbinden stimmts?

Sorry wenn ich deine geduld strapaziere aber ich check das mit diesen select kram nicht ganz auch diese wiki half mir nicht grad drüber >.<

mfg

Vienna
20.03.2014, 15:34
Das erste Feld eines Array wird mit dem Index 0 angesprochen!

Auch sollte man immer die Beschreibung eines Befehls lesen!

https://community.bistudio.com/wiki/addAction


Parameters array passed to the script upon activation in _this variable is:
[target, caller, ID, arguments]

target (_this select 0): Object - the object which the action is assigned to
caller (_this select 1): Object - the unit that activated the action
ID (_this select 2): Number - ID of the activated action (same as ID returned by addAction)
arguments (_this select 3): Anything - arguments given to the script if you are using the extended syntax

Sajiki
20.03.2014, 15:54
ok hab es glaube ich langsam kapiert mit diesem addaction und den zusätzlichen arrys :)

Hab mir einfach einen HINT befehl gebaut mit dem ich herum gespielt habe ^^
hint format ["Ausgabe (%1 = object), (%2 = zivilart)", _object, _zivilart];

Nette Ergebnisse sammeln können und bin sogar etwas weiter gekommen :D

Habe danach noch die Zahl in eine Variable gepackt mit
_variable = _this select 3;

Und sie lässt sich per IF abfragen, jedoch das switch will noch nicht ganz so. Aber komme cih sicher auch noch drauf :D

GROSSES DANKESCHÖN für die Hilfe Vienna :anbet:

Vienna
20.03.2014, 16:58
Abschließend noch: bei Case muss die Abfrage auf einen String auch ein String sein.

this addAction ["Mein Text","meintestScript.sqf",[0,"2"]];

Script mit Vermerken zu obiger Eingabe:

_object = (_this select 3) select 0; //Inhalt 0
_zivilart = (_this select 3) select 1; //Inhalt "2"

//case muss in diesem Fall auch ein String sein
switch (_zivilart) do
{
case "1": { hint "1" };
case "2": { hint "2" }; //Treffer
case "3": { hint "3" };
default : { hint "default" }
};


https://community.bistudio.com/wiki/Control_Structures

Sajiki
20.03.2014, 17:55
Danke aber habe ich schon raus ^^

Hast mir verdammt viel geholfen dank dir :D Dafür gibt es definitiv einen Credit eintrag!

mfg
Sajiki