Forum
Stranded II Scripts Scripting - Fragen/ProblemeDer Gebietstrigger löst ein Event bei einem Objekt aus.
Dort wiederum Löst ein Timer dann ein Event aus.
Jez würd ich gern wissen ob ich machen kann, dass wenn man das Gebiet verlässt, dass dann sozusagen ein velass-Event ausgelöst wird, mitdem ich den Timer ausschalten kann.
Oh sorry da ist wohl einfehler unterlaufen bei mir, heißt eigendlich wirklich
scriptkey=0,...
sorry dafür
@redFlop
warum machst du nicht einfach nur den gebietstrigger???
also so: (das steht im Gebietstrigger)
1
2
3
4
2
3
4
on:trigger { event "Ereignis" [,"Klasse", ID] free "self"; }
Es gäbe auch noch die Möglichkeit, überhaupt keinen Trigger zu benutzen. Also so, dass man das ganze nur über Scripts laufen lässt.
Welche Version wäre dir lieber? Ich könnte dir dann ein Beispiel schreiben.
Zeig ma das Beispiel nur mit Scripts.
stoptrigger verwenden
und ihn, wenn du ihn wieder brauchst mit starttrigger wieder verwenden
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
on:start 	{ 	timer "self", 500, 0, "gebiet"; //2 mal pro Sekunde wird geprüft, ob der Spieler im Gebiet ist. 	} on:gebiet 	{ 	// Ist der Spieler im Bereich um das Info? 	if ((inrange ("self", 150) == 1) && ($bereich == 0)) 		{ 		// Wenn ja: 		msg "Spieler hat den Bereich betreten!"; 		$bereich = 1; 		} 	elseif ((inrange ("self", 150) != 1) && ($bereich == 1)) 		{ 		// Wenn nein: 		msg "Spieler hat den Bereich verlassen!"; 		$bereich = 0; 		} 	}
Die Variable $bereich sorgt dafür, dass die Nachricht (also das Script im If-Bereich) nur ein mal ausgeführt wird. Ohne würde das Script immer wieder ausgeführt werden.
T-REX0113 has written
Er weiß ja aber nicht wie er nachguckt, ob der Spieler das Gebiet verlassen hat. du könntest aber auch stoptrigger verwenden und ihn, wenn du ihn wieder brauchst mit starttrigger wieder verwenden
1
2
3
4
5
6
7
2
3
4
5
6
7
on:use { 		skipevent; 		dialogue "Fliegen","21"; if ($bstate==1,$grabstate==1){	 		loadmap "maps/Map001.s2";} 	} }
Wenn ich nur bstate/grabstate hab gehts,aber beides net,gibts ne Möglichkeit das hinzubekommen?
Entweder machst du das so:
1
2
3
4
5
6
7
2
3
4
5
6
7
if ($var1 == 1) 	{ 	if ($var2 == 1) 		{ 		msg "Bla"; 		} 	}
1
2
3
4
2
3
4
if (($var1 == 1) && ($var2 == 1)) 	{ 	msg "Bla"; 	}
Die zweite Variante ist dabei kürzer, übersichtlicher und wird allgemein auch als Standard angesehen.
Dabei sagt das "&&" aus, das beide Abfragungen positiv ausfallen müssen, damit auch der gesamte Ausdruck positiv (also 1) ist.
Sollte eine der beiden Variablen 0 sein (oder auch gleich beide) wird der Code zwischen den Klammern (hier also der msg-Befehl) nicht ausgeführt. Nur wenn beide Variablen 1 sind, erscheint "Bla" auf dem Bildschirm.
Für weitere Informationen gucke bitte hier oder beim if-Befehl.
Hat auch geklappt.
edited 1×, last 14.02.10 01:40:57 pm
Bei mir funktioniert das Script anstandslos.
(Du kannst, wenn du das Script offen hast, mit einem Button unten das Script in einer Textdatei speichern. Klicke einfach darauf, dann gebe "bla.txt" ein, dann auf Okay und zum Schluss kannst du dann das Script hier einfügen aus der Datei raus)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
on:hit { 	$own_class=currentclass(); 	$own_id=currentid(); 	$target_type=type("$own_class", $own_id); 	msg "Type: $target_type"									// bis hierhin funktioniert es noch 	$target_name=name("$own_class", $target_type);	// das hier funktioniert nicht mehr, denn ... 	msg "$target_name";										// ... hier wird 0 ausgegeben }
oder ich find den fehler einfach nicht
1
msg "Type: $target_type"
Allerdings weiß ich nicht, ob das bei dem msg-Befehl auch so ist.
Versuch auch mal $target_name in $target_nam umzubenennen. Vielleicht hat Stranded Probleme mit Variablen, welche wie ein Befehl heißen.
hmm, da ist mir wohl ein flüchtigkeitsfehler unterlaufen...
hab ihn behoben, hat aber leider zu keinem ergebnis geführt...
@ Nova:
ja, so wie es aussieht kann man die auch weglassen, aber ich schreib an stellen wo die Klasse verlangt wird lieber mit anführungszeichn, allein schon aus gewohnheit (ich habs trotzdem mal ohne ausprobiert, hat aber auch nichts gebracht).
(bei dem msg-befehl würd ich übrigens mal stark vermuten, dass da ALLES an text in anführungszeichen muss.)
hab auch versucht andere namen zu benutzen für die variablen, sogar "$hallo" oder "$test", hat aber auch nicht funktioniert...
Wenn nein muss ichs ein wenig wie beim Abenteuer machen^^(Da fährt das Boot ja 3mal oder so durchs Bild^^)
Und noch ne Frage,wie kann man ein Intro wie bei Xandua machen?
Also aus der Sicht des Cockpits
PS:Ich würde dann gern ein vorgefertigtes Script haben
Bei mir funktioniert der Code ohne Probleme.
Ich habe einfach diesen Code in einem Palme eingefügt und dann auf sie drauf geschlagen:
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
on:hit { 	 $own_class=currentclass(); 	 $own_id=currentid(); 	 $target_type=type("$own_class", $own_id); 	 msg "Type: $target_type"; 	 $target_name=name("$own_class", $target_type); 	 msg "$target_name"; }
@Krelion: Du kannst dem Flugzeug den State 54 geben und dann mit statevalue die Geschwindigkeit auf einen anderen Wert setzen.
Das Intro bei Xandua wurde vermutlich mit dem ride Befehl auf das Flugzeug gemacht. Weiß ich allerdings nicht, ist nur eine Vermutung.