mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +03:00
Upload
This commit is contained in:
129
lua/pac3/core/client/parts/movement.lua
Normal file
129
lua/pac3/core/client/parts/movement.lua
Normal file
@@ -0,0 +1,129 @@
|
||||
--[[
|
||||
| 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/
|
||||
--]]
|
||||
|
||||
local BUILDER, PART = pac.PartTemplate("base")
|
||||
|
||||
PART.ClassName = "player_movement"
|
||||
PART.Group = "entity"
|
||||
PART.Icon = "icon16/user_go.png"
|
||||
|
||||
|
||||
local pac_movement_default = {}
|
||||
local update_these = {}
|
||||
|
||||
local function ADD(PART, name, default, ...)
|
||||
BUILDER:GetSet(name, default, ...)
|
||||
|
||||
pac_movement_default[name] = default
|
||||
|
||||
PART["Set" .. name] = function(self, val)
|
||||
self[name] = val
|
||||
|
||||
local ply = self:GetRootPart():GetOwner()
|
||||
|
||||
if ply == pac.LocalPlayer then
|
||||
|
||||
if self:IsHidden() then return end
|
||||
|
||||
local num = GetConVarNumber("pac_free_movement")
|
||||
if num == 1 or (num == -1 and hook.Run("PlayerNoClip", ply, true)) then
|
||||
ply.pac_movement = ply.pac_movement or table.Copy(pac_movement_default)
|
||||
|
||||
if ply.pac_movement[name] ~= val then
|
||||
net.Start("pac_modify_movement", true)
|
||||
net.WriteString(name)
|
||||
net.WriteType(val)
|
||||
net.SendToServer()
|
||||
end
|
||||
ply.pac_movement[name] = val
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
table.insert(update_these, function(s) PART["Set" .. name](s, PART["Get" .. name](s)) end)
|
||||
end
|
||||
|
||||
BUILDER:StartStorableVars()
|
||||
BUILDER:SetPropertyGroup("generic")
|
||||
ADD(PART, "Noclip", false)
|
||||
ADD(PART, "Gravity", Vector(0, 0, -600))
|
||||
|
||||
BUILDER:SetPropertyGroup("movement")
|
||||
ADD(PART, "SprintSpeed", 400)
|
||||
ADD(PART, "RunSpeed", 200)
|
||||
ADD(PART, "WalkSpeed", 100)
|
||||
ADD(PART, "DuckSpeed", 25)
|
||||
|
||||
BUILDER:SetPropertyGroup("ground")
|
||||
ADD(PART, "JumpHeight", 200, {editor_clamp = {0, 10000}})
|
||||
ADD(PART, "MaxGroundSpeed", 750)
|
||||
ADD(PART, "StickToGround", true)
|
||||
ADD(PART, "GroundFriction", 0.12, {editor_clamp = {0, 1}, editor_sensitivity = 0.1})
|
||||
|
||||
BUILDER:SetPropertyGroup("air")
|
||||
ADD(PART, "AllowZVelocity", false)
|
||||
ADD(PART, "AirFriction", 0.01, {editor_clamp = {0, 1}, editor_sensitivity = 0.1})
|
||||
ADD(PART, "MaxAirSpeed", 1)
|
||||
|
||||
BUILDER:SetPropertyGroup("view angles")
|
||||
ADD(PART, "ReversePitch", false)
|
||||
ADD(PART, "UnlockPitch", false)
|
||||
ADD(PART, "VelocityToViewAngles", 0, {editor_clamp = {0, 1}, editor_sensitivity = 0.1})
|
||||
ADD(PART, "RollAmount", 0, {editor_sensitivity = 0.25})
|
||||
|
||||
BUILDER:SetPropertyGroup("fin")
|
||||
ADD(PART, "FinEfficiency", 0)
|
||||
ADD(PART, "FinLiftMode", "normal", {enums = {
|
||||
normal = "normal",
|
||||
none = "none",
|
||||
}})
|
||||
ADD(PART, "FinCline", false)
|
||||
|
||||
BUILDER:EndStorableVars()
|
||||
|
||||
function PART:GetNiceName()
|
||||
local ent = self:GetRootPart():GetOwner()
|
||||
local str = self.ClassName
|
||||
|
||||
if ent:IsValid() then
|
||||
if ent:IsPlayer() then
|
||||
str = ent:Nick()
|
||||
else
|
||||
str = language.GetPhrase(ent:GetClass())
|
||||
end
|
||||
end
|
||||
|
||||
return str .. "'s movement"
|
||||
end
|
||||
|
||||
function PART:OnShow()
|
||||
local ent = self:GetRootPart():GetOwner()
|
||||
|
||||
if ent:IsValid() then
|
||||
ent.last_movement_part = self:GetUniqueID()
|
||||
for i,v in ipairs(update_these) do
|
||||
v(self)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function PART:OnHide()
|
||||
local ent = self:GetRootPart():GetOwner()
|
||||
|
||||
if ent == pac.LocalPlayer and ent.last_movement_part == self:GetUniqueID() then
|
||||
net.Start("pac_modify_movement", true)
|
||||
net.WriteString("disable")
|
||||
net.SendToServer()
|
||||
|
||||
ent.pac_movement = nil
|
||||
end
|
||||
end
|
||||
|
||||
BUILDER:Register()
|
||||
Reference in New Issue
Block a user