Advertisement
GArtem

Pickup Teleport System v1.3

Nov 9th, 2013
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.70 KB | None | 0 0
  1. /*********************************************
  2.  *  Pickup Teleport System v1.3 by _[Bupyc]_ *
  3.  *********************************************/
  4.  
  5.  #if defined _KTS_included
  6.     #error The resonance of inclusions "KTS" and "PTS"
  7. #endif
  8.  
  9.  #if defined _PTS_included
  10.     #endinput
  11. #endif
  12. #define _PTS_included
  13.  
  14. #define ptsModel        1318    // Модель пикапа
  15. #define ptsType         1       // Тип пикапа
  16. #define ptsDeact        1700    // Время деактивации после прохода через телепорт (мс)
  17.  
  18. #define MAX_TELEPORTS   30      // Максимальное кол-во телепортов
  19.  
  20. static pts_number = 0;
  21.  
  22. enum ptsData
  23. {
  24.     pts_id,
  25.     Float:pts_X,
  26.     Float:pts_Y,
  27.     Float:pts_Z,
  28.     Float:pts_A,
  29.     pts_Int,
  30.     pts_Virt,
  31.     pts_Toid,
  32.     Float:pts_ToX,
  33.     Float:pts_ToY,
  34.     Float:pts_ToZ,
  35.     Float:pts_ToA,
  36.     pts_ToInt,
  37.     pts_ToVirt,
  38. }
  39. new ptsInfo[MAX_TELEPORTS][ptsData];
  40.  
  41. forward OnPlayerTeleport(playerid, teleportid, Float:X, Float:Y, Float:Z, Int, Virt);
  42.  
  43. public OnPlayerPickUpPickup(playerid, pickupid)
  44. {
  45.     if(!pts_number)
  46.     {
  47.         if(funcidx("pts_OnPlayerPickUpPickup") != -1) return CallLocalFunction("pts_OnPlayerPickUpPickup", "ii", playerid, pickupid);
  48.         return 1;
  49.     }
  50.     if(GetPVarInt(playerid, "pts_DeactTime") <= GetTickCount())
  51.     {
  52.         for(new num = 1; num < pts_number+1; num++)
  53.         {
  54.             if(pickupid == ptsInfo[num][pts_id])
  55.             {
  56.                 SetPVarInt(playerid, "pts_DeactTime", GetTickCount()+ptsDeact);
  57.                 SetPlayerVirtualWorld(playerid, ptsInfo[num][pts_ToVirt]);
  58.                 SetPlayerPos(playerid, ptsInfo[num][pts_ToX], ptsInfo[num][pts_ToY], ptsInfo[num][pts_ToZ]);
  59.                 SetPlayerFacingAngle(playerid, ptsInfo[num][pts_ToA]);
  60.                 SetPlayerInterior(playerid, ptsInfo[num][pts_ToInt]);
  61.                 if(funcidx("OnPlayerTeleport") != -1) CallLocalFunction("OnPlayerTeleport", "iifffii", playerid, num, ptsInfo[num][pts_ToX], ptsInfo[num][pts_ToY], ptsInfo[num][pts_ToZ], ptsInfo[num][pts_ToInt], ptsInfo[num][pts_ToVirt]);
  62.                 break;
  63.             }
  64.             else if(pickupid == ptsInfo[num][pts_Toid])
  65.             {
  66.                 SetPVarInt(playerid, "pts_DeactTime", GetTickCount()+ptsDeact);
  67.                 SetPlayerVirtualWorld(playerid, ptsInfo[num][pts_Virt]);
  68.                 SetPlayerPos(playerid, ptsInfo[num][pts_X], ptsInfo[num][pts_Y], ptsInfo[num][pts_Z]);
  69.                 SetPlayerFacingAngle(playerid, ptsInfo[num][pts_A]);
  70.                 SetPlayerInterior(playerid, ptsInfo[num][pts_Int]);
  71.                 if(funcidx("OnPlayerTeleport") != -1) CallLocalFunction("OnPlayerTeleport", "iifffii", playerid, num, ptsInfo[num][pts_X], ptsInfo[num][pts_Y], ptsInfo[num][pts_Z], ptsInfo[num][pts_Int], ptsInfo[num][pts_Virt]);
  72.                 break;
  73.             }
  74.         }
  75.     }
  76.     if(funcidx("pts_OnPlayerPickUpPickup") != -1) return CallLocalFunction("pts_OnPlayerPickUpPickup", "ii", playerid, pickupid);
  77.     return 1;
  78. }
  79.  
  80. stock CreateTeleport(Float:X, Float:Y, Float:Z, Float:A, Int, Virt, Float:ToX, Float:ToY, Float:ToZ, Float:ToA, ToInt, ToVirt)
  81. {
  82.     pts_number++;
  83.     ptsInfo[pts_number][pts_id] = CreatePickup(ptsModel, ptsType, X, Y, Z, Virt);
  84.     ptsInfo[pts_number][pts_Toid] = CreatePickup(ptsModel, ptsType, ToX, ToY, ToZ, ToVirt);
  85.    
  86.     ptsInfo[pts_number][pts_X] = X, ptsInfo[pts_number][pts_Y] = Y, ptsInfo[pts_number][pts_Z] = Z, ptsInfo[pts_number][pts_A] = A;
  87.     ptsInfo[pts_number][pts_Int] = Int, ptsInfo[pts_number][pts_Virt] = Virt;
  88.    
  89.     ptsInfo[pts_number][pts_ToX] = ToX, ptsInfo[pts_number][pts_ToY] = ToY, ptsInfo[pts_number][pts_ToZ] = ToZ, ptsInfo[pts_number][pts_ToA] = ToA;
  90.     ptsInfo[pts_number][pts_ToInt] = ToInt, ptsInfo[pts_number][pts_ToVirt] = ToVirt;
  91.     return pts_number;
  92. }
  93.  
  94. #if defined _ALS_OnPlayerPickUpPickup
  95.   #undef OnPlayerPickUpPickup
  96. #else
  97.   #define _ALS_OnPlayerPickUpPickup
  98. #endif
  99. #define OnPlayerPickUpPickup pts_OnPlayerPickUpPickup
  100. forward pts_OnPlayerPickUpPickup(playerid, newkeys, oldkeys);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement