Действительно, очень хороший пример. Автору респект и плюсик. На GMS2, с некоторым геморроем ставится.
execute_string легко заменить на отдельные скрипты, а к ним получить доступ через
act_on = asset_get_index("s_item_handler");
в create самих предметов.
Execute_string, соответственно, заменить на script_execute, а всю логику из act_on в самих предметах перенести в соответствующие скрипты. Ну, или в один большой скрипт, но тогда логику предметов придётся основательно перелопатить.
Ну и да, не знаю, в отличиях от старого GM ли дело, или ещё в чём, но в obj_inv и obj_weapon_inv всё из draw лучше перенести в Draw GUI
А события нажатий на левую\правую кнопки мышки в step, через
if position_meeting(device_mouse_x_to_gui(0),device_mouse_y_to_gui(0),self){
if (mouse_check_button_pressed(mb_left)){
show_debug_message("CLICK LEFT!");
}
if (mouse_check_button_pressed(mb_left)){
show_debug_message("CLICK RIGHT!");
}
} else {
}
Ну и, соответственно, заменить mouse_x и mouse_y на device_mouse_x_to_gui(0),device_mouse_y_to_gui(0), это там в куче мест встречается.
Может, поможет кому. За идеальность исполнения не ручаюсь, я в GML только начал разбираться, но у меня подобное решение вполне работает.
Ну, и пара опечаток там в коде есть. Вроде, и без их исправления работает, но есть там nv_txt вместо inv_text и item_tyte вместо item_type.