! 10$ Resolver
! 10$ Resolver
function RebuildServerYaw(player)
local Animstate = GetAnimState(player)
if not Animstate then return 0 end
return NormalizeAngle(m_flGoalFeetYaw)
end
local Cache = {}
local JitterBuffer = 6
local Resolver = {
Jitter = { Jittering = false, JitterTicks = 0, StaticTicks = 0, YawCache = {},
JitterCache = 0, Difference = 0 },
Main = { Mode = 0, Side = 0, Angles = 0 }
}
local Cache = {}
Cache.FirstSinAngle = math.sin(DegToRad(Cache.FirstNormalizedAngle))
Cache.SecondSinAngle = math.sin(DegToRad(Cache.SecondNormalizedAngle))
Cache.FirstCosAngle = math.cos(DegToRad(Cache.FirstNormalizedAngle))
Cache.SecondCosAngle = math.cos(DegToRad(Cache.SecondNormalizedAngle))
Cache.AVGYaw = NormalizeAngle(RadToDeg(math.atan2((Cache.FirstSinAngle +
Cache.SecondSinAngle) / 2.0, (Cache.FirstCosAngle + Cache.SecondCosAngle) / 2.0)))
Cache.Difference = NormalizeAngle(Animstate.eye_angles_y - Cache.AVGYaw)
if Cache.Difference ~= 0.0 then Resolver.Main.Side = Cache.Difference > 0.0
and 1 or -1 else Resolver.Main.Side = 0 end
end
return Resolver.Main.Side
end
client.set_event_callback("net_update_end", function()
if not entity.get_local_player() then return end
if not entity.is_alive(entity.get_local_player()) then Resolver.Main.Mode = 0
return end
local Players = entity.get_players() client.update_player_list()
for i = 1, #Players do
local idx = Players[i]
if entity.is_enemy(idx) and IsPlayerAnimating(idx) and
ui.get(EnableResolver) then
CResolverInstance(idx)
plist.set(idx, "Force body yaw value", Resolver.Main.Mode ~= 0 and
Resolver.Main.Angles or 0)
plist.set(idx, "Force body yaw", Resolver.Main.Mode ~= 0)
else
plist.set(idx, "Force body yaw", false)
end
end
end)