Advanced Moonshine Run

Welcome to the Codex Studios Moonshine Run Script, where players can experience the thrill of moonshine running, from smuggling supplies to crafting high-quality moonshine. Below is a detailed breakdown of Moonshine Levels 1 to 4, each offering unique challenges and mechanics.

:hammer_and_wrench: Features & Gameplay Mechanics:

:small_blue_diamond: Dynamic NPC Interactions โ€“ When searching for an invitation or moonshine, NPCs will react differently! Some may attack with knives or weapons, while others might give you what you need.
:small_blue_diamond: Access to the Moonshine Lab โ€“ Only players who successfully obtain an invitation can enter the secret lab.
:small_blue_diamond: Fully Configurable Brewing System โ€“ Customize the types of herbs and exact quantities needed for moonshine production via the config file.
:small_blue_diamond: Skill-Based Brewing Process โ€“ Players must carefully place the correct herbs into the moonshine still and adjust the temperature accurately to create perfect-quality moonshine.
:small_blue_diamond: Risk vs. Reward โ€“ If the temperature is too high or low, the player will end up with low-quality moonshine, reducing its value and effectiveness.
:small_blue_diamond: Engaging & Realistic Experience โ€“ Encouraging experimentation, skill development, and strategic gameplay to master the art of moonshining.


:herb: Level 1: Gathering & Smuggling Supplies

At Level 1, players begin their journey by smuggling essential moonshine ingredients and avoiding law enforcement.

:small_blue_diamond: Objective: Travel across the map to collect key ingredients (e.g., sugar, yeast, and herbs).
:small_blue_diamond: Supply Runs: Players must locate hidden suppliers or steal resources from military supply camps.
:small_blue_diamond: Risk Factor: Some supply areas are guarded by NPCs, requiring stealth or combat skills.
:small_blue_diamond: Dynamic Events: Random patrols and ambushes add an element of danger to supply smuggling.


:truck: Level 2: Transporting Moonshine Barrels

At Level 2, players must transport illegal moonshine barrels while avoiding bandits and lawmen.

:small_blue_diamond: Objective: Deliver moonshine barrels to secret buyers across the map.
:small_blue_diamond: Vehicle Choices: Players can use wagons, horses, or boats depending on the delivery route.
:small_blue_diamond: Encounter System:

  • Lawmen may interrogate or chase you if they become suspicious.
  • Rival smugglers or bandits may try to steal your shipment.
    :small_blue_diamond: Bribery & Disguise: Players can bribe lawmen or use disguises to avoid detection.

:sake: Level 3: Raiding Moonshine Locations & Expanding the Business

At Level 3, players transition from a smuggler to a moonshine entrepreneur, but before they can expand their trade, they must raid an existing moonshine operation to take control of a production site.

:small_blue_diamond: Objective: Find and raid a hidden moonshine location before the timer runs out, then establish connections with buyers to expand the business.

:flag_black: Raiding the Moonshine Location

  • A timer starts as soon as the mission begins, requiring players to locate and attack an existing moonshine operation before time runs out.
  • The moonshine locations are guarded by NPCs, who will fight back using weapons.
  • Players must eliminate the guards and secure the location.
  • If the player fails to complete the raid in time, the location is abandoned or taken over by another gang, forcing them to restart.

:amphora: Level 4: Crafting the Perfect Moonshine

At Level 4, players gain access to the Moonshine Lab, where they can produce low or perfect-quality moonshine.

:small_blue_diamond: Objective: Master the moonshine crafting process by gathering herbs and controlling temperature.
:small_blue_diamond: Finding the Invitation: Players must interact with various NPCs to gain access to the Moonshine Lab.

  • Some NPCs help and provide invitations.
  • Others attack with knives or weapons, making the process risky.
    :small_blue_diamond: Production Mechanics:
  • Use the correct herbs and ingredients (fully configurable in the config file).
  • Adjust the temperature of the moonshine still to achieve perfect quality.
  • Too high or too low temperatures reduce the moonshineโ€™s value.
    :small_blue_diamond: Final Outcome:
  • Successfully crafted perfect-quality moonshine sells for a high price.
  • Low-quality moonshine sells for less and might damage reputation with buyers.

Config File Preview

Codex = {

    Keys = {
        -- ๐Ÿ”ค Letters
        ["A"] = 0x7065027D, ["B"] = 0x4CC0E2FE, ["C"] = 0x9959A6F0, ["D"] = 0xB4E465B4, ["E"] = 0xCEFD9220, ["F"] = 0xB2F377E8,
        ["G"] = 0x760A9C6F, ["H"] = 0x24978A28, ["I"] = 0xC1989F95, ["J"] = 0xF3830D8E, ["K"] = nil, ["L"] = 0x80F28E95,
        ["M"] = 0xE31C6A41, ["N"] = 0x4BC9DABB, ["O"] = 0xF1301666, ["P"] = 0xD82E0BD2, ["Q"] = 0xDE794E3E,
        ["R"] = 0xE30CD707, ["S"] = 0xD27782E3, ["T"] = nil, ["U"] = 0xD8F73058, ["V"] = 0x7F8D09B8, ["W"] = 0x8FD015D8,
        ["X"] = 0x8CC9CD42, ["Y"] = nil, ["Z"] = 0x26E9DC00,

        -- ๐Ÿ”ฃ Symbol Keys
        ["RIGHTBRACKET"] = 0xA5BDCD3C, ["LEFTBRACKET"] = 0x430593AA,

        -- ๐Ÿ–ฑ๏ธ Mouse Buttons
        ["MOUSE1"] = 0x07CE1E61, ["MOUSE2"] = 0xF84FA74F, ["MOUSE3"] = 0xCEE12B50, ["MWUP"] = 0x3076E97C,

        -- ๐Ÿ› ๏ธ Modifier Keys
        ["CTRL"] = 0xDB096B85, ["TAB"] = 0xB238FE0B, ["SHIFT"] = 0x8FFC75D6, ["SPACEBAR"] = 0xD9D0E1C0, ["ENTER"] = 0xC7B5340A,
        ["BACKSPACE"] = 0x156F7119, ["LALT"] = 0x8AAA0AD4, ["DEL"] = 0x4AF4D473, ["PGUP"] = 0x446258B6, ["PGDN"] = 0x3C3DD371,

        -- ๐Ÿ”ข Function Keys
        ["F1"] = 0xA8E3F467, ["F4"] = 0x1F6D95E5, ["F6"] = 0x3C0A40F2,

        -- ๐Ÿ”ข Number Keys
        ["1"] = 0xE6F612E4, ["2"] = 0x1CE6D9EB, ["3"] = 0x4F49CC4C, ["4"] = 0x8F9F9E58, ["5"] = 0xAB62E997, ["6"] = 0xA1FDE2A6,
        ["7"] = 0xB03A913B, ["8"] = 0x42385422,
        -- โžก๏ธ Arrow Keys
        ["DOWN"] = 0x05CA7C52, ["UP"] = 0x6319DB71, ["LEFT"] = 0xA65EBAB4, ["RIGHT"] = 0xDEB34313,
    },

    -- ๐Ÿ› ๏ธ Developer Mode: Enables debugging features and extra logging for easier troubleshooting.
    DeveloperMode = true,

    UseMiniGame = true,
    MiniGameTotalTime = math.random(7, 10),  -- โณ Randomize the mini-game time between 7 and 10 seconds
    MiniGameKeyNeededSuccess = math.random(5, 8),  -- ๐Ÿ”‘ Randomize the number of successful key presses needed for mini-game
    SynchronizedAcrossAllClients = true,

    -- ๐Ÿ–จ๏ธ Advanced Print Mode: Enhanced console output for better visibility during debugging.
    AdvancedPrintMode = true,

    -- ๐Ÿ“‹ Menu Data: Specifies the menu API used (e.g., 'menuapi') for interactions.
    MenuData = 'menuapi',

    OxNewMenu = true ,
    UseOxProgressBar = true,
    AutoSetup = true, -- ๐Ÿ”ง AutoSetup is enabled. When true, the system automatically configures necessary settings, ensuring the mission starts with the correct parameters and avoids manual setup. ๐Ÿš€

    -- ๐Ÿ“ฆ SQL Resource: Indicates which SQL resource is used for database operations, such as 'ghmattimysql'.
    SQLResource = "ghmattimysql",

    -- โš™๏ธ Framework: Identifies the game framework used (e.g., 'vorp') for integration.
    Framework = "vorp",

    -- ๐Ÿค NPC Mission Setup: Defines NPCs that start missions, with attributes like name, model, coordinates, rewards (money or items).
    CheckForItems = false,  -- Change to true to enable the item check (the player must have the item in their inventory) ๐Ÿ› ๏ธ
    NPCCooldownTime = 1,  -- Time in minutes (e.g., 1 minute cooldown) before the NPC can be interacted with again โณ
    CooldownTime = 1000 * 60000,  -- โณ This is 16.6 hours per user, not a global cooldown

    -- Global cooldown for each NPC to prevent multiple interactions โณ
    CoolDownOnNpc = true,  -- Enables a global cooldown for each NPC โณ

    OnPlayerCoolDown = false,  -- If true, the cooldown applies per player, preventing them from starting missions โณ
    -- ๐ŸŽฏ NPC mission starting configurations
    NpcStartMission = {
        {
            name = "Informer Arthur", -- ๐Ÿคต NPC Name
            npcmodel = "MP_G_M_M_UNICRIMINALS_06", -- ๐Ÿงโ€โ™‚๏ธ NPC Model
            coords = {x = 2634.6904, y = -1377.9508, z = 45.5240, h = 115.7783},
            MoneyType = 0, -- Accounts : 0 = money, 1 = gold, 2 = cents
            giveMoney = true, -- ๐Ÿ’ต Money Reward (true/false)
            moneyQuantity = math.random(500, 800), -- ๐Ÿ’ฐ Money Range (Adjusted for variety)
            giveItem = true, -- ๐ŸŽ Item Reward (true/false)
            item = "lockpick", -- ๐Ÿ› ๏ธ Item Name
            label = "Lockpick", -- ๐Ÿท๏ธ Item Label
            WagonSpawnPoint = {x = 2630.89, y = -1440.03, z = 46.46}, -- ๐Ÿ“ Spawn point for the wagon
            itemQuantity = 1, -- ๐Ÿ”ข Item Quantity Range
            trustRequired_Mission_1 = 0, -- ๐ŸŒŸ Trust Level Requirement for Mission 1
            trustRequired_Mission_2 = 2, -- ๐ŸŒŸ Trust Level Requirement for Mission 2
            trustRequired_Mission_3 = 5, -- ๐ŸŒŸ Trust Level Requirement for Mission 3
            trustRequired_Mission_4 = 10, -- ๐ŸŒŸ Trust Level Requirement for Mission 4
            NpcIsonCooldown = false,  -- Change to true when NPC needs to wait before giving another mission (GLOBAL COOLDOWN)โณ
            RewardItems = {"lockpick", "bread", "coffee"},  -- Set this to the list of items that can be rewarded
            RewardQuantity = 1,  -- Set this to the number of items you want the player to receive. Default is 1  ๐ŸŽ
            --- Only one of these must be true, **NOT BOTH** at the same time:
            RandomItems = false,  -- Set this to `true` if you want the player to receive a **random item** from the list ๐ŸŽฒ
            GiveAllItems = true,  -- Set this to `true` if you want the player to receive **all items** from the list ๐ŸŽ
        },
        {
            name = "Informer Thomas", -- ๐Ÿคต NPC Name
            npcmodel = "MP_G_M_M_UNICRIMINALS_06", -- ๐Ÿงโ€โ™‚๏ธ NPC Model
            coords = {x = -754.4, y = -1354.31, z = 42.51, h = 115.7783},
            WagonSpawnPoint = {x = 2630.89, y = -1440.03, z = 46.46}, -- ๐Ÿ“ Spawn point for the wagon
            MoneyType = 0, -- Accounts : 0 = money, 1 = gold, 2 = cents
            giveMoney = true, -- ๐Ÿ’ต Money Reward (true/false)
            moneyQuantity = math.random(500, 800), -- ๐Ÿ’ฐ Money Range (Adjusted for variety)
            giveItem = true, -- ๐ŸŽ Item Reward (true/false)
            item = "lockpick", -- ๐Ÿ› ๏ธ Item Name
            label = "Lockpick", -- ๐Ÿท๏ธ Item Label
            itemQuantity = 1, -- ๐Ÿ”ข Item Quantity Range
            trustRequired_Mission_1 = 0, -- ๐ŸŒŸ Trust Level Requirement for Mission 1
            trustRequired_Mission_2 = 3, -- ๐ŸŒŸ Trust Level Requirement for Mission 2
            trustRequired_Mission_3 = 6, -- ๐ŸŒŸ Trust Level Requirement for Mission 3
            trustRequired_Mission_4 = 12, -- ๐ŸŒŸ Trust Level Requirement for Mission 4
            NpcIsonCooldown = false,  -- Change to true when NPC needs to wait before giving another mission (GLOBAL COOLDOWN)โณ
            RewardItems = {"lockpick", "bread", "coffee"},  -- Set this to the list of items that can be rewarded
            RewardQuantity = 1,  -- Set this to the number of items you want the player to receive. Default is 1  ๐ŸŽ
            --- Only one of these must be true, **NOT BOTH** at the same time:
            RandomItems = false,  -- Set this to `true` if you want the player to receive a **random item** from the list ๐ŸŽฒ
            GiveAllItems = true,  -- Set this to `true` if you want the player to receive **all items** from the list ๐ŸŽ
        },
        {
            name = "Informer James", -- ๐Ÿคต NPC Name (Updated to avoid duplicate names)
            npcmodel = "MP_G_M_M_UNICRIMINALS_06", -- ๐Ÿงโ€โ™‚๏ธ NPC Model
            coords = {x = -500.0, y = -1500.0, z = 40.0, h = 90.0}, -- Updated to ensure unique location
            WagonSpawnPoint = {x = 2630.89, y = -1440.03, z = 46.46}, -- ๐Ÿ“ Spawn point for the wagon
            MoneyType = 0, -- Accounts : 0 = money, 1 = gold, 2 = cents
            giveMoney = true, -- ๐Ÿ’ต Money Reward (true/false)
            moneyQuantity = math.random(500, 800), -- ๐Ÿ’ฐ Money Range (Adjusted for variety)
            giveItem = true, -- ๐ŸŽ Item Reward (true/false)
            item = "goldbar", -- ๐Ÿ› ๏ธ Item Name (Changed to diversify rewards)
            label = "Gold Bar", -- ๐Ÿท๏ธ Item Label
            itemQuantity =  1, -- ๐Ÿ”ข Item Quantity Range (Adjusted for item rarity)
            trustRequired_Mission_1 = 1, -- ๐ŸŒŸ Trust Level Requirement for Mission 1
            trustRequired_Mission_2 = 4, -- ๐ŸŒŸ Trust Level Requirement for Mission 2
            trustRequired_Mission_3 = 8, -- ๐ŸŒŸ Trust Level Requirement for Mission 3
            trustRequired_Mission_4 = 15, -- ๐ŸŒŸ Trust Level Requirement for Mission 4
            NpcIsonCooldown = false,  -- Change to true when NPC needs to wait before giving another mission (GLOBAL COOLDOWN)โณ
            RewardItems = {
                "lockpick", "bread", "coffee"},  -- Set this to the list of items that can be rewarded
            RewardQuantity = 1,  -- Set this to the number of items you want the player to receive. Default is 1  ๐ŸŽ


            --- Only one of these must be true, **NOT BOTH** at the same time:
            RandomItems = false,  -- Set this to `true` if you want the player to receive a **random item** from the list ๐ŸŽฒ
            GiveAllItems = true,  -- Set this to `true` if you want the player to receive **all items** from the list ๐ŸŽ
        },
    },
    AddTrustonMissionComplete = 2, -- ๐Ÿค The number of trust points to be added to the player when they complete a mission. A value of 2 means the player will receive 2 trust points upon mission completion ๐Ÿ…
    ChanceForWheelBreak = 100, -- ๐ŸŽฒ 3% chance for a wheel to break
    ChanceforPlayerTogotRaid = 3, ---- ๐ŸŽฒ 3% chance for player got raided
    RepairTime = 30000, -- ๐Ÿ”ง Time in milliseconds to repair the wagon recommended to be above 250000ms
    MustFixTimeToReset = 20000, -- ๐Ÿ•’ Time before the wagon must be fixed to reset the mission
    RepairedTimeToreset = 20000, -- ๐Ÿ•’ Time after repairing to reset the mission
    CheckDeliveryLocationIndex = 60000, -- ๐Ÿ”„ Interval to check delivery location index in milliseconds
    RaidChance = 10, -- ๐ŸŽฒ 10% chance for a raider attack
    PropForWagon = 'mp001_p_barreltwin01x', -- ๐Ÿ›ข๏ธ The prop (object) used for the wagon in missions.๐Ÿš‚
    -- ๐Ÿš› Models and Objects
    WagonModel = "wagon05x", -- ๐Ÿ›ป Model for the wagon used in missions 


    --- ๐Ÿ“ Blips and Colors
    ColorBlipWagon = "BLIP_MODIFIER_KEY_MISSION_OBJECT", -- ๐ŸŽจ Blip color for the wagon (see: https://github.com/femga/rdr3_discoveries/blob/master/useful_info_from_rpfs/blip_modifiers/README.md)
    BlipForWagon = 1012165077, -- ๐Ÿ“Œ Blip ID for the wagon on the map
    ColorMultiRoute = "COLOR_YELLOW", -- ๐Ÿ›ฃ๏ธ Color for the route trace (e.g., COLOR_RED, COLOR_BLUE)
    BlipRadius = true,  -- If true, a radius will be displayed  ๐ŸŒ
    Radius = 250.0,  -- Defines the radius in meters ๐Ÿ“
    RemoveRadiusBlipAfter = 10, -- โฑ๏ธ Time (in minutes) after which the radius blip will be removed from the map.๐Ÿ“
    --[[White	0
    Red	1
    Green	2
    Blue	3
    Yellow	5
    Purple	7
    Orange	17]]
    ColorForRadius = 5 ,
    -- ๐Ÿ”” Notifications and Messages
    TriggerEventNotification = "vorp:TipBottom", -- ๐Ÿ“ข Event for triggering notifications
    FirstDeliveryNotification = "Go to the wagon and deliver the package", -- ๐Ÿ“„ Initial mission notification
    ThirdDeliveryNotification = "You must steal the moonshine for me.Dont shoot or et cought!.",
    NotificationMessageTime = 6000, -- โฒ๏ธ Duration for notification display in milliseconds
    MiniGameFailedMessage = "Try Again",
    -- ๐Ÿšš Delivery Locations: Coordinates where players deliver cargo during missions.
    DeliveryLocations = {
        [1] = { 2587.73, -1128.83, 51.33}, -- ๐Ÿ“ Delivery Point 1
        [2] = {2758.4060, -1306.1627, 46.5944, 323.0802}, -- ๐Ÿ“ Delivery Point 2

    },

    LocationsNeeded = math.random(2, 5), -- ๐ŸŽฏ The number of locations required for the mission for example (min 1 , max 5)๐Ÿ“๐Ÿ“
    DeliveryLocations_Level_2 = { ---player randomly get the coords in level 2 he must delivery the moonshine from 3 to max 5 locations to complete the mission(LocationsNeeded)
        [1] = {2520.0842, -1130.8555, 48.8421, 88.2590}, -- ๐Ÿ“ Delivery Point 1
        [2] = {2758.4060, -1306.1627, 46.5944, 323.0802}, -- ๐Ÿ“ Delivery Point 2

    },
    -- ๐Ÿ‘ฎ Law Jobs: List of jobs considered as law enforcement (e.g., 'police', 'marshal').
    LawJobs = { "police", "marshal", "deputy" },
    Codex_Notifications = false,
    CoolDownMessage = "You must wait to start again the run", -- ๐Ÿ“ฉ Message for when the player must wait before starting again
    NotAllowedJobMessage = "You can't start the mission because of your job", -- โŒ Message for when the player has the wrong job
    AlreadyOnMissionMessage = "You already started a mission", -- ๐Ÿšซ Message for when the player is already on a mission
    NoItemsMessage = "You don't have the desired items", -- ๐Ÿ›‘ Message for when the player lacks necessary items
    PositionOccupiedMessage = "Another Wagon is nearby, please wait", -- ๐Ÿ”’ Message for when the position is occupied by another wagon
    WheelGotFixedMessage = "You fixed the wheel", -- ๐Ÿ”ง Message for when the wheel is repaired
    PoliceAlertMessage = "Moonshine Delivery has been started", -- ๐Ÿš” Message for when the delivery is initiated and flagged to police
    FinalDeliveryNotification = "You delivered everything, good job", -- โœ… Message for when the delivery is completed successfully
    LocationUpdatedMessage = "Next delivery location updated!", -- ๐Ÿ“ Message for when the next location is updated

    -- Notify players in law jobs within a range ๐Ÿ“ก
    NotifyPoliceInRange = 100, -- ๐Ÿšจ Notify players in law enforcement jobs within a 100-meter range



    -- โœ… Police Job Check: Determines if active law jobs are required for specific events (true/false).
    PoliceJobCheck = true,


    AlertPolice = true,
    -- ๐Ÿšจ Police Alert Chance: Percentage chance (100%) to alert police during certain events.
    PoliceAlertChance = 100, --%

    -- ๐Ÿ•’ Vendor Hours: Configures vendor availability by start and close hours.
    VendorsBasedOnHours = false,
    VendorHours = {
        StartHour = 0, -- ๐ŸŒ™ Open Time
        CloseHour = 7, -- ๐ŸŒž Close Time
    },

    -- ๐Ÿ›ก๏ธ Raider Attacks: Toggles NPC raider attacks on cargo (true/false).
    EnableRaiders = true, -- โš”๏ธ Enable raiders to spawn and attack
    RaidersWeapon = "WEAPON_REVOLVER_NAVY",  -- ๐Ÿ”ซ Raiders' weapon model
    SpawnRaidersTimer = 10000,  -- โฑ๏ธ Time interval (in ms) between raider spawns
    RadiusAroundThePlayer = 3.0,  -- ๐Ÿ“ Radius (in meters) around the player where raiders can spawn
    NumberOfRaidersToBeSpawned = 5,  -- ๐Ÿ‘ฅ Number of raiders to spawn at once
    RaidersModels = {
        "s_m_m_valdeputy_01",  -- ๐Ÿ‘ฎโ€โ™‚๏ธ First raider model
        "MP_G_M_M_UNICRIMINALS_06"  -- ๐Ÿฆนโ€โ™‚๏ธ Second raider model
    },


    --------- Mission 3 ---------
    -- Check if the player is within line of sight and in front of the NPC
    SpawnObjects = {
        [1] = {x = 1600.79, y = -1838.37, z = 52.35}, -- ๐Ÿ“ Spawn Point 1
        [2] = {x = 1580.86, y = -1840.09, z = 52.35},-- ๐Ÿ“ Spawn Point 2
        [3] = {x = 1585.06, y = -1859.24, z = 52.35}, -- ๐Ÿ“ Spawn Point 3
        [4] = {x = 1605.63, y = -1856.5, z = 52.35}, -- ๐Ÿ“ Spawn Point 4

    },

    PatrolModels = {
        "s_m_m_valdeputy_01",  -- ๐Ÿ‘ฎโ€โ™‚๏ธ First Patrol model
        "MP_G_M_M_UNICRIMINALS_06"  -- ๐Ÿฆนโ€โ™‚๏ธ Second Patrol model
    },

    PatrolPoints = {
        { x = 1600.79, y = -1838.37, z = 52.35 }, -- ๐Ÿ“ Spawn Point 1
        { x = 1580.86, y = -1840.09, z = 52.35 }, -- ๐Ÿ“ Spawn Point 2
        { x = 1585.06, y = -1859.24, z = 52.35 }, -- ๐Ÿ“ Spawn Point 3
        { x = 1605.63, y = -1856.5, z = 52.35 }, -- ๐Ÿ“ Spawn Point 4
    },



    ---- moonshine ------
    DistilleryProp = "mp006_p_moonshiner_still02x",

    Moonshinebags = "mp001_s_moonshinesupplies_m02",
    DistanceRadius = 50.0 , -- Player distance for NPC to become angry/aggressive
    PatrolRadius = 30.0,  -- Increased patrol radius for more roaming area
    MissionTimeDuration = 600,  -- Duration of the timer in seconds
    PatrolStopTime = math.random(3, 7), -- Stop for a random period, then move to a new location , Stop for 3 to 7 seconds

    ---- The example(MinimumSpawnPatrolNpc = 1 ,MaximumSpawnPatrolNpc = 3 ) Spawning 3 patrol NPCs around the prop, you can adjust these numbers
    MinimumSpawnPatrolNpc = 1,
    MaximumSpawnPatrolNpc = 3,
    LocationsNeedToComplete = 4, --- this must be the number of your SpawnObjects for example there are 4 now if you put extra 1 or 2 you must adjust the number here too 



    ---- Level 4 ----
    DistanceForSelectNpcs = 3000, -- Distance to select the npcs (is not spawned npcs they are ingame npcs so be sure you have active npcs in your server)
    IntervalUpdate = 500, -- Periodically update NPC blips, even if they move far away
    NumberOfNPCToBeSelected = 20, -- How many npcs will be selected 
    InteractionNPCDistance = 3, --- Distance to interact with the npcs
    WeaponhashNPC = "WEAPON_REVOLVER_CATTLEMAN",  --- Weapon for the npc
    Knifehash = "WEAPON_MELEE_KNIFE",  --- Weapon Knife for the npc

    LawNPCHashes = {  --  this is actualy a blacklisted table so the script doesnt select the following peds be sure you put the informer here too
        GetHashKey("s_m_m_ambientsdpolice_01"),
        GetHashKey("cs_valprostitute"),
        GetHashKey("cs_lemoynecaptain"),
        GetHashKey("u_m_m_sdpoliceman_01"),
        GetHashKey("amsp_robsdgunsmith_males_01"),
        GetHashKey("MP_G_M_M_UNICRIMINALS_06"),
    },

    ItemGiveNFromNpcs = "invitation_message", --- item that player got by npcs this item is unigue if  the player lost the item he must do the 4th mission again to get it
    QuantityItemGive = 1, --- do not change

    --- Moonshine Setup -----
    UseMoonshineTeleports = true, --- teleport system to set player location to moonshines
    UseMoonshineBlips = true, --- if you wanna the blips be visible set it true (not recommended for better expirience set it false)
    AccessToMoonshine = 1,  -- The player must have the following trust level to enter
    ItemAccessQuantity = 1, --- do not change it 
    ItemAccess = "invitation_message",  --- check item for access to moonshine labs
    ProductionDestilyTrust = 20,  --- the player must have this trust level to enter in the highest moonshine production
    InteriorsShells = { --- setup the interior shells

        ['lemoyne'] = {
            ['outside'] = vector3(1785.01, -821.53, 41.86),
            ['inside'] = vector3(1785.01,-821.53,191.01),
            ['interior'] = 77313,
            ['interior_sets'] = {
                "mp006_mshine_band1",
                "mp006_mshine_bar_benchAndFrame",
                "mp006_mshine_dressing_3",
                "mp006_mshine_hidden_door_open",
                "mp006_mshine_location2",
                "mp006_mshine_pic_04",
                "mp006_mshine_shelfwall1",
                "mp006_mshine_shelfwall2",
                "mp006_mshine_Still_03",
                "mp006_mshine_still_hatch",
                "mp006_mshine_theme_hunter",
            },
        },

        ['cattail_pond'] = {
            ['outside'] = vector3(-1085.63, 714.14, 103.32),
            ['inside'] = vector3(-1085.63, 714.14, 83.23),
            ['interior'] = 77569,
            ['interior_sets'] = {
                "mp006_mshine_band2",
                "mp006_mshine_bar_benchAndFrame",
                "mp006_mshine_dressing_1",
                "mp006_mshine_hidden_door_open",
                "mp006_mshine_location1",
                "mp006_mshine_pic_02",
                "mp006_mshine_shelfwall1",
                "mp006_mshine_shelfwall2",
                "mp006_mshine_Still_02",
                "mp006_mshine_still_hatch",
                "mp006_mshine_theme_goth",
            },
        },

        ['new_austin'] = {
            ['outside'] = vector3(-2769.3, -3048.87, 10.38),
            ['inside'] = vector3(-2769.3, -3048.87, -9.7),
            ['interior'] = 78337,
            ['interior_sets'] = {
                "mp006_mshine_band2",
                "mp006_mshine_bar_benchAndFrame",
                "mp006_mshine_dressing_1",
                "mp006_mshine_hidden_door_open",
                "mp006_mshine_location1",
                "mp006_mshine_pic_02",
                "mp006_mshine_shelfwall1",
                "mp006_mshine_shelfwall2",
                "mp006_mshine_Still_02",
                "mp006_mshine_still_hatch",
                "mp006_mshine_theme_refined",
            },
        },

        ['hanover'] = {
            ['outside'] = vector3(1627.64, 822.9, 144.03),
            ['inside'] = vector3(1627.64, 822.9, 123.94),
            ['interior'] = 78593,
            ['interior_sets'] = {
                "mp006_mshine_band2",
                "mp006_mshine_bar_benchAndFrame",
                "mp006_mshine_dressing_1",
                "mp006_mshine_hidden_door_open",
                "mp006_mshine_location1",
                "mp006_mshine_pic_02",
                "mp006_mshine_shelfwall1",
                "mp006_mshine_shelfwall2",
                "mp006_mshine_Still_02",
                "mp006_mshine_still_hatch",
                "mp006_mshine_theme_floral",
            },
        },

        ['manzanita_post'] = {
            ['outside'] = vector3(-1861.7, -1722.17, 108.35),
            ['inside'] = vector3(-1861.7, -1722.17, 88.35),
            ['interior'] = 77825,
            ['interior_sets'] = {
                "mp006_mshine_band2",
                "mp006_mshine_bar_benchAndFrame",
                "mp006_mshine_dressing_1",
                "mp006_mshine_hidden_door_open",
                "mp006_mshine_location1",
                "mp006_mshine_pic_02",
                "mp006_mshine_shelfwall1",
                "mp006_mshine_shelfwall2",
                "mp006_mshine_Still_02",
                "mp006_mshine_still_hatch",
                "mp006_mshine_theme_christmas",
            },
        },
        ['moonshine_dsti'] = {
            ['outside'] = vector3(1356.11, -1247.8, 79.95),
            ['inside'] = vector3(2450.77, 286.24, 46.12 + 0.7),
            ['interior'] = nil,
            ['interior_sets'] = {
                --dont need

            },
        },
    },

    ---Produce moonshine
    PropHashInteraction = "mp006_p_moonshiner_still03x",  --- moonshine Prop hash 
    ObjectLocationCheck = vector3(2463.406005859375, 283.9789123535156, 44.96858215332031), --- moonshine Prop coords 
    ObjectInteractionDistance = 2.3, --- moonshine Prop Interaction distance check 
    PerfectQualityMoonshine = { --- perfect temps
        TempOne = 24,
        TempTwo = 45,
        TempThree = 70,
    },
    HerbsNeededForMoonshine = { --- Player must have these items to produse moonshine
        ["consumable_herb_dill"] = 10,
        ["consumable_herb_wild_mint"] = 10,
        ["consumable_herb_wisteria"] = 10,
        ["consumable_herb_parasol_mushroom"] = 10,
        ["consumable_herb_desert_sage"] = 10,
        ["consumable_herb_chanterelles"] = 10,
        ["consumable_herb_cardinal_flower"] = 10
    },

    PerfectQualityMoonshineItem = "perfect_moonshine", -- Perfect Quality item
    LowQualityMoonshineItem = "low_moonshine",  -- Low Quality  item
    PerfectQuantityMoonshine = 10, --Perfect Quality moonshine quantity 
    LowQuantityMoonshine = 10, --Low Quality moonshine quantity 
    MoonshineCoolDown = 180000, -- cooldown for produse moonshine 
    ProgressBarTimer = 60000,  -- Progress  Bar Timer
    ProgressBarTextOnMoonshine = "Applying Temperatures to Moonshinestill ", -- progress bar text

    ----- Webhook Settings -----
    DiscordWebhook = "",


}

:shopping_cart: Tebex Store
:arrow_forward: Video Preview
:point_right: Join Our Community


Code is accessible Yes(Config.lua / css/html/js)
Subscription-based No
Lines (approximately) 5000+
Requirements VorpCore/RSG
Support Yes
1 Like