Cita de: Domenec en Mayo 02, 2013, 09:32:52 PMAhh de eso no me habia dado cuenta jaja. Me alegro que funcione
De cualquier manera, mi principal error era no poner la variable antes del ini_read..... Para que dicha variable tomara el valor que esta cargando del ini.
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.
121
Preguntas y respuestas / Re:Guardando y cargando variables
Mayo 03, 2013, 07:04:21 PM122
Preguntas y respuestas / Re:¿Me conviene pasar de Flash a GM?
Mayo 02, 2013, 09:05:30 PM
El manual ese esta bien, solamente le faltan unas pocas funciones. Pero igual usaria ese para empezar
123
Preguntas y respuestas / Re:Guardando y cargando variables
Mayo 02, 2013, 07:40:34 PM
Tenes que ver cuales son los argumentos de ini_read_real() y ini_write_real(), está en el manual y te pongo lo que dice:
Entonces vos deberías escribir ini_read_real(seccion,nombre de variable,0)
En la seccion va el nombre del grupo de variables por asi decirlo, en el INI eso está entre corchetes, así: [Seccion]. en el segundo pones el nombre de la variable a leer, en este caso creo que seria obj_player.cuchillo. Cuidado que la seccion y la llave (nombre de variable) van como String, o sea como texto. Entonces van entre comillas ("")
Y despues el 0 es el valor que devuelve si no encontró la seccion o la llave, podes poner el que quieras
Despues en ini_write_real es un poco distinto. Sería así: ini_write_real(seccion,nombre de variable,valor a guardar)
Al igual que la anterior los dos primeros son Strings, y el tercero es un valor, un numero. Entonces ahi podrías poner una variable.
Si en tu ejemplo num_cuchillo es la variable a guardar y obj_player.cuchillo es la llave yo pienso que quisiste hacer esto:
Si en cambio la variable obj_player.cuchillo guarda un string tu código debería funcionar
Lo que no entiendo es tu solucion al problema, porque estas leyendo la llave obj_player.cuchillo que no existe, porque en ini_write_real no usaste comillas
Citar
ini_read_real(section,key,default) Lee el valor real de la llave indicada con key de la sección indicada como section. Cuando no existe la llave o la sección se devuelve el valor especificado por default.
ini_write_real(section,key,value) Escribe el valor real value en la llave indicada con key en la sección indicada con section.
Entonces vos deberías escribir ini_read_real(seccion,nombre de variable,0)
En la seccion va el nombre del grupo de variables por asi decirlo, en el INI eso está entre corchetes, así: [Seccion]. en el segundo pones el nombre de la variable a leer, en este caso creo que seria obj_player.cuchillo. Cuidado que la seccion y la llave (nombre de variable) van como String, o sea como texto. Entonces van entre comillas ("")
Y despues el 0 es el valor que devuelve si no encontró la seccion o la llave, podes poner el que quieras
Despues en ini_write_real es un poco distinto. Sería así: ini_write_real(seccion,nombre de variable,valor a guardar)
Al igual que la anterior los dos primeros son Strings, y el tercero es un valor, un numero. Entonces ahi podrías poner una variable.
Si en tu ejemplo num_cuchillo es la variable a guardar y obj_player.cuchillo es la llave yo pienso que quisiste hacer esto:
CitarMi codigo para guardar el .ini es este:
ini_open("options.ini")
ini_write_real("Armas","obj_player.cuchillo",num_cuchillo) //la variable cuchillo no es global
ini_close()
Para cargalo uso:
ini_open("options.ini")
ini_read_real("Armas","obj_player.cuchillo",1)
ini_close()
Si en cambio la variable obj_player.cuchillo guarda un string tu código debería funcionar
CitarMi codigo para guardar el .ini es este:
ini_open("options.ini")
ini_write_real("Armas",obj_player.cuchillo,num_cuchillo) //la variable cuchillo no es global
ini_close()
Para cargalo uso:
ini_open("options.ini")
ini_read_real("Armas",obj_player.cuchillo,1)
ini_close()
Lo que no entiendo es tu solucion al problema, porque estas leyendo la llave obj_player.cuchillo que no existe, porque en ini_write_real no usaste comillas
124
Preguntas y respuestas / Re:¿Me conviene pasar de Flash a GM?
Mayo 02, 2013, 07:26:49 PM
Aca obviamente te vamos a decir que uses GM. pero si no te gusta programar en codigo no se si te conviene, porque cada vez lo vas a usar más
125
Preguntas y respuestas / Re:condicion Gm8
Mayo 01, 2013, 04:50:41 PM
La pregunta esta en poco mal echa. No hace falta hace una encuesta para esto, sin ofender.
En mi opinión, la pregunta debería haber sido:
Si es así, uno debería usar la sentencia if. Si no la conoces sería bueno que leas el manual en la parte de Estructura general del GML
También en el manual está como usar la sentencia if
Es simple, uno debe escribirla en este formato:
En Pregunta uno debe escribir una condición, una expresión como se llama, por ejemplo balas>0.
En acción uno debe escribir algo que pasará cuando se cumpla esa condición, por ejemplo instance_create(x,y,obj_bala)
Entonces en mi ejemplo queda así:
Ese código creará un obj_bala si la variable balas es mayor a 0
Uno también puede poner varias acciones dentro de un mismo if con corchetes. De esta manera:
Y por último uno puede usar else, que se ejecutará si el if no se ha ejecutado, se podría traducir como un "o si no". Entonces:
En mi opinión, la pregunta debería haber sido:
Citar¿Cómo hago una condición en GML (código)?
Si es así, uno debería usar la sentencia if. Si no la conoces sería bueno que leas el manual en la parte de Estructura general del GML
También en el manual está como usar la sentencia if
Es simple, uno debe escribirla en este formato:
Código [Seleccionar]
if (<pregunta>) <accion>
En Pregunta uno debe escribir una condición, una expresión como se llama, por ejemplo balas>0.
En acción uno debe escribir algo que pasará cuando se cumpla esa condición, por ejemplo instance_create(x,y,obj_bala)
Entonces en mi ejemplo queda así:
Código [Seleccionar]
if (balas>0) instance_create(x,y,obj_bala)
Ese código creará un obj_bala si la variable balas es mayor a 0
Uno también puede poner varias acciones dentro de un mismo if con corchetes. De esta manera:
Código [Seleccionar]
if (<pregunta>) {
<accion>
<accion>
}
Y por último uno puede usar else, que se ejecutará si el if no se ha ejecutado, se podría traducir como un "o si no". Entonces:
Código [Seleccionar]
if (<pregunta>) {
<accion>
<accion>
}
else {
<accion>
<accion>
}
126
Preguntas y respuestas / Re:Se puede utilizar No-Ip en juegos online?
Mayo 01, 2013, 04:37:06 PM
Bueno, entonces perfecto.
Solo hace falta que le pidas a un amigo que se conecte con tu IP que aparece acá
- Si funciona deberías hacerte un No-IP, porque esa IP que usaste antes para conectarte suele cambiar.
- Si no funciona conectarte con una IP deberías intentar Port Forwarding, si queres avisa y te ayudo
Solo hace falta que le pidas a un amigo que se conecte con tu IP que aparece acá
- Si funciona deberías hacerte un No-IP, porque esa IP que usaste antes para conectarte suele cambiar.
- Si no funciona conectarte con una IP deberías intentar Port Forwarding, si queres avisa y te ayudo
127
Preguntas y respuestas / Re:Se puede utilizar No-Ip en juegos online?
Mayo 01, 2013, 12:34:46 AM
No son errores, es problema de conexion.
El servidor sólo funcionará en tu computadora o habrá servidores creados por otras personas?
No-IP funciona perfecto, eso lo que hace es hacer estática tu IP, primero probá así y si no funciona es porque necesitas hacer Port Forwarding
El servidor sólo funcionará en tu computadora o habrá servidores creados por otras personas?
No-IP funciona perfecto, eso lo que hace es hacer estática tu IP, primero probá así y si no funciona es porque necesitas hacer Port Forwarding
128
Preguntas y respuestas / Re:Se puede utilizar No-Ip en juegos online?
Abril 30, 2013, 12:59:22 AM
Si, es justo lo que yo usaba.
Yo entiendo que para hacer juegos en red uno debe saber esto, a lo mejor me equivoco pero me funcionó tan bien en juegos de GM como en servidores de Minecraft
En realidad no hace falta, si uno le da al cliente la IP de tu PC ya bastaría, el problema es que esa IP cambia cada unos dias, por eso uno usa NoIP. Lo que hace NoIP es crear una página web que lleva a tu IP, para que NoIP conozca tu IP tenés que instalar un programa, que lo que hace es decirle tu nueva IP a NoIP cada vez que esta cambie. Simple.
El problema es que esta IP que uno debe usar es la misma para todos los equipos de tu red (en mi caso todos los equipos de mi casa), entonces cuando alguien se quiere conectar a tu servidor tu modem no va a saber a donde llevar esos mensajes que entran desde el cliente, pero eso ya es otra cosa, eso se llama Port Forwarding, consiste en configurar tu módem. Por qué uno no debe hacer Port Forwarding cuando uno juega en red? Porque la IP para juegos en red que usas es la IP local de tu PC, (si no me equivoco es la que estas obteniendo escribiendo ipconfig)
Yo entiendo que para hacer juegos en red uno debe saber esto, a lo mejor me equivoco pero me funcionó tan bien en juegos de GM como en servidores de Minecraft
En realidad no hace falta, si uno le da al cliente la IP de tu PC ya bastaría, el problema es que esa IP cambia cada unos dias, por eso uno usa NoIP. Lo que hace NoIP es crear una página web que lleva a tu IP, para que NoIP conozca tu IP tenés que instalar un programa, que lo que hace es decirle tu nueva IP a NoIP cada vez que esta cambie. Simple.
El problema es que esta IP que uno debe usar es la misma para todos los equipos de tu red (en mi caso todos los equipos de mi casa), entonces cuando alguien se quiere conectar a tu servidor tu modem no va a saber a donde llevar esos mensajes que entran desde el cliente, pero eso ya es otra cosa, eso se llama Port Forwarding, consiste en configurar tu módem. Por qué uno no debe hacer Port Forwarding cuando uno juega en red? Porque la IP para juegos en red que usas es la IP local de tu PC, (si no me equivoco es la que estas obteniendo escribiendo ipconfig)
129
Preguntas y respuestas / Re:[AYUDA] Problema definiendo array
Abril 26, 2013, 02:11:57 AMCita de: Iros en Abril 25, 2013, 10:37:53 PMEntonces es porque el indice del array no puede superar los 32000 :D
Defino la variable a en el evento CREATE. Al ejecutar el código me dice que el índice de array no puede superar los 32000 o algo así. La verdad que no se que puede ser el problema :S
Por qué llegas a un indice tan alto? Lo necesitas realmente o es un problema del bucle? Porque no creo que tengas tantos participantes
No se como funciona el código pero no se debe estar cumpliendo la condición del while, por lo que veo es porque no hay ningun nombre con string "" en el ini
130
Preguntas y respuestas / Re:Rotación de torreta
Abril 22, 2013, 11:55:40 PM
Lo mismo pensaba yo, pero como funcionaba pensé que estaba medio dormido, pero sí, era verdad, ahora que me fijo te explico por que funciona:
La sentencia break termina el ciclo for, entonces el ciclo for solo se ejecuta una vez, entonces ese código en Step es lo mismo que esto:
[gml]if rotando = true
{
image_angle += nuevaDir
contador -= 1
if contador = 0 {rotando = false}
}[/gml]
PD: Pensándolo bien no era el único dormido :P
La sentencia break termina el ciclo for, entonces el ciclo for solo se ejecuta una vez, entonces ese código en Step es lo mismo que esto:
[gml]if rotando = true
{
image_angle += nuevaDir
contador -= 1
if contador = 0 {rotando = false}
}[/gml]
PD: Pensándolo bien no era el único dormido :P
131
Preguntas y respuestas / Re:draw_background_tiled(solo horizontal)
Abril 22, 2013, 06:58:17 PM132
Preguntas y respuestas / draw_background_tiled(solo horizontal) [Resuelto]
Abril 22, 2013, 12:46:38 AM
Yo tengo un fondo de unas montañas que debo repetir horizontalmente, para dibujarlo uso draw_background_tiled(), pero eso tambien me repite el fondo verticalmente.
Cual es la solucion más correcta? dibujarlo varias veces con draw_background()? Hacer un background super ancho que abarque toda la room?
Cual es la solucion más correcta? dibujarlo varias veces con draw_background()? Hacer un background super ancho que abarque toda la room?
133
Preguntas y respuestas / Re:Rotación de torreta
Abril 20, 2013, 03:53:40 PMCita de: hhAnt en Abril 20, 2013, 11:33:26 AMAh si, por ejemplo imaginate que la torreta se esta moviendo de 0 a 45, pero cuando anda en 20 yo presiono y hago mover la torreta 45 grados más, o sea 20 + 45 = 65 grados. Eso se puede solucionar con una condición que permita girar la torreta sólo cuando haya terminado, así:
Tú código funciona perfectamente con la salvedad de que si una vez empezada la animación de la rotación le doy a una de las teclas antes de que esta termine (es decir, que la torreta pase de estar en posición de 0º a 45º), la posición final no es de 45º sino un angulo distinto, ¿Sabes por que puede ser esto? y por otro lado tampoco termino de comprender porque el angulo que quiero "avanzar" tiene que ser multiplo de lo que giro en cada step
Código [Seleccionar]
if cant_giro = 0 cant_giro = 45 //Solo girar si ha dejado de girar. Positivo para girar a derecha y negativo hacia izquierda
Me equivoque en lo de multiplo, en realidad eso se llama divisor :-[
El angulo que quieres avanzar tiene que ser divisor de lo que giras en cada step porque uno necesita que cant_giro llegue a 0. El problema es que puede ocurrir que nunca llegue a 0, o que tarde más de de lo que es necesario. Pongo este ejemplo: uno quiere girar la torreta 12 grados, y 5 por step.
CitarEn el primer step cant_giro va a ser 12Entonces es como que se "pasa de largo". Una forma es que si cant_giro es menor que la cantidad de grados por step simplemente girar lo que dice cant_step. en mi ejemplo sería:
En el segundo cant_giro va a ser 12 - 5 = 7
En el tercer step cant_giro va a ser 7 - 5 = 2
En el cuarto step cant_giro va a ser 2 - 5 = -3
En el quinto step cant_giro es negativo, entonces va a ser -3 + 5 = 2
En el sexto step cant_giro va a ser 2 - 5 = -3
... Y asi hasta el infinito y mas allá
CitarEn el primer step cant_giro va a ser 12O la otra forma mas facil es hacer que sean divisores y listo, asi no se complica el código:
En el segundo cant_giro va a ser 12 - 5 = 7
En el tercer step cant_giro va a ser 7 - 5 = 2
En el cuarto step cant_giro va a ser menor que 5, entonces le restamos lo que dice cant_step 2 - 2 = 0
Fin
CitarEn el primer step cant_giro va a ser 12Mira que ahora resto de 6 en 6, pero como 6 no es divisor de 45 tu deberías usar 1, 3, 5, 9, 15 o 45
En el segundo cant_giro va a ser 12 - 6 = 6
En el tercer step cant_giro va a ser 6 - 6 = 0
Fin
134
Preguntas y respuestas / Re:Rotación de torreta
Abril 19, 2013, 07:18:50 PM
No es muy facil. Lo que haría es poner un cuenta regresiva de giro cuando necesito girar, algo asi como:
Tambien vas a tener que agregar en create la declaracion de la variable, para prevenir errores:
Y en el step giramos:
Es algo simple, se puede hacer mejor pero eso es lo que se me ocurre. Tené en cuenta que los grados que quieras girar (en este caso 45) tiene que ser múltiplo de cuanto girs por step (en este caso 5)
No lo probe pero creo que sí andaría, cualquier cosa avisa
Código [Seleccionar]
cant_giro = 45 //Positivo para girar a derecha y negativo hacia izquierda
Tambien vas a tener que agregar en create la declaracion de la variable, para prevenir errores:
Código [Seleccionar]
cant_giro = 0
Y en el step giramos:
Código [Seleccionar]
if cant_giro > 0{ //Si debemos girar a la derecha
image_angle +=5 //Girar 5 grados
cant_giro -= 5 //Restar 5 grados a cant_giro
}
if cant_giro < 0{ //Si debemos girar a la derecha
image_angle -=5 //Girar 5 grados
cant_giro += 5 //Sumar 5 grados a cant_giro
}
Es algo simple, se puede hacer mejor pero eso es lo que se me ocurre. Tené en cuenta que los grados que quieras girar (en este caso 45) tiene que ser múltiplo de cuanto girs por step (en este caso 5)
No lo probe pero creo que sí andaría, cualquier cosa avisa
135
Preguntas y respuestas / Re:Compilar juegos para ubuntu ...
Abril 19, 2013, 07:07:25 PM
No lei nada al respecto de GM para Ubuntu. Pero yo hice unos ejemplos simples con Game Maker y sus juegos funcionando perfectamente en Wine. No se que pasa con juegos mas complejos, si queres pruebo, pero no se si te interesa usar Wine.
Wine es un programa para Ubuntu que permite correr aplicaciones de Windows, algo asi como un emulador (bueno, por todos lados se pelean si Wine es emulador o no, la idea es que anda y listo)
Wine es un programa para Ubuntu que permite correr aplicaciones de Windows, algo asi como un emulador (bueno, por todos lados se pelean si Wine es emulador o no, la idea es que anda y listo)