#include a_samp #include mapandreas #undef MAX_PLAYERS #define MAX_PLAYERS 100 // Serverslots beachten! #define AMMO 50 #define SHOOT "/youdontknowme" new vehiclepid[ MAX_VEHICLES ] = -1; new playerchopper[ MAX_PLAYERS ] = 0; new obj[ MAX_VEHICLES ] = -1; new objChopper[ MAX_OBJECTS ] = -1; new Timer[ MAX_OBJECTS ]; new bool:Rocket[ MAX_OBJECTS ]; new Text:TextDraw[ 7 ]; new ammo[ MAX_PLAYERS ] = 0; new pName[ MAX_PLAYERS ][ MAX_PLAYER_NAME ]; new PlayerText:AmmoTDraw[ MAX_PLAYERS ]; public OnFilterScriptInit( ) { MapAndreas_Init( MAP_ANDREAS_MODE_FULL ); TextDraw[ 0 ] = TextDrawCreate( -1.000000, 2.000000, "w" ); TextDrawBackgroundColor( TextDraw[ 0 ], 255 ); TextDrawFont( TextDraw[ 0 ], 1 ); TextDrawLetterSize( TextDraw[ 0 ], 0.019998, 51.299999 ); TextDrawColor( TextDraw[ 0 ], -1 ); TextDrawSetOutline( TextDraw[ 0 ], 0 ); TextDrawSetProportional( TextDraw[ 0 ], 1 ); TextDrawSetShadow( TextDraw[ 0 ], 1 ); TextDrawUseBox( TextDraw[ 0 ], 1 ); TextDrawBoxColor( TextDraw[ 0 ], 100 ); TextDrawTextSize( TextDraw[ 0 ], 642.000000, 30.000000 ); TextDraw[ 1 ] = TextDrawCreate( 489.000000, 6.000000, "Uplink: 29.28.54#~n~ 10x60 MHZ" ); TextDrawBackgroundColor( TextDraw[ 1 ], 255 ); TextDrawFont( TextDraw[ 1 ], 1 ); TextDrawLetterSize( TextDraw[ 1 ], 0.500000, 1.000000 ); TextDrawColor( TextDraw[ 1 ], -1 ); TextDrawSetOutline( TextDraw[ 1 ], 0 ); TextDrawSetProportional( TextDraw[ 1 ], 1 ); TextDrawSetShadow( TextDraw[ 1 ], 1 ); TextDraw[ 2 ] = TextDrawCreate( 601.000000, 25.000000, "Lazer: armed" ); TextDrawBackgroundColor( TextDraw[ 2 ], 255 ); TextDrawFont( TextDraw[ 2 ], 1 ); TextDrawLetterSize( TextDraw[ 2 ], 0.170000, 1.000000 ); TextDrawColor( TextDraw[ 2 ], -1 ); TextDrawSetOutline( TextDraw[ 2 ], 0 ); TextDrawSetProportional( TextDraw[ 2 ], 1 ); TextDrawSetShadow( TextDraw[ 2 ], 1 ); TextDraw[ 4 ] = TextDrawCreate( 308.000000, 218.000000, "- -" ); TextDrawBackgroundColor( TextDraw[ 4 ], 255 ); TextDrawFont( TextDraw[ 4 ], 1 ); TextDrawLetterSize( TextDraw[ 4 ], 0.500000, 1.000000 ); TextDrawColor( TextDraw[ 4 ], -1 ); TextDrawSetOutline( TextDraw[ 4 ], 0 ); TextDrawSetProportional( TextDraw[ 4 ], 1 ); TextDrawSetShadow( TextDraw[ 4 ], 1 ); TextDraw[ 5 ] = TextDrawCreate( 321.750000, 210.000000, "!~n~~n~!" ); TextDrawBackgroundColor( TextDraw[ 5 ], 255 ); TextDrawFont( TextDraw[ 5 ], 1 ); TextDrawLetterSize( TextDraw[ 5 ], 0.180000, 1.000000 ); TextDrawColor( TextDraw[ 5 ], -1 ); TextDrawSetOutline( TextDraw[ 5 ], 0 ); TextDrawSetProportional( TextDraw[ 5 ], 1 ); TextDrawSetShadow( TextDraw[ 5 ], 1 ); TextDraw[ 6 ] = TextDrawCreate( 222.000000, 90.000000, "CAMERA: AH64-APACHE#" ); TextDrawBackgroundColor( TextDraw[ 6 ], 255 ); TextDrawFont( TextDraw[ 6 ], 1 ); TextDrawLetterSize( TextDraw[ 6 ], 0.500000, 1.000000 ); TextDrawColor( TextDraw[ 6 ], -1 ); TextDrawSetOutline( TextDraw[ 6 ], 0 ); TextDrawSetProportional( TextDraw[ 6 ], 1 ); TextDrawSetShadow( TextDraw[ 6 ], 0 ); for( new i = 0; i < MAX_PLAYERS; i ++ ) { if( !IsPlayerConnected( i ) ) continue; GetPlayerName( i, pName[ i ], MAX_PLAYER_NAME ); AmmoTDraw[ i ] = CreatePlayerTextDraw( i, 514.000000, 397.000000, "!!!!!!!!!!!!!!!!!!!!~n~!!!!!!!!!!!!!!!!!!!!" ); PlayerTextDrawBackgroundColor( i, AmmoTDraw[ i ], 255 ); PlayerTextDrawFont( i, AmmoTDraw[ i ], 1 ); PlayerTextDrawLetterSize( i, AmmoTDraw[ i ], 0.500000, 1.000000 ); PlayerTextDrawColor( i, AmmoTDraw[ i ], -1 ); PlayerTextDrawSetOutline( i, AmmoTDraw[ i ], 0 ); PlayerTextDrawSetProportional( i, AmmoTDraw[ i ], 1 ); PlayerTextDrawSetShadow( i, AmmoTDraw[ i ], 1 ); } for( new i = 0; i < MAX_VEHICLES; i ++ ) { vehiclepid[ i ] = -1; } } public OnFilterScriptExit( ) { for( new i = 0 ; i < MAX_PLAYERS ; i ++ ) { if( !IsPlayerConnected( i ) ) continue; PlayerTextDrawDestroy( i, AmmoTDraw[ i ] ); } TextDrawHideForAll( TextDraw[ 0 ] ); TextDrawDestroy( TextDraw[ 0 ] ); TextDrawHideForAll( TextDraw[ 1 ] ); TextDrawDestroy( TextDraw[ 1 ] ); TextDrawHideForAll( TextDraw[ 2 ] ); TextDrawDestroy( TextDraw[ 2 ] ); TextDrawHideForAll( TextDraw[ 3 ] ); TextDrawDestroy( TextDraw[ 3 ] ); TextDrawHideForAll( TextDraw[ 4 ] ); TextDrawDestroy( TextDraw[ 4 ] ); TextDrawHideForAll( TextDraw[ 5 ] ); TextDrawDestroy( TextDraw[ 5 ] ); TextDrawHideForAll( TextDraw[ 6 ] ); TextDrawDestroy( TextDraw[ 6 ] ); return 1; } public OnPlayerCommandText( playerid, cmdtext[ ] ) { if ( !strcmp( cmdtext, SHOOT ) ) { ammo[ playerchopper[ playerid ] ]++; new str[ 64 ]; format( str, sizeof str, "~b~" ); for( new i = 0 ; i < AMMO ; i++ ) { if( i == AMMO/2 ) { format( str, sizeof str, ( ( ammo[ playerchopper[ playerid ] ] != AMMO/2 ) ? ( "%s~n~!" ) : ( "%s~n~~w~!" ) ), str ); continue; } if( i == ammo[ playerchopper[ playerid ] ] ) { format( str, sizeof str, "%s~w~!", str ); continue; } if( i < ammo[ playerchopper[ playerid ] ] ) { format( str, sizeof str, "%s!", str ); continue; } format( str, sizeof str, "%s!", str ); } PlayerTextDrawSetString( playerid, AmmoTDraw[ playerid ], str ); new Float:fPX, Float:fPY, Float:fPZ, Float:fVX, Float:fVY, Float:fVZ, Float:object_x, Float:object_y, Float:object_z; new Float:fScale = 500; GetPlayerCameraPos( playerid, fPX, fPY, fPZ ); GetPlayerCameraFrontVector( playerid, fVX, fVY, fVZ ); object_x = fPX + floatmul( fVX, fScale ); object_y = fPY + floatmul( fVY, fScale ); object_z = fPZ + floatmul( fVZ, fScale ); new obj1 = CreateObject( 345, fPX, fPY, fPZ, asin( fVZ ), 0.0, 360 - atan2( fVX, fVY ) ); Rocket[ obj1 ] = true; objChopper[ obj1 ] = playerid; MoveObject( obj1, object_x, object_y, object_z, 75.0 ); Timer[ obj1 ] = SetTimerEx( "CheckObj", 100, 1, "d", obj1 ); if( ammo[ playerchopper[ playerid ] ] >= AMMO ) { ammo[ playerchopper[ playerid ] ] = 0; } return 1; } return 0; } public OnPlayerEnterVehicle( playerid, vehicleid, ispassenger ) { if( ispassenger == 1 && GetVehicleModel( vehicleid ) == 425 && vehiclepid[ vehicleid ] == -1 ) { obj[ vehicleid ] = CreateObject( 330, 0, 0, 235, 0 , 0, 0, 0.0 ); vehiclepid[ vehicleid ] = playerid; playerchopper[ playerid ] = vehicleid; AttachObjectToVehicle( obj[ vehicleid ], vehicleid, 0, 4.45, -1.2, 0, 0, 0 ); TogglePlayerSpectating( playerid,1 ); PlayerSpectateVehicle( playerid,vehicleid,SPECTATE_MODE_NORMAL ); //PutPlayerInVehicle( playerid, vehicleid, 1 ); AttachCameraToObject( playerid, obj[ vehicleid ] ); TextDrawShowForPlayer( playerid, TextDraw[ 0 ] ); TextDrawShowForPlayer( playerid, TextDraw[ 1 ] ); TextDrawShowForPlayer( playerid, TextDraw[ 2 ] ); PlayerTextDrawShow( playerid, AmmoTDraw[ playerid ] ); TextDrawShowForPlayer( playerid, TextDraw[ 4 ] ); TextDrawShowForPlayer( playerid, TextDraw[ 5 ] ); TextDrawShowForPlayer( playerid, TextDraw[ 6 ] ); } return 1; } public OnVehicleDeath( vehicleid ) { if( vehiclepid[ vehicleid ] != -1 ) { SetCameraBehindPlayer( vehiclepid[ vehicleid ] ); SendClientMessage( vehiclepid[ vehicleid ],-1, "Der Helikopter ist abgestürtzt!" ); CallRemoteFunction( "OnPlayerDeath","ddd",vehiclepid[ vehicleid ],-1,-1 ); TogglePlayerSpectating( vehiclepid[ vehicleid ],0 ); DestroyObject( obj[ vehicleid ] ); playerchopper[ vehiclepid[ vehicleid ] ] = 0; vehiclepid[ vehicleid ] = -1; TextDrawHideForPlayer( vehiclepid[ vehicleid ], TextDraw[ 0 ] ); TextDrawHideForPlayer( vehiclepid[ vehicleid ], TextDraw[ 1 ] ); TextDrawHideForPlayer( vehiclepid[ vehicleid ], TextDraw[ 2 ] ); PlayerTextDrawHide( vehiclepid[ vehicleid ], AmmoTDraw[ vehiclepid[ vehicleid ] ] ); TextDrawHideForPlayer( vehiclepid[ vehicleid ], TextDraw[ 4 ] ); TextDrawHideForPlayer( vehiclepid[ vehicleid ], TextDraw[ 5 ] ); TextDrawHideForPlayer( vehiclepid[ vehicleid ], TextDraw[ 6 ] ); } } public OnPlayerDisconnect( playerid ) { if( playerchopper[ playerid ] != 0 ) vehiclepid[ playerchopper[ playerid ] ] = -1; playerchopper[ playerid ] = 0; PlayerTextDrawDestroy( playerid,AmmoTDraw[ playerid ] ); return 0; } public OnPlayerKeyStateChange( playerid, newkeys, oldkeys ) { if( newkeys & KEY_FIRE && playerchopper[ playerid ] != 0 && GetVehicleModel( playerchopper[ playerid ] ) == 425 ) OnPlayerCommandText( playerid, SHOOT ); if( newkeys & 16 && playerchopper[ playerid ] != 0 && GetVehicleModel( playerchopper[ playerid ] ) == 425 ) { new Float:x,Float:y,Float:z; GetVehiclePos( playerchopper[ playerid ],x,y,z ); TogglePlayerSpectating( playerid,0 ); SetCameraBehindPlayer( playerid ); SetPlayerPos( playerid,x+2,y+2,z ); DestroyObject( obj[ playerchopper[ playerid ] ] ); vehiclepid[ playerchopper[ playerid ] ] = -1; playerchopper[ playerid ] = 0; TextDrawHideForPlayer( playerid, TextDraw[ 0 ] ); TextDrawHideForPlayer( playerid, TextDraw[ 1 ] ); TextDrawHideForPlayer( playerid, TextDraw[ 2 ] ); PlayerTextDrawHide( playerid, AmmoTDraw[ playerid ] ); TextDrawHideForPlayer( playerid, TextDraw[ 4 ] ); TextDrawHideForPlayer( playerid, TextDraw[ 5 ] ); TextDrawHideForPlayer( playerid, TextDraw[ 6 ] ); } return 0; } public OnObjectMoved( objectid ) { if( !Rocket[ objectid ] ) return 1; KillTimer( Timer[ objectid ] ); Timer[ objectid ] = -1; new Float:x, Float:y, Float:z, Float:Dist; GetObjectPos( objectid, x, y, z ); CreateExplosion( x, y, z, 0, 10.0 ); for( new i = 0; i < MAX_PLAYERS; i ++ ) { if( !IsPlayerConnected( i ) ) continue; Dist = GetPlayerDistanceFromPoint( i, x, y, z ); if( Dist < 10.0 ) { new Float:HP,Float:NewHP; GetPlayerHealth( i, HP ); NewHP = HP-150+Dist*10; if( NewHP >= HP ) { TogglePlayerSpectating( i, 1 ); TogglePlayerSpectating( i, 0 ); CallRemoteFunction( "OnPlayerDeath", "ddd", i, objChopper[ objectid ], 51 ); } else SetPlayerHealth( i, NewHP ); } } Rocket[ objectid ] = false; DestroyObject( objectid ); return 0; } forward CheckObj( objid ); public CheckObj( objid ) { if( !Rocket[ objid ] ) return 1; new Float:x, Float:y, Float:z, Float:Z, Float:Dist; GetObjectPos( objid, x, y, z ); MapAndreas_FindZ_For2DCoord( x, y, Z ); if( Z > z || ( z - Z ) < 5.0 ) { KillTimer( Timer[ objid ] ); Timer[ objid ] = -1; CreateExplosion( x, y, z, 0, 10.0 ); for( new i = 0; i < MAX_PLAYERS; i ++ ) { if( !IsPlayerConnected( i ) ) continue; Dist = GetPlayerDistanceFromPoint( i, x, y, z ); if( Dist < 10.0 ) { new Float:HP,Float:NewHP; GetPlayerHealth( i, HP ); NewHP = HP-150+Dist*10; if( NewHP >= HP ) { TogglePlayerSpectating( i, 1 ); TogglePlayerSpectating( i, 0 ); CallRemoteFunction( "OnPlayerDeath", "ddd", i, objChopper[ objid ], 51 ); } else SetPlayerHealth( i, NewHP ); } } Rocket[ objid ] = false; DestroyObject( objid ); } return 1; } public OnPlayerConnect( playerid ) { if( !IsPlayerNPC( playerid ) ) { playerchopper[ playerid ] = 0; GetPlayerName( playerid, pName[ playerid ], MAX_PLAYER_NAME ); AmmoTDraw[ playerid ] = CreatePlayerTextDraw( playerid, 514.000000, 397.000000, "!!!!!!!!!!!!!!!!!!!!~n~!!!!!!!!!!!!!!!!!!!!" ); PlayerTextDrawBackgroundColor( playerid, AmmoTDraw[ playerid ], 255 ); PlayerTextDrawFont( playerid, AmmoTDraw[ playerid ], 1 ); PlayerTextDrawLetterSize( playerid, AmmoTDraw[ playerid ], 0.500000, 1.000000 ); PlayerTextDrawColor( playerid, AmmoTDraw[ playerid ], -1 ); PlayerTextDrawSetOutline( playerid, AmmoTDraw[ playerid ], 0 ); PlayerTextDrawSetProportional( playerid, AmmoTDraw[ playerid ], 1 ); PlayerTextDrawSetShadow( playerid, AmmoTDraw[ playerid ], 1 ); } return 0; }