Advertisement
Guest User

Teleportation Include

a guest
Oct 29th, 2014
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 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, fX, fY, fZ, hittype, hitid=INVALID_HIT_ID);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement