Inventargegenstände einpacken?

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Sieht gut aus, aber:

int ret[x] erstellt einen Array mit x Elementen, von ret[0] bis ret[x-1], deswegen sollte es heissen: while(c<AGS_MAX...

ret[c]=a; sollte aus der inneren while-Schleife raus, es wird sonst eventuell unnötig mehrfach ausgeführt.

Ist kein Muss, man sollte sich aber sauberes programmieren angewöhnen. Du wirst im Spiel sicher keine 300 Items haben, die der player alle 5x dabei hat, aber sauber ist besser.
Für den Fall, dass es nur einen Char gibt und der der PC ist (und alle anderen bloß Objekte)
Gerade dann würde ich einfach einen zweiten Char nehmen. Der braucht ja nichtmal ne eigene View. Du lässt seinen starting room einfach auf -1.
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] »

Du kannst es genauso gut einem Charakter geben, mit dem man eigentlich nur reden kann.

Andere Frage, wie kann man die Reihenfolge speichern? (d.h. ganz oben ist ein Buch, das vor dem Verlieren ganz oben steht, steht bei Neuerhalten ganz unten, weil es die Nummer 300 hat)
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 »

Smiley hat geschrieben: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.InventoryQuantity[c]=0    //  EDIT 
          c++;
         }
  }

function AddInv(Character *cone) {
  // Inventar zurückbekommen
  int c=1;
  while(c<=300) {
            if (a[c]>0) {
              // EDIT 
              cone.InventoryQuantity[c]=cone.InventoryQuantity[c]+a[c];
            }
            c++;
         }
  }
sehr gute Idee, habs leicht editiert
natürlich!
Lose/AddInventory braucht man gar nicht, die vermindern/erhöhen eh nur InventoryQuantity.

ABER: auf blöd geht's auch so (Reihenfolge bleibt erhalten):

verlieren:
invMain.CharacterToUse = cDummy;

zurück:
invMain.CharacterToUse = player;

Das geht aber auch nur, wenn der player zwischendurch keine neuen Items einsammeln kann.
Use gopher repellent on funny little man
Smiley
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 163
Registriert: 28.04.2005, 16:26
Wohnort: Mönchengladbach

Beitrag von Smiley »

[ZENSIERT] hat geschrieben:Du kannst es genauso gut einem Charakter geben, mit dem man eigentlich nur reden kann.

Andere Frage, wie kann man die Reihenfolge speichern? (d.h. ganz oben ist ein Buch, das vor dem Verlieren ganz oben steht, steht bei Neuerhalten ganz unten, weil es die Nummer 300 hat)

Code: Alles auswählen

int a[AGS_MAX_INV_ITEMS];
int b[AGS_MAX_INV_ITEMS];


function LoseInv() {  // Inventar verlieren 
int c;
while (c <= invHaupt.ItemCount) {
      if (invHaupt.ItemAtIndex[c] != null){
         a[c] = invHaupt.ItemAtIndex[c].ID;
         b[c] = cEgo.InventoryQuantity[invHaupt.ItemAtIndex[c].ID];
         }
      c++;
      }
 
while (invHaupt.ItemCount != 0 ) { // Inventar löschen
      if (invHaupt.ItemAtIndex[0] != null){
         cEgo.LoseInventory(invHaupt.ItemAtIndex[0]);  
         }
      }        
}



function AddInv() {  // Inventar zurückbekommen
int c;
while (c <= invHaupt.ItemCount) {
      if (a[c] > 0) {
         cEgo.AddInventory(inventory[a[c]]);
         cEgo.InventoryQuantity[a[c]]=b[c];
         }
      c++;
      }
} 
edit:
so funzt jetzt...wirklich...
Zuletzt geändert von Smiley am 15.07.2005, 22:56, insgesamt 5-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] »

MEine Güte seid ihr gut ;)

Meine Frage ist auf jeden Fall beantwortet, danke an alle
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