Advertisement
HK47

SWEP Construction Kit (cut version) for GM

May 13th, 2014
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.91 KB | None | 0 0
  1. //this is changed SWEP Construction Kit code
  2.  
  3. if CLIENT then
  4.     if not LocalPlayer():GetNWBool("costume_have_hk") then return end
  5.  
  6.     local WElements = {
  7.        
  8.     }
  9.  
  10.     local wRenderOrder = nil
  11.     local bone_ent
  12.    
  13.     function SWEP:DrawWorldModel()
  14.         if !WElements then return end
  15.        
  16.         if (!wRenderOrder) then
  17.  
  18.             wRenderOrder = {}
  19.  
  20.             for k, v in pairs(WElements) do
  21.                 if (v.type == "Model") then
  22.                     table.insert(wRenderOrder, 1, k)
  23.                 elseif (v.type == "Sprite") then
  24.                     table.insert(wRenderOrder, k)
  25.                 end
  26.             end
  27.  
  28.         end
  29.        
  30.         bone_ent = LocalPlayer()
  31.        
  32.         for k, name in pairs(wRenderOrder) do
  33.             local v = WElements[name]
  34.             if !v then wRenderOrder = nil break end
  35.            
  36.             local pos, ang
  37.            
  38.             if v.bone then
  39.                 pos, ang = GetBoneOrientation(WElements, v, bone_ent)
  40.             else
  41.                 pos, ang = GetBoneOrientation(WElements, v, bone_ent, "ValveBiped.Bip01_R_Hand")
  42.             end
  43.            
  44.             if !pos then continue end
  45.            
  46.             local model = v.modelEnt
  47.             local sprite = v.spriteMaterial
  48.            
  49.             if (v.type == "Model" and IsValid(model)) then
  50.  
  51.                 model:SetPos(pos + ang:Forward() * v.pos.x + ang:Right() * v.pos.y + ang:Up() * v.pos.z )
  52.                 ang:RotateAroundAxis(ang:Up(), v.angle.y)
  53.                 ang:RotateAroundAxis(ang:Right(), v.angle.p)
  54.                 ang:RotateAroundAxis(ang:Forward(), v.angle.r)
  55.  
  56.                 model:SetAngles(ang)
  57.                 local matrix = Matrix()
  58.                 matrix:Scale(v.size)
  59.                 model:EnableMatrix( "RenderMultiply", matrix )
  60.                
  61.                 if (v.material == "") then
  62.                     model:SetMaterial("")
  63.                 elseif (model:GetMaterial() != v.material) then
  64.                     model:SetMaterial( v.material )
  65.                 end
  66.                
  67.                 if (v.skin and v.skin != model:GetSkin()) then
  68.                     model:SetSkin(v.skin)
  69.                 end
  70.                
  71.                 if (v.bodygroup) then
  72.                     for k, v in pairs( v.bodygroup ) do
  73.                         if (model:GetBodygroup(k) != v) then
  74.                             model:SetBodygroup(k, v)
  75.                         end
  76.                     end
  77.                 end
  78.                
  79.                 if (v.surpresslightning) then
  80.                     render.SuppressEngineLighting(true)
  81.                 end
  82.                
  83.                 render.SetColorModulation(v.color.r/255, v.color.g/255, v.color.b/255)
  84.                 render.SetBlend(v.color.a/255)
  85.                 model:DrawModel()
  86.                 render.SetBlend(1)
  87.                 render.SetColorModulation(1, 1, 1)
  88.                
  89.                 if (v.surpresslightning) then
  90.                     render.SuppressEngineLighting(false)
  91.                 end
  92.                
  93.             elseif (v.type == "Sprite" and sprite) then
  94.                
  95.                 local drawpos = pos + ang:Forward() * v.pos.x + ang:Right() * v.pos.y + ang:Up() * v.pos.z
  96.                 render.SetMaterial(sprite)
  97.                 render.DrawSprite(drawpos, v.size.x, v.size.y, v.color)
  98.                
  99.             end
  100.         end
  101.     end
  102.    
  103.     local function GetBoneOrientation( basetab, tab, ent, bone_override )
  104.         local bone, pos, ang
  105.         if (tab.rel and tab.rel != "") then
  106.            
  107.             local v = basetab[tab.rel]
  108.            
  109.             if (!v) then return end
  110.            
  111.             pos, ang = GetBoneOrientation( basetab, v, ent )
  112.            
  113.             if (!pos) then return end
  114.            
  115.             pos = pos + ang:Forward() * v.pos.x + ang:Right() * v.pos.y + ang:Up() * v.pos.z
  116.             ang:RotateAroundAxis(ang:Up(), v.angle.y)
  117.             ang:RotateAroundAxis(ang:Right(), v.angle.p)
  118.             ang:RotateAroundAxis(ang:Forward(), v.angle.r)
  119.         else
  120.             bone = ent:LookupBone(bone_override or tab.bone)
  121.  
  122.             if (!bone) then return end
  123.            
  124.             pos, ang = Vector(0,0,0), Angle(0,0,0)
  125.             local m = ent:GetBoneMatrix(bone)
  126.             if (m) then
  127.                 pos, ang = m:GetTranslation(), m:GetAngles()
  128.             end
  129.            
  130.             /*if (IsValid(self.Owner) and LocalPlayer():IsPlayer() and
  131.                 ent == self.Owner:GetViewModel() and self.ViewModelFlip) then
  132.                 ang.r = -ang.r // Fixes mirrored models
  133.             end*/
  134.         end
  135.        
  136.         return pos, ang
  137.     end
  138.  
  139.     local function table.FullCopy( tab )
  140.         if (!tab) then return nil end
  141.        
  142.         local res = {}
  143.         for k, v in pairs( tab ) do
  144.             if (type(v) == "table") then
  145.                 res[k] = table.FullCopy(v) // recursion ho!
  146.             elseif (type(v) == "Vector") then
  147.                 res[k] = Vector(v.x, v.y, v.z)
  148.             elseif (type(v) == "Angle") then
  149.                 res[k] = Angle(v.p, v.y, v.r)
  150.             else
  151.                 res[k] = v
  152.             end
  153.         end
  154.        
  155.         return res
  156.        
  157.     end
  158. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement