Назад к блогу
Tutorial6 мин чтения

FiveM Скрипты системы наркотиков: выращивание, продажа, обработка

Создайте погружающую систему наркотиков для FiveM. Выращивание, переработка, циклы продажи, связи с территориями банд и лучшие скрипты наркотиков для ролевых серверов.

Agency Scripts

Основатель и ведущий разработчик Agency Scripts

Понимание цепочек обработки наркотиков

Системы наркотиков , одни из самых популярных криминальных активностей на FiveM ролевых серверах, так как они предоставляют структурированный многоэтапный игровой цикл, стимулирующий сотрудничество, контроль территорий и принятие решений с учетом риска и награды. Хорошо продуманная цепочка обработки наркотиков обычно включает сбор, переработку, упаковку и продажу, где сырье нужно собирать в определенных местах, перерабатывать в скрытых лабораториях, упаковывать в продаваемые единицы и затем распространять NPC или другим игрокам. Каждый этап должен требовать времени, специфических предметов и желательно разных локаций, создавая естественные уязвимости для вмешательства полиции. Ключ к увлекательности системы , сделать каждый шаг значимым, а не просто кликами по меню. Рассмотрите добавление мини-игр для переработки, случайных вариаций урожая и уровней качества, влияющих на конечную цену продажи.

Создание системы рецептов крафта

Система крафта служит основой для обработки наркотиков и может быть расширена на легальные предметы, такие как оружие, броня и инструменты. Определите рецепты с помощью структурированной таблицы, которая сопоставляет входные предметы с выходными, указывая количество, время обработки и требования к навыкам. Вот базовая структура конфигурации рецепта:

Config.Recipes = {
    ['meth_raw'] = {
        label = 'Cook Methamphetamine',
        inputs = {
            { item = 'pseudoephedrine', count = 3 },
            { item = 'lithium_strip', count = 1 },
            { item = 'solvent', count = 2 },
        },
        outputs = {
            { item = 'meth_uncut', count = 1, chance = 85 },
            { item = 'meth_uncut', count = 2, chance = 15 },
        },
        duration = 45000, -- milliseconds
        skillRequired = 'chemistry',
        skillMin = 20,
        animation = 'cooking',
        prop = 'prop_meth_setup',
    },
}

Каждый рецепт должен проверять, что у игрока есть все необходимые ингредиенты в инвентаре перед началом крафта. Используйте исключительно серверную проверку, чтобы предотвратить эксплойты. Запускайте индикатор прогресса или мини-игру на клиенте, пока сервер обрабатывает фактическое преобразование предмета после завершения времени. Добавление системы с шансом на результат, где более высокий уровень навыка даёт лучшие результаты, даёт игрокам стимул специализироваться и вкладывать время в криминальную карьеру.

Проектирование точек продажи и распределения

Точки продажи , это места, где игроки конвертируют обработанные товары в деньги, и они должны быть спроектированы для создания игрового процесса, а не служить простыми банкоматами. Реализуйте NPC точки продажи, разбросанные по карте, где игроки могут сбывать наркотики по разным ценам в зависимости от спроса и предложения. Если слишком много игроков продают в одном месте за короткий промежуток времени, цена падает, что стимулирует игроков распределяться и искать менее насыщенные рынки. Добавьте кулдаун для каждого игрока на каждое место, чтобы предотвратить быструю продажу. Взаимодействие с продажей должно занимать время и оставлять игрока уязвимым, создавая возможности для ограблений и полицейских засад. Рассмотрите возможность внедрения системы репутации, где частые продавцы в одном месте завоевывают доверие NPC, открывая лучшие цены, но также повышая уровень преследования со стороны правоохранительных органов.

-- Server-side sell point logic
RegisterNetEvent('drugs:sell')
AddEventHandler('drugs:sell', function(locationId)
    local src = source
    local player = GetPlayerData(src)
    local location = Config.SellPoints[locationId]
    if not location then return end

    local drugItem = exports.ox_inventory:Search(src, 'count', location.acceptedDrug)
    if drugItem < 1 then
        TriggerClientEvent('ox_lib:notify', src, {
            title = 'No product',
            description = 'You have nothing to sell here.',
            type = 'error'
        })
        return
    end

    -- Dynamic pricing based on recent sales
    local currentPrice = CalculateDynamicPrice(locationId, location.basePrice)
    local heatLevel = GetPlayerHeat(src)

    if heatLevel > 80 then
        -- High heat: chance of undercover cop encounter
        if math.random(100) <= 30 then
            TriggerEvent('drugs:triggerSting', src, locationId)
            return
        end
    end

    exports.ox_inventory:RemoveItem(src, location.acceptedDrug, 1)
    AddMoney(src, currentPrice)
    UpdateSellVolume(locationId)
    IncrementPlayerHeat(src, 5)
end)

Взаимодействие с полицией и система розыска

Система наркотиков без значимого взаимодействия с правоохранительными органами быстро становится скучной. Реализуйте систему «жара», отслеживающую криминальную активность каждого игрока и влияющую на агрессивность реакции полицейских NPC и механиков. Каждое действие, связанное с наркотиками , сбор, переработка или продажа , добавляет очки жара, которые медленно уменьшаются со временем. При низком уровне жара игроки могут действовать относительно свободно. С ростом жара увеличивается частота случайных полицейских патрулей рядом с игроком, возможны встречи с собаками-нюхачами при остановках, а NPC-продавцы могут отказываться работать с ними до снижения жара. Для взаимодействия с игроками-полицейскими предоставьте офицерам инструменты для обнаружения наркотиков через обыски, полевые тесты для идентификации веществ и возможность организовывать слежку за известными местами переработки. Дайте полиции доступ к тепловой карте с общими зонами высокой наркотической активности без указания конкретных игроков.

Интеграция инвентаря и управление предметами

Правильная интеграция инвентаря критична для реалистичной системы наркотиков. Каждый этап обработки должен создавать отдельные предметы с соответствующим весом, описаниями и метаданными. Сырье должно быть тяжелым и громоздким, что делает транспортировку логистической задачей, стимулирующей использование транспорта и создающей риск при полицейских проверках. Используйте метаданные предметов для хранения рейтингов качества, идентификаторов партий для полицейских расследований и временных меток обработки. При интеграции с популярными системами инвентаря, такими как ox_inventory или qb-inventory, используйте встроенные функции использования предметов для создания эффектов потребления наркотиков, позволяя игрокам использовать свой продукт с положительными баффами, например ускорением, и отрицательными эффектами, такими как искажение экрана и механика зависимости.

-- Item metadata example for ox_inventory
exports.ox_inventory:RegisterStash('meth_lab_storage', {
    label = 'Lab Storage',
    slots = 20,
    weight = 100000,
    owner = labOwnerId,
    groups = { ['chemist'] = 1 }
})

-- Creating items with quality metadata
exports.ox_inventory:AddItem(src, 'meth_packaged', quantity, {
    quality = playerSkillLevel > 50 and 'premium' or 'standard',
    batchId = GenerateBatchId(),
    processedAt = os.time(),
    purity = math.random(60, 99),
})

Многоступенчатая обработка с локациями

Распределяйте этапы обработки по карте, чтобы создать естественные маршруты перемещения и коридоры риска. Место сбора должно быть удалённым и частично скрытым, но не невозможным для обнаружения. Лаборатории обработки должны находиться в помещениях или под землёй, требуя от игроков входа в конкретный интерьер, где они временно заперты во время процесса приготовления. Упаковочные станции могут располагаться на складах или в подсобках предприятий, которые служат прикрытием. Для каждого места должно быть ограничено количество одновременных пользователей, чтобы избежать перенаселённости и стимулировать игроков создавать собственные приватные операции. Используйте blips, которые появляются только когда у игрока есть нужные предметы или уровень репутации, и рассмотрите возможность сделать некоторые локации доступными только через диалоги с NPC или по слухам от игроков. Периодически меняйте или рандомизируйте вторичные места продажи, чтобы поддерживать свежесть игрового процесса и предотвращать самодовольство. Отмечайте места обработки на полицейском MDT после накопления достаточного количества анонимных сообщений от NPC-свидетелей, заметивших подозрительную активность.

Баланс риска и награды

Вся система наркотиков должна быть сбалансирована с легальной экономикой вашего сервера, чтобы оставаться привлекательной, но не слишком сильной. Доход от наркотиков должен быть примерно в 1.5-2.5 раза выше почасовой ставки лучших легальных работ, но только с учётом полного времени обработки, перемещения между локациями и реального риска потерять товар из-за полиции или других преступников. Учтите стоимость материалов для ингредиентов, которые нужно покупать или собирать, неудачи при обработке на низких уровнях навыков и возможные потери инвентаря при арестах. Внедрите систему тюремного заключения и штрафов, где пойманные наркодилеры несут значительные финансовые и временные наказания, уменьшающие их прибыль. Оптимальный баланс достигается, когда опытные наркодилеры зарабатывают заметно больше легальных работников, а новички, которых часто ловят, обнаруживают, что штрафы и тюремное время делают это менее выгодным, чем обычная работа, пока они не освоятся и не повысят навыки.

Расширенные функции: банды и территории

Для серверов с бандитскими системами интегрируйте операции с наркотиками с механикой контроля территорий. Позвольте бандитам заявлять места переработки и продажи, предоставляя им эксклюзивный доступ или лучшие цены на своей территории. Спорные территории вызывают события территориальных войн, где банды соревнуются за контроль через PvP-сражения. Реализуйте цепочку поставок, где банды создают оптовые сети, продавая крупные партии независимым дилерам, которые занимаются уличными продажами. Добавьте систему тайников банды для коллективного хранения наркотиков и механизм распределения прибыли между онлайн-участниками. Отслеживайте статистику банды: общий объём продукции, контролируемые территории и арестованные участники, создавая соревновательную таблицу лидеров, стимулирующую межбандитское соперничество. Эти социальные механики превращают простой скрипт наркотиков в глубокую экономическую и политическую систему, генерирующую органический ролевой контент без постоянного вмешательства персонала.

Готовы начать?

Возьмите скрипты в нашем магазине или заходите в Discord за поддержкой, обновлениями и анонсами.