Lua [Arizona RP] Warehouse + creategun

pulemetov scripts

Участник
Автор темы
21
33
Версия SA-MP
  1. 0.3.7 (R1)
Здаровки всем.
Данный скрипт имеет 2 функционала: быстрый крафт оружия и автовзятие предметов со склада. Скрипт написан только для гетто аудитории.

Идея была взята у ютубера Black Jesus. Поскольку скрипт Джесуса не работал, решил переписать его функционал на Lua.

Warehouse - автовзятие предметов со склада. После ввода команды, автоматически будете брать материалы, либо наркотики, либо аптечки со склада, если он будет открыт.
/tmats - автовзятие матов со склада (берется по 500 патрон)
/tdrugs - автовзятие наркотиков со склада (берется по 200 грамм)
/tmeds - автовзятие аптечек (берется по 5 аптечек)

Creategun - создание оружия через команду, думаю, будет намного удобнее вводить одну команду, чем каждый раз дрочить диалоги.

/cde [кол-во] - крафт Deasert Eagle
/csh [кол-во] - крафт Shotgun
/cm4 [кол-во] - крафт M4
/cri [кол-во]- крафт Country Rifle
/cuz [кол-во]- крафт Micro-Uzi

Посмотреть список команд в игре - /wareinfo

cunODZc.png

[Фотокарточка списка команд]

UPDATE 15/09/21
- Фиксанул счетчик взятие со склада

UPDATE 19/09/21
- Теперь если у вас активно взятие со склада и вы выйдите из интерьера, то взятие автоматически завершится.



Зависимости: moonloader, lib.samp.events

Скрипт в открытом доступе, можете использовать его, редактировать как хотите.
Если у меня имеются какие-либо ошибки, либо знаете как упростить код - пишите в данной теме.
 

Вложения

  • warehouse and creategun.lua
    14 KB · Просмотры: 1,147
Последнее редактирование:

VgrxTxch

Известный
1,163
323
добавь ещё доставание оружие из инвентаря по команде
 

pulemetov scripts

Участник
Автор темы
21
33
В чём смысл этого скрипта?..
Warehouse - автовзятие предетов со склада. После ввода команды, автоматически будете брать матеръялы, либо наркотики, либо аптечки со склада, если он будет открыт.

Creategun - создание оружия через команду, думаю, будет намного удобнее вводить одну команду, чем каждый раз дрочить диалоги.
 

pulemetov scripts

Участник
Автор темы
21
33
Такой скрипт уже есть, половина от скрипта
не видел его) есть и скрипт в клео версии:
Идея была взята у ютубера Black Jesus. Поскольку скрипт Джесуса не работал, решил переписать его функционал на Lua.
как я понял в твоем скрипте пока ты сам не возьмешь метку склада, браться маты не будут, у меня же скрипт сам берет метку, это позволяет не стоять в комнате со складом) полезно будет, например, если много людей стоят и берут маты со склада и места взять метку самостоятельно нет
 
  • Нравится
Реакции: VRush

PanSeek

t.me/dailypanseek
Всефорумный модератор
899
1,745
Что-то я долбанулся и решил посмотреть скрипт, в итоге чуть изменил. Не знаю, нормально будет работать или нет, не проверял:
Lua:
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
А еще можно:
/cde, /csh, /cm4, /cri, /cuz -> сделать одну команду: /craft m4 250
Также и с авто-взятием, /tmats, /tdrugs, /tmeds -> /take (mats; drugs; meds)
И будет числиться, как 3 команды, вместо 9.
 

Вложения

  • warehouse and creategun.lua
    7.9 KB · Просмотры: 78
Последнее редактирование:

pulemetov scripts

Участник
Автор темы
21
33
А еще можно:
/cde, /csh, /cm4, /cri, /cuz -> сделать одну команду: /craft m4 250
Также и с авто-взятием, /tmats, /tdrugs, /tmeds -> /take (mats; drugs; meds)
ну это уже кому как нравится)
возможно некоторые твои строки исправят баги, спасибо, что отписал)
 

Masya228

Новичок
2
0
Что-то я долбанулся и решил посмотреть скрипт, в итоге чуть изменил. Не знаю, нормально будет работать или нет, не проверял:
Lua:
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
А еще можно:
/cde, /csh, /cm4, /cri, /cuz -> сделать одну команду: /craft m4 250
Также и с авто-взятием, /tmats, /tdrugs, /tmeds -> /take (mats; drugs; meds)
И будет числиться, как 3 команды, вместо 9.
т.к автор неактивен, а ты в скриптах шаришь вижу, можешь в данном скрипте задержку меньше поставить, потому что очень долго берет маты со склада, если не сложно
 

PanSeek

t.me/dailypanseek
Всефорумный модератор
899
1,745
т.к автор неактивен, а ты в скриптах шаришь вижу, можешь в данном скрипте задержку меньше поставить, потому что очень долго берет маты со склада, если не сложно
Поставь свою на 47 строке
 

VanoKLR

Известный
658
377
Можно шрифт ещё меньше? Весь экран текст загораживает.
 

Arz rpg

Известный
701
152
Здаровки всем.
Данный скрипт имеет 2 функционала: быстрый крафт оружия и автовзятие предметов со склада. Скрипт написан только для гетто аудитории.

Идея была взята у ютубера Black Jesus. Поскольку скрипт Джесуса не работал, решил переписать его функционал на Lua.

Warehouse - автовзятие предметов со склада. После ввода команды, автоматически будете брать материалы, либо наркотики, либо аптечки со склада, если он будет открыт.
/tmats - автовзятие матов со склада (берется по 500 патрон)
/tdrugs - автовзятие наркотиков со склада (берется по 200 грамм)
/tmeds - автовзятие аптечек (берется по 5 аптечек)

Creategun - создание оружия через команду, думаю, будет намного удобнее вводить одну команду, чем каждый раз дрочить диалоги.

/cde [кол-во] - крафт Deasert Eagle
/csh [кол-во] - крафт Shotgun
/cm4 [кол-во] - крафт M4
/cri [кол-во]- крафт Country Rifle
/cuz [кол-во]- крафт Micro-Uzi

Посмотреть список команд в игре - /wareinfo

cunODZc.png

[Фотокарточка списка команд]

UPDATE 15/09/21
- Фиксанул счетчик взятие со склада

UPDATE 19/09/21
- Теперь если у вас активно взятие со склада и вы выйдите из интерьера, то взятие автоматически завершится.



Зависимости: moonloader, lib.samp.events

Скрипт в открытом доступе, можете использовать его, редактировать как хотите.
Если у меня имеются какие-либо ошибки, либо знаете как упростить код - пишите в данной теме.
Если не сложно можешь сделать задержки или чтобы можно было например написать /cm4 и оно будет по 250 крафтить до этого количества (с задержкой) а то кикает частенько