Autor Thema: Repeatedly Execute - auch permanent in einem Raum?  (Gelesen 3309 mal)

SeltsamMitHut

  • Dott-MMM-Entwickler
  • Teenie Tentakel
  • **
  • Beiträge: 259
  • Geschlecht: Männlich
    • Profil anzeigen
    • E-Mail
Repeatedly Execute - auch permanent in einem Raum?
« am: 23. August 2007, 12:19:37 »
Hi,

hab folgendes Problem:

Ein Vorgang unter Repeatedly Execute (Interaction Editor, Raum-Script) wird ja während der Player interagiert  (wenn er etwas im Intentar oder einen Hotspot anschaut) oder bei Aktionen im Raum (bei denen auch "Wait" verwendet wird) solange nicht ausgeführt, bis wieder "AktionsPause" ist. Ist ja auch sinnvoll. Aber gibt es eine Möglichkeit, einen einzigen Vorgang davon auszunehmen? Allerdings noch für AGS 2.62...

Danke!
"komm her, süßer, willst du was essen?"

Rocco

  • Administrator
  • alter Tentakel
  • *****
  • Beiträge: 2352
  • Geschlecht: Männlich
    • Profil anzeigen
    • Maniac Mansion Mania
    • E-Mail
Re: Repeatedly Execute - auch permanent in einem Raum?
« Antwort #1 am: 23. August 2007, 12:35:23 »
soweit ich weiss in der Repeatedly Execute always, diese funktion wird auf biegen und brechen und bei jedem wetter ausgeführt  :)

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 988
    • Profil anzeigen
Re: Repeatedly Execute - auch permanent in einem Raum?
« Antwort #2 am: 23. August 2007, 12:40:25 »
Genau, einfach manuell ins room script einfügen:

function repeatedly_execute_always() {
  //zeugs
}

SeltsamMitHut

  • Dott-MMM-Entwickler
  • Teenie Tentakel
  • **
  • Beiträge: 259
  • Geschlecht: Männlich
    • Profil anzeigen
    • E-Mail
Re: Repeatedly Execute - auch permanent in einem Raum?
« Antwort #3 am: 23. August 2007, 14:54:45 »
Hmm...

"Variable 'function repeatedly_execute_always' is already imported..."

Wo genau muss das ins Room Script rein?

Müssen da noch irgendwelche Sectionstarts hin? Hab echt keine Ahnung...  :-[
"komm her, süßer, willst du was essen?"

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 988
    • Profil anzeigen
Re: Repeatedly Execute - auch permanent in einem Raum?
« Antwort #4 am: 23. August 2007, 22:31:46 »
Sectionstarts fügt man grundsätzlich nie selbst ein, egal, was man macht.

Ich hab sie bei mir ins room script eingefügt, funktionierte anstandslos.

Wo ins script Du sie packst, ist völlig egal.

Check mal deinen script header (Strg-H), ob da eine Zeile "import function repeatedly_execute_always();" drin ist.

SeltsamMitHut

  • Dott-MMM-Entwickler
  • Teenie Tentakel
  • **
  • Beiträge: 259
  • Geschlecht: Männlich
    • Profil anzeigen
    • E-Mail
Re: Repeatedly Execute - auch permanent in einem Raum?
« Antwort #5 am: 24. August 2007, 11:22:50 »
Jepp, sie wird im Script Header importiert und steht im Bern-Starerpack noch in den ersten 100 Zeilen:

function repeatedly_execute_always () {
#define BGS_DELAY 6 // this is the animation delay
  if (bgspeechoverlayid!=-1){
    if (IsOverlayValid(bgspeechoverlayid)){
      if (bgscounter>=BGS_DELAY*2) bgscounter=0;
        SetCharacterFrame(bgspeechcharid,character[bgspeechcharid].talkview+1,character[bgspeechcharid].loop, bgscounter/BGS_DELAY);
        bgscounter++;
    }
    else {
      ReleaseCharacterView(bgspeechcharid);
      bgspeechoverlayid=-1;
    }
  }
}

Vesuche einfach mal, mein Zeug dort einzufügen (mit Abfrage, ob ich im betreffenden Raum bin).
"komm her, süßer, willst du was essen?"

SeltsamMitHut

  • Dott-MMM-Entwickler
  • Teenie Tentakel
  • **
  • Beiträge: 259
  • Geschlecht: Männlich
    • Profil anzeigen
    • E-Mail
Re: Repeatedly Execute - auch permanent in einem Raum?
« Antwort #6 am: 24. August 2007, 11:48:23 »
Also das eben ist bei dem Versuch gebleiben. Haut man das dort ins GlobalScript, dann schluckt er den Rest nicht mehr. Hab auch alle Raumvaraiblen durch GLobalInts ersetzt, geht nicht, haut man da irgendwas mehr rein, motzt er bei funtion FaceDirection...

Scheint also absolut nicht egal zu sein, an welche Stelle man die function repeatedly_execute_always () reinsetzt und was da rein kommt... hab echt keine Ahnung...
"komm her, süßer, willst du was essen?"

Mister L

  • Boss der T.I.A.
  • Globaler Moderator
  • Ehrwürdiger Tentakel
  • *****
  • Beiträge: 3106
  • Geschlecht: Männlich
  • "R.I.P. Clever & Smart † 1958 -2023"
    • Profil anzeigen
    • Maniac Mansion - Night of the Meteor
Re: Repeatedly Execute - auch permanent in einem Raum?
« Antwort #7 am: 24. August 2007, 12:08:39 »
Könnte man das nicht auch mit einem 'Timer' lösen, der sofort nach Betreten des Raums losgeht?  ???

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 988
    • Profil anzeigen
Re: Repeatedly Execute - auch permanent in einem Raum?
« Antwort #8 am: 24. August 2007, 13:29:12 »
@MisterL: Hm. Und wo kommt "if (IsTimerExpired(x))" rein...? ;)

Also:
1. Wo im room script sie steht, ist egal. Im global script ist das was Anderes; Funktionen müssen vor dem Aufruf deklariert werden. Wenn Du also FaceDirection benutzen willst, pack es drüber oder besser die rep_ex_always ganz ans Ende.

2. Wenn Du globale Variablen verwendest und diese vor der rep_ex_always deklarierst, ex- und importierst, klappt es problemlos. Im global script kannst Du allerdings keine Hotspot- oder Objectnamen verwenden; Du musst hotspot[X] bzw. object[X] benutzen.

3. Pack die rep_ex_always ins room script und entferne einfach die import-Zeile aus dem header. Die gehört da sowieso nicht rein.

SeltsamMitHut

  • Dott-MMM-Entwickler
  • Teenie Tentakel
  • **
  • Beiträge: 259
  • Geschlecht: Männlich
    • Profil anzeigen
    • E-Mail
Re: Repeatedly Execute - auch permanent in einem Raum?
« Antwort #9 am: 24. August 2007, 14:59:44 »
3. Pack die rep_ex_always ins room script und entferne einfach die import-Zeile aus dem header. Die gehört da sowieso nicht rein.

Danke, das hat geholfen. Darauf muss man aber auch kommen...

Und das rausnehmen kann wirklich nichts anrichten?
"komm her, süßer, willst du was essen?"

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 988
    • Profil anzeigen
Re: Repeatedly Execute - auch permanent in einem Raum?
« Antwort #10 am: 24. August 2007, 19:28:59 »
Nö, es sei denn, irgendwo im Starterpack würde (völlig überflüssigerweise) von Hand die Funktion aufgerufen.
Im schlimmsten Fall würdest Du aber nur beim Kompilieren eine "Undefined Token"-Meldung kriegen.