⛏️ESSENTIAL JOBS - RUSTIC

Here check the installation guide

INSTALLATION GUIDE

Download from KEYMASTER and unzip the forge-jobs.pack.zip. Place the entire forge-jobs folder inside your server's resources directory. Do not rename this folder, otherwise the script may not work correctly.

Add the resource to your server start config (server.cfg), making sure the dependencies are started in the correct order:

ensure ox_lib
ensure forge-key
ensure forge-strong
ensure bzzz_onion
ensure fury_cf_machines
ensure fury_cf_workprops
ensure fury_cfh_bones
ensure forge-jobs

⚠️ Make sure all the dependencies (framework, inventory, target system, etc.) are started before this script in your server.cfg.

1. Install the SQL that comes with the script:

Import the SQL file provided into your database. This file includes essential tables for player job levels, daily missions, and other features. If you're using oxmysql, ensure the wrapper is correctly installed and configured.

2. Install all Extras:

  1. PROPS From the EXTRA/[PROPS] folder, install the following resources in your server:

    • fury_cf_machines

    • fury_cf_workprops

    • fury_cfh_bones

    Additionally, download and install bzzz_onion from bzzz's Tebex Store – it is not included in the script.

  2. ITEMS & IMAGES

    • Add all item definitions found in EXTRA/ITEMS INSTALLATION to your inventory system. Snippets are provided for:

      • ox_inventory

      • qb-inventory

      • quasar-inventory

    • Place the item icons from EXTRA/ITEMS INSTALLATION into your inventory’s image path (e.g., ox_inventory/web/images).

  3. MINIGAMES

    • Install the minigame resource(s) located in EXTRA/[MINIGAMES] into your server’s resources directory.

  4. Clear Cache

    • Always clear your server cache and your FiveM client cache after installation to avoid any loading issues.

  5. Reboot

    • Reboot your server completely after ensuring the script is correctly started and all configurations are in place.


CONFIG

The configuration is located in shared/config.lua, and you should take some time to understand and adjust it properly to deliver the best experience to your players.

Here’s what you can configure:

Core Settings

  • Config.Framework: "ESX", "QB", or "QBOX"

  • Config.SQL: "OXMYSQL", "MYSQL-ASYNC", or "GHMATTIMYSQL"

  • Config.Inventory: "ox_inventory", "qb-inventory", or "quasar-inventory"

  • Config.Target: "ox_target", "qb-target", or "" (for floating 3D text)

  • Config.Locale: "en", "es", "fr", etc.

  • Config.CurrencySymbol: Set your currency symbol (, $, etc.)

Job Settings

  • Define zones, NPCs, item rewards, props, animations, and tools per job (mining, fishing, etc.)

  • Set up processing stages for raw materials

  • Customize loot tables, spawn locations, and XP values

Tool System

  • Configure tool levels, item names, prices, and the rewards they unlock

Leveling System

  • Adjust XP progression, max levels, and how much XP is earned per action

Daily Missions

  • Set mission types, requirements, and rewards

  • Missions refresh daily, encouraging players to return

Sell Shop

  • Customize the item market, prices for raw and processed materials

  • Enable retail and wholesale logic

Localization

  • Add translations inside the Config.Locales table

  • Set your default with Config.Locale

  • Translate the UI directly in the HTML and JS files if needed


FINAL NOTES

🔁 Always ensure item names in your config match exactly the items defined in your inventory system. Typos will cause issues.

🧠 If you're using ox_target or qb-target, make sure their zones are correctly defined for every job step. You can also disable the target system and use floating 3D texts instead.

🌍 The script is fully localizable. Make your server more immersive by translating the experience into your community’s language.

If you need support or have any questions, join our Discord: https://discord.gg/UTVssdrXRV


CONFIG

The following will explain all the settings, one of the most important things that I recommend you spend a few minutes to understand in order to offer your users the best possible experience.

Fill all the CONFIG very carefully.

--[[
    Please do not modify the values unless you know what you are doing.
]]

-- General Settings
Config = {}

-- Core Settings
Config.Debug = false -- Set to true only for testing. Keep false for better performance as it disables debug messages
Config.Locale = 'en' -- Default language ('en', 'es', 'fr', 'de', 'pt', 'tr', 'ar', 'it', 'ru') - To translate the UI, navigate through the front end, in the HTML and the .JS files
Config.CurrencySymbol = "$" -- Currency symbol used in the game

-- Configuration for screen fades
Config.EnableScreenFades = true -- Enable or disable black screen fades during job actions. Enabled is more immersive because prop dont dissappear abruptly.
Config.ScreenFadeDuration = 500 -- Duration of the screen fades in milliseconds.

-- Framework and System Settings
Config.Framework = "ESX" -- Options: "ESX", "QB" or "QBOX"
Config.SQL = "OXMYSQL" -- Options: "OXMYSQL", "MYSQL-ASYNC", "GHMATTIMYSQL"
Config.Inventory = "ox_inventory" -- Options: "ox_inventory", "qb-inventory", "quasar-inventory"
Config.Target = "ox_target" -- Options: "qb-target", "ox_target", or "" (empty for floating text). Using a target system is recommended for better performance.
Config.InteractKey = 38 -- Interaction key (used only if target is none)
Config.InteractKeyChar = 'E' -- Interaction key character
Config.DailySellLimit = 500 -- Max amount of items that can be sold daily. If you want to disable this feature, set it to a high number like 9999999

-- Job System Configuration
Config.Jobs = {
    ["Mining"] = {
        Enabled = true, -- Set to false to disable this job completely
        UseSkillCheck = true, -- Set to false to disable the skill check during preprocessing/processing
        UseProgressBar = false, -- Set to true to use a progress bar instead of Skill Check (if UseSkillCheck is false)
        -- Location Settings
        PreProcessingPosition = vector3(1880.3469, 399.7037, 159.7695),
        ProcessingPosition = vector3(2619.9331, 2781.8237, 32.7626),
        
        -- NPC Configuration
        NPC = {
            Enabled = true,
            Type = 1, -- Do not modify
            Name = "Miner",
            Position = vector3(2952.1035, 2751.0454, 42.4592),
            Heading = 25.0,
            Model = "S_M_Y_Construct_01",
            Animation = {"", ""}, -- Animation settings
            Scenario = "WORLD_HUMAN_SMOKING", -- Scenario settings
            Blip = {
                Text = "[JOB] Mining",
                Sprite = 618,
                Color = 46
            }
        },
        
        -- Blip Configuration
        Blips = {
            {
                Text = "[JOB] Mining",
                Sprite = 618,
                Color = 46,
                Position = vector3(1880.3469, 399.7037, 159.7695),
            },
            {
                Text = "[JOB] Mining",
                Sprite = 618,
                Color = 46,
                Position = vector3(2619.9331, 2781.8237, 32.7626),
            },
            {
                Text = "[JOB] Mining",
                Sprite = 618,
                Color = 46,
                Area = {
                    Alpha = 155,
                    Color = 46
                }
            }
        },
        
        -- Experience System
        XPActions = {
            DigRock = {1, 5}
        },
        
        -- Item Configuration
        -- IMPORTANT: Item1 must be obtainable from RockItems to allow processing
        -- This is the main resource that will be processed through the chain
        Item1 = "stone", -- First processing item (must be obtainable from mining)
        Item2 = "washed_stone", -- Result of first processing
        Item3 = "final_stone_product", -- Final product
        
        -- Processing Settings
        PreProcessingProp = "rock_4_cl_2_2",
        PreProcessingPropRotation = vector3(0, 0, 90),
        PreProcessingHandProp = "", -- Optional. If empty, no hand prop will be attached
        PreProcessingHandPropOptions = { -- Options for the hand prop
            bone = 18905, -- SKEL_R_Hand
            offsetX = 0.15,
            offsetY = 0.0,
            offsetZ = 0.0,
            rotationX = 0.0,
            rotationY = 0.0,
            rotationZ = 0.0
        },
        PreProcessingExtraProp = "", -- Optional. If empty, no extra prop will be added on top of the preprocessing prop
        PreProcessingExtraPropOffset = vector3(0.0, 0.0, 1.0), -- Offset from the preprocessing prop position
        ProcessingProp = "fury_cfs_scrapper",
        ProcessingPropRotation = vector3(0, 0, 150),
        PreProcessingTime = 5000,
        ProcessingTime = 10000,
        ProcessingRequiredItems = 5,
        ProcessingGiveItems = 3,
        
        -- Visual Effects
        PreProcessingParticles = "water_splash_animal_wade",
        ProcessingParticles = "ent_amb_smoke_factory_white",
        ProcessingMeatParticles = "ent_amb_smoke_factory_white",
        
        -- Work Zones
        Zones = { -- You can add more zones to the list if you want
            {vector3(-605.35, 2105.99, 126.54), 50.0},
            {vector3(2941.58, 2794.75, 40.09), 50.0}
        },
        
        -- Rock Spawn Points
        RockPositions = { -- You can add more rock positions to the list if you want. Every time script restarts, it will choose a random rock zone from the list
            {
                vector4(-615.42, 2104.61, 124.49, 0.0),
                vector4(-602.70, 2102.26, 126.87, 0.0),
                vector4(-609.70, 2102.78, 125.20, 0.0),
                vector4(-611.31, 2108.12, 124.44, 0.0),
                vector4(-624.20, 2106.64, 124.79, 0.0),
                vector4(-628.32, 2110.19, 123.84, 0.0),
                vector4(-635.37, 2113.09, 122.83, 0.0),
                vector4(-632.45, 2114.90, 122.71, 0.0),
                vector4(-618.12, 2120.00, 124.78, 0.0),
                vector4(-614.44, 2119.35, 125.59, 0.0),
                vector4(-607.58, 2122.71, 127.03, 0.0),
                vector4(-605.57, 2127.05, 127.38, 0.0),
                vector4(-607.21, 2129.44, 127.73, 0.0),
                vector4(-606.57, 2132.96, 128.03, 0.0),
                vector4(-603.87, 2134.34, 128.29, 0.0),
                vector4(-591.72, 2132.95, 128.10, 0.0),
                vector4(-585.56, 2134.38, 128.83, 0.0),
                vector4(-583.96, 2129.66, 129.17, 0.0),
                vector4(-585.51, 2122.31, 129.11, 0.0),
                vector4(-584.27, 2115.22, 129.68, 0.0),
                vector4(-585.53, 2110.82, 129.98, 0.0),
                vector4(-587.07, 2104.80, 130.62, 0.0),
                vector4(-590.09, 2102.27, 130.34, 0.0),
                vector4(-593.70, 2101.79, 129.73, 0.0),
                vector4(-601.45, 2092.84, 130.21, 0.0),
                vector4(-613.09, 2087.39, 131.41, 0.0),
                vector4(-617.76, 2087.77, 133.24, 0.0)
            },
            {
                vector4(2967.82, 2791.08, 39.10, 0.0),
                vector4(2964.24, 2793.49, 39.55, 0.0),
                vector4(2960.54, 2798.07, 40.13, 0.0),
                vector4(2956.26, 2803.68, 40.90, 0.0),
                vector4(2950.15, 2810.69, 40.72, 0.0),
                vector4(2943.92, 2814.18, 41.39, 0.0),
                vector4(2938.67, 2817.45, 42.77, 0.0),
                vector4(2932.28, 2814.47, 43.14, 0.0),
                vector4(2926.76, 2807.52, 41.83, 0.0),
                vector4(2924.72, 2801.67, 40.72, 0.0),
                vector4(2930.23, 2794.54, 39.65, 0.0),
                vector4(2936.50, 2791.17, 39.23, 0.0),
                vector4(2942.03, 2792.17, 39.41, 0.0),
                vector4(2946.84, 2794.94, 39.67, 0.0),
                vector4(2949.76, 2787.26, 40.01, 0.0),
                vector4(2949.55, 2783.43, 39.19, 0.0),
                vector4(2948.24, 2778.01, 38.33, 0.0),
                vector4(2944.45, 2773.56, 38.24, 0.0),
                vector4(2939.29, 2776.59, 38.27, 0.0)
            }
        },
        
        -- Rock Models and Properties
        RockModels = {
            "rock_1",
            "rock_2",
            "rock_3",
            "rock_4",
            "rock_5",
            "rock_6",
            "rock_4_cl_2_2" 
        },
        
        -- Loot Configuration
        LootProps = {
            "fury_cfm_copper_01",
            "fury_cfm_copper_02",
            "fury_cfm_copper_03",
            "fury_cfm_copper_04",
            "fury_cfm_dia_01",
            "fury_cfm_dia_02",
            "fury_cfm_dia_03",
            "fury_cfm_esm_01",
            "fury_cfm_esm_02",
            "fury_cfm_esm_03",
            "fury_cfm_gold_01",
            "fury_cfm_gold_02",
            "fury_cfm_gold_03",
            "fury_cfm_gold_04",
            "fury_cfm_iron_01",
            "fury_cfm_iron_02",
            "fury_cfm_iron_04",
            "fury_crm_rub_01",
            "fury_crm_rub_02",
            "fury_crm_rub_03"
        },
        
        -- Gameplay Settings
        Particles = "ent_amb_smoke_factory_white",
        RockRespawn = 300000,
        -- IMPORTANT: At least one item here must match Item1 to allow processing
        -- This is where players get their resources from mining
        RockItems = {
            {name = "stone", chance = 100}, -- Must match Item1 to allow processing
            {name = "gold", chance = 3},   -- Bonus item
            {name = "diamond", chance = 1}  -- Rare bonus item
        }
    },
    ["Hunting"] = {
        Enabled = true, -- Set to false to disable this job completely
        UseSkillCheck = true, -- Set to false to disable the skill check during preprocessing/processing
        UseProgressBar = false, -- Set to true to use a progress bar instead of Skill Check (if UseSkillCheck is false)
        -- Location Settings
        WorkingPosition = vector3(-864.55, 5032.42, 200.14),
        PreProcessingPosition = vector3(974.3501, -2166.3530, 29.7654),
        ProcessingPosition = vector3(996.8793, -2149.3584, 28.4764),
        
        -- NPC Configuration
        NPC = {
            Enabled = true,
            Type = 2, -- Do not modify
            Name = "Hunter",
            Position = vector3(-780.0961, 5593.6221, 32.6303),
            Heading = 225.7714,
            Model = "ig_hunter",
            Animation = {"", ""},
            Scenario = "WORLD_HUMAN_STAND_IMPATIENT",
            Blip = {
                Text = "[JOB] Hunting",
                Sprite = 141,
                Color = 17
            }
        },
        
        -- Blip Configuration
        Blips = {
            {
                Text = "[JOB] Hunting",
                Sprite = 141,
                Color = 17,
                Position = vector3(-864.55, 5032.42, 200.14),
                Area = {
                    Alpha = 155,
                    Color = 17,
                    Size = 300.0
                }
            },
            {
                Text = "[JOB] Hunting",
                Sprite = 141,
                Color = 17,
                Position = vector3(974.3501, -2166.3530, 29.7654),
            },
            {
                Text = "[JOB] Hunting",
                Sprite = 141,
                Color = 17,
                Position = vector3(996.8793, -2149.3584, 28.4764),
            },
        },
        
        -- Experience System
        XPActions = {
            AnimalHunted = {5, 10},
            AnimalSkinned = {1, 5}
        },
        
        -- Item Configuration
        Item1 = "raw_meat", -- First processing item (obtained from skinning)
        Item2 = "clean_meat", -- Result of first processing
        Item3 = "final_meat_product", -- Final product
        
        -- Processing Settings
        PreProcessingProp = "",
        PreProcessingPropRotation = vector3(0, 0, 90),
        PreProcessingHandProp = "", -- Optional. If empty, no hand prop will be attached 
        PreProcessingHandPropOptions = { -- Options for the hand prop
            bone = 18905, -- SKEL_R_Hand
            offsetX = 0.15,
            offsetY = 0.0,
            offsetZ = 0.0,
            rotationX = 0.0,
            rotationY = 0.0,
            rotationZ = 0.0
        },
        PreProcessingExtraProp = "", -- Optional. If empty, no extra prop will be added on top of the preprocessing prop
        PreProcessingExtraPropOffset = vector3(0.0, 0.0, 1.0), -- Offset from the preprocessing prop position
        ProcessingProp = "fury_cfs_scrapper",
        ProcessingPropRotation = vector3(0, 0, 150),
        PreProcessingTime = 5000,
        ProcessingTime = 10000,
        ProcessingRequiredItems = 5,
        ProcessingGiveItems = 3,
        
        -- Visual Effects
        PreProcessingParticles = "trail_splash_blood",
        ProcessingParticles = "ent_amb_abattoir_saw_blood",
        ProcessingMeatParticles = "blood_chopper",
        
        -- Hunting Settings
        WeaponModel = "WEAPON_MUSKET", -- You can change - https://docs.fivem.net/docs/game-references/weapon-models/
        AreaSize = 300.0,
        
        -- Animal Spawner Configuration
        AnimalSpawner = {
            AnimalModels = {"A_C_Coyote", "A_C_Deer", "A_C_Boar", "A_C_Rabbit_01", "A_C_MtLion", "A_C_Wolf"},
            MinimumAnimalsInArea = 3
        }
    },
    ["Fishing"] = {
        Enabled = true, -- Set to false to disable this job completely
        UseSkillCheck = true, -- Set to false to disable the skill check during preprocessing (Does NOT affect the fishing minigame)
        UseProgressBar = false, -- Set to true to use a progress bar instead of Skill Check (if UseSkillCheck is false)
        -- Location Settings
        PreProcessingPosition = vector3(-1598.2839, 5188.8149, 3.3101),
        ProcessingPosition = vector3(-173.7217, 6556.5195, 10.0863),
        
        -- NPC Configuration
        NPC = {
            Enabled = true,
            Type = 3, -- Do not modify
            Name = "Fisherman",
            Position = vector3(-1594.0479, 5205.0532, 3.3101),
            Heading = 345.2729,
            Model = "A_M_M_RurMeth_01",
            Animation = {"", ""},
            Scenario = "WORLD_HUMAN_DRINKING",
            Blip = {
                Text = "[JOB] Fishing",
                Sprite = 68,
                Color = 38
            }
        },
        
        -- Blip Configuration
        Blips = {
            {
                Text = "[JOB] Fishing",
                Sprite = 68,
                Color = 38,
                Position = vector3(-1598.9175, 5190.0957, 3.3101),
            },
            {
                Text = "[JOB] Fishing",
                Sprite = 68,
                Color = 38,
                Position = vector3(-173.7217, 6556.5195, 10.0863),
            },
        },
        
        -- Experience System
        XPActions = {
            FishCaught = {5, 10},
            FishDiscarded = {1, 5}
        },
        
        -- Item Configuration
        -- IMPORTANT: Item1 is obtained by processing caught fish
        -- This is the main resource that will be processed through the chain
        Item1 = "fish_meat", -- First processing item (obtained from fish)
        Item2 = "clean_fish_meat", -- Result of first processing
        Item3 = "final_fish_product", -- Final product
        
        -- Processing Settings
        PreProcessingProp = "prop_rub_table_02",
        PreProcessingPropRotation = vector3(0, 0, 21.9273),
        PreProcessingHandProp = "prop_knife", -- Optional. If empty, no hand prop will be attached
        PreProcessingHandPropOptions = { -- Options for the hand prop
            bone = 18905, -- SKEL_R_Hand
            offsetX = 0.14,
            offsetY = 0.03,
            offsetZ = 0.03,
            rotationX = -50.0,
            rotationY = -88.0,
            rotationZ = 0.0
        },
        PreProcessingExtraProp = "a_c_fish", -- Optional. If empty, no extra prop will be added on top of the preprocessing prop
        PreProcessingExtraPropOffset = vector3(0.0, 0.0, 0.6), -- Offset from the preprocessing prop position
        ProcessingProp = "fury_cfs_scrapper",
        ProcessingPropRotation = vector3(0, 0, 150),
        PreProcessingTime = 5000,
        ProcessingTime = 10000,
        ProcessingRequiredItems = 5,
        ProcessingGiveItems = 3,
        
        -- Visual Effects
        PreProcessingParticles = "ent_amb_smoke_factory_white",
        ProcessingParticles = "ent_amb_abattoir_saw_blood",
        ProcessingMeatParticles = "blood_chopper",
        
        -- Fishing Settings
        PickupFishKey = 38,
        DiscardFishKey = 47,
        MaxDistanceWaterCheck = 10.0,
        CatchFishCheckTime = 6000,
        CatchFishChance = 0.30,
        
        -- Minigame Configuration
        UseFishingMinigame = true, -- Set to false to disable the fishing minigame (will auto-catch)
        MinigameOptions = {
            Difficulty = 1,
            Time = 5000
        },
        
        -- Fish Types Configuration
        -- 'name': Extra item ID given to player in addition to base item (Item1), like a extra bonus item
        -- 'displayName': Name shown in notifications
        -- 'chance': Catch probability
        Fishes = {
            {name = "fish_oilslimy", displayName = "Fish Small", chance = 80},
            {name = "fish_gemscale", displayName = "Fish Big", chance = 5},
            {name = "fish_oceanpearl", displayName = "Fish Medium", chance = 15},
        }
    },
    ["Lumberjack"] = {
        Enabled = true, -- Set to false to disable this job completely
        UseSkillCheck = true, -- Set to false to disable the skill check during preprocessing/processing
        UseProgressBar = false, -- Set to true to use a progress bar instead of Skill Check (if UseSkillCheck is false)
        -- Location Settings
        PreProcessingPosition = vector3(-472.5624, 5300.8643, 84.9849),
        ProcessingPosition = vector3(-535.3254, 5272.7886, 73.1743),
        
        -- NPC Configuration
        NPC = {
            Enabled = true,
            Type = 4, -- Do not modify
            Name = "Lumberjack",
            Position = vector3(-468.8142, 5351.8555, 79.7185),
            Heading = 20.9624,
            Model = "S_M_M_AutoShop_01",
            Animation = {"", ""},
            Scenario = "WORLD_HUMAN_CLIPBOARD",
            Blip = {
                Text = "[JOB] Lumberjack",
                Sprite = 501,
                Color = 21
            }
        },
        
        -- Blip Configuration
        Blips = {
            {
                Text = "[JOB] Lumberjack",
                Sprite = 501,
                Color = 21,
                Position = vector3(-472.1246, 5301.0962, 86.9544),
            },
            {
                Text = "[JOB] Lumberjack",
                Sprite = 501,
                Color = 21,
                Position = vector3(-535.3254, 5272.7886, 73.1743),
            },
            {
                Text = "[JOB] Lumberjack",
                Sprite = 501,
                Color = 21,
                Area = {
                    Alpha = 155,
                    Color = 21
                }
            }
        },
        
        -- Experience System
        XPActions = {
            CutTree = {1, 5}
        },
        
        -- Item Configuration
        -- IMPORTANT: Item1 must be obtainable from TreeItems to allow processing
        -- This is the main resource that will be processed through the chain
        Item1 = "wood", -- First processing item (must be obtainable from trees)
        Item2 = "processed_wood", -- Result of first processing
        Item3 = "plank", -- Final product
        
        -- Processing Settings
        PreProcessingProp = "prop_tablesaw_01",
        PreProcessingPropRotation = vector3(0, 0, 264.5698),
        PreProcessingHandProp = "", -- Optional. If empty, no hand prop will be attached
        PreProcessingHandPropOptions = { -- Options for the hand prop
            bone = 18905, -- SKEL_R_Hand
            offsetX = 0.15,
            offsetY = 0.0,
            offsetZ = 0.0,
            rotationX = 0.0,
            rotationY = 0.0,
            rotationZ = 0.0
        },
        PreProcessingExtraProp = "prop_fncwood_16g", -- Optional. If empty, no extra prop will be added on top of the preprocessing prop
        PreProcessingExtraPropOffset = vector3(0.0, 0.0, 0.6), -- Offset from the preprocessing prop position
        ProcessingProp = "fury_cfs_scrapper",
        ProcessingPropRotation = vector3(0, 0, 150),
        PreProcessingTime = 5000,
        ProcessingTime = 10000,
        ProcessingRequiredItems = 5,
        ProcessingGiveItems = 3,
        
        -- Visual Effects
        PreProcessingParticles = "proj_flare_trail",
        ProcessingParticles = "ent_amb_smoke_factory_white",
        ProcessingMeatParticles = "ent_dst_wood_planks",
        
        -- Work Zones
        Zones = {
            {vector3(-550.0, 5450.0, 60.0), 150.0}
        },
        
        -- Tree Spawn Points
        TreePositions = {
            {
                vector4(-516.1723, 5371.5137, 69.8366, 172.2831),
                vector4(-462.9774, 5406.1504, 77.2569, 233.3722),
                vector4(-469.2963, 5400.1108, 77.2878, 122.2655),
                vector4(-477.6802, 5400.0757, 76.7574, 93.8957),
                vector4(-497.5461, 5390.0669, 75.3282, 93.1466),
                vector4(-506.3630, 5398.0913, 74.0786, 34.1966),
                vector4(-518.9672, 5401.5327, 72.3548, 321.1613),
                vector4(-571.6868, 5436.7632, 60.4168, 34.7376),
                vector4(-586.7762, 5441.5054, 57.7818, 73.4489),
                vector4(-602.5450, 5448.1836, 57.8389, 81.4132),
                vector4(-603.8607, 5466.7700, 58.1560, 253.9847),
                vector4(-560.0771, 5471.4575, 60.6499, 327.7003),
                vector4(-611.7714, 5502.4858, 49.4874, 13.1752),
                vector4(-601.7144, 5505.4976, 49.5793, 292.5208),
                vector4(-600.3217, 5523.8115, 48.3827, 311.0535),
                vector4(-601.8342, 5535.0605, 46.8053, 319.6740),
                vector4(-591.2194, 5536.8091, 48.5909, 299.5499),
                vector4(-577.5238, 5549.2310, 50.7276, 327.7810),
                vector4(-497.4326, 5460.8462, 79.4686, 356.8983),
                vector4(-492.4348, 5460.4814, 80.8094, 248.5888),
                vector4(-496.4932, 5441.9580, 77.2929, 157.4703),
                vector4(-513.0267, 5422.7407, 64.9954, 334.2189),
                vector4(-501.2876, 5422.3926, 66.6713, 272.1688),
                vector4(-539.7627, 5420.5889, 61.6105, 82.9481),
                vector4(-534.5048, 5430.5337, 62.8247, 301.9658),
                vector4(-544.8282, 5431.3965, 61.5952, 112.3244),
                vector4(-631.3075, 5381.8579, 53.2169, 52.5863),
                vector4(-625.5749, 5396.8369, 50.0763, 321.0299),
                vector4(-617.7822, 5406.1709, 48.2607, 310.7610),
                vector4(-628.1718, 5409.2896, 47.8395, 71.5378),
            }
        },
        
        -- Tree Models and Properties
        TreeModels = {"prop_w_r_cedar_dead"},
        LootProps = {"prop_log_03"},
        Particles = "proj_flare_trail",
        TreeRespawn = 300000,
        -- This is where players get their resources from cutting trees
        TreeItems = {{name = "wood", chance = 100}} -- Must match Item1 to allow processing
    },
    ["Farming"] = {
        Enabled = true, -- Set to false to disable this job completely
        UseSkillCheck = true, -- Set to false to disable the skill check during preprocessing/processing
        UseProgressBar = false, -- Set to true to use a progress bar instead of Skill Check (if UseSkillCheck is false)
        -- Location Settings
        PreProcessingPosition = vector3(1901.4156, 4920.6616, 47.7389),
        ProcessingPosition = vector3(2004.6807, 4987.1631, 40.4520),
        
        -- NPC Configuration
        NPC = {
            Enabled = true,
            Type = 5, -- Do not modify
            Name = "Farmer",
            Position = vector3(2029.8420, 4980.7832, 41.0983),
            Heading = 252.3459,
            Model = "A_M_M_Farmer_01",
            Animation = {"", ""},
            Scenario = "WORLD_HUMAN_AA_SMOKE",
            Blip = {
                Text = "[JOB] Farming",
                Sprite = 514,
                Color = 25
            }
        },
        
        -- Blip Configuration
        Blips = {
            {
                Text = "[JOB] Farming",
                Sprite = 514,
                Color = 25,
                Position = vector3(1901.4156, 4920.6616, 47.7389),
            },
            {
                Text = "[JOB] Farming",
                Sprite = 514,
                Color = 25,
                Position = vector3(2004.6807, 4987.1631, 40.4520),
            },
            {
                Text = "[JOB] Farming",
                Sprite = 514,
                Color = 25,
                Area = {
                    Alpha = 155,
                    Color = 25
                }
            }
        },
        
        -- Experience System
        XPActions = {
            Harvest = {1, 5}
        },
        
        -- Item Configuration
        -- IMPORTANT: Item1 must be obtainable from CropItems to allow processing
        -- This is the main resource that will be processed through the chain
        Item1 = "crop", -- First processing item (must be obtainable from crops)
        Item2 = "processed_crop", -- Result of first processing
        Item3 = "packaged_produce", -- Final product
        
        -- Processing Settings
        PreProcessingProp = "prop_rub_table_02",
        PreProcessingPropRotation = vector3(0, 0, 72.4469),
        PreProcessingHandProp = "prop_knife", -- Optional. If empty, no hand prop will be attached
        PreProcessingHandPropOptions = { -- Options for the hand prop
            bone = 18905, -- SKEL_R_Hand
            offsetX = 0.14,
            offsetY = 0.03,
            offsetZ = 0.03,
            rotationX = -50.0,
            rotationY = -88.0,
            rotationZ = 0.0
        },
        PreProcessingExtraProp = "bzzz_plants_onion_04", -- Optional. If empty, no extra prop will be added on top of the preprocessing prop
        PreProcessingExtraPropOffset = vector3(0.0, 0.0, 0.85), -- Offset from the preprocessing prop position
        ProcessingProp = "fury_cfs_scrapper",
        ProcessingPropRotation = vector3(0, 0, 150),
        PreProcessingTime = 5000,
        ProcessingTime = 10000,
        ProcessingRequiredItems = 5,
        ProcessingGiveItems = 3,
        
        -- Visual Effects
        PreProcessingParticles = "ent_amb_wind_grass",
        ProcessingParticles = "proj_flare_trail",
        ProcessingMeatParticles = "blood_chopper",
        
        -- Work Zones
        Zones = {
            {vector3(2044.5, 4942.0, 40.1), 30.0},
            {vector3(2023.0, 4868.0, 41.9), 30.0}
        },
        
        -- Crop Spawn Points
        CropPositions = {
            {
                vector4(2040.8528, 4960.2544, 40.1164, 222.6280),
                vector4(2043.4781, 4957.4473, 40.0989, 222.5336),
                vector4(2047.1073, 4953.8057, 40.0832, 226.9562),
                vector4(2050.5750, 4950.1997, 40.0766, 221.1212),
                vector4(2055.1199, 4945.7832, 40.0650, 221.1726),
                vector4(2061.9299, 4939.5396, 40.1062, 241.5012),
                vector4(2058.2903, 4937.5962, 40.1165, 93.6779),
                vector4(2055.0024, 4940.6353, 40.1103, 44.4489),
                vector4(2051.6592, 4944.1523, 40.1071, 44.9447),
                vector4(2046.8865, 4948.4307, 40.0978, 49.5278),
                vector4(2042.8328, 4952.6406, 40.0765, 35.5786),
                vector4(2038.6830, 4957.0132, 40.0928, 46.3338),
                vector4(2034.9779, 4951.8428, 40.0267, 187.1496),
                vector4(2039.9248, 4947.4263, 40.1099, 231.2356),
                vector4(2045.7189, 4941.1201, 40.0886, 221.4800),
                vector4(2051.3433, 4936.1362, 40.1128, 225.4887),
                vector4(2052.8562, 4931.1289, 40.0845, 207.1074),
                vector4(2050.1868, 4925.5059, 40.0782, 181.3751),
                vector4(2047.1792, 4928.7251, 40.1029, 43.7243),
                vector4(2043.2705, 4932.9053, 40.1339, 42.4809),
                vector4(2039.5979, 4936.6060, 40.1368, 43.1584),
                vector4(2035.0389, 4940.9087, 40.0811, 50.9032),
                vector4(2029.3416, 4941.0156, 40.1115, 92.9202),
                vector4(2036.9576, 4933.2793, 40.1314, 138.3223),
                vector4(2043.2278, 4926.5596, 40.0601, 227.0999),
                vector4(2044.1527, 4923.5361, 40.1132, 211.4805),
                vector4(2039.6602, 4924.8140, 40.1192, 44.4286),
                vector4(2030.0767, 4931.2539, 40.1039, 53.8530)
            },
            {
                vector4(2031.1759, 4860.6421, 41.8236, 177.9633),
                vector4(2026.9822, 4864.7822, 41.9028, 40.1412),
                vector4(2022.7609, 4869.2896, 41.9001, 41.5981),
                vector4(2017.1376, 4874.4565, 41.8785, 49.1429),
                vector4(2010.4969, 4877.5425, 41.9094, 4.4220),
                vector4(2015.1927, 4873.3589, 41.8579, 221.6734),
                vector4(2020.8210, 4867.5684, 41.8490, 225.2699),
                vector4(2025.6423, 4862.5562, 41.8652, 221.6171),
                vector4(2029.7075, 4858.3032, 41.8800, 222.9320),
                vector4(2026.3169, 4859.3447, 41.8467, 72.8708),
                vector4(2018.8533, 4867.0728, 41.8520, 50.2525),
                vector4(2019.8247, 4877.1729, 41.8744, 10.1153),
                vector4(2027.0228, 4872.9946, 41.8550, 235.0842),
                vector4(2027.4045, 4878.3257, 41.8739, 59.5427),
                vector4(2034.5201, 4874.2593, 41.8951, 222.2704)
            }
        },
        
        -- Crop Models and Properties
        CropModels = {
            "prop_veg_crop_02",
            "prop_veg_crop_04_leaf",
            "bzzz_plants_onion_03",
        },
        
        LootProps = {
            "bzzz_plants_onion_04",
        },
        
        Particles = "ent_amb_wind_grass",
        CropRespawn = 300000,
        -- This is where players get their resources from harvesting crops
        CropItems = {{name = "crop", chance = 100}} -- Must match Item1 to allow processing
    },
    ["Recycling"] = {
        Enabled = true, -- Set to false to disable this job completely
        UseSkillCheck = true, -- Set to false to disable the skill check during preprocessing/processing
        UseProgressBar = false, -- Set to true to use a progress bar instead of Skill Check (if UseSkillCheck is false)
        -- Location Settings
        PreProcessingPosition = vector3(-559.1318, -1800.9478, 21.6261),
        ProcessingPosition = vector3(-509.1765, -1735.8180, 18.1157),
        
        -- NPC Configuration
        NPC = {
            Enabled = true,
            Type = 6, -- Do not modify
            Name = "Dustman",
            Position = vector3(-483.2332, -1731.1321, 18.5493),
            Heading = 99.8284,
            Model = "S_M_Y_Garbage",
            Animation = {"", ""},
            Scenario = "WORLD_HUMAN_HANG_OUT_STREET",
            Blip = {
                Text = "[JOB] Recycling",
                Sprite = 365,
                Color = 2
            }
        },
        
        -- Blip Configuration
        Blips = {
            {
                Text = "[JOB] Recycling",
                Sprite = 365,
                Color = 2,
                Position = vector3(-559.1318, -1800.9478, 21.6261),
            },
            {
                Text = "[JOB] Recycling",
                Sprite = 365,
                Color = 2,
                Position = vector3(-509.1765, -1735.8180, 18.1157),
            },
            {
                Text = "[JOB] Recycling",
                Sprite = 365,
                Color = 2,
                Area = {
                    Alpha = 155,
                    Color = 2
                }
            }
        },
        
        -- Experience System
        XPActions = {
            SearchTrash = {1, 5},
            SearchScrapVehicle = {5, 10}
        },
        
        -- Item Configuration
        -- IMPORTANT: Item1 must be obtainable from ScrapItems to allow processing
        -- This is the main resource that will be processed through the chain
        Item1 = "iron", -- First processing item (must be obtainable from scrap)
        Item2 = "processed_iron", -- Result of first processing
        Item3 = "recycled_material", -- Final product
        
        -- Processing Settings
        PreProcessingProp = "prop_byard_machine03",
        PreProcessingPropRotation = vector3(0, 0, 149.8345), 
        PreProcessingHandProp = "", -- Optional. If empty, no hand prop will be attached
        PreProcessingHandPropOptions = { -- Options for the hand prop
            bone = 18905, -- SKEL_R_Hand
            offsetX = 0.15,
            offsetY = 0.0,
            offsetZ = 0.0,
            rotationX = 0.0,
            rotationY = 0.0,
            rotationZ = 0.0
        },
        PreProcessingExtraProp = "", -- Optional. If empty, no extra prop will be added on top of the preprocessing prop
        PreProcessingExtraPropOffset = vector3(0.0, 0.0, 1.0), -- Offset from the preprocessing prop position
        ProcessingProp = "fury_cfs_scrapper",
        ProcessingPropRotation = vector3(0, 0, 150),
        PreProcessingTime = 5000,
        ProcessingTime = 10000,
        ProcessingRequiredItems = 5,
        ProcessingGiveItems = 3,
        
        -- Visual Effects
        PreProcessingParticles = "ent_amb_sparking_wires",
        ProcessingParticles = "proj_flare_trail",
        ProcessingMeatParticles = "ent_brk_sparking_wires",
        
        -- Work Zones
        Zones = {
            {vector3(-450.0, -1680.0, 18.0), 40.0},
            {vector3(-530.0, -1690.0, 18.0), 50.0}
        },
        
        -- Scrap Vehicle Configuration
        ScrapVehiclePositions = {
            {
                vector4(-469.2401, -1673.0015, 18.0743, 180.2205),
                vector4(-468.9325, -1681.0719, 17.9984, 132.6104),
                vector4(-469.9391, -1689.3417, 17.9377, 180.2151),
                vector4(-464.9588, -1692.5735, 17.9187, 245.8539),
                vector4(-460.0424, -1664.5122, 18.0345, 271.9679),
                vector4(-450.3448, -1667.8490, 18.0291, 247.0388),
                vector4(-426.3660, -1676.6365, 18.0291, 209.9910),
                vector4(-425.8274, -1686.1599, 18.0291, 171.4211)
            },
            {
                vector4(-531.6277, -1715.6570, 18.1981, 74.5679),
                vector4(-517.5980, -1709.7047, 18.3199, 288.4510),
                vector4(-509.2293, -1715.6913, 18.3180, 234.9351),
                vector4(-510.5320, -1722.9036, 18.3116, 183.7283),
                vector4(-515.5330, -1705.9902, 18.2806, 2.4118),
                vector4(-521.7052, -1699.0203, 18.1615, 48.8373),
                vector4(-526.4152, -1690.0702, 18.1919, 26.6609),
                vector4(-538.0284, -1677.8762, 18.1878, 65.4265),
                vector4(-546.4670, -1668.9551, 18.1875, 16.4345),
                vector4(-551.7164, -1659.5791, 18.2526, 57.4223),
                vector4(-548.5882, -1640.6174, 17.9944, 326.6821)
            }
        },
        
        -- Vehicle Models and Properties
        ScrapVehicleModels = {
            "prop_rub_carwreck_12",
            "prop_rub_carwreck_13",
            "prop_rub_carwreck_14"
        },
        ScrapVehicleParticles = "proj_flare_trail",
        ScrapVehicleRespawn = 300000,
        
        -- Loot Configuration
        -- IMPORTANT: At least one item here must match Item1 to allow processing
        -- This is where players get their resources from scrapping vehicles
        ScrapItems = {
            {name = "iron", chance = 100}, -- Must match Item1 to allow processing
            {name = "petrol", chance = 10} -- Bonus item
        },
        LootableProps = {
            "prop_dumpster_01a", "prop_dumpster_02a", "prop_dumpster_02b", "prop_dumpster_3a", "prop_dumpster_4a", "prop_dumpster_4b",
            "prop_bin_05a", "prop_bin_06a", "prop_bin_07a", "prop_bin_07b", "prop_bin_07c", "prop_bin_07d", "prop_bin_08a", "prop_bin_08open",
            "prop_bin_09a", "prop_bin_10a", "prop_bin_10b", "prop_bin_11a", "prop_bin_12a", "prop_bin_13a", "prop_bin_14a", "prop_bin_14b",
            "prop_bin_beach_01d", "prop_bin_delpiero", "prop_bin_delpiero_b", "prop_recyclebin_01a", "prop_recyclebin_02_c", "prop_recyclebin_02_d",
            "prop_recyclebin_02a", "prop_recyclebin_02b", "prop_recyclebin_03_a", "prop_recyclebin_04_a", "prop_recyclebin_04_b", "prop_recyclebin_05_a",
            "zprop_bin_01a_old", "hei_heist_kit_bin_01", "ch_prop_casino_bin_01a", "vw_prop_vw_casino_bin_01a", "mp_b_kit_bin_01"
        },
        LootableLockTime = 300000,
        -- Items that can be found when searching through trash containers
        TrashItems = {
            {name = "iron", chance = 5},
            {name = "tin_can", chance = 25},
            {name = "scrap_paper", chance = 20},
            {name = "broken_glass", chance = 15},
            {name = "plastic_debris", chance = 20},
            {name = "dirty_cloth", chance = 10}
        }
    }
}

