Inventargegenstände einpacken?

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Inventargegenstände einpacken?

Beitrag von [ZENSIERT] »

Gut, diese Frage wendet sich jetzt an diejenigen, die MMD, Zak1, MI1 oder Sam & Max gespielt haben. Dort gibt es ja Momente, in denen man alles an Inventargegenständen verliert und diese dann woanders findet (im Umschlag, im Schrank...)

Gut, wie bekomm ich das hin? :)

Mein Vorschlag wäre Arrays, aber das ist bei mir schon mal misslungen

ICh benutze AGS 2.7
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge

Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.

Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Benutzeravatar
Problem
Logik-Lord
Logik-Lord
Beiträge: 1261
Registriert: 16.12.2004, 18:35
Wohnort: Kassel
Kontaktdaten:

Beitrag von Problem »

Man könnte alle Inventory-Items durchgehen (sind ja nummeriert), und abfragen, ob der Spieler sie besitzt. Wenn ja -> z.B. einfach einem "nicht-existenten" Character übergeben.
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4406
Registriert: 12.03.2004, 16:55

Beitrag von DieFüchsin »

Wenn ich mich nicht irre, gibts doch auch den Befehl "lose inventory". Damit kannst du nach der Abfrage, ob der Charakter den Gegenstand besitzt, diesen aus dem Inventar entfernen.
Benutzeravatar
neon
Adventure-Treff
Adventure-Treff
Beiträge: 29982
Registriert: 08.07.2004, 10:55
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von neon »

Richtig, aber wenn Du ihm dann die Gegenstände wiedergeben willst, weißt Du nicht mehr welche er hatte und welche nicht.
"Ich habe mich so gefühlt, wie Sie sich fühlen würden, wenn sie auf einer Rakete sitzen, die aus zwei Millionen Einzelteilen besteht - die alle von Firmen stammen, die bei der Regierungsausschreibung das niedrigste Angebot abgegeben haben"

- John Glenn nach der ersten Erdumrundung 1962
Benutzeravatar
Problem
Logik-Lord
Logik-Lord
Beiträge: 1261
Registriert: 16.12.2004, 18:35
Wohnort: Kassel
Kontaktdaten:

Beitrag von Problem »

Eben. Und deshalb wird das ganze Zeug einfach in das Inventory eines unbenutzten Charakters gepackt.
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4406
Registriert: 12.03.2004, 16:55

Beitrag von DieFüchsin »

warum weiß ich das dann nicht mehr? ich schreibe lose inventory(5), mein charakter verliert inventargegenstand nr 5. Und dann wenn er ihn wieder bekommt, schreibe ich add inventory(5).
Benutzeravatar
neon
Adventure-Treff
Adventure-Treff
Beiträge: 29982
Registriert: 08.07.2004, 10:55
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von neon »

Ja Du weißt das, aber wie merkt sich das Programm, welche Gegenstände zum Zeitpunkt des Wegnehmens im Inventar waren?
"Ich habe mich so gefühlt, wie Sie sich fühlen würden, wenn sie auf einer Rakete sitzen, die aus zwei Millionen Einzelteilen besteht - die alle von Firmen stammen, die bei der Regierungsausschreibung das niedrigste Angebot abgegeben haben"

- John Glenn nach der ersten Erdumrundung 1962
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7308
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag von Fightmeyer »

ICh dneke auch, daß mit dem "Schein"-Charakter ist die beste Lösung. Oder wahlweise ein Array, in dem dann alle Inventory-Nummern abgelegt werden.
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

Einem unspielbarem Char alle Gegenstände zu geben wär auch ne möglichkeit. Aber Array ist meiner Meinung nach nicht so verschwenderisch.
DieFüchsin hat geschrieben:Wenn ich mich nicht irre, gibts doch auch den Befehl "lose inventory". Damit kannst du nach der Abfrage, ob der Charakter den Gegenstand besitzt, diesen aus dem Inventar entfernen.
Ich dachte, so langsam wissen alle, dass ich viele AGS-Befehle beherrsche...
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge

Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.

Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Hier:

Code: Alles auswählen

function MoveInventory(Character *cone, Character *ctwo) {
  // komplettes Inventar von cone an ctwo übergeben
  int c=1;
  int a;
  int ic;
  while(c<=300) {
    a=cone.InventoryQuantity[c];
    if (a>0) {
      ic=1;
      while(ic<=a) {
        cone.LoseInventory(inventory[c]);     // <--- EDIT: [] statt ()
        ctwo.AddInventory(inventory[c]);
        ic++;
      }
    }
    c++;
  }
}
Wenn der Spieler jetzt sein Inventar verliert:

Code: Alles auswählen

MoveInventory(player, dummy);
Und wenn er es wieder zurückbekommen soll:

Code: Alles auswählen

MoveInventory(dummy, player);
Hab's nicht getestet, aber sollte funktionieren.
Zuletzt geändert von KhrisMUC am 13.07.2005, 14:06, insgesamt 2-mal geändert.
Use gopher repellent on funny little man
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

khrismuc hat geschrieben:

Code: Alles auswählen

    c++;
Jaja, Schleichwerbung ;)

Das Script müsste eigentlich gehen, aber ich versuche mit Hilfe dieses Scripts eins mit Arrays zu machen.
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge

Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.

Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

[ZENSIERT] hat geschrieben:Das Script müsste eigentlich gehen, aber ich versuche mit Hilfe dieses Scripts eins mit Arrays zu machen.
Und warum?
Nimm doch einfach irgendeinen NPC. Wenn's Dir um Speichersparen geht, isses noch sinnloser, nen Array zu nehmen.
Use gopher repellent on funny little man
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

Code: Alles auswählen

function OwningInvs(Character *chara) {
  // komplettes Inventar von chara in einem Array zurück
  int c=1;
  int a;
  int ic;
  int ret[AGS_MAX_INV_ITEMS];
  while(c<=AGS_MAX_INV_ITEMS ) {
    a=chara.InventoryQuantity[c];
    if (a>0) {
      ic=1;
      while(ic<=a) {
        chara.LoseInventory(inventory[c]);
        ret[c] = a;
        ic++;
      }
    }
    c++;
  }
}
Fehlerfrei?

Für den Fall, dass es nur einen Char gibt und der der PC ist (und alle anderen bloß Objekte)
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge

Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.

Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Smiley
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 163
Registriert: 28.04.2005, 16:26
Wohnort: Mönchengladbach

Beitrag von Smiley »

würd das auch so gehen?

Code: Alles auswählen

int a[300];

function LoseInv(Character *cone) {
  // komplettes Inventar verlieren
  int c=1;
  while(c<=300) {
          a[c]=cone.InventoryQuantity[c];
          cone.LoseInventory(inventory(c));
          c++;
         }
  }

function AddInv(Character *cone) {
  // Inventar zurückbekommen
  int c=1;
  while(c<=300) {
           if (a[c] > 0) {
              cone.AddInventory(inventory(c));
              cone.InventoryQuantity[c]=a[c];
              }
            c++;
         }
  }
Zuletzt geändert von Smiley am 13.07.2005, 14:19, insgesamt 1-mal geändert.
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

Garantiert nicht, diese Namen sind reserviert ;)

Aber vom Inhalt her kein Problem
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge

Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.

Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Antworten