Advertisement
Lorenc

VehicleSync - Include

Oct 18th, 2012
642
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.58 KB | None | 0 0
  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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement