87 lines
2.2 KiB
Lua
87 lines
2.2 KiB
Lua
hacktool={}
|
|
|
|
hacktool.gui=function(itemstack, user, pointed_thing)
|
|
if pointed_thing.type~="object" then return end
|
|
local player=pointed_thing.ref
|
|
if player:is_player()==false then return end
|
|
hacktool.tmp={}
|
|
hacktool.tmp=player
|
|
local inv=player:get_inventory()
|
|
local gui="size[8,4]"
|
|
local x=0
|
|
local y=0
|
|
|
|
for i=1,32,1 do
|
|
gui=gui .."item_image_button[" .. x ..",".. y.. ";1,1;".. inv:get_stack("main",i):get_name() ..";inv" .. i ..";\n\n\b\b\b" .. inv:get_stack("main",i):get_count() .."]"
|
|
x=x+1
|
|
if x>=8 then
|
|
x=0
|
|
y=y+1
|
|
end
|
|
end
|
|
minetest.after((0.1), function(gui)
|
|
return minetest.show_formspec(user:get_player_name(), "invhack.form",gui)
|
|
end, gui)
|
|
end
|
|
|
|
minetest.register_privilege("invhack", {
|
|
description = "Let you hack players inventory",
|
|
give_to_singleplayer= true,
|
|
})
|
|
|
|
|
|
|
|
minetest.register_on_player_receive_fields(function(player, form, pressed)
|
|
if form=="invhack.form" then
|
|
local name=player:get_player_name()
|
|
local n=0
|
|
|
|
if pressed.quit then
|
|
if hacktool.tmp then hacktool.tmp=nil end
|
|
return
|
|
end
|
|
|
|
if not minetest.check_player_privs(name, {invhack=true}) then
|
|
minetest.chat_send_player(name, "Missing privilege: invhack")
|
|
return
|
|
end
|
|
|
|
if hacktool.tmp==nil or hacktool.tmp:is_player()~=true then
|
|
hacktool.tmp=nil
|
|
minetest.chat_send_player(name, "The tempoary variable is empty or the player offline")
|
|
return
|
|
end
|
|
|
|
for i=1,32,1 do
|
|
n=i
|
|
if pressed["inv" .. i] then break end
|
|
end
|
|
if pressed["inv" .. n] then
|
|
local pinv=hacktool.tmp:get_inventory()
|
|
local uinv=player:get_inventory()
|
|
local stack=pinv:get_stack("main",n)
|
|
local n2=0
|
|
local f=true
|
|
for i=1,32,1 do
|
|
n2=i
|
|
if uinv:get_stack("main",i):get_count()==0 then f=false break end
|
|
end
|
|
if f then minetest.chat_send_player(name, "Error: Your inventory is full") return end
|
|
uinv:set_stack("main",n2,stack)
|
|
pinv:set_stack("main",n,nil)
|
|
end
|
|
end
|
|
end)
|
|
|
|
|
|
|
|
minetest.register_tool("invhack:tool", {
|
|
description = "Inventory hack tool",
|
|
range = 15,
|
|
inventory_image = "hacktool_inv.png",
|
|
groups = {not_in_creative_inventory=1},
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
hacktool.gui(itemstack, user, pointed_thing)
|
|
return itemstack
|
|
end,
|
|
}) |