mirror of
https://github.com/luanti-org/luanti.git
synced 2025-08-01 17:38:41 +00:00
Create the necessary API for /giveme and /give and implement those commands; also sort out the scripts a bit
This commit is contained in:
parent
2a610b011a
commit
103d4793f0
6 changed files with 534 additions and 382 deletions
|
@ -26,6 +26,7 @@
|
|||
-- minetest.setting_getbool(name)
|
||||
-- minetest.chat_send_all(text)
|
||||
-- minetest.chat_send_player(name, text)
|
||||
-- minetest.get_player_privs(name)
|
||||
--
|
||||
-- Global objects:
|
||||
-- minetest.env - environment reference
|
||||
|
@ -52,6 +53,7 @@
|
|||
-- - add_rat(pos)
|
||||
-- - add_firefly(pos)
|
||||
-- - get_meta(pos) -- Get a NodeMetaRef at that position
|
||||
-- - get_player_by_name(name) -- Get an ObjectRef to a player
|
||||
--
|
||||
-- NodeMetaRef
|
||||
-- - get_type()
|
||||
|
@ -1322,6 +1324,65 @@ function on_punchnode(p, node)
|
|||
end
|
||||
minetest.register_on_punchnode(on_punchnode)
|
||||
|
||||
minetest.register_on_chat_message(function(name, message)
|
||||
print("default on_chat_message: name="..dump(name).." message="..dump(message))
|
||||
local cmd = "/giveme"
|
||||
if message:sub(0, #cmd) == cmd then
|
||||
if not minetest.get_player_privs(name)["give"] then
|
||||
minetest.chat_send_player(name, "you don't have permission to give")
|
||||
return true -- Handled chat message
|
||||
end
|
||||
stackstring = string.match(message, cmd.." (.*)")
|
||||
if stackstring == nil then
|
||||
minetest.chat_send_player(name, 'usage: '..cmd..' stackstring')
|
||||
return true -- Handled chat message
|
||||
end
|
||||
print(cmd..' invoked, stackstring="'..stackstring..'"')
|
||||
player = minetest.env:get_player_by_name(name)
|
||||
added, error_msg = player:add_to_inventory(stackstring)
|
||||
if added then
|
||||
minetest.chat_send_player(name, '"'..stackstring
|
||||
..'" added to inventory.');
|
||||
else
|
||||
minetest.chat_send_player(name, 'Could not give "'..stackstring
|
||||
..'": '..error_msg);
|
||||
end
|
||||
return true -- Handled chat message
|
||||
end
|
||||
local cmd = "/give"
|
||||
if message:sub(0, #cmd) == cmd then
|
||||
print("minetest.get_player_privs(name)="
|
||||
..dump(minetest.get_player_privs(name)))
|
||||
if not minetest.get_player_privs(name)["give"] then
|
||||
minetest.chat_send_player(name, "you don't have permission to give")
|
||||
return true -- Handled chat message
|
||||
end
|
||||
name2, stackstring = string.match(message, cmd.." ([%a%d_-]+) (.*)")
|
||||
if name == nil or stackstring == nil then
|
||||
minetest.chat_send_player(name, 'usage: '..cmd..' name stackstring')
|
||||
return true -- Handled chat message
|
||||
end
|
||||
print(cmd..' invoked, name2="'..name2
|
||||
..'" stackstring="'..stackstring..'"')
|
||||
player = minetest.env:get_player_by_name(name2)
|
||||
if player == nil then
|
||||
minetest.chat_send_player(name, name2..' is not a known player')
|
||||
return true -- Handled chat message
|
||||
end
|
||||
added, error_msg = player:add_to_inventory(stackstring)
|
||||
if added then
|
||||
minetest.chat_send_player(name, '"'..stackstring
|
||||
..'" added to '..name2..'\'s inventory.');
|
||||
minetest.chat_send_player(name2, '"'..stackstring
|
||||
..'" added to inventory.');
|
||||
else
|
||||
minetest.chat_send_player(name, 'Could not give "'..stackstring
|
||||
..'": '..error_msg);
|
||||
end
|
||||
return true -- Handled chat message
|
||||
end
|
||||
end)
|
||||
|
||||
--
|
||||
-- Done, print some random stuff
|
||||
--
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue