Files
wnsrc/gamemodes/darkrp/plugins/arccwbase/cl_plugin.lua
lifestorm 6a58f406b1 Upload
2024-08-04 23:54:45 +03:00

62 lines
1.9 KiB
Lua

--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
-- ArcCW.Sway
function PLUGIN:CreateMove(userCmd)
local client = LocalPlayer()
local weapon = client:GetActiveWeapon()
if !weapon.ArcCW then return end
local angles = userCmd:GetViewAngles()
if (weapon:GetState() == ArcCW.STATE_SIGHTS and !weapon.NoSway) then
local sway = weapon:GetBuff("Sway")
sway = sway != 0 and sway or self.swayDefault
-- sway = sway * math.Clamp(1 / (weapon:GetActiveSights().ScopeMagnification or 1), 0.1, 1)
if (sway == 0) then
return
end
local character = client:GetCharacter()
local skillLevel = character:GetSkillLevel("guns")
local minSkillLevel, maxSkillLevel = ix.weapons:GetWeaponSkillRequired(weapon:GetClass())
if (skillLevel < minSkillLevel) then
sway = sway + (sway * self.swayMaxIncrease) * (1 - skillLevel / minSkillLevel)
else
skillLevel = math.min(skillLevel, maxSkillLevel)
sway = sway - (sway * self.swayMaxDecrease) * ((skillLevel - minSkillLevel) / (maxSkillLevel - minSkillLevel))
end
if weapon:InBipod() then
sway = sway * (weapon.BipodDispersion * weapon:GetBuff_Mult("Mult_BipodDispersion"))
end
if sway > 0.05 then
angles.p = math.Clamp(angles.p + math.sin(CurTime() * 1.25) * FrameTime() * sway, -89, 89)
ArcCW.SwayDir = ArcCW.SwayDir + math.Rand(-360, 360) * FrameTime() / math.min(sway, 1)
angles.p = angles.p + math.sin(ArcCW.SwayDir) * FrameTime() * sway
angles.y = angles.y + math.cos(ArcCW.SwayDir) * FrameTime() * sway
-- angles.p = angles.p + math.Rand(-1, 1) * FrameTime() * sway
-- angles.y = angles.y + math.Rand(-1, 1) * FrameTime() * sway
userCmd:SetViewAngles(angles)
end
end
end
hook.Remove("CreateMove", "ArcCW_Sway")