Probleme mit 3 Variabeln!

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Furymars
Süßwasserpirat
Süßwasserpirat
Beiträge: 485
Registriert: 13.06.2006, 20:45
Wohnort: Adventure Treff

Probleme mit 3 Variabeln!

Beitrag von Furymars »

Ich wollte in meinem AGS Spiel für eine bestimmte Aktion einen bestimmten Gui ändern. Da dachte ich mir, ich teil jeden der 3 Guis in 3 verschiedene GlobalInts. Den Skript erkennt er , aber irgendwie schaltet der nicht die anderen Guis aus, wenn der momentane GlobalInt aktiv ist.
Tut mir Leid es zu sagen, aber ich verwende schon längst eingeholte Skripts!

Hier mein Skript:

Code: Alles auswählen

if (GetGlobalInt(0)) {
GUIOff(1);
GUIOff(2);
GUIOn(0);

}

if (GetGlobalInt(1)) {
GUIOff(0);
GUIOff(2);
GUIOn(1);

}

if (GetGlobalInt(2)) {
GUIOff(0);
GUIOff(1);
GUIOn(2);
  }
Edit: Die Guis befinden sich alle an der selben Position!
Angekündigte Spiele:
MMM : "Nicht ohne meinen Hamster!"
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Wenn auch umständlich, schaut der Code zumindest nicht falsch aus.
Die Frage ist jetzt nur, wann Du die GlobalInts auf welchen Wert setzt. D.h. der Fehler liegt nicht in dem Teil, den Du hier gepostet hast.

Außerdem brauchst Du keine drei GIs, wenn sowieso immer nur ein GUI sichtbar sein soll.

Setz die GlobalInt Nr. 1 auf die Nummer des GUIs, das sichtbar sein soll (also 0, 1 oder 2).
Dann:

Code: Alles auswählen

  gui[0].Visible=false;
  gui[1].Visible=false;
  gui[2].Visible=false;
  gui[GetGlobalInt(1)].Visible=true;

Edit: Übrigens, wenn die drei GUIs unabhängig voneinander sichtbar oder unsichtbar sein sollen, würde z.B. Folgendes reichen:

Code: Alles auswählen

  int i;
  while (i<3) {
    if (GetGlobalInt(i)) gui[i].Visible=true; else gui[i].Visible=false;
    i++;
  }
Aber das nur nebenbei.
Use gopher repellent on funny little man
Benutzeravatar
Furymars
Süßwasserpirat
Süßwasserpirat
Beiträge: 485
Registriert: 13.06.2006, 20:45
Wohnort: Adventure Treff

Beitrag von Furymars »

Man man man so klug wie du wäre ich auch gern. :wink:
Danke! :D

Edit: Nur den unteren Skript hab ich irgendwie keine Logik gefunden. xD
Wahrscheinlich bin ich noch zu doof dafür!
Angekündigte Spiele:
MMM : "Nicht ohne meinen Hamster!"
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Reine Übungssache ;)

Das untere Skript zählt i von 0 bis 2 durch, d.h. das Ergebnis ist das Gleiche wie wenn man schreiben würde:

Code: Alles auswählen

  if (GetGlobalInt(0)) gui[0].Visible=true; else gui[0].Visible=false;
  if (GetGlobalInt(1)) gui[1].Visible=true; else gui[1].Visible=false;
  if (GetGlobalInt(2)) gui[2].Visible=true; else gui[2].Visible=false;
Use gopher repellent on funny little man
Benutzeravatar
Furymars
Süßwasserpirat
Süßwasserpirat
Beiträge: 485
Registriert: 13.06.2006, 20:45
Wohnort: Adventure Treff

Beitrag von Furymars »

Ja aber wenn ich dann wieder "SetGlobalInt (1)" in einem Raum bei Repeatly Execute reischreibe, ist immer noch derselbe Gui zu sehen, anstatt der, den ich eigentlich da haben wollte.
Angekündigte Spiele:
MMM : "Nicht ohne meinen Hamster!"
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Warum bei repeatedly execute?
Willst Du die GlobalInt vierzig mal pro Sekunde neu setzen?

Außerdem muss es "SetGlobalInt(1, X);" heißen.
Use gopher repellent on funny little man
Benutzeravatar
Furymars
Süßwasserpirat
Süßwasserpirat
Beiträge: 485
Registriert: 13.06.2006, 20:45
Wohnort: Adventure Treff

Beitrag von Furymars »

