CapsAdmin

Untitled

Mar 21st, 2011
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.37 KB | None | 0 0
  1. local def = {
  2.     run = 500,
  3.     walk = 250,
  4.     step = 18,
  5.     jump = 200,
  6.     bhop = 1.6,
  7.    
  8.     view = Vector(0,0,64),
  9.     viewducked = Vector(0,0,28),
  10.    
  11.     min = Vector(-16, -16, 0),
  12.     max = Vector(16, 16, 72),
  13.     maxduck = Vector(16, 16, 36),
  14.    
  15.     mass = 85,
  16.    
  17.     gravity = 600,
  18. }
  19.  
  20. function _R.Player:SetScale(scale, send)
  21.     --check(scale, "number")
  22.    
  23.     self:SetViewOffset(def.view * scale)
  24.     self:SetViewOffsetDucked(def.viewducked * scale)
  25.    
  26.     self:SetHull(def.min * scale, def.max * scale)
  27.     self:SetHullDuck(def.min * scale, def.maxduck * scale)
  28.    
  29.     self:SetRunSpeed(def.run * scale ^ 0.7)
  30.     self:SetWalkSpeed(def.walk * scale ^ 0.7)
  31.     self:SetStepSize(def.step * scale)
  32.     self:SetJumpPower(math.max(def.jump * scale ^ 0.5, 74))
  33.    
  34.     if CLIENT then
  35.         self:SetModelScale(Vector() * scale)
  36.     end
  37.    
  38.     if SERVER then
  39.         self:GetPhysicsObject():SetMass(def.mass * scale)
  40.        
  41.         if not send then SendUserMessage("player_scale", self, scale) end
  42.     end
  43.    
  44.     self.scale = scale
  45. end
  46.  
  47. function _R.Player:GetScale()
  48.     return self.scale
  49. end
  50.  
  51. if CLIENT then
  52.     usermessage.Hook("player_scale", function(umr)
  53.         LocalPlayer():SetScale(umr:ReadFloat())
  54.     end)
  55. end
  56.  
  57. hook.Add("PlayerSpawn", "scale", function(ply)
  58.     if type(ply.scale) == "number" and ply.scale ~= 1 then
  59.         ply:SetScale(1)
  60.         ply:SetPos(ply:GetPos()+vector_up)
  61.         timer.Simple(0.4, function()
  62.             if ply:IsPlayer() then
  63.                 ply:SetScale(ply.scale)
  64.             end
  65.         end)
  66.     end
  67. end)
  68.  
  69. hook.Add("ScalePlayerDamage", "scale", function(ply, hitgroup, dmginfo)
  70.     if dmginfo:GetDamageType() == DMG_BURN then return end
  71.  
  72.     local attacker = dmginfo:GetAttacker()
  73.     if type(ply.scale) == "number" and ply.scale ~= 1 or attacker:IsPlayer() then
  74.         local mult
  75.        
  76.         if attacker:IsPlayer() and attacker.scale ~= 1 then
  77.             mult = attacker.scale / 10
  78.         end
  79.        
  80.         dmginfo:SetDamage(dmginfo:GetDamage() * (mult or (1/ply.scale)))
  81.         dmginfo:SetDamageForce((dmginfo:GetDamageForce() * (mult or (1/ply.scale))))
  82.     end
  83. end)
  84.  
  85. hook.Add("PlayerFootstep", "scale", function(ply, pos, foot, sound, volume, rf)
  86.     if type(ply.scale) == "number" and ply.scale ~= 1 then
  87.         ply:EmitSound(sound, volume*ply.scale, math.Clamp((1/ply.scale)*255, 0,255))
  88.     end
  89. end)
  90.  
  91.  
  92. hook.Add("PlayerStepSoundTime", "scale", function(ply, iType, bWalking )
  93.     if type(ply.scale) == "number" and ply.scale ~= 1 then
  94.  
  95.         local fStepTime = 350
  96.         local fMaxSpeed = ply:GetMaxSpeed()
  97.      
  98.         if ( iType == STEPSOUNDTIME_NORMAL || iType == STEPSOUNDTIME_WATER_FOOT ) then
  99.      
  100.             if ( fMaxSpeed <= 100 ) then
  101.                 fStepTime = 400
  102.             elseif ( fMaxSpeed <= 300 ) then
  103.                 fStepTime = 350
  104.             else
  105.                 fStepTime = 250
  106.             end
  107.      
  108.         elseif ( iType == STEPSOUNDTIME_ON_LADDER ) then
  109.      
  110.             fStepTime = 450
  111.      
  112.         elseif ( iType == STEPSOUNDTIME_WATER_KNEE ) then
  113.      
  114.             fStepTime = 600
  115.      
  116.         end
  117.      
  118.         // Step slower if crouching
  119.         if ( ply:Crouching() ) then
  120.             fStepTime = fStepTime + 50
  121.         end
  122.      
  123.         return fStepTime * ply.scale
  124.  
  125.     end
  126. end)
  127.  
  128.  
  129.  
  130. hook.Add("UpdateAnimation", "scale", function(ply, vel, max)
  131.     if type(ply.scale) == "number" and ply.scale < 1 then
  132.         ply.scale_cycle = tonumber(tostring(ply.scale_cycle)) and ply.scale_cycle or 0
  133.         ply.scale_cycle = (ply.scale_cycle or 0) + (vel:Length() * FrameTime() * (1/ply.scale) * 0.01)
  134.         ply:SetCycle(ply.scale_cycle)
  135.     end
  136. end)
  137.  
  138. --hook.Add("PreChatSound", "scale", function(chtsnd)
  139. --  chtsnd:SetPitch(math.Clamp(chtsnd:GetPitch() * (1/chtsnd:GetPlayer().scale), 0, 255))
  140. --end)
  141.  
  142. hook.Add("Move", "scale", function(self, move)
  143.     if self.scale and self.scale ~= 1 then     
  144.         move:SetVelocity(move:GetVelocity() + LerpVector(math.Clamp(self.scale+0.25,0,2), Vector(0,0, (FrameTime() * def.gravity)), vector_origin))
  145.     end
  146. end)
  147.  
  148. hook.Add("PreChatSound", "scale", function(chtsnd)
  149.     local self = chtsnd:GetPlayer()
  150.     if self.scale and self.scale ~= 1 then     
  151.         chtsnd:SetPitch(chtsnd:GetPitch()*(2/self.scale))
  152.     end
  153. end)
  154.  
  155. if CLIENT then
  156.  
  157. hook.Add("RenderScene", "scale", function(origin, angles)
  158.     local ply = LocalPlayer()
  159.     if ply.scale and ply.scale < 0.2 then      
  160.         render.RenderView{
  161.             origin = origin,
  162.             angles = angles,
  163.             znear = 0.01,
  164.             zfar = 32000*0.01,
  165.             x = 0,
  166.             y = 0,
  167.             w = ScrW(),
  168.             h = ScrH(),
  169.             drawhud = true,
  170.             drawviewmodel = true,
  171.             viewmodelfov = 75,
  172.             fov = 75,
  173.             ortho = false,
  174.             znearviewmodel, 0.01,
  175.             zfarviewmodel = 1000000,
  176.         }
  177.         return true
  178.     end
  179. end)
  180.  
  181. end
  182.  
  183. Ply"oh":SetScale(0.01)
  184. --Ply"mort":SetScale(0.1)
Advertisement
Add Comment
Please, Sign In to add comment