Cita de: Black_Cat en Enero 03, 2019, 12:38:16 AM
Hola amigo
inicialmente lo que deberias hacer es crear el objeto, almacenar su referencia y pasarle el valor.
Suponiendo que tienes un objeto al que llamaremos o_item_maderas, el cual será el item que al recogerlo te dará una cierta cantidad de madera, este deberia tener una variable.
o_item_maderas. EV_CREATE
[gml]
cant_madera = 0;
[/gml]
la variable "cant_madera" seria la que almacena el valor, que al momento de colisionar con el jugador diera madera.
Es decir que si yo colocara:
[gml]
cant_madera = 3;
[/gml]
Cada que el jugador recogiera uno de estos items, recibiria 3 de madera.
Ahora, al momento de soltar el item, debes crear un "o_item_maderas" y asignarle la cantidad de madera que tienes recogida.
Supongamos que tienes una variable global llamada "global.recursos_madera" la cual contiene las maderas recogidas hasta el momento.
Al momento de tirar las maderas el codigo debiera verse como:
[gml]
var conjunto = instance_create(x+50, y, o_item_maderas); //creamos el item que representara al conjunto de maderas
conjunto.cant_madera = global.recursos_madera; // le asignamos a su variable interna la cantidad actual de madera recogida
global.recursos_madera = 0; //ponemos a 0 para indicar que tiramos la madera
[/gml]
Entonces ahora, el item, cuando vaya a recogerse deberia dar la cantidad que se tenìa y luego se tiro.
Decime si te funcionó, formatee la PC y todavia no tengo GMS para probar si va bien el codigo.
hola Black_cat gracias por tomarte el tiempo de responder, pues si que funciona de esa forma, el único inconveniente es que al funcionar con una variable externa al propio objeto creado; sì hay mucho tipos de ese objeto al colisionar con cualquiera le suma la cantidad guardada y queda un poco raro, aunque funciona, lo que he echo al menos como solución provisional es crear un bucle que cree el objeto la cantidad que corresponda y al colisionar con cada objeto pues se suma al inventario.
mira el código que tengo de momento es el siguiente
[gml]
/// dropear cosas del inventario
if inventario[seleccion] != "nada" && keyboard_check_pressed(ord("F"))
{
if inventario[seleccion] == "wood" {
repeat(stack[seleccion]) // la variable stack[seleccion] tiene la cantidad de objetos que hay en el inventario[seleccion]
{
instance_create(obj_player.x,obj_player.y+50,obj_madera)
}
stack[seleccion] = 0; inventario[seleccion] = "nada";
}}
[/gml]