Octubre 02, 2012, 07:50:10 PM Ultima modificación: Octubre 24, 2012, 04:26:50 PM por Samigabacho
Hola a todos,
mi pregunta es la siguiente:

Tengo un script donde cargo una serie de información en un array, y este array es creado dentro del código del script.
Este script lo llamo desde un objeto en un room que no es el juego (la típica pantalla de inicio). ¿El array creado está disponible durante el juego? es decir, ¿puedo durante el juego acceder a ese array para sacar información de él aunque se haya llamado en una room diferente?
Ejemplo:
Room_inicio:
      Objeto_inicio: script_crear (fichero.txt); (este script carga toda la información en mi_array [i,j])
Room_pantalla1:
      Objeto_enemigo: color = mi_array [0,3];

Para eso se hacen variables globales, que pueden ser llamadas desde cualquier objeto y no se pierden en el paso de room, entonces sería global.miarray[x,x]. Hay que ponerle el global siempre, para modificarla o leerla

Otra es usar objetos persisentes pero prefiero hacer la variable global
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy


Y ese global. ¿puede ser declarado como string dentro de una función?:

variable_local_array2_set("global.tb_"+string(var_tablas[i,1]),0,0,i);

Nunca probé, pienso que sí, probalo
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy


Cita de: Samigabacho en Octubre 03, 2012, 08:41:32 AM
Y ese global. ¿puede ser declarado como string dentro de una función?:

variable_local_array2_set("global.tb_"+string(var_tablas[i,1]),0,0,i);
  Saludos makero Samigabacho:

  En la función que escribes ya viene el rango de alcance de la variable observa:
   
   variable_local_array2_set ();
   variable_global_array2_set();

  El primer argumento es el nombre solamente, el alcance está en la función en sí.

   Disculpa la demora con el "script" que te debo, he tenido inconvenientes en mi trabajo, disculpa. En cuanto me libere te lo completo.  ;D
   


#5 Octubre 03, 2012, 07:47:03 PM Ultima modificación: Octubre 03, 2012, 08:16:21 PM por Samigabacho
CitarEn la función que escribes ya viene el rango de alcance de la variable observa:
   
   variable_local_array2_set ();
   variable_global_array2_set();

  El primer argumento es el nombre solamente, el alcance está en la función en sí.

Claro! no había reparado en ese detalle, gracias Ferhand!

EDITADO: Se me genera otra duda relacionada con ese código:
Si en el script el nombre de mi array depende del valor de otro array local,


variable_global_array2_set("tb_"+string(var_tablas[i,1]),0,0,i);


¿cómo puedo llamar al array resultante si no se el nombre completo (ya que está oculto en string(var_tablas[i,1]) ?
Imagino que con declarar var_tablas como global se solucionará, pero supongo que no será bueno tener tantas variables globales rodando por el juego ¿no?

  Saludos amigo Samigabacho:


   No te preocupes por el número de variables, no creo que tengas una cantidad de variables globales suficiente como para poner lento el juego. En el concurso GIA Tetris tuve un arreglo de veinte por diez y corría bien en una PC lenta.  :-[

  El hecho de que sean globales solamente determina que no se eliminarán de la "ram" hasta que el juego cierre totalmente. Particularmente creo un objeto que será el controlador de las funciones generales de un juego y dentro creo las variables generales, a la hora de utilizarlas las llamo "nombreObjeto . nombreVariable", siempre se donde están.  ;) 

Y sí, puedes llamar al "array" resultante donde está guardado el nombre de la variable que no conoces, para eso se creó. Recuerda, tienes un "array" donde guardas el nombre de los "arrays" creados dinámicamente, esa es la referencia.  8)

    Disculpa las molestias ocasionadas.  ;D


Uy sí Ferhand tenés razón XD
Lo de tener muchas variables globales lo pregunté y no hace nada. Otra es modificar el script para que te cree un array global a partir del archivo y listo
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy


  Saludos makero Samigabacho:


  Discúlpame por la demora, desde el Lunes te debo los "scripts" arreglados.

  Acá te los paso, estúdialos y luego puedes preguntar lo que no comprendas.  :-[

  Recuerda que en todo el fin de semana no estoy en línea...  :-[


Muchas gracias amigo ferhand,
siento el retraso en la respuesta pero he estado "desconectado" :D
Voy a echarle un vistazo a lo que me pasas y si tengo dudas te las comento.
Gracias de nuevo.