Вопрос Как сделать чтобы когда игрок спавнил проп и брал его физганом, проп автоматически замораживался?

  • 43
  • 2
Контакты для связи отсутствуют.
Как сделать чтобы когда игрок спавнил проп и брал его физганом, проп автоматически замораживался, когда игрок переставал брать его физ ганом?
И чтобы когда проп в игроке, у пропа убиралась коллизия
 
  • 15
  • 1
Контакты для связи отсутствуют.
Как сделать чтобы когда игрок спавнил проп и брал его физганом, проп автоматически замораживался, когда игрок переставал брать его физ ганом?
И чтобы когда проп в игроке, у пропа убиралась коллизия
настроить FPP(How to configure FPP (Falco's Props Protection) | GMod Guides) и скачать системы по типу APG(Steam Workshop::APG - Anti Prop Griefing & Crash Protection [ DEAD - Check the description. ])
 
  • 9
  • 0
Контакты для связи отсутствуют.
Как сделать чтобы когда игрок спавнил проп и брал его физганом, проп автоматически замораживался, когда игрок переставал брать его физ ганом?
И чтобы когда проп в игроке, у пропа убиралась коллизия
Базовый проп протект, а их в интернете дофига
 
  • 16
  • 1
Контакты для связи отсутствуют.
Как сделать чтобы когда игрок спавнил проп и брал его физганом, проп автоматически замораживался, когда игрок переставал брать его физ ганом?
И чтобы когда проп в игроке, у пропа убиралась коллизия
Код:
if SERVER then

    util.AddNetworkString("PropFreezeSync")


    local function FreezeProp(ent)

        local phys = ent:GetPhysicsObject()

        if IsValid(phys) then

            phys:EnableMotion(false)

            phys:Sleep()

            ent:SetCustomCollisionCheck(true) -

        end

    end


    hook.Add("OnEntityCreated", "PropSetup", function(ent)

        if ent:IsValid() and ent:GetClass() == "prop_physics" then

            timer.Simple(0, function()

                if ent:GetPersistent() then return end

                ent:SetNW2Bool("ManagedProp", true)

                ent:SetPhysicsAttacker(Entity(0))

            end)

        end

    end)


    hook.Add("GravGunPickupAllowed", "CollisionToggle", function(ply, ent)

        if ent:GetNW2Bool("ManagedProp") then

            ent:SetCollisionGroup(COLLISION_GROUP_WORLD)

            ent:EnableCustomCollisions(false)

            return true

        end

    end)


    hook.Add("GravGunOnDropped", "FreezeLogic", function(ply, ent)

        if ent:GetNW2Bool("ManagedProp") then

            ent:SetCollisionGroup(COLLISION_GROUP_NONE)

            FreezeProp(ent)

          

            net.Start("PropFreezeSync")

                net.WriteEntity(ent)

            net.Broadcast()

        end

    end)


    hook.Add("EntityRemoved", "CleanupProps", function(ent)

        if ent:GetNW2Bool("ManagedProp") then

            ent:SetCollisionGroup(COLLISION_GROUP_NONE)

            ent:RemoveAllDecals()

        end

    end)

end


if CLIENT then

    net.Receive("PropFreezeSync", function()

        local ent = net.ReadEntity()

        if IsValid(ent) then

            ent:SetRenderFX(kRenderFxNone) -- Сброс эффектов

        end

    end)

end
 
Сверху Снизу