Octubre 10, 2018, 12:50:03 AM Ultima modificación: Octubre 15, 2018, 12:39:25 AM por knd144
Perdón si no supe cómo poner el título.  ???

Lo que quiero es tener un catálogo de varios objetos con la misma estructura:

{
  id: 1,
  ataque: 0,
  defensa: +10,
  vida: +10,
  velocidad: +20,
  ...
}


En fin que quiero tener la lista de estos objetos en memoria; y mi personaje tendrá un inventario de estos objetos para poder equiparlos (Creería que solo es necesario tener una lista con los "id" de los items que tiene) por lo que tendré que estar consultando el catálogo de objetos a cada momento para calcular las estadísticas finales, para mostrar el inventario al jugador y que él pueda interactuar con esos items para equiparlos.
Mi pregunta es ¿Tienen alguna forma eficiente de mantener ese catálogo de objetos en memoria? Lo que no quisiera es tener ese catálogo en un archivo externo y estar consultando a cada momento la información de todos los posibles items que el personaje tenga en el inventario.  ???
¿Crear una DLL con C/C++ me serviría para eso?

Hola knd144

Se entiende la idea de lo que quieres lograr, yo hice algo parecido de dos formas diferentes recientemente en un código de batalla por turnos que hice, una con arrays y una con variables individuales, cada uno se adaptaba a dos cosas diferentes que quería usar, en tu caso lo mejor supongo que es usar variables individuales.

Crea un Script que llame el objeto y la característica y te devuelva su valor, nombra al script como quieras, ej: scr_get_data()
Los argumentos deben ser: el Id del objeto (puedes usar números o textos) y el valor que quieres regresar (recomiendo usar texto)

En el script scr_get_data()
///scr_get_data(objeto, valor)
//Primero se reciben los argumentos del script
var _obj = argument0;
var _val = argument1;

//Estas son las variables que genera como retorno, acá asigna los valores por defecto (En caso de fallar o no encontrar el item)
var _ataque, _defensa, _vida, _velocidad;
_ataque = 0
_defensa = 0
_vida = 0
_velocidad = 0

//Ahora traeremos la información de cada uno de los objetos del juego, si no colocas info, queda la de defecto
switch (_obj) {
case "espada_madera":
_ataque = 15
_vida = 5
_velocidad = 10
break

case "botas":
_velocidad = 20
break

case "escudo_madera":
_defensa = 50
_vida = 20
break
}

//Después que el script tiene el valor, debes retornarlo con la función "return".
if _val = "ataque" return _ataque
if _val = "defensa" return _defensa
if _val = "vida" return _vida
if _val = "velocidad" return _velocidad


ejemplo de uso:
atk = script scr_get_data("espada_madera","ataque") <- retorna 15
atk = script scr_get_data("botas","ataque") <- retorna 0
def = script scr_get_data("escudo_madera","defensa") <- retorna 50

Es totalmente configurable, por ejemplo en vez del nombre del objeto puedes usar su ID, aunque a medida que implementes muchos objetos en el juego, puede que pierdas el tracking de algunos y te confundas. Ahí tu ves si te sirve y cómo adaptarlo a tus necesidades.

Saludos

Mmm.... pues no lo negaré; es más eficiente que cualquier cosa que se me haya ocurrido.  :-[
No es algo "limpio" para programar pero en verdad me funcionaría. Muchas gracias.  :)