Inventar Problem

Posted By: Martek

Inventar Problem - 08/26/07 18:46

Hi @ all,

ich bin im moment dabei ein Inventar zu scripten. Und dafür habe ich einen
Button, welcher ein item wegwirft.
Ich habe das so geregelt wenn ich auf den button drücke, geht die var inventar_use auf 3 und wenn ich dann auf den panel klicke, akktifiert sich die funktion item_use.
Diese funktion soll jetzt das item, auf welches ich geklickt habe wegwerfen. Mit dem items, das habe ich so geregelt:
Es gibt die var slot_1. Wenn slot_1 = 0 ist, dann ist der speicherplatzt leer. Wenn der wert höher als 0 ist ist der platz belegt. Bei ner 1 z.b. mit ner waffe, bei 2 mit ner rüstung...

Lange rede, kurzer Sinn.
Mein Problem besteht darin, das ich ermitteln muss auf welchen panel ich geklickt habe, damit der die entsprechende var auf 0 setzt.

Hoffe ihr kommt mit der erklärung klar.

Mfg, Pingulord
Posted By: Xarthor

Re: Inventar Problem - 08/26/07 19:05

Einfache Lösung:
Setze die einzelnen "slot" bitmaps als button elemente auf ein panel (falls du es nicht schon hast).
Jeder button der eine funktion aufruft kann auch gleichzeitig seine nummer übergeben.
(Handbuch: button_number)
Das Inventar selbst, also wo gespeichert wird ob ein "slot" belegt ist oder nicht, würde ich als var array aufbauen und die übermittelte button number als index für den array. Wobei der platz "0" im array logischer weise immer frei bleibt, es sei denn du subtrahierst erst 1 von der button number.
Beispiel:
Code:

var mein_inventar[16]; //16 speicherplätze
var inv_edit_mode; //zeigt an ob das nächste element gelöscht werden soll etc.

define none, 0;
define add,1;
define delete,2;

panel inventar_pan
{ ... }

//die folgende funktion wird vom button aufgerufen
function inv_slot_click(button_number,panel)
{
if(inv_edit_mode == delete)
{
mein_inventar[button_number-1] = 0;
inv_edit_mode = none;
}
...
}


Posted By: Martek

Re: Inventar Problem - 08/26/07 19:22

Das is ne gute Idee. Nur ich hatte das erst mit panel.on_click gemacht,
schreibe es jetzt aber eben um. Hab ja nur 16 slots:)

Nur ein problemm. Woher soll ich die Button number wissen???

Mfg, Pingulord
Posted By: Artus

Re: Inventar Problem - 08/26/07 19:26

Die Nummer des angeklickten Buttons wird als erster, der Panel-Pointer als zweiter Parameter an die Funktion übergeben, dies kannst du im Handbuch nachlesen
Posted By: Xarthor

Re: Inventar Problem - 08/26/07 19:34

Die button number wird chronologisch vergeben.
Das heißt das erste button element eines panels hat die nummer 1, das zweite folglich 2 etc.

EDIT:
Ist zwar off-topic, aber Pingulord, woher kommst du bzw. wo wohnst du zur zeit? (geht auch per PM)
Posted By: Martek

Re: Inventar Problem - 08/27/07 11:59

Also, ich check jetzt garnichts mehr:
Das den Parramentern check ich net, weil ich die noch nie benutzt habe...:)

Und das mit den Chronologischen nummer auch net.
Kann man die nummern irgendwo nachgucken???
Oder muss ich einfach wissen, als wie vieltes ich den button erstellt habe???
Wäre dann slot4 button 4??? Weil ja in jedem slot 1 button is???


Mfg, Pingulord
Posted By: Xarthor

Re: Inventar Problem - 08/27/07 12:13

Die parameter in der function die der button ausführt, müsssen, laut manual drin stehen, damit die funktion nachher weiß welcher button geklickt wurde.

Ja du musst wissen ob der button mit der nummer x nun ein slot button ist und wenn ja welcher.
Das lässt sich aber über ein paar leichte design "regeln" machen.
Zum einen würde ich das slot panel als reines slot panel nutzen, d.h. dort sollten sich keine funktions buttons befinden, wobei das eig. auch kein problem sein sollte.
Aber für den anfang wäre es sinnvoll.
Nun weißt du ja das der erste button der in einem panel definiert wird die button number 1 hat, womit du ja relativ einfach so ein system progammieren kannst.
Alternativ kannst du auch eine etwas komplexere lösung für deinen ansätz suchen.

Merke: Ein System wie ein Inventar sollte gut durch dacht sein und nach möglichkeit erst programmiert werden wenn man nahe zu alle möglichkeiten der sprache kennt, da z.b. das "button number feature" ein inventar-system, meiner ansicht nach, erheblich leichter macht.
Posted By: Martek

Re: Inventar Problem - 08/27/07 17:45

So, ich habe jetzt in jedem slot einen button. Und wenn ich jetzt slot6 löschen will, wie soll ich dann mit der Button number erkennen, auf welchen slot ich geklicht habe???

Pingulord, der nix checker...
Posted By: Xarthor

Re: Inventar Problem - 08/27/07 18:46

Ich glaub du hast es "falsch" umgesetzt bzw. verstanden.
Du benötigst für dieses system nur ein(!!!) panel auf dem sich deine 6 buttons befinden (6 buttons = 6 slots)
Posted By: Martek

Re: Inventar Problem - 08/28/07 12:32

achso...aber trozdem für jeden slot einen panel, weil ich will da ja auch,
das da die bilder der Items sind, und da drüber dann den button panel. Ok.

Und in einem slot sind die dann einfach nach der reihenfolge, wie die darin vorkommen.

Jetzt hab ichs, danke Pingulord
© 2023 lite-C Forums