Advertisement
Guest User

pickfix.inc

a guest
Jul 26th, 2016
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.83 KB | None | 0 0
  1.  
  2. /*
  3.         pickfix | v1.5
  4.         Исправление повторения срабатывания пикапов
  5.         Edwin, 2016 RU
  6.        
  7.         Важно: инклуд требует наличия плагина streamer от Incognito.
  8.        
  9.         Коллбэки:
  10.             OnPlayerPickupExit (playerid) // Срабатывает при выходе игрока из пикапа
  11.             OnPlayerDynamicPickupExit (playerid) // Срабатывает при выходе игрока из динамического пикапа
  12.  
  13. */
  14.  
  15.  
  16.  
  17.  
  18. #if !defined Streamer_IncludeFileVersion
  19.     #error streamer must be included before pickfix
  20.    
  21. #else
  22.  
  23.  
  24. #if !defined MAX_DYNAMIC_PICKUPS
  25.     #define MAX_DYNAMIC_PICKUPS 4096
  26. #endif
  27.  
  28.  
  29. forward OnPlayerPickupExit(playerid);
  30. forward OnPlayerDynamicPickupExit(playerid);
  31.  
  32.  
  33. static  Float:pos_pickup[MAX_PICKUPS][3],
  34.         PlayerOnPickup[MAX_PLAYERS char];
  35.  
  36.  
  37.        
  38.  
  39.  
  40.        
  41. public OnPlayerPickUpPickup(playerid, pickupid)
  42. {
  43.         if(PlayerOnPickup{playerid}) return 1;
  44.         PlayerOnPickup{playerid} = 1;
  45.         SetPVarInt(playerid, "PickZone",
  46.             CreateDynamicSphere(pos_pickup[pickupid][0], pos_pickup[pickupid][1], pos_pickup[pickupid][2], 1.3, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid)));
  47.    
  48. #if defined pickfix__OnPlayerPickUpPickup
  49.         return pickfix__OnPlayerPickUpPickup(playerid, pickupid);
  50. #endif
  51. }
  52.  
  53. public OnPlayerPickUpDynamicPickup(playerid, pickupid)
  54. {
  55.         if(PlayerOnPickup{playerid}) return 1;
  56.         PlayerOnPickup{playerid} = 1;
  57.         new Float:pick_posit[3];
  58.         Streamer_GetFloatData(STREAMER_TYPE_PICKUP, pickupid, E_STREAMER_X, pick_posit[0]);
  59.         Streamer_GetFloatData(STREAMER_TYPE_PICKUP, pickupid, E_STREAMER_Y, pick_posit[1]);
  60.         Streamer_GetFloatData(STREAMER_TYPE_PICKUP, pickupid, E_STREAMER_Z, pick_posit[2]);
  61.         SetPVarInt(playerid, "DynPickZone",
  62.             CreateDynamicSphere(pick_posit[0], pick_posit[1], pick_posit[2], 1.3, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid)));
  63.    
  64. #if defined pickfix__OnPlayerPickUpDynamicP
  65.         return pickfix__OnPlayerPickUpDynamicP(playerid, pickupid);
  66. #endif
  67. }
  68.  
  69.  
  70. #if defined _ALS_OnPlayerPickUpPickup
  71.     #undef OnPlayerPickUpPickup    
  72.  
  73. #else
  74.     #define    _ALS_OnPlayerPickUpPickup
  75. #endif
  76.  
  77. #define OnPlayerPickUpPickup   pickfix__OnPlayerPickUpPickup
  78.  
  79. #if defined pickfix__OnPlayerPickUpPickup
  80. forward pickfix__OnPlayerPickUpPickup(playerid, pickupid);
  81. #endif  
  82.  
  83.  
  84. #if defined _ALS_OnPlayerPickUpDynamicP
  85.     #undef OnPlayerPickUpDynamicP
  86.  
  87. #else
  88.     #define    _ALS_OnPlayerPickUpDynamicP
  89. #endif
  90.  
  91. #define OnPlayerPickUpDynamicPickup   pickfix__OnPlayerPickUpDynamicP
  92.  
  93. #if defined pickfix__OnPlayerPickUpDynamicP
  94. forward pickfix__OnPlayerPickUpDynamicP(playerid, pickupid);
  95. #endif
  96.  
  97.  
  98. // ------>
  99.  
  100.  
  101. stock pickfix__CreatePickup(model, type, Float:X, Float:Y, Float:Z, Virtualworld)
  102. {
  103.         new pickupid = CreatePickup(model, type, Float:X, Float:Y, Float:Z, Virtualworld);
  104.         if(pickupid == -1) return -1;
  105.         pos_pickup[pickupid][0] = X;
  106.         pos_pickup[pickupid][1] = Y;
  107.         pos_pickup[pickupid][2] = Z;
  108.         return pickupid;
  109. }
  110.  
  111.  
  112. #if defined _ALS_CreatePickup
  113.     #undef CreatePickup
  114. #else
  115.     #define     _ALS_CreatePickup
  116. #endif
  117. #define CreatePickup        pickfix__CreatePickup  
  118.  
  119.  
  120. // ------>
  121.  
  122.  
  123. public OnPlayerLeaveDynamicArea(playerid, areaid)
  124. {
  125.         if(GetPVarInt(playerid, "PickZone") == areaid)
  126.         {
  127.                 DeletePVar(playerid, "PickZone");
  128.                 CallRemoteFunction("OnPlayerPickupExit", "i", playerid);
  129.                 PlayerOnPickup{playerid} = 0;
  130.                 DestroyDynamicArea(areaid);
  131.         }
  132.         else if(GetPVarInt(playerid, "DynPickZone") == areaid)
  133.         {
  134.                 DeletePVar(playerid, "DynPickZone");
  135.                 CallRemoteFunction("OnPlayerDynamicPickupExit", "i", playerid);
  136.                 PlayerOnPickup{playerid} = 0;
  137.                 DestroyDynamicArea(areaid);
  138.         }
  139.        
  140. #if defined pickfix__OnPlayerLeaveDynamicAr
  141.         return pickfix__OnPlayerLeaveDynamicAr(playerid, areaid);
  142. #endif
  143. }
  144.  
  145.  
  146.  
  147. #if defined _ALS_OnPlayerLeaveDynamicArea
  148.     #undef OnPlayerLeaveDynamicArea    
  149.  
  150. #else
  151.     #define    _ALS_OnPlayerLeaveDynamicArea
  152. #endif
  153.  
  154. #define OnPlayerLeaveDynamicArea   pickfix__OnPlayerLeaveDynamicAr
  155.  
  156. #if defined pickfix__OnPlayerLeaveDynamicAr
  157. forward pickfix__OnPlayerLeaveDynamicAr(playerid, areaid);
  158. #endif  
  159.  
  160.  
  161.  
  162. public OnPlayerDisconnect(playerid, reason)
  163. {
  164.         if(PlayerOnPickup{playerid})
  165.         {
  166.                 PlayerOnPickup{playerid} = 0;
  167.                 DestroyDynamicArea(IsPlayerInDynamicArea(playerid, GetPVarInt(playerid, "PickZone")) ?
  168.                     GetPVarInt(playerid, "PickZone") : GetPVarInt(playerid, "DynPickZone"));
  169.         }
  170.        
  171. #if defined pickfix__OnPlayerDisconnect
  172.         return pickfix__OnPlayerDisconnect(playerid, reason);
  173. #endif
  174. }
  175.  
  176.  
  177.  
  178. #if defined pickfix__OnPlayerDisconnect
  179.     forward pickfix__OnPlayerDisconnect(playerid, reason);
  180. #endif
  181. #if defined _ALS_OnPlayerDisconnect
  182.     #undef OnPlayerDisconnect
  183. #else
  184.     #define _ALS_OnPlayerDisconnect
  185. #endif
  186. #define OnPlayerDisconnect pickfix__OnPlayerDisconnect
  187.  
  188.  
  189. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement