• Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами Публичной оферты Проекта NetZONA.org: https://netzona.org/help/public-offer/

  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами использования Ваших файлов cookie на Проекте NetZONA.org: https://netzona.org/help/cookies/

  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с Политикой конфиденциальности Проекта NetZONA.org: https://netzona.org/pages/privacy-policy/

  • Ответы на основные вопросы: https://netzona.org/threads/populjarnye-voprosy-i-otvety-na-nix.6122/

  • Приветствуем на сайте, Гость! Приобрести (купить) Информационную услугу (в том числе группу "Проверенный") на Проекте NetZONA.org: https://netzona.org/account/upgrades

Как изменить рамку у Talker'a?

  • Автор темы Автор темы Vergjil
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.

Vergjil

Пользователь
Регистрация
29 Авг 2014
Сообщения
40
Реакции
0
Баллы
15
Возраст
37
Пол
Собственно текстурка на изменение уже есть. Нужно лишь узнать куда залезть и что исправить чтобы ее изменить.
 
Для данного востребуется пройти в cl_dialogue.lua самого талкера. Именно там хранятся данные derma-панелей.

Самая первая инициализация панели. Приблизительный код на добавление текстуры/панели:
В локале material, в оператор(?) Material закидываешь путь до своей картиночки/текстурочки. Для сохранении прозрачности фона, желательно использовать .png-формат.
Код:
    local material = Material("Le_image.png") // Material("Le_image.png", "noclamp smooth")
    self.Paint = function(pnl, w, h)
        surface.SetDrawColor(color_white)
        surface.SetMaterial(material)
        surface.DrawTexturedRect(0, 0, w, h)
    end

Иль же использовать функцию панели для данного:
Код:
local material = Material("Le_image.png") // Material("Le_image.png", "noclamp smooth")
function PANEL:Paint(w, h)
    surface.SetDrawColor(color_white)
    surface.SetMaterial(material)
    surface.DrawTexturedRect(0, 0, w, h)
end

Изначально стоит выпилить изначальную стандартную панель. С этим, думаю, проблем не возникнет.

Так же, стоит учитывать множество факторов самой текстуры. Под нее нужно подстраивать как текстовый frame, так и буковки.

Выглядит данное, примерно, следующим образом:
D397kfsNxqQ.jpg

UPD: Надеюсь, я правильно понял вопрос.
 
Последнее редактирование:
Для данного востребуется пройти в cl_dialogue.lua самого талкера. Именно там хранятся данные derma-панелей.

Самая первая инициализация панели. Приблизительный код на добавление текстуры/панели:
В локале material, в оператор(?) Material закидываешь путь до своей картиночки/текстурочки. Для сохранении прозрачности фона, желательно использовать .png-формат.
Код:
    local material = Material("Le_image.png") // Material("Le_image.png", "noclamp smooth")
    self.Paint = function(pnl, w, h)
        surface.SetDrawColor(color_white)
        surface.SetMaterial(material)
        surface.DrawTexturedRect(0, 0, w, h)
    end

Иль же использовать функцию панели для данного:
Код:
local material = Material("Le_image.png") // Material("Le_image.png", "noclamp smooth")
function PANEL:Paint(w, h)
    surface.SetDrawColor(color_white)
    surface.SetMaterial(material)
    surface.DrawTexturedRect(0, 0, w, h)
end

Изначально стоит выпилить изначальную стандартную панель. С этим, думаю, проблем не возникнет.

Так же, стоит учитывать множество факторов самой текстуры. Под нее нужно подстраивать как текстовый frame, так и буковки.

Выглядит данное, примерно, следующим образом:
D397kfsNxqQ.jpg

UPD: Надеюсь, я правильно понял вопрос.

Да! Именно то что нужно! Спасибо!
 
Для данного востребуется пройти в cl_dialogue.lua самого талкера. Именно там хранятся данные derma-панелей.

Самая первая инициализация панели. Приблизительный код на добавление текстуры/панели:
В локале material, в оператор(?) Material закидываешь путь до своей картиночки/текстурочки. Для сохранении прозрачности фона, желательно использовать .png-формат.
Код:
    local material = Material("Le_image.png") // Material("Le_image.png", "noclamp smooth")
    self.Paint = function(pnl, w, h)
        surface.SetDrawColor(color_white)
        surface.SetMaterial(material)
        surface.DrawTexturedRect(0, 0, w, h)
    end

Иль же использовать функцию панели для данного:
Код:
local material = Material("Le_image.png") // Material("Le_image.png", "noclamp smooth")
function PANEL:Paint(w, h)
    surface.SetDrawColor(color_white)
    surface.SetMaterial(material)
    surface.DrawTexturedRect(0, 0, w, h)
end

Изначально стоит выпилить изначальную стандартную панель. С этим, думаю, проблем не возникнет.

Так же, стоит учитывать множество факторов самой текстуры. Под нее нужно подстраивать как текстовый frame, так и буковки.

Выглядит данное, примерно, следующим образом:
D397kfsNxqQ.jpg

UPD: Надеюсь, я правильно понял вопрос.
hl2 2017-03-20 17-40-31-350.jpg
Так'с, а как исправить вот такую проблему?
 
Самое простое, что можно сделать - это «подцепить» требуемую текстуру к существующей панели.
Твоя возможная проблема - это, либо, неправильная привязка твоей текстуры к требуемой панели, либо что-либо еще связанное с руками.

О чем нам рассказывает стандартная панель Талкера, взятая из директории Неона:
Код:
    local PANEL = {}
    function PANEL:Init()
        local sh = ScrH()/1.5
        self:SetTitle( "Dialogue" )
        self:SetSize( sh*.8, sh )
        self.content = vgui.Create( "Panel", self )
        self.content:Dock( FILL )
        self.btnlist = {}
        self:MakePopup()
        self:Center()
[INDENT]       ...[/INDENT]
    end
Взяв во внимание self:SetSize( sh*.8, sh ), стоит крутиться вокруг него.
Пример построю «локально», без каких-либо свистоперделок самого Талкера. Только фон, не более.

Сам фон выглядит следующим образом:
B3_T9ZlzBgA.jpg

Код:
local scrw, scrh = ScrW(), ScrH()
local function TestFrame()
    local sh = scrh / 1.5
    local frame = vgui.Create("DFrame")
    frame:SetSize(sh*.8, sh)
    frame:SetTitle("Vergjil le framerino")
    frame:Center()
    frame:MakePopup()
end
concommand.Add("FrameTest", TestFrame)

Единственное, что нам нужно - это попросту подкинуть текстуру в «правильное место»:
yQf1Bujvxw8.jpg

Код:
local scrw, scrh = ScrW(), ScrH()
local function TestFrame()
    local frame = vgui.Create("DFrame")
    local sh = scrh / 1.5
    frame:SetSize(sh*.8, sh)
    frame:SetTitle("Vergjil le framerino")
    frame:Center()
    frame:MakePopup()

    local mat = Material( "EXAMPLE_PATH.png", "noclamp smooth" )
    frame.Paint = function(pnl, w, h)
        surface.SetDrawColor(255,255,255,255)
        surface.SetMaterial(mat)
        surface.DrawTexturedRect(0, 0, w, h)
    end
end
concommand.Add("FrameTest", TestFrame)

Куда и что вставлять - разберешь, думаю, сам.

P.S. Ширина и длина твоей текстуры сугубо зависит от размера самой панели (в большинстве случаев).
P.S.S. Возможно, что я повторяюсь, но данное и должно быть решением. Если все равно будут проблемы, то, пожалуйста, подкидывай исходный код, а там, думаю, уже и разберемся.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Главная Регистрация
Назад
Сверху