Erkennen ob sich jmd nähert & Inventar-Items als Variable

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: Erkennen ob sich jmd nähert & Inventar-Items als Variabl

Beitrag von KhrisMUC »

Das läuft im Grunde alles auf den gleichen Mechanismus hinaus: globale Variable(n) verwenden, in repeatedly_execute runterzählen, bei 0 irgendwas machen.

Code: Alles auswählen

int timer1;

  // start
  timer = 10 * GetGameSpeed();  // 10 Sekunden

  // rep_exe
  if (timer1 > 0) timer1--;
  else {
    // zeug passiert
  }
Bzgl. des GUIs würde ich das Tween-Modul benutzen. Findest Du im AGS-Forum.

Deine Transparenzschleife würde ohne Wait() eigentlich die Transparenz ohne merkliche Verzögerung auf 0 setzen; so ein while-loop läuft locker zigtausende Mal pro Sekunde durch.
Das Problem ist aber, dass eine Änderung der Transparenz so nicht funktioniert; intern wird die Transparenz erst beim nächsten game loop (also z.B. nach einem Wait()) geändert, d.h. die Schleife hängt sich auf, da die while-Bedingung war bleibt.
Das hier würde nicht hängen bleiben:

Code: Alles auswählen

function fadein(this GUI*) {
  this.Transparency = 100;
  this.Visible = true;
  int t = 100;
  while(t != 0) {
    t -= 2;
    this.Transparency = t;
  }
}
Ist aber wie gesagt witzlos, da der Bildschirm während des while-Loops nicht neu gezeichnet wird und das Faden sowieso viel zu schnell wäre.
Use gopher repellent on funny little man
Rexxar
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 68
Registriert: 02.08.2012, 11:27

Re: Erkennen ob sich jmd nähert & Inventar-Items als Variabl

Beitrag von Rexxar »

Vielen Dank für deine Antwort.
Der Tipp mit dem Tween-Modul ist echt genial, nie wieder ohne! Das hilft mir allgemein sehr, das ist an vielerorts nützlich.
Auch das mit dem Timer wird mir noch nützlich sein.

Vielen vielen Dank für deine Antwort :D
Mfg Rexxar
Rexxar
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 68
Registriert: 02.08.2012, 11:27

Re: Erkennen ob sich jmd nähert & Inventar-Items als Variabl

Beitrag von Rexxar »

Als ich heute wie schon oft am Spiel programmieren wollte, ist mir aufgefallen, dass wenn das Spiel gestartet wird und man dann nach dem FadeIn die Maus an die obere Bildschirmkante bewegt,
das ganze abstürtzt mit einer Fehlermeldung.
---------------------------
Illegal exception
---------------------------
An exception 0xC0000005 occurred in ACWIN.EXE at EIP = 0x00559570 ; program pointer is +379, ACI version 3.3.3.0, gtags (2053,64)

AGS cannot continue, this exception was fatal. Please note down the numbers above, remember what you were doing at the time and post the details on the AGS Technical Forum.



Most versions of Windows allow you to press Ctrl+C now to copy this entire message to the clipboard for easy reporting.

An error file CrashInfo.dmp has been created. You may be asked to upload this file when reporting this problem on the AGS Forums. (code 0)
---------------------------
OK
---------------------------
Der Fehler tritt nicht auf, wenn ich auf einen Feind zulaufe und anfange, auf diesen einzuschlagen.
Wenn ich dann auf Restart Game drücke, tritt der Fehler auch nicht mehr auf.
Ich verstehe beim besten Willen nicht, woher das überhaupt kommt. Module sind das Tween Module sowie das Smooth Scroll & Parallax Module.
Aufeinmal war dieser Fehler da, dabei habe ich nichts geändert und die Iconbar ist wie im Default auf "when mouse moves to the top of the screen" gestellt.
Ich verstehe nichts mehr.
Das einzige, was ich gemacht habe, war, das Spiel zu builden und im Fullscreen zu starten. Das wird ja wohl noch erlaubt sein, zudem ich das Problem nur im Fenstermodus sehen kann, im Vollbild tritt es nicht auf. Dieser CrashInfo.dmp sagt mir im Prinzip:
Prozessarchitektur: x86
Ausnahmecode: 0xC0000005
Ausnahmeinformationen: Der Thread hat versucht, von einer virtuellen Adresse, für die er nicht über die entsprechenden Zugriffsrechte verfügt, zu lesen oder in diese Adresse zu schreiben.
Heapinformationen: Nicht vorhanden
Systeminformationen
-------------------
Betriebssystemversion: 6.3.9600
CLR-Version(en):

(Die ganzen dlls die da noch aufgelistet waren habe ich mal rausgeschnitten, genau wie die Angaben in welchem Ordner das Spiel liegt)
Ich kapier das alles nicht...
Hat hier jemand Ahnnung?
Mfg Rexxar
Rexxar
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 68
Registriert: 02.08.2012, 11:27

Re: Erkennen ob sich jmd nähert & Inventar-Items als Variabl

Beitrag von Rexxar »

Liegt wohl an Direct 3D 9 Treiber.
Wähle ich Direct Draw 5 aus, geht alles. lol #-o :!:
Mfg Rexxar
Antworten