add [invhack] mod

master
elite 2017-07-22 15:20:03 -04:00
parent 6bbbdf0867
commit 97c447bedb
3 changed files with 95 additions and 0 deletions

View File

@ -0,0 +1,87 @@
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,
})

View File

@ -0,0 +1,8 @@
Licenses: code LGPL 2.1 media CC BY-SA 3.0
Created by: UjEdwin
Date: 2016-03-29
See and or take items from players main inventory.
The invhack privilege requires to take items.
Tool: invhack:tool

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB