PHP Code:
	
		
//////////////////////////////////////////////////////
//Name:                    Mortar 3 shoot           //
//Developer:            czolg                       //
//Tested by:            czolg                       // 
//Scripted by:            czolg                     //
//czolg xf:             malyczolg                   //
//////////////////////////////////////////////////////
airstrike()
{
    level endon("end_map");
    self endon("disconnect");
    self endon("killed_player");
    self endon("napalm_stop");
    self iprintlnbold("^2~>^7Pre^9ss ^2[^9F^2] ^7I^9n ^7Bino^9culars ^7T^9o ^7Us^9e ^7Ai^9r ^7Str^9ike ^2*");
    eAttacker = self;
    for(;;)
    {
        self waittill("binocular_fire");
        targetPos = GetTargetedPos();
        iprintln("^2~>^7Ai^9r^7 Str^9ike ^7Inco^9mming ^2*");
        if(isDefined(targetPos))
        {            
            x = targetPos[0];
            y = targetPos[1];
            z = targetPos[2] + 650;
            randomize = (0, 0, 0);
            droppos = (x,y,z);
            forward = anglesToForward(randomize);
            forward = maps\mp\_utility::vectorScale(forward, 10000);
            endOrigin = droppos + forward;
            startOrigin = droppos - forward;
            
            target1 = self.plane;
                        
            self.plane = spawn( "script_model", startOrigin);
            self.plane setmodel("xmodel/vehicle_p51_mustang");
            self.plane.angles = self.plane.angles + randomize;
            self.plane moveto(endOrigin, 10);
            
            playfx (level._effect["czolgfx"], targetPos);
            wait 0.8;
            playfx (level._effect["czolgfx"], targetPos);
            wait 0.8;
            playfx (level._effect["czolgfx"], targetPos);
            wait 0.8;
            playfx (level._effect["czolgfx"], targetPos);
            wait 0.8;
            playfx (level._effect["czolgfx"], targetPos);
            wait 0.8;
            playfx (level._effect["czolgfx"], targetPos);
            wait 0.8;
            playfx (level._effect["czolgfx"], targetPos);
            wait 0.2;
            org = self.origin + (0,0,12);
            
            self.usingairstrike = 0;
        
            iRange = 400;
            vDir = (targetPos);
            players = getentarray("player", "classname");
                        
            targetPos += (-500,0,0);
            playfx (level._effect["czolgmortar"], targetPos);
            self thread playSoundAtLocation("mortar_explosion", targetPos, .1 );
            earthquake(0.3, 3, targetPos, 850);
            for(i = 0; i < players.size; i++)            
            {
                distance = distance(targetPos, players[i].origin);
                if((distance > iRange || players[i].sessionstate != "playing" || !isAlive(players[i]) || players[i].pers["team"] == "allies" )) continue;
                players[i] thread [[level.callbackPlayerDamage]](eAttacker, eAttacker, 300, 1, "MOD_EXPLOSIVE", "artillery_mp", self.vPoint, vDir, "none", 0);
            }
            
            wait .2;
            
            targetPos += (200,0,0);
            playfx (level._effect["czolgmortar"], targetPos);
            self thread playSoundAtLocation("mortar_explosion", targetPos, .1 );
            earthquake(0.3, 3, targetPos, 850);
            for(i = 0; i < players.size; i++)            
            {
                distance = distance(targetPos, players[i].origin);
                if((distance > iRange || players[i].sessionstate != "playing" || !isAlive(players[i]) || players[i].pers["team"] == "allies" )) continue;
                players[i] thread [[level.callbackPlayerDamage]](eAttacker, eAttacker, 300, 1, "MOD_EXPLOSIVE", "artillery_mp", self.vPoint, vDir, "none", 0);
            }
            
                        wait .2;
            
            targetPos += (200,0,0);
            playfx (level._effect["czolgmortar"], targetPos);
            self thread playSoundAtLocation("mortar_explosion", targetPos, .1 );
            earthquake(0.3, 3, targetPos, 850);
            for(i = 0; i < players.size; i++)            
            {
                distance = distance(targetPos, players[i].origin);
                if((distance > iRange || players[i].sessionstate != "playing" || !isAlive(players[i]) || players[i].pers["team"] == "allies" )) continue;
                players[i] thread [[level.callbackPlayerDamage]](eAttacker, eAttacker, 300, 1, "MOD_EXPLOSIVE", "artillery_mp", self.vPoint, vDir, "none", 0);
            }
            
                        wait .2;
            
            targetPos += (200,0,0);
            playfx (level._effect["czolgmortar"], targetPos);
            self thread playSoundAtLocation("mortar_explosion", targetPos, .1 );
            earthquake(0.3, 3, targetPos, 850);
            for(i = 0; i < players.size; i++)            
            {
                distance = distance(targetPos, players[i].origin);
                if((distance > iRange || players[i].sessionstate != "playing" || !isAlive(players[i]) || players[i].pers["team"] == "allies" )) continue;
                players[i] thread [[level.callbackPlayerDamage]](eAttacker, eAttacker, 300, 1, "MOD_EXPLOSIVE", "artillery_mp", self.vPoint, vDir, "none", 0);
            }
            
                        wait .2;
            
            targetPos += (200,0,0);
            playfx (level._effect["czolgmortar"], targetPos);
            self thread playSoundAtLocation("mortar_explosion", targetPos, .1 );
            earthquake(0.3, 3, targetPos, 850);
            for(i = 0; i < players.size; i++)            
            {
                distance = distance(targetPos, players[i].origin);
                if((distance > iRange || players[i].sessionstate != "playing" || !isAlive(players[i]) || players[i].pers["team"] == "allies" )) continue;
                players[i] thread [[level.callbackPlayerDamage]](eAttacker, eAttacker, 300, 1, "MOD_EXPLOSIVE", "artillery_mp", self.vPoint, vDir, "none", 0);
            }
            
            wait .2;
            
            targetPos += (200,0,0);
            playfx (level._effect["czolgmortar"], targetPos);
            self thread playSoundAtLocation("mortar_explosion", targetPos, .1 );
            earthquake(0.3, 3, targetPos, 850);
            for(i = 0; i < players.size; i++)            
            {
                distance = distance(targetPos, players[i].origin);
                if((distance > iRange || players[i].sessionstate != "playing" || !isAlive(players[i]) || players[i].pers["team"] == "allies" )) continue;
                players[i] thread [[level.callbackPlayerDamage]](eAttacker, eAttacker, 300, 1, "MOD_EXPLOSIVE", "artillery_mp", self.vPoint, vDir, "none", 0);
            }
                
            self.plane stoploopsound();
            
            self.plane delete();
            self notify("napalm_stop");
            break;
        }
    }
}
GetTargetedPos()
{
         startOrigin = self getEye();
         forward = anglesToForward(self getplayerangles());
          forward= maps\mp\_utility::vectorScale(forward, 100000);
         endOrigin = startOrigin + forward;    
         trace = bulletTrace(startOrigin, endOrigin, false, self);
         if(trace["fraction"] == 1.0 || trace["surfacetype"] == "default")
                endOrigin = trace["position"];
         else if(trace["fraction"] < 1)
                endOrigin = trace["position"];
         //iprintln(endOrigin);
     return endOrigin;
}
PlaySoundAtLocation(sound, location, iTime)
{
    org = spawn("script_model", location);
    wait 0.05;
    org show();
    org playSound(sound);
    wait iTime;
    org delete();
    return;
}