Forum
Stranded II Scripts Scripting - Fragen/Problemeon:use {
timer "self",5,90,"rotate";
}
on:rotate {
$yaw= getyaw (self);
$yaw ++;
setrot "self","self","self",$yaw;
if ($yaw == 20) {
event "use","object",2;
}
}
Und was muss ich eigentlich auf dem nächsten Stein machen, damit es eine selbstständige Kettenreaktion wird?
Hallo? Ich bräuchte gerne heute noch Hilfe.
Bitte helft mir doch, ihr wisst ja mehr als ich.
edited 1×, last 20.03.08 05:48:31 pm
Benji has written
Noch ein Problem:
on:use {
timer "self",5,90,"rotate";
}
on:rotate {
$yaw= getyaw (self);
$yaw ++;
setrot "self","self","self",$yaw;
if ($yaw == 20) {
event "use","object",2;
}
}
Und was muss ich eigentlich auf dem nächsten Stein machen, damit es eine selbstständige Kettenreaktion wird?
Hallo? Ich bräuchte gerne heute noch Hilfe.
Bitte helft mir doch, ihr wisst ja mehr als ich.
on:use {
timer "self",5,90,"rotate";
}
on:rotate {
$yaw= getyaw (self);
$yaw ++;
setrot "self","self","self",$yaw;
if ($yaw == 20) {
event "use","object",2;
}
}
Und was muss ich eigentlich auf dem nächsten Stein machen, damit es eine selbstständige Kettenreaktion wird?
Hallo? Ich bräuchte gerne heute noch Hilfe.
Bitte helft mir doch, ihr wisst ja mehr als ich.
Okay, ich bin mal liebensgewürzig... also:
Dein tatsächliches Problem mit dem Script sehe ich nicht, ich vermute aber das zwei dinge falsch sind:
1. Leerzeichen um Operatoren (ist zwar eigentlich guter Stil, manchmal kotzt der Parser deswegen aber rum)
2. setrot "self","self","self",$yaw; << $yaw ist vermutlich an der falschen Stelle, es müsste mit der "self" davor vertauscht werden um wirklich den Yawwinkel zu ändern (atm änderst du den Rollwinkel)
Zu der Kettenraktion: Kannste nur mit ner Stopuhr daneben stehen, stoppen wenn sie sich berühren und die events entsprechend timen (eventuell im on:rotate eines steines nen kurzen, einmaligen timer auf das on:rotate das nächsten Steines)
Der lässt sich ja nicht auf kommastellen einstellen.
Benji has written
Und wie mache ich das mit einem Zeit-Trigger?
Der lässt sich ja nicht auf kommastellen einstellen.
Der lässt sich ja nicht auf kommastellen einstellen.
Gar nicht. benutze für solche kleine sachen lieber timer .
on:use {
timer "self",5,90,"rotate";
}
on:rotate {
$yaw= getyaw (self);
$yaw ++;
setrot "self","self","self",$yaw;
if ($yaw == 20) {
event "timer","info",2;
}
}
Und beim Zeit-Trigger:
on:timer {
Aäh wie mach ich weiter?
Benji has written
So müsste es am Anfagn des ersten Steines stehen:
on:use {
timer "self",5,90,"rotate";
}
on:rotate {
$yaw= getyaw (self);
$yaw ++;
setrot "self","self","self",$yaw;
if ($yaw == 20) {
event "timer","info",2;
}
}
Und beim Zeit-Trigger:
on:timer {
Aäh wie mach ich weiter?
on:use {
timer "self",5,90,"rotate";
}
on:rotate {
$yaw= getyaw (self);
$yaw ++;
setrot "self","self","self",$yaw;
if ($yaw == 20) {
event "timer","info",2;
}
}
Und beim Zeit-Trigger:
on:timer {
Aäh wie mach ich weiter?
ugh, ich glaube du hast das mit dem timer nicht verstanden
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
on:use { 	timer "self",50,90,"rotate"; [i]# neues Intervall von FL vorgeschlagen[/i] } on:rotate { 	$yaw=getyaw(self); 	$yaw++; 	setrot "self","self",$yaw,"self"; [i]# entweder so oder oben getroll()[/i] 	if ($yaw == 20) { [i]# ich nehme mal an hier berühren sie sich...[/i] 		event "use","object",ID_DES_NAECHSTEN_STEIN; [i]# ...deswegen s2:event, nicht s2:timer[/i] 	} }
Die Lösung mit timer wäre noch etwas anderes gewesen, aber ich denke mal das hier lässt sich besser abstimmen...
timer "self",50,90,"rotate";
}
on:rotate {
$yaw=getyaw(self);
$yaw++;
setrot "self","self",$yaw,"self";
if ($yaw == 20 {
event "use","object",2;
}
}
Der dreht sich doch!
Und ich habe das in den ersten, und in den zweiten geschrieben. Das aber löst nur den ersten aus nicht den zweiten dazu. Man, Himmelsschimel....
Die Kettenreaktion muss sich von alleine weiterbewegen.
Wie aber lässt sich das machen? Ich möchte bitte noch heute mit dem Domino anfangen. Antwortet so schnell wie möglich. Bitte. Würd mich ganz toll noch freuen. und wenn es klappt, dann verspreche ich euch bis Ende Mai keine Posts mehr zu schreiben. Damit meine ich die Fragen natürlich.
lg,
BEnji
edited 1×, last 20.03.08 08:54:48 pm
Benji has written
on:use {
timer "self",50,90,"rotate";
}
on:rotate {
$yaw=getyaw(self);
$yaw++;
setrot "self","self",$yaw,"self";
if ($yaw == 20 {
event "use","object",2;
}
}
Der dreht sich doch!
Und ich habe das in den ersten, und in den zweiten geschrieben. Das aber löst nur den ersten aus nicht den zweiten dazu. Man, Himmelsschimel....
timer "self",50,90,"rotate";
}
on:rotate {
$yaw=getyaw(self);
$yaw++;
setrot "self","self",$yaw,"self";
if ($yaw == 20 {
event "use","object",2;
}
}
Der dreht sich doch!
Und ich habe das in den ersten, und in den zweiten geschrieben. Das aber löst nur den ersten aus nicht den zweiten dazu. Man, Himmelsschimel....
Beim If fehlt eine schließende Klammer. Eventuell erreicht der Stein nie yaw=20, eventuell musst du in on:use noch den ursprünglichen yaw in einer (lokalen!) Variable speichern und die Differenz prüfen statt dem absoluten Winkel.
Quote
Die Kettenreaktion muss sich von alleine weiterbewegen.
Wie aber lässt sich das machen?
Wie aber lässt sich das machen?
Richtig automatisch? gar nicht, da S2 keine Physikengine hat. Du musst das wie gesagt faken.
bizzl has written
noch den ursprünglichen yaw in einer (lokalen!) Variable speichern und die Differenz prüfen statt dem absoluten Winkel.
Was meinst du nun schon wieder? Man ist das kompliziert...
faken...Was ist den das? Ich möchte nur, dass der Stein, ein nach dem anderen, also wenn der erste gefallen ist, fallt der zweite, der 3te, der 4te,...
Also nehmen wir mal an:
Ich habe 4 Dominosteine wie du sagst geskriptet. Und wenn ich den 1ten aktiviere, dann fallt der 2te. Nachdem der 2te gefallen ist, fallt der 3te,...
Ich glaube, du hast das ein bisschen falsch verstanden.
Benji has written
Was meinst du nun schon wieder? Man ist das kompliziert...
bizzl has written
noch den ursprünglichen yaw in einer (lokalen!) Variable speichern und die Differenz prüfen statt dem absoluten Winkel.
Was meinst du nun schon wieder? Man ist das kompliziert...
Noch Kindergarten ?
Also, die Differenz zweier Werte ist das Ergebnis ihrer Subtraktion: Subtrahent - Minuend = Differenz
Du sollst im on:use mal noch folgende Zeilen einfügen:
1
2
2
local $old_yaw; $org_yaw=getyaw("self");
1
2
2
$tmp=$old_yaw-$yaw; [i]# wegen schachtelungsproblem schon hier[/i] if (abs($tmp)==20) {
Und weil ich ein fieser Hund bin sage ich dir auch gleich mal das du hier sowieso immer mit dem falschen Winkel arbeitest. Der Yawwinkel ist der Winkel um die Y-Achse (Höhe), du brauchst aber wohl eher den Winkel um die X-Achse. Das wäre dann der Pitchwinkel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
on:use { 	local $old_pitch; 	$old_pitch=getpitch("self"); 	timer "self",50,90,"rotate"; } on:rotate { 	local $pitch,$tmp; [i]# ist sauberer so[/i] 	$pitch=getpitch("self"); 	$pitch++; 	setrot "self",$pitch,"self","self"; 	$tmp=$old_pitch-$pitch; 	if (abs($tmp)==20) { 		event "use","object",ID_DES_NAECHSTEN_STEIN; 	} 	frevar $yaw,$tmp; }
Benji has written
faken...Was ist den das?
faken = fälschen, vortäuschen, simulieren
Benji has written
Ich möchte nur, dass der Stein, ein nach dem anderen, also wenn der erste gefallen ist, fallt der zweite, der 3te, der 4te,...
Also nehmen wir mal an:
Ich habe 4 Dominosteine wie du sagst geskriptet. Und wenn ich den 1ten aktiviere, dann fallt der 2te. Nachdem der 2te gefallen ist, fallt der 3te,...
Also nehmen wir mal an:
Ich habe 4 Dominosteine wie du sagst geskriptet. Und wenn ich den 1ten aktiviere, dann fallt der 2te. Nachdem der 2te gefallen ist, fallt der 3te,...
Ich weiß wie Dominoketten funktionieren, danke
Benji has written
Ich glaube, du hast das ein bisschen falsch verstanden.
Ich nehme eher an du verstehst nicht was ich dir erkläre
Expection Semicolon
Ich glaube, dass er meint, das was fehlt. Aber was den?
freevar heißt das..genau.
Aber der geht schief. Wollt ihr mich verarschen? Ich sagte doch es soll umfallen, nicht schief um kippen.
Benji has written
Bei frevar $yaw,$pitch; reagiert er mit:
Expection Semicolon
Ich glaube, dass er meint, das was fehlt. Aber was den?
freevar heißt das..genau.
Expection Semicolon
Ich glaube, dass er meint, das was fehlt. Aber was den?
freevar heißt das..genau.
sry ^^'
Benji has written
Aber der geht schief. Wollt ihr mich verarschen? Ich sagte doch es soll umfallen, nicht schief um kippen.
Denkst du etwa ich weiß wie deine sch*** Steine stehen ?
Wenn es mit Pitch nicht stimmt, dann ändere alle pitch zu roll und die zeile
1
setrot "self",$pitch,"self","self";
1
setrot "self","self","self",$roll;
also ich bin sehr neu und kenn mich mit dem ganzen "scripting" gar nicht aus,
kann mir das mal igendwer bitte erklären?
Ich kann halt nur so Sachen wie:
on:start {
msg "Hallo und Herzlichwilkommen!" ,3 ,7000;
}
aber ich will mal richtig irgendwas mit dem machen z.B.
Das man ganz am Anfang, wenn man eine Missi macht,
von einem Punkt zum anderen geflogen wird oder so...
bitte um Hilfe
edited 1×, last 21.03.08 01:20:04 pm
Admin/mod comment
wenn du nen Fehler im Script hast und dich wer anders drauf hinweist dann editier das bitte nich um, du veränderst dadurch die logische Reihenfolge des threads und das lösst nur verwirrjung aus /Flying Lizard1
2
3
2
3
on:start { msg "Hallo und Herzlichwilkommen!" ,3 ,7000; }
und ich hätte noch so ne Frage:
Wie kann ich machen, das wenn ich z.B. einen Häupling anspreche (E) das er dann auch etwas zurück sagt und ich halt dann so texte anklicken kann und so, wie geht das???
bitte um antwort.
edited 1×, last 21.03.08 03:32:51 pm
Danke im Voraus
leinad1123 has written
Ich habe mal eine Frage zu etwas noch komplexeren. Ich versuche gerade im Editor auf einer Insel eine Zone mit eigenen Wetter zu schaffen (Schnee). Ich habe einen Trigger gemacht und den Wetterwechsel gescriptet. Hat auch alles geklappt aber wenn ich aus dem Gebietstrigger rauskomme herscht immer noch das gleiche Wetter. Wie kriege ich da das alte Wetter wieder?
Danke im Voraus
Danke im Voraus
Setze nen zweiten Gebietstrigger an die gleiche stelle (eventuell auch leicht daneben, wenn es nicht perfekt geht, oder positioniere einfach per setat ), statte ihn mit gleichem radius aber gegenteiliger bedingung aus und lasse ihn das abschaltscript ausführen (aber lasse ihn bei mapstart inaktiv!)
in beiden Triggern fügst du dann noch folgende Zeilen hinzu:
1
2
2
s2:stoptrigger currentid(); s2:starttrigger ID_VOM_ANDEREN_TRIGGER;
hoffe das ist so verständlich