Search code examples
luagarrys-mod

Derma see all players on the server


Im new to lua and gmod, and coding at all, i create a SENT, that when you press at entity you open the derma and can choose what you want, but problem is here, that all players on the server see the derma when somebody use entity. I really get stucked here

shared.lua

ENT.Type = "anim"
ENT.Base = "base_gmodentity"

ENT.PrintName = "Гроб Пидораса"
ENT.Spawnable = true
ENT.Category = "Кладбище"

int.lua

AddCSLuaFile("shared.lua")

include("shared.lua")

util.AddNetworkString("sendtomogila")



function ENT:Initialize()
    self:SetModel("models/props_c17/gravestone_coffinpiece001a.mdl")
    self:PhysicsInit( SOLID_VPHYSICS )
    self:SetMoveType( MOVETYPE_VPHYSICS)
    self:SetSolid(SOLID_VPHYSICS)
    local phys = self:GetPhysicsObject()
    if (phys:IsValid()) then phys:Wake() end

end


function ENT:Use(ply)
    self:SetUseType(3)
    if ply:IsPlayer() then 
        net.Start("sendtomogila")
    net.WriteEntity(ply)
    net.Broadcast()
    end
end

cl_init.lua

include("shared.lua")

surface.CreateFont("bigHud", {
    font = "Open Sans Bold",
    size = 250,
    weight = 800,
    antialias = true
} )

surface.CreateFont("bigHud1", {
    font = "Open Sans Bold",
    size = 30,
    weight = 800,
    outline = true
} )


function ENT:Draw()
    self:DrawModel()

    cam.Start3D2D(self:GetPos() + Vector(0,0,50), Angle(0, RenderAngles().y - 90,90), 0.1)
        draw.SimpleTextOutlined("Могила Пидора", "bigHud", 0, 0, Color(255,255,255), TEXT_ALIGN_CENTER, 0, 2, Color(0,0,0))
    cam.End3D2D()
end

net.Receive("sendtomogila", function(len, ply)

local gav = net.ReadEntity()

if (!Frame) then
    print(gav)


    local Frame = vgui.Create( "DFrame" )   --Создаёт окно.
    Frame:SetTitle( "ЭТО ОКНО ВИДЯТ ТОЛЬКО МУЖИКИ" )    --Устанавливает название окна.
    Frame:SetPos( 100,100 ) --Устанавливает позицию окна.
    Frame:SetSize( ScrW() * 300/1920, ScrH() * 200/1080 )
    Frame:Center()
    Frame:SetSizable(true)  --/Если True, окно можно будет растянуть.
    Frame:SetVisible( true )    --Если True, окно сразу включается при запуске функции, при false будет ждать команду на запуск.
    Frame:SetDraggable( true ) --//Если True, окно можно перетаскивать.
    Frame:ShowCloseButton( true ) --//Если True, у окна есть кнопка закрытия (не советую убирать на время тестов).
    Frame:MakePopup(true) --//Если True, экран блокируется и появляется курсор.

    local Text = vgui.Create("DLabel")
    Text:SetParent( Frame ) --Устанавливает родительский элемент(то, на чём распологается кнопка).
    Text:SetPos(20, 50)
    Text:SetColor(Color(255,255,255,255)) --Устанавливает цвет текста
    Text:SetFont("default") --Устанавливает шрифт текста. (можно использовать только те шрифты, которые доступны в игре)
    Text:SetText("ТЫ ПИДОР?") --Устанавливает текст
    Text:SizeToContents() --Автоматически подогнать размер (если размер будет меньше текста, он оборвётся многоточием)

    local Knopka1 = vgui.Create( "DButton", Frame ) --//Создаёт кнопку.
    local Knopka2 = vgui.Create( "DButton", Frame )
    Knopka1:SetText( "НЕТ" )    --//Устанавливает текст на кнопке.
    Knopka1:SetPos( 160, 130 )--Устанавливает позицию кнопка.
    Knopka1:SetSize( ScrW() * 100/1920, ScrH() * 30/1080 )  --//Устанавливает размер кнопки.
    Knopka1.DoClick = function ()   --//Функция, выполняющую кнопка.
    Knopka2:SetEnabled(false)
    RunConsoleCommand( "kill" )-- //То, что делает кнопка. В данном случае включает анимацию (насмешка/жест).
    Knopka1:SetText( "ПИДОРА ОТВЕТ" )-- //То, что делает кнопка. В данном случае меняет текст на себе.
    end --//Конец функции кнопки.

    Knopka2:SetText( "ДА" ) --//Устанавливает текст на кнопке.
    Knopka2:SetPos( 40, 130 )--Устанавливает позицию кнопка.
    Knopka2:SetSize( ScrW() * 100/1920, ScrH() * 30/1080 )  --//Устанавливает размер кнопки.
    Knopka2.DoClick = function ()   --//Функция, выполняющую кнопка.
    Knopka1:SetEnabled(false)
    RunConsoleCommand( "kill" )-- //То, что делает кнопка. В данном случае включает анимацию (насмешка/жест).
    Knopka2:SetText( "ХУЙ В ЖОПУ НА" )-- //То, что делает кнопка. В данном случае меняет текст на себе.
    end --//Конец функции кнопки.

    elseif (Frame) then print("hi") end





end)

I tried to use if ply == ply then draw all derma, but it didnt help ;p


Solution

  • net.Broadcast() - Sends the currently built net message to all connected players.

    you needed net.Send( Player ply ) - Sends the current message to the specified player, or to all players listed in the table.