Advertisement
Guest User

Untitled

a guest
Oct 3rd, 2017
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.40 KB | None | 0 0
  1.  
  2. -- mission system module
  3. local lang = vRP.lang
  4. local cfg = module("cfg/mission")
  5.  
  6. -- start a mission for a player
  7. --- mission_data:
  8. ---- name: Mission name
  9. ---- steps: ordered list of
  10. ----- text
  11. ----- position: {x,y,z}
  12. ----- onenter(player,area)
  13. ----- onleave(player,area) (optional)
  14. ----- blipid, blipcolor (optional)
  15. function vRP.startMission(player, mission_data)
  16. local user_id = vRP.getUserId(player)
  17. if user_id ~= nil then
  18. local tmpdata = vRP.getUserTmpTable(user_id)
  19.  
  20. vRP.stopMission(player)
  21. if #mission_data.steps > 0 then
  22. tmpdata.mission_step = 0
  23. tmpdata.mission_data = mission_data
  24. vRPclient.setDiv(player,{"mission",cfg.display_css,""})
  25. vRP.nextMissionStep(player) -- do first step
  26. end
  27. end
  28. end
  29.  
  30. -- end the current player mission step
  31. function vRP.nextMissionStep(player)
  32. local user_id = vRP.getUserId(player)
  33. if user_id ~= nil then
  34. local tmpdata = vRP.getUserTmpTable(user_id)
  35. if tmpdata.mission_step ~= nil then -- if in a mission
  36. -- increase step
  37. tmpdata.mission_step = tmpdata.mission_step+1
  38. if tmpdata.mission_step > #tmpdata.mission_data.steps then -- check mission end
  39. vRP.stopMission(player)
  40. else -- mission step
  41. local step = tmpdata.mission_data.steps[tmpdata.mission_step]
  42. local x,y,z = table.unpack(step.position)
  43. local blipid = 1
  44. local blipcolor = 5
  45. local onleave = function(player, area) end
  46. if step.blipid then blipid = step.blipid end
  47. if step.blipcolor then blipcolor = step.blipcolor end
  48. if step.onleave then onleave = step.onleave end
  49.  
  50. -- display
  51. vRPclient.setDivContent(player,{"mission",lang.mission.display({tmpdata.mission_data.name,tmpdata.mission_step-1,#tmpdata.mission_data.steps,step.text})})
  52.  
  53. -- blip/route
  54. vRPclient.setNamedBlip(player, {"vRP:mission", x,y,z, blipid, blipcolor, lang.mission.blip({tmpdata.mission_data.name,tmpdata.mission_step,#tmpdata.mission_data.steps})},function(id)
  55. vRPclient.setBlipRoute(player,{id})
  56. end)
  57.  
  58. -- map trigger
  59. vRPclient.setNamedMarker(player,{"vRP:mission", x,y,z-1,0.7,0.7,0.5,255,226,0,125,150})
  60. vRP.setArea(player,"vRP:mission",x,y,z,1,1.5,step.onenter,step.onleave)
  61. end
  62. end
  63. end
  64. end
  65.  
  66. -- stop the player mission
  67. function vRP.stopMission(player)
  68. local user_id = vRP.getUserId(player)
  69. if user_id ~= nil then
  70. local tmpdata = vRP.getUserTmpTable(user_id)
  71. tmpdata.mission_step = nil
  72. tmpdata.mission_data = nil
  73.  
  74. vRPclient.removeNamedBlip(player,{"vRP:mission"})
  75. vRPclient.removeNamedMarker(player,{"vRP:mission"})
  76. vRPclient.removeDiv(player,{"mission"})
  77. vRP.removeArea(player,"vRP:mission")
  78. end
  79. end
  80.  
  81. -- check if the player has a mission
  82. function vRP.hasMission(player)
  83. local user_id = vRP.getUserId(player)
  84. if user_id ~= nil then
  85. local tmpdata = vRP.getUserTmpTable(user_id)
  86. if tmpdata.mission_step ~= nil then
  87. return true
  88. end
  89. end
  90.  
  91. return false
  92. end
  93.  
  94. -- MAIN MENU
  95. vRP.registerMenuBuilder("main", function(add, data)
  96. local player = data.player
  97. local user_id = vRP.getUserId(player)
  98. if user_id ~= nil then
  99. local choices = {}
  100.  
  101. -- build admin menu
  102. choices[lang.mission.cancel.title()] = {function(player,choice)
  103. vRP.stopMission(player)
  104. end}
  105.  
  106. add(choices)
  107. end
  108. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement