Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local def = {
- run = 500,
- walk = 250,
- step = 18,
- jump = 200,
- bhop = 1.6,
- view = Vector(0,0,64),
- viewducked = Vector(0,0,28),
- min = Vector(-16, -16, 0),
- max = Vector(16, 16, 72),
- maxduck = Vector(16, 16, 36),
- mass = 85,
- gravity = 600,
- }
- function _R.Player:SetScale(scale, send)
- --check(scale, "number")
- self:SetViewOffset(def.view * scale)
- self:SetViewOffsetDucked(def.viewducked * scale)
- self:SetHull(def.min * scale, def.max * scale)
- self:SetHullDuck(def.min * scale, def.maxduck * scale)
- self:SetRunSpeed(def.run * scale ^ 0.7)
- self:SetWalkSpeed(def.walk * scale ^ 0.7)
- self:SetStepSize(def.step * scale)
- self:SetJumpPower(math.max(def.jump * scale ^ 0.5, 74))
- if CLIENT then
- self:SetModelScale(Vector() * scale)
- end
- if SERVER then
- self:GetPhysicsObject():SetMass(def.mass * scale)
- if not send then SendUserMessage("player_scale", self, scale) end
- end
- self.scale = scale
- end
- function _R.Player:GetScale()
- return self.scale
- end
- if CLIENT then
- usermessage.Hook("player_scale", function(umr)
- LocalPlayer():SetScale(umr:ReadFloat())
- end)
- end
- hook.Add("PlayerSpawn", "scale", function(ply)
- if type(ply.scale) == "number" and ply.scale ~= 1 then
- ply:SetScale(1)
- ply:SetPos(ply:GetPos()+vector_up)
- timer.Simple(0.4, function()
- if ply:IsPlayer() then
- ply:SetScale(ply.scale)
- end
- end)
- end
- end)
- hook.Add("ScalePlayerDamage", "scale", function(ply, hitgroup, dmginfo)
- if dmginfo:GetDamageType() == DMG_BURN then return end
- local attacker = dmginfo:GetAttacker()
- if type(ply.scale) == "number" and ply.scale ~= 1 or attacker:IsPlayer() then
- local mult
- if attacker:IsPlayer() and attacker.scale ~= 1 then
- mult = attacker.scale / 10
- end
- dmginfo:SetDamage(dmginfo:GetDamage() * (mult or (1/ply.scale)))
- dmginfo:SetDamageForce((dmginfo:GetDamageForce() * (mult or (1/ply.scale))))
- end
- end)
- hook.Add("PlayerFootstep", "scale", function(ply, pos, foot, sound, volume, rf)
- if type(ply.scale) == "number" and ply.scale ~= 1 then
- ply:EmitSound(sound, volume*ply.scale, math.Clamp((1/ply.scale)*255, 0,255))
- end
- end)
- hook.Add("PlayerStepSoundTime", "scale", function(ply, iType, bWalking )
- if type(ply.scale) == "number" and ply.scale ~= 1 then
- local fStepTime = 350
- local fMaxSpeed = ply:GetMaxSpeed()
- if ( iType == STEPSOUNDTIME_NORMAL || iType == STEPSOUNDTIME_WATER_FOOT ) then
- if ( fMaxSpeed <= 100 ) then
- fStepTime = 400
- elseif ( fMaxSpeed <= 300 ) then
- fStepTime = 350
- else
- fStepTime = 250
- end
- elseif ( iType == STEPSOUNDTIME_ON_LADDER ) then
- fStepTime = 450
- elseif ( iType == STEPSOUNDTIME_WATER_KNEE ) then
- fStepTime = 600
- end
- // Step slower if crouching
- if ( ply:Crouching() ) then
- fStepTime = fStepTime + 50
- end
- return fStepTime * ply.scale
- end
- end)
- hook.Add("UpdateAnimation", "scale", function(ply, vel, max)
- if type(ply.scale) == "number" and ply.scale < 1 then
- ply.scale_cycle = tonumber(tostring(ply.scale_cycle)) and ply.scale_cycle or 0
- ply.scale_cycle = (ply.scale_cycle or 0) + (vel:Length() * FrameTime() * (1/ply.scale) * 0.01)
- ply:SetCycle(ply.scale_cycle)
- end
- end)
- --hook.Add("PreChatSound", "scale", function(chtsnd)
- -- chtsnd:SetPitch(math.Clamp(chtsnd:GetPitch() * (1/chtsnd:GetPlayer().scale), 0, 255))
- --end)
- hook.Add("Move", "scale", function(self, move)
- if self.scale and self.scale ~= 1 then
- move:SetVelocity(move:GetVelocity() + LerpVector(math.Clamp(self.scale+0.25,0,2), Vector(0,0, (FrameTime() * def.gravity)), vector_origin))
- end
- end)
- hook.Add("PreChatSound", "scale", function(chtsnd)
- local self = chtsnd:GetPlayer()
- if self.scale and self.scale ~= 1 then
- chtsnd:SetPitch(chtsnd:GetPitch()*(2/self.scale))
- end
- end)
- if CLIENT then
- hook.Add("RenderScene", "scale", function(origin, angles)
- local ply = LocalPlayer()
- if ply.scale and ply.scale < 0.2 then
- render.RenderView{
- origin = origin,
- angles = angles,
- znear = 0.01,
- zfar = 32000*0.01,
- x = 0,
- y = 0,
- w = ScrW(),
- h = ScrH(),
- drawhud = true,
- drawviewmodel = true,
- viewmodelfov = 75,
- fov = 75,
- ortho = false,
- znearviewmodel, 0.01,
- zfarviewmodel = 1000000,
- }
- return true
- end
- end)
- end
- Ply"oh":SetScale(0.01)
- --Ply"mort":SetScale(0.1)
Advertisement
Add Comment
Please, Sign In to add comment