Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: knd144 en Agosto 03, 2010, 08:37:30 PM

Título: Enviar un array como argumento a un script
Publicado por: knd144 en Agosto 03, 2010, 08:37:30 PM
Pues ese el mi problema, no puedo manejar un arreglo y enviarlo aun script (ni returnarlo desde el script). Se supone que basta con poner algo as?:
script(array) y se mandar?a todo el arreglo, pero no  :-\.
O bien, he intentato tambi?n en script(array[]) pero es lo mismo, solo hace referencia a la primera posici?n del arreglo  ???.
inclusive lo he hecho de esta manera:
array[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19] pero me toma como si quisiera usar un array de 20 dimensiones, cosa rara para como he trabajado en C/C++ y Java  :-[
Al parecer el Game Maker trabaja un tanto diferente con estos recursos, me podr?an hechar la mano  ;D

Gracias de antemano
Título: Re: Enviar un array como argumento a un script
Publicado por: Texic en Agosto 03, 2010, 10:27:19 PM
Puedes hacer que en el script se haga referencia a ese array mediante el nombre, entonces lo enviarias asi
script("miarray")

Y en el script utilizas

variable_global_array_get(argument0,indice)
variable_global_array_set(argument0,indice,valor)
o
variable_local_array_get(argument0,indice)
variable_local_array_set(argument0,indice,valor)

Seg?n te manejes, con locales o globales
Eso es lo que se me ocurre, espero q t sirva
Título: Re: Enviar un array como argumento a un script
Publicado por: eduardo960 en Agosto 03, 2010, 11:59:06 PM
Es mejor utilizar listas directamente, cada una tiene un identificador propio, puedes organizar los datos dentro de estas, obtener el tama?o de la lista (n?mero de registros), etc.

Tienes m?s informaci?n en el manual: http://www.comunidadgm.org/manual_GM/Listas.htm

Con las funciones que te muestra Texic se puede lograr un resultado similar al de las listas, s?lo que el uso ser?a m?s complicado. Para hacer lo que pides basta con enviar el id de la lista previamente creada y dentro del script obtener los valores.

Saludos :)
Título: Re: Enviar un array como argumento a un script
Publicado por: SP_Christian en Agosto 04, 2010, 11:57:06 AM
No se supone que se pasan por referencia?
Quiero decir, si al script le envias el array mediante el nombre (script(miarray)) deberias poder usar argument0[0] com un array normal no?
Título: Re: Enviar un array como argumento a un script
Publicado por: Texic en Agosto 04, 2010, 09:02:22 PM
Creo q no, ya que lo que pasa es el valor de la variable miarray, que ser? 0 o dar? error de que no est? inicializada. En GM pueden coexistir un array y una variable llamados igual y son tratados como dos variables completamente diferentes
Título: Re: Enviar un array como argumento a un script
Publicado por: knd144 en Agosto 05, 2010, 01:17:52 AM
Bueno, gracias por responder; Eduardo, no me sab?a eso de las listas, son muy interesantes pero por ahor alo que necesito es lo de Texic  :-[.

Por cierto christian, la cosa no sirve por que si env?o el array as?: script(miarrai), el argument0 tendr? el valor de la posicion 0 del array  :(

SALUDOS  ;)
Título: Re: Enviar un array como argumento a un script
Publicado por: Ciberman en Agosto 06, 2010, 05:28:44 PM
pero lo que dijo Texic es que lo pases como string... no como una expresi?n :P

lo m?s conveniente es usar listas... pero ya lo explic? Lalo (Eduardo960)... ahora.. no hay funciones para saber si se inicializ? una entrada especifica del array
osea, no existe un:
variable_global_array_exists(argument0,indice)
por eso deber?as usar listas porque no podr?as asegurar que el user inicializ? todo el array hasta donde tu quieres...

Título: Re: Enviar un array como argumento a un script
Publicado por: Texic en Agosto 06, 2010, 07:38:28 PM
Que tienen en contra de los arrays?? lol
Si marc?s la casilla de treat uninitialized variables as 0 o inicializas el array vos mismo no da ningun error