Daten speichern

German
Post Reply
User avatar
debiankaios
Member
Posts: 910
Joined: Thu Dec 03, 2020 12:48
IRC: debiankaios
In-game: debiankaios Nowe
Location: germany
Contact:

Daten speichern

by debiankaios » Post

Ich habe mir schon sämtliche artikel und die api durchgelesen und immer noch verstehe ich nicht wie das abspeichern von daten geht, kann es mir bitte jemand erklärt.

User avatar
Linuxdirk
Member
Posts: 3217
Joined: Wed Sep 17, 2014 11:21
In-game: Linuxdirk
Location: Germany
Contact:

Re: Daten speichern

by Linuxdirk » Post


User avatar
debiankaios
Member
Posts: 910
Joined: Thu Dec 03, 2020 12:48
IRC: debiankaios
In-game: debiankaios Nowe
Location: germany
Contact:

Re: Daten speichern

by debiankaios » Post

file = file:open("keine_ahnung.txt", r)…

User avatar
Linuxdirk
Member
Posts: 3217
Joined: Wed Sep 17, 2014 11:21
In-game: Linuxdirk
Location: Germany
Contact:

Re: Daten speichern

by Linuxdirk » Post

Ja, damit öffnest du die Datei zum lesen. Und mit minetest.safe_file_write() schreibst du in eine Datei.

Wenn du statt Inhaltsfragmenten und Codezeilen ein bisschen mehr Kontext liefern würdest, könnte dir vermutlich besser geholfen werden.

User avatar
debiankaios
Member
Posts: 910
Joined: Thu Dec 03, 2020 12:48
IRC: debiankaios
In-game: debiankaios Nowe
Location: germany
Contact:

Re: Daten speichern

by debiankaios » Post

Ich verstehe allgemein dazu nichts. Ich will in meiner alien_material mod alienherzen hinzufügen und muss dafür auf die daten speicherung zugreifen. Aber das funktioniert nicht. Ich verstehe das mit der daten speicherung einfach nicht. Hier ist der komplette source_code bei der allien mod für die alienherzen:

Code: Select all

-- Alle Zeilenumfassenden Kommentare ist code der abgeschaltet ist bis es funktioniert

local alienhp = 0
local storage = minetest.get_mod_storage()

-- If there isn't a file, make one.
--[[local file, err = io.open(minetest.get_worldpath() .. "/alienhp", "r")
if file == nil then
     local file, err = io.open(minetest.get_worldpath() .. "/alienhp", "w")
     file:write(minetest.serialize(alienhp))
     file:close()
end

function save_file(path, content)
	local file, err = io.open({minetest.get_worldpath(), "/", tostring(path)}, "w")
	if err then
		return err
	end
	file:write(content)
	file:close()
end

function read_file(path, player)
	local file, err = io.open(minetest.get_worldpath()..path, "r")
	if err then
		return err
	end
	player:hud_change(a, "text", file:read())
	file:close()
end

]]

minetest.register_on_joinplayer(function(player)
	player:hud_add({
    	hud_elem_type = "image",
    	position  = {x = 0.46, y = 0.85},
    	offset    = {x = -215, y = 23},
  		text      = "alien_heart.png",
  		scale     = { x = 2, y = 2},
    	alignment = { x = 1, y = 0 },
	})
	a = player:hud_add({
	    hud_elem_type = "text",
	    position  = {x = 0.49, y = 0.85},
	    offset    = {x = -215, y = 23},
	    text      = alienhp,
	    alignment = -1,
	    scale     = { x = 50, y = 10},
	    number    = 0xFFFFFF,
	})
end)

--[[
minetest.register_globalstep(function(dtime)
	for _, player in pairs(minetest.get_connected_players()) do

	end
end)
--]]

minetest.register_node("alien_material:op_alien_apple", {
		inventory_image = "alien_apple.png",
		drawtype = "plantlike",
		tiles = {"alien_apple.png"},
		groups = {choppy=0,},
		selection_box = {
        type = "fixed",
        fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
    },
		description = "Op-Alien Apple",
		on_use = function(itemstack, user, pointed_thing)
		user:set_hp(20)
		itemstack:take_item()
		return itemstack
		end
})




minetest.register_node("alien_material:alien_apple", {
		inventory_image = "alien_apple.png",
		drawtype = "plantlike",
		tiles = {"alien_apple.png"},
		groups = {choppy=0,},
		selection_box = {
        type = "fixed",
        fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
    },
		description = "Alien Apple",
		on_use = function(itemstack, user, pointed_thing)
     local hp_gain = 4
     local hp = user:get_hp()
     user:set_hp(hp + hp_gain)
		 save_file({"alienhp-",player}, "4")
	 	end
})

User avatar
Linuxdirk
Member
Posts: 3217
Joined: Wed Sep 17, 2014 11:21
In-game: Linuxdirk
Location: Germany
Contact:

Re: Daten speichern

by Linuxdirk » Post

debiankaios wrote:
Mon May 10, 2021 12:01
Ich will in meiner alien_material mod alienherzen hinzufügen und muss dafür auf die daten speicherung zugreifen.
Aber warum? Je nach Grund des Dateizugriffs wären eventuell mod storage oder Metadaten besser geeignet. Wenn du mit dem Item Spielereigenschaften ändern willst, eventuell spielerbezogene Metadaten. Meiner Meinung nach sollten Metadaten oder Mod-Storage immer dem manuellen Abspeichern in Dateien vorgezogen werden.

User avatar
debiankaios
Member
Posts: 910
Joined: Thu Dec 03, 2020 12:48
IRC: debiankaios
In-game: debiankaios Nowe
Location: germany
Contact:

Re: Daten speichern

by debiankaios » Post

