Баннеры (картинки) на карту

#todo хочу написать инструкцию по добавлению картинок на карту. Создал эту тему и вешаю на нее напоминание, чтобы таки написать пост, когда появится настроение

P.S. matex для оптимизированного и простого скачивания картинок, сами картинки отрисовать через невидимую энтити + пермапропс для их сохранения (как текстскрин), либо через хардкод позиций и ссылок через какой-то конфиг. Первый вариант более юзер-френдли и универсальнее (можно закодить так, чтобы люди могли покупать картины например без лишнего геморроя)

P.P.S. Ниже пересылаю сообщения с оригинальной темы, которые могут быть полезны

1 лайк
local positions = {
    rp_bangclaw_easy = {
        {Pos = Vector( -3002.5, 1843, 330 ), Ang = Angle( 0, 90, 90 ), Size = {w = 564, h = 294}, Name = "banner", URL = "https://i.imgur.com/jX5GU9o.png"},
        {Pos = Vector( -1549, 3907.4, 348.1 ), Ang = Angle( 0, 0, 90 ), Size = {w = 564, h = 294}, Name = "nabor", URL = "https://i.imgur.com/zgiVyd9.png"},
        {Pos = Vector( -634.8, 5039, 363 ), Ang = Angle( 0, 90, 90 ), Size = {w = 564, h = 294}, Name = "banner", URL = "https://i.imgur.com/jX5GU9o.png"},
        {Pos = Vector( -4248, 1035, 15 ), Ang = Angle( 0, 149.8, 11 ), Size = {w = 170, h = 170}, Name = "bannercube", URL = "https://i.imgur.com/OD0MbjZ.png"},
        {Pos = Vector( -1966, 4050, 23.6 ), Ang = Angle( 0, 240, 11 ), Size = {w = 170, h = 170}, Name = "bannercube", URL = "https://i.imgur.com/OD0MbjZ.png"},
        {Pos = Vector( 4549.5, 3085, 275), Ang = Angle( 0, 90, 90 ), Size = {w = 564, h = 294}, Name = "banner", URL = "https://i.imgur.com/jX5GU9o.png"},
        {Pos = Vector(  1287.1, 660, -1135), Ang = Angle( 0, 90, 90 ), Size = {w = 634, h = 226}, Name = "bannerjail", URL = "https://i.imgur.com/lhyMUrw.png"},
        {Pos = Vector( 323.4, 2226, 301 ), Ang = Angle( 0, 90, 90 ), Size = {w = 758, h = 374}, Name = "banner", URL = "https://i.imgur.com/jX5GU9o.png"},
        {Pos = Vector( -22.9, 2459, 301 ), Ang = Angle( 0, 180, 90 ), Size = {w = 758, h = 374}, Name = "banner", URL = "https://i.imgur.com/jX5GU9o.png"},
        {Pos = Vector( -369.7, 2225, 301 ), Ang = Angle( 0, 270, 90 ), Size = {w = 758, h = 374}, Name = "banner", URL = "https://i.imgur.com/jX5GU9o.png"},
        -- {Pos = Vector( -1676, 2956, 317 ), Ang = Angle( 0, 0, 90 ), Size = {w = 124, h = 630}, Name = "nabor", URL = "https://i.imgur.com/zgiVyd9.png"},
        -- {Pos = Vector( -1676, 2972, 317 ), Ang = Angle( 0, 180, 90 ), Size = {w = 124, h = 630}, Name = "nabor", URL = "https://i.imgur.com/zgiVyd9.png"},
        --  КАЗИНО
        -- {Pos = Vector( 474.02, 204, 180 ), Ang = Angle( 0, 90, 90 ), Size = {w = 180, h = 280}, Name = "casino", URL = "https://i.imgur.com/jrnGlRV.png"},
        -- {Pos = Vector( 474.02, 76, 180 ), Ang = Angle( 0, 90, 90 ), Size = {w = 180, h = 280}, Name = "casino", URL = "https://i.imgur.com/jrnGlRV.png"},
        -- {Pos = Vector( 490.02, -308, 188 ), Ang = Angle( 0, 90, 90 ), Size = {w = 180, h = 280}, Name = "casino", URL = "https://i.imgur.com/jrnGlRV.png"},
        -- {Pos = Vector( 490.02, -436, 188 ), Ang = Angle( 0, 90, 90 ), Size = {w = 180, h = 280}, Name = "casino", URL = "https://i.imgur.com/jrnGlRV.png"},
        -- {Pos = Vector( 573, -497.9, 166.9 ), Ang = Angle( 0, 180, 90 ), Size = {w = 186, h = 336}, Name = "casino2", URL = "https://i.imgur.com/lnRJ7g3.png"},
        -- {Pos = Vector( 683, -497.9, 166.9 ), Ang = Angle( 0, 180, 90 ), Size = {w = 186, h = 336}, Name = "casino2", URL = "https://i.imgur.com/lnRJ7g3.png"},
    }
}

for k, v in pairs(positions[game.GetMap()]) do
    http.Fetch( v.URL, function( data )
        file.Write( v.Name .. ".png", data )
    end )
end

hook.Add( "PostDrawTranslucentRenderables", "BannerIMG", function()
if not positions[game.GetMap()] then return end
    local lp_pos = LocalPlayer():GetPos()
    for k, v in pairs(positions[game.GetMap()]) do
        if lp_pos:DistToSqr( v.Pos ) < 9000000 then
            local w,h = v.Size.w, v.Size.h
            cam.Start3D2D( v.Pos, v.Ang, 0.4 ) -- Тут выставляется размер картинки
                surface.SetMaterial( Material( "data/"  .. v.Name .. ".png" ) )
                surface.SetDrawColor( Color( 255, 255, 255 ) )
                surface.DrawTexturedRect( -w/2, -h/2, w, h )
            cam.End3D2D( )
        end
    end
end )
1 лайк

Как сделать банеры на карту как на меджике(не реклама)
Дайте пж скрипт

либо в хаммере просто прикрепили фотку

local function mat(a)
	return Material(a, "smooth")
end

local cfg = {
	gm_construct = {
		{
			pos = Vector(-1400, -1023, 0),
			ang = Angle(0, 180, 90),
			mat = mat("hrp/gui/scoreboard/logo.png"),
			size = 0.25,
			w = 512,
			h = 512
		},
		{
			pos = Vector(-1600, -1023, -90),
			ang = Angle(45, 180, 90),
			mat = mat("hrp/gui/notify/error.png"),
			size = 0.35,
			w = 128,
			h = 64
		},
	}
}

hook.Add("PostDrawOpaqueRenderables", "IGS.ShowBanners", function()
	local map_cfg = cfg[game.GetMap()]
	if not map_cfg then return end

	for _, c in ipairs(map_cfg) do
		cam.Start3D2D( c.pos, c.ang, c.size )
			surface.SetDrawColor( 255, 255, 255, 255 )
			surface.SetMaterial( c.mat )
			surface.DrawTexturedRect( 0, 0, c.w, c.h )
		cam.End3D2D()
	end
end)

1 лайк

А ты добавил аддон в свою коллекцию?
Прописал у себя на сервере скачивание этого аддона? (Workshop.lua)
А лучше поставь это

Что бы не тратить время, установить: GitHub - In-memory-of-CODE-BLUE/Blues-Decals кружок находится в энтити, принимает картинки только с имгура

1 лайк