Advertisement
Nidhoggx

secondshops_esx

May 4th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.24 KB | None | 0 0
  1. ESX = nil
  2. local HasAlreadyEnteredMarker = false
  3. local LastZone = nil
  4. local CurrentAction = nil
  5. local CurrentActionMsg = ''
  6. local CurrentActionData = {}
  7. local item = {
  8. {['label']='Pain' .. ' - <span style="color:green;">$' .. 5 .. ' </span>', ['price']=5, ['value'] = "bread", ['realLabel'] ="Sandwich"},
  9. {['label']='Eau' .. ' - <span style="color:green;">$' .. 2 .. ' </span>', ['price']=2, ['value'] = "water", ['realLabel'] ="Eau"},
  10. {['label']='Croquettes' .. ' - <span style="color:green;">$' .. 10 .. ' </span>', ['price']=10, ['value'] = "croquettes", ['realLabel'] ="Croquettes"},
  11. {['label']='Chargeurs' .. ' - <span style="color:green;">$' .. 500 .. ' </span>', ['price']=500, ['value'] = "clip", ['realLabel'] ="Chargeurs"},
  12. {['label']='Silencieux' .. ' - <span style="color:green;">$' .. 4500 .. ' </span>', ['price']=4500, ['value'] = "silencieux", ['realLabel'] ="Silencieux"},
  13. {['label']='Lampes' .. ' - <span style="color:green;">$' .. 4000 .. ' </span>', ['price']=4000, ['value'] = "Lampes", ['realLabel'] ="Lampes"},
  14. {['label']='KIT Plaqué Or pour armes' .. ' - <span style="color:green;">$' .. 50000 .. ' </span>', ['price']=50000, ['value'] = "yusuf", ['realLabel'] ="KIT Plaqué Or pour armes"},
  15. {['label']='Poigné pour armes' .. ' - <span style="color:green;">$' .. 4750 .. ' </span>', ['price']=4750, ['value'] = "grip", ['realLabel'] ="Poigné pour armes"}
  16. }
  17. Citizen.CreateThread(function()
  18. while ESX == nil do
  19. TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
  20. Citizen.Wait(0)
  21. end
  22. end)
  23.  
  24. AddEventHandler('onClientMapStart', function()
  25.  
  26. ESX.TriggerServerCallback('esx_shop:requestDBItems', function(ShopItems)
  27. for k,v in pairs(ShopItems) do
  28. Config.Zones[k].Items = v
  29. end
  30. end)
  31.  
  32. end)
  33.  
  34. function OpenShopMenu(zone)
  35.  
  36. local elements = {}
  37.  
  38. for i=1, #Config.Zones[zone].Items, 1 do
  39.  
  40. local item = Config.Zones[zone].Items[i]
  41.  
  42. table.insert(elements, {
  43. label = item.label .. ' - <span style="color:green;">$' .. item.price .. ' </span>',
  44. realLabel = item.label,
  45. value = item.name,
  46. price = item.price
  47. })
  48.  
  49. end
  50.  
  51.  
  52. ESX.UI.Menu.CloseAll()
  53.  
  54. ESX.UI.Menu.Open(
  55. 'default', GetCurrentResourceName(), 'shop',
  56. {
  57. title = _U('shop'),
  58. elements = item
  59. },
  60. function(data, menu)
  61. TriggerServerEvent('esx_shop:buyItem', data.current.value, data.current.price)
  62. end,
  63. function(data, menu)
  64.  
  65. menu.close()
  66.  
  67. CurrentAction = 'shop_menu'
  68. CurrentActionMsg = _U('press_menu')
  69. CurrentActionData = {zone = zone}
  70. end
  71. )
  72. end
  73.  
  74. AddEventHandler('esx_shop:hasEnteredMarker', function(zone)
  75.  
  76. CurrentAction = 'shop_menu'
  77. CurrentActionMsg = _U('press_menu')
  78. CurrentActionData = {zone = zone}
  79.  
  80. end)
  81.  
  82. AddEventHandler('esx_shop:hasExitedMarker', function(zone)
  83.  
  84. CurrentAction = nil
  85. ESX.UI.Menu.CloseAll()
  86.  
  87. end)
  88.  
  89. -- Create Blips
  90. Citizen.CreateThread(function()
  91. for k,v in pairs(Config.Zones) do
  92. for i = 1, #v.Pos, 1 do
  93. local blip = AddBlipForCoord(v.Pos[i].x, v.Pos[i].y, v.Pos[i].z)
  94. SetBlipSprite (blip, 52)
  95. SetBlipDisplay(blip, 4)
  96. SetBlipScale (blip, 1.0)
  97. SetBlipColour (blip, 2)
  98. SetBlipAsShortRange(blip, true)
  99. BeginTextCommandSetBlipName("STRING")
  100. AddTextComponentString(_U('shops'))
  101. EndTextCommandSetBlipName(blip)
  102. end
  103. end
  104. end)
  105.  
  106. -- Display markers
  107. Citizen.CreateThread(function()
  108. while true do
  109. Wait(0)
  110. local coords = GetEntityCoords(GetPlayerPed(-1))
  111. for k,v in pairs(Config.Zones) do
  112. for i = 1, #v.Pos, 1 do
  113. if(Config.Type ~= -1 and GetDistanceBetweenCoords(coords, v.Pos[i].x, v.Pos[i].y, v.Pos[i].z, true) < Config.DrawDistance) then
  114. DrawMarker(Config.Type, v.Pos[i].x, v.Pos[i].y, v.Pos[i].z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.Size.x, Config.Size.y, Config.Size.z, Config.Color.r, Config.Color.g, Config.Color.b, 100, false, true, 2, false, false, false, false)
  115. end
  116. end
  117. end
  118. end
  119. end)
  120.  
  121. -- Enter / Exit marker events
  122. Citizen.CreateThread(function()
  123. while true do
  124. Wait(0)
  125. local coords = GetEntityCoords(GetPlayerPed(-1))
  126. local isInMarker = false
  127. local currentZone = nil
  128.  
  129. for k,v in pairs(Config.Zones) do
  130. for i = 1, #v.Pos, 1 do
  131. if(GetDistanceBetweenCoords(coords, v.Pos[i].x, v.Pos[i].y, v.Pos[i].z, true) < Config.Size.x) then
  132. isInMarker = true
  133. ShopItems = v.Items
  134. currentZone = k
  135. LastZone = k
  136. end
  137. end
  138. end
  139. if isInMarker and not HasAlreadyEnteredMarker then
  140. HasAlreadyEnteredMarker = true
  141. TriggerEvent('esx_shop:hasEnteredMarker', currentZone)
  142. end
  143. if not isInMarker and HasAlreadyEnteredMarker then
  144. HasAlreadyEnteredMarker = false
  145. TriggerEvent('esx_shop:hasExitedMarker', LastZone)
  146. end
  147. end
  148. end)
  149.  
  150. -- Key Controls
  151. Citizen.CreateThread(function()
  152. while true do
  153. Citizen.Wait(0)
  154. if CurrentAction ~= nil then
  155.  
  156. SetTextComponentFormat('STRING')
  157. AddTextComponentString(CurrentActionMsg)
  158. DisplayHelpTextFromStringLabel(0, 0, 1, -1)
  159.  
  160. if IsControlJustReleased(0, 38) then
  161.  
  162. if CurrentAction == 'shop_menu' then
  163. OpenShopMenu(CurrentActionData.zone)
  164. end
  165.  
  166. CurrentAction = nil
  167.  
  168. end
  169.  
  170. end
  171. end
  172. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement