Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* FS AirStrike made by Marricio */
- #include a_samp
- #include zcmd
- #define STRIKE_TIMER 120 // time to wait to request another air strike, must be higher than 30
- // to work correctly
- forward StrikeTimeTimer( playerid );
- forward SecondStrike( Float:x, Float:y, Float:z );
- new RequestingStrike[MAX_PLAYERS];
- new StrikeObject[MAX_PLAYERS];
- new StrikeTime[MAX_PLAYERS];
- new fs_timer[MAX_PLAYERS];
- public OnPlayerConnect( playerid )
- {
- /* Reset variable values */
- StrikeObject[playerid] = -1;
- StrikeTime[playerid] = -1;
- }
- public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
- {
- if( RequestingStrike[playerid] == 1 )
- {
- SendClientMessage( playerid, -1, "You've succesfully requested an airstrike." );
- if( IsValidObject( StrikeObject[playerid] ) )
- DestroyObject( StrikeObject[playerid] );
- StrikeObject[playerid] = CreateObject( 3786, fX, fY, fZ+300, 0, 270, 0, 0 );
- MoveObject( StrikeObject[playerid], fX, fY, fZ, 70 );
- RequestingStrike[playerid] = 0;
- }
- return 1;
- }
- public OnObjectMoved( objectid )
- {
- new object = -1;
- for( new i = 0; i != MAX_PLAYERS; i++ )
- {
- if( objectid == StrikeObject[i] )
- {
- object = objectid;
- }
- }
- if( object != -1 )
- {
- new Float:objectPos[3];
- GetObjectPos( object, objectPos[0], objectPos[1], objectPos[2] );
- for( new created = 0; created < 11 ; created += 1 )
- {
- new Float:explosionPos[2];
- explosionPos[0] = objectPos[0]+random( 30 )-random( 6 );
- explosionPos[1] = objectPos[1]+random( 30 )-random( 6 );
- CreateExplosion( explosionPos[0], explosionPos[1], objectPos[2], 0, 50.0 );
- }
- SetTimerEx( "SecondStrike", 1000, false, "fff", objectPos[0], objectPos[1], objectPos[2] );
- DestroyObject( object );
- }
- }
- public SecondStrike( Float:x, Float:y, Float:z )
- {
- for( new created = 0; created < 11 ; created += 1 )
- {
- new Float:explosionPos[2];
- explosionPos[0] = x+random( 30 )-random( 6 );
- explosionPos[1] = y+random( 30 )-random( 6 );
- CreateExplosion( explosionPos[0], explosionPos[1], z, 0, 50.0 );
- }
- return 1;
- }
- public StrikeTimeTimer( playerid )
- {
- if( StrikeTime[playerid] != 0 && StrikeTime[playerid] != -1)
- {
- StrikeTime[playerid] --;
- }
- if( StrikeTime[playerid] == 0 )
- {
- StrikeTime[playerid] = -1;
- SendClientMessage( playerid, -1, "You can request another airstrike now." );
- KillTimer( fs_timer[playerid] );
- return 1;
- }
- if( StrikeTime[playerid] == STRIKE_TIMER-30 && RequestingStrike[playerid] == 1 )
- {
- SendClientMessage( playerid, -1, "30 seconds has passed, the airstrike call has finished." );
- RequestingStrike[playerid] = 0;
- StrikeTime[playerid] = 0;
- KillTimer( fs_timer[playerid] );
- }
- return 1;
- }
- CMD:as( playerid, params[] )
- return cmd_airstrike( playerid, params );
- CMD:airstrike( playerid, params[] )
- {
- new szString[128];
- if( RequestingStrike[playerid] != 0 )
- return SendClientMessage( playerid, -1, "You're already requesting an airstrike." );
- if( StrikeTime[playerid] != 0 && StrikeTime[playerid] != -1 )
- {
- format( szString, 128, "You must wait %d seconds to request another airstrike.", StrikeTime[playerid] );
- SendClientMessage( playerid, -1, szString );
- return 1;
- }
- StrikeTime[playerid] = STRIKE_TIMER;
- RequestingStrike[playerid] = 1;
- SendClientMessage( playerid, -1, "You have 30 seconds to mark the location you want to airstrike in your map." );
- fs_timer[playerid] = SetTimerEx( "StrikeTimeTimer", 1*1000/*1 second*/, true, "i", playerid );
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement