mirror of
https://github.com/sys4-fr/server-nalc.git
synced 2024-12-26 02:30:38 +01:00
1db80b9ec5
Add and activate TNT mod Activate Fire propagation Add Technic modpack Add technic_armor mod Add bakedclay Remove burned_clay Add bonemeal Add digilines Add enchanting Add experience Add lightning Add maidroid Add meshnode Add morefarming Add moreflowers Add moreplants Add pdisc Add playeranim Add playereffects Change cyberpangolin skin Add weather_pack Add witchcraft
199 lines
5.6 KiB
Lua
199 lines
5.6 KiB
Lua
level1 = 100
|
|
level1_drop = "default:steelblock 10"
|
|
|
|
level2 = 200
|
|
level2_drop = "default:steelblock 99"
|
|
|
|
level3 = 300
|
|
level3_drop = "default:mese 1"
|
|
|
|
level4 = 400
|
|
level4_drop = "default:mese 2"
|
|
|
|
level5 = 500
|
|
level5_drop = "default:mese 10"
|
|
|
|
level6 = 700
|
|
level6_drop = "default:mese 20"
|
|
|
|
level7 = 1000
|
|
level7_drop = "default:mese 30"
|
|
|
|
level8 = 1400
|
|
level8_drop = "default:mese 50"
|
|
|
|
level9 = 1800
|
|
level9_drop = "default:mese 70"
|
|
|
|
level10 = 2500
|
|
level10_drop = "default:mese 99"
|
|
|
|
|
|
|
|
--add an experience orb if player digs node from xp group
|
|
minetest.register_on_dignode(function(pos, oldnode, digger)
|
|
namer = oldnode.name
|
|
see_if_mineral = minetest.get_item_group(namer, "xp")
|
|
if see_if_mineral > 0 then
|
|
minetest.env:add_entity(pos, "experience:orb")
|
|
end
|
|
end)
|
|
--give a new player some xp
|
|
minetest.register_on_newplayer(function(player)
|
|
file = io.open(minetest.get_worldpath().."/"..player:get_player_name().."_experience", "w")
|
|
file:write("0")
|
|
file:close()
|
|
end)
|
|
--set player's xp level to 0 if they die
|
|
minetest.register_on_dieplayer(function(player)
|
|
file = io.open(minetest.get_worldpath().."/"..player:get_player_name().."_experience", "w")
|
|
file:write("0")
|
|
file:close()
|
|
end)
|
|
|
|
--Allow people to collect orbs
|
|
minetest.register_globalstep(function(dtime)
|
|
for _,player in ipairs(minetest.get_connected_players()) do
|
|
local pos = player:getpos()
|
|
pos.y = pos.y+0.5
|
|
for _,object in ipairs(minetest.env:get_objects_inside_radius(pos, 1)) do
|
|
if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "experience:orb" then
|
|
--RIGHT HERE ADD IN THE CODE TO UPGRADE PLAYERS
|
|
object:setvelocity({x=0,y=0,z=0})
|
|
object:get_luaentity().name = "STOP"
|
|
minetest.sound_play("orb", {
|
|
to_player = player:get_player_name(),
|
|
})
|
|
xp = io.open(minetest.get_worldpath().."/"..player:get_player_name().."_experience", "r")
|
|
experience = xp:read("*l")
|
|
xp:close()
|
|
if experience ~= nil then
|
|
new_xp = experience + 1
|
|
xp_write = io.open(minetest.get_worldpath().."/"..player:get_player_name().."_experience", "w")
|
|
xp_write:write(new_xp)
|
|
xp_write:close()
|
|
if new_xp == level1 then
|
|
minetest.env:add_item(pos, level1_drop)
|
|
minetest.sound_play("level_up", {
|
|
to_player = player:get_player_name(),
|
|
})
|
|
end
|
|
if new_xp == level2 then
|
|
minetest.env:add_item(pos, level2_drop)
|
|
minetest.sound_play("level_up", {
|
|
to_player = player:get_player_name(),
|
|
})
|
|
end
|
|
if new_xp == level3 then
|
|
minetest.env:add_item(pos, level3_drop)
|
|
minetest.sound_play("level_up", {
|
|
to_player = player:get_player_name(),
|
|
})
|
|
end
|
|
if new_xp == level4 then
|
|
minetest.env:add_item(pos, level4_drop)
|
|
minetest.sound_play("level_up", {
|
|
to_player = player:get_player_name(),
|
|
})
|
|
end
|
|
if new_xp == level5 then
|
|
minetest.env:add_item(pos, level5_drop)
|
|
minetest.sound_play("level_up", {
|
|
to_player = player:get_player_name(),
|
|
})
|
|
end
|
|
if new_xp == level6 then
|
|
minetest.env:add_item(pos, level6_drop)
|
|
minetest.sound_play("level_up", {
|
|
to_player = player:get_player_name(),
|
|
})
|
|
end
|
|
if new_xp == level7 then
|
|
minetest.env:add_item(pos, level7_drop)
|
|
minetest.sound_play("level_up", {
|
|
to_player = player:get_player_name(),
|
|
})
|
|
end
|
|
if new_xp == level8 then
|
|
minetest.env:add_item(pos, level8_drop)
|
|
minetest.sound_play("level_up", {
|
|
to_player = player:get_player_name(),
|
|
})
|
|
end
|
|
if new_xp == level9 then
|
|
minetest.env:add_item(pos, level9_drop)
|
|
minetest.sound_play("level_up", {
|
|
to_player = player:get_player_name(),
|
|
})
|
|
end
|
|
if new_xp == level10 then
|
|
minetest.env:add_item(pos, level10_drop)
|
|
minetest.sound_play("level_up", {
|
|
to_player = player:get_player_name(),
|
|
})
|
|
end
|
|
end
|
|
object:remove()
|
|
end
|
|
end
|
|
for _,object in ipairs(minetest.env:get_objects_inside_radius(pos, 3)) do
|
|
if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "experience:orb" then
|
|
if object:get_luaentity().collect then
|
|
local pos1 = pos
|
|
pos1.y = pos1.y+0.2
|
|
local pos2 = object:getpos()
|
|
local vec = {x=pos1.x-pos2.x, y=pos1.y-pos2.y, z=pos1.z-pos2.z}
|
|
vec.x = vec.x*3
|
|
vec.y = vec.y*3
|
|
vec.z = vec.z*3
|
|
object:setvelocity(vec)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
|
|
minetest.register_entity("experience:orb", {
|
|
physical = true,
|
|
timer = 0,
|
|
textures = {"orb.png"},
|
|
visual_size = {x=0.3, y=0.3},
|
|
collisionbox = {-0.17,-0.17,-0.17,0.17,0.17,0.17},
|
|
on_activate = function(self, staticdata)
|
|
self.object:set_armor_groups({immortal=1})
|
|
self.object:setvelocity({x=0, y=1, z=0})
|
|
self.object:setacceleration({x=0, y=-10, z=0})
|
|
end,
|
|
collect = true,
|
|
on_step = function(self, dtime)
|
|
self.timer = self.timer + dtime
|
|
if (self.timer > 300) then
|
|
self.object:remove()
|
|
end
|
|
local p = self.object:getpos()
|
|
local nn = minetest.env:get_node(p).name
|
|
noder = minetest.env:get_node(p).name
|
|
p.y = p.y - 0.3
|
|
local nn = minetest.env:get_node(p).name
|
|
if not minetest.registered_nodes[nn] or minetest.registered_nodes[nn].walkable then
|
|
if self.physical_state then
|
|
self.object:setvelocity({x=0, y=0, z=0})
|
|
self.object:setacceleration({x=0, y=0, z=0})
|
|
self.physical_state = false
|
|
self.object:set_properties({
|
|
physical = false
|
|
})
|
|
end
|
|
else
|
|
if not self.physical_state then
|
|
self.object:setvelocity({x=0,y=0,z=0})
|
|
self.object:setacceleration({x=0, y=-10, z=0})
|
|
self.physical_state = true
|
|
self.object:set_properties({
|
|
physical = true
|
|
})
|
|
end
|
|
end
|
|
end,
|
|
})
|