Wie benutze ich bestimmtes Inventar mit anderem bestimmtem?

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Azrael
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 124
Registriert: 13.05.2003, 16:46
Kontaktdaten:

Wie benutze ich bestimmtes Inventar mit anderem bestimmtem?

Beitrag von Azrael »

Hallo zusammen,

ich habe mich bisher nie mit Inventar beschäftigt und bin nun auf folgendes Problem gestoßen:

Im Raum befinden sich 3 Gegenstände. Alle 3 kann ich nehmen. Nun möchte ich, dass sich Inventar 1 und 2 über "benutze" kombinieren lassen. Gegenstand 3 soll aber keinen Einfluss haben. Wie kann ich definieren, dass sich nur Inventar 1 und 2 kombinieren lassen, nicht 1 mit 1, 1 mit 3, 2 mit 2 oder 2 mit 3? Hab schon an globale Variablen gedacht, bin an der Ecke aber nicht weitergekommen.

Könnt ihr mir sagen, wie ich das programmtechnisch definieren kann (am besten in AGS 2.x)? In der Hilfe hab ich keine zusammenhängenden Scripte gefunden.

Liebe Grüße,
Azrael :P
Benutzeravatar
gff
Profi-Abenteurer
Profi-Abenteurer
Beiträge: 802
Registriert: 09.03.2004, 18:49
Wohnort: Ge
Kontaktdaten:

Re: Wie benutze ich bestimmtes Inventar mit anderem bestimmtem?

Beitrag von gff »

Inventory items--> interaction(z.B. von Gegenstand 1)--> use Inventory on this item-->neues Script

Code: Alles auswählen

if(player.ActiveInventory==i2)  
{
player.LoseInventory(ibild);
player.LoseInventory(ischere);
player.AddInventory(imaske);
Display("Gut!Ich schneide das Gesicht aus dem Bild aus");
}
    
else if(player.ActiveInventory==i3)  
{
Display("Bist du des Wahnsinns fette Beute?");
} 

else if(player.ActiveInventory==i1)  
{
Display("Dat jeht nich. Weisse Bescheid! Isch kandidiere^^");
} 
oder

Code: Alles auswählen

else if(player.ActiveInventory!=i2)  
{
Display("Netter Versuch!");
} 
Heißt: auf Item 1 kann man nur Item 2 anwenden, weil die andern ungleich 2 sind. Bei allen anderen Items wird dann dieser Satz angezeigt.
Globale Variablen brauchst du für Inventargegenstände nicht.
Benutzeravatar
Azrael
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 124
Registriert: 13.05.2003, 16:46
Kontaktdaten:

Re: Wie benutze ich bestimmtes Inventar mit anderem bestimmtem?

Beitrag von Azrael »

Hallo gff,

super, vielen Dank. Hat wunderbar geklappt :)

Viele Grüße,
Azrael
Benutzeravatar
Fellowtraveller
Frischling
Frischling
Beiträge: 6
Registriert: 21.03.2010, 16:11
Wohnort: Zweibrücken

Re: Wie benutze ich bestimmtes Inventar mit anderem bestimmtem?

Beitrag von Fellowtraveller »

Hallo zusammen,

ich bin neu hier und arbeite gerade an meinem ersten kleinen Adventure, welches eigentlich insbesondere für das Geocaching (GPS-unterstützte Schnitzeljagd) gedacht sein soll.

An dieser Stelle möchte ich mich gleich entschuldigen, weil ich einen alten Thread aufwärme. Ich habe die Dynamic Help vom AGS 3.0 durchforstet, dazu hier die Threads, im Internet gelesen und mir auf youtube die entsprechenden Tutorials angesehen, und eigentlich ist meine Frage schon beantwortet worden. Es klappt aber leider trotzdem nicht.

Mein Problem ist folgendes: Ich will, wie hier schon gefragt, zwei (und nur diese zwei) Gegenstände miteinander kombinieren, damit ein dritter rauskommt. Ich habe das Beispiel-Script oben umgewandelt:



function iPizza2_UseInv()
{
if(player.ActiveInventory == iSalzstreuer)

player.LoseInventory(iSalzstreuer);
player.LoseInventory(iPizza2);
player.AddInventory(iSalzigePizza);
Display("Jetzt habe ich eine sehr salzige Pizza.");
}

else if(player.ActiveInventory!=iSalzstreuer)
{
Display("Blöde Idee!");
}

