Godot Version
3.5
Question
hi there, nice to meet you all… firstly, im not a programmer…
i recently found godot, and very enjoying to learn about how to use it…but as an “non_coding” person, i often have a problems that i cant solve due to skill_issues…
like now ive made an project, (in my opinion) that got work perfectly like what i want to…i have 2 level scene, 1, title scene and 1 for game over scene…
i using basic code “get_tree().change_scene(”“)” to change between scene, but right after ive adding this script on Global.gd(autoload) ;
var stage_level = 0
var pos_player = false
onready var loading_scene = preload(“res://lvl/loading_screen.tscn”)
func _ready():
_reset_stage_level()
func _load_scene(current_scene, next_scene):
#menambahkan loading scene ke root
var loading_scene_instance = loading_scene.instance()
get_tree().get_root().call_deferred(“add_child”, loading_scene_instance)
#menentukan target scenenya
var loader = ResourceLoader.load_interactive(next_scene)
#cek kalau ada bug/error
if loader == null:
print("error saat meloading level selanjutnya")
return
current_scene.queue_free()
#delay sedikit waktu untuk menampilkan loading scene
yield(get_tree().create_timer(1.1), "timeout")
while true:
var error = loader.poll()
if error == OK:
var progress_bar = loading_scene_instance.get_node("Control/ProgressBar")
progress_bar.value = float(loader.get_stage())/loader.get_stage_count() * 100
elif error == ERR_FILE_EOF:
var scene = loader.get_resource().instance()
get_tree().get_root().call_deferred("add_child", scene)
loading_scene_instance.queue_free()
return
else:
print("LONGEEEKK RUSAK JUO BAGHU")
return
yield(get_tree().create_timer(0.5), "timeout")
func _load_level_stage():
match stage_level :
1:
_load_scene(get_tree().current_scene,“res://lvl/lvl1.tscn” )
2:
_load_scene(get_tree().current_scene,“res://lvl/lvl2.tscn” )
ive got an issues with many method that i has implemented before,
like i only can load my save data once,
im using this script for my save_manager.gd;
var bisa_save = false
var save_game_path = “user://savegamecoy.dat”
func save_game():
var file = File.new()
var absolute_path = ProjectSettings.globalize_path(save_game_path)
if file.open(absolute_path, File.WRITE) == OK:
# Simpan data pemain
file.store_var(PlyrStt.player_health)
file.store_var(PlyrStt.player_max_health)
file.store_var(PlyrStt.player_exp)
file.store_var(PlyrStt.player_max_exp)
file.store_var(PlyrStt.player_level)
file.store_var(PlyrStt.player_lives)
file.store_var(PlyrStt.player_posisi)
file.store_var(PlyrStt.player_damage)
file.store_var(Global.stage_level)
file.close()
print("DATA TERSIMPAN!")
else:
print("GAGAL MENYIMPAN DATA")
func load_game():
var file = File.new()
var absolute_path = ProjectSettings.globalize_path(save_game_path)
if file.file_exists(absolute_path):
if file.open(absolute_path, File.READ) == OK:
# Muat data pemain
PlyrStt.player_health = file.get_var()
PlyrStt.player_max_health = file.get_var()
PlyrStt.player_exp = file.get_var()
PlyrStt.player_max_exp = file.get_var()
PlyrStt.player_level = file.get_var()
PlyrStt.player_lives = file.get_var()
PlyrStt.player_posisi = file.get_var()
PlyrStt.player_damage = file.get_var()
Global.stage_level = file.get_var()
file.close()
Global._load_level_stage()
print(“DATA SUKSES DIBACA”)
else:
print(“GAGAL MEMBACA DATA”)
else:
print(“DATA TIDAK DITEMUKAN!”)
func delete_save():
var dir = Directory.new()
var absolute_path = ProjectSettings.globalize_path(save_game_path)
if dir.file_exists(absolute_path):
# Hapus file
var result = dir.remove(absolute_path)
if result == OK:
print(“DATA BERHASIL DIHAPUS”)
else:
print(“GAGAL MENGHAPUS DATA”)
else:
print(“DATA TIDAK DITEMUKAN”)
and this on load button:
func _on_load_pressed():
var file = File.new()
if file.file_exists(SaveManager.save_game_path):
Global.pos_player = true
if get_tree().paused == true:
get_tree().paused = false
SaveManager.load_game()
_close_menu()
help guys…i cant figured it out…why the second time I tried pressing the button,
it got error on Line “current_scene.queue_free()” on global.gd