mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
106 lines
3.1 KiB
Lua
106 lines
3.1 KiB
Lua
|
|
--[[
|
|||
|
|
| 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
|