Autor Thema: Probleme bei AGS 3.2.1  (Gelesen 14095 mal)

Fatal M

  • Mod
  • kleiner Tentakel
  • **
  • Beiträge: 196
  • Geschlecht: Männlich
    • Profil anzeigen
    • Fatal hoch zwei
Re: Probleme bei AGS 3.2.1
« Antwort #30 am: 05. Juli 2011, 13:53:38 »
Wenn du die Variable wasser_ausgelaufen mit einem Wert belegen willst, darfst du nur ein Gleichheitszeichen nehmen.
wasser_ausgelaufen = true;
Bei Vergleichen nimmst du zwei Gleichheitszeichen.
if (wasser_ausgelaufen == true)
{
   // Wasser ist ausgelaufen.
}

ZAK

  • volljähriger Tentakel
  • *****
  • Beiträge: 503
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #31 am: 05. Juli 2011, 14:31:14 »
Error (line 18): Undefined token 'wasser_ausgelaufen'
Ich bin mal kurz weg, mich suchen. Wenn ich zurück komme bevor ich wieder da bin, sagt mir bitte das ich warten soll!

Bòógieman

  • International anerkannter Superheld
  • Globaler Moderator
  • alter Tentakel
  • *****
  • Beiträge: 2671
  • Geschlecht: Männlich
  • Grün Tentakel = Running Sushi!
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #32 am: 05. Juli 2011, 15:18:34 »
wasser_ausgelaufen soll wohl eine variable sein, welche man natürlich auch vor dem verwenden erst mal definieren muss  ;)

im globalen skript am besten ganz oben
[ags]bool wasser_ausgelaufen = false;
export bool wasser_ausgelaufen;[/ags]
(beim export bin ich mir jetzt nicht sicher, ob man das bool angeben muss, oder nicht)

in den räumen, wo du die variable abfragen willst, ebenfalls am besten ganz oben
[ags]import bool wasser_ausgelaufen;[/ags]
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #33 am: 05. Juli 2011, 15:34:38 »
Bei export braucht man den Typ nicht nochmal.
Und import lieber in den header, geht auch und ist viel praktischer.

Oder einfach bei "Global variables" anlegen, dann brauch man das alles nicht.


ZAK

  • volljähriger Tentakel
  • *****
  • Beiträge: 503
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #34 am: 05. Juli 2011, 16:07:56 »
das mit der bool funktion hatte ich schon...
ist der timer abgelaufen, muss ich erst den raum betreten damit die bool funtion funktioniert
Ich bin mal kurz weg, mich suchen. Wenn ich zurück komme bevor ich wieder da bin, sagt mir bitte das ich warten soll!

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #35 am: 05. Juli 2011, 17:59:38 »
Deswegen ja auch CallRoomScript(1), damit es eine sofortige Reaktion gibt.
Wie oft sollen wir das denn alles von vorne durchkauen? Dreimal müsste doch reichen.

ZAK

  • volljähriger Tentakel
  • *****
  • Beiträge: 503
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #36 am: 05. Juli 2011, 19:26:36 »
[ags]
 if (IsTimerExpired(1))
{
      CallRoomScript(1);
      wasser_ausgelaufen = true;
      //Skript was noch passieren soll
}
[/ags]
folgende meldung von AGS
Error (line 18): Undefined token 'wasser_ausgelaufen'
im anderem raum
[ags]void on_call(int p) {     
 if (p == 1)     {  // wasser läuft aus         
oWasserLache.Visible = true;           
Wait(5);         
 player.Say("Hier ist gerade Wasser ausgelaufen.");     
}
}   [/ags]

Zitat
Error (line 12): Undefined token 'oWasserLache'
Ich bin mal kurz weg, mich suchen. Wenn ich zurück komme bevor ich wieder da bin, sagt mir bitte das ich warten soll!

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #37 am: 05. Juli 2011, 21:49:42 »
Also doch alles von vorne? ::)

wasser_ausgelaufen ist eine globale Variable vom Typ bool, die VON DIR ANGELEGT WERDEN MUSS; ich mein, sie ist ja wohl kein Bestandteil von AGS oder so, ne?
Mehrfach wurde erklärt, dass man das entweder mit dem "Global variables"-Fenster in AGS macht oder mittels import und export im Skript.

