Advertisement
GArtem

Key Teleport System v2.1

Nov 9th, 2013
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.81 KB | None | 0 0
  1. /********************************************
  2.  *  Key Teleport System v2.1 by _[Bupyc]_   *
  3.  ********************************************/
  4.  
  5. #if defined _PTS_included
  6.     #error The resonance of inclusions "KTS" and "PTS"
  7. #endif
  8.  
  9. #if defined _KTS_included
  10.     #endinput
  11. #endif
  12. #define _KTS_included
  13.  
  14. new kts_number = 0;
  15.  
  16. #define ktsKey          1024 // ID Клавиши (1024 - ALT)
  17. #define ktsModel        1318    // Модель пикапа
  18. #define ktsType         1       // Тип пикапа
  19.  
  20. #define MAX_TELEPORTS   30  // Максимальное кол-во телепортов
  21.  
  22. enum ktsData
  23. {
  24.     Float:kts_X,
  25.     Float:kts_Y,
  26.     Float:kts_Z,
  27.     Float:kts_A,
  28.     kts_Int,
  29.     kts_Virt,
  30.     Float:kts_ToX,
  31.     Float:kts_ToY,
  32.     Float:kts_ToZ,
  33.     Float:kts_ToA,
  34.     kts_ToInt,
  35.     kts_ToVirt,
  36. }
  37. new ktsInfo[MAX_TELEPORTS][ktsData];
  38.  
  39. forward OnPlayerTeleport(playerid, teleportid, Float:X, Float:Y, Float:Z, Int, Virt);
  40.  
  41. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  42. {
  43.     if(newkeys & ktsKey)
  44.     {
  45.         if(!kts_number)
  46.         {
  47.             if(funcidx("kts_OnPlayerKeyStateChange") != -1) return CallLocalFunction("kts_OnPlayerKeyStateChange", "iii", playerid, newkeys, oldkeys);
  48.             return 1;
  49.         }
  50.         for(new num = 1; num < kts_number+1; num++)
  51.         {
  52.             if(IsPlayerInRangeOfPoint(playerid, 2.0, ktsInfo[num][kts_X], ktsInfo[num][kts_Y], ktsInfo[num][kts_Z]) && GetPlayerVirtualWorld(playerid) == ktsInfo[num][kts_Virt])
  53.             {
  54.                 SetPlayerInterior(playerid, ktsInfo[num][kts_ToInt]);
  55.                 SetPlayerPos(playerid, ktsInfo[num][kts_ToX], ktsInfo[num][kts_ToY], ktsInfo[num][kts_ToZ]);
  56.                 SetPlayerFacingAngle(playerid, ktsInfo[num][kts_ToA]);
  57.                 SetPlayerVirtualWorld(playerid, ktsInfo[num][kts_ToVirt]);
  58.                 if(funcidx("OnPlayerTeleport") != -1) CallLocalFunction("OnPlayerTeleport", "iifffii", playerid, num, ktsInfo[num][kts_ToX], ktsInfo[num][kts_ToY], ktsInfo[num][kts_ToZ], ktsInfo[num][kts_ToInt], ktsInfo[num][kts_ToVirt]);
  59.                 break;
  60.             }
  61.             else if(IsPlayerInRangeOfPoint(playerid, 2.0, ktsInfo[num][kts_ToX], ktsInfo[num][kts_ToY], ktsInfo[num][kts_ToZ]) && GetPlayerVirtualWorld(playerid) == ktsInfo[num][kts_ToVirt])
  62.             {
  63.                 SetPlayerVirtualWorld(playerid, ktsInfo[num][kts_Virt]);
  64.                 SetPlayerPos(playerid, ktsInfo[num][kts_X], ktsInfo[num][kts_Y], ktsInfo[num][kts_Z]);
  65.                 SetPlayerFacingAngle(playerid, ktsInfo[num][kts_A]);
  66.                 SetPlayerInterior(playerid, ktsInfo[num][kts_Int]);
  67.                 if(funcidx("OnPlayerTeleport") != -1) CallLocalFunction("OnPlayerTeleport", "iifffii", playerid, num, ktsInfo[num][kts_X], ktsInfo[num][kts_Y], ktsInfo[num][kts_Z], ktsInfo[num][kts_Int], ktsInfo[num][kts_Virt]);
  68.                 break;
  69.             }
  70.         }
  71.     }
  72.     if(funcidx("kts_OnPlayerKeyStateChange") != -1) return CallLocalFunction("kts_OnPlayerKeyStateChange", "iii", playerid, newkeys, oldkeys);
  73.     return 1;
  74. }
  75.  
  76. stock CreateTeleport(Float:X, Float:Y, Float:Z, Float:A, Int, Virt, Float:ToX, Float:ToY, Float:ToZ, Float:ToA, ToInt, ToVirt)
  77. {
  78.     kts_number++;
  79.     CreatePickup(ktsModel, ktsType, X, Y, Z, Virt); CreatePickup(ktsModel, ktsType, ToX, ToY, ToZ, ToVirt);
  80.    
  81.     ktsInfo[kts_number][kts_X] = X, ktsInfo[kts_number][kts_Y] = Y, ktsInfo[kts_number][kts_Z] = Z, ktsInfo[kts_number][kts_A] = A;
  82.     ktsInfo[kts_number][kts_Int] = Int, ktsInfo[kts_number][kts_Virt] = Virt;
  83.    
  84.     ktsInfo[kts_number][kts_ToX] = ToX, ktsInfo[kts_number][kts_ToY] = ToY, ktsInfo[kts_number][kts_ToZ] = ToZ, ktsInfo[kts_number][kts_ToA] = ToA;
  85.     ktsInfo[kts_number][kts_ToInt] = ToInt, ktsInfo[kts_number][kts_ToVirt] = ToVirt;
  86.     return kts_number;
  87. }
  88.  
  89. #if defined _ALS_OnPlayerKeyStateChange
  90.   #undef OnPlayerKeyStateChange
  91. #else
  92.   #define _ALS_OnPlayerKeyStateChange
  93. #endif
  94. #define OnPlayerKeyStateChange kts_OnPlayerKeyStateChange
  95. forward kts_OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement