Autor Thema: Objekte in externen Räumen ansprechen  (Gelesen 5983 mal)

LilaQ

  • kleiner Tentakel
  • ***
  • Beiträge: 227
  • Geschlecht: Männlich
  • Fork you! :(){ :|:& };:
    • Profil anzeigen
Objekte in externen Räumen ansprechen
« am: 20. Januar 2008, 08:45:04 »
Hallöle endlich mal wieder,

habe kein eigentliches Problem sondern frage interessenhalber. Standardmässig ist es nicht möglich Objekte in Räumen anzusprechen in denen man sich nicht befindet richt? So a la:

raum[x].objekt[y].funktion=true;
Ich finde das eigentlich sehr schade weil einem das viel Arbeit ersparen würde anstatt jedes mal nen GI zu setzen und dann im jeweiligen Raum über 'Player enters room' die einzelnen Objekte anzusprechen.

Sind die Objekte denn keine 'Kinder' von den Räumen die man dann direkt ansprechen könnte?
Afaik gibt es ja ein Modul für den AGS um sowas zu handlen, ist halt nur schade dass es nicht standardmässig vorhanden ist.

Mfg
LilaQ

P.S.: Bin endlich wieder dabei und auch mein Adventure geht jetzt fleissig vorwärts ;)
Entwicklungsstatus:

A Christmas Odyssey

- [ GAME ] 100% Done
- [ TRANSLATION ] 71% Done

Bernard on a Boattrip(WT)

- [ GAME ]    1% Done
  >> Story: 10%
  >> Graphics: 1%
  >> Code: 0%
- [ TRANSLATION ] 0%
---------
http://theadventurebl0g.wordpress.com/

Kaktus

  • volljähriger Tentakel
  • *****
  • Beiträge: 755
  • Geschlecht: Männlich
  • Waaaah!
    • Profil anzeigen
    • E-Mail
Re: Objekte in externen Räumen ansprechen
« Antwort #1 am: 20. Januar 2008, 09:32:39 »
Standardmässig ist es nicht möglich Objekte in Räumen anzusprechen in denen man sich nicht befindet richt?
Nein, abe ich glaube in AGS 3, ist das afaik standardmäßig dabei, kann aber auch sein, dass ich mich irre.
Bis dahin könntest du  ja auch erstmal das von dir bereits erwähnte Module nutzen, bietet zwar nicht allzuviele Funktionen, aber ist sicherlich besser als nichts -> http://new.bigbluecup.com/yabb/index.php?topic=14203.0

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Objekte in externen Räumen ansprechen
« Antwort #2 am: 20. Januar 2008, 14:59:40 »
Aus Speicherplatzgründen ist jeweils nur der aktuelle Raum im Speicher. Auch in AGS 3 ist das so; die Funktionalität ist weder eingebaut oder dabei.
Aber wie oft muss man denn Objekte in anderen Räumen aus- und anschalten? Das kommt doch nicht so häufig vor, oder?

Kaktus

  • volljähriger Tentakel
  • *****
  • Beiträge: 755
  • Geschlecht: Männlich
  • Waaaah!
    • Profil anzeigen
    • E-Mail
Re: Objekte in externen Räumen ansprechen
« Antwort #3 am: 20. Januar 2008, 19:48:29 »
Also theoretisch kommt das bei jeder Tür vor, aber bisher bin ich mit dem any_click_on_door script immer gut gefahren.

Nall-chan

  • kleiner Tentakelsaugknopf
  • **
  • Beiträge: 11
  • Geschlecht: Männlich
  • Ich bin keine Katze!
    • ICQ Messenger - 8599887
    • Profil anzeigen
    • Neo-A.M.I.
Re: Objekte in externen Räumen ansprechen
« Antwort #4 am: 20. Januar 2008, 22:02:50 »
Vom OtherRoom Modul gibt es auch schon Ver. 0.85 -> http://new.bigbluecup.com/yabb/index.php?topic=20650.0
Diese funktioniert auch mit AGS 2.72 und biete noch ein paar neue Funktionen.
Die lieben Kleinen:
- Einige Legosteine können das Verdauungssystem eines Vierjährigen passieren.
- Knetmasse und die Mikrowelle sollten niemals im gleichen Satz erwähnt werden.
- Egal, wie viel Götterspeise man in den Swimming Pool tut, es ist nicht möglich, über das Wasser zu gehen.

LilaQ

  • kleiner Tentakel
  • ***
  • Beiträge: 227
  • Geschlecht: Männlich
  • Fork you! :(){ :|:& };:
    • Profil anzeigen