-- Animation System Configuration
Config.Animations = {
    ["Mining"] = {
        -- Animation Definitions
        Animations = {
            DigRock = {"melee@large_wpn@streamed_core", "ground_attack_0", 7000},
            Pickup = {"pickup_object", "pickup_low", 1250},
            PreProcess = {"amb@world_human_bum_wash@male@high@idle_a", "idle_a", -1},
            ProcessPour = {"anim@mp_player_intupperspray_champagne", "idle_a", -1},
            Process = {"anim@amb@business@cfm@cfm_cut_sheets@", "cut_guilotine_v1_billcutter", -1},
        },
        
        -- Prop Configuration
        Props = {
            ProcessingBag = "prop_cs_sack_01",
            ProcessingMeat = "prop_vintage_filmcan",
            Pickaxe = "prop_tool_pickaxe"
        },
        
        -- Tool Prop Settings
        ToolPropOptions = {
            bone = 18905, -- Bone index from GetPedBoneIndex
            offsetX = 0.2,
            offsetY = -0.1,
            offsetZ = 0.1,
            rotationX = 240.0,
            rotationY = 50.0,
            rotationZ = 710.0
        },
        
        -- Sounds Configuration (Custom Audio System)
        Sounds = {
            Enabled = true,           -- Enable/disable mining sounds
            Pickaxe = {
                File = "pickaxe_sound", -- Sound file in the sounds folder (without extension)
                Volume = 0.2           -- Volume (0.0 to 1.0)
            }
        }
    },
    ["Hunting"] = {
        -- Animation Definitions
        Animations = {
            SkinEnter = {"amb@world_human_gardener_plant@male@enter", "enter", -1},
            SkinBase = {"amb@world_human_gardener_plant@male@base", "base", -1},
            SkinExit = {"amb@world_human_gardener_plant@male@exit", "exit", 2000},
            PreProcess = {"anim@amb@business@cfm@cfm_cut_sheets@", "load_and_tune_guilotine_v1_billcutter", -1},
            ProcessPour = {"anim@mp_player_intupperspray_champagne", "idle_a", -1},
            Process = {"anim@amb@business@cfm@cfm_cut_sheets@", "cut_guilotine_v1_billcutter", -1},
        },
        
        -- Prop Configuration
        Props = {
            SkinPropModel = "prop_w_me_knife_01",
            ProcessingBag = "prop_cs_sack_01",
            ProcessingMeat = "prop_cs_steak",
            BoneProps = {
                "fury_cfh_bone_01",
                "fury_cfh_bone_02", 
                "fury_cfh_bone_03"
            }
        },
        
        -- Skin Prop Settings
        SkinPropOptions = {
            bone = 0xdead, -- SKEL_R_Hand
            offsetX = 0.11,
            offsetY = 0.02,
            offsetZ = -0.02,
            rotationX = 135.0,
            rotationY = 0.0,
            rotationZ = 0.0
        }
    },
    ["Fishing"] = {
        -- Animation Definitions
        Animations = {
            FishingBase = {"amb@world_human_stand_fishing@idle_a", "idle_a", -1},
            FishingCatching = {"amb@world_human_stand_fishing@idle_a", "idle_c", -1},
            PreProcess = {"anim@amb@business@cfm@cfm_cut_sheets@", "load_and_tune_guilotine_v2_billcutter", -1},
            ProcessPour = {"anim@mp_player_intupperspray_champagne", "idle_a", -1},
            Process = {"anim@amb@business@cfm@cfm_cut_sheets@", "cut_guilotine_v1_billcutter", -1},
        },
        
        -- Prop Configuration
        Props = {
            ProcessingBag = "prop_cs_sack_01",
            ProcessingMeat = "a_c_fish",
            FishingRodModel = "prop_fishing_rod_01",
            Fish = "a_c_fish"
        },
        
        -- Fishing Rod Settings
        FishingRodPropOptions = {
            bone = 18905, -- SKEL_R_Hand
            offsetX = 0.1,
            offsetY = 0.05,
            offsetZ = 0.0,
            rotationX = 70.0,
            rotationY = 120.0,
            rotationZ = 160.0
        }
    },
    ["Lumberjack"] = {
        -- Animation Definitions
        Animations = {
            CutTree = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer", 5000},
            Pickup = {"pickup_object", "pickup_low", 1250},
            PreProcess = {"anim@amb@business@cfm@cfm_cut_sheets@", "load_and_tune_guilotine_v2_billcutter", -1},
            ProcessPour = {"anim@mp_player_intupperspray_champagne", "idle_a", -1},
            Process = {"anim@amb@business@cfm@cfm_cut_sheets@", "cut_guilotine_v1_billcutter", -1},
        },

        -- Prop Configuration
        Props = {
            ProcessingBag = "prop_cs_sack_01",
            ProcessingMeat = "prop_rub_planks_04",
            Axe = "fury_cf_chainsaw_01"
        },
        ToolPropOptions = {
            bone = 18905,
            offsetX = 0.36,
            offsetY = 0.04,
            offsetZ = -0.08,
            rotationX = 158.0,
            rotationY = 54.0,
            rotationZ = -10.0
        },

        -- Sounds Configuration (Custom Audio System)
        Sounds = {
            Enabled = true,           -- Enable/disable tree chopping sounds
            ChainSaw = {
                File = "chainsaw_sound", -- Sound file in the sounds folder (without extension)
                Volume = 0.1          -- Volume (0.0 to 1.0)
            }
        }
    },
    ["Farming"] = {
        -- Animation Definitions
        Animations = {
            Farm = {"amb@world_human_gardener_plant@male@base", "base", 5000},
            Pickup = {"pickup_object", "pickup_low", 1250},
            PreProcess = {"anim@amb@business@cfm@cfm_cut_sheets@", "load_and_tune_guilotine_v2_billcutter", -1},
            ProcessPour = {"anim@mp_player_intupperspray_champagne", "idle_a", -1},
            Process = {"anim@amb@business@cfm@cfm_cut_sheets@", "cut_guilotine_v1_billcutter", -1},
        },

        -- Prop Configuration
        Props = {
            ProcessingBag = "prop_cs_sack_01",
            ProcessingMeat = "bzzz_plants_onion_04",
            Hoe = "prop_cs_trowel"
        },
        ToolPropOptions = {
            bone = 0xdead,
            offsetX = 0.11,
            offsetY = 0.02,
            offsetZ = -0.02,
            rotationX = 135.0,
            rotationY = 0.0,
            rotationZ = 0.0
        },
    },
    ["Recycling"] = {
        -- Animation Definitions
        Animations = {
            SearchingTrash = {"amb@prop_human_bum_bin@base", "base", 5000},
            SearchingScrapVehicle = {"amb@prop_human_bum_bin@base", "base", 8000},
            Pickup = {"pickup_object", "pickup_low", 1250},

            PreProcess = {"anim@gangops@morgue@table@", "player_search", -1},
            ProcessPour = {"anim@mp_player_intupperspray_champagne", "idle_a", -1},
            Process = {"anim@amb@business@cfm@cfm_cut_sheets@", "cut_guilotine_v1_billcutter", -1},
        },  

        -- Prop Configuration
        Props = {
            ProcessingBag = "prop_cs_sack_01",
            ProcessingMeat = "prop_car_exhaust_01",
            Recycler = "fury_cfg_grinder_01"
        },

        -- Recycler Prop Settings
        RecyclerPropOptions = {
            bone = 18905,
            offsetX = 0.2,
            offsetY = 0.2,
            offsetZ = 0.0,
            rotationX = 250.0,
            rotationY = 40.0,
            rotationZ = 70.0
        },
        
        -- Sounds Configuration (Custom Audio System)
        Sounds = {
            Enabled = true,           -- Enable/disable recycling sounds
            Grinder = {
                File = "grinder_sound", -- Sound file in the sounds folder (without extension)
                Volume = 0.2           -- Volume (0.0 to 1.0)
            }
        }
    }
}

