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 - Wadk

526
Hombre, ten?s que ser m?s espec?fico. Y adjuntar tu juego no me va a servir porque uso Linux (aunque otro te podr?a ayudar si lo hac?s).

A ver, asumo que cuando dec?s "Saque lo de Left y Right", no es que s?lo hayas hecho eso, sino que seguiste todas mis instrucciones.
Despu?s, deber?as especificar a qu? te refer?s con "resbalar". Asum? que quer?as que el personaje fuera agarrando velocidad de a poco al empezar a caminar y tambi?n que la fuera perdiendo de a poco al dejar de hacerlo, pero podr?as querer otra cosa...
Y por ?ltimo "No paso nada" es muy ambiguo. ?A qu? te refer?s exactamente? ?El juego sigue funcionando de la misma forma que antes de aplicar los cambios? Asumiendo que sea as?, y que mis otras dos asunciones sean correctas, el problema debe ser la condici?n (collision_point(x,y+1,objHielo,true,true)). Pon? en step algo as?:
[gml]condicion=collision_point(x,y+1,objHielo,true,true);[/gml]
Y comprob? en el modo debug si la variable condici?n siempre vale 0 o llega a valer 1 cuando el personaje se para en el hielo.
527
El tema es viejo y ya estaba solucionado. Adem?s incumple las reglas <_<.
Cierro.
528
Para que podamos solucionar tu problema, ten?s que dar suficiente informaci?n.
Respond? lo siguiente:
?Qu? hiciste?
?Qu? esperabas?
?Qu? pas??
529
A ver, hac? esto:
Agreg? en Create:
[gml]velocidad=0;
velocidad_max=3;[/gml]

Cambi? Step por:
[gml]if(keyboard_check(vk_left)){
    if(collision_point(x,y+1,objHielo,true,true)){
        velocidad=max(velocidad-1,velocidad_max*-1);
    }else{
        velocidad=velocidad_max*-1;
    }
}else if(keyboard_check(vk_right)){
    if(collision_point(x,y+1,objHielo,true,true)){
        velocidad=min(velocidad+1,velocidad_max);
    }else{
        velocidad=velocidad_max;
    }
}else{
    if(collision_point(x,y+1,objHielo,true,true)){
        if(velocidad>0){
            velocidad=max(velocidad-1,0);
        }else if(velocidad<0){
            velocidad=min(velocidad+1,0);
        }
    }else{
        velocidad=0;
    }
}

gravity=place_free(x+0,y+1)*1.1;

if(place_free(x+velocidad,y)){
    x+=velocidad;
}[/gml]

Y borr? lo que tengas en key left y right.
Ah, y ten?s que reemplazar donde dice objHielo por el nombre del piso congelado.

No lo prob?, no tengo el GM.
530
Estaba seguro de que no era as? :/ pero parece que me equivoqu? :P

PD: No hagas doble post.
531
Veamos.
Lo primero es crear alg?n tipo de comprobaci?n que nos diga si el personaje est? en una plataforma de hielo o no. Un if, vamos.
Podr?a ser algo as?:
[gml]if(collision_point(x,y+1,objHielo,true,true))[/gml]
Luego, debes localizar en tu c?digo la parte en la que hac?s que el personaje deje de moverse cuando la tecla de movimiento es soltada, y antes de bajar la velocidad a 0, comprobar (con lo de arriba) si el personaje est? en el hielo, y si lo est?, baj?s s?lo un poco la velocidad.
Continuando, en la parte que hac?s que el personaje comience a moverse, antes de cambiar la velocidad comprobar si el personaje est? en el hielo, y si lo est?, aumentarla s?lo un poco.
Por ?ltimo, agregar otra vez la condici?n, esta vez en step en alg?n lado aislado, y si es falsa, cambiar inmediatamente la velocidad a 0 o a la velocidad normal de movimiento (si se est? presionando alguna tecla de movimiento).

Deber?as proporcionar m?s informaci?n si quer?s una respuesta m?s concreta. Por ejemplo, decirnos como funciona tu c?digo de movimiento, o mostr?rnoslo.
532
Preguntas y respuestas / Re: Cargar en otra parte
Septiembre 24, 2010, 02:33:22 AM
Pero si hac?s eso, al cargar, el c?digo que est? despu?s del game_load se vuelve a ejecutar. Ser?a como si no hubiera pasado nada.
533
Preguntas y respuestas / Re: Cargar en otra parte
Septiembre 23, 2010, 10:38:30 PM
Cita de: krajtin en Septiembre 23, 2010, 09:34:56 PM
A ver no s? si me he explicado bien:

Todo el mundo conoce el zelda en 2D ?verdad?, pues en algunos  zeldas de yoyogames cuando guardas la partida y la cargas, Link aparece por ejemplo en la ultima casa que entr?. Pues m?s o menos quiero hacer algo parecido.

