Register for your free account! | Forgot your password?

You last visited: Today at 06:04

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[GameMaker]Inventar

Discussion on [GameMaker]Inventar within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #1
 
irrenhaus's Avatar
 
elite*gold: 0
Join Date: Jan 2011
Posts: 2,520
Received Thanks: 4,566
Post [GameMaker]Inventar

Hallo Com.

Heute möchte ich euch gerne zeigen, wie man ein einfaches Inventar in Game Maker macht.

Was man benötigt:
-Game Maker [ggf. Pro Edition]
-GML Kentnisse [ohne die sollte man nicht weiter lesen]

So fangen wir an.
Als erstes erstellen wir ein paar Sprites:
  • spr_inventory
  • spr_inv_slot
  • spr_item_nothing
  • spr_inv_apple

So sehen die bei mir aus:

Als nächstes brauchen wir ein Objekt für das Inventar, wir nennen es obj_controler.
Hier packen wir ein Create Event mit einem Script hinein wo rein kommt:
Code:
show = false // wird für dich Sichtbarkeit des Inventars benötigt.
slot[0]=spr_item_nothing
slot[1]=spr_item_nothing
slot[2]=spr_item_nothing
slot[3]=spr_item_nothing
slot[4]=spr_item_nothing
slot[5]=spr_item_nothing
slot[6]=spr_item_nothing
slot[7]=spr_item_nothing
slot[8]=spr_item_nothing
das sind die Slots für das Inventar.

Nun kommen wir zum interessantem Teil, dass scripten des Inventars.
Zunächst erstellen wir die benötigten Scripts:
  • scr_inventory_draw
  • scr_inventory_move
  • scr_inventory_click
  • scr_inventory_add

Wir gehen von oben nach unten das ist am einfachsten.
Nun fangen wir dann mit dem scr_inventory_draw script an. In diesem Script wird eine Funktion ausgeführt die später das Inventar zeichnen soll. Also schreiben wir:
Code:
//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.
}
so das war auch nun schon der script.
Es geht auch gleich weiter zum nächsten!
Code:
//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)
}
Das war es auch schon mit dem script.
Kommen wir nun zum nächsten.

Code:
//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.
}
So gleich sind wir auch schon mit den Scripts fertig!
Doch wir brauchen noch zwei. Und wir wollen keine Zeit verlieren und machen deshalb einfachmal weiter.
Code:
//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:
Code:
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:
Code:
if show == true // wenn das Inventar sichtbar ist
{
scr_inventory_move(); // gucken ob der cursor irgendwo in einem der slots ist wenn ja dann lassen wir die gewählte funktionlaufen.
}
und noch in ein Draw Event
Code:
scr_inventory_draw(show) //Zeichnet das Inventar.
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
Code:
scr_inventory_add(sprite_index) //packen wir das zum Inventar hinzu!
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
Attached Files
File Type: rar Inventar.rar (12.8 KB, 36 views)
irrenhaus is offline  
Thanks
6 Users
Reply


Similar Threads Similar Threads
Suche GameMaker hilfe
04/07/2011 - elite*gold Trading - 5 Replies
Hallo suche nun bestimmte hilfe (z.b gegnern dass die in einer bestimmten zeit dort und dort monster auftauchen.. , und z.b wie man macht dass wenn man alle gegner besiegt hat z.b in ein anderes lvl kommt :D....) Also wer helfen kann währe gut , wenn man mir geholfen hat bezhale ich den dank mit e*gold kommt drauf an wie gut die hilfe war
Suche/Kaufe GameMaker Jump+Run Script
04/05/2011 - elite*gold Trading - 1 Replies
Kaufe ein script wenn man es einfügt das der char hüpft/laufen.. kann zahle 4 e*gold
[Suche] GameMaker helfer
04/03/2011 - elite*gold Trading - 0 Replies
Hallo wie oben steht suche ich jemanden der mir bei Gamemaker hilft -script details -allgemeines helfen bei erstellung eines Gegenstandes -... Dann added mich skype (slashme3) icq (582808956) Headset währe auch gut :D
Suche GameMaker Leute
03/09/2011 - Main - 1 Replies
Hiho leute ich suche Leute für ein game maker game also wenn einer interesse hat bitte schreiben wie weit ihr seit Anfänger = Ich kann grad mal das tut fertig machen Mittel = Ich weis wie ich mein eigenes game mache (Mit coding) Profi = Ich weis wie ich einfach alles mache. und euer alter (Mir is das egal ob ihr 20 oder 10 seit aber ich wills wissen =D) UND Bitte keine dummen anworten (Sie sind eh unnötig und man macht sich nur feinde)



All times are GMT +1. The time now is 06:04.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.