No te entiendo en absoluto. Cálmate, mira el teclado, explica todo y correctamente.
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.
482
Desarrollo de Scripts / Interpolación lineal en GM8
Mayo 08, 2016, 02:39:21 AM
Autor: NiuWeb
Versión de GM utilizada: GM8.0, no he probado si funciona en anteriores, ni tengo cómo.
Descripción: Una emulación sencillísima de la función lerp() de GMS. No me sé la fórmula de la interpolación lineal, ni tengo idea de cómo trabaja la misma en GMS. Pero lo importante es que hace el mismo trabajo xDD
Códigos:
Función lerp(a, b, amt);
[gml]
///lerp(a, b, amt);
var a, b, amt;
a = argument0;
b = argument1;
amt = argument2;
var w, p;
w = b - a;
p = w*amt;
return a + p;
[/gml]
Argumentos:
a: El primer valor a interpolar.
b: El segundo valor a interpolar.
amt: La cantidad a interpolar.
Ejemplo:
[gml]
lerp(10, 15, 0.5); //Devuelve 12.5
lerp(7, 24, 0.2); //Devuelve 11.4 aprox.
lerp(12, 18, 1.5); //Devuelve 21.
lerp(21, 3, 0.5); //Devuelve 12.
[/gml]
Es muy corto, pero qué se le hace, funciona xD. Espero le pueda ser de utilidad a alguien que aún use GM8 xD
Versión de GM utilizada: GM8.0, no he probado si funciona en anteriores, ni tengo cómo.
Descripción: Una emulación sencillísima de la función lerp() de GMS. No me sé la fórmula de la interpolación lineal, ni tengo idea de cómo trabaja la misma en GMS. Pero lo importante es que hace el mismo trabajo xDD
Códigos:
Función lerp(a, b, amt);
[gml]
///lerp(a, b, amt);
var a, b, amt;
a = argument0;
b = argument1;
amt = argument2;
var w, p;
w = b - a;
p = w*amt;
return a + p;
[/gml]
Argumentos:
a: El primer valor a interpolar.
b: El segundo valor a interpolar.
amt: La cantidad a interpolar.
Ejemplo:
[gml]
lerp(10, 15, 0.5); //Devuelve 12.5
lerp(7, 24, 0.2); //Devuelve 11.4 aprox.
lerp(12, 18, 1.5); //Devuelve 21.
lerp(21, 3, 0.5); //Devuelve 12.
[/gml]
Es muy corto, pero qué se le hace, funciona xD. Espero le pueda ser de utilidad a alguien que aún use GM8 xD
483
Preguntas y respuestas / Re:Juntar dos background.
Mayo 07, 2016, 08:11:59 PM
El background 1 queda sobre el background 0; el background 2 queda sobre el background 1, y así sucesivamente.
Entonces, si quieres que el background de montañas quede sobre el de nubes, puedes escribir:
[gml]
background_index[0] = nubes;
background_index[1] = montanas;
[/gml]
O puedes hacer lo mismo desde el editor de rooms.
Entonces, si quieres que el background de montañas quede sobre el de nubes, puedes escribir:
[gml]
background_index[0] = nubes;
background_index[1] = montanas;
[/gml]
O puedes hacer lo mismo desde el editor de rooms.
484
Preguntas y respuestas / Re:Guerra entre IAs ¿¿Que se debería entregar antes de la guerra??
Mayo 07, 2016, 04:42:58 AM
¿La mayoría?
No sé, pero en las librerías propias del GM sólo he visto una pequeña parte de las funciones/sentencias del GML :S
No sé, pero en las librerías propias del GM sólo he visto una pequeña parte de las funciones/sentencias del GML :S
485
Preguntas y respuestas / Re:Guerra entre IAs ¿¿Que se debería entregar antes de la guerra??
Mayo 07, 2016, 04:16:33 AM
Sólo volví para joder xD
Cita de: VisualGames en Mayo 07, 2016, 04:02:41 AMNo eres el único. No sé los demás usuarios, pero por lo menos yo escribí la primera línea de código después de haber estudiado, arrastrado y soltado la gran mayoría de acciones que tiene GM. Todos pasamos por ahí, y muchos de nosotros hablamos por experiencia, sabemos que es mejor utilizar el código porque lo hemos comparado, hemos experimentado usando tanto código como DnD, y hemos visto cuál es mejor. Por eso podemos decirlo, no lo hablamos sin pensar.
No se ustedes pero me siento que soy el unico que se a dedicado a investigar de reojo esto de las D&D
486
Preguntas y respuestas / Re:Guerra entre IAs ¿¿Que se debería entregar antes de la guerra??
Mayo 07, 2016, 03:15:50 AM
¿Dónde? xD
GIA = Guerra de IAs
IA = Inteligencia artificial
DnD = D&D = Drag & Drop
XD
Lo que pregunto es cómo piensas programar una IA usando sólo DnD xD, no creo que salga nada muy avanzado como para que aguante hacer una GIA con ellas :v
GIA = Guerra de IAs
IA = Inteligencia artificial
DnD = D&D = Drag & Drop
XD
Lo que pregunto es cómo piensas programar una IA usando sólo DnD xD, no creo que salga nada muy avanzado como para que aguante hacer una GIA con ellas :v
487
Preguntas y respuestas / Re:Guerra entre IAs ¿¿Que se debería entregar antes de la guerra??
Mayo 07, 2016, 03:07:32 AM
¿Una GIA con DnD? Es más, ¿Una IA con DnD? :S
488
Preguntas y respuestas / Re:Duda con monetización
Mayo 06, 2016, 07:44:39 AM
Bueno, sobre la monetización no estoy seguro, pero creo haber leído que YoyoGames permite tener completa libertad sobre los proyectos creados, mientras éstos sean totalmente legales (no estoy seguro de si sea verdad, sólo digo lo que creo que he leído por ahi). Por lo que imagino que esto incluye la monetización.
Sobre el juego en sí, no. Porque la licencia Estándar del programa sólo permite la exportación para la plataforma Windows. Para exportar para Android necesitas la licencia profesional y su módulo Android.
Sobre el juego en sí, no. Porque la licencia Estándar del programa sólo permite la exportación para la plataforma Windows. Para exportar para Android necesitas la licencia profesional y su módulo Android.
489
Preguntas y respuestas / Re:Sistema de seleccion de instancias al hacer click sobre ellas
Mayo 05, 2016, 09:41:16 PM
Creo que es más fácil usar la id de las instancias. Por ejemplo, declaramos unas variables:
[gml]
global.seleccion = noone;
xx = -1;
yy = -1;
move = false;
[/gml]
Luego, en el evento de mouse global:
[gml]
var inst = instance_position(mouse_x, mouse_y, objeto); //Buscamos alguna instancia en la posición del mouse
if inst != noone //Si la hay {
global.seleccion = inst; //Seleccionarla
move = false; //Evitar que los objetos seleccionados anteriormente sigan moviéndose
}
else { //Si no la hay
if global.seleccion != noone { //Mirar si anteriormente ya se había seleccionado alguna, y si lo hay
xx = mouse_x;
yy = mouse_y;
move = true; //Permitir mover
}
}
[/gml]
Por último, en el evento <step>:
[gml]
if global.seleccion != noone and move { //Si está seleccionada una instancia y se puede mover
var obj = global.seleccion;
var dir = point_direction(obj.y, obj.y, xx, yy);
obj.x += lengthdir_x(4, dir);
obj.y += lengthdir_y(4, dir);
}
[/gml]
Poooodría funcionar, no lo he probado.
[gml]
global.seleccion = noone;
xx = -1;
yy = -1;
move = false;
[/gml]
Luego, en el evento de mouse global:
[gml]
var inst = instance_position(mouse_x, mouse_y, objeto); //Buscamos alguna instancia en la posición del mouse
if inst != noone //Si la hay {
global.seleccion = inst; //Seleccionarla
move = false; //Evitar que los objetos seleccionados anteriormente sigan moviéndose
}
else { //Si no la hay
if global.seleccion != noone { //Mirar si anteriormente ya se había seleccionado alguna, y si lo hay
xx = mouse_x;
yy = mouse_y;
move = true; //Permitir mover
}
}
[/gml]
Por último, en el evento <step>:
[gml]
if global.seleccion != noone and move { //Si está seleccionada una instancia y se puede mover
var obj = global.seleccion;
var dir = point_direction(obj.y, obj.y, xx, yy);
obj.x += lengthdir_x(4, dir);
obj.y += lengthdir_y(4, dir);
}
[/gml]
Poooodría funcionar, no lo he probado.
490
Preguntas y respuestas / Re:pad
Mayo 05, 2016, 06:39:35 AM
Para crear un botón, sólo necesitas configurar las acciones que se deben ejecutar al presionar un punto en la pantalla. Para esto existen infinidades de formas. Lo más básico es con objetos distintos, ubicados en las posiciones deseadas, y en su evento de <Mouse Pressed> o similares programar su comportamiento. Seguimos con la detección de posiciones. Hablo de detectar un clickeo global de mouse, y dependiendo de su posición, ejecutar algo. Esto es más eficiente ya que puede programarse fácilmente desde un mismo objeto. Por último están las Virtual Key, similares al método anterior pero algo más enredadas (enredadas pero fáciles, xD).
Eso con respecto a botones "estáticos", o sea, sólo de clickear.
Para hacer un joystick, es algo más complejo, pero no difícil. Puedes apoyarte de funciones como point_direction(), point_in_rectangle(), lengthdir_x() ó lengthdir_y() para crear algo decente.
Eso con respecto a botones "estáticos", o sea, sólo de clickear.
Para hacer un joystick, es algo más complejo, pero no difícil. Puedes apoyarte de funciones como point_direction(), point_in_rectangle(), lengthdir_x() ó lengthdir_y() para crear algo decente.
491
Preguntas y respuestas / Re:Sistema para hacer un GUI
Mayo 04, 2016, 10:46:55 PM
¿Con "GUI" te refieres a barras de vida, botones y demás cosas en la pantalla?
Es posible, usando las funciones de dibujo comunes y corrientes (tipo draw_rectangle() y sus familiares). Y también se puede apoyar en las vistas, usando las posiciones de éstas para hacer una "GUI que siga la cámara"
Es posible, usando las funciones de dibujo comunes y corrientes (tipo draw_rectangle() y sus familiares). Y también se puede apoyar en las vistas, usando las posiciones de éstas para hacer una "GUI que siga la cámara"
492
Desarrollo de Scripts / Re:División de cadenas por un separador (Explode)
Mayo 04, 2016, 10:10:29 PM
He reescrito el script, ahora es un poco más corto y eficiente, aunque sigue funcionando exactamente igual :D
493
Preguntas y respuestas / Re:Enlazar dos proyectos
Mayo 03, 2016, 09:25:26 PM
Si es GM8, puedes usar la opción Export resources, del menú Archivo. Si es GMS podrías guardar los recursos que desees mover en una extensión, exportarla e insertarla en el nuevo proyecto.
494
Preguntas y respuestas / Re:Como guardar el Mapa in-game ?
Mayo 01, 2016, 07:28:47 PM
Podrías hacerlo más sencillo de esta forma:
[gml]
ini_open("mapa.ini");
var n = 0;
with (objeto) {
n += 1;
ini_write_real(object_get_name(objeto) + string(n), "xpos", x); //Guardamos la posición 'x'
ini_write_real(object_get_name(objeto) + string(n), "ypos", y); //Guardamos la posición 'y'
//lo mismo con todas las variables que quieras
}
ini_write_real("propiedades", "cantidad", n);
ini_close();
[/gml]
Y cuando quieras cargar las instancias:
[gml]
ini_open("mapa.ini");
var n = ini_read_real("propiedades", "cantidad", 0);
var xx, yy;
for(var i = 1; i <= n; i += 1) {
xx = ini_read_real(object_get_name(objeto) + string(i), "xpos", 0); //Cargamos la posición 'x'
yy = ini_read_real(object_get_name(objeto) + string(i), "ypos", 0); //Cargamos la posición 'y'
instance_create(xx, yy, objeto);
}
ini_close();
[/gml]
[gml]
ini_open("mapa.ini");
var n = 0;
with (objeto) {
n += 1;
ini_write_real(object_get_name(objeto) + string(n), "xpos", x); //Guardamos la posición 'x'
ini_write_real(object_get_name(objeto) + string(n), "ypos", y); //Guardamos la posición 'y'
//lo mismo con todas las variables que quieras
}
ini_write_real("propiedades", "cantidad", n);
ini_close();
[/gml]
Y cuando quieras cargar las instancias:
[gml]
ini_open("mapa.ini");
var n = ini_read_real("propiedades", "cantidad", 0);
var xx, yy;
for(var i = 1; i <= n; i += 1) {
xx = ini_read_real(object_get_name(objeto) + string(i), "xpos", 0); //Cargamos la posición 'x'
yy = ini_read_real(object_get_name(objeto) + string(i), "ypos", 0); //Cargamos la posición 'y'
instance_create(xx, yy, objeto);
}
ini_close();
[/gml]
495
Preguntas y respuestas / Re:Actualizador
Mayo 01, 2016, 04:41:58 AM
Se me ocurre que podrías tener en tu servidor dos archivos: Un archivo de texto plano que contenga la versión más reciente del programa, y otro, el instalador/ejecutable del mismo.
Entonces, por medio de http_get() obtienes el contenido del archivo plano, siendo la última versión del juego a modo de cadena, y si ésta es mayor a la actual, que se descargue el ejecutable por medio de http_get_file()
Entonces, por medio de http_get() obtienes el contenido del archivo plano, siendo la última versión del juego a modo de cadena, y si ésta es mayor a la actual, que se descargue el ejecutable por medio de http_get_file()