Give experience for digging ores. Add a level up message.
parent
79df0f9654
commit
48f119d614
6
api.lua
6
api.lua
|
@ -3,6 +3,7 @@ levels_api.player_hud_ids = {}
|
|||
local ADDED_XP_PER_LEVEL = 100
|
||||
|
||||
function levels_api.get_player_attribute(name, attr, defval)
|
||||
minetest.debug(name)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if not player then
|
||||
return false
|
||||
|
@ -19,7 +20,7 @@ function levels_api.set_player_attribute(name, attr, value)
|
|||
end
|
||||
|
||||
function levels_api.increment_attribute(name, attr)
|
||||
local current_attr = levels_api.get_player_attribute(name, attr, 0)
|
||||
local current_attr = levels_api.get_player_attribute(name, attr, 0) or 0
|
||||
levels_api.set_player_attribute(name, attr, current_attr + 1)
|
||||
return true
|
||||
end
|
||||
|
@ -54,10 +55,11 @@ function levels_api.update_level(name)
|
|||
local current_xp = levels_api.get_player_attribute(name, "levels:xp", 0)
|
||||
local needed_xp = ADDED_XP_PER_LEVEL * current_level
|
||||
while current_xp >= needed_xp do
|
||||
minetest.chat_send_player(name, "You have leveled up!")
|
||||
minetest.chat_send_player(name, "You have received 1 more attribute point.")
|
||||
current_level = current_level + 1
|
||||
current_xp = current_xp - needed_xp
|
||||
levels_api.increment_attribute(name, "levels:points")
|
||||
|
||||
needed_xp = ADDED_XP_PER_LEVEL * current_level
|
||||
end
|
||||
levels_api.set_player_attribute(name, "levels:level", current_level)
|
||||
|
|
22
init.lua
22
init.lua
|
@ -3,6 +3,16 @@ dofile(path .. "/api.lua")
|
|||
|
||||
local levels = {}
|
||||
|
||||
local ores = {
|
||||
{"default:stone_with_coal", 5},
|
||||
{"default:stone_with_iron", 10},
|
||||
{"default:stone_with_copper", 10},
|
||||
{"default:stone_with_tin", 15},
|
||||
{"default:stone_with_gold", 25},
|
||||
{"default:stone_with_mese", 30},
|
||||
{"default:stone_with_diamond", 30}
|
||||
}
|
||||
|
||||
local SPEED_MULTIPLER = 0.05
|
||||
local JUMP_MULTIPLER = 0.01
|
||||
|
||||
|
@ -64,7 +74,7 @@ minetest.register_on_joinplayer(function(player)
|
|||
levels_api.update_hud(player:get_player_name())
|
||||
end)
|
||||
minetest.register_on_newplayer(function(player)
|
||||
levels_api.increment_attribute("levels:points")
|
||||
levels_api.increment_attribute(player:get_player_name(), "levels:points")
|
||||
end)
|
||||
minetest.register_chatcommand("levels", {
|
||||
description = "Open levels UI",
|
||||
|
@ -84,7 +94,6 @@ minetest.register_chatcommand("givexp", {
|
|||
minetest.register_chatcommand("getxp", {
|
||||
description = "How much XP have we got here?",
|
||||
func = function(name, text)
|
||||
levels_api.update_level(name)
|
||||
return true, levels_api.get_player_attribute(name, "levels:xp", 0)
|
||||
end,
|
||||
})
|
||||
|
@ -108,3 +117,12 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|||
end
|
||||
end
|
||||
end)
|
||||
minetest.register_on_dignode(function(pos, oldnode, player)
|
||||
local name = oldnode.name
|
||||
for key,value in pairs(ores) do
|
||||
if value[1] == name then
|
||||
levels_api.set_player_attribute(player:get_player_name(), "levels:xp", levels_api.get_player_attribute("singleplayer","levels:xp", 0) + value[2])
|
||||
levels_api.update_level(player:get_player_name())
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
|
Loading…
Reference in New Issue