Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mensajes - Alelouch

1

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]

2
Hola comunidad de game maker, me encuentro con un problema verán estoy creando un juego estilo stardew valley todo va bien pero me encuentro en la siguiente situación:

Digamos que he recogido 50 de madera( o lo que sea ) ahora mi idea es poder también soltarla, pero no quiero crear 50 ítems de madera sino más bien crear una sola madera pero con un valor de 50 ( 50 o depende de la cantidad que hallas recogido ).

Hasta donde se no hay una función para determinar el valor de variables de un objeto antes de crearlo y esto le tiene un poco confuso, me preguntaba tambn si quizás hay una forma de crear el objeto y no más crearlo referirme exactamente al que acabo de crear, no se podría usar with por qué esto funcionaría en TODOS los objetos nombrados que existan en la room;

No se, les agradecería su ayuda si no hay solución supongo que tendré que crear un bucle que cree ese objeto el número de veces que hagan falta, en realidad podría hacer eso y ya pero por temas de rendimiento que creen que sería lo mejor? Porque lo mismo como podrían ser 50 objs podrían ser 10.000

Se les agradece la ayuda   :)