Problem mit skript
-
- Komplettlösungsnutzer
- Beiträge: 33
- Registriert: 12.04.2005, 17:59
Problem mit skript
hi leute, ich hab ein kleines problem. in meinem kleinen probegame sind 2 charactere, ein spieler und ein npc. wenn ich mit dem npc reden will läuft ein dialog per skript ab (unter interactions -> talk to charakter) . aber es soll ja nicht nur dieses eine skript als gespräch ablaufen sondern noch andere zu späteren zeitpunkten im spiel. weiß einer wieman das macht?
- Floyd
- Logik-Lord
- Beiträge: 1088
- Registriert: 14.03.2004, 19:59
...
Wahrscheinlich ist es auch mit den Standardbefehlen realisierbar, aber damit kenne ich mich nicht so aus, deswegen hier nur mal ein Lösungvorschlag mit "run script":
Geh ins Global script (Menüleiste -> script -> Global script).
Dort definierst du unter "Game start" eine neue variable.
Als nächstes lässt du an der Stelle, an der dein Charakter den anderen anspricht (oder umgekehrt), ein script ablaufen (Interactions -> New Action -> run script).
Dort schreibst du folgenes:
MfG Floyd
Geh ins Global script (Menüleiste -> script -> Global script).
Dort definierst du unter "Game start" eine neue variable.
....
function game_start() {
// called when the game starts, before the first room is loaded
SetGlobalInt(1,0);
...
Als nächstes lässt du an der Stelle, an der dein Charakter den anderen anspricht (oder umgekehrt), ein script ablaufen (Interactions -> New Action -> run script).
Dort schreibst du folgenes:
Falls der erste Dialog nur ein einziges mal abläuft, kannst du Global Int gleich auf 1 setzen (kursiv) , ansonsten musst du dies zu einem späteren Zeitpunkt tun.if (GetGlobalInt (1) == 0) {
RunDialog (1);
SetGlobalInt (1,1);
}
else if (GetGlobalInt (1) == 1) {
RunDialog (2);
}
MfG Floyd
Der verschwundene Husky - ein 2D Point&Click Adventure
Einen schönen Orbit, Bürger!
Einen schönen Orbit, Bürger!
-
- Komplettlösungsnutzer
- Beiträge: 33
- Registriert: 12.04.2005, 17:59
also, ich hab jetz folgendes skript gemacht:
// script for character0: Talk to character
MoveCharacter(EGO, 200,123);
while (character[EGO].walking) Wait(1);
FaceCharacter(EGO, TALK);
FaceCharacter(TALK, EGO);
Wait(50);
if (GetGlobalInt (1) == 0) {
RunDialog (0);
MoveCharacter(EGO, 56,122);
Wait(100);
Display("???");
Wait(150);
RunDialog (1);
SetGlobalInt (1,1);
}
else if (GetGlobalInt (1) == 1) {
RunDialog (2);
}
das einzige was jetz noch nich klappt is, das der allererste dialog abgespielt wird und DANN erst der zweite (es gibt insgesamt 3 dialoge)
// script for character0: Talk to character
MoveCharacter(EGO, 200,123);
while (character[EGO].walking) Wait(1);
FaceCharacter(EGO, TALK);
FaceCharacter(TALK, EGO);
Wait(50);
if (GetGlobalInt (1) == 0) {
RunDialog (0);
MoveCharacter(EGO, 56,122);
Wait(100);
Display("???");
Wait(150);
RunDialog (1);
SetGlobalInt (1,1);
}
else if (GetGlobalInt (1) == 1) {
RunDialog (2);
}
das einzige was jetz noch nich klappt is, das der allererste dialog abgespielt wird und DANN erst der zweite (es gibt insgesamt 3 dialoge)
- Floyd
- Logik-Lord
- Beiträge: 1088
- Registriert: 14.03.2004, 19:59
...
Mmm ich verstehe das Problem nicht ganz. Welcher sollte denn als erstes abgespielt werden? MfG Floyd
Der verschwundene Husky - ein 2D Point&Click Adventure
Einen schönen Orbit, Bürger!
Einen schönen Orbit, Bürger!
- -BigDaniel-
- Süßwasserpirat
- Beiträge: 304
- Registriert: 18.09.2003, 15:19
- Kontaktdaten:
[quote]
// script for character0: Talk to character
MoveCharacter(EGO, 200,123);
while (character[EGO].walking) Wait(1);
FaceCharacter(EGO, TALK);
FaceCharacter(TALK, EGO);
Wait(50);
if (GetGlobalInt (1) == 0) {
RunDialog (0);
MoveCharacter(EGO, 56,122);
Wait(100);
Display("???");
Wait(150);
RunDialog (1);
SetGlobalInt (1,1);
stop;
}
else if (GetGlobalInt (1) == 1) {
RunDialog (2);
}
dum musst nach der ersten variable abfrage ein STOP; sertzten damit das script hier endet !!!
-------------------------------------------------------------------------------------
FALS DAS EINE FALSCH INTERPRÄTATION DEINER FRAGE WAR DANN HAB ICH HIER NOCH EINE LÖSUNG!!! -------------------------------------------------------------------------------------
VErbinde die ienzelnen dialoge doch mit goto-dialog XX im DIALOG SCRIPT!!!
mfg Daniel
// script for character0: Talk to character
MoveCharacter(EGO, 200,123);
while (character[EGO].walking) Wait(1);
FaceCharacter(EGO, TALK);
FaceCharacter(TALK, EGO);
Wait(50);
if (GetGlobalInt (1) == 0) {
RunDialog (0);
MoveCharacter(EGO, 56,122);
Wait(100);
Display("???");
Wait(150);
RunDialog (1);
SetGlobalInt (1,1);
stop;
}
else if (GetGlobalInt (1) == 1) {
RunDialog (2);
}
dum musst nach der ersten variable abfrage ein STOP; sertzten damit das script hier endet !!!
-------------------------------------------------------------------------------------
FALS DAS EINE FALSCH INTERPRÄTATION DEINER FRAGE WAR DANN HAB ICH HIER NOCH EINE LÖSUNG!!! -------------------------------------------------------------------------------------
VErbinde die ienzelnen dialoge doch mit goto-dialog XX im DIALOG SCRIPT!!!
mfg Daniel
- -BigDaniel-
- Süßwasserpirat
- Beiträge: 304
- Registriert: 18.09.2003, 15:19
- Kontaktdaten:
-
- Komplettlösungsnutzer
- Beiträge: 33
- Registriert: 12.04.2005, 17:59
also meine frage ist. ich habe halt 3 dialoge. am anfang wenn man mit dem npc reden will soll dialog 0 abgespielt werden, dann soll sich der player geskriptet an eine andere stelle bewegen und dialog 1 abspieln. wenn das dann getan wurde soll es nich mehr möglich sein, die beiden dialoge abzuspiele, sondern dialog 2 soll abgespielt werden.
mein problem ist aber , dass dialog 0 garnicht abgespielt wird, sondern dass direkt der player an die andere stelle geht und dialog 1 abgespielt wird. danach wird wie ich es wollte nur noch dialog 2 abgespielt.
hoffe jetz isses klar^^
mein problem ist aber , dass dialog 0 garnicht abgespielt wird, sondern dass direkt der player an die andere stelle geht und dialog 1 abgespielt wird. danach wird wie ich es wollte nur noch dialog 2 abgespielt.
hoffe jetz isses klar^^
- Floyd
- Logik-Lord
- Beiträge: 1088
- Registriert: 14.03.2004, 19:59
...
Mmh hast du bei deinem Dialog denn bei "Show" Haken gesetzt, d.h. kann man Sätze auswählen? MfG Floyd
Der verschwundene Husky - ein 2D Point&Click Adventure
Einen schönen Orbit, Bürger!
Einen schönen Orbit, Bürger!
RunDialog wird immer am Ende des Skripts ausgeführt.
Am einfachsten ist es deshalb, nach jedem RunDialog-Befehl eine neue "Run script"-Action direkt dahinterzusetzen.
Erste "Run script"-Action:
Zweite "Run script"-Action für dieselbe Interaktion (wird ausgeführt nachdem der in der ersten Action gestartete Dialog endet):
Am einfachsten ist es deshalb, nach jedem RunDialog-Befehl eine neue "Run script"-Action direkt dahinterzusetzen.
Erste "Run script"-Action:
Code: Alles auswählen
// script for character0: Talk to character
MoveCharacterBlocking(EGO, 200, 123);
FaceCharacter(EGO, TALK);
FaceCharacter(TALK, EGO);
Wait(50);
if (GetGlobalInt (1) == 0) RunDialog (0);
else if (GetGlobalInt (1) == 1) RunDialog (2);
Code: Alles auswählen
// script for character0: Talk to character
if (GetGlobalInt (1) == 0) { // wenn Dialog 0 lief
MoveCharacterBlocking(EGO, 56, 122);
Wait(100);
Display("???");
Wait(150);
SetGlobalInt (1, 1);
RunDialog (1);
}
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
1. Nein. Den Befehl 'stop' kann man nur innerhalb von Dialog-scripts verwenden. Und er hat ein else (if) verwendet, sprich, alles richtig gemacht.-BigDaniel- hat geschrieben:dum musst nach der ersten variable abfrage ein STOP; sertzten damit das script hier endet !!!
-------------------------------------------------------------------------------------
FALS DAS EINE FALSCH INTERPRÄTATION DEINER FRAGE WAR DANN HAB ICH HIER NOCH EINE LÖSUNG!!! -------------------------------------------------------------------------------------
VErbinde die ienzelnen dialoge doch mit goto-dialog XX im DIALOG SCRIPT!!!
2. Das geht zwar, aber er hat extra 2 einzelne Dialoge gemacht, weil die Figur zwischendrin gehen soll.
Ich finds ja cool, dass Du helfen willst, aber falsche Tips verwirren nur.
Übrigens gibt's rechts oben bei Deinen posts einen edit-Button, dann musst Du nicht 2mal hintereinander posten.
Coole Methode, man lernt nie aus.strazer hat geschrieben:Am einfachsten ist es deshalb, nach jedem RunDialog-Befehl eine neue "Run script"-Action direkt dahinterzusetzen.
Eine andere Möglichkeit wäre noch der 'run-script x'-Befehl im dialogscript.
Zuletzt geändert von KhrisMUC am 13.04.2005, 22:45, insgesamt 1-mal geändert.
Use gopher repellent on funny little man
- -BigDaniel-
- Süßwasserpirat
- Beiträge: 304
- Registriert: 18.09.2003, 15:19
- Kontaktdaten: