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

88 lines
2.9 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local reward = 1000 -- sweets
octolib.notify.registerType('addSweets', {
function()
return 'Получить', function(ply, data)
if not ply.halloweenTheme then
return ply:Notify('warning', 'А как же хэллоуинское настроение? Активируй его во вкладке "Хэллоуин" в F4-меню!')
end
ply:AddSweets(data.v)
return true
end
end,
})
local windowsCount = {
12, -- Йорк 3
10, -- Йорк 9
9, -- Йорк 13
11, -- Ирвин 1
6, -- Ирвин 3
8, -- Ирвин 4
7, -- Ирвин 8
6, -- Ирвин 9
8, -- Ирвин 10
5, -- Ирвин 13
10, -- Рурк 1
28, -- Рурк 8
11, -- Джойс 3
12, -- Джойс 5
6, -- Джойс 6
8, -- Джойс 8
11, -- Джойс 10
6, -- Джойс 13
9, -- Джойс 15
9, -- Стефан 2
}
local images = {1, 2, 3, 4, 5, 6, 7, 8} -- for definitions, see cl_config
local function randomImages()
-- generate images
octolib.array.shuffle(images)
-- generate positions
local response = {}
for i, v in RandomPairs(windowsCount) do
response[#response + 1] = {i, math.random(v), images[#response + 1]} -- house id, window id, image id
if #response == 4 then break end
end
return response
end
local function generatePlayerImages(sid64, callback)
local images = randomImages()
octolib.db:PrepareQuery([[INSERT INTO ]] .. CFG.db.main .. [[.halloween_images (steamid64, data) VALUES (?, ?)]], {sid64, util.TableToJSON(images):replace('.0', '')}, function()
callback(images)
end)
end
function halloween.getPlayerImages(ply, callback)
local sid64 = ply:SteamID64()
octolib.db:PrepareQuery([[SELECT data FROM ]] .. CFG.db.main .. [[.halloween_images WHERE steamid64=?]], {sid64}, function(q, st, res)
if not istable(res) or not res[1] then
generatePlayerImages(sid64, callback)
else callback(util.JSONToTable(res[1].data)) end
end)
end
hook.Add('dbg-char.firstSpawn', 'dbg-halloween.images', function(ply)
if game.GetMap() ~= 'rp_eastcoast_v4c' then return end
halloween.getPlayerImages(ply, function(imgs)
if IsValid(ply) then netstream.Start(ply, 'dbg-halloween.images', imgs) end
end)
end)
hook.Add('octolib.event:halloween.done', 'dbg-halloween.images', function(data)
octolib.notify.send(util.SteamIDFrom64(data.user), 'addSweets', 'Тебе прислали конфеты. Забери их в F4', {
text = ('Тебе прислали %s %s'):format(reward, octolib.string.formatCount(reward, 'конфету', 'конфеты', 'конфет')),
v = reward,
})
end)
hook.Add('PlayerCanOOC', 'dbg-halloween.images', function(_, txt)
if txt:find('spooky.wani4ka.ru', 1, true) then
return false, 'Пожалуйста, не распространяй эту ссылку в общих чатах. Лучше отправь ее в личные сообщения тому, кто ее попросил, или в локальный OOC-чат своим друзьям'
end
end)