Mostrar Mensajes

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.

Mensajes - bygdle

181
Del GM: Studio 1.4, no, o al menos no oficialmente.
182
El error ha cambiado, lo que significa que Gradle ya fue instalado correctamente.
El nuevo error es del keystore. Ve a la File » Prefferences, y crea el keystore desde ahí.
183
Con background_blend[].
[gml]
background_blend[0] = make_colour_hsv( irandom(254), 255, 255 );
[/gml]
Y con tiles, usando la función tile_get_blend().
184
General / Re:Android Studio y SDK Manager
Noviembre 02, 2017, 06:35:43 AM
Yo recientemente lo he descargado, instalado y compilado de la siguiente manera:

El SDK lo descargas desde aquí:
https://android-sdk.uptodown.com/windows

Lo instalas y descargas los paquetes importantesde Android, que son las build-tools, los android-sdk y los google-apis.

Después intentas compilar en GM:S con ese SDK.

Cuando yo hice eso, el GM mostró un error, que al parecer era un problema con las licencias: No tengo captura, pero la consola decía que me faltaba aceptar los términos de ésta. Tal vez porque el instalador de paquetes es muy antíguo y la manera de aceptar la licencia ha cambiado.

Lo solucioné yendo a la ruta tools/bin/ del SDK, y ejecutando la consola de comandos desde ahí. Escribí este comando:

sdkmanager --update

Una vez hecho esto, pasará un tiempo y después se mostrará la licencia en el CMD, y al aceptarla desde ahí, podrás compilar normalmente.
185
Sólo usa una variable como identificador de sala, y modifícala en el creation code.
[gml]
///Evento create del botón
roomTarget = noone;
[/gml]
[gml]
///Evento mouse pressed (por ejemplo) del botón
if(room_exists(roomTarget))
    room_goto(roomTarget);
[/gml]
Y modificas la variable roomTarget en el creation code.
[gml]
///Creation code del botón
roomTarget = room_Inicio; //por ejemplo
[/gml]
186
Crea un objeto sin sprite con el código importante del jugador (movimiento e interacciones), y asígnalo como parent tanto al jugador como al personaje de prueba.
187
Debe ser algún problema con la conexión al servidor de Gradle. Intenta instalarlo manualmente, y después añade a la variable de entorno PATH la ubicación del directorio bin, que está en donde instalaste gradle.

https://gradle.org/install/#manually
188
Preguntas y respuestas / Re:¿Como se interpreta esto?
Octubre 31, 2017, 02:00:08 AM
Recuerda que el nombre de archivo debe ser una cadena, así que debes ponerlo entre comillas. Además, es recomendable comprobar si el archivo a eliminar existe para evitar que surja un error.
[gml]
if(global.tiempo < 0) //Si la variable tiempo es menor que cero , quiere decir que el tiempo termina en -1, tu tiempo debe estar en negativo
{  //entonces
    global.tiempo = 0 //el tiempo se iguala a cero, puede haber un error en este codigo, trata de revisar <-- ¿debería eliminarlo?
    global. vida = 0 //la vida del jugador se iguala a cero
    if(file_exists("partida.sav"))
        file_delete("partida.sav") //Eliminamos el archivo
    game_restart() //Creo que es mejor que no uses argumentos en esta función.
}
[/gml]
189
Preguntas y respuestas / Re:¿Como se interpreta esto?
Octubre 31, 2017, 12:33:59 AM
Es extraño, el manual no parece decir que game_restart() tenga algún argumento. Si quieres eliminar todos los datos, sería mejor que usaras la función file_delete().
190
Hay muchas maneras, pero en general se resume en que necesitas guardar las teclas escogidas con archivos externos, y éstas deben ser escogidas por el jugador a través de alguna interfaz.

Por ejemplo, en el evento create de algún controlador que esté presente sólo en las habitaciones de juego, podrías hacer esto:
[gml]
///Create de algún controlador
globalvar teclas;
teclas = ds_map_create();

ini_open("teclas.ini");

teclas[? "player_iz"] = ini_read_real("teclas", "player_iz", ord("A")); //Tecla de movimiento izquierda
teclas[? "player_dr"] = ini_read_real("teclas", "player_dr", ord("D")); //Tecla de movimiento derecha
teclas[? "player_up"] = ini_read_real("teclas", "player_dr", ord("W")); //Tecla de movimiento arriba