-- Level System Configuration
Config.Levels = {
    MaxLevel = 10, -- Maximum achievable level
    ExpPerLevel = 1000 -- Experience points required per level
}

-- Daily Missions System Configuration
Config.DailyMissions = {
    RefreshHours = 24, -- Time in hours for mission refresh
    MaxMissions = 3, -- Maximum missions per player per day

    -- Mining Missions
    ["Mining"] = {
        {
            Name = 'use_pickaxe',
            Label = 'USE THE PICKAXE {int} TIMES',
            MinMax = {5, 15},
            Prize = {50, 150}
        },
        {
            Name = 'dig_rock',
            Label = 'Mine <span>{int}</span> stones',
            MinMax = {5, 15},
            Prize = {50, 150}
        },
        {
            Name = 'process',
            Label = 'Wash <span>{int}</span> stones',
            MinMax = {5, 15},
            Prize = {50, 150}
        },
        {
            Name = 'sell_wholesale',
            Label = 'SELL {int} ITEMS IN WHOLESALE MODE',
            MinMax = {1000, 2000},
            Prize = {300, 500}
        },
        {
            Name = 'sell_retail',
            Label = 'SELL {int} ITEMS IN RETAIL MODE',
            MinMax = {3, 10},
            Prize = {100, 300}
        }
    },

    -- Hunting Missions
    ["Hunting"] = {
        {
            Name = 'use_shotgun',
            Label = 'USE THE SHOTGUN {int} TIMES',
            MinMax = {5, 15},
            Prize = {50, 150}
        },
        {
            Name = 'hunt_animal',
            Label = 'SUCCESSFULLY HUNT {int} ANIMALS',
            MinMax = {3, 10},
            Prize = {100, 300}
        },
        {
            Name = 'skin_animal',
            Label = 'SKIN {int} ANIMALS',
            MinMax = {5, 15},
            Prize = {50, 150}
        },
        {
            Name = 'process',
            Label = 'PROCESS {int} ITEMS',
            MinMax = {5, 15},
            Prize = {50, 150}
        },
        {
            Name = 'sell_wholesale',
            Label = 'SELL {int} ITEMS IN WHOLESALE MODE',
            MinMax = {1000, 2000},
            Prize = {300, 500}
        },
        {
            Name = 'sell_retail',
            Label = 'SELL {int} ITEMS IN RETAIL MODE',
            MinMax = {3, 10},
            Prize = {100, 300}
        }
    },

    -- Fishing Missions
    ["Fishing"] = {
        {
            Name = 'use_fishingrod',
            Label = 'USE THE FISHING ROD {int} TIMES',
            MinMax = {5, 15},
            Prize = {50, 150}
        },
        {
            Name = 'catch_fish',
            Label = 'CATCH FISH {int} TIMES',
            MinMax = {3, 10},
            Prize = {100, 300}
        },
        {
            Name = 'process',
            Label = 'PROCESS {int} ITEMS',
            MinMax = {5, 15},
            Prize = {50, 150}
        },
        {
            Name = 'sell_wholesale',
            Label = 'SELL {int} ITEMS IN WHOLESALE MODE',
            MinMax = {1000, 2000},
            Prize = {300, 500}
        },
        {
            Name = 'sell_retail',
            Label = 'SELL {int} ITEMS IN RETAIL MODE',
            MinMax = {3, 10},
            Prize = {100, 300}
        }
    },

    -- Lumberjack Missions
    ["Lumberjack"] = {
        {
            Name = 'use_axe',
            Label = 'Chop <span>{int}</span> wood',
            MinMax = {5, 15},
            Prize = {50, 150}
        },
        {
            Name = 'chop_wood',
            Label = 'Chop <span>{int}</span> wood',
            MinMax = {5, 15},
            Prize = {50, 150}
        },
        {
            Name = 'process',
            Label = 'PROCESS {int} ITEMS',
            MinMax = {5, 15},
            Prize = {50, 150}
        },
        {
            Name = 'sell_wholesale',
            Label = 'SELL {int} ITEMS IN WHOLESALE MODE',
            MinMax = {1000, 2000},
            Prize = {300, 500}
        },
        {
            Name = 'sell_retail',
            Label = 'SELL {int} ITEMS IN RETAIL MODE',
            MinMax = {3, 10},
            Prize = {100, 300}
        }
    },

    -- Farming Missions
    ["Farming"] = {
        {
            Name = 'harvest_crops',
            Label = 'Harvest {int} crops',
            MinMax = {5, 15},
            Prize = {50, 150}
        },
        {
            Name = 'sell_wholesale',
            Label = 'SELL {int} ITEMS IN WHOLESALE MODE',
            MinMax = {1000, 2000},
            Prize = {300, 500}
        },
        {
            Name = 'sell_retail',
            Label = 'SELL {int} ITEMS IN RETAIL MODE',
            MinMax = {3, 10},
            Prize = {100, 300}
        }
    },

    -- Recycling Missions
    ["Recycling"] = {
        {
            Name = 'use_recycler',
            Label = 'USE THE RECYCLER {int} TIMES',
            MinMax = {5, 15},
            Prize = {50, 150}
        },
        {
            Name = 'search_trash',
            Label = 'SEARCH TRASH {int} TIMES',
            MinMax = {5, 15},
            Prize = {50, 150}
        },
        {
            Name = 'scrap_vehicle',
            Label = 'SCRAP VEHICLE {int} TIMES',
            MinMax = {3, 10},
            Prize = {100, 300}
        },
        {
            Name = 'process',
            Label = 'PROCESS {int} ITEMS',
            MinMax = {5, 15},
            Prize = {50, 150}
        },
        {
            Name = 'sell_wholesale',
            Label = 'SELL {int} ITEMS IN WHOLESALE MODE',
            MinMax = {1000, 2000},
            Prize = {300, 500}
        },
        {
            Name = 'sell_retail',
            Label = 'SELL {int} ITEMS IN RETAIL MODE',
            MinMax = {3, 10},
            Prize = {100, 300}
        }
    }
}

-- Tools System Configuration
Config.Tools = {
    -- Mining Tools
    {
        {
            item = "pickaxe_1",
            image = "pickaxe_1.png", -- MODIFIED
            label = "Pickaxe I",
            level = 1,
            price = 50,
            prop = "prop_pickaxe_1",
            minReward = 1,
            maxReward = 2
        },
        {
            item = "pickaxe_2",
            image = "pickaxe_2.png", -- MODIFIED
            label = "Pickaxe II",
            level = 5,
            price = 2000,
            prop = "prop_pickaxe_2",
            minReward = 2,
            maxReward = 4
        },
        {
            item = "pickaxe_3",
            image = "pickaxe_3.png", -- MODIFIED
            label = "Pickaxe III",
            level = 10,
            price = 7500,
            prop = "prop_pickaxe_2",
            minReward = 3,
            maxReward = 6
        }
    },
    -- Hunting Tools
    {
        {
            item = "hunting_rifle_1",
            image = "hunting_rifle_1.png", -- MODIFIED
            label = "Rifle I",
            level = 1,
            price = 50,
            minReward = 1,
            maxReward = 2
        },
        {
            item = "hunting_rifle_2",
            image = "hunting_rifle_2.png", -- MODIFIED
            label = "Rifle II",
            level = 5,
            price = 2000,
            minReward = 2,
            maxReward = 4
        },
        {
            item = "hunting_rifle_3",
            image = "hunting_rifle_3.png", -- MODIFIED
            label = "Rifle III",
            level = 10,
            price = 7500,
            minReward = 3,
            maxReward = 6
        }
    },
    -- Fishing Tools
    {
        {
            item = "fishing_rod_1",
            image = "fishing_rod_1.png", -- MODIFIED
            label = "Rod I",
            level = 1,
            price = 50,
            minReward = 1,
            maxReward = 2
        },
        {
            item = "fishing_rod_2",
            image = "fishing_rod_2.png", -- MODIFIED
            label = "Rod II",
            level = 5,
            price = 2000,
            minReward = 2,
            maxReward = 4
        },
        {
            item = "fishing_rod_3",
            image = "fishing_rod_3.png", -- MODIFIED
            label = "Rod III",
            level = 10,
            price = 7500,
            minReward = 3,
            maxReward = 6
        }
    },
    -- Lumberjack Tools
    {
        {
            item = "axe_1",
            image = "axe_1.png", -- MODIFIED
            label = "Saw I",
            level = 1,
            price = 50,
            minReward = 1,
            maxReward = 2
        },
        {
            item = "axe_2",
            image = "axe_2.png", -- MODIFIED
            label = "Saw II",
            level = 5,
            price = 2000,
            minReward = 2,
            maxReward = 4
        },
        {
            item = "axe_3",
            image = "axe_3.png", -- MODIFIED
            label = "Saw III",
            level = 10,
            price = 7500,
            minReward = 3,
            maxReward = 6
        }
    },
    -- Farming Tools
    {
        {
            item = "hoe_1",
            image = "hoe_1.png", -- MODIFIED
            label = "Hoe I",
            level = 1,
            price = 50,
            minReward = 1,
            maxReward = 2
        },
        {
            item = "hoe_2",
            image = "hoe_2.png", -- MODIFIED
            label = "Hoe II",
            level = 5,
            price = 2000,
            minReward = 2,
            maxReward = 4
        },
        {
            item = "hoe_3",
            image = "hoe_3.png", -- MODIFIED
            label = "Hoe III",
            level = 10,
            price = 7500,
            minReward = 3,
            maxReward = 6
        }
    },
    -- Recycling Tools
    {
        {
            item = "recycler_1",
            image = "recycler_1.png", -- MODIFIED
            label = "Recycler I",
            level = 1,
            price = 50,
            minReward = 1,
            maxReward = 2
        },
        {
            item = "recycler_2",
            image = "recycler_2.png", -- MODIFIED
            label = "Recycler II",
            level = 5,
            price = 2000,
            minReward = 2,
            maxReward = 4
        },
        {
            item = "recycler_3",
            image = "recycler_3.png", -- MODIFIED
            label = "Recycler III",
            level = 10,
            price = 7500,
            minReward = 3,
            maxReward = 6
        }
    }
}

-- Sell Shop Configuration
Config.SellShop = {
    -- Shop Settings
    EnableSellShop = true,
    RetailItemQuantity = 10,    -- Maximum items for retail sales
    WholesaleItemQuantity = 300, -- Maximum items for wholesale sales

    -- Items that can be sold for each job
    ItemsForSale = {
        -- Mining Job Items
        ["Mining"] = {
            -- Final Product
            ["final_stone_product"] = {
                image = "final_stone_product.png", 
                priceRetail = math.random(40, 80),     -- Final product price
                priceWholesale = math.random(30, 60)   -- Bulk final product price
            },
            -- Bonus Items
            ["gold"] = {
                image = "gold.png", 
                priceRetail = math.random(100, 200),    -- Raw gold price
                priceWholesale = math.random(80, 100)   -- Bulk gold price
            },
            ["diamond"] = {
                image = "diamond.png", 
                priceRetail = math.random(200, 300),   -- Raw diamond price
                priceWholesale = math.random(100, 200)  -- Bulk diamond price
            },
            -- Raw Material (symbolic price)
            ["stone"] = {
                image = "stone.png", 
                priceRetail = math.random(4, 8),       -- Raw stone price
                priceWholesale = math.random(3, 6)     -- Bulk raw stone price
            }
        },
    
        -- Hunting Job Items
        ["Hunting"] = {
            -- Final Product
            ["final_meat_product"] = {
                image = "final_meat_product.png", 
                priceRetail = math.random(40, 80),     -- Final product price
                priceWholesale = math.random(30, 60)   -- Bulk final product price
            },
            -- Raw Material (symbolic price)
            ["raw_meat"] = {
                image = "raw_meat.png", 
                priceRetail = math.random(4, 8),       -- Raw meat price
                priceWholesale = math.random(3, 6)     -- Bulk raw meat price
            }
        },
    
        -- Fishing Job Items
        ["Fishing"] = {
            -- Final Product
            ["final_fish_product"] = {
                image = "final_fish_product.png", 
                priceRetail = math.random(40, 80),     -- Final product price
                priceWholesale = math.random(30, 60)   -- Bulk final product price
            },
            -- Raw Material (symbolic price)
            ["fish_meat"] = {
                image = "fish_meat.png", 
                priceRetail = math.random(4, 8),       -- Raw fish price
                priceWholesale = math.random(3, 6)     -- Bulk raw fish price
            },
            -- Bonus Fish Items
            ["fish_oilslimy"] = {
                image = "fish_oilslimy.png", 
                priceRetail = math.random(8, 15),      -- Common bonus fish
                priceWholesale = math.random(5, 10)
            },
            ["fish_oceanpearl"] = {
                image = "fish_oceanpearl.png", 
                priceRetail = math.random(25, 45),     -- Uncommon bonus fish
                priceWholesale = math.random(18, 35)
            },
            ["fish_gemscale"] = {
                image = "fish_gemscale.png", 
                priceRetail = math.random(50, 90),     -- Rare bonus fish
                priceWholesale = math.random(40, 75)
            }
        },
    
        -- Lumberjack Job Items 
        ["Lumberjack"] = {
            -- Final Product
            ["plank"] = {
                image = "plank.png", 
                priceRetail = math.random(40, 80),     -- Final product price
                priceWholesale = math.random(30, 60)   -- Bulk final product price
            },
            -- Raw Material (symbolic price)
            ["wood"] = {
                image = "wood.png", 
                priceRetail = math.random(4, 8),       -- Raw wood price
                priceWholesale = math.random(3, 6)     -- Bulk raw wood price
            },
            ["processed_wood"] = {
                image = "processed_wood.png", 
                priceRetail = math.random(10, 20),     -- Intermediate wood
                priceWholesale = math.random(8, 15)    -- Bulk intermediate wood
            }
        },
    
        -- Farming Job Items
        ["Farming"] = {
            -- Final Product
            ["packaged_produce"] = {
                image = "packaged_produce.png", 
                priceRetail = math.random(40, 80),     -- Final product price
                priceWholesale = math.random(30, 60)   -- Bulk final product price
            },
            -- Raw Material (symbolic price)
            ["crop"] = {
                image = "crop.png", 
                priceRetail = math.random(4, 8),       -- Raw crop price
                priceWholesale = math.random(3, 6)     -- Bulk raw crop price
            },
            ["processed_crop"] = {
                image = "processed_crop.png", 
                priceRetail = math.random(10, 20),     -- Intermediate crop
                priceWholesale = math.random(8, 15)    -- Bulk intermediate crop
            }
        },
    
        -- Recycling Job Items
        ["Recycling"] = {
            -- Final Product
            ["recycled_material"] = {
                image = "recycled_material.png", 
                priceRetail = math.random(40, 80),     -- Final product price
                priceWholesale = math.random(30, 60)   -- Bulk final product price
            },
            -- Bonus Items (no processing required, symbolic value)
            ["petrol"] = {
                image = "petrol.png", 
                priceRetail = math.random(5, 10),      -- Petrol price
                priceWholesale = math.random(2, 5)     -- Bulk petrol price
            },
            ["iron"] = {
                image = "iron.png", 
                priceRetail = math.random(5, 8),       -- Raw iron price
                priceWholesale = math.random(1, 4)     -- Bulk raw iron price
            },
            ["tin_can"] = {
                image = "tin_can.png", 
                priceRetail = math.random(2, 3),       -- Old tin can
                priceWholesale = math.random(1, 2)
            },
            ["scrap_paper"] = {
                image = "scrap_paper.png", 
                priceRetail = math.random(1, 2),       -- Used paper
                priceWholesale = math.random(1, 1)
            },
            ["broken_glass"] = {
                image = "broken_glass.png", 
                priceRetail = math.random(2, 4),       -- Shattered glass
                priceWholesale = math.random(1, 3)
            },
            ["plastic_debris"] = {
                image = "plastic_debris.png", 
                priceRetail = math.random(2, 5),       -- Bits of plastic
                priceWholesale = math.random(1, 3)
            },
            ["dirty_cloth"] = {
                image = "dirty_cloth.png", 
                priceRetail = math.random(1, 3),       -- Stained cloth
                priceWholesale = math.random(1, 2)
            }
        }

    }
}

-- Localization System Configuration
Config.Locales = {
    -- English Translations
    ['en'] = {
        -- Notification Messages
        notifications = {
            NotEnoughItems = "You don't have enough items for this action.",
            RequiredItems = "You need {int} items to complete this action.",
            InventoryFull = "Your inventory is full.",
            MaxLevelReached = "You have reached the maximum level for this job.",
            LevelUp = "Congratulations! You have reached level {int}.",
            MissionCompleted = "Mission completed! You received {int} XP.",
            ToolClaimed = "You have claimed your {string}.",
            ToolUsed = "Using tool...",
            ToolMissing = "You are missing the required tool to perform this action.",
            ToolNotAvailableOutsideZone = "This tool can only be used within designated zones.",
            ToolRemoved = "The tool has been removed as you left the area.",
            ToolRemovedInventory = "You do not longer have tool in your inventory.",
            ProcessingStart = "Processing...",
            SkillCheckFailed = "You failed the skill check.",
            ProcessingComplete = "Processing complete! You received {int}.",
            SaleXP = "You gained %d XP from selling items.",
            CannotUseTool = "You cannot use this tool yet. Reach level {int} to unlock it.",
            ItemReceived = "You have received {string} {int}.",
            NoMoreItemsToProcess = "You have no more items to process.",
            MachineInUse = "This machine is currently in use by another player.",
            AreaAlreadySearched = "It seems someone has already searched here.",
            NotNearWater = "You need to be near the sea to use the fishing rod.",
            SomethingBitten = "Something has bitten!",
            NoCatch = "Oh no, you didn't catch anything.",
            Caught = "Great! You have caught: [{string}]",
            CannotInteract = "You cannot interact with this right now.",
            NotEnoughMoney = "You don't have enough money to afford this.",
            PressToStop = "Press any move key to stop.",
            CantFarmMultiple = "You can't farm more than one at once.",
            SellLimitReached = "You have reached sell limit for today.",
            CantSellMoreItems = "You cannot sell more stuff today.",
            GoToWater = "You can fish in any body of water. Head to the nearest one!"
        },
        -- Target Interaction Messages
        target = {
            Talk = "Talk with {string}",
            Farm = "Interact with",
            Process1 = "Process [{string}]",
            Process2 = "Finalize [{string}]",
            SkinAnimal = "Skin Animal",
            PickupItem = "Pick Up",
            PickupFish = "Pickup fish",
            DiscardFish = "Discard fish",
            SearchTrash = "Search trash",
            Fish = "Press [E] to pickup\nPress [G] to discard"
        },
        -- Minigames
        minigames = {
            SkillCheckTitle = "Skill Check",
            FishCatchingTitle = "Fish catching!"
        }
    },

    -- Spanish Translations
    ['es'] = {
        -- Notification Messages
        notifications = {
            NotEnoughItems = "No tienes suficientes ítems para esta acción.",
            RequiredItems = "Necesitas {int} objetos para completar esta acción.",
            InventoryFull = "Tu inventario está lleno.",
            MaxLevelReached = "Has alcanzado el nivel máximo para este trabajo.",
            LevelUp = "¡Felicidades! Has alcanzado el nivel {int}.",
            MissionCompleted = "¡Misión completada! Has recibido {int} XP.",
            ToolClaimed = "Has reclamado tu {string}.",
            ToolUsed = "Usando herramienta...",
            ToolMissing = "Te falta la herramienta necesaria para realizar esta acción.",
            ToolNotAvailableOutsideZone = "Esta herramienta solo se puede usar en zonas designadas.",
            ToolRemoved = "La herramienta ha sido eliminada al salir del área.",
            ToolRemovedInventory = "Ya no tienes la herramienta en tu inventario.",
            ProcessingStart = "Procesando...",
            SkillCheckFailed = "Has fallado la prueba de habilidad.",
            ProcessingComplete = "¡Procesamiento completo! Has recibido {int}.",
            SaleXP = "Has ganado %d XP por vender ítems.",
            CannotUseTool = "No puedes usar esta herramienta aún. Alcanza el nivel {int} para desbloquearla.",
            ItemReceived = "Has recibido {string} x{int}.",
            NoMoreItemsToProcess = "No tienes más ítems para procesar.",
            MachineInUse = "Esta máquina está siendo utilizada por otro jugador.",
            AreaAlreadySearched = "Parece que alguien ya ha buscado aquí.",
            NotNearWater = "Necesitas estar cerca del mar para usar la caña de pescar.",
            SomethingBitten = "¡Ha picado algo!",
            NoCatch = "Oh vaya, no has pescado nada.",
            Caught = "¡Genial! Has pescado: [{string}]",
            CannotInteract = "No puedes interactuar con esto ahora mismo.",
            NotEnoughMoney = "No tienes suficiente dinero para permitirte esto.",
            PressToStop = "Presiona cualquier tecla de movimiento para detenerte.",
            CantFarmMultiple = "No puedes farmear más de uno a la vez.",
            SellLimitReached = "Has alcanzado el límite de venta para hoy.",
            CantSellMoreItems = "No puedes vender más cosas hoy.",
            GoToWater = "Puedes pescar en cualquier masa de agua. ¡Dirígete a la más cercana!"
        },
        -- Target Interaction Messages
        target = {
            Talk = "Hablar con {string}",
            Farm = "Interactuar con",
            Process1 = "Procesar {string}",
            Process2 = "Finalizar {string}",
            SkinAnimal = "Despellejar Animal",
            PickupItem = "Recoger",
            PickupFish = "Recoger pescado",
            DiscardFish = "Descartar pescado",
            SearchTrash = "Buscar en la Basura",
            Fish = "Presiona [E] para recoger\nPresiona [G] para descartar"
        },
        -- Minigames
        minigames = {
            SkillCheckTitle = "Prueba de Habilidad",
            FishCatchingTitle = "¡Pescando!"
        }
    },

    -- French Translations (fr)
    ['fr'] = {
        notifications = {
            NotEnoughItems = "Vous n'avez pas assez d'objets pour cette action.",
            RequiredItems = "Vous avez besoin de {int} objets pour terminer cette action.",
            InventoryFull = "Votre inventaire est plein.",
            MaxLevelReached = "Vous avez atteint le niveau maximum pour ce métier.",
            LevelUp = "Félicitations ! Vous avez atteint le niveau {int}.",
            MissionCompleted = "Mission terminée ! Vous avez reçu {int} XP.",
            ToolClaimed = "Vous avez réclamé votre {string}.",
            ToolUsed = "Utilisation de l'outil...",
            ToolMissing = "Il vous manque l'outil requis pour effectuer cette action.",
            ToolNotAvailableOutsideZone = "Cet outil ne peut être utilisé que dans les zones désignées.",
            ToolRemoved = "L'outil a été retiré car vous avez quitté la zone.",
            ToolRemovedInventory = "Vous n'avez plus l'outil dans votre inventaire.",
            ProcessingStart = "Traitement en cours...",
            SkillCheckFailed = "Vous avez échoué au test d'habileté.",
            ProcessingComplete = "Traitement terminé ! Vous avez reçu {int}.",
            SaleXP = "Vous avez gagné %d XP en vendant des objets.",
            CannotUseTool = "Vous ne pouvez pas encore utiliser cet outil. Atteignez le niveau {int} pour le débloquer.",
            ItemReceived = "Vous avez reçu {string} {int}.",
            NoMoreItemsToProcess = "Vous n'avez plus d'objets à traiter.",
            MachineInUse = "Cette machine est actuellement utilisée par un autre joueur.",
            AreaAlreadySearched = "Il semble que quelqu'un ait déjà cherché ici.",
            NotNearWater = "Vous devez être près de la mer pour utiliser la canne à pêche.",
            SomethingBitten = "Quelque chose a mordu !",
            NoCatch = "Oh non, vous n'avez rien attrapé.",
            Caught = "Super ! Vous avez attrapé : [{string}]",
            CannotInteract = "Vous ne pouvez pas interagir avec ceci pour le moment.",
            NotEnoughMoney = "Vous n'avez pas assez d'argent pour cela.",
            PressToStop = "Appuyez sur n'importe quelle touche de mouvement pour arrêter.",
            CantFarmMultiple = "Vous ne pouvez pas farmer plus d'un à la fois.",
            SellLimitReached = "Vous avez atteint la limite de vente pour aujourd'hui.",
            CantSellMoreItems = "Vous ne pouvez plus vendre d'articles aujourd'hui.",
            GoToWater = "Vous pouvez pêcher dans n'importe quel point d'eau. Dirigez-vous vers le plus proche !"
        },
        target = {
            Talk = "Parler avec {string}",
            Farm = "Interagir avec",
            Process1 = "Traiter [{string}]",
            Process2 = "Finaliser [{string}]",
            SkinAnimal = "Dépecer l'animal",
            PickupItem = "Ramasser",
            PickupFish = "Ramasser le poisson",
            DiscardFish = "Jeter le poisson",
            SearchTrash = "Fouiller la poubelle",
            Fish = "Appuyez sur [E] pour ramasser\nAppuyez sur [G] pour jeter"
        },
        minigames = {
            SkillCheckTitle = "Test d'habileté",
            FishCatchingTitle = "Pêche en cours !"
        }
    },

    -- German Translations (de)
    ['de'] = {
        notifications = {
            NotEnoughItems = "Du hast nicht genügend Gegenstände für diese Aktion.",
            RequiredItems = "Du benötigst {int} Gegenstände, um diese Aktion abzuschließen.",
            InventoryFull = "Dein Inventar ist voll.",
            MaxLevelReached = "Du hast das maximale Level für diesen Job erreicht.",
            LevelUp = "Herzlichen Glückwunsch! Du hast Level {int} erreicht.",
            MissionCompleted = "Mission abgeschlossen! Du hast {int} EP erhalten.",
            ToolClaimed = "Du hast dein {string} erhalten.",
            ToolUsed = "Werkzeug wird benutzt...",
            ToolMissing = "Dir fehlt das erforderliche Werkzeug für diese Aktion.",
            ToolNotAvailableOutsideZone = "Dieses Werkzeug kann nur in ausgewiesenen Zonen verwendet werden.",
            ToolRemoved = "Das Werkzeug wurde entfernt, da du das Gebiet verlassen hast.",
            ToolRemovedInventory = "Du hast das Werkzeug nicht mehr im Inventar.",
            ProcessingStart = "Verarbeitung läuft...",
            SkillCheckFailed = "Du hast den Skill-Check nicht bestanden.",
            ProcessingComplete = "Verarbeitung abgeschlossen! Du hast {int} erhalten.",
            SaleXP = "Du hast %d EP durch den Verkauf von Gegenständen erhalten.",
            CannotUseTool = "Du kannst dieses Werkzeug noch nicht benutzen. Erreiche Level {int}, um es freizuschalten.",
            ItemReceived = "Du hast {string} {int} erhalten.",
            NoMoreItemsToProcess = "Du hast keine weiteren Gegenstände zum Verarbeiten.",
            MachineInUse = "Diese Maschine wird gerade von einem anderen Spieler benutzt.",
            AreaAlreadySearched = "Es scheint, als hätte hier schon jemand gesucht.",
            NotNearWater = "Du musst dich in der Nähe des Meeres befinden, um die Angel zu benutzen.",
            SomethingBitten = "Etwas hat angebissen!",
            NoCatch = "Oh nein, du hast nichts gefangen.",
            Caught = "Großartig! Du hast gefangen: [{string}]",
            CannotInteract = "Du kannst hiermit gerade nicht interagieren.",
            NotEnoughMoney = "Du hast nicht genug Geld dafür.",
            PressToStop = "Drücke eine Bewegungstaste, um zu stoppen.",
            CantFarmMultiple = "Du kannst nicht mehr als eines gleichzeitig farmen.",
            SellLimitReached = "Du hast das Verkaufslimit für heute erreicht.",
            CantSellMoreItems = "Du kannst heute keine weiteren Artikel verkaufen.",
            GoToWater = "Du kannst in jedem Gewässer angeln. Geh zum nächstgelegenen!"
        },
        target = {
            Talk = "Sprechen mit {string}",
            Farm = "Interagieren mit",
            Process1 = "Verarbeiten [{string}]",
            Process2 = "Fertigstellen [{string}]",
            SkinAnimal = "Tier häuten",
            PickupItem = "Aufheben",
            PickupFish = "Fisch aufheben",
            DiscardFish = "Fisch wegwerfen",
            SearchTrash = "Müll durchsuchen",
            Fish = "Drücke [E] zum Aufheben\nDrücke [G] zum Wegwerfen"
        },
        minigames = {
            SkillCheckTitle = "Skill-Check",
            FishCatchingTitle = "Fischfang!"
        }
    },

    -- Portuguese Translations (pt)
    ['pt'] = {
        notifications = {
            NotEnoughItems = "Você não tem itens suficientes para esta ação.",
            RequiredItems = "Você precisa de {int} itens para completar esta ação.",
            InventoryFull = "Seu inventário está cheio.",
            MaxLevelReached = "Você atingiu o nível máximo para este trabalho.",
            LevelUp = "Parabéns! Você atingiu o nível {int}.",
            MissionCompleted = "Missão concluída! Você recebeu {int} XP.",
            ToolClaimed = "Você reivindicou seu {string}.",
            ToolUsed = "Usando ferramenta...",
            ToolMissing = "Você não tem a ferramenta necessária para realizar esta ação.",
            ToolNotAvailableOutsideZone = "Esta ferramenta só pode ser usada em zonas designadas.",
            ToolRemoved = "A ferramenta foi removida ao sair da área.",
            ToolRemovedInventory = "Você não tem mais a ferramenta no inventário.",
            ProcessingStart = "Processando...",
            SkillCheckFailed = "Você falhou no teste de habilidade.",
            ProcessingComplete = "Processamento concluído! Você recebeu {int}.",
            SaleXP = "Você ganhou %d XP vendendo itens.",
            CannotUseTool = "Você ainda não pode usar esta ferramenta. Alcance o nível {int} para desbloqueá-la.",
            ItemReceived = "Você recebeu {string} {int}.",
            NoMoreItemsToProcess = "Você não tem mais itens para processar.",
            MachineInUse = "Esta máquina está sendo usada por outro jogador.",
            AreaAlreadySearched = "Parece que alguém já procurou aqui.",
            NotNearWater = "Você precisa estar perto do mar para usar a vara de pescar.",
            SomethingBitten = "Algo mordeu!",
            NoCatch = "Oh não, você não pegou nada.",
            Caught = "Ótimo! Você pegou: [{string}]",
            CannotInteract = "Você não pode interagir com isto agora.",
            NotEnoughMoney = "Você não tem dinheiro suficiente para isso.",
            PressToStop = "Pressione qualquer tecla de movimento para parar.",
            CantFarmMultiple = "Você não pode farmar mais de um de cada vez.",
            SellLimitReached = "Você atingiu o limite de venda para hoje.",
            CantSellMoreItems = "Você não pode vender mais itens hoje.",
            GoToWater = "Você pode pescar em qualquer corpo de água. Vá para o mais próximo!"
        },
        target = {
            Talk = "Falar com {string}",
            Farm = "Interagir com",
            Process1 = "Processar [{string}]",
            Process2 = "Finalizar [{string}]",
            SkinAnimal = "Esfolar Animal",
            PickupItem = "Pegar",
            PickupFish = "Pegar peixe",
            DiscardFish = "Descartar peixe",
            SearchTrash = "Procurar no lixo",
            Fish = "Pressione [E] para pegar\nPressione [G] para descartar"
        },
        minigames = {
            SkillCheckTitle = "Teste de Habilidade",
            FishCatchingTitle = "Pescando!"
        }
    },

    -- Turkish Translations (tr)
    ['tr'] = {
        notifications = {
            NotEnoughItems = "Bu eylem için yeterli eşyanız yok.",
            RequiredItems = "Bu eylemi tamamlamak için {int} eşyaya ihtiyacınız var.",
            InventoryFull = "Envanteriniz dolu.",
            MaxLevelReached = "Bu meslek için maksimum seviyeye ulaştınız.",
            LevelUp = "Tebrikler! Seviye {int} oldunuz.",
            MissionCompleted = "Görev tamamlandı! {int} XP kazandınız.",
            ToolClaimed = "{string} aletinizi aldınız.",
            ToolUsed = "Alet kullanılıyor...",
            ToolMissing = "Bu eylemi gerçekleştirmek için gerekli alete sahip değilsiniz.",
            ToolNotAvailableOutsideZone = "Bu alet yalnızca belirlenmiş bölgelerde kullanılabilir.",
            ToolRemoved = "Bölgeden ayrıldığınız için alet kaldırıldı.",
            ToolRemovedInventory = "Artık envanterinizde alet bulunmuyor.",
            ProcessingStart = "İşleniyor...",
            SkillCheckFailed = "Beceri testinde başarısız oldunuz.",
            ProcessingComplete = "İşlem tamamlandı! {int} aldınız.",
            SaleXP = "Eşya satarak %d XP kazandınız.",
            CannotUseTool = "Bu aleti henüz kullanamazsınız. Kilidi açmak için seviye {int}'e ulaşın.",
            ItemReceived = "{string} {int} aldınız.",
            NoMoreItemsToProcess = "İşlenecek başka eşyanız yok.",
            MachineInUse = "Bu makine şu anda başka bir oyuncu tarafından kullanılıyor.",
            AreaAlreadySearched = "Görünüşe göre birisi burayı zaten aramış.",
            NotNearWater = "Olta kullanmak için denize yakın olmalısınız.",
            SomethingBitten = "Bir şey ısırdı!",
            NoCatch = "Oh hayır, hiçbir şey yakalayamadınız.",
            Caught = "Harika! Yakaladınız: [{string}]",
            CannotInteract = "Şu anda bununla etkileşim kuramazsınız.",
            NotEnoughMoney = "Bunu karşılayacak kadar paranız yok.",
            PressToStop = "Durdurmak için herhangi bir hareket tuşuna basın.",
            CantFarmMultiple = "Aynı anda birden fazla farm yapamazsınız.",
            SellLimitReached = "Bugünkü satış limitine ulaştınız.",
            CantSellMoreItems = "Bugün daha fazla eşya satamazsınız.",
            GoToWater = "Herhangi bir su kütlesinde balık tutabilirsiniz. En yakındakine gidin!"
        },
        target = {
            Talk = "{string} ile konuş",
            Farm = "Etkileşime gir",
            Process1 = "İşle [{string}]",
            Process2 = "Sonlandır [{string}]",
            SkinAnimal = "Hayvanı Yüz",
            PickupItem = "Al",
            PickupFish = "Balığı al",
            DiscardFish = "Balığı at",
            SearchTrash = "Çöpü ara",
            Fish = "Almak için [E] tuşuna basın\nAtmak için [G] tuşuna basın"
        },
        minigames = {
            SkillCheckTitle = "Beceri Testi",
            FishCatchingTitle = "Balık tutma!"
        }
    },

    -- Arabic Translations (ar)
    ['ar'] = {
        notifications = {
            NotEnoughItems = "ليس لديك عناصر كافية لهذا الإجراء.",
            RequiredItems = "أنت بحاجة إلى {int} عناصر لإكمال هذا الإجراء.",
            InventoryFull = "مخزونك ممتلئ.",
            MaxLevelReached = "لقد وصلت إلى المستوى الأقصى لهذه الوظيفة.",
            LevelUp = "تهانينا! لقد وصلت إلى المستوى {int}.",
            MissionCompleted = "اكتملت المهمة! لقد تلقيت {int} XP.",
            ToolClaimed = "لقد استلمت {string} الخاص بك.",
            ToolUsed = "جارٍ استخدام الأداة...",
            ToolMissing = "أنت تفتقد الأداة المطلوبة لتنفيذ هذا الإجراء.",
            ToolNotAvailableOutsideZone = "لا يمكن استخدام هذه الأداة إلا في المناطق المخصصة.",
            ToolRemoved = "تمت إزالة الأداة لأنك غادرت المنطقة.",
            ToolRemovedInventory = "لم تعد الأداة موجودة في مخزونك.",
            ProcessingStart = "جارٍ المعالجة...",
            SkillCheckFailed = "لقد فشلت في اختبار المهارة.",
            ProcessingComplete = "اكتملت المعالجة! لقد تلقيت {int}.",
            SaleXP = "لقد كسبت %d XP من بيع العناصر.",
            CannotUseTool = "لا يمكنك استخدام هذه الأداة بعد. قم بالوصول إلى المستوى {int} لفتحها.",
            ItemReceived = "لقد تلقيت {string} {int}.",
            NoMoreItemsToProcess = "ليس لديك المزيد من العناصر لمعالجتها.",
            MachineInUse = "هذه الآلة قيد الاستخدام حاليًا من قبل لاعب آخر.",
            AreaAlreadySearched = "يبدو أن شخصًا ما قد بحث هنا بالفعل.",
            NotNearWater = "يجب أن تكون بالقرب من البحر لاستخدام صنارة الصيد.",
            SomethingBitten = "شيء ما قد عض!",
            NoCatch = "أوه لا، لم تصطد أي شيء.",
            Caught = "رائع! لقد اصطدت: [{string}]",
            CannotInteract = "لا يمكنك التفاعل مع هذا الآن.",
            NotEnoughMoney = "ليس لديك ما يكفي من المال لتحمل هذا.",
            PressToStop = "اضغط على أي مفتاح حركة للتوقف.",
            CantFarmMultiple = "لا يمكنك جمع أكثر من عنصر في نفس الوقت.",
            SellLimitReached = "لقد وصلت إلى حد البيع لهذا اليوم.",
            CantSellMoreItems = "لا يمكنك بيع المزيد من الأشياء اليوم.",
            GoToWater = "يمكنك الصيد في أي مسطح مائي. توجه إلى الأقرب!"
        },
        target = {
            Talk = "تحدث مع {string}",
            Farm = "تفاعل مع",
            Process1 = "معالجة [{string}]",
            Process2 = "إنهاء [{string}]",
            SkinAnimal = "سلخ الحيوان",
            PickupItem = "التقاط",
            PickupFish = "التقاط السمكة",
            DiscardFish = "تجاهل السمكة",
            SearchTrash = "بحث في القمامة",
            Fish = "اضغط [E] للالتقاط\nاضغط [G] للتجاهل"
        },
        minigames = {
            SkillCheckTitle = "اختبار المهارة",
            FishCatchingTitle = "صيد السمك!"
        }
    },

    -- Italian Translations (it)
    ['it'] = {
        notifications = {
            NotEnoughItems = "Non hai abbastanza oggetti per questa azione.",
            RequiredItems = "Hai bisogno di {int} oggetti per completare questa azione.",
            InventoryFull = "Il tuo inventario è pieno.",
            MaxLevelReached = "Hai raggiunto il livello massimo per questo lavoro.",
            LevelUp = "Congratulazioni! Hai raggiunto il livello {int}.",
            MissionCompleted = "Missione completata! Hai ricevuto {int} XP.",
            ToolClaimed = "Hai reclamato il tuo {string}.",
            ToolUsed = "Utilizzo dello strumento...",
            ToolMissing = "Ti manca lo strumento necessario per eseguire questa azione.",
            ToolNotAvailableOutsideZone = "Questo strumento può essere utilizzato solo nelle zone designate.",
            ToolRemoved = "Lo strumento è stato rimosso perché hai lasciato l'area.",
            ToolRemovedInventory = "Non hai più lo strumento nel tuo inventario.",
            ProcessingStart = "Elaborazione in corso...",
            SkillCheckFailed = "Hai fallito il test di abilità.",
            ProcessingComplete = "Elaborazione completata! Hai ricevuto {int}.",
            SaleXP = "Hai guadagnato %d XP vendendo oggetti.",
            CannotUseTool = "Non puoi ancora usare questo strumento. Raggiungi il livello {int} per sbloccarlo.",
            ItemReceived = "Hai ricevuto {string} {int}.",
            NoMoreItemsToProcess = "Non hai più oggetti da elaborare.",
            MachineInUse = "Questa macchina è attualmente in uso da un altro giocatore.",
            AreaAlreadySearched = "Sembra che qualcuno abbia già cercato qui.",
            NotNearWater = "Devi essere vicino al mare per usare la canna da pesca.",
            SomethingBitten = "Qualcosa ha abboccato!",
            NoCatch = "Oh no, non hai pescato niente.",
            Caught = "Fantastico! Hai pescato: [{string}]",
            CannotInteract = "Non puoi interagire con questo ora.",
            NotEnoughMoney = "Non hai abbastanza soldi per questo.",
            PressToStop = "Premi un tasto qualsiasi di movimento per fermarti.",
            CantFarmMultiple = "Non puoi raccogliere più di uno alla volta.",
            SellLimitReached = "Hai raggiunto il limite di vendita per oggi.",
            CantSellMoreItems = "Non puoi vendere altri oggetti oggi.",
            GoToWater = "Puoi pescare in qualsiasi specchio d'acqua. Dirigiti a quello più vicino!"
        },
        target = {
            Talk = "Parla con {string}",
            Farm = "Interagisci con",
            Process1 = "Elabora [{string}]",
            Process2 = "Finalizza [{string}]",
            SkinAnimal = "Scuoia Animale",
            PickupItem = "Raccogli",
            PickupFish = "Raccogli pesce",
            DiscardFish = "Scarta pesce",
            SearchTrash = "Cerca nella spazzatura",
            Fish = "Premi [E] per raccogliere\nPremi [G] per scartare"
        },
        minigames = {
            SkillCheckTitle = "Test di Abilità",
            FishCatchingTitle = "Pesca!"
        }
    },

    -- Russian Translations (ru)
    ['ru'] = {
        notifications = {
            NotEnoughItems = "У вас недостаточно предметов для этого действия.",
            RequiredItems = "Вам нужно {int} предметов, чтобы завершить это действие.",
            InventoryFull = "Ваш инвентарь полон.",
            MaxLevelReached = "Вы достигли максимального уровня для этой работы.",
            LevelUp = "Поздравляем! Вы достигли {int} уровня.",
            MissionCompleted = "Миссия выполнена! Вы получили {int} XP.",
            ToolClaimed = "Вы забрали свой {string}.",
            ToolUsed = "Использование инструмента...",
            ToolMissing = "У вас отсутствует необходимый инструмент для выполнения этого действия.",
            ToolNotAvailableOutsideZone = "Этот инструмент можно использовать только в обозначенных зонах.",
            ToolRemoved = "Инструмент был удален, так как вы покинули зону.",
            ToolRemovedInventory = "У вас больше нет инструмента в инвентаре.",
            ProcessingStart = "Обработка...",
            SkillCheckFailed = "Вы провалили проверку навыка.",
            ProcessingComplete = "Обработка завершена! Вы получили {int}.",
            SaleXP = "Вы получили %d XP за продажу предметов.",
            CannotUseTool = "Вы еще не можете использовать этот инструмент. Достигните {int} уровня, чтобы разблокировать его.",
            ItemReceived = "Вы получили {string} {int}.",
            NoMoreItemsToProcess = "У вас больше нет предметов для обработки.",
            MachineInUse = "Эта машина в настоящее время используется другим игроком.",
            AreaAlreadySearched = "Кажется, кто-то уже искал здесь.",
            NotNearWater = "Вам нужно быть рядом с морем, чтобы использовать удочку.",
            SomethingBitten = "Что-то клюнуло!",
            NoCatch = "О нет, вы ничего не поймали.",
            Caught = "Отлично! Вы поймали: [{string}]",
            CannotInteract = "Вы не можете взаимодействовать с этим прямо сейчас.",
            NotEnoughMoney = "У вас недостаточно денег для этого.",
            PressToStop = "Нажмите любую клавишу движения, чтобы остановиться.",
            CantFarmMultiple = "Вы не можете фармить больше одного за раз.",
            SellLimitReached = "Вы достигли лимита продаж на сегодня.",
            CantSellMoreItems = "Вы не можете продать больше вещей сегодня.",
            GoToWater = "Вы можете ловить рыбу в любом водоеме. Направляйтесь к ближайшему!"
        },
        target = {
            Talk = "Поговорить с {string}",
            Farm = "Взаимодействовать с",
            Process1 = "Обработать [{string}]",
            Process2 = "Завершить [{string}]",
            SkinAnimal = "Освежевать животное",
            PickupItem = "Поднять",
            PickupFish = "Поднять рыбу",
            DiscardFish = "Выбросить рыбу",
            SearchTrash = "Обыскать мусор",
            Fish = "Нажмите [E], чтобы поднять\nНажмите [G], чтобы выбросить"
        },
        minigames = {
            SkillCheckTitle = "Проверка Навыка",
            FishCatchingTitle = "Ловля рыбы!"
        }
    }
}

Last updated