Charakter durchläuft eine Region

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Rayman
Logik-Lord
Logik-Lord
Beiträge: 1388
Registriert: 07.01.2006, 20:08

Charakter durchläuft eine Region

Beitrag von Rayman »

Auf dem Boden habe ich eine Region erstellt.
Wenn aber auf ein Hotspot geklickt wird in der Nähe von dieser Region, dann durchläuft der Charakter diese und sie wird ignoriert.
Gibt es da einen Script, dass selbst beim Betreten dieser Region durch Anklicken von einem Hotspot über der Region, sie aktiviert wird?
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Sie wird zwar nicht ignoriert, aber die Verarbeitung landet in der queue und wird erst ausgeführt, nachdem der Charakter gestoppt hat.

Workaround:
Ziemlich am Anfang des global scripts wird die repeatedly_execute_always definiert.
Folgendes setzt man direkt davor:

Code: Alles auswählen

function doRegion(int r) {
  if (r>0) { // walk on
    if (player.Room==1 && r==1) PlaySound(94);
  }
  else { // walk off
    r=-r;
    if (player.Room==1 && r==1) SayBackgroundEx(cSyd, "Runtergelaufen!");
  }
}

int or;

function checkRegion(Region*r) {
  int cr=r.ID;
  if (cr!=or) {
    if (or!=0 && region[or].Enabled) doRegion(-or);
    if (cr!=0 && region[cr].Enabled) doRegion(cr);
    or=cr;
  }
}
Als Beispiel mal Region 1 in Raum 1 schon eingetragen.

In die repeatedly_execute_always fügt man direkt am Anfang noch folgende Zeile ein:

Code: Alles auswählen

  checkRegion(Region.GetAtRoomXY(player.x, player.y));
Use gopher repellent on funny little man
Benutzeravatar
Rayman
Logik-Lord
Logik-Lord
Beiträge: 1388
Registriert: 07.01.2006, 20:08

Beitrag von Rayman »

Danke KhrisMuc für den Tipp. :D

Ich habe mir dann noch zusätzliche Hilfe von Zensi geholt und jetzt gehts einwandfrei, weil ich einige Dinge nicht so ganz verstanden habe.
Antworten