Autor Thema: Verbenvorauswahl zur Laufzeit ändern (bei AGS)  (Gelesen 1916 mal)

Kiwa

  • volljähriger Tentakel
  • *****
  • Beiträge: 779
  • Geschlecht: Männlich
    • Profil anzeigen
Verbenvorauswahl zur Laufzeit ändern (bei AGS)
« am: 22. April 2013, 11:56:12 »
Hallo zusammen,

ich brauche eine Info zur Verbenvorauswahl bei AGS 3.2.1  Die Vorauswahl wird ja im AGS Editor bei "Description" mit >o für open usw. festgelegt.

Wenn man zB. einen Hotspot öffnet (Schrank, Mikrowelle use.) dann wird der geöffnete Schrank als Objekt dargestellt und dort kann dann 'Schließen' vorausgewählt werden (im AGS Editor). So weit so gut.

Ich habe aber nun eine Situation bei der sich der Hotspot nicht ändert, ich aber trotzdem im Spiel nachdem ich was mit dem Hotspot gemacht habe, eine andere Verbenvorauswahl haben möchte. Also das ich im Script sowas eingeben kann:

HotspotName.wechselVerbenvorauswahl(eActClose); und dann ist "schließen" anstat "öffnen" vorausgewählt (also wenn man mit der Maus drüberfährt). Ich wüsste jetzt auch nicht wonach ich suchen soll. Ist sowas überhaupt möglich? Falls nicht, ist es auch nicht schlimm, wenn es aber geht wäre es schön es nutzen zu können. Danke.

Beste Grüße Kiwa
Das Leben ist ein Adventure. Aber ohne Komplettlösung.

Für fast alles gibt es eine logische Erklärung. Für alles andere ein Placebo.

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Verbenvorauswahl zur Laufzeit ändern (bei AGS)
« Antwort #1 am: 23. April 2013, 20:20:39 »
Da es sehr oft vorkommt, dass bei einer Tür die Rechtklick-Aktion von Öffnen auf Schließen (und zurück) geändert werden muss, gibt es eigene Funktionen dafür im GlobalScript.
Im MM-Starterpack finde ich auch OpenCloseExtension*-Funktionen, die werden aber dank dem neuen Türensystem anscheinend nicht verwendet.

Direkt drunter gibt es die Funktion VariableExtensions().
Die Vorgehensweise ist im Grunde relativ einfach:
An den Namen des Hotspots wird ">v" angehängt, und in der Funktion wird die eigentliche Endung festgelegt.

Beispiel:
[ags]  // hotspot 3 in Raum 4
  if (player.Room == 4 && hotAt == hotspot[3]) {
    if (globale_variable == 0) location = location.AddExtension('o');
    else location = location.AddExtension('c');
  }[/ags]

Kiwa

  • volljähriger Tentakel
  • *****
  • Beiträge: 779
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Verbenvorauswahl zur Laufzeit ändern (bei AGS)
« Antwort #2 am: 24. April 2013, 00:02:15 »
Das hat funktioniert, danke.

An die Türen hatte ich bei der Sache garnicht gedacht. Aber die VariableExtensions() Funktion hätte ich dadurch ja auch nicht gefunden. Ich habe meine Funktion vor dem letzten if eingebaut(da steht noch sowas wie #ifdef NODEFINED). Ich wusste erst nicht ob meine Funktion da irgendwo bei dem if oder else rein soll.

Ich habe einfach ausprobiert und meine Funktion direkt hinter die while Schleife und vor dem letzten if/else und es hat auf anhieb geklappt. Danke nochmals.
Das Leben ist ein Adventure. Aber ohne Komplettlösung.

Für fast alles gibt es eine logische Erklärung. Für alles andere ein Placebo.