Linuxdirk wrote:
Mon May 10, 2021 12:56
debiankaios wrote:
Mon May 10, 2021 12:01
Ich will in meiner alien_material mod alienherzen hinzufügen und muss dafür auf die daten speicherung zugreifen.
Aber warum? Je nach Grund des Dateizugriffs wären eventuell mod storage oder Metadaten besser geeignet. Wenn du mit dem Item Spielereigenschaften ändern willst, eventuell spielerbezogene Metadaten. Meiner Meinung nach sollten Metadaten oder Mod-Storage immer dem manuellen Abspeichern in Dateien vorgezogen werden.
Das verstehe ich nicht, wie das funktioniert, mit der meta! Ich will einfach Daten speicher über den spieler!

User avatar
Linuxdirk
Member
Posts: 3217
Joined: Wed Sep 17, 2014 11:21
In-game: Linuxdirk
Location: Germany
Contact:

Re: Daten speichern

by Linuxdirk » Post

Ich würde die Daten über den Spieler "im" Spieler speichern, also als Metadaten. Die sind dann immer über das Spielerobjekt verfügbar wenn der Spieler online ist. Sollen die Daten auch verfügbar sein, wenn der Spieler nicht online ist, ist Mod Storage wohl die bessere Variante.

User avatar
debiankaios
Member
Posts: 910
Joined: Thu Dec 03, 2020 12:48
IRC: debiankaios
In-game: debiankaios Nowe
Location: germany
Contact:

Re: Daten speichern

by debiankaios » Post

Linuxdirk wrote:
Wed May 12, 2021 13:31
Ich würde die Daten über den Spieler "im" Spieler speichern, also als Metadaten. Die sind dann immer über das Spielerobjekt verfügbar wenn der Spieler online ist. Sollen die Daten auch verfügbar sein, wenn der Spieler nicht online ist, ist Mod Storage wohl die bessere Variante.
Ja aber wie das ganze funktionier tverstehe ich nicht, und ich habe mir jetzt schon alle möglichen Lua- und mintest dokumentationen durchgelessen ohne es zu verstehen. Sogar allen mögliche source code

User avatar
Linuxdirk
Member
Posts: 3217
Joined: Wed Sep 17, 2014 11:21
In-game: Linuxdirk
Location: Germany
Contact:

Re: Daten speichern

by Linuxdirk » Post

Es steht tatsächlich alle sin der API-Dokumentation, du musst es nur logisch verknüpfen. Wenn ichs nicht vergesse, kann ich gern mal heute Abend eine Demo dazu bauen.

User avatar
debiankaios
Member
Posts: 910
Joined: Thu Dec 03, 2020 12:48
IRC: debiankaios
In-game: debiankaios Nowe
Location: germany
Contact:

Re: Daten speichern

by debiankaios » Post

ok, danke

User avatar
debiankaios
Member
Posts: 910
Joined: Thu Dec 03, 2020 12:48
IRC: debiankaios
In-game: debiankaios Nowe
Location: germany
Contact:

Re: Daten speichern

by debiankaios » Post

Linuxdirk wrote:
Wed May 12, 2021 14:08
Es steht tatsächlich alle sin der API-Dokumentation, du musst es nur logisch verknüpfen. Wenn ichs nicht vergesse, kann ich gern mal heute Abend eine Demo dazu bauen.
Da steht fast garnichts nützliches drinnen für mich also wäre cool wenn du ein demo zusammenbauen würdest, danke!

User avatar
debiankaios
Member
Posts: 910
Joined: Thu Dec 03, 2020 12:48
IRC: debiankaios
In-game: debiankaios Nowe
Location: germany
Contact:

Re: Daten speichern

by debiankaios » Post

Linuxdirk wrote:
Wed May 12, 2021 14:08
Es steht tatsächlich alle sin der API-Dokumentation, du musst es nur logisch verknüpfen. Wenn ichs nicht vergesse, kann ich gern mal heute Abend eine Demo dazu bauen.
Leider hast dus vergessen :(

User avatar
Linuxdirk
Member
Posts: 3217
Joined: Wed Sep 17, 2014 11:21
In-game: Linuxdirk
Location: Germany
Contact:

Re: Daten speichern

by Linuxdirk » Post

Nö, hatte nur keine Lust :)

Im Anhang findest du eine einfache mod, die Mod wird per Chatbefehl gesteuert und kann einen beliebigen String in Mod Storage und in die Spieler-Metadaten schreiben.

Beliebigen Wert schreiben

/test_store bli bla blubb

Code: Select all

[Meta Data] Stored `test:my_cool_value` for Linuxdirk
[Mod Storage] stored `Linuxdirk:my_cool_value`
Werte ausgeben

/test_read

Code: Select all

[Meta Data] `test:my_cool_value` for Linuxdirk = bli bla blubb
[Mod Storage] Linuxdirk:my_cool_value = bli bla blubb
Werte entfernen

/test_remove

Code: Select all

[Meta Data] removed `test:my_cool_value` for Linuxdirk
[Mod Storage] removed `Linuxdirk:my_cool_value`
In der init.lua ist alles mit Kommentaren versehen.

Das Schreiben in eine Datei ist immer individuell, und muss je nach Einsatzzweck selbst zusammengebaut werden. Metadaten und Mod Storage sind universell einsetzbar.
Attachments
test.zip
(1.38 KiB) Downloaded 31 times

User avatar
debiankaios
Member
Posts: 910
Joined: Thu Dec 03, 2020 12:48
IRC: debiankaios
In-game: debiankaios Nowe
Location: germany
Contact:

Re: Daten speichern

by debiankaios » Post

ok, danke

Post Reply

Who is online

Users browsing this forum: No registered users and 7 guests