1
0
mirror of https://github.com/sys4-fr/server-nalc.git synced 2024-12-29 12:10:34 +01:00
server-nalc/mods/experience/init.lua
sys4-fr 1db80b9ec5 Change default config files for NotreAmiLeCube Server
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
2017-03-12 15:39:36 +01:00

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,
})