Getting the sprite from a string
Started by Ventwig, Feb 18 2012 12:41 AM
6 replies to this topic
#1
Posted 18 February 2012 - 12:41 AM
So, I'm working on an RPG where the player gets 5 attacks per character, and then they command those attacks to make more.
Okay, it's confusing.
The problem is the sprites.
There will be many characters, and many attacks, so the thing is, I'm handling the attacks in one object.
The problem is this:
-I set up the attacks by naming them like this:
card1 = "fire"
card2 = "stab"
card3 = "blizzard"
etc.
then when I draw the sprite, i try:
draw_sprite("sprc_"+string(card1),0,50,300)
but then it just shows the first sprite i made.
the sprite i want is called sprc_fire
Help please?
Okay, it's confusing.
The problem is the sprites.
There will be many characters, and many attacks, so the thing is, I'm handling the attacks in one object.
The problem is this:
-I set up the attacks by naming them like this:
card1 = "fire"
card2 = "stab"
card3 = "blizzard"
etc.
then when I draw the sprite, i try:
draw_sprite("sprc_"+string(card1),0,50,300)
but then it just shows the first sprite i made.
the sprite i want is called sprc_fire
Help please?
#2
Posted 18 February 2012 - 12:48 AM
You can do this using execute_string... BUT it is not recommended as apart from being terribly slow, it's also a function that is being phased out and removed from versions of GM. So to solve your problem, you need to store the sprites in an array and then have a variable that is set to the value to draw from the array. For example :
That's how it should be done!
//CREATE EVENT card[0]=spr_fire; card[1]=spr_stab; card[2]=spr_blizzard; current_card=-1; //-1 means no card. //SOME OTHER EVENT //set the attack card... current_card=2; //DRAW EVENT draw_sprite(card[current_card], 0, x, y);
That's how it should be done!
#3
Posted 18 February 2012 - 01:10 AM
Or, to maintain the string name->numerical index association: http://www.gmlscript...ipt/map_sprites
-IMP
-IMP
#4
Posted 18 February 2012 - 02:27 AM
Or, to maintain the string name->numerical index association: http://www.gmlscript...ipt/map_sprites
-IMP
Thanks =)
I've implented it, but how exactly do i use it?
I've checked it out, but i dont understand.
Edited by Ventwig, 18 February 2012 - 02:32 AM.
#5
Posted 18 February 2012 - 07:06 AM
When you call that script (passing it a ds_map), it fills the map with name=>index pairs. So then you can do something like this (assuming the map is stored in global.spriteMap):
-IMP
draw_sprite( ds_map_find_value(global.spriteMap, "sprc_" + string(card1)), 0, 50, 300 );
-IMP
Edited by IceMetalPunk, 18 February 2012 - 07:07 AM.
#6
Posted 18 February 2012 - 03:09 PM
Thanks IMP!
That's perfect!
That's perfect!
#7
Posted 18 February 2012 - 03:34 PM
Nice one IMP... I forgot about that script, and it really is quite useful!
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users











