Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --server.lua--(vdk_recolt_master)
- require "resources/essentialmode/lib/MySQL"
- MySQL:open(database.host, database.name, database.username, database.password)
- RegisterServerEvent("jobs:getJobs")
- local jobs = {}
- local result = nil
- AddEventHandler("jobs:getJobs", function ()
- jobs = {}
- if(not result) then
- local executed_query = MySQL:executeQuery("SELECT price, i1.`id` AS raw_id, i1.`libelle` AS raw_item, i2.`id` AS treat_id, i2.`libelle` AS treat_item, p1.x AS fx, p1.y AS fy, p1.z AS fz, p2.x AS tx, p2.y AS ty, p2.z AS tz, p3.x AS sx, p3.y AS sy, p3.z AS sz, job_id FROM recolt LEFT JOIN items i1 ON recolt.`raw_id`=i1.id LEFT JOIN items i2 ON recolt.`treated_id`=i2.id LEFT JOIN coordinates p1 ON recolt.`field_id`=p1.id LEFT JOIN coordinates p2 ON recolt.`treatment_id`=p2.id LEFT JOIN coordinates p3 ON recolt.`seller_id`=p3.id")
- result = MySQL:getResults(executed_query, { 'price', 'raw_id', 'raw_item', 'treat_id', 'treat_item', 'fx', 'fy', 'fz', 'tx', 'ty', 'tz', 'sx', 'sy', 'sz', 'job_id' })
- if (result) then
- jobs = result
- end
- else
- jobs = result
- end
- TriggerClientEvent("cli:getJobs", source, jobs)
- end)
- --vdkrec.lua--(vdk_recolt_master)
- local recoltDistance = 10
- local timeForRecolt = 4000 --1000 for 1 second
- local near
- local jobId = 1
- JOBS = {}
- BLIPS = {}
- RegisterNetEvent("jobs:getJobs")
- RegisterNetEvent("cli:getJobs")
- RegisterNetEvent("recolt:updateJobs")
- AddEventHandler("recolt:updateJobs", function(id)
- jobId = id
- TriggerServerEvent("jobs:getJobs")
- end)
- AddEventHandler("playerSpawned", function()
- TriggerServerEvent("jobs:getJobs")
- end)
- -- Get the list of all jobs in the database and create the blip associated
- AddEventHandler("cli:getJobs", function(listJobs)
- JOBS = listJobs
- for k, existingBlip in ipairs(BLIPS) do
- RemoveBlip(existingBlip)
- end
- Citizen.CreateThread(function()
- for _, item in pairs(JOBS) do
- if(item.job_id == jobId) then
- setBlip(item.fx, item.fy, item.fz, 17)
- setBlip(item.tx, item.ty, item.tz, 18)
- setBlip(item.sx, item.sy, item.sz, 19)
- end
- end
- end)
- end)
- -- Control if the player of is near of a place of job
- function IsNear()
- local ply = GetPlayerPed(-1)
- local plyCoords = GetEntityCoords(ply, 0)
- if(IsPedInAnyVehicle(ply, true) == false) then
- for k, item in ipairs(JOBS) do
- if(item.job_id == jobId or item.job_id == 6) then
- local distance_field = GetDistanceBetweenCoords(item.fx, item.fy, item.fz, plyCoords["x"], plyCoords["y"], plyCoords["z"], true)
- local distance_treatment = GetDistanceBetweenCoords(item.tx, item.ty, item.tz, plyCoords["x"], plyCoords["y"], plyCoords["z"], true)
- local distance_seller = GetDistanceBetweenCoords(item.sx, item.sy, item.sz, plyCoords["x"], plyCoords["y"], plyCoords["z"], true)
- if (distance_field <= recoltDistance) then
- --jobId = k
- return 'field', item
- elseif (distance_treatment <= recoltDistance) then
- --jobId = k
- return 'treatment', item
- elseif (distance_seller <= recoltDistance) then
- --jobId = k
- return 'seller', item
- end
- end
- end
- end
- end
- -- Display the message of recolting/treating/selling and trigger the associated event(s)
- function recolt(text, item, rl)
- if (text == 'Récolte') then
- TriggerEvent("mt:missiontext", text .. ' en cours de ~g~' .. tostring(item.raw_item) .. '~s~...', timeForRecolt - 800)
- Citizen.Wait(timeForRecolt - 800)
- TriggerEvent("player:receiveItem", tonumber(item.raw_id), 1)
- TriggerEvent("mt:missiontext", rl .. ' ~g~' .. tostring(item.raw_item) .. '~s~...', 800)
- elseif (text == 'Traitement') then
- TriggerEvent("mt:missiontext", text .. ' en cours de ~g~' .. tostring(item.raw_item) .. '~s~...', timeForRecolt - 800)
- Citizen.Wait(timeForRecolt - 800)
- TriggerEvent("player:looseItem", tonumber(item.raw_id), 1)
- TriggerEvent("player:receiveItem", tonumber(item.treat_id), 1)
- TriggerEvent("mt:missiontext", rl .. ' ~g~' .. tostring(item.treat_item) .. '~s~...', 800)
- elseif (text == 'Vente') then
- TriggerEvent("mt:missiontext", text .. ' en cours de ~g~' .. tostring(item.treat_item) .. '~s~...', timeForRecolt - 800)
- Citizen.Wait(timeForRecolt - 800)
- TriggerEvent("player:sellItem", tonumber(item.treat_id), tonumber(item.price))
- TriggerEvent("mt:missiontext", rl .. ' ~g~' .. tostring(item.treat_item) .. '~s~...', 800)
- end
- Citizen.Wait(800)
- end
- function setBlip(x, y, z, num)
- local blip = AddBlipForCoord(x, y, z)
- SetBlipSprite(blip, tonumber(num))
- SetBlipAsShortRange(blip, true)
- table.insert(BLIPS, blip)
- end
- -- Constantly check the position of the player
- Citizen.CreateThread(function()
- Citizen.Wait(5000)
- while true do
- Citizen.Wait(1)
- near, item = IsNear()
- if (exports.vdk_inventory:notFull() == true) then
- if (near == 'field') then
- recolt('Récolte', item, '+1')
- elseif (near == 'treatment' and exports.vdk_inventory:getQuantity(item.raw_id) > 0) then
- recolt('Traitement', item, '+1')
- elseif (near == 'seller' and exports.vdk_inventory:getQuantity(item.treat_id) > 0) then
- recolt('Vente', item, '-1')
- end
- else
- if (near == 'treatment' and exports.vdk_inventory:getQuantity(item.raw_id) > 0) then
- recolt('Traitement', item, '+1')
- elseif (near == 'seller' and exports.vdk_inventory:getQuantity(item.treat_id) > 0) then
- recolt('Vente', item, '-1')
- end
- end
- end
- end)
- function Chat(debugg)
- TriggerEvent("chatMessage", '', { 0, 0x99, 255 }, tostring(debugg))
- end
- --vdkinv.lua-- (vdk-inventory_master)
- ITEMS = {}
- -- flag to keep track of whether player died to prevent
- -- multiple runs of player dead code
- local playerdead = false
- local maxCapacity = 64
- -- register events, only needs to be done once
- RegisterNetEvent("item:reset")
- RegisterNetEvent("item:getItems")
- RegisterNetEvent("item:updateQuantity")
- RegisterNetEvent("item:setItem")
- RegisterNetEvent("item:sell")
- RegisterNetEvent("gui:getItems")
- -- handles when a player spawns either from joining or after death
- AddEventHandler("playerSpawned", function()
- TriggerServerEvent("item:getItems")
- -- reset player dead flag
- playerdead = false
- end)
- AddEventHandler("gui:getItems", function(THEITEMS)
- ITEMS = {}
- ITEMS = THEITEMS
- end)
- AddEventHandler("player:receiveItem", function(item, quantity)
- item = tonumber(item)
- if (ITEMS[item] == nil) then
- new(item, quantity)
- else
- add({ item, quantity })
- end
- end)
- AddEventHandler("player:looseItem", function(item, quantity)
- item = tonumber(item)
- if (ITEMS[item].quantity >= quantity) then
- delete({ item, quantity })
- end
- end)
- AddEventHandler("player:sellItem", function(item, price)
- item = tonumber(item)
- if (ITEMS[item].quantity > 0) then
- sell({ item, price })
- end
- end)
- function sell(arg)
- local itemId = tonumber(arg[1])
- local price = arg[2]
- local item = ITEMS[itemId]
- item.quantity = item.quantity - 1
- TriggerServerEvent("item:sell", itemId, item.quantity, price)
- InventoryMenu()
- end
- --server.lua-- (vdk_inventory_master)
- require "resources/essentialmode/lib/MySQL"
- MySQL:open(database.host, database.name, database.username, database.password)
- RegisterServerEvent("item:getItems")
- RegisterServerEvent("item:updateQuantity")
- RegisterServerEvent("item:setItem")
- RegisterServerEvent("item:reset")
- RegisterServerEvent("item:sell")
- local items = {}
- AddEventHandler("item:getItems", function()
- items = {}
- local player = getPlayerID(source)
- local executed_query = MySQL:executeQuery("SELECT * FROM user_inventory JOIN items ON `user_inventory`.`item_id` = `items`.`id` WHERE user_id = '@username'", { ['@username'] = player })
- local result = MySQL:getResults(executed_query, { 'quantity', 'libelle', 'item_id' }, "item_id")
- if (result) then
- for _, v in ipairs(result) do
- t = { ["quantity"] = v.quantity, ["libelle"] = v.libelle }
- table.insert(items, tonumber(v.item_id), t)
- end
- end
- TriggerClientEvent("gui:getItems", source, items)
- end)
- AddEventHandler("item:setItem", function(item, quantity)
- local player = getPlayerID(source)
- MySQL:executeQuery("INSERT INTO user_inventory (`user_id`, `item_id`, `quantity`) VALUES ('@player', @item, @qty)",
- { ['@player'] = player, ['@item'] = item, ['@qty'] = quantity })
- end)
- AddEventHandler("item:updateQuantity", function(qty, id)
- local player = getPlayerID(source)
- MySQL:executeQuery("UPDATE user_inventory SET `quantity` = @qty WHERE `user_id` = '@username' AND `item_id` = @id", { ['@username'] = player, ['@qty'] = tonumber(qty), ['@id'] = tonumber(id) })
- end)
- AddEventHandler("item:reset", function()
- local player = getPlayerID(source)
- MySQL:executeQuery("UPDATE user_inventory SET `quantity` = @qty WHERE `user_id` = '@username'", { ['@username'] = player, ['@qty'] = 0 })
- end)
- AddEventHandler("item:sell", function(id, qty, price)
- TriggerEvent('es:getPlayerFromId', source, function(user)
- local player = user.identifier
- MySQL:executeQuery("UPDATE user_inventory SET `quantity` = @qty WHERE `user_id` = '@username' AND `item_id` = @id", { ['@username'] = player, ['@qty'] = tonumber(qty), ['@id'] = tonumber(id) })
- user:addMoney(tonumber(price))
- end)
- end)
- -- get's the player id without having to use bugged essentials
- function getPlayerID(source)
- local identifiers = GetPlayerIdentifiers(source)
- local player = getIdentifiant(identifiers)
- return player
- end
- -- gets the actual player id unique to the player,
- -- independent of whether the player changes their screen name
- function getIdentifiant(id)
- for _, v in ipairs(id) do
- return v
- end
- end
- --server.lua-- (jobs-system)
- require "resources/essentialmode/lib/MySQL"
- MySQL:open("localhost", "gta5_gamemode_essential", "root", "1202")
- function updatejob(player, id)
- local job = id
- MySQL:executeQuery("UPDATE users SET `job`='@value' WHERE identifier = '@identifier'", {['@value'] = job, ['@identifier'] = player})
- TriggerClientEvent("recolt:updateJobs", source, job)
- end
- function nameJob(id)
- local executed_query = MySQL:executeQuery("SELECT * FROM jobs WHERE job_id = '@namejob'", {['@namejob'] = id})
- local result = MySQL:getResults(executed_query, {'job_name'}, "job_id")
- return result[1].job_name
- end
- RegisterServerEvent('jobssystem:jobs')
- AddEventHandler('jobssystem:jobs', function(id)
- TriggerEvent('es:getPlayerFromId', source, function(user)
- local player = user.identifier
- local nameJob = nameJob(id)
- updatejob(player, id)
- TriggerClientEvent("es_freeroam:notify", source, "CHAR_MP_STRIPCLUB_PR", 1, "Mairie", false, "Votre métier est maintenant : ".. nameJob)
- end)
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement