J
JayTheCatz
Guest
Hello all, I have a problem within my basic load and save game scripts, well to be honest I don't know which one has the problem.
The problem is; When I save my game, die, and then load my last save, my "obj_player" duplicates itself, creating two players within the room.
Help would be massively appreciated!
my load game code
///load game
var file = (file_text_open_read(working_directory+"mysavedgame.txt"));
var save_string = (file_text_read_string(file));
file_text_close(file);
save_string = base64_decode(save_string);
var save_data = json_decode(save_string);
var save_room = save_data[? "room"];
if (room != save_room) {
room_goto(save_room);
}
with (obj_player_stats) {
player_xstart = save_data[? "x"];
player_ystart = save_data[? "y"];
if (instance_exists(obj_player)) {
obj_player.x = player_xstart;
obj_player.y = player_ystart;
obj_player.phy_position_x = player_xstart;
obj_player.phy_position_y = player_ystart;
} else {
instance_create(player_xstart , player_ystart, obj_player);
}
hp = save_data[? "hp"];
maxhp = save_data[? "maxhp"];
stamina = save_data[? "stamina"];
maxstamina = save_data[? "maxstamina"];
expr = save_data[? "expr"];
maxexpr = save_data[? "maxexpr"];
level = save_data[? "level"];
attack = save_data[? "attack"];
}
ds_map_destroy(save_data);
my save game code
///save game
// make sure player exists
if (!instance_exists(obj_player_stats)) exit;
//create saved data structure
var save_data = ds_map_create();
with (obj_player_stats) {
save_data[? "room"] = previous_room;
save_data[? "x"] = player_xstart;
save_data[? "y"] = player_ystart;
save_data[? "hp"] = hp;
save_data[? "maxhp"] = maxhp;
save_data[? "stamina"] = stamina;
save_data[? "maxstamina"] = maxstamina;
save_data[? "expr"] = expr;
save_data[? "maxexpr"] = maxexpr;
save_data[? "level"] = level;
save_data[? "attack"] = attack;
}
var save_string = json_encode(save_data);
ds_map_destroy(save_data);
save_string = base64_encode(save_string);
var file = file_text_open_write(working_directory + "mysavedgame.txt");
file_text_write_string (file , save_string);
file_text_close(file);
show_message("Game Saved")
--UPDATE--
So, I have found out, that if I save in "Room 1" and die in "Room 2" then load the last save, this creates the other player.
Still no fix.
The problem is; When I save my game, die, and then load my last save, my "obj_player" duplicates itself, creating two players within the room.
Help would be massively appreciated!
my load game code
///load game
var file = (file_text_open_read(working_directory+"mysavedgame.txt"));
var save_string = (file_text_read_string(file));
file_text_close(file);
save_string = base64_decode(save_string);
var save_data = json_decode(save_string);
var save_room = save_data[? "room"];
if (room != save_room) {
room_goto(save_room);
}
with (obj_player_stats) {
player_xstart = save_data[? "x"];
player_ystart = save_data[? "y"];
if (instance_exists(obj_player)) {
obj_player.x = player_xstart;
obj_player.y = player_ystart;
obj_player.phy_position_x = player_xstart;
obj_player.phy_position_y = player_ystart;
} else {
instance_create(player_xstart , player_ystart, obj_player);
}
hp = save_data[? "hp"];
maxhp = save_data[? "maxhp"];
stamina = save_data[? "stamina"];
maxstamina = save_data[? "maxstamina"];
expr = save_data[? "expr"];
maxexpr = save_data[? "maxexpr"];
level = save_data[? "level"];
attack = save_data[? "attack"];
}
ds_map_destroy(save_data);
my save game code
///save game
// make sure player exists
if (!instance_exists(obj_player_stats)) exit;
//create saved data structure
var save_data = ds_map_create();
with (obj_player_stats) {
save_data[? "room"] = previous_room;
save_data[? "x"] = player_xstart;
save_data[? "y"] = player_ystart;
save_data[? "hp"] = hp;
save_data[? "maxhp"] = maxhp;
save_data[? "stamina"] = stamina;
save_data[? "maxstamina"] = maxstamina;
save_data[? "expr"] = expr;
save_data[? "maxexpr"] = maxexpr;
save_data[? "level"] = level;
save_data[? "attack"] = attack;
}
var save_string = json_encode(save_data);
ds_map_destroy(save_data);
save_string = base64_encode(save_string);
var file = file_text_open_write(working_directory + "mysavedgame.txt");
file_text_write_string (file , save_string);
file_text_close(file);
show_message("Game Saved")
--UPDATE--
So, I have found out, that if I save in "Room 1" and die in "Room 2" then load the last save, this creates the other player.
Still no fix.
Last edited by a moderator: