Advertisement
Guest User

Untitled

a guest
Feb 13th, 2017
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.20 KB | None | 0 0
  1. function findGrant(thePlayer, grantID, fetchAll)
  2. local allPackages = fetchAll and fetchAllPackages( ) or fetchAvailablePackages( thePlayer )
  3. if allPackages then
  4. for pIndex, packageDetails in ipairs(allPackages) do
  5. if ( tonumber( packageDetails["grantID"] ) == tonumber( grantID ) ) then
  6. return packageDetails
  7. end
  8. end
  9. end
  10. end
  11.  
  12. addEvent("duty:request", true)
  13. function dutyRequest(grantID, itemTable, skinID)
  14. local thePlayer = client
  15.  
  16. -- Fetch the factionPackage
  17. local foundPackage = findGrant(thePlayer, grantID)
  18.  
  19. if foundPackage and canPlayerUseDutyPackage(thePlayer, foundPackage) then
  20. -- We've got an auth for the package
  21.  
  22. -- Now we check the contents
  23. for itemIndexID, itemTableContent in ipairs(itemTable) do
  24. local found = false
  25.  
  26. for aItemIndexID, aItemTableContent in ipairs(foundPackage["items"]) do
  27. if aItemTableContent[1] == itemTableContent[1] and aItemTableContent[2] == itemTableContent[2] then
  28. found = true
  29. end
  30. end
  31.  
  32. if not found then
  33. outputChatBox("Error.", thePlayer)
  34. return false
  35. end
  36. end
  37.  
  38. for itemIndexID, itemTableContent in ipairs(itemTable) do
  39. if itemTableContent[1] > 0 then -- its a real item
  40. exports.global:giveItem(thePlayer, itemTableContent[1], itemTableContent[2])
  41. else -- Its a weapon :O!
  42. if itemTableContent[1] == -100 then
  43. setPedArmor(thePlayer, itemTableContent[2])
  44. else
  45. local hasAmmo = true
  46. local characterDatabaseID = getElementData(thePlayer, "account:character:id")
  47. local gtaWeaponID = tonumber(itemTableContent[1]) - tonumber(itemTableContent[1]) - tonumber(itemTableContent[1])
  48. local weaponSerial = exports.global:createWeaponSerial(2, characterDatabaseID)
  49. exports.global:giveItem(thePlayer, 115, gtaWeaponID ..":".. weaponSerial ..":" .. getWeaponNameFromID ( gtaWeaponID ) .. " (D)" )
  50.  
  51. local gtaweaponcap = exports.weaponcap:getGTACap(gtaWeaponID)
  52. local packsToGive = math.ceil( tonumber(itemTableContent[2]) / gtaweaponcap)
  53.  
  54. if (getSlotFromWeapon ( gtaWeaponID ) < 2) then
  55. hasAmmo = false
  56. elseif ( getSlotFromWeapon ( gtaWeaponID ) == 9) then -- Spraycan, Fire Extinguisher, Camera
  57. hasAmmo = false
  58. end
  59.  
  60. if packsToGive > 0 and hasAmmo then
  61. for i=1,packsToGive do
  62. exports.global:giveItem(thePlayer, 116, gtaWeaponID ..":".. gtaweaponcap ..":Ammopack for " .. getWeaponNameFromID ( gtaWeaponID ) .. " (D)" )
  63. end
  64. end
  65.  
  66.  
  67. end
  68. end
  69. end
  70.  
  71. if skinID and tonumber(skinID) then
  72. setElementModel(thePlayer, skinID)
  73. end
  74.  
  75. triggerClientEvent(thePlayer, "onPlayerDuty", thePlayer, true)
  76. triggerEvent("onPlayerDuty", thePlayer, true)
  77. exports['anticheat-system']:changeProtectedElementDataEx(thePlayer, "duty", grantID, false)
  78. exports.mysql:query_free( "UPDATE characters SET skin = '" .. exports.mysql:escape_string(getElementModel( thePlayer )) .. "', duty = '" .. exports.mysql:escape_string(getElementData( thePlayer, "duty" ) or 0 ) .. "' WHERE id = '" .. exports.mysql:escape_string(getElementData( thePlayer, "dbid" )).."'" )
  79.  
  80. end
  81. return false
  82. end
  83. addEventHandler("duty:request", getRootElement(), dutyRequest)
  84.  
  85. addEvent("duty:offduty", true)
  86.  
  87. function dutyOffduty()
  88. local thePlayer = client or source
  89. local grantID = getElementData(thePlayer, "duty") or 0
  90. if grantID > 0 then
  91. setPedArmor(thePlayer, 0)
  92. local correction = 0
  93. outputDebugString("A1")
  94. local items = exports['item-system']:getItems( thePlayer ) -- [] [1] = itemID [2] = itemValue
  95. for itemSlot, itemCheck in ipairs(items) do
  96. if (itemCheck[1] == 115) then -- Weapon
  97. local itemCheckExplode = exports.global:explode(":", itemCheck[2])
  98. local serialNumberCheck = exports.global:retrieveWeaponDetails(itemCheckExplode[2])
  99. if (tonumber(serialNumberCheck[2]) == 2) then -- /duty spawned
  100. exports['item-system']:takeItemFromSlot(thePlayer, itemSlot - correction, false)
  101. correction = correction + 1
  102. end
  103. elseif (itemCheck[1] == 116) then
  104. local checkString = string.sub(itemCheck[2], -4)
  105. if checkString == " (D)" then -- duty given weapon
  106. exports['item-system']:takeItemFromSlot(thePlayer, itemSlot - correction, false)
  107. correction = correction + 1
  108. end
  109. end
  110. end
  111.  
  112. -- remove duty items
  113. local foundPackage = findGrant(thePlayer, grantID, true)
  114. if foundPackage then
  115. for itemIndexID, itemTableContent in ipairs(foundPackage.items) do
  116. if itemTableContent[1] > 0 then -- its a real item
  117. exports.global:takeItem(thePlayer, itemTableContent[1], itemTableContent[2])
  118. end
  119. end
  120. end
  121.  
  122. local casualskin = getElementData(thePlayer, "casualskin")
  123. setElementModel(thePlayer, casualskin)
  124. exports.mysql:query_free( "UPDATE characters SET skin = '" .. exports.mysql:escape_string(getElementModel( thePlayer )) .. "', duty = '0' WHERE id = '" .. exports.mysql:escape_string(getElementData( thePlayer, "dbid" )).."'" )
  125. exports['anticheat-system']:changeProtectedElementDataEx(thePlayer, "duty", 0, false)
  126. triggerClientEvent(thePlayer, "onPlayerDuty", thePlayer, false)
  127. triggerEvent("onPlayerDuty", thePlayer, false)
  128. end
  129. end
  130. addEventHandler("duty:offduty", getRootElement(), dutyOffduty)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement