NSFW предупреждение для новых игроков

При входе в игру открывает данную менюшку и если игрок согласился при следующем входе ее больше не откроет ну или пока он не почистит дату

image

Код закинуть в клиент часть
print("-------------------------------------------------")
print("      ")
print("      ")
print("NSFW 18+ Warning system downloaded! Clientside")
print("      ")
print("      ")
print("-------------------------------------------------")

surface.CreateFont( "nsfw_font1", {
	font = "Arial", --  Use the font-name which is shown to you by your operating system Font Viewer, not the file name
	extended = false,
	size = 18,
	weight = 500,
	blursize = 0,
	scanlines = 0,
	antialias = true,
	underline = false,
	italic = false,
	strikeout = false,
	symbol = false,
	rotary = false,
	shadow = false,
	additive = false,
	outline = false,
} )


hook.Add( "InitPostEntity", "PlayerReady", function()
    if(!file.IsDir("precrasnoe_rp/nsfw","DATA")) then 
        OpenNSFW_WarningMenu()
    end
end )

function OpenNSFW_WarningMenu()
    local frame = vgui.Create( "DFrame" )
    frame:SetSize( 600, 200 )
    frame:Center()
    frame:MakePopup()
    frame:SetDraggable(false)
    frame:ShowCloseButton(false)
    frame:SetTitle("NSFW 18+ Предупреждение!")
    frame.Paint = function(self, w, h)
        draw.RoundedBox(4, 0, 0, w, h - 50, Color(40, 40, 40, 255))
        draw.RoundedBox(4, 0, 0, w, h - 178, Color(60, 60, 60, 255))
    end
    local nsfwText = "Уважаемый игрок, на сервере возможен не модерируемый 18+ контент! \nВ связи с последними событиями, из-за недобросовестных игроков, \nмы обязаны уведомить Вас и получить ваш ответ касательно этого вопроса\n"
    local DLabel = vgui.Create( "DLabel", frame )
    DLabel:SetPos( 50, 30 )
    DLabel:SetText( nsfwText )
    DLabel:SetFont("nsfw_font1")
    DLabel:SizeToContents()

    local DColorButton = vgui.Create( "DColorButton", frame )
    DColorButton:SetPos( 35, 100 )
    DColorButton:Paint( 100, 30 )
    DColorButton:SetText( "     Да, я согласен на просмотр этого контента!" )
    DColorButton:SetSize( 250, 30 )
    DColorButton.Paint = function(self, w, h)
        draw.RoundedBox(2, 0, 0, w, h, Color(62, 152, 66, 230))
    end

    function DColorButton:DoClick()
        local ply = LocalPlayer()
        chat.AddText( Color( 0, 72, 196), ply, " Вы дали согласие на возможный просмотр NSFW 18+ контента!" )
        chat.AddText( Color( 180, 153, 0), "Эта процедура является важным пунктом, нового свода правил FacePunch" )
        chat.AddText( Color( 180, 153, 0), "и мы обязаны придерживаться данной процедуры, спасибо за понимание." )
        frame:Remove()
        file.CreateDir("precrasnoe_rp/nsfw")
        file.Append( "precrasnoe_rp/nsfw/nsfw.txt", "Вы дали согласие на возможный просмотр NSFW 18+ контента! " .. os.date("%H:%M:%S - %d/%m/%Y") .. "\n" )        
    end

    local DColorButton = vgui.Create( "DColorButton", frame )
    DColorButton:SetPos( 315, 100 )
    DColorButton:Paint( 100, 30 )
    DColorButton:SetText( "       Я не согласен! (Отключиться от сервера)" )
    DColorButton:SetSize( 250, 30 )
    DColorButton.Paint = function(self, w, h)
        draw.RoundedBox(2, 0, 0, w, h, Color(148, 40, 40, 200))
    end
    function DColorButton:DoClick()
        RunConsoleCommand("disconnect")
    end
end

concommand.Add("nsfw_open", function()
    OpenNSFW_WarningMenu()
end)


Это для особых бдсм серверов?
Не знаю зачем это, если на абсолютно любом сервере будет 18+ потому что 1 из 10 игроков что-то забавное выдаст. Особенно если есть скрин-тул

Говорят что фейспанч может блокнуть сервер если будет +18 на сервере и без похожего уведомления игрока
пы.сы. по жалобе конечно

Хм, не слышал о таком. Ладно

можешь от меня на бк тему найти с

Welcome

там можешь отредачить как хочешь

Переделал под сап-сборки, мало ли кому нужно.

hook.Add( "InitPostEntity", "PlayerReady", function(pl)
    if !(pl:GetVar("NSFW")) then 
        OpenNSFW_WarningMenu()
    end
end )

function OpenNSFW_WarningMenu()
    local frame = ui.Create( "ui_frame" )
    frame:SetSize( 600, 200 )
    frame:Center()
    frame:MakePopup()
    -- frame:SetDraggable(false)
    frame:ShowCloseButton(false)
    frame:SetTitle("Предупреждение!")

    local nsfwText = "Уважаемый игрок, на сервере возможен не модерируемый 18+ контент! \nВ связи с последними событиями, из-за недобросовестных игроков, \nмы обязаны уведомить Вас и получить ваш ответ касательно этого вопроса\nВ случае вашего согласия вы продолжите игру\nВ случае отказа - отключитесь."
    local DLabel = ui.Create( "DLabel", frame )
    DLabel:SetPos( 10, 38 )
    DLabel:SetFont('ui.18')
    DLabel:SetText( nsfwText )
    DLabel:SizeToContents()

    local DColorButton = ui.Create( "DButton", frame )
    DColorButton:SetPos( 35, frame:GetTall() - 45 )
    DColorButton:Paint( 100, 30 )
    DColorButton:SetText( "Я согласен" )
    DColorButton:SetFont('ui.17')
    DColorButton:SetSize( 100, 30 )

    function DColorButton:DoClick()
        local pl = LocalPlayer()
        chat.AddText( ui.col.SUP, "| ", ui.col.White, pl, ", Вы дали согласие на возможный просмотр NSFW 18+ контента!" )
        frame:Remove()
        pl:SetVar("NSFW", 1)
    end

    local DColorButton = vgui.Create( "DButton", frame )
    DColorButton:SetPos( frame:GetWide() - 145, frame:GetTall() - 45 )
    DColorButton:Paint( 100, 30 )
    DColorButton:SetFont('ui.17')
    DColorButton:SetText( "Я не согласен" )
    DColorButton:SetSize( 100, 30 )
    function DColorButton:DoClick()
        RunConsoleCommand("disconnect")
    end
end

concommand.Add("nsfw_open", function()
    OpenNSFW_WarningMenu()
end)

image