oWasserLache ist ein Beispiel; keine Ahnung, wie Dein Wasserfleck-Objekt heißt. Kapierst Du wirklich nicht, wie Du das umzusetzen hast???
Dass Du entweder dein Objekt "oWasserLache" nennst, oder den Namen deines Objektes in den Code einfügst...? Ich mein, ernsthaft? Nach wochenlangem Arbeiten mit AGS?

Entweder gibst Du Dir jetzt mal ein bisschen Mühe und knallst uns nicht nur kommentarlos immer wieder die gleichen Fehlermeldungen hin, oder Du lässt es bleiben, würd ich sagen. Dann mach ich den thread hier dicht, und Du löscht AGS und fertig. Aber so gehts nicht weiter.

ZAK

  • volljähriger Tentakel
  • *****
  • Beiträge: 503
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #38 am: 05. Juli 2011, 22:12:55 »
das war meine Frage.!!!
wo setzte ich denn das
[ags]wasser_ausgelaufen == true;[/ags]
noch hin?

wenn ich es im
[ags]if (IsTimerExpired(1))
  {
wasser_ausgelaufen == true;
}[/ags]
reinsetze kommt die fehlermelung das er mit "wasser_ausgelaufen == true;" nichts anfangen kann
mit bool klappt es nicht (wie schon genannt).
aber vielleicht ist es doch besser Ags und mein account zu löschen.....
Tschüss und machts gut !!!
« Letzte Änderung: 06. Juli 2011, 00:10:26 von ZAK »
Ich bin mal kurz weg, mich suchen. Wenn ich zurück komme bevor ich wieder da bin, sagt mir bitte das ich warten soll!

Siel

  • Teenie Tentakel
  • ****
  • Beiträge: 389
  • Maybe a miracle will occur...
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #39 am: 05. Juli 2011, 22:18:26 »
aber vielleicht ist es doch besser Ags und mein account zu löschen.....

Es ist garantiert NICHT besser einfach das Handtuch zu werfen.

Zur Beantwortung deiner Frage:

Wie schon hier mehrmals genannt ist == falsch!
Das wird nur bei vergleichen verwendet, also in if-Bedingungen oder ähnlichem.
Zum setzen einer Variable nimmst du nur ein =
Dein Problem ist aber Immer Noch, dass du die Variable noch gar nicht deklariert hast!
Und wie du das nun machen kannst, spar ich mir, weil es hier schon zur genüge erklärt wurde.
Die Vergangenheit ist im Nachhinein meist eine schlechte Idee.

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #40 am: 05. Juli 2011, 23:02:21 »
Ja, deine "Frge" wurde bereits beantwortet, z.B. auf dieser Seite von Boogieman, lang und breit.

Wenn Du nicht liest, was andere schreiben, dann hat es wohl wenig Sinn, in einem Forum mitzumachen.
Und das hier ist nun mal kein bezahlter Programmierkurs. Mehr als immer wieder vorkauen können wir nicht.

Aber dass Du ernsthaft zum zweiten Mal den Mimosenabgang durchziehst... tschüss. Bis später.

