NoLimits Phone Snatcher Installation Guide

Follow this guide to successfully set up the NoLimits Phone Snatcher script on your FiveM server.


Step 1 : Downloading the Script


Step 2 : Resource Transfer

If you are using FTP, please ensure you use WinSCP to transfer the resource to the server. If you use FileZilla, you may encounter the error "Failed to verify protected resource" Resource Dependency


Step 3 : Required Dependencies

Resource
Download Link

ox_lib

pure-minigame


Step 4: Starting the Resource

Add the script to your server.cfg, making sure it's started in the correct order. Here's an example layout:

ensure ox_lib                # Ensure dependencies are started first
ensure es_extended/qb-core   # Core framework must start before this

# Start NoLimits Phone Snatcher
ensure nl-phonesnatcher

# Other server resources follow

Step 5 : Inventory Assets

Additionally, make sure all necessary items are added to your server's item list for the script to function properly.

ESX
INSERT INTO `items` (name, label, weight) VALUES
	('flipper_hacking','Flipper Hacking', 1),
	('aphone','aPhone 24', 1),
	('samsamphone','Samsam S55 Ultra', 1)
;
QS INVENTORY

['flipper_hacking']               = {
    ['name'] = 'flipper_hacking',
    ['label'] = 'Flipper Hacking',
    ['weight'] = 100,
    ['type'] = 'item',
    ['image'] = 'flipper_hacking.png',
    ['unique'] = false,
    ['useable'] = true,
    ['shouldClose'] = true,
    ['combinable'] = nil,
    ['description'] = 'A hacking device'
},
['aphone']               = {
    ['name'] = 'aphone',
    ['label'] = 'aPhone 24',
    ['weight'] = 100,
    ['type'] = 'item',
    ['image'] = 'aphone.png',
    ['unique'] = false,
    ['useable'] = true,
    ['shouldClose'] = true,
    ['combinable'] = nil,
    ['description'] = 'Very expensive phone'
},
['samsamphone']               = {
    ['name'] = 'samsamphone',
    ['label'] = 'Samsam S55 Ultra',
    ['weight'] = 100,
    ['type'] = 'item',
    ['image'] = 'samsamphone.png',
    ['unique'] = false,
    ['useable'] = true,
    ['shouldClose'] = true,
    ['combinable'] = nil,
    ['description'] = 'Very expensive phone'
},
NEW QBCore
    flipper_hacking = { 
        name = 'flipper_hacking', 
        label = 'Flipper Hacking', 
        weight = 100, 
        type = 'item', 
        image = 'flipper_hacking.png', 
        unique = false, 
        useable = false, 
        shouldClose = false, 
        description = 'A hacking device' 
    },
    aphone = { 
        name = 'aphone', 
        label = 'aPhone 24', 
        weight = 100, 
        type = 'item', 
        image = 'aphone.png', 
        unique = false, 
        useable = false, 
        shouldClose = false, 
        description = 'Very expensive phone' 
    },
    samsamphone = { 
        name = 'samsamphone', 
        label = 'Samsam S55 Ultra', 
        weight = 100, 
        type = 'item', 
        image = 'samsamphone.png', 
        unique = false, 
        useable = false, 
        shouldClose = false, 
        description = 'Very expensive phone' 
    },
OLD QBCore
    ["flipper_hacking"] = {
        ["name"] = "flipper_hacking",
        ["label"] = "Flipper Hacking",
        ["weight"] = 100,
        ["type"] = "item",
        ["image"] = "flipper_hacking.png",
        ["unique"] = false,
        ["useable"] = true,
        ["shouldClose"] = true,
        ["combinable"] = nil,
        ["description"] = "A hacking device"
    },
    ['aphone'] = {
        ['name'] = 'aphone', 			  	  		
        ['label'] = 'aPhone 24', 				    
        ['weight'] = 1000, 		
        ['type'] = 'item', 		
        ['image'] = 'aphone.png', 				
        ['unique'] = false, 	
        ['useable'] = false, 	
        ['shouldClose'] = true,	   
        ['combinable'] = nil,   
        ['description'] = 'Very expensive phone'
    },
    ['samsamphone'] = {
        ['name'] = 'samsamphone', 			  	  	
        ['label'] = 'Samsam S55 Ultra', 				
        ['weight'] = 1000, 		
        ['type'] = 'item', 		
        ['image'] = 'samsamphone.png', 		
        ['unique'] = false, 	
        ['useable'] = false, 	
        ['shouldClose'] = true,	   
        ['combinable'] = nil,   
        ['description'] = 'Very expensive phone'
    },
OX INVENTORY
['flipper_hacking'] = {
    label = 'Flipper Hacking',
    weight = 1,
    close = true,
},
['aphone'] = {
    label = 'aPhone 24',
    weight = 1,
    close = false,
},
['samsamphone'] = {
    label = 'Samsam S55 Ultra',
    weight = 1,
    close = false,
},

Step 6 : Configuration

Open-source files are available for editing the framework function. The main configuration of the resource is provided below.

Config File

Config = {}

-- =========================
--      General Settings
-- =========================

-- Set 'qb' for QBCore or 'esx' for ESX
Config.Framework = 'esx'

-- Inventory System
Config.UseOxInventory = true     -- Set to true if using ox_inventory

-- Notification System
Config.NotificationSystem = "ox_lib"  -- Only ox_lib is supported

-- Dispatch System: "ps-dispatch", "cd_dispatch", "qs-dispatch", or "custom"
Config.DispatchSystem = "custom"

-- Target System: "ox_target" or "qb-target"
Config.TargetSystem = "ox_target"

-- =========================
--       Gameplay
-- =========================

Config.HackingDevice = 'flipper_hacking'
Config.PriceHackingDevice = 200
Config.SuccessRate = 100  -- Percent chance to succeed (100 = always)
Config.MaxTry = 2
Config.MinTime = 5

-- Alert police on success/fail
Config.AlertPoliceSuccess = true
Config.AlertPoliceFail = true

-- Distances (in meters)
Config.MinDistance = 2.0             -- To snatch a phone
Config.WarningDistance = 8.0         -- 3D text display range
Config.Show3DTextDistance = 5.0      -- Visual cue display range

-- Payment for renting a bike ('cash', 'bank', or 'both')
Config.PaymentMethod = "cash"

-- Type of money rewarded for phone sales
Config.SellMoneyType = "dirty"         -- Options: "cash", "bank", "dirty"
Config.DirtyMoneyItem = "black_money"  -- Item name used for dirty money

-- =========================
--         Peds & Blips
-- =========================

Config.Leader = {
    model = 'u_m_m_streetart_01',
    location = vector4(446.0039, -1235.3147, 28.9584, 355.7636),
    blipenabled = true,
    blipname = 'Phone Snatcher Leader',
    blipsprite = 389,
    blipcolour = 59,
    blipscale = 0.5,
    blipshortrange = true,
}

Config.TargetBlip = {
    enabled = true,
    name = 'Phone Target',
    sprite = 1,
    scale = 1.0,
    colour = 46,
    shortRange = true,
}

Config.Peds = {
    "u_f_y_poppymich_02",
    "u_f_m_miranda_02",
    "u_m_m_bankman",
    "u_m_m_aldinapoli",
}

-- =========================
--         Locations
-- =========================

Config.PedSpawn = {
    vector3(242.6468, -1115.9561, 29.3236),
    vector3(8.1043, -916.9601, 29.9050),
    vector3(212.7151, -593.0364, 43.8679),
    vector3(462.5270, -693.6348, 27.4210),
    vector3(386.7478, -899.6111, 29.4521),
    vector3(-122.8933, -888.5554, 29.3389),
    vector3(-21.6521, -1001.8614, 29.4998),
    vector3(417.1408, -1108.8044, 30.0487),
    vector3(327.1724, -1011.7714, 29.2908),
    vector3(66.1242, -615.9608, 31.9018),
    vector3(280.1768, -620.6162, 42.0211),
}

Config.RentBikeSpawn = vector4(446.9450, -1230.0487, 30.1007, 272.5505)

-- =========================
--       Phone Rewards
-- =========================

Config.Rewards = {
    ['aphone'] = { minPayout = 800, maxPayout = 1200 },
    ['samsamphone'] = { minPayout = 500, maxPayout = 900 },
}

-- =========================
--      Minigame Settings
-- =========================

Config.MinigameSettings = {
    totalNumbers = 1,            -- How many numbers the player has to input
    seconds = 20,                -- Time given for each minigame round
    timesToChangeNumbers = 0,    -- Times the number sequence changes
    amountOfGames = 1,           -- How many rounds to play
    incrementByAmount = 5,       -- Difficulty scaling
}

-- =========================
--           Bmx
-- =========================


Config.Vehicles = {
    ["bmx"] = {
        rentprice = 100 -- Set your desired rent price
    }
}

If you need further assistance or help with custom integration, feel free to reach out via the NoLimits support channels.

Happy Snatching!

Last updated