Edit: Irgendwie schein ich die Skripte in die falschen Kategorien reingeordnet zu haben. Wo muss ich die denn jetzt unterbringen damit die funzen? Hab sämtliches schon versucht. :(
Angekündigte Spiele:
MMM : "Nicht ohne meinen Hamster!"
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Äh, woher soll ich das wissen?
Wann sollen die GUIs denn geändert werden?
Welchen Effekt willst Du überhaupt erreichen?

Mehr Info.
Use gopher repellent on funny little man
Benutzeravatar
Furymars
Süßwasserpirat
Süßwasserpirat
Beiträge: 485
Registriert: 13.06.2006, 20:45
Wohnort: Adventure Treff

Beitrag von Furymars »

Was ich machen will ist folgende: Ich will 3 Guis unabhängig an- und ausschalten. Per GetGlobalInt möchte ich die jeweilige Gui anschalten (aber nicht alle). Nur ich weis mitlerweile nicht, was ich wo reinschreiben soll.
Angekündigte Spiele:
MMM : "Nicht ohne meinen Hamster!"
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Soll der Spieler das GUI wechseln können? Per Tastendruck? Oder durch Anklicken eines GUI-Buttons?

Oder schaltet das Spiel bei einer bestimmten Aktion automatisch um?
Use gopher repellent on funny little man
Benutzeravatar
Furymars
Süßwasserpirat
Süßwasserpirat
Beiträge: 485
Registriert: 13.06.2006, 20:45
Wohnort: Adventure Treff

Beitrag von Furymars »

Es soll sich ab einer gewissen Stelle umschalten, z.B. wenn ich einen Hotspot betrete.
Edit: Ich möchte genau wissen wo ich welche Skripte hinschreiben muss, damit GetglobalInt funzt.
Oder gibts da ne einfachere Variante?
Angekündigte Spiele:
MMM : "Nicht ohne meinen Hamster!"
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

GetGlobalInt funktioniert immer (zumindest innerhalb einer Funktion).

Wenn Du einen Hotspot betrittst?
Benutz dafür lieber Regions, dafür sind sie da.

Wo ist jetzt das Problem? In die Interaktion "player walk on region" (bzw. "player steps on hotspot") kommt eine RunScript-action und das Skript kommt dort rein, fertig.
Use gopher repellent on funny little man
Benutzeravatar
Furymars
Süßwasserpirat
Süßwasserpirat
Beiträge: 485
Registriert: 13.06.2006, 20:45
Wohnort: Adventure Treff

Beitrag von Furymars »

Hm ok ich versuchs mal. 8)
Edit: HÄää! Jetzt halt mich bitte net für blöd, aber wenn ich trotz
im gui-skript

Code: Alles auswählen

{
if (GetGlobalInt(0)) {
  gui[0].Visible=true;
  gui[1].Visible=false;
  gui[2].Visible=false;
}

if (GetGlobalInt(1)) {
  gui[1].Visible=true;
  gui[0].Visible=false;
  gui[2].Visible=false;
}

if (GetGlobalInt(2)) {
  gui[2].Visible=true;
  gui[0].Visible=false;
  gui[1].Visible=false;
}

}
und bei Player stands on Region

Code: Alles auswählen

  // script for Region 1: While player stands on region
GetGlobalInt(2);  

Und dann noch bei Raum 1 bei before Fadein

gui[0].Visible=false;
gui[1].Visible=false;
gui[2].Visible=false;

steht, muss es doch funktionieren, tut es aber nicht.
Ps: Die Region ist im Raum 4, aber der schaltet den blöden gui nicht an, wenn mein Charakter in Raum 4 da drauf trampelt.
Angekündigte Spiele:
MMM : "Nicht ohne meinen Hamster!"
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Probiers mal mit "SetGlobalInt(2, 1);"

GetGlobalInt verändert nix, sondern liefert den Wert zurück. (get=bekommen, nehmen).
Du hättest auch "0;" schreiben können, wär aufs selbe rausgekommen (nämlich nix).

Und was heißt bitte "im gui-skript"? Wo steht der (umständliche, von mir bereits gekürzte) Rest vom Code? Doch nicht in irgendeinem GUI-Skript, oder? Der muss doch direkt nach "SetGlobalInt(2,1)" aufgerufen werden.

Wir können uns das ganze Hin-und-her sparen, wenn Du mir einfach (verständlich!) mitteilst, was Du erreichen willst, sprich: wie das im Spiel später aussehen soll.
Dann sage ich Dir den einfachsten Weg, das zu erreichen.
Use gopher repellent on funny little man
Benutzeravatar
Furymars
Süßwasserpirat
Süßwasserpirat
Beiträge: 485
Registriert: 13.06.2006, 20:45
Wohnort: Adventure Treff

Beitrag von Furymars »

Wenn man unter die Gui- Kategorie geht, kann man doch auf Edit Script gehen und die Guis bearbeiten, das meine ich mit gui skript.

Also gut, ich habe 3 Verschiedene Guis mit 3 verschiedenen Portraits des Charakters (eins Gut / eins Neutral / eins Schlecht).
Ich will damit erreichen, dass ab einer bestimmten Aktion sich das Portrait des Charakters ändere. Da es aber im Spiel immer unnötig ist 3 Objekte für jeden Raum zu machen, wollte ich die 3 Dinger per guis hin- und herwechseln.

Und ich möcht nochma ganz von vorne wissen, wo und was ich einsetzen will.
Angekündigte Spiele:
MMM : "Nicht ohne meinen Hamster!"
Antworten