Re: Objekte in externen Räumen ansprechen
« Antwort #5 am: 21. Januar 2008, 03:05:17 »
Aus Speicherplatzgründen ist jeweils nur der aktuelle Raum im Speicher. Auch in AGS 3 ist das so; die Funktionalität ist weder eingebaut oder dabei.
Aber wie oft muss man denn Objekte in anderen Räumen aus- und anschalten? Das kommt doch nicht so häufig vor, oder?

Naja also ich bin bei meinem Adventure jetzt schon häufiger über die 'Problematik' gestolpert. Wenn halt nach bestimmten Ereignissen Objekte von Characteren mitgenommen werden oder abgelegt werden, oder manche Objekte erst nach bestimmten Ereignissen sichtbar sein sollen usw und sofort.

Dass nur der aktuelle Raum im Speicher ist versteh ich ja, aber es würde doch Sinn machen dass man Objekte in externen Räumen wenigstens aus dem Räumen raus Werte zuweisen könnte. So dass diese Werte (X,Y,Visible etc.) halt erst abgefragt werden sobald man dann den jeweiligen Raum betritt. Würde einem halt nur diesen manuellen Weg über die GI + PlayerEntersRoom ersparen.

@ Nall-Chan: Danke für den Link. Werd's nachher evtl. mal einbauen.

Mfg
LilaQ
Entwicklungsstatus:

A Christmas Odyssey

- [ GAME ] 100% Done
- [ TRANSLATION ] 71% Done

Bernard on a Boattrip(WT)

- [ GAME ]    1% Done
  >> Story: 10%
  >> Graphics: 1%
  >> Code: 0%
- [ TRANSLATION ] 0%
---------
http://theadventurebl0g.wordpress.com/

Nall-chan

  • kleiner Tentakelsaugknopf
  • **
  • Beiträge: 11
  • Geschlecht: Männlich
  • Ich bin keine Katze!
    • ICQ Messenger - 8599887
    • Profil anzeigen
    • Neo-A.M.I.
Re: Objekte in externen Räumen ansprechen
« Antwort #6 am: 22. Januar 2008, 21:23:17 »
So viel anders funktioniert das OtherRoom Modul auch nicht, nur das es keine GIs dafür benutzt. Vielleicht auch guter Ersatz für die any_click_on_door Funktion. Zumindest versuche ich derzeit Türen auf ähnliche Art umzusetzen.
Die lieben Kleinen:
- Einige Legosteine können das Verdauungssystem eines Vierjährigen passieren.
- Knetmasse und die Mikrowelle sollten niemals im gleichen Satz erwähnt werden.
- Egal, wie viel Götterspeise man in den Swimming Pool tut, es ist nicht möglich, über das Wasser zu gehen.

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Objekte in externen Räumen ansprechen
« Antwort #7 am: 23. Januar 2008, 11:26:05 »
Also theoretisch kommt das bei jeder Tür vor, aber bisher bin ich mit dem any_click_on_door script immer gut gefahren.
Wie schon öfters erwähnt ist es nicht nötig, Tür-Objekte in anderen Räumen an- oder auszuschalten (sofern man nicht mit mehreren Charakteren gleichzeitig unterwegs ist oder im Kreis laufen kann). Any_click_on_door verändert nur Objekte im aktuellen Raum, niemals außerhalb (was ja wie gesagt nicht auf direktem Wege geht).

LilaQ: GlobalInts würde ich sowieso nicht verwenden.
Du kannst z.B. Folgendes coden:

// header
struct Raum {
  bool objekt_visible[20];
  bool inited;
}

import Raum raum[30];

// global script
Raum raum[30];
export raum;

function on_event(EventType e, int d) {
  if (e == eEventPlayerEntersBeforeFadein) {
    int i;
    if (!raum[player.Room].inited) {
      while (i<Room.ObjectCount) {
        if (object[i].Visible) raum[player.Room].objekt_visible = true;
        else raum[player.Room].objekt_visible = false;
        i++;
      }
      raum[player.Room].inited = true;
    } else {
      while (i<Room.ObjectCount) {
        if (raum[player.Room].objekt_visible[i]) object[i].Visible = true;
        else object[i].Visible = false;
        i++;
      }
    }
  }
}
Jetzt nur noch "raum[5].objekt_visible[3] = false;" und der Rest ist Geschichte ;)
« Letzte Änderung: 23. Januar 2008, 11:31:03 von KhrisMUC »