Add: two clear funcs
parent
10dffcd88a
commit
482edc49d7
175
api.lua
175
api.lua
|
@ -11,12 +11,15 @@ local new = vector.new
|
|||
local floor = math.floor
|
||||
local y = 0
|
||||
|
||||
-- Drops an item at the player's position.
|
||||
-- Drops an item at the given or player's position.
|
||||
function pvp_revamped.drop(player, item, pos)
|
||||
-- Check if the param is true or not.
|
||||
if not pos then
|
||||
-- Get the player's position.
|
||||
pos = player:get_pos()
|
||||
end
|
||||
|
||||
-- Create the item.
|
||||
local obj = add_item(pos, item)
|
||||
|
||||
if obj then
|
||||
|
@ -26,6 +29,7 @@ end
|
|||
|
||||
-- Get or create player data.
|
||||
function pvp_revamped.get_player_data(name)
|
||||
-- Get or set the table.
|
||||
local data = player_data[name] or {}
|
||||
|
||||
if not player_data[name] then
|
||||
|
@ -37,6 +41,7 @@ end
|
|||
|
||||
local get_player_data = pvp_revamped.get_player_data
|
||||
|
||||
-- Create the wield shield entity and attach it to the player.
|
||||
function pvp_revamped.create_wield_shield(player, name, bone, itemname, groups)
|
||||
local object = add_entity(player:get_pos(), "pvp_revamped:shield", name)
|
||||
|
||||
|
@ -120,6 +125,51 @@ local function remove_hits(player, name)
|
|||
hit_data = nil
|
||||
end
|
||||
|
||||
function pvp_revamped.clear_blockdata(block, player, name)
|
||||
if block then
|
||||
local on_block_deactivated = block.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
if not name then
|
||||
name = player:get_player_name()
|
||||
end
|
||||
|
||||
-- Remove block data.
|
||||
player_data[name].block = nil
|
||||
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(player, "pvp_revamped:block_pool")
|
||||
end
|
||||
end
|
||||
|
||||
function pvp_revamped.clear_shielddata(shield, player, name)
|
||||
if shield then
|
||||
on_block_deactivated = shield.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
if not name then
|
||||
name = player:get_player_name()
|
||||
end
|
||||
|
||||
-- Remove shield block data.
|
||||
player_data[name].shield = nil
|
||||
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(player, "pvp_revamped:shield_pool")
|
||||
end
|
||||
end
|
||||
|
||||
local clear_blockdata = pvp_revamped.clear_blockdata
|
||||
local clear_shielddata = pvp_revamped.clear_shielddata
|
||||
|
||||
-- Helper function to check and set the dodge cooldown.
|
||||
function pvp_revamped.dodge(name, player, number)
|
||||
local dodge_data = get_player_data(name)
|
||||
|
@ -129,32 +179,9 @@ function pvp_revamped.dodge(name, player, number)
|
|||
player:set_properties{damage_texture_modifier = ""}
|
||||
-- Clear out any hit data on dodge.
|
||||
remove_hits(player, name)
|
||||
clear_blockdata(dodge_data.block, player, name)
|
||||
clear_shielddata(dodge_data.shield, player, name)
|
||||
|
||||
if dodge_data.block then
|
||||
local on_block_deactivated = dodge_data.block.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
-- Remove shield and block.
|
||||
dodge_data.block = nil
|
||||
end
|
||||
|
||||
if dodge_data.shield then
|
||||
on_block_deactivated = dodge_data.shield.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
dodge_data.shield = nil
|
||||
end
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(player, "pvp_revamped:block_pool")
|
||||
remove_text_center(player, "pvp_revamped:shield_pool")
|
||||
-- Display words invincible to player.
|
||||
create_hud_text_center(player, "pvp_revamped:dodge", "INVINCIBLE")
|
||||
elseif dodge_data.dodge and not dodge_data.dodge[number] then
|
||||
|
@ -162,33 +189,9 @@ function pvp_revamped.dodge(name, player, number)
|
|||
player:set_properties{damage_texture_modifier = ""}
|
||||
-- Clear out any hit data on dodge.
|
||||
remove_hits(player, name)
|
||||
clear_blockdata(dodge_data.block, player, name)
|
||||
clear_shielddata(dodge_data.shield, player, name)
|
||||
|
||||
if dodge_data.block then
|
||||
local on_block_deactivated = dodge_data.block.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
-- Remove shield and block.
|
||||
dodge_data.block = nil
|
||||
end
|
||||
|
||||
if dodge_data.shield then
|
||||
on_block_deactivated = dodge_data.shield.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
dodge_data.shield = nil
|
||||
end
|
||||
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(player, "pvp_revamped:block_pool")
|
||||
remove_text_center(player, "pvp_revamped:shield_pool")
|
||||
-- Display words invincible to player.
|
||||
create_hud_text_center(player, "pvp_revamped:dodge", "INVINCIBLE")
|
||||
end
|
||||
|
@ -203,32 +206,9 @@ function pvp_revamped.barrel_roll(name, player, number, x, z)
|
|||
player:set_properties{damage_texture_modifier = ""}
|
||||
-- Clear out any hit data on barrel roll.
|
||||
remove_hits(player, name)
|
||||
-- Remove shield and block.
|
||||
if barrel_roll_data.block then
|
||||
local on_block_deactivated = barrel_roll_data.block.on_block_deactivated
|
||||
clear_blockdata(barrel_roll_data.block, player, name)
|
||||
clear_shielddata(barrel_roll_data.shield, player, name)
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
barrel_roll_data.block = nil
|
||||
end
|
||||
|
||||
if barrel_roll_data.shield then
|
||||
on_block_deactivated = barrel_roll_data.shield.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
barrel_roll_data.shield = nil
|
||||
end
|
||||
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(player, "pvp_revamped:block_pool")
|
||||
remove_text_center(player, "pvp_revamped:shield_pool")
|
||||
-- Display words invincible to player.
|
||||
create_hud_text_center(player, "pvp_revamped:barrel_roll", "INVINCIBLE")
|
||||
elseif barrel_roll_data.barrel_roll and not barrel_roll_data.barrel_roll[number] then
|
||||
|
@ -236,33 +216,9 @@ function pvp_revamped.barrel_roll(name, player, number, x, z)
|
|||
player:set_properties{damage_texture_modifier = ""}
|
||||
-- Clear out any hit data on barrel roll.
|
||||
remove_hits(player, name)
|
||||
|
||||
-- Remove shield and block.
|
||||
if barrel_roll_data.block then
|
||||
local on_block_deactivated = barrel_roll_data.block.on_block_deactivated
|
||||
clear_blockdata(barrel_roll_data.block, player, name)
|
||||
clear_shielddata(barrel_roll_data.shield, player, name)
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
barrel_roll_data.block = nil
|
||||
end
|
||||
|
||||
if barrel_roll_data.shield then
|
||||
on_block_deactivated = barrel_roll_data.shield.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
barrel_roll_data.shield = nil
|
||||
end
|
||||
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(player, "pvp_revamped:block_pool")
|
||||
remove_text_center(player, "pvp_revamped:shield_pool")
|
||||
-- Display words invincible to player.
|
||||
create_hud_text_center(player, "pvp_revamped:barrel_roll", "INVINCIBLE")
|
||||
else
|
||||
|
@ -326,23 +282,12 @@ function pvp_revamped.shield_inv(user, name, player_pdata, data)
|
|||
on_hasty_guard = data_shield.on_hasty_guard
|
||||
}
|
||||
|
||||
if data.block then
|
||||
local on_block_deactivated = data.block.on_block_deactivated
|
||||
clear_blockdata(data.block, user, name)
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(user)
|
||||
end
|
||||
|
||||
data.block = nil
|
||||
end
|
||||
player_data[name] = data
|
||||
|
||||
user:set_properties{damage_texture_modifier = ""}
|
||||
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(user, "pvp_revamped:block_pool")
|
||||
|
||||
-- Run user func if any.
|
||||
if on_block_activate then
|
||||
on_block_activate(user)
|
||||
|
|
|
@ -18,6 +18,8 @@ local player_data = pvp_revamped.player_data
|
|||
local player_persistent_data = pvp_revamped.player_persistent_data
|
||||
local create_hud_text_center = pvp_revamped.create_hud_text_center
|
||||
local remove_text_center = pvp_revamped.remove_text_center
|
||||
local clear_blockdata = pvp_revamped.clear_blockdata
|
||||
local clear_shielddata = pvp_revamped.clear_shielddata
|
||||
local get_player_information = minetest.get_player_information
|
||||
local get_player_by_name = minetest.get_player_by_name
|
||||
local get_us_time = minetest.get_us_time
|
||||
|
@ -59,16 +61,7 @@ minetest.register_globalstep(function(dtime)
|
|||
-- Revert the damage texture modifier.
|
||||
player:set_properties{damage_texture_modifier = pp_data.damage_texture_modifier}
|
||||
|
||||
local on_block_deactivated = block.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
v.block = nil
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(player, "pvp_revamped:block_pool")
|
||||
clear_blockdata(v.block, player, k)
|
||||
end
|
||||
|
||||
active = true
|
||||
|
@ -96,16 +89,7 @@ minetest.register_globalstep(function(dtime)
|
|||
-- Revert the damage texture modifier.
|
||||
player:set_properties{damage_texture_modifier = pp_data.damage_texture_modifier}
|
||||
|
||||
local on_block_deactivated = shield.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
v.shield = nil
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(player, "pvp_revamped:shield_pool")
|
||||
clear_shielddata(v.shield, player, k)
|
||||
end
|
||||
|
||||
local entity = v.entity
|
||||
|
@ -217,8 +201,7 @@ minetest.register_globalstep(function(dtime)
|
|||
elseif j < 5 and l.time + barrel_roll_cooldown + player_lag < time then
|
||||
v.barrel_roll[j] = nil
|
||||
elseif l.time + barrel_roll_duration + player_lag > time then
|
||||
|
||||
local re_x, re_z = rotate_point(player:get_look_horizontal(), x, z)
|
||||
local re_x, re_z = rotate_point(player:get_look_horizontal(), l.x, l.z)
|
||||
|
||||
player:add_player_velocity({x = re_x, y = 0, z = re_z})
|
||||
active_barrel_rolls = true
|
||||
|
|
|
@ -22,6 +22,8 @@ local player_data = pvp_revamped.player_data
|
|||
local player_persistent_data = pvp_revamped.player_persistent_data
|
||||
local create_hud_text_center = pvp_revamped.create_hud_text_center
|
||||
local remove_text_center = pvp_revamped.remove_text_center
|
||||
local clear_blockdata = pvp_revamped.clear_blockdata
|
||||
local clear_shielddata = pvp_revamped.clear_shielddata
|
||||
local shield_inv = pvp_revamped.shield_inv
|
||||
local registered_tools = minetest.registered_tools
|
||||
local get_us_time = minetest.get_us_time
|
||||
|
@ -160,19 +162,7 @@ minetest.register_on_mods_loaded(function()
|
|||
-- Write pool to hud.
|
||||
create_hud_text_center(user, "pvp_revamped:block_pool", block_pool)
|
||||
|
||||
if data.shield then
|
||||
local on_block_deactivated = data.shield.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(user)
|
||||
end
|
||||
|
||||
data.shield = nil
|
||||
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(user, "pvp_revamped:shield_pool")
|
||||
end
|
||||
clear_shielddata(data.shield, user, name)
|
||||
|
||||
-- Run user on_block_activate function.
|
||||
if on_block_activate then
|
||||
|
@ -236,33 +226,11 @@ minetest.register_on_mods_loaded(function()
|
|||
return old_on_drop(itemstack, dropper, pos)
|
||||
end
|
||||
|
||||
if data.block then
|
||||
local on_block_deactivated = data.block.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(dropper)
|
||||
end
|
||||
|
||||
data.block = nil
|
||||
|
||||
-- Remove un-used block hud element.
|
||||
remove_text_center(dropper, "pvp_revamped:block_pool")
|
||||
end
|
||||
clear_blockdata(data.block, dropper, name)
|
||||
|
||||
-- Only clear shield if it is not from the armor inv.
|
||||
if shield_data and not shield_data.armor_inv then
|
||||
local on_block_deactivated = shield_data.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(dropper)
|
||||
end
|
||||
|
||||
data.shield = nil
|
||||
|
||||
-- Remove shield pool hud element.
|
||||
remove_text_center(dropper, "pvp_revamped:shield_pool")
|
||||
clear_shielddata(data.shield, dropper, name)
|
||||
end
|
||||
|
||||
-- Tell the player that a toss is being charged up.
|
||||
|
@ -363,19 +331,7 @@ minetest.register_on_mods_loaded(function()
|
|||
on_hasty_guard = on_hasty_guard
|
||||
}
|
||||
|
||||
if data.block then
|
||||
local on_block_deactivated = data.block.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(user)
|
||||
end
|
||||
|
||||
data.block = nil
|
||||
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(user, "pvp_revamped:block_pool")
|
||||
end
|
||||
clear_blockdata(data.block, user, name)
|
||||
|
||||
player_data[name] = data
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
local player_data = pvp_revamped.player_data
|
||||
local player_persistent_data = pvp_revamped.player_persistent_data
|
||||
local remove_text_center = pvp_revamped.remove_text_center
|
||||
local clear_blockdata = pvp_revamped.clear_blockdata
|
||||
local clear_shielddata = pvp_revamped.clear_shielddata
|
||||
local drop = pvp_revamped.drop
|
||||
local get_player_by_name = minetest.get_player_by_name
|
||||
local new = vector.new
|
||||
|
@ -141,33 +143,10 @@ local function break_guard(player, name)
|
|||
|
||||
local pdata = player_data[name]
|
||||
|
||||
if pdata.shield then
|
||||
local on_block_deactivated = pdata.shield.on_block_deactivated
|
||||
clear_shielddata(pdata.shield, player, name)
|
||||
clear_blockdata(pdata.block, player, name)
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
player_data[name].shield = nil
|
||||
|
||||
-- Remove hud element.
|
||||
remove_text_center(player, "pvp_revamped:shield_pool")
|
||||
end
|
||||
|
||||
if pdata.block then
|
||||
local on_block_deactivated = pdata.block.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
player_data[name].block = nil
|
||||
|
||||
-- Remove hud element.
|
||||
remove_text_center(player, "pvp_revamped:block_pool")
|
||||
end
|
||||
player_data[name] = pdata
|
||||
end
|
||||
|
||||
minetest.register_on_placenode(function(pos, newnode, placer)
|
||||
|
|
31
punch.lua
31
punch.lua
|
@ -32,6 +32,8 @@ local hit_points = pvp_revamped.hit_points
|
|||
local create_hud_text_center = pvp_revamped.create_hud_text_center
|
||||
local remove_text_center = pvp_revamped.remove_text_center
|
||||
local point_arm = pvp_revamped.point_arm
|
||||
local clear_blockdata = pvp_revamped.clear_blockdata
|
||||
local clear_shielddata = pvp_revamped.clear_shielddata
|
||||
local registered_tools = minetest.registered_tools
|
||||
local raycast = minetest.raycast
|
||||
local get_us_time = minetest.get_us_time
|
||||
|
@ -775,33 +777,8 @@ local function punch(player, hitter, time_from_last_punch, tool_capabilities, di
|
|||
end
|
||||
end
|
||||
|
||||
if victim_data.block then
|
||||
local on_block_deactivated = victim_data.block.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
victim_data.block = nil
|
||||
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(player, "pvp_revamped:block_pool")
|
||||
end
|
||||
|
||||
if victim_data.shield then
|
||||
on_block_deactivated = victim_data.shield.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
victim_data.shield = nil
|
||||
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(player, "pvp_revamped:shield_pool")
|
||||
end
|
||||
clear_shielddata(victim_data.shield, player, name)
|
||||
clear_blockdata(victim_data.block, player, name)
|
||||
|
||||
-- Save new player data to the table.
|
||||
player_data[name] = victim_data
|
||||
|
|
Loading…
Reference in New Issue