Advertisement
Guest User

Teleportation Include

a guest
Oct 29th, 2014
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 2.83 KB | None | 0 0
  1. #include <ysi\y_hooks>
  2. #include foreach
  3. static bool: TeleportEnabled[MAX_PLAYERS];
  4. static bool: CanTeleportToVehicle[MAX_PLAYERS];
  5. #define INVALID_HIT_ID -1
  6.  
  7. stock TogglePlayerTeleport(playerid, bool: status, bool: vehicle=true)
  8. {
  9.         TeleportEnabled[playerid] = status;
  10.         CanTeleportToVehicle[playerid] = vehicle;
  11.         return 1;
  12. }
  13.  
  14. stock GetPlayerTeleportStatus(playerid)
  15. {
  16.         if(TeleportEnabled[playerid] == false) return 0;
  17.         else return 1;
  18. }
  19. stock GetPlayerVehicleTeleportStatus(playerid)
  20. {
  21.         if(CanTeleportToVehicle[playerid] == false) return 0;
  22.         return 1;
  23. }
  24. stock IsVehicleOccupied(vehicleid, seat)
  25. {
  26.     foreach(Player,i)
  27.     {
  28.         if(IsPlayerInAnyVehicle(i))
  29.         {
  30.             if(GetPlayerVehicleID(i)==vehicleid && GetPlayerVehicleSeat(i) == seat)
  31.             {
  32.                 return 1;
  33.             }
  34.             else
  35.             {
  36.                 return 0;
  37.             }
  38.         }
  39.     }
  40.     return -1;
  41. }
  42.  
  43. hook OnPlayerConnect(playerid)
  44. {
  45.         TeleportEnabled[playerid] = false;
  46.         CanTeleportToVehicle[playerid] = false;
  47.         return true;
  48. }
  49.  
  50. hook OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
  51. {
  52.         if(IsPlayerConnected(playerid) && TeleportEnabled[playerid] == true)
  53.         {
  54.                 if(hittype == BULLET_HIT_TYPE_NONE)
  55.                 {
  56.                         #if defined DISABLE_Z_SETPOS
  57.                         SetPlayerPos(playerid, fX, fY, fZ);
  58.                         #else
  59.                         SetPlayerPosFindZ(playerid, fX, fY, fZ);
  60.                         #endif
  61.                         CallLocalFunction("OnPlayerTeleport", "idfff", playerid, weaponid, fX, fY, fZ, hittype, BULLET_HIT_TYPE_NONE);
  62.                 }
  63.                 else if(hittype == BULLET_HIT_TYPE_VEHICLE)
  64.                 {
  65.                         if(IsVehicleOccupied(hitid, 0)) return 1;
  66.                         if(CanTeleportToVehicle[playerid] == false) return 1;
  67.                         PutPlayerInVehicle(playerid, hitid, 0);
  68.                         CallLocalFunction("OnPlayerTeleport", "idfff", playerid, weaponid, fX, fY, fZ, hittype, BULLET_HIT_TYPE_VEHICLE);
  69.                 }
  70.                 else if(hittype == BULLET_HIT_TYPE_OBJECT) return 1;
  71.                 else if(hittype == BULLET_HIT_TYPE_PLAYER)
  72.                 {
  73.                         static Float: pos[3];
  74.                         GetPlayerPos(hitid, pos[0], pos[1], pos[2]);
  75.                         SetPlayerPos(hitid, pos[0], pos[1]-2.0, pos[2]);
  76.                         CallLocalFunction("OnPlayerTeleport", "idfff", playerid, weaponid, fX, fY, fZ, hittype, BULLET_HIT_TYPE_PLAYER);
  77.                 }
  78.         }
  79.     return 1;
  80. }
  81.  
  82. forward OnPlayerTeleport(playerid, weaponid, Float: fX, Float: fY, Float: fZ, hittype, hitid=INVALID_HIT_ID);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement