wer einen Händler haben möchte, braucht eine Datenbank, welche Items und Gold speichert
ich habe die Datenbank vorher in meinem Notizbuch überdacht, und dann eine JSON Datenbank erstellt, welche in eine items Datei gespeichert wird.
es ist wichtig vorher eine Idee zu haben, was die Items für Werte haben solle, da das beim Anlegen geschrieben wird, und Änderungen könnten Fehler erzeugen,
aus dem Gedanken heraus, ist es auch gute Praxis, immer ein kleinen Notizbuch in Griffweite zu haben, um Ideen Aufzuschreiben, welche sonst gerne mal vergessen werden.
Items sind so Gedacht, das man sie “Leveln” kann, und bei höherem Level werden die Items Teurer.
Die derzeitige Version des Shops ist noch Work in Process, und wird noch bearbeitet, ich arbeite derzeit noch an Polish.
Es ist ein Mehrdimensionales Dictionary welches welches für die Speicherung der Daten verantwortlich ist.
ich war etwas überrascht, wie viele Bearbeitungs-Funktionen ich machen musste, damit alles funktioniert.
Das Inventar wird alle 3 Sekunden via Timer gespeichert.
var item_Langschwert: Dictionary = {
"Name": "Langschwert",
"Preis": 100,
"Flavour": "Ein schlankes Langschwert aus gehärtetem Eisen, dessen perfekt ausbalancierter Griff mit rauem Leder umwickelt ist.",
"Unlock": true
}
Beispiel Dictionary für ein Einzelnes Item
func load_items():
var file: FileAccess = FileAccess.open(itemsfile, FileAccess.READ)
if FileAccess.get_open_error() != OK:
printerr("Error while opening file: ", error_string(FileAccess.get_open_error()))
return
items_data = file.get_var()
file.close() # Not necessary
#SEKTION RELOAD
#beschreibt die Variablen der Items wieder
#schwerter
item_Langschwert = items_data.get("item_Langschwert")
Das loading Funktion, hier wird das Oben beschriebene Dictionary wieder beschrieben.
func _ready():
if not FileAccess.file_exists(itemsfile):
items_data = {
#schwerter
"item_Langschwert": item_Langschwert,
Die Abfrage speichert, we noch keine Datei erstellt wurde. in eine vorher definierte Datei – hier items.ini
func save_items():
var file: FileAccess = FileAccess.open(itemsfile, FileAccess.WRITE)
if FileAccess.get_open_error() != OK:
printerr("Error while opening file: ", error_string(FileAccess.get_open_error()))
return
file.store_var(items_data)
file.close()
die Speichern Funktion
func _on_save_timer_timeout() -> void:
save_inventory()
save_items()
simples Autosave, der Timer ist auf 3 Sekuden