ini_close();
[/gml]
Y en el código de movimiento, reemplazarías los códigos de teclas que usas por los cargados del ini.
[gml]
///Evento step del player
keyLeft        = -keyboard_check(teclas[? "player_iz"]);
keyRight       = keyboard_check(teclas[? "player_dr"]);
keyDown        = keyboard_check(teclas[? "player_up"]);
[/gml]

Por lo demás, sería cuestión tuya crear la interfaz y escribir en los valores del ini las teclas que el usuario seleccione.
191
Preguntas y respuestas / Re:Dividir variables
Octubre 29, 2017, 10:41:56 AM
Revisa si ahora sí:
[gml]
///Evento Create
var datos = ds_map_create();

/*
Se abrirá una ventana de diálogo para ingresar el texto.
Se debe escribir por ejemplo:
potencia=3.15;vatios=9.11
*/
var entrada = get_string("Ingrese las variables:", "");
var partes  = split(entrada, ";");
for(var i = 0; i < array_length_1d(partes); i++)
{
    var assign = split(partes, "=");
    if(array_length_1d(assign) == 2)
    {
        assign[0] = string_replace_all(assign[0], " ", "");
        assign[1] = string_replace_all(assign[1], " ", "");

        datos[? assign[0]] = real(assign[1]);
    }
}

var resultado = ley_ohms_watts(datos);

potencia     = resultado[? "potencia"];
resistencia = resultado[? "resistencia"];
intensidad  = resultado[? "intensidad"];
vatios         = resultado[? "vatios"];


ds_map_destroy(resultado); //Liberar de la memoria
ds_map_destroy(datos); //Liberar de la memoria
[/gml]
192
Preguntas y respuestas / Re:Dividir variables
Octubre 29, 2017, 10:00:16 AM
Puedes usar este script: split().
Y ahora, usa la función get_string() para ingresar la información mediante un cuadro de diálogo.
[gml]
///Evento Create
var datos = ds_map_create();

/*
Se abrirá una ventana de diálogo para ingresar el texto.
Se debe escribir por ejemplo:
potencia=3.15;vatios=9.11
*/
var entrada = get_string("Ingrese las variables:", "");
var partes  = split(entrada, ";");
for(var i = 0; i < array_length_1d(partes); i++)
{
   var assign = split(entrada, "=");
   if(array_length_1d(assign) == 2)
   {
      assign[0] = string_replace_all(assign[0], " ", "");
      assign[1] = string_replace_all(assign[1], " ", "");

      datos[? assign[0]] = real(assign[1]);
   }
}

var resultado = ley_ohms_watts(datos);

potencia    = resultado[? "potencia"];
resistencia = resultado[? "resistencia"];
intensidad  = resultado[? "intensidad"];
vatios       = resultado[? "vatios"];


ds_map_destroy(resultado); //Liberar de la memoria
ds_map_destroy(datos); //Liberar de la memoria
[/gml]

Si necesitas re-calcular los valores sin volver a ejecutar el juego, puedes agregar en algún evento de teclado la función room_restart(), que reiniciará la habitación actual del juego.

(Este código no lo he probado, avísame si tiene algún error.).
194
Preguntas y respuestas / Re:Dividir variables
Octubre 28, 2017, 10:44:54 PM
Eso es porque las variables están declaradas localmente. Elimina la palabra var de la izquierda de las variables (no las del script). Quedaría así:
[gml]
///Evento Create
var datos = ds_map_create();

datos[? "potencia"] = 2;
datos[? "resistencia"] = 1.45;

var resultado = ley_ohms_watts(datos);

potencia = resultado[? "potencia"];
resistencia = resultado[? "resistencia"];
intensidad = resultado[? "intensidad"];
vatios = resultado[? "vatios"];


ds_map_destroy(resultado); //Liberar de la memoria
ds_map_destroy(datos); //Liberar de la memoria
[/gml]
Y ahora, para dibujarlas fácilmente, puedes usar este script: sprintf().

