Pues en mi caso al apretar el botón P guardo y al apretar Z cargo, pero me provoca un bucle infinito.



obj_Control //Persistente
prees P-key


/// Reiniciar
//game_restart();
audio_stop_all()
audio_play_sound(snd_Why_Did_You_Do_It,0,1);
game_load("guardar.sav");


obj_Guardar
CREATE

/// Inicializacion 3 líneas máximo
event_inherited(); // heredar del padre
image_speed = 0.1;

paginas[0] = "¿Guardar partida?#Pulsa Z para guardar -->";
paginas[1] = "Juego guardado# pulsa P para cargar -->.";

mostrar = false; // mostrar cartel por defecto
pagina = -1;     // páigna actual, -1 = inactivo
guardar="guardar.sav"
eliminar=false


STEP

/// Detectar si jugador abre el cartel
if (keyboard_check_pressed(ord('Z')) and distance_to_object(objJugador)<3) {
    mostrar = true;
}
// Si se aleja cerramos el cartel y reiniciamos pagina
if (distance_to_object(objJugador)>3) { mostrar = false; pagina = -1; }

/// Detectar si jugador pasa página y guardar
if (keyboard_check_pressed(ord('Z')) and mostrar)
    // Pasar página y guardar (solo al pasar la primera)
    if (pagina+1 < array_length_1d(paginas)) {
        pagina++;
        if (pagina == 1){
       
        game_save("guardar.sav")
        instance_deactivate_object(obj_Bloque_Guardado);
        }
    } else {
        // Si nos pasamos del máximo reiniciamos el cartel
        mostrar = false;
        pagina = -1;
    }
   
    if keyboard_check_pressed(ord("P")){
game_load("guardar.sav")
}


DRAW GUI

//para poder ver el objeto
draw_self()
/// Comprobar si el jugador está cerca
if(mostrar){
    draw_sprite(spr_HUD_Texto,11,0,31);
    draw_set_font(f_Texto);
    draw_set_halign(fa_left);
    draw_set_color(c_black);
    draw_text(124,64,paginas[pagina]);
    draw_set_color(c_white);
    draw_text(123,63,paginas[pagina]);
}


Creo que debería eliminar todo este código del obj_Guardar, y colocar que si colisiona una vez con el, se aplique auto-guardado, digamos que se convertiría en un chekpoint que pasa de estar inactivo a activo, de esta forma el jugador volverá a su ultimo chekpoint cuando apreté el botón "P" del obj_Controlador, con esto estoy creando un dialogo inútil en el obj_Guardar, ademas que se hace molesto hablar para solo guardar el ultimo punto de control, pero la programación me salio con este fallo.