Advertisement
Guest User

Untitled

a guest
May 20th, 2012
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 20.29 KB | None | 0 0
  1. #include a_samp
  2. #include mapandreas
  3. #undef MAX_PLAYERS
  4. #define MAX_PLAYERS 100 // Serverslots beachten!
  5. #define MAX_CHOPPERS 5
  6. #define AMMO 50
  7. #define SHOOT "/fire"
  8. enum pInfo{
  9.     chopper,
  10.     bool:HasChopper,
  11.     ChopperID,
  12.     chpTime,
  13.     bool:change,
  14.     timer,
  15.     PlayerText:TimerDraw,
  16.     Float:SaveX,
  17.     Float:SaveY,
  18.     Float:SaveZ,
  19.     Float:SaveR
  20. };
  21. forward CreatePlayerChopper( gunnerid, npcname[  ], script[  ], length, pilotid );
  22. forward ChopperHandler( gunnerid, func );
  23. new PlayerInfo[ MAX_PLAYERS ][ pInfo ];
  24. new obj[ MAX_CHOPPERS char ] = -1;
  25. new objChopper[ MAX_OBJECTS char ] = -1;
  26. new Timer[ MAX_OBJECTS char ];
  27. new bool:Rocket[ MAX_OBJECTS ];
  28. new Text:TextDraw[ 7 char ];
  29. new ammo[ MAX_PLAYERS char ] = 0;
  30. new pName[ MAX_PLAYERS ][ MAX_PLAYER_NAME ];
  31. new pBotName[ MAX_PLAYERS ][ MAX_PLAYER_NAME ];
  32. new PlayerText:AmmoTDraw[ MAX_PLAYERS char ];
  33. #define AmmoTDraw[%0] AmmoTDraw{%0}
  34. #define objChopper[%0] objChopper{%0}
  35. #define TextDraw[%0] TextDraw{%0}
  36. #define obj[%0] obj{%0}
  37. #define Timer[%0] Timer{%0}
  38. #define ammo[%0] ammo{%0}
  39. public OnFilterScriptInit( )
  40. {
  41.     MapAndreas_Init( MAP_ANDREAS_MODE_FULL );
  42.     TextDraw[ 0 ] = TextDrawCreate( -1.000000, 2.000000, "w" );
  43.     TextDrawBackgroundColor( TextDraw[ 0 ], 255 );
  44.     TextDrawFont( TextDraw[ 0 ], 1 );
  45.     TextDrawLetterSize( TextDraw[ 0 ], 0.019998, 51.299999 );
  46.     TextDrawColor( TextDraw[ 0 ], -1 );
  47.     TextDrawSetOutline( TextDraw[ 0 ], 0 );
  48.     TextDrawSetProportional( TextDraw[ 0 ], 1 );
  49.     TextDrawSetShadow( TextDraw[ 0 ], 1 );
  50.     TextDrawUseBox( TextDraw[ 0 ], 1 );
  51.     TextDrawBoxColor( TextDraw[ 0 ], 100 );
  52.     TextDrawTextSize( TextDraw[ 0 ], 642.000000, 30.000000 );
  53.  
  54.     TextDraw[ 1 ] = TextDrawCreate( 489.000000, 6.000000, "Uplink: 29.28.54#~n~       10x60 MHZ" );
  55.     TextDrawBackgroundColor( TextDraw[ 1 ], 255 );
  56.     TextDrawFont( TextDraw[ 1 ], 1 );
  57.     TextDrawLetterSize( TextDraw[ 1 ], 0.500000, 1.000000 );
  58.     TextDrawColor( TextDraw[ 1 ], -1 );
  59.     TextDrawSetOutline( TextDraw[ 1 ], 0 );
  60.     TextDrawSetProportional( TextDraw[ 1 ], 1 );
  61.     TextDrawSetShadow( TextDraw[ 1 ], 1 );
  62.  
  63.     TextDraw[ 2 ] = TextDrawCreate( 601.000000, 25.000000, "Lazer: armed" );
  64.     TextDrawBackgroundColor( TextDraw[ 2 ], 255 );
  65.     TextDrawFont( TextDraw[ 2 ], 1 );
  66.     TextDrawLetterSize( TextDraw[ 2 ], 0.170000, 1.000000 );
  67.     TextDrawColor( TextDraw[ 2 ], -1 );
  68.     TextDrawSetOutline( TextDraw[ 2 ], 0 );
  69.     TextDrawSetProportional( TextDraw[ 2 ], 1 );
  70.     TextDrawSetShadow( TextDraw[ 2 ], 1 );
  71.  
  72.     TextDraw[ 4 ] = TextDrawCreate( 308.000000, 218.000000, "-  -" );
  73.     TextDrawBackgroundColor( TextDraw[ 4 ], 255 );
  74.     TextDrawFont( TextDraw[ 4 ], 1 );
  75.     TextDrawLetterSize( TextDraw[ 4 ], 0.500000, 1.000000 );
  76.     TextDrawColor( TextDraw[ 4 ], -1 );
  77.     TextDrawSetOutline( TextDraw[ 4 ], 0 );
  78.     TextDrawSetProportional( TextDraw[ 4 ], 1 );
  79.     TextDrawSetShadow( TextDraw[ 4 ], 1 );
  80.  
  81.     TextDraw[ 5 ] = TextDrawCreate( 321.750000, 210.000000, "!~n~~n~!" );
  82.     TextDrawBackgroundColor( TextDraw[ 5 ], 255 );
  83.     TextDrawFont( TextDraw[ 5 ], 1 );
  84.     TextDrawLetterSize( TextDraw[ 5 ], 0.180000, 1.000000 );
  85.     TextDrawColor( TextDraw[ 5 ], -1 );
  86.     TextDrawSetOutline( TextDraw[ 5 ], 0 );
  87.     TextDrawSetProportional( TextDraw[ 5 ], 1 );
  88.     TextDrawSetShadow( TextDraw[ 5 ], 1 );
  89.  
  90.     TextDraw[ 6 ] = TextDrawCreate( 222.000000, 90.000000, "CAMERA: AH64-APACHE#" );
  91.     TextDrawBackgroundColor( TextDraw[ 6 ], 255 );
  92.     TextDrawFont( TextDraw[ 6 ], 1 );
  93.     TextDrawLetterSize( TextDraw[ 6 ], 0.500000, 1.000000 );
  94.     TextDrawColor( TextDraw[ 6 ], -1 );
  95.     TextDrawSetOutline( TextDraw[ 6 ], 0 );
  96.     TextDrawSetProportional( TextDraw[ 6 ], 1 );
  97.     TextDrawSetShadow( TextDraw[ 6 ], 0 );
  98.     for( new i = 0; i < MAX_PLAYERS; i ++ )
  99.     {
  100.         if( !IsPlayerConnected( i ) ) continue;
  101.         GetPlayerName( i, pName[ i ], MAX_PLAYER_NAME );
  102.         AmmoTDraw[ i ] = CreatePlayerTextDraw( i, 514.000000, 397.000000, "!!!!!!!!!!!!!!!!!!!!~n~!!!!!!!!!!!!!!!!!!!!" );
  103.         PlayerTextDrawBackgroundColor( i, AmmoTDraw[ i ], 255 );
  104.         PlayerTextDrawFont( i, AmmoTDraw[ i ], 1 );
  105.         PlayerTextDrawLetterSize( i, AmmoTDraw[ i ], 0.500000, 1.000000 );
  106.         PlayerTextDrawColor( i, AmmoTDraw[ i ], -1 );
  107.         PlayerTextDrawSetOutline( i, AmmoTDraw[ i ], 0 );
  108.         PlayerTextDrawSetProportional( i, AmmoTDraw[ i ], 1 );
  109.         PlayerTextDrawSetShadow( i, AmmoTDraw[ i ], 1 );
  110.        
  111.         PlayerInfo[ i ][ TimerDraw ] = CreatePlayerTextDraw( i, 21.000000, 400.000000, "1:30min");
  112.         PlayerTextDrawBackgroundColor( i, PlayerInfo[ i ][ TimerDraw ], 255);
  113.         PlayerTextDrawFont( i, PlayerInfo[ i ][ TimerDraw ], 1);
  114.         PlayerTextDrawLetterSize( i, PlayerInfo[ i ][ TimerDraw ], 0.500000, 1.000000);
  115.         PlayerTextDrawColor( i, PlayerInfo[ i ][ TimerDraw ], -1);
  116.         PlayerTextDrawSetOutline( i, PlayerInfo[ i ][ TimerDraw ], 0);
  117.         PlayerTextDrawSetProportional( i, PlayerInfo[ i ][ TimerDraw ], 1);
  118.         PlayerTextDrawSetShadow( i, PlayerInfo[ i ][ TimerDraw ], 0);
  119.     }
  120. }
  121. public OnFilterScriptExit( )
  122. {
  123.     for( new i = 0 ; i < MAX_PLAYERS ; i ++ )
  124.     {
  125.         if( !IsPlayerConnected( i ) ) continue;
  126.         PlayerTextDrawDestroy( i, AmmoTDraw[ i ] );
  127.         PlayerTextDrawDestroy( i, PlayerInfo[ i ][ TimerDraw ] );
  128.     }
  129.     TextDrawHideForAll( TextDraw[ 0 ] );
  130.     TextDrawDestroy( TextDraw[ 0 ] );
  131.     TextDrawHideForAll( TextDraw[ 1 ] );
  132.     TextDrawDestroy( TextDraw[ 1 ] );
  133.     TextDrawHideForAll( TextDraw[ 2 ] );
  134.     TextDrawDestroy( TextDraw[ 2 ] );
  135.     TextDrawHideForAll( TextDraw[ 3 ] );
  136.     TextDrawDestroy( TextDraw[ 3 ] );
  137.     TextDrawHideForAll( TextDraw[ 4 ] );
  138.     TextDrawDestroy( TextDraw[ 4 ] );
  139.     TextDrawHideForAll( TextDraw[ 5 ] );
  140.     TextDrawDestroy( TextDraw[ 5 ] );
  141.     TextDrawHideForAll( TextDraw[ 6 ] );
  142.     TextDrawDestroy( TextDraw[ 6 ] );
  143.     return 1;
  144. }
  145. public OnPlayerCommandText( playerid, cmdtext[  ] )
  146. {
  147.     if ( !strcmp( cmdtext, SHOOT ) )
  148.     {
  149.         ammo[ PlayerInfo[ playerid ][ ChopperID ] ]++;
  150.         new str[ 64 ];
  151.         format( str, sizeof str, "~b~" );
  152.         for( new i = 0 ; i < AMMO ; i++ )
  153.         {
  154.             if( i == AMMO/2 )
  155.             {
  156.                 format( str, sizeof str, ( ( ammo[ PlayerInfo[ playerid ][ ChopperID ] ] != AMMO/2 ) ? ( "%s~n~!" ) : ( "%s~n~~w~!" ) ), str );
  157.                 continue;
  158.             }
  159.             if( i == ammo[ PlayerInfo[ playerid ][ ChopperID ] ] )
  160.             {
  161.                 format( str, sizeof str, "%s~w~!", str );
  162.                 continue;
  163.             }
  164.             if( i < ammo[ PlayerInfo[ playerid ][ ChopperID ] ] )
  165.             {
  166.                 format( str, sizeof str, "%s!", str );
  167.                 continue;
  168.             }
  169.             format( str, sizeof str, "%s!", str );
  170.         }
  171.         PlayerTextDrawSetString( playerid, AmmoTDraw[ playerid ], str );
  172.         new
  173.             Float:fPX, Float:fPY, Float:fPZ,
  174.             Float:fVX, Float:fVY, Float:fVZ,
  175.             Float:object_x, Float:object_y, Float:object_z;
  176.         new
  177.             Float:fScale = 500;
  178.  
  179.         GetPlayerCameraPos( playerid, fPX, fPY, fPZ );
  180.         GetPlayerCameraFrontVector( playerid, fVX, fVY, fVZ );
  181.  
  182.         object_x = fPX + floatmul( fVX, fScale );
  183.         object_y = fPY + floatmul( fVY, fScale );
  184.         object_z = fPZ + floatmul( fVZ, fScale );
  185.         new obj1 = CreateObject( 345, fPX, fPY, fPZ, asin( fVZ ), 0.0, 360 - atan2( fVX, fVY ) );
  186.         Rocket[ obj1 ] = true;
  187.         objChopper[ obj1 ] = playerid;
  188.         MoveObject( obj1, object_x, object_y, object_z, 75.0 );
  189.         Timer[ obj1 ] = SetTimerEx( "CheckObj", 100, 1, "d", obj1 );
  190.         if( ammo[ PlayerInfo[ playerid ][ ChopperID ] ] >= AMMO )
  191.         {
  192.             ChopperHandler( playerid, 1 );
  193.             ammo[ PlayerInfo[ playerid ][ ChopperID ] ] = 0;
  194.         }
  195.         return 1;
  196.     }
  197.     if( !strcmp( "/chopper", cmdtext, true ) )
  198.     {
  199.         new str[ 24 ];
  200.         format( str, sizeof str, "chopper%d", playerid );
  201.         CreatePlayerChopper( playerid, str, "glenpark", 60, -1 );
  202.         return 1;
  203.     }
  204.     if( !strcmp( "/stop", cmdtext, true ) )
  205.     {
  206.         ChopperHandler( playerid, 1 );
  207.         return 1;
  208.     }
  209.     /*if( !strcmp( "/check", cmdtext, true ) )
  210.     {
  211.         new Float:x, Float:y, Float:z;
  212.         GetPlayerPos( GetPlayerID( "Chopper" ) , x, y, z );
  213.         SetPlayerPos( playerid, x, y, z );
  214.     }
  215.     if( !strcmp( cmdtext, "/test" ) )
  216.     {
  217.         new
  218.             Float:fVX, Float:fVY, Float:fVZ;
  219.         GetPlayerCameraFrontVector( playerid, fVX, fVY, fVZ );
  220.         new str[ 256 ];
  221.         format( str, sizeof str, "XVec: %f YVec: %f ZVec: %f", fVX, fVY, fVZ );
  222.         SendClientMessage( playerid, 0xFFFFFF, str );
  223.         return 1;
  224.     }*/
  225.     return 0;
  226. }
  227. public CreatePlayerChopper( gunnerid, npcname[  ], script[  ], length, pilotid )
  228. {
  229.     switch( pilotid )
  230.     {
  231.         case -1:
  232.         {
  233.             if( !IsPlayerConnected( gunnerid ) ) return 0;
  234.             ConnectNPC( npcname, script );
  235.             format( pBotName[ gunnerid ], sizeof pBotName[  ], npcname );
  236.             SendClientMessage( gunnerid, 0xFFFFFFFF, "Verbündeter Apache ist unterwegs!" );
  237.             PlayerInfo[ gunnerid ][ HasChopper ] = true;
  238.             GetPlayerPos( gunnerid, PlayerInfo[ gunnerid ][ SaveX ], PlayerInfo[ gunnerid ][ SaveY ], PlayerInfo[ gunnerid ][ SaveZ ] );
  239.             GetPlayerFacingAngle( gunnerid, PlayerInfo[ gunnerid ][ SaveR ] );
  240.             new str[ 32 ];
  241.             PlayerInfo[ gunnerid ][ chpTime ] = length;
  242.             format( str, sizeof str, "%d:%dmin" , length / 60, length - 60 * ( length / 60 ) );
  243.             PlayerTextDrawSetString( gunnerid, PlayerInfo[ gunnerid ][ TimerDraw ], str );
  244.             return 1;
  245.         }
  246.         default:
  247.         {
  248.             if( !IsPlayerConnected( pilotid ) ) return 0;
  249.             if( !IsPlayerConnected( gunnerid ) ) return 0;
  250.             PlayerInfo[ gunnerid ][ ChopperID ] = pilotid;
  251.             obj[ pilotid ] = CreateObject( 330, 0, 0, 235, 0 , 0, 0, 0.0 );
  252.             PlayerInfo[ pilotid ][ chopper ] = CreateVehicle( 425, 0, 0, 0, 0, 0, 0, -1 );
  253.             AttachObjectToVehicle( obj[ pilotid ], PlayerInfo[ pilotid ][ chopper ], 0, 4.45, -1.2, 0, 0, 0 );
  254.            
  255.             PutPlayerInVehicle( pilotid, PlayerInfo[ pilotid ][ chopper ], 0 );
  256.             PutPlayerInVehicle( gunnerid, PlayerInfo[ pilotid ][ chopper ], 1 );
  257.            
  258.             PlayerInfo[ gunnerid ][ chpTime ] = length;
  259.            
  260.             GetPlayerPos( gunnerid, PlayerInfo[ gunnerid ][ SaveX ], PlayerInfo[ gunnerid ][ SaveY ], PlayerInfo[ gunnerid ][ SaveZ ] );
  261.             GetPlayerFacingAngle( gunnerid, PlayerInfo[ gunnerid ][ SaveR ] );
  262.            
  263.             GetPlayerPos( pilotid, PlayerInfo[ pilotid ][ SaveX ], PlayerInfo[ pilotid ][ SaveY ], PlayerInfo[ pilotid ][ SaveZ ] );
  264.             GetPlayerFacingAngle( pilotid, PlayerInfo[ pilotid ][ SaveR ] );
  265.            
  266.             new str[ 32 ];
  267.             format( str, sizeof str, "%d:%dmin" , length / 60, length - 60 * ( length / 60 ) );
  268.             PlayerTextDrawSetString( gunnerid, PlayerInfo[ gunnerid ][ TimerDraw ], str );
  269.             PlayerTextDrawSetString( pilotid, PlayerInfo[ pilotid ][ TimerDraw ], str );
  270.            
  271.             PlayerInfo[ gunnerid ][ timer ] = SetTimerEx( "ChopperHandler", 500, 1, "dd", gunnerid, 0 );
  272.            
  273.             AttachCameraToObject( gunnerid, obj[ pilotid ] );
  274.            
  275.             TextDrawShowForPlayer( gunnerid, TextDraw[ 0 ] );
  276.             TextDrawShowForPlayer( gunnerid, TextDraw[ 1 ] );
  277.             TextDrawShowForPlayer( gunnerid, TextDraw[ 2 ] );
  278.            
  279.             PlayerTextDrawShow( gunnerid, AmmoTDraw[ gunnerid ] );
  280.             PlayerTextDrawShow( gunnerid, PlayerInfo[ gunnerid ][ TimerDraw ] );
  281.             PlayerTextDrawShow( pilotid, PlayerInfo[ pilotid ][ TimerDraw ] );
  282.            
  283.             TextDrawShowForPlayer( gunnerid, TextDraw[ 4 ] );
  284.             TextDrawShowForPlayer( gunnerid, TextDraw[ 5 ] );
  285.             TextDrawShowForPlayer( gunnerid, TextDraw[ 6 ] );
  286.             return 1;
  287.         }
  288.     }
  289.     return 0;
  290. }
  291. public OnPlayerDisconnect( playerid )
  292. {
  293.     if( PlayerInfo[ playerid ][ HasChopper ] )
  294.     {
  295.         if( IsPlayerNPC( PlayerInfo[ playerid ][ ChopperID ] ) )
  296.             Kick( PlayerInfo[ playerid ][ ChopperID ] );
  297.     }
  298.     if( PlayerInfo[ playerid ][ HasChopper ] )
  299.         ChopperHandler( playerid, 1 );
  300.     PlayerInfo[ playerid ][ HasChopper ] = false;
  301.     for( new i = 0; i < MAX_PLAYERS; i ++ )
  302.     {
  303.         if( !IsPlayerConnected( i ) || !PlayerInfo[ i ][ HasChopper ] ) continue;
  304.         if( PlayerInfo[ i ][ ChopperID ] == playerid)
  305.             return ChopperHandler( playerid, 1 );
  306.     }
  307.     return 0;
  308. }
  309. public OnPlayerKeyStateChange( playerid, newkeys, oldkeys )
  310. {
  311.     if( newkeys & KEY_FIRE && PlayerInfo[ playerid ][ HasChopper ] )  OnPlayerCommandText( playerid, SHOOT );
  312.     return 0;
  313. }
  314. public OnObjectMoved( objectid )
  315. {
  316.     if( !Rocket[ objectid ] ) return 1;
  317.     KillTimer( Timer[ objectid ] );
  318.     Timer[ objectid ] = -1;
  319.     new
  320.         Float:x, Float:y, Float:z, Float:Dist;
  321.     GetObjectPos( objectid, x, y, z );
  322.     CreateExplosion( x, y, z, 0, 10.0 );
  323.     for( new i = 0; i < MAX_PLAYERS; i ++ )
  324.     {
  325.         if( !IsPlayerConnected( i ) ) continue;
  326.         Dist = GetPlayerDistanceFromPoint( i, x, y, z);
  327.         if( Dist < 10.0 )
  328.         {
  329.             new Float:HP,Float:NewHP;
  330.             GetPlayerHealth( i, HP );
  331.             NewHP = HP-150+Dist*10;
  332.             if( NewHP >= HP )
  333.             {
  334.                 TogglePlayerSpectating( i, 1 );
  335.                 TogglePlayerSpectating( i, 0 );
  336.                 CallRemoteFunction( "OnPlayerDeath", "ddd", i, objChopper[ objectid ], 51 );
  337.             }
  338.             else SetPlayerHealth( i, NewHP );
  339.         }
  340.     }
  341.     Rocket[ objectid ] = false;
  342.     DestroyObject( objectid );
  343.     return 0;
  344. }
  345. forward CheckObj( objid );
  346. public CheckObj( objid )
  347. {
  348.     if( !Rocket[ objid ] ) return 1;
  349.     new
  350.         Float:x, Float:y, Float:z, Float:Z, Float:Dist;
  351.     GetObjectPos( objid, x, y, z );
  352.     MapAndreas_FindZ_For2DCoord( x, y, Z );
  353.     if( Z > z || ( z - Z ) < 5.0 )
  354.     {
  355.         KillTimer( Timer[ objid ] );
  356.         Timer[ objid ] = -1;
  357.         CreateExplosion( x, y, z, 0, 10.0 );
  358.         for( new i = 0; i < MAX_PLAYERS; i ++ )
  359.         {
  360.             if( !IsPlayerConnected( i ) ) continue;
  361.             Dist = GetPlayerDistanceFromPoint( i, x, y, z);
  362.             if( Dist < 10.0 )
  363.             {
  364.                 new Float:HP,Float:NewHP;
  365.                 GetPlayerHealth( i, HP );
  366.                 NewHP = HP-150+Dist*10;
  367.                 if( NewHP >= HP )
  368.                 {
  369.                     TogglePlayerSpectating( i, 1 );
  370.                     TogglePlayerSpectating( i, 0 );
  371.                     CallRemoteFunction( "OnPlayerDeath", "ddd", i, objChopper[ objid ], 51 );
  372.                 }
  373.                 else SetPlayerHealth( i, NewHP );
  374.             }
  375.         }
  376.         Rocket[ objid ] = false;
  377.         DestroyObject( objid );
  378.     }
  379.     return 1;
  380. }
  381. public ChopperHandler( gunnerid, func )
  382. {
  383.     switch( func )
  384.     {
  385.         case 0:
  386.         {
  387.             if( !IsPlayerConnected( gunnerid ) ) return KillTimer( PlayerInfo[ gunnerid ][ timer ] );
  388.             if( !IsPlayerConnected( PlayerInfo[ gunnerid ][ ChopperID ] ) ) return KillTimer( PlayerInfo[ gunnerid ][ timer ] );
  389.             PlayerInfo[ gunnerid ][ change ] = PlayerInfo[ gunnerid ][ change ] ? false : true;
  390.             if( PlayerInfo[ gunnerid ][ change ] )
  391.             {
  392.                 PlayerInfo[ gunnerid ][ chpTime ] -- ;
  393.                 new str[32];
  394.                 format( str, sizeof str, "%d:%02dmin" , PlayerInfo[ gunnerid ][ chpTime ] / 60,
  395.                 PlayerInfo[ gunnerid ][ chpTime ] - 60 * ( PlayerInfo[ gunnerid ][ chpTime ] / 60 ) );
  396.                 PlayerTextDrawSetString( gunnerid, PlayerInfo[ gunnerid ][ TimerDraw ], str);
  397.                 PlayerTextDrawSetString( PlayerInfo[ gunnerid ][ ChopperID ],PlayerInfo[ PlayerInfo[ gunnerid ][ ChopperID ] ][ TimerDraw ], str );
  398.             }
  399.             if(PlayerInfo[ gunnerid ][ chpTime ] < 30)
  400.             {
  401.                 if( PlayerInfo[ gunnerid ][ change ] )
  402.                 {
  403.                     PlayerTextDrawHide( gunnerid, PlayerInfo[ gunnerid ][ TimerDraw ] );
  404.                     if( !IsPlayerNPC( PlayerInfo[ gunnerid ][ ChopperID ] ) )
  405.                         PlayerTextDrawHide( PlayerInfo[ gunnerid ][ ChopperID ], PlayerInfo[ PlayerInfo[ gunnerid ][ ChopperID ] ][ TimerDraw ] );
  406.                 }
  407.                 else
  408.                 {
  409.                     PlayerTextDrawShow( gunnerid, PlayerInfo[ gunnerid ][ TimerDraw ] );
  410.                     if( !IsPlayerNPC( PlayerInfo[ gunnerid ][ ChopperID ] ) )
  411.                         PlayerTextDrawShow( PlayerInfo[ gunnerid ][ ChopperID ], PlayerInfo[ PlayerInfo[ gunnerid ][ ChopperID ] ][ TimerDraw ] );
  412.                 }
  413.             }
  414.             if(PlayerInfo[ gunnerid ][ chpTime ] <= 0) KillTimer( PlayerInfo[ gunnerid ][ timer ] ), ChopperHandler( gunnerid, 1 );
  415.         }
  416.         case 1:
  417.         {
  418.             PlayerInfo[ gunnerid ][ HasChopper ] = false;
  419.             new ID = GetPlayerID( pBotName[ gunnerid ] );
  420.             if( IsPlayerNPC( ID ) )
  421.             {
  422.                 Kick( ID );
  423.                 ammo[ ID ] = 0;
  424.                 DestroyVehicle( PlayerInfo[ ID ][ chopper ] );
  425.                 DestroyObject( obj[ ID ] );
  426.                 obj[ ID ] = -1;
  427.             }
  428.             else
  429.             {
  430.                 ammo[ PlayerInfo[ gunnerid ][ ChopperID ] ] = 0;
  431.                 DestroyVehicle( PlayerInfo[ PlayerInfo[ gunnerid ][ ChopperID ] ][ chopper ] );
  432.                 DestroyObject( obj[ PlayerInfo[ gunnerid ][ ChopperID ] ] );
  433.                 obj[ PlayerInfo[ gunnerid ][ ChopperID ] ] = -1;
  434.             }
  435.             SetCameraBehindPlayer( gunnerid );
  436.            
  437.             SetPlayerPos( gunnerid, PlayerInfo[ gunnerid ][ SaveX ], PlayerInfo[ gunnerid ][ SaveY ], PlayerInfo[ gunnerid ][ SaveZ ] );
  438.             SetPlayerFacingAngle( gunnerid, PlayerInfo[ gunnerid ][ SaveR ] );
  439.            
  440.             SetPlayerPos( PlayerInfo[ gunnerid ][ ChopperID ],
  441.                 PlayerInfo[ PlayerInfo[ gunnerid ][ ChopperID ] ][ SaveX ],
  442.                 PlayerInfo[ PlayerInfo[ gunnerid ][ ChopperID ] ][ SaveY ],
  443.                 PlayerInfo[ PlayerInfo[ gunnerid ][ ChopperID ] ][ SaveZ ] );
  444.             SetPlayerFacingAngle( PlayerInfo[ gunnerid ][ ChopperID ], PlayerInfo[ PlayerInfo[ gunnerid ][ ChopperID ] ][ SaveR ] );
  445.            
  446.             TextDrawHideForPlayer( gunnerid, TextDraw[ 0 ] );
  447.             TextDrawHideForPlayer( gunnerid, TextDraw[ 1 ] );
  448.             TextDrawHideForPlayer( gunnerid, TextDraw[ 2 ] );
  449.             TextDrawHideForPlayer( gunnerid, TextDraw[ 4 ] );
  450.             TextDrawHideForPlayer( gunnerid, TextDraw[ 5 ] );
  451.             TextDrawHideForPlayer( gunnerid, TextDraw[ 6 ] );
  452.            
  453.             PlayerTextDrawHide( gunnerid, AmmoTDraw[ gunnerid ] );
  454.             PlayerTextDrawHide( gunnerid, PlayerInfo[ gunnerid ][ TimerDraw ] );
  455.             PlayerTextDrawHide( PlayerInfo[ gunnerid ][ ChopperID ], PlayerInfo[ PlayerInfo[ gunnerid ][ ChopperID ] ][ TimerDraw ] );
  456.             PlayerInfo[ gunnerid ][ ChopperID ] = -1;
  457.             return 1;
  458.         }
  459.     }
  460.     return 1;
  461. }
  462. public OnPlayerConnect( playerid )
  463. {
  464.     if( !IsPlayerNPC( playerid) )
  465.     {
  466.         GetPlayerName( playerid, pName[ playerid ], MAX_PLAYER_NAME );
  467.         AmmoTDraw[ playerid ] = CreatePlayerTextDraw( playerid, 514.000000, 397.000000, "!!!!!!!!!!!!!!!!!!!!~n~!!!!!!!!!!!!!!!!!!!!" );
  468.         PlayerTextDrawBackgroundColor( playerid, AmmoTDraw[ playerid ], 255 );
  469.         PlayerTextDrawFont( playerid, AmmoTDraw[ playerid ], 1 );
  470.         PlayerTextDrawLetterSize( playerid, AmmoTDraw[ playerid ], 0.500000, 1.000000 );
  471.         PlayerTextDrawColor( playerid, AmmoTDraw[ playerid ], -1 );
  472.         PlayerTextDrawSetOutline( playerid, AmmoTDraw[ playerid ], 0 );
  473.         PlayerTextDrawSetProportional( playerid, AmmoTDraw[ playerid ], 1 );
  474.         PlayerTextDrawSetShadow( playerid, AmmoTDraw[ playerid ], 1 );
  475.  
  476.         PlayerInfo[ playerid ][ TimerDraw ] = CreatePlayerTextDraw( playerid, 21.000000, 400.000000, "1:30min");
  477.         PlayerTextDrawBackgroundColor( playerid, PlayerInfo[ playerid ][ TimerDraw ], 255);
  478.         PlayerTextDrawFont( playerid, PlayerInfo[ playerid ][ TimerDraw ], 1);
  479.         PlayerTextDrawLetterSize( playerid, PlayerInfo[ playerid ][ TimerDraw ], 0.500000, 1.000000);
  480.         PlayerTextDrawColor( playerid, PlayerInfo[ playerid ][ TimerDraw ], -1);
  481.         PlayerTextDrawSetOutline( playerid, PlayerInfo[ playerid ][ TimerDraw ], 0);
  482.         PlayerTextDrawSetProportional( playerid, PlayerInfo[ playerid ][ TimerDraw ], 1);
  483.         PlayerTextDrawSetShadow( playerid, PlayerInfo[ playerid ][ TimerDraw ], 0);
  484.     }
  485.     else
  486.     {
  487.         for( new i = 0; i < MAX_PLAYERS; i ++ )
  488.         {
  489.             if( !IsPlayerConnected( i ) ) continue;
  490.             if( !strcmp( pName[ playerid ], pBotName[ i ] ) && pBotName[ i ][ 0 ] )
  491.             {
  492.                 PlayerInfo[ i ][ ChopperID ] = playerid;
  493.                 obj[ playerid ] = CreateObject( 330, 0, 0, 235, 0 , 0, 0, 0.0 );
  494.                 PlayerInfo[ playerid ][ chopper ] = CreateVehicle( 425, 0, 0, 235, 0, 0, 0, -1 );
  495.                 AttachObjectToVehicle( obj[ playerid ], PlayerInfo[ playerid ][ chopper ], 0, 4.45, -1.2, 0, 0, 0 );
  496.                 PutPlayerInVehicle( playerid, PlayerInfo[ playerid ][ chopper ], 0 );
  497.                 PutPlayerInVehicle( i, PlayerInfo[ playerid ][ chopper ], 1 );
  498.                 PlayerInfo[ i ][ timer ] = SetTimerEx( "ChopperHandler", 500, 1, "dd", i, 0 );
  499.                 AttachCameraToObject( i, obj[ playerid ] );
  500.                 TextDrawShowForPlayer( i, TextDraw[ 0 ] );
  501.                 TextDrawShowForPlayer( i, TextDraw[ 1 ] );
  502.                 TextDrawShowForPlayer( i, TextDraw[ 2 ] );
  503.                 PlayerTextDrawShow( i, AmmoTDraw[ i ] );
  504.                 PlayerTextDrawShow( i, PlayerInfo[ i ][ TimerDraw ] );
  505.                 TextDrawShowForPlayer( i, TextDraw[ 4 ] );
  506.                 TextDrawShowForPlayer( i, TextDraw[ 5 ] );
  507.                 TextDrawShowForPlayer( i, TextDraw[ 6 ] );
  508.                 break;
  509.             }
  510.         }
  511.     }
  512.     return 0;
  513. }
  514. public OnPlayerDeath( playerid, killerid, reason)
  515. {
  516.     if( PlayerInfo[ playerid ][ HasChopper ] )
  517.         ChopperHandler( playerid, 1 );
  518.     for( new i = 0; i < MAX_PLAYERS; i ++ )
  519.     {
  520.         if( !IsPlayerConnected( i ) || !PlayerInfo[ i ][ HasChopper ] ) continue;
  521.         if( PlayerInfo[ i ][ ChopperID ] == playerid)
  522.             return ChopperHandler( playerid, 1 );
  523.     }
  524.     return 0;
  525. }
  526. GetPlayerID( playername[  ] )
  527. {
  528.     for( new i = 0; i < MAX_PLAYERS; i++ )
  529.     {
  530.         if( !IsPlayerConnected( i ) ) continue;
  531.         if( !strcmp( playername, pName[ i ] ) ) return i;
  532.     }
  533.     return -1;
  534. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement