GML, Как мне сохранить комнату в.ini?
Я изучал основы сохранения / загрузки для приключенческой игры и столкнулся с этой ошибкой:
Я начал с простого сохранения позиций X и Y с игроком вместе с комнатой, в которой он сейчас находится.
ini_open("save.ini");
ini_write_string("Player", "Room", room);
ini_write_real("Player", "X", oPlayer.x);
ini_write_real("Player", "Y", oPlayer.y);
ini_close();
Тем не менее, он выдает ошибку, как только я пытаюсь сохранить.
FATAL ERROR in
action number 1
of Step Event0
for object pauseMenu:
ini_write_string argument 3 incorrect type (0) expecting a String (YYGS)
at gml_Script_ini_save (line 5) - ini_write_string("Player", "Room", room);
Есть ли что-то, что я делаю не так, чтобы спасти комнату, или я должен пойти по-другому?
1 ответ
Решение
room
это число, а не строка
ini_open("save.ini");
ini_write_string("Player", "Room", room_get_name(room));
ini_write_real("Player", "X", oPlayer.x);
ini_write_real("Player", "Y", oPlayer.y);
ini_close();
Для обратного преобразования вы должны использовать asset_get_index
, Что-то вроде этого:
ini_open("save.ini");
var r_name = ini_read_string("Player", "Room", "");
global.startx = ini_read_real("Player", "X", 0);
global.starty = ini_read_real("Player", "Y", 0);
ini_close();
if r_name == "" or (global.startx == 0 and global.starty == 0)
{
room_goto(r_level1); // first room
}
else
{
var r = asset_get_index(r_name);
if r != -1 and asset_get_type(r_name) == asset_room
room_goto(r);
}
(Не знаю, нужны ли вам эти дополнительные проверки или нет)