forked from mtcontrib/factions
Update 1
This commit is contained in:
parent
f73505fe87
commit
bec629beb7
|
@ -704,6 +704,38 @@ factions.register_command("who", {
|
|||
end
|
||||
},false)
|
||||
|
||||
local parcel_size_center = factions.parcel_size / 2
|
||||
|
||||
factions.register_command("showparcel", {
|
||||
description = "Shows parcel for six seconds.",
|
||||
global_privileges = {"faction_user"},
|
||||
on_success = function(player, faction, pos, parcelpos, args)
|
||||
local parcel_faction = factions.get_parcel_faction(parcelpos)
|
||||
if not parcel_faction then
|
||||
send_error(player, "There is no claim here")
|
||||
return false
|
||||
end
|
||||
local pscx = parcel_size_center
|
||||
local pscy = parcel_size_center
|
||||
local pscz = parcel_size_center
|
||||
local fps = factions.parcel_size
|
||||
|
||||
if pos.x < 0 then
|
||||
pscx = -pscx
|
||||
end
|
||||
if pos.y < 0 then
|
||||
pscy = -pscy
|
||||
end
|
||||
if pos.z < 0 then
|
||||
pscz = -pscz
|
||||
end
|
||||
|
||||
local ppos = {x = (math.floor(pos.x / fps)*fps)+pscx,y = (math.floor(pos.y / fps)*fps)+pscy,z = (math.floor(pos.z / fps)*fps)+pscz}
|
||||
minetest.add_entity(ppos, "factions:display")
|
||||
return true
|
||||
end
|
||||
},false)
|
||||
|
||||
factions.register_command("newrank", {
|
||||
description = "Add a new rank.",
|
||||
format = {"string"},
|
||||
|
@ -834,7 +866,7 @@ factions.register_command("power", {
|
|||
description = "Display your faction's power",
|
||||
global_privileges = {"faction_user"},
|
||||
on_success = function(player, faction, pos, parcelpos, args)
|
||||
minetest.chat_send_player(player, "Power: "..faction.power.."/"..faction.maxpower - faction.usedpower.."/"..faction.maxpower)
|
||||
minetest.chat_send_player(player, "Power: "..faction.power.."/".. faction.usedpower .."/"..faction.maxpower)
|
||||
return true
|
||||
end
|
||||
},false)
|
||||
|
|
44
config.lua
44
config.lua
|
@ -1,23 +1,29 @@
|
|||
factions_config = {}
|
||||
|
||||
factions_config.protection_max_depth = tonumber(minetest.setting_get("protection_max_depth")) or -512
|
||||
factions_config.power_per_parcel = tonumber(minetest.setting_get("power_per_parcel")) or 0.5
|
||||
factions_config.power_per_death = tonumber(minetest.setting_get("power_per_death")) or 0.25
|
||||
factions_config.power_per_tick = tonumber(minetest.setting_get("power_per_tick")) or 0.125
|
||||
factions_config.tick_time = tonumber(minetest.setting_get("tick_time")) or 60
|
||||
factions_config.power_per_attack = tonumber(minetest.setting_get("power_per_attack")) or 10
|
||||
factions_config.faction_name_max_length = tonumber(minetest.setting_get("faction_name_max_length")) or 50
|
||||
factions_config.rank_name_max_length = tonumber(minetest.setting_get("rank_name_max_length")) or 25
|
||||
factions_config.maximum_faction_inactivity = tonumber(minetest.setting_get("maximum_faction_inactivity")) or 604800
|
||||
factions_config.maximum_parcelless_faction_time = tonumber(minetest.setting_get("maximum_parcelless_faction_time")) or 10800
|
||||
factions_config.power = tonumber(minetest.setting_get("power")) or 0
|
||||
factions_config.maxpower = tonumber(minetest.setting_get("maxpower")) or 0
|
||||
factions_config.power_per_player = tonumber(minetest.setting_get("power_per_player")) or 2.
|
||||
local flip = minetest.settings:get("protection_max_depth") or 512
|
||||
factions_config.protection_max_depth = -flip
|
||||
factions_config.protection_max_height = minetest.settings:get("protection_max_height") or 10000
|
||||
factions_config.power_per_parcel = minetest.settings:get("power_per_parcel") or 0.5
|
||||
factions_config.power_per_death = minetest.settings:get("power_per_death") or 0.25
|
||||
factions_config.power_per_tick = minetest.settings:get("power_per_tick") or 0.125
|
||||
factions_config.tick_time = minetest.settings:get("tick_time") or 60
|
||||
factions_config.power_per_attack = minetest.settings:get("power_per_attack") or 10
|
||||
factions_config.faction_name_max_length = minetest.settings:get("faction_name_max_length") or 50
|
||||
factions_config.rank_name_max_length = minetest.settings:get("rank_name_max_length") or 25
|
||||
factions_config.maximum_faction_inactivity = minetest.settings:get("maximum_faction_inactivity") or 604800
|
||||
factions_config.maximum_parcelless_faction_time = minetest.settings:get("maximum_parcelless_faction_time") or 10800
|
||||
factions_config.power = minetest.settings:get("power") or 0
|
||||
factions_config.maxpower = minetest.settings:get("maxpower") or 0
|
||||
factions_config.power_per_player = minetest.settings:get("power_per_player") or 0.125
|
||||
factions_config.powermax_per_player = minetest.settings:get("powermax_per_player") or 2
|
||||
factions_config.parcel_size = minetest.settings:get("parcel_size") or 16
|
||||
factions_config.protection_depth_height_limit = minetest.settings:get_bool("protection_depth_height_limit") or true
|
||||
factions_config.enable_power_per_player = minetest.settings:get_bool("power_per_playerb") or true
|
||||
factions_config.attack_parcel = minetest.settings:get_bool("attack_parcel") or false
|
||||
factions_config.faction_diplomacy = minetest.settings:get_bool("faction_diplomacy") or true
|
||||
factions_config.faction_diplomacy = minetest.settings:get_bool("faction_diplomacy") or false
|
||||
factions_config.protection_style = minetest.settings:get("protection_style") or "classic"
|
||||
--[[
|
||||
factions_config.protection_max_depth = -512
|
||||
factions_config.protection_max_height = 10000
|
||||
factions_config.power_per_parcel = 0.5
|
||||
factions_config.power_per_death = 0.25
|
||||
factions_config.power_per_tick = 0.125
|
||||
|
@ -29,8 +35,12 @@ factions_config.maximum_faction_inactivity = 604800
|
|||
factions_config.maximum_parcelless_faction_time = 10800
|
||||
factions_config.power = 0
|
||||
factions_config.maxpower = 0
|
||||
factions_config.power_per_player = 2
|
||||
factions_config.power_per_player = 0.125
|
||||
factions_config.powermax_per_player = 2
|
||||
factions_config.parcel_size = 16
|
||||
factions_config.protection_depth_height_limit = true
|
||||
factions_config.enable_power_per_player = true
|
||||
factions_config.attack_parcel = false
|
||||
factions_config.faction_diplomacy = true
|
||||
factions_config.faction_diplomacy = false
|
||||
factions_config.protection_style = "classic"
|
||||
--]]
|
|
@ -0,0 +1 @@
|
|||
default?
|
170
factions.lua
170
factions.lua
|
@ -14,6 +14,7 @@ factions.players = {}
|
|||
factions.factions = {}
|
||||
--- settings
|
||||
factions.protection_max_depth = factions_config.protection_max_depth
|
||||
factions.protection_max_height = factions_config.protection_max_height
|
||||
factions.power_per_parcel = factions_config.power_per_parcel
|
||||
factions.power_per_death = factions_config.power_per_death
|
||||
factions.power_per_tick = factions_config.power_per_tick
|
||||
|
@ -26,10 +27,14 @@ factions.maximum_parcelless_faction_time = factions_config.maximum_parcelless_fa
|
|||
factions.attack_parcel = factions_config.attack_parcel
|
||||
factions.faction_diplomacy = factions_config.faction_diplomacy
|
||||
factions.power_per_player = factions_config.power_per_player
|
||||
factions.powermax_per_player = factions_config.powermax_per_player
|
||||
factions.protection_depth_height_limit = factions_config.protection_depth_height_limit
|
||||
factions.enable_power_per_player = factions_config.enable_power_per_player
|
||||
factions.power = factions_config.power
|
||||
factions.maxpower = factions_config.maxpower
|
||||
factions.attack_parcel = factions_config.attack_parcel
|
||||
factions.parcel_size = factions_config.parcel_size
|
||||
factions.protection_style = factions_config.protection_style
|
||||
|
||||
-- clear mem.
|
||||
factions_config = nil
|
||||
|
@ -87,6 +92,10 @@ function factions.Faction:new(faction)
|
|||
usedpower = 0.,
|
||||
--! @brief list of player names
|
||||
players = {},
|
||||
--! @brief list of player names online
|
||||
onlineplayers = {},
|
||||
--! @brief list of player names offline
|
||||
offlineplayers = {},
|
||||
--! @brief table of ranks/permissions
|
||||
ranks = {["leader"] = factions.permissions,
|
||||
["moderator"] = {"claim", "playerslist", "build", "spawn"},
|
||||
|
@ -143,42 +152,24 @@ function factions.Faction.increase_power(self, power)
|
|||
if self.power > self.maxpower - self.usedpower then
|
||||
self.power = self.maxpower - self.usedpower
|
||||
end
|
||||
local playerslist = minetest.get_connected_players()
|
||||
for i in pairs(playerslist) do
|
||||
for player, _ in pairs(self.players) do
|
||||
local realplayer = playerslist[i]
|
||||
if realplayer:get_player_name() == player then
|
||||
updateHudPower(realplayer,self)
|
||||
end
|
||||
end
|
||||
for i in pairs(self.onlineplayers) do
|
||||
updateHudPower(minetest.get_player_by_name(i),self)
|
||||
end
|
||||
factions.save()
|
||||
end
|
||||
|
||||
function factions.Faction.decrease_power(self, power)
|
||||
self.power = self.power - power
|
||||
local playerslist = minetest.get_connected_players()
|
||||
for i in pairs(playerslist) do
|
||||
for player, _ in pairs(self.players) do
|
||||
local realplayer = playerslist[i]
|
||||
if realplayer:get_player_name() == player then
|
||||
updateHudPower(realplayer,self)
|
||||
end
|
||||
end
|
||||
for i in pairs(self.onlineplayers) do
|
||||
updateHudPower(minetest.get_player_by_name(i),self)
|
||||
end
|
||||
factions.save()
|
||||
end
|
||||
|
||||
function factions.Faction.increase_maxpower(self, power)
|
||||
self.maxpower = self.maxpower + power
|
||||
local playerslist = minetest.get_connected_players()
|
||||
for i in pairs(playerslist) do
|
||||
for player, _ in pairs(self.players) do
|
||||
local realplayer = playerslist[i]
|
||||
if realplayer:get_player_name() == player then
|
||||
updateHudPower(realplayer,self)
|
||||
end
|
||||
end
|
||||
for i in pairs(self.onlineplayers) do
|
||||
updateHudPower(minetest.get_player_by_name(i),self)
|
||||
end
|
||||
factions.save()
|
||||
end
|
||||
|
@ -188,27 +179,15 @@ function factions.Faction.decrease_maxpower(self, power)
|
|||
if self.maxpower < 0. then -- should not happen
|
||||
self.maxpower = 0.
|
||||
end
|
||||
local playerslist = minetest.get_connected_players()
|
||||
for i in pairs(playerslist) do
|
||||
for player, _ in pairs(self.players) do
|
||||
local realplayer = playerslist[i]
|
||||
if realplayer:get_player_name() == player then
|
||||
updateHudPower(realplayer,self)
|
||||
end
|
||||
end
|
||||
for i in pairs(self.onlineplayers) do
|
||||
updateHudPower(minetest.get_player_by_name(i),self)
|
||||
end
|
||||
end
|
||||
|
||||
function factions.Faction.increase_usedpower(self, power)
|
||||
self.usedpower = self.usedpower + power
|
||||
local playerslist = minetest.get_connected_players()
|
||||
for i in pairs(playerslist) do
|
||||
for player, _ in pairs(self.players) do
|
||||
local realplayer = playerslist[i]
|
||||
if realplayer:get_player_name() == player then
|
||||
updateHudPower(realplayer,self)
|
||||
end
|
||||
end
|
||||
for i in pairs(self.onlineplayers) do
|
||||
updateHudPower(minetest.get_player_by_name(i),self)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -217,14 +196,8 @@ function factions.Faction.decrease_usedpower(self, power)
|
|||
if self.usedpower < 0. then
|
||||
self.usedpower = 0.
|
||||
end
|
||||
local playerslist = minetest.get_connected_players()
|
||||
for i in pairs(playerslist) do
|
||||
for player, _ in pairs(self.players) do
|
||||
local realplayer = playerslist[i]
|
||||
if realplayer:get_player_name() == player then
|
||||
updateHudPower(realplayer,self)
|
||||
end
|
||||
end
|
||||
for i in pairs(self.onlineplayers) do
|
||||
updateHudPower(minetest.get_player_by_name(i),self)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -256,17 +229,21 @@ function factions.Faction.add_player(self, player, rank)
|
|||
end
|
||||
end
|
||||
if notsame then
|
||||
self:increase_maxpower(factions.power_per_player)
|
||||
self:increase_power(factions.power_per_player)
|
||||
self:increase_maxpower(factions.powermax_per_player)
|
||||
self:decrease_usedpower(factions.power_per_player)
|
||||
end
|
||||
end
|
||||
local playerslist = minetest.get_connected_players()
|
||||
for i in pairs(playerslist) do
|
||||
local realplayer = playerslist[i]
|
||||
if realplayer:get_player_name() == player then
|
||||
createHudFactionName(realplayer,self.name)
|
||||
createHudPower(realplayer,self)
|
||||
break
|
||||
end
|
||||
local pdata = minetest.get_player_by_name(player)
|
||||
local ipc = pdata:is_player_connected(player)
|
||||
if ipc then
|
||||
createHudFactionName(pdata,self.name)
|
||||
createHudPower(pdata,self)
|
||||
self.offlineplayers[player] = nil
|
||||
self.onlineplayers[player] = 1
|
||||
else
|
||||
self.offlineplayers[player] = 1
|
||||
self.onlineplayers[player] = nil
|
||||
end
|
||||
factions.save()
|
||||
end
|
||||
|
@ -294,17 +271,17 @@ function factions.Faction.remove_player(self, player)
|
|||
end
|
||||
end
|
||||
if notsame then
|
||||
self:decrease_maxpower(factions.power_per_player)
|
||||
self:decrease_maxpower(factions.powermax_per_player)
|
||||
end
|
||||
end
|
||||
local playerslist = minetest.get_connected_players()
|
||||
for i in pairs(playerslist) do
|
||||
local realplayer = playerslist[i]
|
||||
if realplayer:get_player_name() == player then
|
||||
removeHud(realplayer,"factionName")
|
||||
removeHud(realplayer,"powerWatch")
|
||||
end
|
||||
local pdata = minetest.get_player_by_name(player)
|
||||
local ipc = pdata:is_player_connected(player)
|
||||
if ipc then
|
||||
removeHud(pdata,"factionName")
|
||||
removeHud(pdata,"powerWatch")
|
||||
end
|
||||
self.offlineplayers[player] = nil
|
||||
self.onlineplayers[player] = nil
|
||||
factions.save()
|
||||
end
|
||||
|
||||
|
@ -708,10 +685,12 @@ function factions.Faction.on_revoke_invite(self, player)
|
|||
minetest.chat_send_player(player, "You are no longer invited to faction "..self.name)
|
||||
end
|
||||
|
||||
--??????????????
|
||||
|
||||
function factions.get_parcel_pos(pos)
|
||||
return math.floor(pos.x / 16.)..","..math.floor(pos.z / 16.)
|
||||
if factions.protection_style == "classic" then
|
||||
return math.floor(pos.x / factions.parcel_size)..","..math.floor(pos.z / factions.parcel_size)
|
||||
elseif factions.protection_style == "pb-style" then
|
||||
return math.floor(pos.x / factions.parcel_size)..","..math.floor(pos.y / factions.parcel_size)..","..math.floor(pos.z / factions.parcel_size)
|
||||
end
|
||||
end
|
||||
|
||||
function factions.get_player_faction(playername)
|
||||
|
@ -737,6 +716,10 @@ function factions.get_faction(facname)
|
|||
end
|
||||
|
||||
function factions.get_faction_at(pos)
|
||||
local y = pos.y
|
||||
if factions.protection_depth_height_limit and (pos.y < factions.protection_max_depth or pos.y > factions.protection_max_height) then
|
||||
return nil
|
||||
end
|
||||
local parcelpos = factions.get_parcel_pos(pos)
|
||||
return factions.get_parcel_faction(parcelpos)
|
||||
end
|
||||
|
@ -910,27 +893,21 @@ end
|
|||
)
|
||||
|
||||
|
||||
factions.faction_tick = function()
|
||||
function factions.faction_tick()
|
||||
local now = os.time()
|
||||
for facname, faction in pairs(factions.factions) do
|
||||
if faction:is_online() then
|
||||
if factions.enable_power_per_player then
|
||||
local playerslist = minetest.get_connected_players()
|
||||
for i in pairs(playerslist) do
|
||||
local faction_name = factions.get_player_faction(playerslist[i])
|
||||
if facname == faction_name then
|
||||
increase_power(power_per_tick)
|
||||
end
|
||||
end
|
||||
local t = faction.onlineplayers
|
||||
local count = 0
|
||||
for _ in pairs(t) do count = count + 1 end
|
||||
faction:increase_power(factions.power_per_player*count)
|
||||
else
|
||||
faction:increase_power(factions.power_per_tick)
|
||||
end
|
||||
faction:increase_power(factions.power_per_tick)
|
||||
end
|
||||
if now - faction.last_logon > factions.maximum_faction_inactivity then
|
||||
if now - faction.last_logon > factions.maximum_faction_inactivity or (faction.no_parcel ~= -1 and now - faction.no_parcel > factions.maximum_parcelless_faction_time) then
|
||||
faction:disband()
|
||||
else
|
||||
if faction.no_parcel ~= -1 and now - faction.no_parcel > factions.maximum_parcelless_faction_time then
|
||||
faction:disband()
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -944,6 +921,9 @@ function(player)
|
|||
faction.last_logon = os.time()
|
||||
createHudFactionName(player,faction.name)
|
||||
createHudPower(player,faction)
|
||||
faction.offlineplayers[name] = nil
|
||||
faction.onlineplayers[name] = 1
|
||||
factions.save()
|
||||
end
|
||||
end
|
||||
)
|
||||
|
@ -951,8 +931,15 @@ end
|
|||
minetest.register_on_leaveplayer(
|
||||
function(player)
|
||||
removeHud(player,"factionLand")
|
||||
removeHud(player,"factionName")
|
||||
removeHud(player,"powerWatch")
|
||||
local name = player:get_player_name()
|
||||
local faction = factions.get_player_faction(name)
|
||||
if faction then
|
||||
removeHud(player,"factionName")
|
||||
removeHud(player,"powerWatch")
|
||||
faction.offlineplayers[name] = 1
|
||||
faction.onlineplayers[name] = nil
|
||||
factions.save()
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
|
@ -976,7 +963,8 @@ minetest.register_on_respawnplayer(
|
|||
|
||||
local default_is_protected = minetest.is_protected
|
||||
minetest.is_protected = function(pos, player)
|
||||
if pos.y < factions.protection_max_depth then
|
||||
local y = pos.y
|
||||
if factions.protection_depth_height_limit and (pos.y < factions.protection_max_depth or pos.y > factions.protection_max_height) then
|
||||
return false
|
||||
end
|
||||
if factions.disallow_edit_nofac and not player_faction then
|
||||
|
@ -997,7 +985,7 @@ minetest.is_protected = function(pos, player)
|
|||
end
|
||||
local player_wield = player_info:get_wielded_item()
|
||||
if player_wield:get_name() == "banners:death_banner" and player_faction then --todo: check for allies, maybe for permissions
|
||||
return not player_faction:has_permission(player, "claim") and player_faction.power > 0. and not parcel_faction.is_admin
|
||||
return not player_faction:has_permission(player, "claim") and player_faction.power > 0 and not parcel_faction.is_admin
|
||||
end
|
||||
-- no faction
|
||||
if not parcel_faction then
|
||||
|
@ -1015,5 +1003,13 @@ minetest.is_protected = function(pos, player)
|
|||
end
|
||||
end
|
||||
|
||||
hudUpdate()
|
||||
function factionUpdate()
|
||||
minetest.after(factions.tick_time,
|
||||
function()
|
||||
factions.faction_tick()
|
||||
factionUpdate()
|
||||
end)
|
||||
end
|
||||
|
||||
hudUpdateClaimInfo()
|
||||
factionUpdate()
|
26
hud.lua
26
hud.lua
|
@ -1,6 +1,6 @@
|
|||
hud_ids = {}
|
||||
|
||||
createHudfactionLand = function(player)
|
||||
function createHudfactionLand(player)
|
||||
local name = player:get_player_name()
|
||||
hud_ids[name .. "factionLand"] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
|
@ -13,7 +13,7 @@ createHudfactionLand = function(player)
|
|||
})
|
||||
end
|
||||
|
||||
createHudFactionName = function(player,factionname)
|
||||
function createHudFactionName(player,factionname)
|
||||
local name = player:get_player_name()
|
||||
local id_name = name .. "factionName"
|
||||
if not hud_ids[id_name] then
|
||||
|
@ -30,7 +30,7 @@ createHudFactionName = function(player,factionname)
|
|||
end
|
||||
end
|
||||
|
||||
createHudPower = function(player,faction)
|
||||
function createHudPower(player,faction)
|
||||
local name = player:get_player_name()
|
||||
local id_name = name .. "powerWatch"
|
||||
if not hud_ids[id_name] then
|
||||
|
@ -39,7 +39,7 @@ createHudPower = function(player,faction)
|
|||
name = "powerWatch",
|
||||
number = 0xFFFFFF,
|
||||
position = {x=0.9, y = .98},
|
||||
text = "Power "..faction.power.."/"..faction.maxpower - faction.usedpower.."/"..faction.maxpower,
|
||||
text = "Power "..faction.power.."/".. faction.usedpower .."/"..faction.maxpower,
|
||||
scale = {x=1, y=1},
|
||||
alignment = {x=-1, y=0},
|
||||
offset = {x = 0, y = 0}
|
||||
|
@ -47,15 +47,15 @@ createHudPower = function(player,faction)
|
|||
end
|
||||
end
|
||||
|
||||
updateHudPower = function(player,faction)
|
||||
function updateHudPower(player,faction)
|
||||
local name = player:get_player_name()
|
||||
local id_name = name .. "powerWatch"
|
||||
if hud_ids[id_name] then
|
||||
player:hud_change(hud_ids[id_name],"text","Power "..faction.power.."/"..faction.maxpower - faction.usedpower.."/"..faction.maxpower)
|
||||
player:hud_change(hud_ids[id_name],"text","Power "..faction.power.."/".. faction.usedpower .."/"..faction.maxpower)
|
||||
end
|
||||
end
|
||||
|
||||
removeHud = function(player,hudname)
|
||||
function removeHud(player,hudname)
|
||||
local name = player:get_player_name()
|
||||
local id_name = name .. hudname
|
||||
if hud_ids[id_name] then
|
||||
|
@ -64,7 +64,7 @@ removeHud = function(player,hudname)
|
|||
end
|
||||
end
|
||||
|
||||
hudUpdate = function()
|
||||
function hudUpdateClaimInfo()
|
||||
minetest.after(3,
|
||||
function()
|
||||
local playerslist = minetest.get_connected_players()
|
||||
|
@ -77,14 +77,6 @@ hudUpdate = function()
|
|||
player:hud_change(hud_ids[id_name],"text",(faction and faction.name) or "Wilderness")
|
||||
end
|
||||
end
|
||||
hudUpdate()
|
||||
end)
|
||||
end
|
||||
|
||||
factionUpdate = function()
|
||||
minetest.after(factions.tick_time,
|
||||
function()
|
||||
factions.faction_tick()
|
||||
factionUpdate()
|
||||
hudUpdateClaimInfo()
|
||||
end)
|
||||
end
|
4
ip.lua
4
ip.lua
|
@ -5,7 +5,7 @@ factions_ip.player_ips = {}
|
|||
local factions_worldid = minetest.get_worldpath()
|
||||
|
||||
function factions_ip.save()
|
||||
local file,error = io.open(factions_worldid .. "/" .. "factions_iplist.conf","w")
|
||||
local file,error = io.open(factions_worldid .. "/" .. "factions_iplist.txt","w")
|
||||
|
||||
if file ~= nil then
|
||||
file:write(minetest.serialize(factions_ip.player_ips))
|
||||
|
@ -16,7 +16,7 @@ function factions_ip.save()
|
|||
end
|
||||
|
||||
function factions_ip.load()
|
||||
local file,error = io.open(factions_worldid .. "/" .. "factions_iplist.conf","r")
|
||||
local file,error = io.open(factions_worldid .. "/" .. "factions_iplist.txt","r")
|
||||
|
||||
if file ~= nil then
|
||||
local raw_data = file:read("*a")
|
||||
|
|
52
nodes.lua
52
nodes.lua
|
@ -69,3 +69,55 @@ minetest.register_craft({
|
|||
recipe = {"default:chest_locked", "default:steel_ingot"}
|
||||
})
|
||||
|
||||
-- Code below was copied from TenPlus1's protector mod(MIT) and changed up a bit.
|
||||
|
||||
local x = math.floor(factions.parcel_size / 2.1)
|
||||
|
||||
minetest.register_node("factions:display_node", {
|
||||
tiles = {"factions_display.png"},
|
||||
use_texture_alpha = true,
|
||||
walkable = false,
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
-- sides
|
||||
{-(x+.55), -(x+.55), -(x+.55), -(x+.45), (x+.55), (x+.55)},
|
||||
{-(x+.55), -(x+.55), (x+.45), (x+.55), (x+.55), (x+.55)},
|
||||
{(x+.45), -(x+.55), -(x+.55), (x+.55), (x+.55), (x+.55)},
|
||||
{-(x+.55), -(x+.55), -(x+.55), (x+.55), (x+.55), -(x+.45)},
|
||||
-- top
|
||||
{-(x+.55), (x+.45), -(x+.55), (x+.55), (x+.55), (x+.55)},
|
||||
-- bottom
|
||||
{-(x+.55), -(x+.55), -(x+.55), (x+.55), -(x+.45), (x+.55)},
|
||||
-- middle (surround parcel)
|
||||
{-.55,-.55,-.55, .55,.55,.55},
|
||||
},
|
||||
},
|
||||
selection_box = {
|
||||
type = "regular",
|
||||
},
|
||||
paramtype = "light",
|
||||
groups = {dig_immediate = 3, not_in_creative_inventory = 1},
|
||||
drop = "",
|
||||
})
|
||||
|
||||
minetest.register_entity("factions:display", {
|
||||
physical = false,
|
||||
collisionbox = {0, 0, 0, 0, 0, 0},
|
||||
visual = "wielditem",
|
||||
visual_size = {x = 1.0 / 1.5, y = 1.0 / 1.5},
|
||||
textures = {"factions:display_node"},
|
||||
timer = 0,
|
||||
|
||||
on_step = function(self, dtime)
|
||||
|
||||
self.timer = self.timer + dtime
|
||||
|
||||
if self.timer > 6 then
|
||||
self.object:remove()
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
-- End
|
||||
|
|
|
@ -1,14 +1,16 @@
|
|||
[ValueSettings]
|
||||
|
||||
# The max depth of protection from a parcel.
|
||||
protection_max_depth (Protection max depth) float -512
|
||||
protection_max_depth (Protection max depth) float 512
|
||||
# The max height of protection from a parcel.
|
||||
protection_max_height (Protection max height) float 10000
|
||||
# Cost of power to claim a parcel of land.
|
||||
power_per_parcel (Power-per-parcel) float 0.5
|
||||
# Power lost on death.
|
||||
power_per_death (Power-per-death) float 0.25
|
||||
# Power regeneration rate.
|
||||
power_per_tick (Power-per-tick) float 0.125
|
||||
# Faction timer. This timer regenerates power if the faction members are online.
|
||||
# Faction timer. This timer regenerates power.
|
||||
tick_time (Faction timer) float 60
|
||||
# Not in use.
|
||||
power_per_attack (Power-per-attack) float 10
|
||||
|
@ -21,11 +23,15 @@ maximum_faction_inactivity (Maximum faction inactivity) int 604800
|
|||
# The maximum amount of time for a parcelless faction to disban.
|
||||
maximum_parcelless_faction_time (Maximum parcelless faction time) int 10800
|
||||
# Power of a starting faction (needed for parcel claiming).
|
||||
power (Starting power) float 2
|
||||
# Maximum power of a faction.
|
||||
maxpower (Maximum power) float 2
|
||||
power (Starting power) float 0
|
||||
# Maximum power of a starting faction.
|
||||
maxpower (Starting Maximum power) float 0
|
||||
# How much power the players make.
|
||||
power_per_player (power-per-player) float 10
|
||||
power_per_player (power-per-player) float 0.125
|
||||
# How much max power is created per new player.
|
||||
powermax_per_player (powermax-per-player) float 2
|
||||
# parcel size
|
||||
parcel_size (parcel-size) float 16
|
||||
|
||||
[BoolSettings]
|
||||
|
||||
|
@ -34,4 +40,10 @@ power_per_playerb (Enable power-per-player) bool true
|
|||
# Enable or disabled attack_parcel function.
|
||||
attack_parcel (Enable attack parcel) bool false
|
||||
# Enable or disabled faction diplomacy.
|
||||
faction_diplomacy (Enable faction diplomacy) bool false
|
||||
faction_diplomacy (Enable faction diplomacy) bool false
|
||||
# Enable or disabled the max depth and height limit for a parcel
|
||||
protection_depth_height_limit (Enable protection depth height limit) bool true
|
||||
|
||||
[StringSettings]
|
||||
# Set the way that the parcel protection works (classic,pb-style).
|
||||
protection_style (Protection style) string classic
|
BIN
textures/factions_display.png
Normal file
BIN
textures/factions_display.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 235 B |
2
textures/license.txt
Normal file
2
textures/license.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
following Textures created by Coder12a (CC BY-SA 3.0):
|
||||
factions_display.png
|
Loading…
Reference in New Issue
Block a user