Lo usarías algo así:
[gml]
///Evento Draw
draw_text(32, 32, sprintf(
    "Resistencia: $1#Potencia: $2#Intensidad: $3#Vatios: $4",
    string_format(resistencia, 1, 6), //Para dibujar 6 cifras decimales, y no sólo 2.
    string_format(potencia, 1, 6),
    string_format(intensidad, 1, 6),
    string_format(vatios, 1, 6)
));
[/gml]
195
Preguntas y respuestas / Re:Dividir variables
Octubre 28, 2017, 10:27:43 AM
Según lo que entendí, quieres ingresar algunos de los datos, y que el programa calcule el resto, ¿verdad?

Si es así, el código que tienes en el evento Create es algo ilógico, pues requieres conocer los cuatro valores para hacer los cálculos.

Para solucionarlo, se me ocurre que podrías usar un script al que le puedas ingresar sólo los valores que tienes (deben ser como mínimo 2), y dependiendo de cuáles sean, calcular el resto despejándolos a partir de los conocidos.

Hice este script, que utiliza mapas para pasar la información de lado a lado:
[gml]
///ley_ohms_watts(mapa);

var mapa = argument0;
if(!ds_exists(mapa, ds_type_map))
    return false;
   
var vatios = 0;
var resist = 0;
var potenc = 0;
var intens = 0;

if(ds_map_exists(mapa, "vatios") and ds_map_exists(mapa, "resistencia"))
//Si se conocen los vatios y la resistencia, calcular los demás a partir de ahí.
{
    vatios = mapa[? "vatios"];
    resist = mapa[? "resistencia"];
   
    //Aquí hacemos los cálculos
    if(resist <> 0) //Si la resistencia no es 0
        intens = vatios / resist; //Calcular la intensidad
    else
        intens = 0; // De lo contrario, la intencidad es 0
       
    potenc = vatios * intens;
}

else if(ds_map_exists(mapa, "vatios") and ds_map_exists(mapa, "potencia"))
//Si se conocen los vatios y la potencia, calcular los demás a partir de ahí
{
    vatios = mapa[? "vatios"];
    potenc = mapa[? "potencia"];
   
    if(vatios <> 0)
    {
        intens = potenc / vatios;
        resist = vatios / intens;
    }
    else
    {
        intens = 0;
        resist = 0;
    }
}
else if(ds_map_exists(mapa, "vatios") and ds_map_exists(mapa, "intensidad"))
//Lo mismo pero diferente
{
    vatios = mapa[? "vatios"];
    intens = mapa[? "intensidad"];
   
    if(vatios <> 0)
        resist = intens / vatios;
    else
        resist = 0;
       
    potenc = vatios * intens;
}
else if(ds_map_exists(mapa, "resistencia") and ds_map_exists(mapa, "potencia"))
{
    resist = mapa[? "resistencia"];
    potenc = mapa[? "potencia"];
   
    if(resist <> 0)
        intens = sqrt(potenc / resist);
    else
        intens = 0;
       
    vatios = intens * resist;
}
else if(ds_map_exists(mapa, "resistencia") and ds_map_exists(mapa, "intensidad"))
{
    resist = mapa[? "resistencia"];
    intens = mapa[? "intensidad"];
    vatios = resist * intens;
    potenc = vatios * intens;
}
else if(ds_map_exists(mapa, "potencia") and ds_map_exists(mapa, "intensidad"))
{
    intens = mapa[? "intensidad"];
    potenc = mapa[? "potencia"];
    if(intens <> 0)
    {
        vatios = potenc/intens;
        resist = vatios/intens;
    }
    else
    {
        resist = 0;
        vatios = 0;
    }
}



var resultado = ds_map_create();
resultado[? "vatios"]      = vatios;
resultado[? "resistencia"] = resist;
resultado[? "potencia"]    = potenc;
resultado[? "intensidad"]  = intens;

return resultado;
[/gml]
Se puede usar, por ejemplo, así:
[gml]
var datos = ds_map_create();

datos[? "potencia"] = 2;
datos[? "resistencia"] = 1.45;

var resultado = ley_ohms_watts(datos);

var potencia = resultado[? "potencia"];
var resistencia = resultado[? "resistencia"];
var intensidad = resultado[? "intensidad"];
var vatios = resultado[? "vatios"];


ds_map_destroy(resultado); //Liberar de la memoria
[/gml]