Items umbennen

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

Items umbennen

by niwla23 » Post

Hallo,
ich würde gerne Items umbennen können, wie geht das mit lua, also mit lua programmieren und In game neue Items erstellen.
Ich weiß das es irgendwie geht vom laptops Mod, dort kann man usb sticks umbennen und beschreiben, allerdings ist der Code sehr kompliziert (zu kompliziert für mich :-) ). Weiß jemand wie das geht?
Viele Grüße, Niwla23
My mods: alphabet viewtopic.php?f=11&t=21516 |||12 years old Minetest Modding in German: https://www.youtube.com/watch?v=zqWwUc- ... TYFsE7b_Ig

User avatar
Lejo
Member
Posts: 670
Joined: Mon Oct 19, 2015 16:32
GitHub: Lejo1
In-game: Lejo

Re: Items umbennen

by Lejo » Post

Du kannst in der Meta (itemstack:get_meta())
Die description ändern meta:set_string(“description”, “Der neue item Name”)
https://dev.minetest.net/MetaDataRef

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

Re: Items umbennen

by niwla23 » Post

Ok, ich kenne mich noch nicht so gut aus mit Lua, das Beispiel aus dem Developer Wiki funktioniert bei mir nicht: "attempt to index local meta (a nil value)" außerdem verstehe ich auch nicht was das Skript macht. Aus dem Minetest Modding Book werde ich auch nicht schlauer. Kann mir jemand ein funktionierendes Beispiel gebe?
My mods: alphabet viewtopic.php?f=11&t=21516 |||12 years old Minetest Modding in German: https://www.youtube.com/watch?v=zqWwUc- ... TYFsE7b_Ig

User avatar
Lejo
Member
Posts: 670
Joined: Mon Oct 19, 2015 16:32
GitHub: Lejo1
In-game: Lejo

Re: Items umbennen

by Lejo » Post

Das Beispiel funktioniert deshalb nicht weil du für pos keine Varriable deklariert hast.
Du kannst vor das Beispiel das hier schreiben:
local pos = {x=0, y=0, z=0}
Wenn du jetzt an dieser Position eine Kiste hast funktioniert es.

User avatar
DS-minetest
Member
Posts: 1136
Joined: Thu Jun 19, 2014 19:49
GitHub: Desour
IRC: DS-minetest
In-game: DS
Location: I'm scared that if this is too exact, I will be unable to use my keyboard.

Re: Items umbennen

by DS-minetest » Post

lua_api.txt ist eine besser Quelle: https://github.com/minetest/minetest/bl ... L1767L1787
Zu lua: http://www.lua.org/manual/5.1/
Vergiss nicht, das Umbenennen in einem callback zu machen.
Schlechtes, ungetestetes Beispiel:

Code: Select all

minetest.register_on_punchnode(function(pos, node, puncher, pointed_thing)
	local itemstack = puncher:get_wielded_item()
	local meta = itemstack:get_meta()
	meta:set_string("description", node.name .. " bei " .. minetest.pos_to_string(pos))
	puncher:set_wielded_item(itemstack)
end)
Note that I've recently renamed myself on github and co. to "Desour". (I'm bad at naming things.)
Feel free to call me DS.

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

Re: Items umbennen

by niwla23 » Post

Danke für die Antworten, jetzt hat es funktioniert, ich erstelle gerade ein rename mod, hier eine kleine Vorschau:

Code: Select all

minetest.register_craftitem("rename:seal", {
	description = "A seal",
	inventory_image = "seal.png",
})


minetest.register_privilege("rename", {
	description = "Can rename Items and Nodes",
	give_to_singleplayer = false
})





minetest.register_chatcommand("rename", {
    func = function(name, param)
        minetest.show_formspec(name, "renamer:renameform",
                "size[4,3]" ..
                "label[0,0;Renamer]" ..
                "field[1,1.5;3,1;name;New Node/Item name;]" ..
                "button_exit[1,2;2,1;exit;Rename Now!]")
    end
})


minetest.register_on_player_receive_fields(function(player,
        formname, fields)
    if formname ~= "renamer:renameform" then

        return false
    end


    ----------------------------------------------
    local has, missing = minetest.check_player_privs(player:get_player_name(), {
            rename = true})

    if has then
      local itemstack = player:get_wielded_item()
      local meta = itemstack:get_meta()
      meta:set_string("description", fields.name)
      player:set_wielded_item(itemstack)

      return true
    else
        minetest.chat_send_player(player:get_player_name(), "You have no privilige to rename things :( ")
    end


end)
Viele Grüße, Niwla23
My mods: alphabet viewtopic.php?f=11&t=21516 |||12 years old Minetest Modding in German: https://www.youtube.com/watch?v=zqWwUc- ... TYFsE7b_Ig

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest