Hallo Community.
Ich weiß es gibt schon jede Menge Tutorial über das Inventar trotz dessen würd ich euch gerne "meine" Version vorstellen.
Was ihr braucht:
5 Sprites
und 4 Skripte
als erstes erstellen wir ein Objekt und nennen es "obj_controler".
In diesem Objekt lassen wir erstmal via. Create Event ein paar Variablen deklaieren.
Spoiler anzeigen
das sind die Slots für das Inventar.
Nun kommen wir zum interessantem Teil, dass skripten des Inventars.
Wir fangen an mit scr_inventory_draw:
Spoiler anzeigen
Alles anzeigen
danach scr_inventory_move <- Check ob die Maus sich über einen der Slots befindet.
Spoiler anzeigen
Alles anzeigen
scr_inventory_click:
Spoiler anzeigen
scr_inventory_add:
Spoiler anzeigen
Alles anzeigen
Es ist doch garnicht so schwer doch manche hatten damit Probleme.
So endlich sind wir fertig mit den Scripts!
Nun müssen wir nurnoch das obj_controler fertig machen.
Dazu fügen wir ein Step-Event in das Objekt hinen und schreiben in einen Code:
Spoiler anzeigen
Alles anzeigen
Es fehlen nurnoch zwei Events bis wir mit dem Objekt fertig sind!
Also erstellen wir ein Global Left Press event und packen dort hinein:
Und noch ein Draw Event:
So, dass war es auch schon fast doch nunja ein Inventar bringt nicht viel ohne Items nicht wahr?
also erstellen wir ein Objekt und nennen es obj_item_apple
da machen wir es ganz einfach mit einem Mouse Left Button Pressed Event
So das wars nun müssen wir nurnoch einen raum erstellen und dies hinein packen.
Ich hoffe das euch mein Tutorial gefallen hat, ich währe sehr glücklich über ein Feedback.
Ich hänge noch die fertige Datei dazu.
Mit freundlichen Grüßen
SirPolygon
Ich weiß es gibt schon jede Menge Tutorial über das Inventar trotz dessen würd ich euch gerne "meine" Version vorstellen.
Was ihr braucht:
5 Sprites
und 4 Skripte
als erstes erstellen wir ein Objekt und nennen es "obj_controler".
In diesem Objekt lassen wir erstmal via. Create Event ein paar Variablen deklaieren.
GML-Quellcode
das sind die Slots für das Inventar.
Nun kommen wir zum interessantem Teil, dass skripten des Inventars.
Wir fangen an mit scr_inventory_draw:
GML-Quellcode
- //scr_inventory_draw//
- exitkey = argument0 //Argumente kann man sich denken was das ist, später dann sowas wie scr_inventory_draw(argument0) z.B
- if exitkey = false //Wenn die Variable "false" ergibt...
- {
- exit; //Beendet sich der Script.
- }
- posx = 36
- posy = 56
- //wird später erklärt dies dient zur Positions Speicherung.
- draw_sprite(spr_inventory,0,view_xview+32,view_yview+32) //Einen Sprite zeichnen die funktion lässt sich so einfach erklären: draw_sprite(sprite,image_index,x,y). view_xview und view_yview machen das es permanent im View ist sprich wenn wir zur seite gehen bleibt es an seiner Position und verschwindet nicht einfach aus dem Bild.
- count=0 // eine normale integer Variable.
- // Nun lassen wir die einzelnen Slots zeichnen dies ist sehr einfach wenn man einfach eine for-schleife benutzt.
- for(i=0;i<3;i+=1) // i = 0 <= Variable, i<3 <= Solange i kleiner als 3 ist...,i+=1<= wird 1 zu i gezählt Dies ist die Y Position.
- {
- for(a=0;a<3;a+=1) // das gleiche nochmal für die X Position.
- {
- draw_sprite(obj_controler.slot[count],0,view_xview+posx,view_yview+posy) // obj_controler.slot[count] ist der momentane Slot und auch gleich der beinhaltende Sprite. view_xview/yview + posx/y ist nichts anderes als oben nur mit einer Variable.
- count +=1 // er soll ja nicht immer den gleichen slot zeichnen deshalb erhöhen wir das Value!
- posx += 36 // damit die Position sich auch ändert.
- }
- posx = 36 // resetten der Variable
- posy += 36 //das gleiche wie oben nur damit es eine Zeile tiefer geht.
- }
danach scr_inventory_move <- Check ob die Maus sich über einen der Slots befindet.
GML-Quellcode
- //scr_inventory_move//
- x1 = view_xview[0]+32
- y1 = view_yview[0]+32
- //deklaieren von ein paar Variablen diese werden gleich verwendet
- //Row 1
- if (mouse_x > x1+4) && (mouse_x < x1+37) && (mouse_y > y1+24) && (mouse_y < y1+57) // wenn die Mausposition sich in diesem Kästchen befindet dann...
- {
- scr_inventory_click(0) //wird dieser script ausgeführt
- exit // und der momentane script beendet.
- }
- if (mouse_x > x1+40) && (mouse_x < x1+73) && (mouse_y > y1+24) && (mouse_y < y1+57)
- {
- scr_inventory_click(1)
- }
- if (mouse_x > x1+76) && (mouse_x < x1+109) && (mouse_y > y1+24) && (mouse_y < y1+57)
- {
- scr_inventory_click(2)
- }
- //Row 2
- if (mouse_x > x1+4) && (mouse_x < x1+37) && (mouse_y > y1+60) && (mouse_y < y1+93)
- {
- scr_inventory_click(3)
- }
- if (mouse_x > x1+40) && (mouse_x < x1+73) && (mouse_y > y1+60) && (mouse_y < y1+93)
- {
- scr_inventory_click(4)
- }
- if (mouse_x > x1+76) && (mouse_x < x1+109) && (mouse_y > y1+60) && (mouse_y < y1+93)
- {
- scr_inventory_click(5)
- }
- //Row 3
- if (mouse_x > x1+4) && (mouse_x < x1+37) && (mouse_y > y1+96) && (mouse_y < y1+129)
- {
- scr_inventory_click(6)
- }
- if (mouse_x > x1+40) && (mouse_x < x1+73) && (mouse_y > y1+96) && (mouse_y < y1+129)
- {
- scr_inventory_click(7)
- }
- if (mouse_x > x1+76) && (mouse_x < x1+109) && (mouse_y > y1+96) && (mouse_y < y1+129)
- {
- scr_inventory_click(8)
- }
scr_inventory_click:
GML-Quellcode
- //scr_inventory_click//
- slot1 = argument0 // Slot funktion also welcher slot es sein soll. Wurde oben bereits gesagt/gezeigt.
- if (obj_controler.slot[slot1] == spr_inv_apple)
- {
- //hier kommt rein was passieren soll wenn man draufklickt!
- show_message("Du hast einen Apfel gegessen.") // normale MessageBox
- obj_controler.slot[slot1] = spr_item_nothing
- exit//wiedermal beenden des Scriptes.
- }
scr_inventory_add:
GML-Quellcode
- //scr_inventory_add//
- //Dieser Script dient dazu ein Item zum Inventar hinzu zu fügen!//
- //Man kann denken er müsste extrem lang sein ist er aber nicht :)
- sprite = argument0//welcher sprite gezeichnet werden soll
- for (i=0;i<8;i+=1)//checken ob freier Platz ist
- {
- if obj_controler.slot[i] = spr_item_nothing//wenn freier Platz ist dann...
- {
- obj_controler.slot[i] = sprite //wird das hier übernommen
- instance_destroy() //und das objekt wird zerstört.
- exit
- }
- }
Es ist doch garnicht so schwer doch manche hatten damit Probleme.
So endlich sind wir fertig mit den Scripts!
Nun müssen wir nurnoch das obj_controler fertig machen.
Dazu fügen wir ein Step-Event in das Objekt hinen und schreiben in einen Code:
GML-Quellcode
- if (keyboard_check_pressed(ord("E"))) // Wenn man E drückt. ( ord("E")) gilt für buchstaben für pfeiltasten wäre das einfach nur vk_left oder sowas).
- {
- if show = false //wenn das inventar unsichtbar ist
- {
- show = true // lassen wir es zeigen
- }
- else
- {
- show = false //oder aber , wenn es da ist lassen wir es verschwinden!
- }
- }
Es fehlen nurnoch zwei Events bis wir mit dem Objekt fertig sind!
Also erstellen wir ein Global Left Press event und packen dort hinein:
Und noch ein Draw Event:
So, dass war es auch schon fast doch nunja ein Inventar bringt nicht viel ohne Items nicht wahr?
also erstellen wir ein Objekt und nennen es obj_item_apple
da machen wir es ganz einfach mit einem Mouse Left Button Pressed Event
So das wars nun müssen wir nurnoch einen raum erstellen und dies hinein packen.
Ich hoffe das euch mein Tutorial gefallen hat, ich währe sehr glücklich über ein Feedback.
Ich hänge noch die fertige Datei dazu.
Mit freundlichen Grüßen
SirPolygon