SHARE
TWEET

VehicleSync - Include

Lorenc Oct 18th, 2012 505 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  *
  3.  *              "VehicleSync.inc" - #1 Anti-sobiet car spawning
  4.  *                      Created/Debugged most by Lorenc_
  5.  *  
  6.  *              Thanks to the members of www.irresistiblegaming.com and retards for trying me.
  7.  *  
  8.  *
  9. */
  10.  
  11. /* ** Stop Duplicating Code! ** */
  12. #if defined _vsync_included
  13.         #endinput
  14. #endif
  15. #define _vsync_included
  16.  
  17. /* ** Includes ** */
  18. #include                                                        < a_samp >
  19. #tryinclude                                             < foreach >
  20.  
  21. #define VEHICLE_DISTANCE                        (15.0)
  22.  
  23. /* ** Variables ** */
  24. static stock
  25.         Float: g_VehiclePosX                    [ MAX_VEHICLES ],
  26.         Float: g_VehiclePosY                    [ MAX_VEHICLES ],
  27.         Float: g_VehiclePosZ                    [ MAX_VEHICLES ],
  28.         Float: LastSteepMove            [ MAX_VEHICLES ],
  29.  
  30.         bool: VS_OPU,
  31.         bool: VS_OVS,
  32.        
  33.         g_VehicleTick = -1,
  34.         g_VehicleTickCount = 0,
  35.         bool: g_VehicleTickBusy = false,
  36.        
  37.         Iterator:g_TotalVehicles<MAX_VEHICLES>
  38. ;
  39.  
  40. /* ** Forwards ** */
  41. forward Vehicle_Sync( );
  42.  
  43. /* ** Function Hooks ** */
  44. stock vs_AddStaticVehicle( model, Float: X, Float: Y, Float: Z, Float: Angle, color1, color2 )
  45. {
  46.         new id = AddStaticVehicle( model, X, Y, Z, Angle, color1, color2 );
  47.  
  48.         if( id != INVALID_VEHICLE_ID ) {
  49.                 Iter_Add(g_TotalVehicles, id);
  50.                 g_VehiclePosX[ id ] = X;
  51.                 g_VehiclePosY[ id ] = Y;
  52.                 g_VehiclePosZ[ id ] = Z;
  53.         }
  54.         return id;
  55. }
  56. #define AddStaticVehicle        vs_AddStaticVehicle
  57.  
  58. stock vs_AddStaticVehicleEx( model, Float: X, Float: Y, Float: Z, Float: Angle, color1, color2, respawn_time )
  59. {
  60.         new id = AddStaticVehicleEx( model, X, Y, Z, Angle, color1, color2, respawn_time );
  61.  
  62.         if( id != INVALID_VEHICLE_ID ) {
  63.                 Iter_Add(g_TotalVehicles, id);
  64.                 g_VehiclePosX[ id ] = X;
  65.                 g_VehiclePosY[ id ] = Y;
  66.                 g_VehiclePosZ[ id ] = Z;
  67.         }
  68.         return id;
  69. }
  70.  
  71. stock vs_CreateVehicle( model, Float: X, Float: Y, Float: Z, Float: Angle, color1, color2, respawn_time )
  72. {
  73.         new id = CreateVehicle( model, X, Y, Z, Angle, color1, color2, respawn_time );
  74.  
  75.         if( id != INVALID_VEHICLE_ID ) {
  76.                 Iter_Add(g_TotalVehicles, id);
  77.                 g_VehiclePosX[ id ] = X;
  78.                 g_VehiclePosY[ id ] = Y;
  79.                 g_VehiclePosZ[ id ] = Z;
  80.         }
  81.         return id;
  82. }
  83.  
  84. stock vs_SetVehiclePos( vehicleid, Float: X, Float: Y, Float: Z )
  85. {
  86.         if( vehicleid != INVALID_VEHICLE_ID )
  87.         {
  88.                 g_VehiclePosX[ vehicleid ] = X;
  89.                 g_VehiclePosY[ vehicleid ] = Y;
  90.                 g_VehiclePosZ[ vehicleid ] = Z;
  91.         }
  92.         return SetVehiclePos( vehicleid, X, Y, Z );
  93. }
  94.  
  95. stock vs_DestroyVehicle( vehicleid )
  96. {
  97.         if( vehicleid != INVALID_VEHICLE_ID )
  98.                 Iter_Remove(g_TotalVehicles, vehicleid);
  99.                
  100.         return DestroyVehicle( vehicleid );
  101. }
  102.  
  103. #define SetVehiclePos                   vs_SetVehiclePos
  104. #define AddStaticVehicleEx              vs_AddStaticVehicleEx
  105. #define AddStaticVehicle                vs_AddStaticVehicle
  106. #define CreateVehicle                   vs_CreateVehicle
  107. #define DestroyVehicle                  vs_DestroyVehicle
  108. /* ** Continue ** */
  109.  
  110. public Vehicle_Sync( )
  111. {
  112.         foreach(new vehicleid : g_TotalVehicles)
  113.         {
  114.             if( GetVehicleModel( vehicleid ) != 0 )
  115.             {
  116.                         new Float: fDistance = GetVehicleDistanceFromPoint( vehicleid, g_VehiclePosX[ vehicleid ], g_VehiclePosY[ vehicleid ], g_VehiclePosZ[ vehicleid ] );
  117.                         new Float: weirdmovement = fDistance - LastSteepMove[ vehicleid ];
  118.  
  119.                        
  120.                         /*new Float: X, Float: Y, Float: Z; GetVehicleVelocity( vehicleid, X, Y, Z );
  121.                         if( X != 0.0 && Y != 0.0 && Z != 0.0 && fDistance < VEHICLE_DISTANCE )
  122.                         {
  123.                                 printf( "[VSDEBUG] VELOCITY DETECTED ON %d | VX %f | VY %f | VZ %f", vehicleid, X, Y, Z );
  124.                                 GetVehiclePos( vehicleid, g_VehiclePosX[ vehicleid ], g_VehiclePosY[ vehicleid ], g_VehiclePosZ[ vehicleid ] );
  125.                                 continue;
  126.                         }*/
  127.  
  128.                         if( weirdmovement > -4.0 && weirdmovement != 0.0 && weirdmovement < 4.0 && fDistance < VEHICLE_DISTANCE ) // This should help prevent the detection from steep hills.
  129.                         {
  130.                                 //printf( "[VSDEBUG] STEEP HILL/PUSH DETECTED ON %d | DIS - LAST_DIS = %f", vehicleid, weirdmovement );
  131.                                 GetVehiclePos( vehicleid, g_VehiclePosX[ vehicleid ], g_VehiclePosY[ vehicleid ], g_VehiclePosZ[ vehicleid ] );
  132.                                 continue;
  133.                         }
  134.  
  135.                         if( fDistance >= VEHICLE_DISTANCE ) {
  136.                        
  137.                                 if( ( gettime( ) - g_VehicleTick ) > 4 && !g_VehicleTickBusy )
  138.                                 {
  139.                                         if( g_VehicleTickCount++ > 5 ) {
  140.                                                 print( "[FUCKING CAR SPAWNER] 5 vehicles spawned thus respawning all vehicles incase of an idiot." );
  141.                                                
  142.                                                 g_VehicleTickBusy = true; // Takes time to go through a whole loop... Could be removed I guess.
  143.                                                 for( new i; i < MAX_VEHICLES; i++ ) {
  144.                                                         foreach(new p : Player) {
  145.                                                                 if( GetVehicleModel( i ) != 0 && GetPlayerVehicleID( p ) != i ) {
  146.                                                                         SetVehicleToRespawn( i );
  147.                                                                 }
  148.                                                         }
  149.                                                 }
  150.                                                 g_VehicleTickBusy = false;
  151.                                                
  152.                                                 g_VehicleTickCount = 0;
  153.                                                 g_VehicleTick = 0;
  154.                                                 break;
  155.                                         }
  156.                                 }
  157.                                 else g_VehicleTick = gettime( ), g_VehicleTickCount = 0;
  158.                                
  159.                                 SetVehicleToRespawn( vehicleid );
  160.                         }
  161.                         LastSteepMove[ vehicleid ] = fDistance;
  162.             }
  163.         }
  164.         return 1;
  165. }
  166.  
  167.  
  168. public OnVehicleSpawn( vehicleid )
  169. {
  170.         GetVehiclePos( vehicleid, g_VehiclePosX[ vehicleid ], g_VehiclePosY[ vehicleid ], g_VehiclePosZ[ vehicleid ] );
  171.         return ( VS_OVS ) ? CallLocalFunction( "VS_OnVehicleSpawn", "d", vehicleid ) : 1;
  172. }
  173.  
  174. #if defined _ALS_OnVehicleSpawn
  175.         #undef OnVehicleSpawn
  176. #else
  177.         #define _ALS_OnVehicleSpawn
  178. #endif
  179. #define OnVehicleSpawn VS_OnVehicleSpawn
  180. forward VS_OnVehicleSpawn( vehicleid );
  181.  
  182. public OnPlayerUpdate( playerid )
  183. {
  184.         if( IsPlayerInAnyVehicle( playerid ) )
  185.         {
  186.                 new vehicleid = GetPlayerVehicleID( playerid );
  187.                 GetVehiclePos( vehicleid, g_VehiclePosX[ vehicleid ], g_VehiclePosY[ vehicleid ], g_VehiclePosZ[ vehicleid ] );
  188.         }
  189.         return ( VS_OPU ) ? CallLocalFunction( "VS_OnPlayerUpdate", "d", playerid ) : 1;
  190. }
  191.  
  192. #if defined _ALS_OnPlayerUpdate
  193.         #undef OnPlayerUpdate
  194. #else
  195.         #define _ALS_OnPlayerUpdate
  196. #endif
  197. #define OnPlayerUpdate VS_OnPlayerUpdate
  198. forward VS_OnPlayerUpdate( playerid );
  199.  
  200. #if !defined FILTERSCRIPT
  201.         public OnGameModeInit()
  202.         {
  203.                 SetTimer( "Vehicle_Sync", 200, true );
  204.                 return ( funcidx( "VS_OnGameModeInit" ) != -1 ) ? CallLocalFunction( "VS_OnGameModeInit", "" ) : 1;
  205.         }      
  206.         #if defined _ALS_OnGameModeInit
  207.                 #undef OnGameModeInit
  208.         #else
  209.                 #define _ALS_OnGameModeInit
  210.         #endif
  211.         #define OnGameModeInit VS_OnGameModeInit
  212.         forward VS_OnGameModeInit();
  213. #else
  214.         public OnFilterScriptInit()
  215.         {
  216.                 SetTimer( "Vehicle_Sync", 200, true );
  217.                
  218.                 VS_OPU = ( funcidx( "VS_OnPlayerUpdate" ) != -1 );
  219.                 VS_OVS = ( funcidx( "VS_OnVehicleSpawn" ) != -1 );
  220.                 return ( funcidx( "VS_OnFilterScriptInit" ) != -1 ) ? CallLocalFunction( "VS_OnFilterScriptInit", "" ) : 1;
  221.         }      
  222.         #if defined _ALS_OnFilterScriptInit
  223.                 #undef OnFilterScriptInit
  224.         #else
  225.                 #define _ALS_OnFilterScriptInit
  226.         #endif
  227.         #define OnFilterScriptInit VS_OnFilterScriptInit
  228.         forward VS_OnFilterScriptInit();
  229. #endif
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top