Si es muy complejo lo dejamos.

Gracias
S?, hab?a entendido bien, y la forma de hacerlo es como te dije.
Alternativas son teletransportar al jugador a donde quieras antes de guardar, pero eso es molesto. Tambi?n podr?as hacer eso y al mismo tiempo obligar al jugador a cerrar el juego despu?s de guardar.
Otra forma que se me ocurre, es poner justo antes del game_load algo as? como esto:
[gml]file_text_close(file_text_open_write(temp_directory+"\load"));[/gml]
y justo despu?s del game_save:
[gml]if(file_exists(temp_directory+"\load")){
    file_delete(temp_directory+"\load");
    // Y ac? el c?digo para mover al jugador a d?nde quieras que aparezca luego de cargar.
}[/gml]
Si no funciona prob? cambiando los temp_directory por working_directory.
534
No, en realidad no. Si image_speed es .5, la variable image_index aumenta en .5 cada step, por ejemplo.
El c?digo de Texic est? perfecto.
535
Preguntas y respuestas / Re: Cargar en otra parte
Septiembre 23, 2010, 09:00:24 PM
Es jodido, si quer?s hacer eso ten?s que crear tu propio sistema de guardado que reemplace el que viene por defecto en el GM.
536
Preguntas y respuestas / Re: Estoy bien si hago esto?
Septiembre 18, 2010, 03:19:51 AM
Mir? ardilla, las variables no pertenecen a ciertos rooms, s?lo a objetos, o si son globales como en este caso, se puede decir que no pertenecen a nada y perduran hasta que el juego se cierre.
Eso quiere decir que una vez que asignes la variable global.coin, s? vas a poder modificarla desde el objeto y desde el room que quieras, y esta no se va a borrar ni a resetear ni nada por cambiar de room.
Pero si en el objeto contador ten?s esto en create:
global.coin=0;
Entonces lo que quer?s hacer no va a funcionar bien, porque ese c?digo se va a ejecutar siempre que vuelvas al room donde est? el objeto, y por lo tanto global.coin se va a poner en 0.
Para evitar ese problema, pod?s hacer lo siguiente:
if !global_variable_exists("coin"){
    global.coin=0;
}

Es decir, comprobar si la variable existe y s?lo si no existe, ponerla en 0.
537
Buff... vas a tener que buscar como llamar a las funciones de la DLL... y es posible que no encuentres nada. ?C?mo se llama la DLL en cuesti?n?
538
S?, hab?a entendido bien y s?, se considera correcto como dije y en la p?gina que puse se puede comprobar haciendo click en conjugar (http://buscon.rae.es/draeI/SrvltGUIVerbos?origen=RAE&IDVERBO=6909).

Ac? est? el c?digo completo que ir?a en Step:
Código (Step) [Seleccionar]
if(casa!=noone){ // Si es que tiene una casa...
   move_towards_point(casa.x,casa.y,3); // Se mueve en direcci?n a ella a una velocidad de 3.
}else{ // Si NO tiene casa...
   with(objCasa){ // Desactivamos todas las casas ocupadas
       if(ocupada){
           instance_deactivate_object(id);
       }
   }
   if(!instance_exists(objCasa)){ // Si no hay casas desocupadas...
       // Hacemos algo.
   }else{ // Si las hay...
       var c;
       c=instance_nearest(x,y,objCasa);
       move_towards_object(c.x,c.y,3); // Nos movemos a la que quede m?s cercana a una velocidad de 3
   }
   instance_activate_all(); // Y posteriormente volvemos a activar todas las casas
}

Ten?s que reemplazar los objCasa por el nombre del objeto casa.
539
De nada :).

Decir "hac?" es 100% correcto en Argentina y en cualquier lado: http://buscon.rae.es/draeI/SrvltConsulta?TIPO_BUS=3&LEMA=hacer
En Uruguay tambi?n se dice as? (yo soy uruguayo).
540
Hac? lo que dijo Knd.
Código (Create de Casa) [Seleccionar]
ocupada=false;
Código (Create de Persona) [Seleccionar]
casa=noone;
Código (Colisi?n Persona con Casa) [Seleccionar]
if(casa==noone && !other.ocupada){
    casa=other.id;
    other.ocupada=true;
}

En el objeto persona vas a tener la variable casa, la cual si es noone significa que la persona no tiene casa, de lo contrario pod?s acceder a las variables de su casa (tales como x e y) as?: casa.variable.
Por ejemplo, para hacer que el ciudadano vaya a su casa:
if(casa!=noone){ // Si es que tiene una casa...
    move_towards_point(casa.x,casa.y,3); // Se mueve en direcci?n a ella a una velocidad de 3.
}


Es lo mismo que dijo sbs pero mejor y m?s f?cil.