dobrograd-13-06-2022/garrysmod/addons/event-halloween/lua/halloween/cl_dev.lua
Jonny_Bro (Nikita) e4d5311906 first commit
2023-11-16 15:01:19 +05:00

149 lines
4.2 KiB
Lua

local dist, distFade = 2000 * 2000, 300 * 300
local image = {
pos = Vector(0,0,0),
ang = Angle(0,0,0),
url = 'BBZ7st2.png',
w = 284,
h = 633,
}
local function drawImage()
local myPos = EyePos()
local al = math.Clamp(1 - (image.pos:DistToSqr(myPos) - distFade) / dist, 0, 1)
if al <= 0 then return end
local mat = octolib.getImgurMaterial(image.url)
if mat == octolib.loadingMat then return end
cam.Start3D2D(image.pos, image.ang, 0.1)
surface.SetDrawColor(255, 165, 0)
surface.DrawRect(0, 0, image.w, image.h)
surface.SetDrawColor(0, 0, 0)
surface.SetMaterial(mat)
surface.DrawTexturedRect(0, 0, image.w, image.h)
cam.End3D2D()
end
local fr
concommand.Add('halloween_imgs', function()
if IsValid(fr) then fr:Remove() end
fr = vgui.Create 'DFrame'
fr:SetSize(300, 300)
fr:AlignBottom(10)
fr:AlignLeft(10)
local tr = LocalPlayer():GetEyeTrace()
local pos, ang = tr.HitPos, tr.HitNormal:Angle()
ang:RotateAroundAxis(ang:Up(), 90)
ang:RotateAroundAxis(ang:Forward(), 90)
local prop = fr:Add 'DProperties'
prop:Dock(FILL)
local function slider(cat, name, min, max, change, decimals)
local r = prop:CreateRow(cat, name)
r:Setup('Float', {min = min, max = max})
r:SetValue(0)
local l = r:GetChild(1):GetChild(0)
l.Paint = function() end
l:GetChild(0):SetDecimals(decimals or 2)
function r:DataChanged(v) change(v) end
return r
end
local cPos, cAng = Vector(0, 0, 0.25), Angle(0, 0, 0)
slider('Позиция', 'X', -10, 10, function(val)
cPos.x = val
image.pos, image.ang = LocalToWorld(cPos, cAng, pos, ang)
end):SetValue(0)
slider('Позиция', 'Y', -10, 10, function(val)
cPos.y = val
image.pos, image.ang = LocalToWorld(cPos, cAng, pos, ang)
end):SetValue(0)
slider('Позиция', 'Z', -10, 10, function(val)
cPos.z = val
image.pos, image.ang = LocalToWorld(cPos, cAng, pos, ang)
end):SetValue(0.5)
slider('Угол', 'P', -180, 180, function(val)
cAng.p = val
image.pos, image.ang = LocalToWorld(cPos, cAng, pos, ang)
end):SetValue(ang.p)
slider('Угол', 'Y', -180, 180, function(val)
cAng.y = val
image.pos, image.ang = LocalToWorld(cPos, cAng, pos, ang)
end):SetValue(ang.y)
slider('Угол', 'R', -180, 180, function(val)
cAng.r = val
image.pos, image.ang = LocalToWorld(cPos, cAng, pos, ang)
end):SetValue(ang.r)
image.pos, image.ang = LocalToWorld(cPos, cAng, pos, ang)
slider('Размеры', 'W', 1, 1000, function(val)
image.w = val
end):SetValue(image.w)
slider('Размеры', 'H', 1, 1000, function(val)
image.h = val
end):SetValue(image.h)
hook.Add('PostDrawOpaqueRenderables', 'dbg-halloween.images.dev', drawImage)
for _, pnl in pairs(prop.Categories) do
pnl.Container.Paint = octolib.func.zero
end
octolib.button(fr, 'Скопировать', function()
SetClipboardText(('{ Vector(%.1f,%.1f,%.1f), Angle(%.1f,%.1f,%.1f), %.1f, %.1f },'):format(
image.pos.x, image.pos.y, image.pos.z,
image.ang.p, image.ang.y, image.ang.r,
image.w, image.h):gsub('-0.0', '0'):gsub('%.0', ''))
end)
function fr:OnRemove()
hook.Remove('PostDrawOpaqueRenderables', 'dbg-halloween.images.dev')
end
end)
local bounds = Vector(10,10,10)
local offset = Vector(0,0,10)
local lootboxFr
concommand.Add('halloween_lootbox', function()
local ply = LocalPlayer()
if IsValid(lootboxFr) then lootboxFr:Remove() end
hook.Add('PostDrawTranslucentRenderables', 'dbg-halloween.lootbox.dev', function()
local tr = ply:GetEyeTrace()
local pos = tr.HitPos + offset
local col = util.TraceHull({
mins = -bounds,
maxs = bounds,
start = pos,
endpos = pos,
ignoreworld = true,
}).Hit and color_red or color_green
render.DrawWireframeBox(pos, Angle(0,0,0), -bounds, bounds, col, true)
end)
lootboxFr = vgui.Create 'DFrame'
lootboxFr:SetSize(300, 100)
lootboxFr:AlignBottom(10)
lootboxFr:AlignLeft(10)
local btn = lootboxFr:Add('DButton')
btn:Dock(FILL)
btn:SetText('Скопировать')
function btn:DoClick()
local pos = ply:GetEyeTrace().HitPos + offset
SetClipboardText('Vector(' .. math.Round(pos.x, 1) .. ', ' .. math.Round(pos.y, 1) .. ', ' .. math.Round(pos.z, 1) .. '),')
end
function lootboxFr:OnRemove()
hook.Remove('PostDrawTranslucentRenderables', 'dbg-halloween.lootbox.dev')
end
end)