Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2019
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. import alt from 'alt';
  2. import game from 'natives';
  3.  
  4. const controlsToDisable = [ /*21,*/ 22, 37, 44, 157, 158, 159, 160, 161, 162, 163, 164, 165,
  5. 14, 15, 16, 17, 53, 54, 140, 141, 142, 143, 143, 47, 38, 69, 70, 68, 92, 99, 115, 46, 25, 36];
  6.  
  7. let interiorZones = new Set();
  8. let isInGreenZone = false;
  9. const localPlayer = alt.Player.local
  10.  
  11. alt.on("custom_event:interiorChanged", onInteriorChanged);
  12.  
  13. alt.onServer("green_zone::load", (rawData) => {
  14. interiorZones = new Set(JSON.parse(rawData));
  15. });
  16.  
  17. alt.onServer("green_zone::addRemove", (isAdd) => {
  18. const eventName = `green_zone::${isAdd ? "add": "remove"}`;
  19.  
  20. alt.emitServer(eventName, getCurrentInterior());
  21. });
  22.  
  23. alt.onServer("green_zone::add", (interior) => {
  24. addInteriorZone(interior);
  25. });
  26.  
  27. alt.onServer("green_zone::remove", (interior) => {
  28. removeInteriorZone(interior);
  29. });
  30.  
  31. function onInteriorChanged(newInterior) {
  32. if (newInterior === 0) {
  33. if (isInGreenZone) {
  34. onExitGreenZone();
  35. }
  36.  
  37. return;
  38. }
  39.  
  40. for (const interiorZone of interiorZones) {
  41. if (newInterior !== interiorZone) {
  42. continue;
  43. }
  44.  
  45. onEnterGreenZone();
  46.  
  47. return;
  48. }
  49.  
  50. if (isInGreenZone) {
  51. onExitGreenZone();
  52. }
  53. }
  54.  
  55. function onEnterGreenZone() {
  56. isInGreenZone = true;
  57.  
  58. game.setCurrentPedWeapon(localPlayer.scriptID, game.getHashKey("weapon_unarmed") >> 0, true)
  59. game.setPedStealthMovement(localPlayer.scriptID, false, "DEFAULT_ACTION");
  60. game.setPedMaxMoveBlendRatio(localPlayer.scriptID, 1.35);
  61. alt.helpers.controlsDisabler.addRange(controlsToDisable);
  62. }
  63.  
  64. function onExitGreenZone() {
  65. isInGreenZone = false;
  66. game.setPedMaxMoveBlendRatio(localPlayer.scriptID, 1);
  67. alt.helpers.controlsDisabler.removeRange(controlsToDisable);
  68. }
  69.  
  70. function addInteriorZone(interiorId) {
  71. interiorZones.add(interiorId);
  72.  
  73. const currentInterior = getCurrentInterior();
  74.  
  75. if (currentInterior === interiorId && !isInGreenZone) {
  76. onEnterGreenZone();
  77. }
  78. }
  79.  
  80. function removeInteriorZone(interiorId) {
  81. interiorZones.delete(interiorId);
  82.  
  83. const currentInterior = getCurrentInterior();
  84.  
  85. if (currentInterior === interiorId && isInGreenZone) {
  86. onExitGreenZone();
  87. }
  88. }
  89.  
  90. function getCurrentInterior() {
  91. return game.getInteriorFromEntity(localPlayer.scriptID);
  92. }
  93.  
  94. export default {
  95. addInteriorGreenZone: addInteriorZone,
  96. removeInteriorGreenZone: removeInteriorZone,
  97. islocalPlayerInGreenZone: () => isInGreenZone
  98. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement