dobrograd-13-06-2022/garrysmod/addons/_config/lua/config/sweets-items.lua
Jonny_Bro (Nikita) e4d5311906 first commit
2023-11-16 15:01:19 +05:00

331 lines
13 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 function attItem(mdl)
local attData = simfphys.getAttByModel(mdl)
return {'car_att', {
name = attData.name,
desc = attData.desc,
icon = attData.icon,
mass = attData.mass,
volume = attData.volume,
colorable = not attData.noPaint or nil,
attmdl = attData.mdl,
model = attData.mdl,
skin = attData.skin,
scale = attData.scale,
}}
end
local function sendItem(item, sentNo, sentYes)
return function(ply, amount)
local data
if isstring(item) then data = {{ item, amount }}
elseif istable(item) then
data = octolib.array.series(item, amount)
end
local sent, msg = halloween.sendItems(ply, data)
if not sent then
ply:Notify('warning', msg or sentNo)
else ply:Notify('hint', sentYes) end
return sent
end
end
local function icon(name)
return 'octoteam/icons-halloween/' .. name .. '.png'
end
halloween.registerItem('mystery_sweet', {
name = 'Загадочная конфета',
icon = icon('mystery_sweet'),
desc = 'Конфета, обладающая случайным вкусом. Арбуз? Яблоко? А может, рвота или ушная сера? Попробуй и узнаешь!',
price = 100,
deliver = sendItem('h20_sweets', 'Не удалось отправить загадочные конфеты', 'Загадочные конфеты отправлены по почте и придут через пару минут'),
})
halloween.registerItem('guitar', {
name = 'Гитара',
icon = icon('guitar'),
desc = 'Позволяет скрасить свое одиночество или задать атмосферу в компании',
price = 300,
deliver = sendItem({'weapon', {
name = L.guitar,
icon = octolib.icons.color('guitar'),
model = 'models/custom/guitar/m_d_45.mdl',
wepclass = 'guitar',
mass = 2,
volume = 5,
ammoadd = 0,
clip1 = 0,
clip2 = 0,
}}, 'Не удалось отправить гитару', 'Гитара отправлена по почте и придет через пару минут'),
})
local masks = { 'cleaver', 'monkey', 'zombie', 'hockey', 'gingerbread', 'top_hat', 'doctor', 'pig', 'bear', 'hoff_widesmile', 'hoff_tears', 'hoff_tinysmile', 'hoff_dude', 'hoff_killme', 'hoff_helpme' }
for _, v in ipairs(masks) do
local mask = CFG.masks[v]
local name = mask.name
if mask.desc then name = name .. ' ' .. mask.desc end
local item = {
name = mask.name,
icon = mask.icon,
desc = mask.desc,
mask = v,
}
halloween.registerItem('mask_' .. v, {
name = name,
icon = icon('mask_' .. v),
skin = mask.skin,
desc = 'Стильно, модно, молодежно. Можно надеть на голову',
price = 3000,
deliver = sendItem({'h_mask', item}, 'Не удалось отправить маску', 'Маска отправлена по почте и придет через пару минут'),
})
halloween.registerCaseItem('mask_' .. v, {
name = name,
icon = icon('mask_' .. v),
maxMass = 0.3,
maxVolume = 0.5,
give = function(_, cont)
cont:AddItem('h_mask', item)
end,
})
end
halloween.registerItem('theme', {
name = 'Очки с оранжевыми линзами',
icon = icon('theme'),
desc = 'Понравилось хэллоуинское настроение? Ты можешь продлить его, захватив с собой эти очки с оранжевыми линзами!\n\n- Хэллоуинская тема. Ее можно будет включить в любой момент в настройках',
price = 5000,
max = 1,
deliver = function(ply)
ply:SetDBVar('halloweenTheme', true)
ply:SetLocalVar('halloweenTheme', true)
ply:ConCommand('octogui_reloadf4')
ply:Notify('hint', 'Хэллоуинскую тему можно активировать в разделе "Другое" в настройках')
return true
end,
})
halloween.registerItem('jar', {
name = 'Банка с глазами',
icon = icon('jar'),
desc = 'Старая банка с устрашающими глазами. Будет хорошо смотреться на приборной панели твоего автомобиля!',
price = 6000,
deliver = function(ply, amount)
local data = octolib.array.series(attItem('models/props/spookington/eyejar.mdl'), amount)
local sent, msg = halloween.sendItems(ply, data)
if not sent then
ply:Notify('warning', msg or 'Не удалось отправить банку с глазами')
else ply:Notify('hint', 'Банка с глазами отправлена по почте и придет через пару минут') end
return sent
end,
})
halloween.registerItem('spider', {
name = 'Паучок',
icon = icon('spider'),
desc = 'Страшный, волосатый, но отчасти милый хэллоуинский паучок. Представляешь, если он повиснет в салоне твоего автомобиля? Это будет просто безумно круто!',
price = 6000,
deliver = function(ply, amount)
local data = octolib.array.series(attItem('models/props/spookington/spider_toy.mdl'), amount)
local sent, msg = halloween.sendItems(ply, data)
if not sent then
ply:Notify('warning', msg or 'Не удалось отправить паучка')
else ply:Notify('hint', 'Паучок отправлен по почте и придет через пару минут') end
return sent
end,
})
halloween.registerItem('sedan', {
name = 'Седан',
icon = icon('sedan'),
desc = 'Подарочный сертификат автосалона на эксклюзивный черный седан!\n\n- Автомобиль будет доставлен в гараж\n- При продаже авто деньги не начислятся',
price = 8500,
deliverAsync = function(ply, amount, callback)
octolib.func.parallel(
octolib.array.series(function(res)
carDealer.ownVeh(ply:SteamID(), 'halloween_sedan', function(_, plate)
res(plate)
end)
end, amount)
):Then(function(plates)
callback(true)
if not IsValid(ply) then return end
if amount == 1 then
ply:Notify('hint', 'Автомобиль с регистрационным номером ' .. plates[1] .. ' доставлен в твой гараж')
elseif amount == 2 then
ply:Notify('hint', 'Автомобили с регистрационными номерами ' .. plates[1] .. ' и ' .. plates[2] .. ' доставлены в твой гараж')
else
local last = plates[#plates]
table.remove(plates)
ply:Notify('hint', 'Автомобили с регистрационными номерами ' .. string.Implode(', ', plates) .. ' и ' .. last .. ' доставлены в твой гараж')
end
end):Catch(function(err)
ErrorNoHalt(err)
callback(false)
end)
end,
})
halloween.registerItem('pickup', {
name = 'Пикап',
icon = icon('pickup'),
desc = 'Подарочный сертификат автосалона на эксклюзивный оранжевый пикап!\n\n- Автомобиль будет доставлен в гараж\n- При продаже авто деньги не начислятся',
price = 8500,
deliverAsync = function(ply, amount, callback)
octolib.func.parallel(
octolib.array.series(function(res)
carDealer.ownVeh(ply:SteamID(), 'halloween_pickup', function(_, plate)
res(plate)
end)
end, amount)
):Then(function(plates)
callback(true)
if not IsValid(ply) then return end
if amount == 1 then
ply:Notify('hint', 'Автомобиль с регистрационным номером ' .. plates[1] .. ' доставлен в твой гараж')
elseif amount == 2 then
ply:Notify('hint', 'Автомобили с регистрационными номерами ' .. plates[1] .. ' и ' .. plates[2] .. ' доставлены в твой гараж')
else
local last = plates[#plates]
table.remove(plates)
ply:Notify('hint', 'Автомобили с регистрационными номерами ' .. string.Implode(', ', plates) .. ' и ' .. last .. ' доставлены в твой гараж')
end
end):Catch(function(err)
ErrorNoHalt(err)
callback(false)
end)
end,
})
-- CASE ITEMS
halloween.registerCaseItem('sweets_low', {
name = 'Загадочные конфеты',
icon = icon('mystery_sweet'),
maxMass = 0.03,
maxVolume = 0.03,
give = function(ply, cont)
local sweets = math.random(3)
cont:AddItem('h20_sweets', sweets)
ply:Notify('hint', 'Несколько загадочных конфет добавлено тебе в инвентарь')
end,
})
halloween.registerCaseItem('money_low', {
name = 'Потрепанный кошель',
icon = icon('money_low'),
maxMass = 0.04,
maxVolume = 0.04,
give = function(ply, cont)
local money = math.random(4000)
cont:AddItem('money', money)
ply:Notify('hint', 'Как неожиданно и приятно... ' .. DarkRP.formatMoney(money) .. ' добавлено тебе в инвентарь')
end,
})
halloween.registerCaseItem('money_large', {
name = 'Мешок с монетками',
icon = icon('money_large'),
maxMass = 0.25,
maxVolume = 0.25,
give = function(ply, cont)
local money = math.random(4000, 25000)
cont:AddItem('money', money)
ply:Notify('hint', 'Вот так везение... ' .. DarkRP.formatMoney(money) .. ' добавлено тебе в инвентарь')
end,
})
halloween.registerCaseItem('sweets_large', {
name = 'Горсть конфет',
icon = icon('mystery_sweet'),
maxMass = 0.13,
maxVolume = 0.13,
give = function(ply, cont)
local sweets = math.random(3, 13)
cont:AddItem('h20_sweets', sweets)
ply:Notify('hint', sweets .. octolib.string.formatCount(sweets, ' загадочная конфета добавлена', ' загадочных конфеты добавлены', ' загадочных конфет добавлено') .. ' тебе в инвентарь')
end,
})
halloween.registerCaseItem('candy', {
name = 'Испорченный леденец',
icon = icon('candy'),
maxMass = 0.1,
maxVolume = 0.05,
give = function(_, cont)
cont:AddItem('souvenir', {
name = 'Испорченный леденец',
icon = octolib.icons.color('food_candy2'),
model = 'models/griim/foodpack/candycane.mdl',
desc = 'Старый леденец. Присмотревшись к нему можно увидеть паутину. Лучше не пытаться его съесть, а как сувенир - очень даже неплохая вещица!',
})
end,
})
halloween.registerCaseItem('booze', {
name = 'Хэллоуинская настойка',
icon = icon('booze'),
maxMass = 1.5,
maxVolume = 1,
give = function(_, cont)
cont:AddItem('drug_booze2', {
name = 'Хэллоуинская настойка',
icon = octolib.icons.color('bottle_wine'),
})
end,
})
halloween.registerCaseItem('os_dobro', {
name = 'Карта клуба почетных жителей "Добродей"',
icon = icon('os_dobro'),
give = function(ply)
ply:osGiveItem('jobs_1m')
ply:Notify('hint', 'Ты получил плюшку "Добродей" на месяц! Активировать ее можно в F4 -> Плюшки')
end,
})
halloween.registerCaseItem('att_pumpkin', {
name = 'Тыква-лампа для автомобиля',
icon = icon('pumpkin'),
maxMass = 1,
maxVolume = 3,
give = function(_, cont)
cont:AddItem(unpack(attItem('models/halloween2015/pumbkin_n_f01.mdl')))
end,
})
halloween.registerCaseItem('att_spider', {
name = 'Паучок для автомобиля',
icon = icon('spider'),
maxMass = 0.7,
maxVolume = 1,
give = function(_, cont)
cont:AddItem(unpack(attItem('models/props/spookington/spider_toy.mdl')))
end,
})
-- CASES
halloween.registerCase('gift', {
name = 'Подарок от Джека',
icon = icon('gift'),
desc = 'Я кладу какой-то предмет в коробочку и отправляю тебе по почте. Что за предмет - узнаешь, когда откроешь ;)',
price = 750,
items = {
{31, 'sweets_low'},
{20, 'booze'},
{20, 'candy'},
{13, 'sweets_large'},
{9, 'money_low'},
{5, 'money_large'},
{2, 'os_dobro'},
{1.5, 'att_pumpkin'},
{1.5, 'att_spider'},
},
})
halloween.registerCase('mask', {
name = 'Какая-то маска',
icon = icon('case-masks'),
desc = 'Теряешься в моем огромном ассортименте масок? Я могу помочь выбрать! Никаких предпочтений по маскам у меня нет, поэтому я честно выберу случайную маску. Никакого мошенничества!',
price = 3000,
items = octolib.table.mapSequential(masks, function(v) return {1, 'mask_' .. v} end),
})