Files
wnsrc/lua/imagetool/sh_image.lua

106 lines
3.1 KiB
Lua
Raw Normal View History

2024-08-04 22:55:00 +03:00
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
--[[
© AsterionStaff 2022.
This script was created from the developers of the AsterionTeam.
You can get more information from one of the links below:
Site - https://asterion.games
Discord - https://discord.gg/CtfS8r5W3M
developer(s):
Selenter - https://steamcommunity.com/id/selenter
Chop your own wood and it will warm you twice.
]]--
-- Допустимые для загрузки расширения
ImageTool.ValidExtension = {
realm = {
["png"] = true,
["jpg"] = true,
["jfif"] = true
},
content = {
["image/png"] = true,
["image/jpeg"] = true
}
}
-- Использует ли пользователь Image Tool
function ImageTool:IsUsesTool(client)
if !IsValid(client) then return false end
local weapon = client:GetActiveWeapon()
if !IsValid(weapon) then return false end
local class = weapon:GetClass()
if class != "gmod_tool" then return false end
local tool = client:GetTool() and client:GetTool().Name or nil
if tool != "Image Tool" then return false end
return true
end
-- Получаем информацию о Image Tool
function ImageTool:GetToolData(client)
if !self:IsUsesTool(client) then return end
local trace = client:GetEyeTrace()
local position = trace.HitPos
local angles = trace.HitNormal:Angle()
angles:RotateAroundAxis(angles:Up(), 90)
angles:RotateAroundAxis(angles:Forward(), 90)
local tool = client:GetTool()
local imageURL = tool:GetClientInfo("url")
local imageWidth = tool:GetClientInfo("width")
local imageHeight = tool:GetClientInfo("height")
local imageScale = tool:GetClientInfo("scale")
local imageBrightness = tool:GetClientInfo("brightness")
local imageAlpha = tool:GetClientInfo("alpha")
imageURL = imageURL:gsub("cdn.discordapp.com", "media.discordapp.net") -- Fix Discord Cloudfire
local data = {
url = imageURL,
width = imageWidth,
height = imageHeight,
scale = imageScale,
brightness = imageBrightness,
position = position + angles:Up() * 0.5,
angles = angles,
alpha = imageAlpha
}
return data
end
-- Проверка на валидность на сайте картинки
function ImageTool:CheckExtensionImage(body, header)
local content = header["Content-Type"]
local extension = self.ValidExtension
local urlLowerPNG = string.lower(string.sub(body, 2, 4))
local urlLowerJPEG = string.lower(string.sub(body, 7, 10))
if extension.realm[urlLowerPNG] or extension.realm[urlLowerJPEG] or extension.content[content] then
return true
end
return false
end
-- Получаем все картинки на карте
function ImageTool:GetImages()
return ImageTool.imageList or {}
end