Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.29 KB | None | 0 0
  1. if (!isDedicated) then {
  2.  
  3.   if (isNil "sandi_barrier_index") then { // not initialised
  4.     sandi_barrier_index = 0;
  5.     sandi_barrier_barriers = [];
  6.   };
  7.   _id = sandi_barrier_index;
  8.   sandi_barrier_index = sandi_barrier_index +1;
  9.   sandi_barrier_barriers set [_id, 1];
  10.  
  11.   [_id, _this] spawn {
  12.     _id        = _this select 0;
  13.     _args      = _this select 1;
  14.    
  15.     _shape = "rectangle";
  16.     _text  = "The AO ends here";
  17.    
  18.     _pos       = _args select 0;
  19.     _xDistance = _args select 1;
  20.     _yDistance = _args select 2;
  21.     _theta     = _args select 3;
  22.     if (count _args > 4) then {
  23.       _shape   = _args select 4;
  24.       _text    = _args select 5;
  25.     } else {
  26.       // old syntax
  27.     };
  28.      
  29.     _cos = cos(_theta);
  30.       _sin = sin(_theta);
  31.       _rCos = cos(_theta * -1);
  32.       _rSin = sin(_theta * -1);
  33.  
  34.     waitUntil {!isNull player};
  35.  
  36.     while {true} do {
  37.       scopeName "loop";
  38.       _sleep = 10;
  39.  
  40.       _disabled = false;
  41.       if (!isNil "sandi_barrier_disabled") then {
  42.         if (sandi_barrier_disabled) then {
  43.           _disabled = true;
  44.         };
  45.       };
  46.      
  47.       _state = sandi_barrier_barriers select _id;
  48.      
  49.       _playerVeh = objNull;
  50.       if (vehicle player == player) then { // on foot
  51.         diag_log("on foot");
  52.         _playerVeh = player;
  53.       } else { // in a vehicle
  54.         diag_log("in vehicle");
  55.         if (driver (vehicle player) == player) then { // player is driving
  56.         diag_log("driver");
  57.           _playerVeh = vehicle player;
  58.         } else {
  59.           _disabled = true;
  60.           _sleep = 1;
  61.         };
  62.       };
  63.  
  64.       if (!_disabled && _state == 1) then {
  65.  
  66.         diag_log("not null");
  67.         _x = ((getPos _playerVeh) select 0) - (_pos select 0);
  68.         _y = ((getPos _playerVeh) select 1) - (_pos select 1);
  69.  
  70.         _x2 = (_cos * _x) - (_sin * _y);
  71.         _y2 = (_sin * _x) + (_cos * _y);
  72.  
  73.         _move = false;
  74.         _newX2 = _x2;
  75.         if (_x2 > _xDistance) then {
  76.           _newX2 = (_xDistance -0.1);
  77.           _move = true;
  78.         } else { if (_x2 < (_xDistance *-1)) then {
  79.           _newX2 = ((_xDistance -0.1) *-1);
  80.           _move = true;
  81.         }};
  82.         _newY2 = _y2;
  83.         if (_y2 > _yDistance) then {
  84.           _newY2 = (_yDistance -0.1);
  85.           _move = true;
  86.         } else { if (_y2 < (_yDistance *-1)) then {
  87.           _newY2 = ((_yDistance -0.1) *-1);
  88.           _move = true;
  89.         }};
  90.  
  91.         if (_move) then {
  92.           hintSilent _text;
  93.           _newX = (_rCos * _newX2) - (_rSin * _newY2);
  94.           _newY = (_rSin * _newX2) + (_rCos * _newY2);
  95.           _playerVeh setPos [(_pos select 0) + _newX, (_pos select 1) + _newY, (getPos Player) select 2];
  96.           _sleep = 0.05;
  97.         } else {
  98.           if (_x2 > (_xDistance -100)) then {
  99.             _sleep = 0.2;
  100.           } else { if (_x2 < ((_xDistance -100) *-1)) then {
  101.             _sleep = 0.2;
  102.           }};
  103.           _newY2 = _y2;
  104.           if (_y2 > (_yDistance -100)) then {
  105.             _sleep = 0.2;
  106.           } else { if (_y2 < ((_yDistance -100) *-1)) then {
  107.             _sleep = 0.2;
  108.           }};
  109.         };
  110.  
  111.       } else {
  112.         if (_state == 0) then { // delete barrier
  113.           breakOut "loop";
  114.         };
  115.       };
  116.       sleep _sleep;
  117.     };
  118.  
  119.   };
  120.   _id // return
  121. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement