forked from mtcontrib/factions
Major update:
Add new features to claim and unclaim. Sort help from a-z. Sort functions into diff lua files.
This commit is contained in:
104
player_events.lua
Normal file
104
player_events.lua
Normal file
@ -0,0 +1,104 @@
|
||||
local on_death = {}
|
||||
|
||||
minetest.register_on_prejoinplayer(function(name, ip)
|
||||
factions.player_ips.set(name, ip)
|
||||
end)
|
||||
|
||||
minetest.register_on_joinplayer(
|
||||
function(player)
|
||||
local name = player:get_player_name()
|
||||
minetest.after(5, createHudfactionLand, player)
|
||||
local faction, facname = factions.get_player_faction(name)
|
||||
if faction then
|
||||
if factions.onlineplayers[facname] == nil then
|
||||
factions.onlineplayers[facname] = {}
|
||||
end
|
||||
|
||||
factions.onlineplayers[facname][name] = true
|
||||
faction.last_logon = os.time()
|
||||
|
||||
factions.factions.set(facname, faction)
|
||||
|
||||
minetest.after(5, createHudFactionName, player, facname)
|
||||
minetest.after(5, createHudPower, player, faction)
|
||||
|
||||
if faction.no_parcel ~= -1 then
|
||||
local now = os.time() - faction.no_parcel
|
||||
local l = factions_config.maximum_parcelless_faction_time
|
||||
minetest.chat_send_player(name, "This faction will disband in " .. l - now .. " seconds, because it has no parcels.")
|
||||
end
|
||||
|
||||
if factions.has_permission(facname, name, "diplomacy") then
|
||||
for _ in pairs(faction.request_inbox) do minetest.chat_send_player(name, "You have diplomatic requests in the inbox.") break end
|
||||
end
|
||||
|
||||
if faction.message_of_the_day and (faction.message_of_the_day ~= "" or faction.message_of_the_day ~= " ") then
|
||||
minetest.chat_send_player(name, faction.message_of_the_day)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
)
|
||||
|
||||
minetest.register_on_leaveplayer(
|
||||
function(player)
|
||||
local name = player:get_player_name()
|
||||
local faction, facname = factions.get_player_faction(name)
|
||||
local id_name1 = name .. "factionLand"
|
||||
|
||||
if hud_ids[id_name1] then
|
||||
hud_ids[id_name1] = nil
|
||||
end
|
||||
|
||||
if faction then
|
||||
factions.onlineplayers[facname][name] = nil
|
||||
local id_name2 = name .. "factionName"
|
||||
local id_name3 = name .. "powerWatch"
|
||||
if hud_ids[id_name2] then
|
||||
hud_ids[id_name2] = nil
|
||||
end
|
||||
if hud_ids[id_name3] then
|
||||
hud_ids[id_name3] = nil
|
||||
end
|
||||
for k, v in pairs(factions.onlineplayers[facname]) do
|
||||
return
|
||||
end
|
||||
factions.onlineplayers[facname] = nil
|
||||
on_death[pname] = nil
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
minetest.register_on_respawnplayer(
|
||||
function(player)
|
||||
local faction, facname = factions.get_player_faction(player:get_player_name())
|
||||
|
||||
if not faction then
|
||||
return false
|
||||
else
|
||||
on_death[pname] = nil
|
||||
if not faction.spawn then
|
||||
return false
|
||||
else
|
||||
player:set_pos(faction.spawn)
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
minetest.register_on_dieplayer(
|
||||
function(player)
|
||||
local pname = player:get_player_name()
|
||||
if on_death[pname] then
|
||||
return
|
||||
end
|
||||
local faction, name = factions.get_player_faction(pname)
|
||||
if not faction then
|
||||
return
|
||||
end
|
||||
factions.decrease_power(name, factions_config.power_per_death)
|
||||
on_death[pname] = true
|
||||
return
|
||||
end
|
||||
)
|
Reference in New Issue
Block a user