Залив

This commit is contained in:
Refosel
2026-03-30 10:39:52 +03:00
commit 2b57c019cb
2010 changed files with 185745 additions and 0 deletions

View File

@@ -0,0 +1,216 @@
include("client/cl_animation.lua")
include("client/cl_calcview.lua")
include("client/cl_render.lua")
include("client/cl_events.lua")
include("shared.lua")
require("mw_utils")
ENT.m_Particles = {}
ENT.m_Shells = {}
function ENT:CreateRig()
if (table.IsEmpty(MW_RIGS)) then
return
end
local k, v = next(MW_RIGS)
if (v == nil) then
return
end
self.m_Rig = ClientsideModel(v.Model, self.RenderGroup)
self.m_Rig:SetRenderMode(self.RenderMode)
self.m_Rig:AddEffects(EF_BONEMERGE)
self.m_Rig:AddEffects(EF_BONEMERGE_FASTCULL)
self.m_Rig:AddEffects(EF_PARENT_ANIMATES)
self.m_Rig:SetParent(self)
function self.m_Rig:CanDraw()
if (self:GetNoDraw()) then
return false
end
if (gmod.GetGamemode().ForcePlayerHands) then
return false
end
local rig = MW_RIGS[GetConVar("mgbase_rig"):GetString()]
if (rig == nil) then
return false
end
return true
end
function self.m_Rig:RenderOverride(flags)
if (!self:CanDraw()) then
return
end
self:SetModel(MW_RIGS[GetConVar("mgbase_rig"):GetString()].Model)
self:SetSkin(GetConVar("mgbase_rig_skin"):GetInt())
--self:DrawModel(flags)
--gloves draw the arms as well
end
mw_utils.DealWithFullUpdate(self.m_Rig)
end
function ENT:CreateGloves()
if (table.IsEmpty(MW_GLOVES)) then
return
end
local k, v = next(MW_GLOVES)
if (v == nil) then
return
end
self.m_Gloves = ClientsideModel(v.Model, self.RenderGroup)
self.m_Gloves:SetRenderMode(self.RenderMode)
self.m_Gloves:AddEffects(EF_BONEMERGE)
self.m_Gloves:AddEffects(EF_BONEMERGE_FASTCULL)
self.m_Gloves:AddEffects(EF_PARENT_ANIMATES)
self.m_Gloves:SetParent(self.m_Rig)
function self.m_Gloves:CanDraw()
if (self:GetNoDraw()) then
return false
end
if (gmod.GetGamemode().ForcePlayerHands) then
return false
end
local rig = MW_RIGS[GetConVar("mgbase_rig"):GetString()]
local gloves = MW_GLOVES[GetConVar("mgbase_gloves"):GetString()]
if (gloves == nil || rig == nil) then
--checks rig as well since it draws it
return false
end
return true
end
function self.m_Gloves:RenderOverride(flags)
if (!self:CanDraw()) then
return
end
self:SetModel(MW_GLOVES[GetConVar("mgbase_gloves"):GetString()].Model)
self:SetSkin(GetConVar("mgbase_gloves_skin"):GetInt())
self:DrawModel(flags)
end
mw_utils.DealWithFullUpdate(self.m_Gloves)
end
function ENT:CreateCHands()
self.m_CHands = ClientsideModel(Model("models/weapons/c_arms_hev.mdl"), self.RenderGroup)
self.m_CHands:SetRenderMode(self.RenderMode)
self.m_CHands:AddEffects(EF_BONEMERGE)
self.m_CHands:AddEffects(EF_BONEMERGE_FASTCULL)
self.m_CHands:AddEffects(EF_PARENT_ANIMATES)
self.m_CHands:SetParent(self)
function self.m_CHands:CanDraw()
if (self:GetNoDraw()) then
return false
end
local rig = GetConVar("mgbase_rig"):GetString()
if (rig != "chands" && !gmod.GetGamemode().ForcePlayerHands) then
return false
end
return IsValid(LocalPlayer():GetHands())
end
function self.m_CHands:GetPlayerColor()
return LocalPlayer():GetPlayerColor()
end
function self.m_CHands:RenderOverride(flags)
if (!self:CanDraw()) then
return
end
local p = LocalPlayer()
if (VManip != nil) then
p:GetHands():SetParent(self:GetParent())
p:GetHands():DrawModel(flags) --for thermals
--its a useless call outside of thermals but i dont care
return
end
self:SetModel(p:GetHands():GetModel())
self:SetSkin(p:GetHands():GetSkin())
for b = 0, p:GetHands():GetNumBodyGroups() do
self:SetBodygroup(b, p:GetHands():GetBodygroup(b))
end
self:DrawModel(flags)
end
mw_utils.DealWithFullUpdate(self.m_CHands)
end
ENT.m_LastAnim = -1
function ENT:PlaySequence(anim, rate, cycle)
rate = rate || 1
cycle = cycle || 0
if (self.m_LastAnim != anim) then
self.m_RightHandGripTarget = 1
self.m_LeftHandGripTarget = 1
end
self.m_LastAnim = anim
self:ResetSequence(anim)
self:SetPlaybackRate(rate)
self:SetCycle(cycle)
end
----------------------------------------------------
net.Receive("mgbase_viewmodelanim", function(len)
local ent = net.ReadEntity()
local rate = net.ReadFloat()
local animId = net.ReadUInt(16)
local tick = net.ReadUInt(16)
if (!IsValid(ent)) then
return
end
ent.m_AnimFromServer = {
Rate = rate,
Tick = tick,
AnimID = animId,
TimeDifference = ent:GetOwner():IsCarriedByLocalPlayer() && LocalPlayer():Ping() / 1000 || 0
}
end)
hook.Add("VManipPrePlayAnim", "MW19_VManipStopActions", function()
local ply = LocalPlayer()
local w = ply:GetActiveWeapon()
if (IsValid(w) && weapons.IsBasedOn(w:GetClass(), "mg_base")) then
return !w:HasFlag("Reloading")
&& !w:HasFlag("Drawing")
&& w:HasFlag("Rechambered")
&& CurTime() >= w:GetNextMeleeTime()
&& CurTime() >= w:GetNextAimModeTime()
&& !w:HasFlag("Holstering")
&& w:GetViewModel().m_LastSequenceIndex != "Inspect" && w:GetViewModel().m_LastSequenceIndex != "Inspect_Empty"
end
end)