downad's changes (#1)

Add option to allow monsters to damage players in non-PvP areas.
master
Tai Kedzierski 2018-01-16 12:43:37 +00:00 committed by GitHub
parent 443e009f8c
commit 0188945d0a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 3 deletions

View File

@ -5,6 +5,7 @@ Sets an area for PvP control.
Use safemode to make areas be safe zones; otherwise they are killzones by default.
## Config
in minetest.conf
* `pvp_areas.safemode`
* safemode = true --> PvP Control areas are safe zones

View File

@ -8,8 +8,10 @@ local pvp_areas_modname = minetest.get_current_modname()
local hasareasmod = minetest.get_modpath("areas")
local safemode = minetest.setting_getbool("pvp_areas.safemode")
local safemode = minetest.setting_getbool("pvp_areas.safemode") or false
local area_label = minetest.setting_get("pvp_areas.label") or "Defined area."
-- if false Mob does Damage
local mobsDoNoDamage = false
local pvp_areas_store = AreaStore()
pvp_areas_store:from_file(pvp_areas_worlddir .. "/pvp_areas_store.dat")
@ -112,19 +114,39 @@ local KILL_OK = false
local AREA_ACTIVATE = KILL_OK
local AREA_NOACTIVATE = KILL_NO
local savemodeToString = "FALSCH" -- only for debugging
if safemode then
AREA_ACTIVATE = KILL_NO
AREA_NOACTIVATE = KILL_OK
savemodeToString = "WAHR"
end
-- Register punchplayer callback.
minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, tool_capabilities, dir, damage)
local isPlayer = hitter:is_player()
if hitter:is_player() == false then
return mobsDoNoDamage -- if this is a MOB then give Damage
end
--[[
local IsPlayerToString = "PLAYER" -- only for debugging
if isplayer then
IsPlayerToString = "PLAYER" -- only for debugging
else
IsPlayerToString = "MOB" -- only for debugging
return mobsDoNoDamage -- if this is a MOB then give Damage
end
]]--
local playername = player:get_player_name()
for k, v in pairs(pvp_areas_store:get_areas_for_pos(player:getpos())) do
if k then
return KILL_NO
--minetest.chat_send_player(playername, "in loop - safemode"..savemodeToString.." isPlayer "..IsPlayerToString)
return AREA_ACTIVATE --KILL_NO
end
end
return KILL_OK
--minetest.chat_send_player(playername, "after - safemode"..savemodeToString.." isPlayer "..IsPlayerToString)
return AREA_NOACTIVATE --KILL_OK
end)
if hasareasmod then