Das ganze hab ich nochmal für Pizza2 umgeschrieben. Beim Abspielen kommt immer folgende Anmerkung: "parse error: unexpected else".

Was mache ich falsch? :(

Danke und bitte nochmal um Entschuldigung!

Liebe Grüße, Fellowtraveller
pikubik
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 76
Registriert: 09.04.2006, 17:51
Kontaktdaten:

Re: Wie benutze ich bestimmtes Inventar mit anderem bestimmtem?

Beitrag von pikubik »

Du hast zwei Klammern vergessen (rot markiert):

function iPizza2_UseInv()
{
if(player.ActiveInventory == iSalzstreuer)
{
player.LoseInventory(iSalzstreuer);
player.LoseInventory(iPizza2);
player.AddInventory(iSalzigePizza);
Display("Jetzt habe ich eine sehr salzige Pizza.");
}

else if(player.ActiveInventory!=iSalzstreuer)
{
Display("Blöde Idee!");
}

}
Benutzeravatar
Fellowtraveller
Frischling
Frischling
Beiträge: 6
Registriert: 21.03.2010, 16:11
Wohnort: Zweibrücken

Re: Wie benutze ich bestimmtes Inventar mit anderem bestimmtem?

Beitrag von Fellowtraveller »

Oh, super, jetzt klappts!

Das ist für mich echt schwierig mit diesen ganzen Klammern. Die machen einen wahnsinnig.

Vielen, vielen Dank!

Fellowtraveller
Mein Informatiklehrer sagte immer, der Computer tut nur das, was der Mensch sagt. Ich glaub das nicht. Ich glaub, der Computer hat doch ein Eigenleben, besonders, wenn man in AGS arbeitet.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: Wie benutze ich bestimmtes Inventar mit anderem bestimmtem?

Beitrag von KhrisMUC »

Zum Verständnis: Klammern haben genau einen Zweck: mehrere Befehle zu einem Block zusammenfassen.
Das muss entweder bei Definitionen von Funktionen gemacht werden, oder bei den Befehlen, die abhängig von if-Abfragen ausgeführt werden sollen.

Und ein "else if" braucht man nur, wenn man mehr als einen Fall prüfen will. Ansonsten deckt ein einfaches "else" alle anderen Fälle ab.
Use gopher repellent on funny little man
Benutzeravatar
Fellowtraveller
Frischling
Frischling
Beiträge: 6
Registriert: 21.03.2010, 16:11
Wohnort: Zweibrücken

Re: Wie benutze ich bestimmtes Inventar mit anderem bestimmtem?

Beitrag von Fellowtraveller »

Vielen Dank nochmal für die hilfreichen Antworten! Ich hab überraschenderweise :-) auch bisher alles so hinbekommen, wie ich das wollte. Bin fast fertig *freu*!
Mein Informatiklehrer sagte immer, der Computer tut nur das, was der Mensch sagt. Ich glaub das nicht. Ich glaub, der Computer hat doch ein Eigenleben, besonders, wenn man in AGS arbeitet.
Rulaman
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 133
Registriert: 25.09.2004, 18:13

Re: Wie benutze ich bestimmtes Inventar mit anderem bestimmt

Beitrag von Rulaman »

Nur so nebenbei,

wenn man mit Einrückungen arbeitet (meistens Tabs), wird es übersichtlicher.

Code: Alles auswählen

function iPizza2_UseInv()
{
  if(player.ActiveInventory == iSalzstreuer)
  {
    player.LoseInventory(iSalzstreuer);
    player.LoseInventory(iPizza2);
    player.AddInventory(iSalzigePizza);
    Display("Jetzt habe ich eine sehr salzige Pizza.");
  }
  else if(player.ActiveInventory!=iSalzstreuer)
  {
    Display("Blöde Idee!");
  }
}
Dann passieren einem Klammerfehler seltener.

z.B. so

Code: Alles auswählen

function iPizza2_UseInv()
{
  if(player.ActiveInventory == iSalzstreuer)

    player.LoseInventory(iSalzstreuer);
    player.LoseInventory(iPizza2);
    player.AddInventory(iSalzigePizza);
    Display("Jetzt habe ich eine sehr salzige Pizza.");
  }
  else if(player.ActiveInventory!=iSalzstreuer)
  {
    Display("Blöde Idee!");
  }
Antworten