RyanUSNS

Server Side

Mar 26th, 2017
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.13 KB | None | 0 0
  1. local plrVehTable, vehTable = {}, {}
  2. local curArg
  3.  
  4. function setVehStatus(plr, cmd, arg1)
  5.     if (not hasObjectPermissionTo(plr, "command.em", false) or getElementDimension(plr) ~= 336) then
  6.         return false
  7.     end
  8.     if (arg1 and arg1 ~= "rem" and arg1 ~= "ghost") then
  9.         outputChatBox("Syntax: /emuveh [ghost/rem]", plr, 255, 0, 0)
  10.         return false
  11.     end
  12.     if (arg1 == "rem") then
  13.         local vehs = getElementsByType("vehicle")
  14.         for i, veh in ipairs(vehs) do
  15.             if (getElementDimension(veh) == 336) then
  16.             local driver = getVehicleController(veh)
  17.                 if (driver) then
  18.                     plrVehTable[driver] = veh
  19.                 else
  20.                     destroyElement(veh)
  21.                 end
  22.             end
  23.         end
  24.         curArg = arg1
  25.         outputChatBox("Enable vehicle auto-remove feature and removed all unoccupied vehicles with successfully!", plr, 0, 255, 0)
  26.         outputChatBox("Warn: If you add new vehicle and it's unoccupied, it won't be auto-removed!", plr, 0, 255, 0)
  27.         exports.CITLogs:logSomething(getPlayerName(plr).." has removed all unused vehicles", "events", plr)
  28.         removeEventHandler("onVehicleExplode", root, setEMVeh)
  29.         removeEventHandler("onVehicleExit", root, leaveVeh)
  30.         removeEventHandler("onElementDataChange", root, onPlrLeaveEMDim)
  31.         addEventHandler("onVehicleExplode", root, setEMVeh)
  32.         addEventHandler("onVehicleExit", root, leaveVeh)
  33.         addEventHandler("onElementDataChange", root, onPlrLeaveEMDim)
  34.         return true
  35.     end
  36.     if (arg1 =="ghost") then
  37.         local vehs = getElementsByType("vehicle")
  38.         for i, veh in ipairs(vehs) do
  39.             if (getElementDimension(veh) == 336) then
  40.             local driver = getVehicleController(veh)
  41.                 if (driver) then
  42.                     plrVehTable[driver] = veh
  43.                 else
  44.                     table.insert(vehTable, veh)
  45.                 end
  46.             end
  47.         end
  48.         curArg = arg1
  49.         triggerClientEvent("CITem.statusCollisions", resourceRoot, true, plrVehTable)
  50.         outputChatBox("Enable unoccupied vehicle as non-ghost!", plr, 0, 255, 0)
  51.         exports.CITLogs:logSomething(getPlayerName(plr).." has enable the ghost mode for all players.", "events", plr)
  52.         removeEventHandler("onVehicleExplode", root, setEMVeh)
  53.         removeEventHandler("onDestroyElement", root, setEMVeh)
  54.         removeEventHandler("onVehicleExit", root, leaveVeh)
  55.         removeEventHandler("onElementDataChange", root, onPlrLeaveEMDim)
  56.         addEventHandler("onVehicleExplode", root, setEMVeh)
  57.         addEventHandler("onDestroyElement", root, setEMVeh)
  58.         addEventHandler("onVehicleExit", root, leaveVeh)
  59.         addEventHandler("onElementDataChange", root, onPlrLeaveEMDim)
  60.         return true
  61.     end
  62.     if (not curArg) then
  63.         outputChatBox("This feature is disabled!", plr, 255, 0, 0)
  64.         return false
  65.     end
  66.     triggerClientEvent("CITem.statusCollisions", resourceRoot, false, plrVehTable)
  67.     exports.CITLogs:logSomething(getPlayerName(plr).." has disable the last feature.", "events", plr)
  68.     plrVehTable, vehTable = {}, {}
  69.     outputChatBox("Disabled feature.", plr, 0, 255, 0)
  70.     curArg = false
  71. end
  72. addCommandHandler("emuveh", setVehStatus)
  73.  
  74. function setEMVeh()
  75.     if (getElementDimension(source) ~= 336 or not curArg) then
  76.         return false
  77.     end
  78.     local driver = getVehicleController(source)
  79.     if (not plrVehTable[driver]) then
  80.         return false
  81.     end
  82.     plrVehTable[driver] = nil
  83.     if (curArg == "rem") then
  84.         destroyElement(source)
  85.         return true
  86.     end
  87.     table.insert(vehTable, source)
  88.     triggerClientEvent("CITem.statusCollisions", resourceRoot, true, plrVehTable)
  89. end
  90.  
  91. function leaveVeh(plr)
  92.     if (getElementDimension(source) ~= 336 or not curArg or not plrVehTable[plr]) then
  93.         return false
  94.     end
  95.     plrVehTable[plr] = nil
  96.     if (curArg == "rem") then
  97.         destroyElement(source)
  98.         return true
  99.     end
  100.     table.insert(vehTable, source)
  101.     triggerClientEvent("CITem.statusCollisions", resourceRoot, true, plrVehTable)
  102. end
  103.  
  104. function onPlrLeaveEMDim(dName)
  105.     if (getElementType(source) ~= "player" or dName ~= "e" or not curArg) then
  106.         return false
  107.     end
  108.     local curKey = getElementData(source, "e", true)
  109.     if (curKey) then
  110.         return false
  111.     end
  112.     if (curArg == "rem" and plrVehTable[source]) then
  113.         destroyElement(plrVehTable[source])
  114.         plrVehTable[source] = nil
  115.         return true
  116.     end
  117.     table.insert(vehTable, plrVehTable[source])
  118.     plrVehTable[source] = nil
  119.     triggerClientEvent("CITem.statusCollisions", resourceRoot, true, plrVehTable)
  120. end
Add Comment
Please, Sign In to add comment