Items umbennen

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

Items umbennen

by niwla23 » Tue Dec 25, 2018 20:24

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
 

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

Re: Items umbennen

by Lejo » Tue Dec 25, 2018 20:32

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: 93
Joined: Sat Nov 17, 2018 17:40
In-game: Niwla

Re: Items umbennen

by niwla23 » Tue Dec 25, 2018 21:58

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?
 

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

Re: Items umbennen

by Lejo » Wed Dec 26, 2018 10:32

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: 1089
Joined: Thu Jun 19, 2014 19:49
Location: I'm scared that if this is too exact, I will be unable to use my keyboard.
GitHub: DS-Minetest
In-game: DS

Re: Items umbennen

by DS-minetest » Wed Dec 26, 2018 12:07

lua_api.txt ist eine besser Quelle: https://github.com/minetest/minetest/blob/a5197eaebc61ac6b555a640f36c0b427faef381d/doc/lua_api.txt#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)
Do not call me -minetest.
Call me DS or DS-minetest.
I am German, so you don't have to pm me English if you are also German.
The background is a lie.
 

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

Re: Items umbennen

by niwla23 » Wed Dec 26, 2018 22:10

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
 


Return to Deutsch



Who is online

Users browsing this forum: No registered users and 1 guest