ZAK

  • volljähriger Tentakel
  • *****
  • Beiträge: 503
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #41 am: 06. Juli 2011, 02:25:27 »
Ist aber kein Grund gleich ausfallend zu werden!
Meine Frage zu anfang war:
Zitat
mal was andere... wie kann ich denn ein "timer" in das spiel einbauen ? also ich führe eine aktion aus, wie z.b. ich stelle das wasser an, diese aktion soll dann gestartet wenn ich den raum verlasse und so etwa nach 10 min. soll dann alles unter wasser sein.
die lösung kam von:
SetTimer() und IsTimerExpired().
Letzteres muss logischerweise innerhalb der repeatedly_execute abgefragt werden.
Nach einigem hin und her habe ich das mit dem Timer ja auch hin bekommen.
Nur...
Zitat
mir geht es hier doch nur um die "timerfunktion" einer aktion, welch ja auch funktioniert, aber meine wünsche nicht erfüllt. der wassehahn läuft nach wie vor super und spielt auch den sound ab.
mir war es nur wichtig einen timer einzuschalten, der nach etwa 3 - 5 min. eine aktion hervorruft die ja auch durch ein "objekt" sichtbar ist. nachdem ich alles im skript geschrieben habe klappte es auch alles soweit, nur das er mir die zusatzansprüche, wie der player sagt etwas(egal im welem raum er sich gerade befindet) oder auch das wenn die aktion genau dann aktiviert wired wenn sich der player in diesem raum befindet (welches ich gerne versuche zu vermeiden) eine andere aktion nicht passiert, weil er ja dazu den raum erst betreten muss....
die einfache alternative dazu habe ich ja gefunden (leider nicht auf zeit) durch eine bool in einem andern raum. der nachteil dadurch ist, dass es diesmal nicht zeitbedingt, sonder das der player genau diesen raum betritt...
Da wurde mir dieser Vorschlag gemacht...
Zitat
Das Prinzip ist folgendermaßen: SetTimer(1,1000) startet einen internem Timer. 1000 frames sind per Grundeinstellung 25 Sekunden (1 Sek. = 40 Frames).
Dieser Timer läuft nun im Hintergrund runter.

Wird jetzt IsTimerExpired(1) aufgerufen, solange er noch läuft, wird "false" zurückgeliefert. Sobald der Timer abgelaufen ist, liefert IsTimerExpired(1) genau einmal "true" zurück, danach wieder false.

Wenn das Wasser erst auslaufen soll, nachdem man den Raum verlassen hat, setzt man SetTimer(1, GetGameSpeed()*60*3); in leave_room.
(Das sind übrgens drei Minuten. Man kann auch den Raum jederzeit wieder betreten. Falls es nur in Abwesenheit auslaufen soll, deaktiviert man den Timer einfach beim Betreten wieder: SetTimer(1, 0);
Hat übrigens bisschen was von alten Sierra-Spielen, dieses Rätsel. Und das ist kein Kompliment ;))

Dann fügt man Folgendes in repeatedly_execute in Global.asc ein:

[ags]  if (IsTimerexpired(1)) {
    CallRoomScript(1);
    wasser_ausgelaufen = true;
  }[/ags]

wasser_ausgelaufen ist eine globale bool-Variable, mit der ich in "before fadein" der betroffenen Räume beispielsweise Wasserflecken einschalten kann.
CallRoomScript(1) bewirkt, dass AGS in meinem Raumskript "on_call(1);" aufruft, d.h. ich setze z.B. Folgendes ins Raumskript des Flurs vor dem Bad:

[ags]void on_call(int p) {

  if (p == 1) {  // wasser läuft aus
    oWasserLache.Visible = true;
    Wait(5);
    player.Say("Hier ist gerade Wasser ausgelaufen.");
  }[/ags]
da tauchten doch erst die probleme auf...
soweit ich verstanden habe, handelt es sich hier doch um eine "bool" funktion
Zitat
wasser_ausgelaufen soll wohl eine variable sein, welche man natürlich auch vor dem verwenden erst mal definieren muss  ;)

im globalen skript am besten ganz oben
[ags]bool wasser_ausgelaufen = false;
export bool wasser_ausgelaufen;[/ags]
(beim export bin ich mir jetzt nicht sicher, ob man das bool angeben muss, oder nicht)

