The code is below. Whoever helps will be given credit in my project. Thanks and God bless!
Code: Select all
-- All glory to God, Jesus Christ, and the Holy Spirit.
local giveme_chatcmd = minetest.registered_chatcommands["giveme"].func
local function give_player_stuff(name, item, qty, IsTwo, item2, qty2, IsThree, item3, qty3)
minetest.after(0.1, function(n)
giveme_chatcmd(name, item .. " " .. tostring(qty))
end
)
if IsTwo == true then
minetest.after(0.2, function(n)
giveme_chatcmd(name, item2 .. " " .. tostring(qty2))
end
)
end
if IsThree == true then
minetest.after(0.3, function(n)
giveme_chatcmd(name, item3 .. " " .. tostring(qty3))
end
)
end
end
local q = 0
minetest.register_node("zombies:buykit1", {
description = "Buy Kit 1",
tiles = {"buykit_store.png"},
groups = {cracky = 1},
on_rightclick = function(pos, node, clicker)
local plname = clicker:get_player_name()
local player = plname
give_player_stuff(plname, "default:axe_wood", 1, true, "farming:bread", 3, true, "farming:bread", 3)
minetest.chat_send_player(plname, "Thank you for purchasing this kit!")
minetest.chat_send_all("You do not have enough flesh to purchase this item!")
end, })
minetest.register_node("zombies:buykit2", {
description = "Buy Kit 2",
tiles = {"buykit_store.png"},
groups = {cracky = 1},
on_rightclick = function(pos, node, clicker)
local plname = clicker:get_player_name()
give_player_stuff(plname, "default:sword_wood", 1, true, "default:blueberries", 4, true, "default:blueberries", 4)
end, })
minetest.register_node("zombies:buykit3", {
description = "Buy Kit 3",
tiles = {"buykit_store.png"},
groups = {cracky = 1},
on_rightclick = function(pos, node, clicker)
local plname = clicker:get_player_name()
give_player_stuff(plname, "default:sword_stone", 1, true, "default:apple", 5, true, "default:apple", 5)
end, })
minetest.register_node("zombies:buykit4", {
description = "Buy Kit 4",
tiles = {"buykit_store.png"},
groups = {cracky = 1},
on_rightclick = function(pos, node, clicker)
local plname = clicker:get_player_name()
give_player_stuff(plname, "default:axe_diamond", 1, true, "default:blueberries", 17, true, "default:axe_mese", 1)
end, })
minetest.register_node("zombies:buykit5", {
description = "Buy Kit 5",
tiles = {"buykit_store.png"},
groups = {cracky = 1},
on_rightclick = function(pos, node, clicker)
local plname = clicker:get_player_name()
give_player_stuff(plname, "default:sword_diamond", 1, true, "farming:bread", 47, true, "default:axe_steel", 1)
end, })
Code: Select all
local giveme_chatcmd = minetest.registered_chatcommands["giveme"].func
--[[
Points API
This mod adds points to players
]]
--[===[
Initialization
]===]
--[[ I need to figure out how this works to use it :/ coming soon?
local S
if (minetest.get_modpath("intllib")) then
S = intllib.Getter()
else
S = function(s,a,...)a={a,...}return s:gsub("@(%d+)",function(n)return a[tonumber(n)]end)end
end
]]--
points = {}
points.config = {}
points.config.init = 0
--[===[
API functions
]===]
function points.set(player, value)
local value = points.round(value)
if value < 0 then
value = 0
points.hud_update(player)
return
end
if player:get_attribute("points:purse") ~= value then
player:set_attribute("points:purse", tostring(value))
points.hud_update(player)
end
end
function points.get(player)
return player:get_attribute("points:purse")
end
function points.add(playername, value)
local player = minetest.get_player_by_name(playername)
local value = points.round(value)
local bank = tonumber(player:get_attribute("points:purse"))
if(player ~= nil and value >= 0) then
bank = tostring(bank + value)
player:set_attribute("points:purse", bank)
points.hud_update(player)
return true
else
return false
end
end
function points.subtract(playername, value)
local player = minetest.get_player_by_name(playername)
local value = points.round(value)
local bank = tonumber(player:get_attribute("points:purse"))
if(player ~= nil and value >= 0) then
bank = tostring(bank - value)
player:set_attribute("points:purse", bank)
points.hud_update(player)
return true
else
return false
end
end
function points.send(sender, reciver, value)
local value = points.round(value)
if(sender ~= nil and reciver ~= nil and sender:get_attribute("points:purse") > value and value >= 0) then
if(points.subtract(sender, value)) then
points.add(reciver, value)
minetest.chat_send_player(sender, "You sent" .. value .. "to" .. reciver:get_player_name())
minetest.chat_send_player(reciver, "You recived" .. value .. "from" .. sender:get_player_name())
points.hud_update(sender)
points.hud_update(reciver)
return true
end
end
return false
end
--[===[
File handling, loading data, saving data, setting up stuff for players.
]===]
minetest.register_on_leaveplayer(
function(player)
points.hud_remove(player)
end
)
minetest.register_on_joinplayer(
function(player)
if player:get_attribute("points:purse") == nil then
player:set_attribute("points:purse", "0")
end
points.hud_add(player)
end
)
--[===[
HUD functions
]===]
function points.pointsstring(player)
return " points: " .. points.get(player)
end
function points.hud_add(player)
local id = player:hud_add({
hud_elem_type = "text",
position = { x = 1, y=1 },
text = points.pointsstring(player),
scale = { x = 1, y = 0 },
alignment = { x = 1, y = 2},
direction = 1,
number = 0xFFFFFF,
offset = { x = -262, y = -103}
})
player:set_attribute("points:hudid", id)
end
function points.hud_update(player)
player:hud_change(player:get_attribute("points:hudid"), "text", points.pointsstring(player))
end
function points.hud_remove(player)
player:hud_remove(player:get_attribute("points:hudid"))
end
--[===[
Helper functions
]===]
points.round = function(x)
return math.ceil(math.floor(tonumber(x)+0.5))
end
function points.help(name)
minetest.chat_send_player(name, "=====Points==============================================================")
minetest.chat_send_player(name, "/points send <player> <amount> -> Sends points to specified player")
minetest.chat_send_player(name, "/points give <player> <amount> -> Admin gives points to a specific player ")
minetest.chat_send_player(name, "/points take <player> <amount> -> Admin takes points from a plauer")
minetest.chat_send_player(name, "/points check <player> -> Check how much points a player has")
minetest.chat_send_player(name, "=====Points==============================================================")
end
--[===[
Chat Commands
]===]
minetest.register_privilege("pointsmagic", "Allows the player to create and delete points")
minetest.register_chatcommand("points", {
description = "Points command interface, type /points help",
privs = {interact = true},
func = function(name, param)
local args = param:split(" ")
if args[1] == "help" then
points.help(name)
return
elseif args[1] == "send" then
points.send(name, args[2], args[3])
return
elseif args[1] == "give" then
if minetest.get_player_privs(name).pointsmagic then
points.add(args[2], args[3])
end
return
elseif args[1] == "take" then
if minetest.get_player_privs(name).pointsmagic then
points.subtract(args[2], args[3])
end
return
elseif args[1] == "check" then
if args[2] == nil then
args[2] = name
end
minetest.chat_send_player(name, points.get(minetest.get_player_by_name(args[2])))
return
end
end
})