The S Project
  • Casino Heist Docs
  • Standalone
    • Getting Started
    • Config
    • Standalone Function
  • Esx
    • Getting Started
    • Config
  • QBCore
    • Getting Started
    • Config
Powered by GitBook
On this page
  • When switching the config to standalone
  • All the places you will have to implement your logic
  1. Standalone

Standalone Function

The interesting part starts here.

When switching the config to standalone

Lets see for example client/checks_client.lua this event checks what framework we set in the config and takes the player job to allow him to open the casino doors, in line 80 you will have to take your way of taking the player job and implement it that if the player job is set to

Config.authorizedJobs = 'police'

In line 80 implement your logic for example you can see how qbcore is doing it

PlayerJob = QBCore.Functions.GetPlayerData().job.name
RegisterNetEvent('s-casinoheist:client:doorlock')
AddEventHandler('s-casinoheist:client:doorlock', function()
    CreateThread(function()
        if Config.Framework == "ESX" then
            ESX = exports[Config.CoreName]:getSharedObject()
            PlayerData = ESX.GetPlayerData()
            PlayerJob = PlayerData.job.name
        elseif Config.Framework == "QB" then
            QBCore = exports[Config.CoreName]:GetCoreObject()
            while not QBCore.Functions.GetPlayerData().job do Citizen.Wait(100) end
            PlayerJob = QBCore.Functions.GetPlayerData().job.name
        else
            --standalone-- implement your logic here
        end
        if Config.debug then print("PlayerJob", PlayerJob) end
        while true do
            local playerPed = PlayerPedId()
            local playerCoords = GetEntityCoords(playerPed)
            -- Reset door interaction status for this iteration
            isNearDoor = false
            closestCategory = nil
            closestDoorId = nil
            -- Check proximity to doors and handle interaction
            for category, doors in pairs(Config.Doors) do
-- the rest of the code
-- ...

All the places you will have to implement your logic

and again remember, all of this is optional it all depands if you want full integration

-- checks_server.lua - line 16 - optional
elseif Config.Framework == "QB" then
    QBCore = exports[Config.CoreName]:GetCoreObject()
else
    -- standalone here you will be able to grab your framework server object
end
-- checks_server.lua - s-casinoheist:hasitems
elseif Config.Framework == "QB" then
        if Config.debug then print("qb run hasitems") end
        local Player = QBCore.Functions.GetPlayer(source)
        local hasItem = false
        if Player and Player.PlayerData.items then
            for _, itemData in pairs(Player.PlayerData.items) do
                if itemData.name == item and (not amount or itemData.amount >= amount) then
                    hasItem = true
                    break
                end
            end
        end
        cb(hasItem)
    else
        if Config.debug then print("standalone run hasitems") end
        -- Implement your own logic for standalone.
        -- if player has the item cb(true)
        -- if player doesent have the item cb(false)
        cb(true)
    end
-- checks_server.lua - s-casinoheist:policecheck
    elseif Config.Framework == "QB" then
        if Config.debug then print("qb run policecheck") end
        if Config.debug then print("current police", CurrentCops) end
        if CurrentCops >= Config.RequiredCops then
            cb(true)
            if Config.debug then print("callback s-casinoheist:policecheck is:", true) end
        else
            cb(false)
            if Config.debug then print("callback s-casinoheist:policecheck is:", false) end
        end
    else
        if Config.debug then print("standalone run policecheck") end
        local amount = 0
         -- Implement your own logic for standalone.
         -- Get the police count and verify if it meets the Config.RequiredCops
        if amount >= Config.RequiredCops then
            cb(true)
            if Config.debug then print("callback s-casinoheist:policecheck is:", true) end
        else
            cb(false)
            if Config.debug then print("callback s-casinoheist:policecheck is:", false) end
        end
    end

    elseif Config.Framework == "QB" then
        if Config.debug then print("qb run") end
        local src = source
        local players = QBCore.Functions.GetPlayers(src)
        for i = 1, #players do
            local player = QBCore.Functions.GetPlayer(players[i])
            if (player.PlayerData.job.name == 'police' and player.PlayerData.job.onduty) then
                TriggerClientEvent('casinoheist:client:policeAlertconfig', players[i], coords)
            end
        end
    else
        if Config.debug then print("standalone run") end
        -- Implement your own logic for standalone.
        -- Trigger the event for all the cops in the server, see the example above
    end
RegisterServerEvent("s-casinoheist:removeitem")
AddEventHandler("s-casinoheist:removeitem", function(item)
    if Config.Framework == "ESX" then
        if Config.debug then print("esx run RemoveItem") end
        local Player = ESX.GetPlayerFromId(source)
        if Config.Inventory == "regular" then
            Player.removeInventoryItem(item, 1)
        else
            exports.ox_inventory:RemoveItem(source, item, 1)
        end
    elseif Config.Framework == "QB" then
        if Config.debug then print("qb run RemoveItem") end
        local src = source
        if Config.Inventory == "qb-inventory" then
            exports[Config.Inventory]:RemoveItem(src, item, 1, false, 's-casinoheist:removeitem') -- todo : doc
        else
            exports.ox_inventory:RemoveItem(source, item, 1)
        end
    else
        if Config.debug then print("standalone run removeitem") end
        -- implement your own logic.a
    end
end)
RegisterServerEvent('s-casinoheist:server:rewardItem')
AddEventHandler('s-casinoheist:server:rewardItem', function(reward)
    if Config.Framework == "ESX" then
        if Config.debug then print("esx run rewardItem") end
        local src = source
        local player = ESX.GetPlayerFromId(src)

        if player then
            if reward.item ~= nil then
                if Config.Inventory == "regular" then
                    player.addInventoryItem(reward.item, reward.count)
                else
                    exports.ox_inventory:AddItem(src, reward.item, reward.count)
                end
            else
                player.addMoney(reward.count)
            end
        end
    elseif Config.Framework == "QB" then
        if Config.debug then print("qb run rewardItem") end
        local src = source
        local player = QBCore.Functions.GetPlayer(src)
        if player then
            if reward.item ~= nil then
                player.Functions.AddItem(reward.item, reward.count)
                TriggerClientEvent('inventory:client:ItemBox', src, QBCore.Shared.Items[reward.item], "add")
            else
                player.Functions.AddMoney('cash', reward.count, 'casino')
            end
        end
    else
        if Config.debug then print("standalone run rewardItem") end
        -- Implement your own logic for standalone.
    end
end)
PreviousConfigNextEsx

Last updated 5 months ago