Advertisement
Guest User

Untitled

a guest
Apr 27th, 2017
350
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.33 KB | None | 0 0
  1. --server.lua--(vdk_recolt_master)
  2. require "resources/essentialmode/lib/MySQL"
  3. MySQL:open(database.host, database.name, database.username, database.password)
  4.  
  5. RegisterServerEvent("jobs:getJobs")
  6.  
  7. local jobs = {}
  8. local result = nil
  9.  
  10. AddEventHandler("jobs:getJobs", function ()
  11. jobs = {}
  12. if(not result) then
  13. 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")
  14. 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' })
  15. if (result) then
  16. jobs = result
  17. end
  18. else
  19. jobs = result
  20. end
  21. TriggerClientEvent("cli:getJobs", source, jobs)
  22. end)
  23.  
  24. --vdkrec.lua--(vdk_recolt_master)
  25. local recoltDistance = 10
  26. local timeForRecolt = 4000 --1000 for 1 second
  27.  
  28. local near
  29. local jobId = 1
  30. JOBS = {}
  31. BLIPS = {}
  32.  
  33. RegisterNetEvent("jobs:getJobs")
  34. RegisterNetEvent("cli:getJobs")
  35. RegisterNetEvent("recolt:updateJobs")
  36.  
  37. AddEventHandler("recolt:updateJobs", function(id)
  38. jobId = id
  39. TriggerServerEvent("jobs:getJobs")
  40. end)
  41.  
  42. AddEventHandler("playerSpawned", function()
  43. TriggerServerEvent("jobs:getJobs")
  44. end)
  45.  
  46. -- Get the list of all jobs in the database and create the blip associated
  47. AddEventHandler("cli:getJobs", function(listJobs)
  48. JOBS = listJobs
  49.  
  50. for k, existingBlip in ipairs(BLIPS) do
  51. RemoveBlip(existingBlip)
  52. end
  53.  
  54. Citizen.CreateThread(function()
  55. for _, item in pairs(JOBS) do
  56. if(item.job_id == jobId) then
  57. setBlip(item.fx, item.fy, item.fz, 17)
  58. setBlip(item.tx, item.ty, item.tz, 18)
  59. setBlip(item.sx, item.sy, item.sz, 19)
  60. end
  61. end
  62. end)
  63. end)
  64.  
  65. -- Control if the player of is near of a place of job
  66. function IsNear()
  67. local ply = GetPlayerPed(-1)
  68. local plyCoords = GetEntityCoords(ply, 0)
  69. if(IsPedInAnyVehicle(ply, true) == false) then
  70. for k, item in ipairs(JOBS) do
  71. if(item.job_id == jobId or item.job_id == 6) then
  72. local distance_field = GetDistanceBetweenCoords(item.fx, item.fy, item.fz, plyCoords["x"], plyCoords["y"], plyCoords["z"], true)
  73. local distance_treatment = GetDistanceBetweenCoords(item.tx, item.ty, item.tz, plyCoords["x"], plyCoords["y"], plyCoords["z"], true)
  74. local distance_seller = GetDistanceBetweenCoords(item.sx, item.sy, item.sz, plyCoords["x"], plyCoords["y"], plyCoords["z"], true)
  75. if (distance_field <= recoltDistance) then
  76. --jobId = k
  77. return 'field', item
  78. elseif (distance_treatment <= recoltDistance) then
  79. --jobId = k
  80. return 'treatment', item
  81. elseif (distance_seller <= recoltDistance) then
  82. --jobId = k
  83. return 'seller', item
  84. end
  85. end
  86. end
  87. end
  88. end
  89.  
  90. -- Display the message of recolting/treating/selling and trigger the associated event(s)
  91. function recolt(text, item, rl)
  92. if (text == 'Récolte') then
  93. TriggerEvent("mt:missiontext", text .. ' en cours de ~g~' .. tostring(item.raw_item) .. '~s~...', timeForRecolt - 800)
  94. Citizen.Wait(timeForRecolt - 800)
  95. TriggerEvent("player:receiveItem", tonumber(item.raw_id), 1)
  96. TriggerEvent("mt:missiontext", rl .. ' ~g~' .. tostring(item.raw_item) .. '~s~...', 800)
  97. elseif (text == 'Traitement') then
  98. TriggerEvent("mt:missiontext", text .. ' en cours de ~g~' .. tostring(item.raw_item) .. '~s~...', timeForRecolt - 800)
  99. Citizen.Wait(timeForRecolt - 800)
  100. TriggerEvent("player:looseItem", tonumber(item.raw_id), 1)
  101. TriggerEvent("player:receiveItem", tonumber(item.treat_id), 1)
  102. TriggerEvent("mt:missiontext", rl .. ' ~g~' .. tostring(item.treat_item) .. '~s~...', 800)
  103. elseif (text == 'Vente') then
  104. TriggerEvent("mt:missiontext", text .. ' en cours de ~g~' .. tostring(item.treat_item) .. '~s~...', timeForRecolt - 800)
  105. Citizen.Wait(timeForRecolt - 800)
  106. TriggerEvent("player:sellItem", tonumber(item.treat_id), tonumber(item.price))
  107. TriggerEvent("mt:missiontext", rl .. ' ~g~' .. tostring(item.treat_item) .. '~s~...', 800)
  108. end
  109. Citizen.Wait(800)
  110. end
  111.  
  112. function setBlip(x, y, z, num)
  113. local blip = AddBlipForCoord(x, y, z)
  114. SetBlipSprite(blip, tonumber(num))
  115. SetBlipAsShortRange(blip, true)
  116. table.insert(BLIPS, blip)
  117. end
  118.  
  119. -- Constantly check the position of the player
  120. Citizen.CreateThread(function()
  121. Citizen.Wait(5000)
  122. while true do
  123. Citizen.Wait(1)
  124. near, item = IsNear()
  125. if (exports.vdk_inventory:notFull() == true) then
  126. if (near == 'field') then
  127. recolt('Récolte', item, '+1')
  128. elseif (near == 'treatment' and exports.vdk_inventory:getQuantity(item.raw_id) > 0) then
  129. recolt('Traitement', item, '+1')
  130. elseif (near == 'seller' and exports.vdk_inventory:getQuantity(item.treat_id) > 0) then
  131. recolt('Vente', item, '-1')
  132. end
  133. else
  134. if (near == 'treatment' and exports.vdk_inventory:getQuantity(item.raw_id) > 0) then
  135. recolt('Traitement', item, '+1')
  136. elseif (near == 'seller' and exports.vdk_inventory:getQuantity(item.treat_id) > 0) then
  137. recolt('Vente', item, '-1')
  138. end
  139. end
  140. end
  141. end)
  142.  
  143. function Chat(debugg)
  144. TriggerEvent("chatMessage", '', { 0, 0x99, 255 }, tostring(debugg))
  145. end
  146.  
  147. --vdkinv.lua-- (vdk-inventory_master)
  148. ITEMS = {}
  149. -- flag to keep track of whether player died to prevent
  150. -- multiple runs of player dead code
  151. local playerdead = false
  152. local maxCapacity = 64
  153.  
  154. -- register events, only needs to be done once
  155. RegisterNetEvent("item:reset")
  156. RegisterNetEvent("item:getItems")
  157. RegisterNetEvent("item:updateQuantity")
  158. RegisterNetEvent("item:setItem")
  159. RegisterNetEvent("item:sell")
  160. RegisterNetEvent("gui:getItems")
  161.  
  162. -- handles when a player spawns either from joining or after death
  163. AddEventHandler("playerSpawned", function()
  164. TriggerServerEvent("item:getItems")
  165. -- reset player dead flag
  166. playerdead = false
  167. end)
  168.  
  169. AddEventHandler("gui:getItems", function(THEITEMS)
  170. ITEMS = {}
  171. ITEMS = THEITEMS
  172. end)
  173.  
  174. AddEventHandler("player:receiveItem", function(item, quantity)
  175. item = tonumber(item)
  176. if (ITEMS[item] == nil) then
  177. new(item, quantity)
  178. else
  179. add({ item, quantity })
  180. end
  181. end)
  182.  
  183. AddEventHandler("player:looseItem", function(item, quantity)
  184. item = tonumber(item)
  185. if (ITEMS[item].quantity >= quantity) then
  186. delete({ item, quantity })
  187. end
  188. end)
  189.  
  190. AddEventHandler("player:sellItem", function(item, price)
  191. item = tonumber(item)
  192. if (ITEMS[item].quantity > 0) then
  193. sell({ item, price })
  194. end
  195. end)
  196.  
  197. function sell(arg)
  198. local itemId = tonumber(arg[1])
  199. local price = arg[2]
  200. local item = ITEMS[itemId]
  201. item.quantity = item.quantity - 1
  202. TriggerServerEvent("item:sell", itemId, item.quantity, price)
  203. InventoryMenu()
  204. end
  205.  
  206. --server.lua-- (vdk_inventory_master)
  207. require "resources/essentialmode/lib/MySQL"
  208. MySQL:open(database.host, database.name, database.username, database.password)
  209.  
  210. RegisterServerEvent("item:getItems")
  211. RegisterServerEvent("item:updateQuantity")
  212. RegisterServerEvent("item:setItem")
  213. RegisterServerEvent("item:reset")
  214. RegisterServerEvent("item:sell")
  215.  
  216. local items = {}
  217.  
  218.  
  219. AddEventHandler("item:getItems", function()
  220. items = {}
  221. local player = getPlayerID(source)
  222. local executed_query = MySQL:executeQuery("SELECT * FROM user_inventory JOIN items ON `user_inventory`.`item_id` = `items`.`id` WHERE user_id = '@username'", { ['@username'] = player })
  223. local result = MySQL:getResults(executed_query, { 'quantity', 'libelle', 'item_id' }, "item_id")
  224. if (result) then
  225. for _, v in ipairs(result) do
  226. t = { ["quantity"] = v.quantity, ["libelle"] = v.libelle }
  227. table.insert(items, tonumber(v.item_id), t)
  228. end
  229. end
  230. TriggerClientEvent("gui:getItems", source, items)
  231. end)
  232.  
  233. AddEventHandler("item:setItem", function(item, quantity)
  234. local player = getPlayerID(source)
  235. MySQL:executeQuery("INSERT INTO user_inventory (`user_id`, `item_id`, `quantity`) VALUES ('@player', @item, @qty)",
  236. { ['@player'] = player, ['@item'] = item, ['@qty'] = quantity })
  237. end)
  238.  
  239. AddEventHandler("item:updateQuantity", function(qty, id)
  240. local player = getPlayerID(source)
  241. MySQL:executeQuery("UPDATE user_inventory SET `quantity` = @qty WHERE `user_id` = '@username' AND `item_id` = @id", { ['@username'] = player, ['@qty'] = tonumber(qty), ['@id'] = tonumber(id) })
  242. end)
  243.  
  244. AddEventHandler("item:reset", function()
  245. local player = getPlayerID(source)
  246. MySQL:executeQuery("UPDATE user_inventory SET `quantity` = @qty WHERE `user_id` = '@username'", { ['@username'] = player, ['@qty'] = 0 })
  247. end)
  248.  
  249. AddEventHandler("item:sell", function(id, qty, price)
  250. TriggerEvent('es:getPlayerFromId', source, function(user)
  251. local player = user.identifier
  252. MySQL:executeQuery("UPDATE user_inventory SET `quantity` = @qty WHERE `user_id` = '@username' AND `item_id` = @id", { ['@username'] = player, ['@qty'] = tonumber(qty), ['@id'] = tonumber(id) })
  253. user:addMoney(tonumber(price))
  254. end)
  255. end)
  256.  
  257. -- get's the player id without having to use bugged essentials
  258. function getPlayerID(source)
  259. local identifiers = GetPlayerIdentifiers(source)
  260. local player = getIdentifiant(identifiers)
  261. return player
  262. end
  263.  
  264. -- gets the actual player id unique to the player,
  265. -- independent of whether the player changes their screen name
  266. function getIdentifiant(id)
  267. for _, v in ipairs(id) do
  268. return v
  269. end
  270. end
  271.  
  272. --server.lua-- (jobs-system)
  273. require "resources/essentialmode/lib/MySQL"
  274. MySQL:open("localhost", "gta5_gamemode_essential", "root", "1202")
  275.  
  276. function updatejob(player, id)
  277. local job = id
  278. MySQL:executeQuery("UPDATE users SET `job`='@value' WHERE identifier = '@identifier'", {['@value'] = job, ['@identifier'] = player})
  279. TriggerClientEvent("recolt:updateJobs", source, job)
  280. end
  281.  
  282. function nameJob(id)
  283. local executed_query = MySQL:executeQuery("SELECT * FROM jobs WHERE job_id = '@namejob'", {['@namejob'] = id})
  284. local result = MySQL:getResults(executed_query, {'job_name'}, "job_id")
  285. return result[1].job_name
  286. end
  287.  
  288. RegisterServerEvent('jobssystem:jobs')
  289. AddEventHandler('jobssystem:jobs', function(id)
  290. TriggerEvent('es:getPlayerFromId', source, function(user)
  291. local player = user.identifier
  292. local nameJob = nameJob(id)
  293. updatejob(player, id)
  294. TriggerClientEvent("es_freeroam:notify", source, "CHAR_MP_STRIPCLUB_PR", 1, "Mairie", false, "Votre métier est maintenant : ".. nameJob)
  295. end)
  296. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement