Hud Sway - Lua
Hud Sway - Lua
15 (by aLTis)
--CONFIG
sway_hud = true
sway_amount = 1 -- how much the hud moves
sway_amount_horizontal = 1.25
walking_sway_amount = 0.5 -- how much the hud moves when you walk left or
right
vertical_velocity_amount = 0.8 -- how much the hud moves when player jumps or
falls
use_direct_input = true -- use if you want direct input from mouse/controller
to affect the hud
enable_in_vehicles = false -- only works if mouse input is enabled
inverse_direction = true
--END OF CONFIG
clua_version = 2.042
local player_alive_timer = 5
set_callback("tick", "OnTick")
set_callback("frame", "OnFrame")
set_callback("map load", "OnMapLoad")
set_callback("unload", "OnUnload")
function OnMapLoad()
HUD = nil
WEAPONS = {}
player_alive_timer = 5
end
function OnFrame()
if sway_hud and HUD then
local time_after_tick = ticks() - math.floor(ticks())
--console_out(aim_left_amount_previous )
x = (aim_left_amount_previous*(1-time_after_tick)
+aim_left_amount*time_after_tick)*horizontal_sway
z = (aim_down_amount_previous*(1-time_after_tick)
+aim_down_amount*time_after_tick)*vertical_sway
if x > 0 then
x = math.floor(x)
elseif x < 0 then
x = math.ceil(x)
end
if z > 0 then
z = math.floor(z)
elseif z < 0 then
z = math.ceil(z)
end
function GetWPHI(meta_id)
local tag = get_tag(meta_id)
if tag then
local tag_data = read_dword(tag + 0x14)
local tag_name = read_string(read_dword(tag + 0x10))
local direction = 1
if anchor==1 or anchor==3 then
direction = -1
end
HUD[tag_data] = {}
HUD[tag_data][0x60] = {}
HUD[tag_data][0x60]["direction"] = direction
HUD[tag_data][0x60]["direction_y"] = -1
HUD[tag_data][0x60]["count"] = read_u32(tag_data + 0x60 + 0)
HUD[tag_data][0x60]["address"] = read_u32(tag_data + 0x60 + 4)
HUD[tag_data][0x60]["size"] = 180
HUD[tag_data][0x60]["x"] = 0x24
HUD[tag_data][0x60]["y"] = 0x26
HUD[tag_data][0x60]["coord"] = {}
for i=0,HUD[tag_data][0x60]["count"]-1 do
local struct = HUD[tag_data][0x60]["address"] + i *
HUD[tag_data][0x60]["size"]
--if anchor ~= 4 then
HUD[tag_data][0x60]["coord"][i*2] = read_short(struct
+ HUD[tag_data][0x60]["x"])
HUD[tag_data][0x60]["coord"][i*2+1] =
read_short(struct + HUD[tag_data][0x60]["y"])
if anchor == 4 then
local bitmap = read_string(read_dword(struct +
0x4C))
if HUD[tag_data][0x60]["coord"][i*2] == 0 and
HUD[tag_data][0x60]["coord"][i*2+1] == 0 or string.find(bitmap, "dynamic") then
HUD[tag_data][0x60] = nil
break
end
end
--else
--local bitmap = read_string(read_dword(struct +
0x4C))
--if string.find(bitmap, "visor") then
-- HUD[tag_data][0x60]["coord"][i*2] =
read_short(struct + HUD[tag_data][0x60]["x"])
-- HUD[tag_data][0x60]["coord"][i*2+1] =
read_short(struct + HUD[tag_data][0x60]["y"])
--else
-- HUD[tag_data][0x60] = nil
--end
--end
end
HUD[tag_data][0x6C] = {}
HUD[tag_data][0x6C]["direction"] = direction
HUD[tag_data][0x6C]["direction_y"] = -1
HUD[tag_data][0x6C]["count"] = read_u32(tag_data + 0x6C + 0)
HUD[tag_data][0x6C]["address"] = read_u32(tag_data + 0x6C + 4)
HUD[tag_data][0x6C]["size"] = 180
HUD[tag_data][0x6C]["x"] = 0x24
HUD[tag_data][0x6C]["y"] = 0x26
HUD[tag_data][0x6C]["coord"] = {}
for i=0,HUD[tag_data][0x6C]["count"]-1 do
local struct = HUD[tag_data][0x6C]["address"] + i *
HUD[tag_data][0x6C]["size"]
HUD[tag_data][0x6C]["coord"][i*2] = read_word(struct +
HUD[tag_data][0x6C]["x"])
HUD[tag_data][0x6C]["coord"][i*2+1] = read_short(struct +
HUD[tag_data][0x6C]["y"])
if anchor == 4 and HUD[tag_data][0x6C]["coord"][i*2] == 0 and
HUD[tag_data][0x6C]["coord"][i*2+1] == 0 then
HUD[tag_data][0x6C] = nil
break
end
end
HUD[tag_data][0x78] = {}
HUD[tag_data][0x78]["direction"] = direction
HUD[tag_data][0x78]["direction_y"] = -1
HUD[tag_data][0x78]["count"] = read_u32(tag_data + 0x78 + 0)
HUD[tag_data][0x78]["address"] = read_u32(tag_data + 0x78 + 4)
HUD[tag_data][0x78]["size"] = 160
HUD[tag_data][0x78]["x"] = 0x24
HUD[tag_data][0x78]["y"] = 0x26
HUD[tag_data][0x78]["coord"] = {}
for i=0,HUD[tag_data][0x78]["count"]-1 do
local struct = HUD[tag_data][0x78]["address"] + i *
HUD[tag_data][0x78]["size"]
HUD[tag_data][0x78]["coord"][i*2] = read_short(struct +
HUD[tag_data][0x78]["x"])
HUD[tag_data][0x78]["coord"][i*2+1] = read_short(struct +
HUD[tag_data][0x78]["y"])
end
function GetWeaponHUD(meta_id)
local tag = get_tag(tonumber(meta_id))
if tag and HUD ~= nil then
tag = read_dword(tag + 0x14)
local hud = read_dword(tag + 0x480 + 0xC)
if hud ~= nil then
GetWPHI(hud, 1)
end
end
return false
end
function OnTick()
if sway_hud then
if tonumber(ticks()) < 15 then return end
aim_left_amount_previous = aim_left_amount
aim_down_amount_previous = aim_down_amount
if use_direct_input and (enable_in_vehicles or no_vehicle) then
if desired_aim ~= read_float(player + 0x230) then
local mouse_left = -
read_long(mouse_input_address)*0.01
local mouse_down = -read_long(mouse_input_address +
4)*0.01
controller_rs_down = 0
controller_rs_left = 0
if no_vehicle then
aim_left_amount = aim_left_amount +
read_float(fp_anim_address + 60)*walking_sway_amount
end
if inverse_direction then
aim_left_amount = -aim_left_amount
aim_down_amount = -aim_down_amount
end
aim_down_amount = aim_down_amount +
z_vel_change*vertical_velocity_amount
end
z_vel_prev = z_vel
else
aim_left_amount_previous = 0
aim_down_amount_previous = 0
aim_left_amount = 0
aim_down_amount = 0
z_vel_prev = 0
player_alive_timer = 5
return
end
end
end
function GetHUD()
HUD = {}
local tag_count = read_u32(0x4044000C)
for i = 0,tag_count-1 do
local tag = get_tag(i)
local tag_class = read_u32(tag)
local tag_data = read_u32(tag + 0x14)
local tag_name = read_string(read_dword(tag + 0x10))
-- unhi
if tag_class == 0x756E6869 and tag_name ~= "taunts\\wheel_selection"
then
local anchor = read_short(tag_data)
local direction = 1
local direction_y = 1
if anchor==1 or anchor==3 then
direction = -1
end
if anchor==0 or anchor==1 or anchor==4 then
direction_y = -1
end
HUD[tag_data] = {}
local bitmap = read_string(read_dword(tag_data + 0x4C))
if bitmap ~= "bourrin\\hud\\light\\weapons\\circle" then
HUD[tag_data][0x24] = {}
HUD[tag_data][0x24]["coord"] = read_i16(tag_data + 0x24)
HUD[tag_data][0x24]["direction"] = direction
HUD[tag_data][0x24]["type"] = 0
HUD[tag_data][0x26] = {}
HUD[tag_data][0x26]["coord"] = read_i16(tag_data + 0x26)
HUD[tag_data][0x26]["direction"] = direction_y
HUD[tag_data][0x26]["type"] = 1
end
HUD[tag_data][0xF4] = {}
HUD[tag_data][0xF4]["coord"] = read_i16(tag_data + 0xF4)
HUD[tag_data][0xF4]["direction"] = direction
HUD[tag_data][0xF4]["type"] = 0
HUD[tag_data][0xF6] = {}
HUD[tag_data][0xF6]["coord"] = read_i16(tag_data + 0xF6)
HUD[tag_data][0xF6]["direction"] = direction_y
HUD[tag_data][0xF6]["type"] = 1
HUD[tag_data][0x8C] = {}
HUD[tag_data][0x8C]["coord"] = read_i16(tag_data + 0x8C)
HUD[tag_data][0x8C]["direction"] = direction
HUD[tag_data][0x8C]["type"] = 0
HUD[tag_data][0x8E] = {}
HUD[tag_data][0x8E]["coord"] = read_i16(tag_data + 0x8E)
HUD[tag_data][0x8E]["direction"] = direction_y
HUD[tag_data][0x8E]["type"] = 1
HUD[tag_data][0x1E4] = {}
HUD[tag_data][0x1E4]["coord"] = read_i16(tag_data + 0x1E4)
HUD[tag_data][0x1E4]["direction"] = direction
HUD[tag_data][0x1E4]["type"] = 0
HUD[tag_data][0x1E6] = {}
HUD[tag_data][0x1E6]["coord"] = read_i16(tag_data + 0x1E6)
HUD[tag_data][0x1E6]["direction"] = direction_y
HUD[tag_data][0x1E6]["type"] = 1
HUD[tag_data][0x17C] = {}
HUD[tag_data][0x17C]["coord"] = read_i16(tag_data + 0x17C)
HUD[tag_data][0x17C]["direction"] = direction
HUD[tag_data][0x17C]["type"] = 0
HUD[tag_data][0x17E] = {}
HUD[tag_data][0x17E]["coord"] = read_i16(tag_data + 0x17E)
HUD[tag_data][0x17E]["direction"] = direction_y
HUD[tag_data][0x17E]["type"] = 1
HUD[tag_data][0x26C] = {}
HUD[tag_data][0x26C]["coord"] = read_i16(tag_data + 0x26C)
HUD[tag_data][0x26C]["direction"] = 1
HUD[tag_data][0x26C]["type"] = 0
HUD[tag_data][0x26E] = {}
HUD[tag_data][0x26E]["coord"] = read_i16(tag_data + 0x26E)
HUD[tag_data][0x26E]["direction"] = 1
HUD[tag_data][0x26E]["type"] = 1
HUD[tag_data][0x2D4] = {}
HUD[tag_data][0x2D4]["coord"] = read_i16(tag_data + 0x2D4)
HUD[tag_data][0x2D4]["direction"] = 1
HUD[tag_data][0x2D4]["type"] = 0
HUD[tag_data][0x2D6] = {}
HUD[tag_data][0x2D6]["coord"] = read_i16(tag_data + 0x2D6)
HUD[tag_data][0x2D6]["direction"] = 1
HUD[tag_data][0x2D6]["type"] = 1
HUD[tag_data][0x35C] = {}
HUD[tag_data][0x35C]["coord"] = read_i16(tag_data + 0x35C)
HUD[tag_data][0x35C]["direction"] = 1
HUD[tag_data][0x35C]["type"] = 0
HUD[tag_data][0x35E] = {}
HUD[tag_data][0x35E]["coord"] = read_i16(tag_data + 0x35E)
HUD[tag_data][0x35E]["direction"] = 1
HUD[tag_data][0x35E]["type"] = 1
HUD[tag_data][0x3CC] = {}
HUD[tag_data][0x3CC]["direction"] = direction
HUD[tag_data][0x3CC]["direction_y"] = -1
HUD[tag_data][0x3CC]["count"] = read_u32(tag_data + 0x3CC + 0)
HUD[tag_data][0x3CC]["address"] = read_u32(tag_data + 0x3CC + 4)
HUD[tag_data][0x3CC]["size"] = 324
HUD[tag_data][0x3CC]["x"] = 0x14
HUD[tag_data][0x3CC]["y"] = 0x16
HUD[tag_data][0x3CC]["x2"] = 0x7C
HUD[tag_data][0x3CC]["y2"] = 0x7E
HUD[tag_data][0x3CC]["coord"] = {}
for i=0,HUD[tag_data][0x3CC]["count"]-1 do
local struct = HUD[tag_data][0x3CC]["address"] + i *
HUD[tag_data][0x3CC]["size"]
HUD[tag_data][0x3CC]["coord"][i*4] = read_short(struct +
HUD[tag_data][0x3CC]["x"])
HUD[tag_data][0x3CC]["coord"][i*4+1] = read_short(struct +
HUD[tag_data][0x3CC]["y"])
HUD[tag_data][0x3CC]["coord"][i*4+2] = read_short(struct +
HUD[tag_data][0x3CC]["x2"])
HUD[tag_data][0x3CC]["coord"][i*4+3] = read_short(struct +
HUD[tag_data][0x3CC]["y2"])
end
-- grhi
elseif tag_class == 0x67726869 then
local anchor = read_short(tag_data)
local direction = 1
if anchor==1 or anchor==3 then
direction = -1
end
HUD[tag_data] = {}
HUD[tag_data][0x24] = {}
HUD[tag_data][0x24]["coord"] = read_i16(tag_data + 0x24)
HUD[tag_data][0x24]["direction"] = direction
HUD[tag_data][0x24]["type"] = 0
HUD[tag_data][0x26] = {}
HUD[tag_data][0x26]["coord"] = read_i16(tag_data + 0x26)
HUD[tag_data][0x26]["direction"] = -1
HUD[tag_data][0x26]["type"] = 1
HUD[tag_data][0x8C] = {}
HUD[tag_data][0x8C]["coord"] = read_i16(tag_data + 0x8C)
HUD[tag_data][0x8C]["direction"] = direction
HUD[tag_data][0x8C]["type"] = 0
HUD[tag_data][0x8E] = {}
HUD[tag_data][0x8E]["coord"] = read_i16(tag_data + 0x8E)
HUD[tag_data][0x8E]["direction"] = -1
HUD[tag_data][0x8E]["type"] = 1
HUD[tag_data][0xF4] = {}
HUD[tag_data][0xF4]["coord"] = read_i16(tag_data + 0xF4)
HUD[tag_data][0xF4]["direction"] = direction
HUD[tag_data][0xF4]["type"] = 0
HUD[tag_data][0xF6] = {}
HUD[tag_data][0xF6]["coord"] = read_i16(tag_data + 0xF6)
HUD[tag_data][0xF6]["direction"] = -1
HUD[tag_data][0xF6]["type"] = 1
HUD[tag_data][0x15C] = {}
HUD[tag_data][0x15C]["direction"] = 1
HUD[tag_data][0x15C]["direction_y"] = -1
HUD[tag_data][0x15C]["count"] = read_u32(tag_data + 0x15C + 0)
HUD[tag_data][0x15C]["address"] = read_u32(tag_data + 0x15C + 4)
HUD[tag_data][0x15C]["size"] = 136
HUD[tag_data][0x15C]["x"] = 0x00
HUD[tag_data][0x15C]["y"] = 0x02
HUD[tag_data][0x15C]["coord"] = {}
for i=0,HUD[tag_data][0x15C]["count"]-1 do
local struct = HUD[tag_data][0x15C]["address"] + i *
HUD[tag_data][0x15C]["size"]
HUD[tag_data][0x15C]["coord"][i*2] = read_short(struct +
HUD[tag_data][0x15C]["x"])
HUD[tag_data][0x15C]["coord"][i*2+1] = read_short(struct +
HUD[tag_data][0x15C]["y"])
end
end
end
return false
end
function OnUnload()
if HUD==nil then return end