Merge branch 'master' of https://github.com/MT-CTF/capturetheflag
This commit is contained in:
commit
7f75da82ff
5 changed files with 41 additions and 42 deletions
|
@ -446,12 +446,16 @@ function ctf.register_on_killedplayer(func)
|
||||||
table.insert(ctf.registered_on_killedplayer, func)
|
table.insert(ctf.registered_on_killedplayer, func)
|
||||||
end
|
end
|
||||||
|
|
||||||
ctf.registered_on_punchplayer = {}
|
function ctf.can_attack(player, hitter, time_from_last_punch, tool_capabilities, dir, damage, ...)
|
||||||
function ctf.register_on_punchplayer(func)
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
ctf.registered_on_attack = {}
|
||||||
|
function ctf.register_on_attack(func)
|
||||||
if ctf._mt_loaded then
|
if ctf._mt_loaded then
|
||||||
error("You can't register callbacks at game time!")
|
error("You can't register callbacks at game time!")
|
||||||
end
|
end
|
||||||
table.insert(ctf.registered_on_punchplayer, func)
|
table.insert(ctf.registered_on_attack, func)
|
||||||
end
|
end
|
||||||
|
|
||||||
local dead_players = {}
|
local dead_players = {}
|
||||||
|
@ -482,6 +486,12 @@ minetest.register_on_punchplayer(function(player, hitter,
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if ctf.can_attack(player, hitter, time_from_last_punch, tool_capabilities,
|
||||||
|
dir, damage, ...) == false
|
||||||
|
then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
local hp = player:get_hp()
|
local hp = player:get_hp()
|
||||||
if hp == 0 then
|
if hp == 0 then
|
||||||
return false
|
return false
|
||||||
|
@ -497,8 +507,8 @@ minetest.register_on_punchplayer(function(player, hitter,
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
for i = 1, #ctf.registered_on_punchplayer do
|
for i = 1, #ctf.registered_on_attack do
|
||||||
ctf.registered_on_punchplayer[i](
|
ctf.registered_on_attack[i](
|
||||||
player, hitter, time_from_last_punch,
|
player, hitter, time_from_last_punch,
|
||||||
tool_capabilities, dir, damage, ...
|
tool_capabilities, dir, damage, ...
|
||||||
)
|
)
|
||||||
|
|
|
@ -62,14 +62,17 @@ minetest.register_globalstep(function(delta)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
minetest.register_on_punchplayer(function(_, hitter)
|
local old_can_attack = ctf.can_attack
|
||||||
|
function ctf.can_attack(player, hitter, ...)
|
||||||
if ctf_match.is_in_build_time() then
|
if ctf_match.is_in_build_time() then
|
||||||
if hitter:is_player() then
|
if hitter:is_player() then
|
||||||
minetest.chat_send_player(hitter:get_player_name(), "Match hasn't started yet!")
|
minetest.chat_send_player(hitter:get_player_name(), "Match hasn't started yet!")
|
||||||
end
|
end
|
||||||
return true
|
return false
|
||||||
end
|
end
|
||||||
end)
|
|
||||||
|
return old_can_attack(player, hitter, ...)
|
||||||
|
end
|
||||||
|
|
||||||
ctf_match.register_on_build_time_start(function()
|
ctf_match.register_on_build_time_start(function()
|
||||||
minetest.chat_send_all(minetest.colorize("#fcca05", ("Prepare your base! Match starts in " ..
|
minetest.chat_send_all(minetest.colorize("#fcca05", ("Prepare your base! Match starts in " ..
|
||||||
|
|
|
@ -34,32 +34,30 @@ function ctf_respawn_immunity.update_effects(player)
|
||||||
-- end
|
-- end
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_on_punchplayer(function(player, hitter,
|
local old_can_attack = ctf.can_attack
|
||||||
time_from_last_punch, tool_capabilities, dir, damage)
|
function ctf.can_attack(player, hitter, ...)
|
||||||
if not player or not hitter then
|
if not player or not hitter then
|
||||||
return false
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local pname = player:get_player_name()
|
local pname = player:get_player_name()
|
||||||
local hname = hitter:get_player_name()
|
local hname = hitter:get_player_name()
|
||||||
local pteam = ctf.player(pname).team
|
|
||||||
local hteam = ctf.player(hname).team
|
|
||||||
|
|
||||||
if pteam ~= hteam then
|
if ctf_respawn_immunity.is_immune(player) then
|
||||||
if player and ctf_respawn_immunity.is_immune(player) then
|
|
||||||
minetest.chat_send_player(hname, minetest.colorize("#EE8822", pname ..
|
minetest.chat_send_player(hname, minetest.colorize("#EE8822", pname ..
|
||||||
" just respawned or joined," .. " and is immune to attacks!"))
|
" just respawned or joined," .. " and is immune to attacks!"))
|
||||||
return true
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
if hitter and ctf_respawn_immunity.is_immune(hitter) then
|
if ctf_respawn_immunity.is_immune(hitter) then
|
||||||
minetest.chat_send_player(hname, minetest.colorize("#FF8C00",
|
minetest.chat_send_player(hname, minetest.colorize("#FF8C00",
|
||||||
"Your immunity has ended because you attacked a player"))
|
"Your immunity has ended because you attacked a player"))
|
||||||
immune_players[hname] = nil
|
immune_players[hname] = nil
|
||||||
ctf_respawn_immunity.update_effects(hitter)
|
ctf_respawn_immunity.update_effects(hitter)
|
||||||
end
|
end
|
||||||
end
|
|
||||||
end)
|
return old_can_attack(player, hitter, ...)
|
||||||
|
end
|
||||||
|
|
||||||
minetest.register_on_joinplayer(ctf_respawn_immunity.set_immune)
|
minetest.register_on_joinplayer(ctf_respawn_immunity.set_immune)
|
||||||
minetest.register_on_respawnplayer(ctf_respawn_immunity.set_immune)
|
minetest.register_on_respawnplayer(ctf_respawn_immunity.set_immune)
|
||||||
|
|
|
@ -9,24 +9,12 @@ local COMBATLOG_SCORE_PENALTY = 10
|
||||||
--- Make suicides and combat logs award last puncher with kill
|
--- Make suicides and combat logs award last puncher with kill
|
||||||
--
|
--
|
||||||
|
|
||||||
minetest.register_on_punchplayer(function(player, hitter,
|
ctf.register_on_attack(function(player, hitter,
|
||||||
time_from_last_punch, tool_capabilities, dir, damage)
|
time_from_last_punch, tool_capabilities, dir, damage)
|
||||||
if player and hitter then
|
if player and hitter then
|
||||||
if ctf_respawn_immunity.is_immune(player) or ctf_match.is_in_build_time() then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local pname = player:get_player_name()
|
local pname = player:get_player_name()
|
||||||
local hname = hitter:get_player_name()
|
local hname = hitter:get_player_name()
|
||||||
|
|
||||||
local to = ctf.player(pname)
|
|
||||||
local from = ctf.player(hname)
|
|
||||||
|
|
||||||
if to.team == from.team and to.team ~= "" and
|
|
||||||
to.team ~= nil and to.name ~= from.name then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local hp = player:get_hp() - damage
|
local hp = player:get_hp() - damage
|
||||||
if hp <= 0 then
|
if hp <= 0 then
|
||||||
if potential_cowards[pname] then
|
if potential_cowards[pname] then
|
||||||
|
@ -39,7 +27,7 @@ minetest.register_on_punchplayer(function(player, hitter,
|
||||||
potential_cowards[hname] = nil
|
potential_cowards[hname] = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
return false
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if not potential_cowards[pname] then
|
if not potential_cowards[pname] then
|
||||||
|
|
|
@ -75,7 +75,7 @@ ctf.register_on_killedplayer(function(victim, killer, _, toolcaps)
|
||||||
kill_assist.reward_assists(victim, killer, reward)
|
kill_assist.reward_assists(victim, killer, reward)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
ctf.register_on_punchplayer(function(player, hitter, _, _, _, damage)
|
ctf.register_on_attack(function(player, hitter, _, _, _, damage)
|
||||||
kill_assist.add_assist(player:get_player_name(), hitter:get_player_name(), damage)
|
kill_assist.add_assist(player:get_player_name(), hitter:get_player_name(), damage)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue