Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.46 KB | None | 0 0
  1. -- Inventaire client
  2.  
  3.  
  4. ITEMS = {}
  5. -- flag to keep track of whether player died to prevent
  6. -- multiple runs of player dead code
  7. local playerdead = false
  8.  
  9. -- register events, only needs to be done once
  10. RegisterNetEvent("item:reset")
  11. RegisterNetEvent("item:getItems")
  12. RegisterNetEvent("item:updateQuantity")
  13. RegisterNetEvent("item:setItem")
  14. RegisterNetEvent("item:sell")
  15. RegisterNetEvent("gui:getItems")
  16.  
  17. -- handles when a player spawns either from joining or after death
  18. AddEventHandler("playerSpawned", function()
  19.     TriggerServerEvent("item:getItems")
  20.     -- reset player dead flag
  21.     playerdead = false
  22. end)
  23.  
  24. AddEventHandler("gui:getItems", function(THEITEMS)
  25.     ITEMS = {}
  26.     ITEMS = THEITEMS
  27. end)
  28.  
  29. AddEventHandler("player:receiveItem", function(item, quantity)
  30.     item = tonumber(item)
  31.     if (ITEMS[item] == nil) then
  32.         new(item, quantity)
  33.     else
  34.         add({ item, quantity })
  35.     end
  36. end)
  37.  
  38. AddEventHandler("player:looseItem", function(item, quantity)
  39.     item = tonumber(item)
  40.     if (ITEMS[item].quantity >= quantity) then
  41.         delete({ item, quantity })
  42.     end
  43. end)
  44.  
  45. AddEventHandler("player:sellItem", function(item, price)
  46.     item = tonumber(item)
  47.     if (ITEMS[item].quantity > 0) then
  48.         sell({ item, price })
  49.     end
  50. end)
  51.  
  52. function sell(arg)
  53.     local itemId = tonumber(arg[1])
  54.     local price = arg[2]
  55.     local item = ITEMS[itemId]
  56.     item.quantity = item.quantity - 1
  57.     TriggerServerEvent("item:sell", itemId, item.quantity, price)
  58. end
  59.  
  60. function delete(arg)
  61.     local itemId = tonumber(arg[1])
  62.     local qty = arg[2]
  63.     local item = ITEMS[itemId]
  64.     item.quantity = item.quantity - qty
  65.     TriggerServerEvent("item:updateQuantity", item.quantity, itemId)
  66.     InventoryMenu()
  67. end
  68.  
  69. function add(arg)
  70.     local itemId = tonumber(arg[1])
  71.     local qty = arg[2]
  72.     local item = ITEMS[itemId]
  73.     item.quantity = item.quantity + qty
  74.     TriggerServerEvent("item:updateQuantity", item.quantity, itemId)
  75.     InventoryMenu()
  76. end
  77.  
  78. function new(item, quantity)
  79.     TriggerServerEvent("item:setItem", item, quantity)
  80.     TriggerServerEvent("item:getItems")
  81. end
  82.  
  83. function getQuantity(itemId)
  84.     return ITEMS[tonumber(itemId)].quantity
  85. end
  86.  
  87. AddEventHandler("player:getQuantity", function(item, call)
  88.      call({count=getQuantity(item)})
  89. end)
  90.  
  91. function InventoryMenu()
  92.     ped = GetPlayerPed(-1);
  93.     MenuTitle = "Inventaire:"
  94.     ClearMenu()
  95.     for ind, value in pairs(ITEMS) do
  96.         if (value.quantity > 0) then
  97.             Menu.addButton(tostring(value.libelle) .. " : " .. tostring(value.quantity), "ItemMenu", ind)
  98.         end
  99.     end
  100. end
  101.  
  102. function ItemMenu(itemId)
  103.     MenuTitle = "Details:"
  104.     ClearMenu()
  105.     Menu.addButton("Supprimer 1", "delete", { itemId, 1 })
  106.     Menu.addButton("Ajouter 1", "add", { itemId, 1 })
  107. end
  108.  
  109. Citizen.CreateThread(function()
  110.     while true do
  111.         Citizen.Wait(0)
  112.         if IsControlJustPressed(1, 311) then
  113.             InventoryMenu() -- Menu to draw
  114.             Menu.hidden = not Menu.hidden -- Hide/Show the menu
  115.         end
  116.         Menu.renderGUI() -- Draw menu on each tick if Menu.hidden = false
  117.         if IsEntityDead(PlayerPedId()) then
  118.             PlayerIsDead()
  119.             -- prevent the death check from overloading the server
  120.             playerdead = true
  121.         end
  122.     end
  123. end)
  124.  
  125. function PlayerIsDead()
  126.     -- do not run if already ran
  127.     if playerdead then
  128.         return
  129.     end
  130.     TriggerServerEvent("item:reset")
  131. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement