Electrician Job with minigame

:zap:Electrician Job (with minigame)

Ever wanted to keep the lights on in Los Santos? With the electrician job, players can now work as professional electricians repairing electrical fuseboxes across the city. This script features an engaging circuit minigame where players solve electrical puzzles, providing an interactive experience.

:shopping_cart: Get it here: gamzkystore.com

:question: Support: Discord

:movie_camera: Detailed preview: Youtube

Features

  • Interactive Circuit Minigame: 4x4 grid puzzle where players rotate circuit pieces to complete electrical connections with real-time power lime visualization.
  • Economy System: Base payment per repair plus bonus for completing all repairs.
  • Professional Vehicle Management: Multiple spawn locations, vehicle return and deposit-based access to prevent abuse.
  • Location System: Lots of pre-configured locations across the city with randomized assignments for each shift, smart navigation, and blips for easy navigation.
  • Repair Mechanics: Interactive fuse box props with sparking particle effects and welding animations.
  • Multi-Framework Compatibility: Automatic ESX & QBCore detection with ox_target or qb-target integration and easy server integration.
  • NPC Interaction: NPC with voice lines and greetings for more a immersive interaction.
  • Anti-Exploit Protection: Server-side validation for all actions, location verification and state tracking.
  • Customization: Fully configurable payments, cooldowns, and locations with multi-language support and easy modification for server needs.

Resmon: Idle: 0.00ms - Active: 0.00ms

Core/framework related functions are still accessible in the encrypted version, feel free to create a support ticket in our Discord in case of questions.

Config
Config = {}

-- Job Configuration
Config.JobName = nil -- Leave nil if you want no job requirement

-- Payment and Economy
Config.BasePayment = 200      -- Base payment per repair
Config.BonusPayment = 500     -- Bonus for completing all repairs in a shift
Config.MaxRepairsPerShift = 5 -- Maximum repairs before cooldown
Config.ShiftCooldown = 0      -- Cooldown in seconds

-- Repair Configuration
Config.RepairScenario = 'WORLD_HUMAN_WELDING' -- Animation to play during repair

-- Start Location Configuration
Config.StartLocation = {
    Coords = vector4(721.00, -2018.89, 29.43, 251.10),
    Blip = {
        Enabled = true,
        Sprite = 354, -- Electrician blip
        Color = 5,    -- Yellow
        Scale = 1.3,
        Label = 'Electrician Job',
    },
    Ped = {
        Model = 's_m_m_gentransport',
        Scenario = 'WORLD_HUMAN_CLIPBOARD',
        Heading = 240.0,
        GreetLines = { 'GENERIC_HI', 'GENERIC_HOWS_IT_GOING' },
        JobStartLines = { 'GENERIC_THANKS' },
        JobStopLines = { 'GENERIC_BYE' },
        VoiceName = 'S_M_M_TRUCKER_01_WHITE_FULL_01',
    }
}

-- Fuse Box Locations (randomized for each job)
Config.FuseBoxLocations = {
    -- Removed for display purposes
}

-- Fuse Box Configuration
Config.FuseBox = {
    Model = 'ch_prop_ch_fuse_box_01a', -- Fuse box prop model
    Particle = {
        Dict = 'core',
        Name = 'ent_brk_sparking_wires_sp',
        Size = 1.0,
        RepeatInterval = 1000,
    },
    Blip = {
        Sprite = 354, -- Electrician blip
        Color = 1,    -- Red
        Scale = 1.0,
        Label = 'Faulty Fuse Box',
        ShortRange = false,
    },
}

-- Locales for multi-language support
Config.Locales = {
    ['start_job'] = 'Start Electrician Job',
    ['stop_job'] = 'Stop Electrician Job',
    ['repair_fusebox'] = 'Repair Fuse Box',
    ['job_in_progress'] = 'Electrician job in progress',
    ['repairs_completed'] = 'Repairs completed: %s/%s',
    ['shift_complete'] = 'Shift complete!',
    ['cooldown_active'] = 'Cooldown active: %s minutes remaining',
    -- Notification messages
    ['job_started'] = 'You have started your electrician shift. Check your map for faulty fuse boxes.',
    ['job_stopped'] = 'You have ended your electrician shift.',
    ['repair_completed'] = 'Fuse box repaired successfully!',
    ['repair_failed'] = 'Repair failed. Try again.',
    ['all_repairs_complete'] = 'All repairs completed! You earned a bonus.',
    ['shift_complete_notify'] = 'Shift complete! You can start a new shift in 30 minutes.',
    ['cooldown_active_notify'] = 'You must wait before starting another shift.',
    ['no_active_job'] = 'You do not have an active electrician job.',
    ['payment_received'] = 'Payment received for repairing a fuse box.',
    ['need_job'] = 'You need to be an electrician to start this job.',
    ['not_enough_money_deposit'] = 'You do not have enough money to pay the deposit.',
    ['already_active_job'] = 'You already have an active electrician job.',
    ['invalid_job_location'] = 'Invalid job location detected.',
    ['no_active_job_server'] = 'No active job found.',
    ['invalid_repair_index'] = 'Invalid repair index.',
    ['repair_already_completed'] = 'This repair was already completed.',
    ['not_all_repairs_completed'] = 'Not all repairs have been completed.',
    ['failed_load_vehicle_model'] = 'Failed to load vehicle model.',
    ['no_available_vehicle_spawn'] = 'No available vehicle spawn points.',
    ['return_job_vehicle_first'] = 'Return the job vehicle first.',
    ['job_vehicle_nearby'] = 'You already have a job vehicle.',
    ['job_vehicle_taken'] = 'You have taken the job vehicle.',
    ['not_in_job_vehicle'] = 'You are not in the job vehicle.',
}

-- Vehicle Spawn Configuration
Config.Vehicle = {
    Model = 'burrito',
    Deposit = 1000,
    SpawnLocations = {
        vector4(722.21, -2032.09, 29.10, 354.60),
        vector4(725.31, -2032.61, 29.10, 354.69),
        vector4(728.56, -2032.65, 29.10, 355.80),
        vector4(731.78, -2032.53, 29.09, 355.24),
        vector4(734.92, -2032.38, 29.10, 354.81),
    },
    Return = {
        Location = vector4(728.67, -2032.42, 29.28, 178.44),
        Marker = {
            Enabled = true,
            Type = 1,
            Size = { x = 5.0, y = 5.0, z = 0.5 },
            Color = { r = 255, g = 50, b = 50, a = 125 },
            DrawDistance = 25.0,
        },
        Key = 38,
        Label = '[E] Return to garage',
        Distance = 5.0,
    },
}
Code is accessible No, but there is an unencrypted version
Subscription-based No
Lines (approximately) 1826
Requirements ox_lib, (ox_target or qb-target), (ESX, QBCore or qbox)
Support Yes
2 Likes