Я новичок в lua и gmod, и в программировании вообще, я создаю SENT, что когда вы нажимаете на объект, вы открываете дерму и можете выбрать то, что хотите, но проблема здесь в том, что все игроки на сервере видят дерму, когда кто-то использовать сущность. Я действительно застрял здесь
общий.lua
ENT.Type = "anim"
ENT.Base = "base_gmodentity"
ENT.PrintName = "Гроб Пидораса"
ENT.Spawnable = true
ENT.Category = "Кладбище"
внутр.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)
Пробовал использовать if ply == ply then draw all derma, но это не помогло ;p
net.Broadcast()
- Отправляет текущее созданное сетевое сообщение всем подключенным игрокам.
вам нужно net.Send( Player ply )
- Отправляет текущее сообщение указанному игроку, либо всем игрокам, указанным в таблице.