in den räumen, wo du die variable abfragen willst, ebenfalls am besten ganz oben
[ags]import bool wasser_ausgelaufen;[/ags]
und das ich dieses vorher im Global.ash
[ags]import bool bwasser_ausgelaufen;[/ags]
sowie im Global.asc
[ags]bool bwasser_ausgelaufen = false;
export bwasser_ausgelaufen;[/ags]
schreiben muss ist mir auch klar.
ich habe auch diverse bool funktionen ausprobiert...
Zitat
das mit der bool funktion hatte ich schon...
ist der timer abgelaufen, muss ich erst den raum betreten damit die bool funtion funktioniert
auch das mit dem "CallRoomScript(1)" habe ich probiert, mit dem erfolg nachdem ich den Raum betreten habe in dem das Wasser übergelaufen ist, wurde die "bool" funktion aktiviert, und als ich den Raum verlassen hatte, kam die Aktion ("Das Wasser ist übergelaufen") die ja eigendlich vorher kommen sollte (als der Timer abgelaufen ist.)
meine vermutung geht nun mal dahin, da ich die "bool" funktion im Raumskript "x" habe, wird sie ja auch nur dann aktiv, insofern ich diesen Raum auch betrete.(eine ähnliche situation hatte ich schon mal, die ich aber anders umgehen konnte.)
faktum ist: der timer funktioniert, aber die...
Zitat
wasser_ausgelaufen ist eine globale bool-Variable, mit der ich in "before fadein" der betroffenen Räume beispielsweise Wasserflecken einschalten kann.
CallRoomScript(1) bewirkt, dass AGS in meinem Raumskript "on_call(1);" aufruft, d.h. ich setze z.B. Folgendes ins Raumskript des Flurs vor dem Bad:

[ags]void on_call(int p) {

  if (p == 1) {  // wasser läuft aus
    oWasserLache.Visible = true;
    Wait(5);
    player.Say("Hier ist gerade Wasser ausgelaufen.");
  }[/ags]
funktioniert halt nicht (Error wegen oWasserLache, weil diese nicht in dem Raum vorhanden ist.)
mag sein das ich zu blöd bin (sollte wohl echt das AGS löschen, mit der folge das ich ja hier auch überflüssig bin) oder das wo anders der Wurm drin ist (und ich werde die lösung auch finden)
manchmal klappen Dinge nicht auf anhieb, wo selbst die besten Programmierer ihre Schwierigkeiten haben und dabei ist die Lösung doch so einfach gewesen.......

auch wenn ich in mancher hinsicht eine "Mimose" sein sollte, ist es noch lange kein grund unmenschlich miteinander umzugehen  !!!
Ich bin mal kurz weg, mich suchen. Wenn ich zurück komme bevor ich wieder da bin, sagt mir bitte das ich warten soll!

Rocco

  • Administrator
  • alter Tentakel
  • *****
  • Beiträge: 2371
  • Geschlecht: Männlich
    • Profil anzeigen
    • Maniac Mansion Mania
    • E-Mail
Re: Probleme bei AGS 3.2.1
« Antwort #42 am: 06. Juli 2011, 11:28:28 »
du hast also diese variable deklariert:
[ags]bool bwasser_ausgelaufen = false;[/ags]
und diese hier wird nicht erkannt:
[ags]wasser_ausgelaufen == true;[/ags]
schau mal ob dir ein Unterschied zwischen den Variablennamen auffällt.  ;)

und damit diese Variable mit dem Object verbunden ist:
[ags]oWasserLache.Visible = true;[/ags]
musst du natürlich deine Objectgrafik von der Wasserlache auch genauso benennen, sprich
deine Grafik/Object Wasserlacke muss oWasserLache heissen.



ZAK

  • volljähriger Tentakel
  • *****
  • Beiträge: 503
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #43 am: 07. Juli 2011, 05:00:52 »
vielen Dank für den hinweis und ja, mir ist es aufgefallen. meine bool funktion heisst ja auch anders (habe es aber auch in meinem skript dementspechend so gennant).
die bool funkion klappt ja auch, nur das ich nach ablauf des timer erst den raum betreten muss, damit diese auch die gewünschte aktivität hervorruft. wie schon gesagt, der timer funktioniert, nur das mit den aktionen (die in den anderen räumen hervorgerufen werden sollen) klappen einfach nicht, aber ich gebe nicht auf und werde auch dieses problem lösen.
danke für die tips und anregungen
Ich bin mal kurz weg, mich suchen. Wenn ich zurück komme bevor ich wieder da bin, sagt mir bitte das ich warten soll!

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #44 am: 07. Juli 2011, 05:47:45 »
Klappt es nicht im Sinne von "ich krieg die Fehlermeldung undefined token"? Dann gebe ich auf.

Oder klappt es nicht im Sinne von "es passiert nix"? Dann wäre es hilfreich, wenn Du die entsprechenden Code-Segmente postest.