2 Inventargegenstände auf 1 Slot?

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Furymars
Süßwasserpirat
Süßwasserpirat
Beiträge: 485
Registriert: 13.06.2006, 20:45
Wohnort: Adventure Treff

2 Inventargegenstände auf 1 Slot?

Beitrag von Furymars »

Hallo erstmal alle miteinander.
Ich habe mir einen Gui gemacht. Jetzt habe ich mir aber beim Inventar insgesammt 8 Slots gemacht. Beim 1. Objekt aufheben kommt der Gegenstand in den richtigen Slot aber wenn mein Charakter den 2. Gegenstand aufnimmt wird das zwar im Inventar angezeigt, aber es kommt seltsamerweise wieder in den Slot 1 und überlappt den vorherien Gegenstand.Wie bekomme ich das hin das jeder Inventargegenstand einen anderen Slot übernimmt und nicht einen anderen überlappt?
Angekündigte Spiele:
MMM : "Nicht ohne meinen Hamster!"
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7308
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag von Fightmeyer »

Wie hast Du das denn mit den Slots gemacht? Poste mal Deinen Code beim Aufnehmen eines Objekts.
Klingt so, als ob Du da mit festen Nummern arbeiten würdest und somit immer wieder den selben "Slot" ansprichst.
Benutzeravatar
Sinitrena
Tastatursteuerer
Tastatursteuerer
Beiträge: 678
Registriert: 08.05.2004, 01:01
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Sinitrena »

Da ich nicht ganz sicher bin, was du mit Slots meinst, könnte meine Erklärung nicht helfen, aber ich versuche es mal trotzdem:

Wenn du einen GUI machst, dann kommt auf diesen normalerweise maximal ein Inventory Window, es sei denn, du willst für mehrere Charaktere auf einem GUI das Inventar gleichzeitig anzeigen. Du kannst jedem Inventory Window bei "Character ID" zuweisen für welchen cha das Inventar bestimmt ist.
Wenn du nun mehrere Gegenstände aufnimmst, landen diese alle im gleichen Inventory Window, eben in dem dem Charakter zugewiesenen (bei Character ID -1 (Standard) ist es immer der player character). Es ist also logisch, dass alle Gegenstände im gleichen Inventory Window landen.
Überlappen dürfte es den ersten Gegenstand übrigens eigentlich nicht, es sei den der Wert für InvWindow.ItemWidth und InvWindow.ItemHeight ist zu gering eingestellt (in der Hilfe nachlesen)

Ich versuche mal, zu sagen, wie du hinbekommst, was ich glaube du willst:
Es sollen acht Positionen im Inventar vorhanden sein, wobei jeder dieser Positionen ein bestimmter Gegenstand zugewiesen ist, wobei du dann nicht willst, dass die Gegenstände einfach in der Reihenfolge einsortiert werden, in der der Spieler sie erhält. Das kann unter Umständen mit einem normalen Inventar etwas komplizierter werden. Es gibt zwar die Möglichkeit einen Gegenstand an einer bestimmten Stelle ins Inventar zu setzen (
By default, the new item is added to the end of the character's inventory list. However, you can insert it in a particular position in the list by supplying the second parameter. The new item is inserted before the current item at addAtIndex. Indexes are numbered from 0, so to add the item at the start of the list, pass 0 as the second parameter.
) aber dazu müsstest du immer wissen, welche Gegenstände der Spieler schon hat und die Liste jedesmal komplett erneuern, wenn er einen neuen Gegenstand erhält und möglicherweise sogar "leere" Inventargegenstände benutzen, um sie grafisch an die richtige Stelle zu bringen.
Wenn ich dich richtig verstehe, geht es nur um acht verschiedene Gegenstände. Da würde ich wahrscheinlich komplett auf ein Inventar verzichten und mit Buttons arbeiten:
Lege einen GUI mit 8 Button an, die zunächst leer sind (irgendeine Grafik für einen leeren Slot). Wenn der Spieler einen Gegenstand nimmt, dann wird die Grafik des richtigen buttons geändert und der Button wird auf clickable gesetzt (Clickable property (GUI controls)). Wenn man dann auf den Button klickt, muss nur der Gegenstand als momentan aktiver Gegenstand gesetzt werden (ActiveInventory property). Die Methode funktioniert bei einer geringen Anzahl von Gegenständen ganz gut, ansonsten müsste ich wohl nochmal darüber nachdenken.

