HUD funktioniert nicht

German
Post Reply
User avatar
niwla23
Member
Posts: 118
Joined: Sat Nov 17, 2018 17:40
In-game: Niwla

HUD funktioniert nicht

by niwla23 » Post

Hallo,
ich probiere gerade etwas mit LUA modding rum und wollte einen HUD erstellen.
Das ist mein Code:

Code: Select all

local player = minetest.get_player_by_name("singleplayer")
local idx = player:hud_add({
     hud_elem_type = "text",
     position      = {x = 0.5, y = 0.5},
     offset        = {x = 0,   y = 0},
     text          = "Hello world!",
     alignment     = {x = 0, y = 0},  -- center aligned
     scale         = {x = 100, y = 100}, -- covered later
})
Und das die Debug.txt

Code: Select all

       .__               __                   __   
  _____ |__| ____   _____/  |_  ____   _______/  |_ 
 /     \|  |/    \_/ __ \   __\/ __ \ /  ___/\   __\
|  Y Y  \  |   |  \  ___/|  | \  ___/ \___ \  |  |  
|__|_|  /__|___|  /\___  >__|  \___  >____  > |__|  
      \/        \/     \/          \/     \/        
2018-11-28 19:36:28: ACTION[Main]: World at [C:\Program Files\Minetest\minetest-0.4.17.1-win64\bin\..\worlds\ggggggggggggggggggggggg]
2018-11-28 19:36:28: ACTION[Main]: Server for gameid="minetest" listening on 0.0.0.0:61027.
2018-11-28 19:36:30: WARNING[Main]: Irrlicht: PNG warning: iCCP: known incorrect sRGB profile
2018-11-28 19:36:31: ACTION[Server]: singleplayer [127.0.0.1] joins game. 
2018-11-28 19:36:31: ACTION[Server]: singleplayer joins game. List of players: singleplayer
2018-11-28 19:45:02: ERROR[Main]: ModError: Failed to load and run script from C:\Program Files\Minetest\minetest-0.4.17.1-win64\bin\..\mods\hud\init.lua:
2018-11-28 19:45:02: ERROR[Main]: ...inetest\minetest-0.4.17.1-win64\bin\..\mods\hud\init.lua:2: attempt to index local 'player' (a nil value)
2018-11-28 19:45:02: ERROR[Main]: stack traceback:
2018-11-28 19:45:02: ERROR[Main]: 	...inetest\minetest-0.4.17.1-win64\bin\..\mods\hud\init.lua:2: in main chunk
2018-11-28 19:45:02: ERROR[Main]: Siehe debug.txt für Details.
Hat da wer ne Idee?

User avatar
Krock
Developer
Posts: 4652
Joined: Thu Oct 03, 2013 07:48
GitHub: SmallJoker
Location: Switzerland
Contact:

Re: HUD funktioniert nicht

by Krock » Post

EDIT: Falsches Forum! Bitte nächstes mal im deutschsprachigen Teil oder hier auf Englisch fragen. DANKESCHÖN

Ja. Die Lösung ist sehr einfach: Lua führt das gesamte Script beim Laden der Welt aus. Das heisst, alle Funktionen werden definiert und die globalen Variablen festgelegt. In deinem Script wird der Code ebenfalls unmittelbar ausgeführt - zu einem Zeitpunkt wo der Server noch gestartet wird. Auch wenn der Error nach "singleplayer joins game. List of players: singleplayer" erscheint - der Spieler ist zu diesem Zeitpunkt für die API noch nicht bekannt.

Lösung: Ein `on_joinplayer` Callback registrieren, welches den Funktions-Code bei dessen Aufruf erst ausführt:

Code: Select all

-- Für andere Funktionen zugänglich
local players_hud_id = {}

minetest.register_on_joinplayer(func(player)
	-- Eventuell hier auf "singleplayer" beschränken?
	local player_name = player:get_player_name()

	players_hud_id[player_name] = player:hud_add({
		hud_elem_type = "text",
		position      = {x = 0.5, y = 0.5},
		offset        = {x = 0,   y = 0},
		text          = "Hello world!",
		alignment     = {x = 0, y = 0},  -- center aligned
		scale         = {x = 100, y = 100}, -- covered later
	})
end)
Look, I programmed a bug for you. >> Mod Search Engine << - Mods by Krock - DuckDuckGo mod search bang: !mtmod <keyword here>

User avatar
niwla23
Member
Posts: 118
Joined: Sat Nov 17, 2018 17:40
In-game: Niwla

Re: HUD funktioniert nicht

by niwla23 » Post

Danke!
Jetzt bekomme ich nur noch Atom noch diese Meldung:

Code: Select all

2018-11-28 20:25:27: ERROR[Main]: ModError: Failed to load and run script from C:\Program Files\Minetest\minetest-0.4.17.1-win64\bin\..\mods\hud\init.lua:
2018-11-28 20:25:27: ERROR[Main]: ...inetest\minetest-0.4.17.1-win64\bin\..\mods\hud\init.lua:6: ')' expected (to close '(' at line 4) near 'local'
2018-11-28 20:25:27: ERROR[Main]: Siehe debug.txt für Details.
Ich verstehe nicht wo die Klammer fehlt.

User avatar
Krock
Developer
Posts: 4652
Joined: Thu Oct 03, 2013 07:48
GitHub: SmallJoker
Location: Switzerland
Contact:

Re: HUD funktioniert nicht

by Krock » Post

Den Code habe ich nicht getestet. "func" steht so in der Dokumentation (lua_api.txt), ist aber als "function" gemeint. Also einfach ersetzen und der Fehler verschwindet.
Look, I programmed a bug for you. >> Mod Search Engine << - Mods by Krock - DuckDuckGo mod search bang: !mtmod <keyword here>

User avatar
niwla23
Member
Posts: 118
Joined: Sat Nov 17, 2018 17:40
In-game: Niwla

Re: HUD funktioniert nicht

by niwla23 » Post

Ok, danke jetzt geht es.

Post Reply

Who is online

Users browsing this forum: No registered users and 9 guests