local ev = require 'samp.events'
local f = require('moonloader').font_flag
local font = renderCreateFont('Trebuchet MS', 13, f.BOLD + f.SHADOW)
local sw, sh = getScreenResolution()
local activede, activem4, activeri, activeuz, activesh = false, false, false, false, false
local amats, ameds, adrugs = false, false, false
local SumMats, SumMeds, SumDrugs = 0, 0, 0
local tagGun = '[Creategun] {ffffff}'
local tagWarehouse = '[Warehouse] {ffffff}'
local author_text = '{ffffff}Список команд скрипта:\n\n{00FF00}WareHouse:{EE82EE}\n/tmats\t\t{ffffff}-\tАвтоматическое взятие патрон со склада.\n{EE82EE}/tmeds\t\t{ffffff}-\tАвтоматическое взятие аптечек со склада.\n{EE82EE}/tdrugs\t{ffffff}-\tАвтоматическое взятие наркотиков со склада.\n\n{00FF00}CreateGun:\n{EE82EE}/cde {ffffff}[кол-во патрон]\t\t-\tСоздает оружие Desert Eagle.\n{EE82EE}/csh {ffffff}[кол-во патрон]\t\t-\tСоздает оружие Shotgun.\n{EE82EE}/cm4 {ffffff}[кол-во патрон]\t\t-\tСоздает оружие M4.\n{EE82EE}/cri {ffffff}[кол-во патрон]\t\t-\tСоздает оружие Rifle.\n{EE82EE}/cuz {ffffff}[кол-во патрон]\t\t-\tСоздает оружие Micro-Uzi.\n\n\n\t\t\t{F0E68C}author: Pulemetov.Scripts'
local function msg(text) sampAddChatMessage(text, 0x32CD32) end
function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
while not isSampAvailable() do wait(100) end
msg('[Warehouse + Creategun] {ffffff}Загружен. Посмотреть команды скрипта -{EE82EE} /wareinfo.')
sampRegisterChatCommand('cde', function(arg) craftGun(arg, '/cde', acde, activede) end)
sampRegisterChatCommand('cm4', function(arg) craftGun(arg, '/cm4', acm4, activem4) end)
sampRegisterChatCommand('cri', function(arg) craftGun(arg, '/cri', acri, activeri) end)
sampRegisterChatCommand('cuz', function(arg) craftGun(arg, '/cuz', acuz, activeuz) end)
sampRegisterChatCommand('csh', function(arg) craftGun(arg, '/csh', acsh, activesh) end)
sampRegisterChatCommand('tmats', function() amats = not amats; if amats then ameds, adrugs = false, false warehouse() else SumMats = 0 end end)
sampRegisterChatCommand('tmeds', function() ameds = not ameds; if ameds then amats, adrugs = false, false warehouse() else SumMeds = 0 end end)
sampRegisterChatCommand('tdrugs', function() adrugs = not adrugs; if adrugs then amats, ameds = false, false warehouse() else SumDrugs = 0 end end)
sampRegisterChatCommand('wareinfo', function() sampShowDialog(1, '{ffffff}Information', author_text, 'Close', _, 0) end)
while true do
wait(0)
interior = getActiveInterior()
if amats then renderFontDrawText(font, '{7CFC00}Take {ffffff}mats{7CFC00} from the warehouse\n You take {ffffff}'..SumMats..' {7CFC00}mats.', sw/2.4, sh/1.25, -1) end
if ameds then renderFontDrawText(font, '{7CFC00}Take {ffffff}meds{7CFC00} from the warehouse\n You take {ffffff}'..SumMeds..' {7CFC00}meds.', sw/2.5, sh/1.25, -1) end
if adrugs then renderFontDrawText(font, '{7CFC00}Take {ffffff}drugs{7CFC00} from the warehouse\n You take {ffffff}'..SumDrugs..' {7CFC00}drugs.', sw/2.5, sh/1.25, -1) end
end
end
function warehouse()
if (amats or adrugs or ameds) and (interior == 170 or interior == 171 or interior == 172 or interior == 173 or interior == 174 or interior == 188) then
lua_thread.create(function()
while not sampIsDialogActive() do
wait(300)
if interior == 188 then sampSendPickedUpPickup(149)
elseif interior == 171 then sampSendPickedUpPickup(141)
elseif interior == 174 then sampSendPickedUpPickup(140)
elseif interior == 172 then sampSendPickedUpPickup(143)
elseif interior == 170 then sampSendPickedUpPickup(144)
elseif interior == 173 then sampSendPickedUpPickup(142) end
if amats == false and adrugs == false and ameds == false then break end
if interior == 0 then amats, adrugs, ameds = false, false, false end
end
end)
else
msg(tagWarehouse..'Нужно находится в интерьере банды.'); amats, ameds, adrugs = false, false, false
end
end
function ev.onShowDialog(id, style, title, button1, button2, text)
if activede then craftGunDialog(0, acde, activede, 'Desert Eagle') end
if activem4 then craftGunDialog(3, acm4, activem4, 'M4') end
if activeri then craftGunDialog(5, acri, activeri, 'Rifle') end
if activeuz then craftGunDialog(7, acuz, activeuz, 'Mirco-Uzi') end
if activesh then craftGunDialog(1, acsh, activesh, 'Mirco-Uzi') end
-- warehouse
if (amats or ameds or adrugs) and id == 216 then sampSendDialogResponse(216, 1, _, _); return false end
if id == 217 then
if amats then sampSendDialogResponse(217, 1, 3,_); return false end
if ameds then warehouseCmp(meds3D, 5, ameds, 11, 'аптечек') end
if adrugs then warehouseCmp(Drugs3D, 20, adrugs, 2, 'наркотиков') end
end
if (amats and id == 221) or (ameds and id == 2171) or (adrugs and id == 220) then
sampSendDialogResponse(id, 1, _, (amats and 500) or (ameds and 5) or (adrugs and 200))
return false
end
end
function ev.onServerMessage(color, text)
if text:find('Вы не можете создавать оружие вне своей территории') then activede, activem4, activeri, activeuz, activesh = false, false, false, false, false end
if text:find('Лидер вашей организации закрыл общак') or text:find('Вы не состоите в этой организации') then amats, ameds, adrugs = false, false, false end
local nick = sampGetPlayerNickname(select(2,sampGetPlayerIdByCharHandle(playerPed)))
if amats and text:find(nick..' забрал с общака (%d+) патронов') then
mat = text:match('забрал с общака (%d+) патронов'); SumMats = SumMats + mat
end
if ameds and text:find(nick..' забрал с общака (%d+) аптечек') then
med = text:match('забрал с общака (%d+) аптечек'); SumMeds = SumMeds + med
end
if adrugs and text:find(nick..' забрал с общака (%d+)(.+) наркотиков') then
drug = text:match('забрал с общака (%d+)(.+) наркотиков'); SumDrugs = SumDrugs + drug
end
end
function ev.onCreate3DText(id, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, text)
local drugs, meds = 'Наркотики: {FAAC58}(%d+)', 'Аптечки: {FAAC58}(%d+)'
if text:find(drugs) then Drugs3D = text:match(drugs) end
if text:find(meds) then meds3D = text:match(meds) end
end
--others funcs
function craftGun(ammo, text, varAmmo, var)
if #ammo == 0 then msg(tagGun..'Ошибка ввода! Правильный ввод: '..text..' [кол-во патрон]')
elseif tonumber(ammo) >= 301 then msg(tagGun..'Используйте значение меньше 300 патрон.')
elseif tonumber(ammo) > 0 and tonumber(ammo) <= 300 then
varAmmo = tonumber(ammo); var = true
if var then sampSendChat('/creategun') end
end
end
function craftGunDialog(send, var, activeVar, textGun)
if id == 7546 then sampSendDialogResponse(7546, 1, send, _); return false end
if id == 7545 and text:find('хватит на {FBAD2F}(%d+){FFFFFF} патронов') then
local pt = text:match('хватит на {FBAD2F}(%d+){FFFFFF} патронов')
if tonumber(pt) == 0 or tonumber(pt) < var then
msg(tagGun..'У вас не хватает материалов на крафт данного оружия')
sampSendDialogResponse(7545, 0, _, _); activeVar = false; return false
else
sampSendDialogResponse(7545, 1, _, var)
msg(tagGun..'Вы скрафтили '..textGun..'. У вас осталось матов на '..pt-var..' патрон.')
activeVar = false; return false
end
end
end
function warehouseCmp(varTonumber, number, var, send, text)
if tonumber(varTonumber) < number then
msg(tagWarehouse..'На общаке меньше '..number..text..'.')
var = false; sampSendDialogResponse(217, 0, _, _); return false
else
sampSendDialogResponse(217, 1, send,_); return false
end
end