Wie gesagt, ich bin mir nicht sicher, ob ich deine Frage damit beantwortet habe, aber ich hoffe ich konnte dir weiterhelfen :)
http://www.sinitrena.de.vu Meine Spiele: "A very special dog", "A magic stone", "James Bond - Who wants to live again?", "Lonely Night", "Death of an Angel", "The Witch, the Wizard and the Blue Cup", "Emerald Eyes"
Benutzeravatar
Furymars
Süßwasserpirat
Süßwasserpirat
Beiträge: 485
Registriert: 13.06.2006, 20:45
Wohnort: Adventure Treff

Beitrag von Furymars »

Ich habe das mit den Slots so gemeint:

1. Auf den Button "Add GUI Inventory Window" geklickt und mein Inventarfenster gemacht so habe ich schonmal ein großes Kästchen wo Inverntagegenstände reinkommen.

2.Habe ich mir dann eingestellt wie groß jedes Object sein soll.
(Item width) und (Item height)

3. Habe ich Inventargegenstände der Größe von Item width und Item height gemacht.

und jetzt sollte eigentlich für jedes Item etwas Platz im Gui haben.
Seltsamerweise ist dies aber nicht der Fall.
Es hört sich jetzt zwar etwas seltsam an aber mir fällt nicht ein woran der Fehler liegt :cry:
Angekündigte Spiele:
MMM : "Nicht ohne meinen Hamster!"
Benutzeravatar
Sinitrena
Tastatursteuerer
Tastatursteuerer
Beiträge: 678
Registriert: 08.05.2004, 01:01
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Sinitrena »

2.Habe ich mir dann eingestellt wie groß jedes Object sein soll.
(Item width) und (Item height)
Wie groß jedes Objekt sein soll? Es ist so groß, wie du es importiert hast, mit Item.Width, Item.Hight gibst du nur an, wie viel Platz dafür im Inventory Window vorgesehen ist. Wenn der Wert für die Größe eines Gegenstands im Inventory Window kleiner als seine tasächliche Größe ist überlappen sie sich.
Am besten überprüfst du die Werte, die du dort angegeben hast. Sonst fällt mir dazu im Moment auch nichts ein.
und jetzt sollte eigentlich für jedes Item etwas Platz im Gui haben.
Du weißt übrigens, dass nicht jedes Item im GUI Platz haben muss, oder? Wenn du auf den GUI noch zwei Button für hoch/runter bzw links/rechts setzte und dort InvWindow.ScrollUp(); und InvWindow.ScrollDown(); verwendest kann der Spieler durch das Inventar scrollen.


EDIT: Falsche Bezeichnung für Scripting Befehle korrigiert.
http://www.sinitrena.de.vu Meine Spiele: "A very special dog", "A magic stone", "James Bond - Who wants to live again?", "Lonely Night", "Death of an Angel", "The Witch, the Wizard and the Blue Cup", "Emerald Eyes"
Benutzeravatar
Furymars
Süßwasserpirat
Süßwasserpirat
Beiträge: 485
Registriert: 13.06.2006, 20:45
Wohnort: Adventure Treff

Beitrag von Furymars »

Juhu ich habe es hinbekommen.
Ich habe ein neues Inventarfenster gemacht (Width=96,Height=32).
Dann habe ich dank des Pc Taschenrechners folgendes ausgerechnet:

96:8=12 weil ich ja insgesammt 8 Objecte tragen kann.
32:2=16 weil ich nur 2 Reihen haben soll wovon jeweils 4 Items pro Reihe rein soll.
Anschließend musste das Object die Höhe 12 und die Breite 16 haben. So überlappt sich dann kein Gegenstand, weil jedes Object die angegebene Fläche haben muss.
Oh man wie kompliziert :roll:
Ich danke euch vielmals jetzt bin ich mit meinem Spiel einen Schritt weitergekommen.
Ich wünsche euch noch allen in diesem Forum viel SPAAAß!!! :D
Angekündigte Spiele:
MMM : "Nicht ohne meinen Hamster!"
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Du meinst, Breite 12 und Höhe 16, oder?
Außerdem hast Du jetzt 16 slots, nämlich 2 Reihen à 8 slots.

Mach die Objekte einfach 24x16, das sieht besser aus als Hochformat, und Du hast 2 Reihen mit je 4 slots, also insgesamt 8.
Use gopher repellent on funny little man
Antworten