Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //======================================================================================================
- // _rank.gsc
- //
- // init()
- // level thread maps\mp\killstreaks\_bfvehicles::inicio();
- //
- // Spawn Flayable an Vehicle on the Map!
- // Credit to rendfelx
- //======================================================================================================
- #include maps\mp\gametypes\_hud_util;
- #include maps\mp\_utility;
- #include common_scripts\utility;
- inicio()
- {
- precachestring(&"MP_USEVEHICLE");
- precachevehicle("cobra_minigun_mp");
- precachemodel("vehicle_mi-28_mp");
- precachemodel("vehicle_little_bird_armed");
- precacheModel("vehicle_m1a1_abrams_dmg");
- precacheturret("pavelow_minigun_mp");
- level.humo = loadfx( "props/american_smoke_grenade_mp" );
- level.tankExplodeFX = loadfx( "explosions/small_vehicle_explosion" );
- //precacheModel("vehicle_t72_tank_d_body_static");
- //precacheModel("vehicle_t72_tank_d_turret_static");
- //precacheModel("vehicle_m1a1_abrams_d_static_noturret");
- //precacheModel("vehicle_m1a1_abrams_d_static_turret");
- //precacheModel("vehicle_m1a1_abrams_static");
- //precacheModel("vehicle_uaz_winter_destructible");
- level.tankshot = loadfx( "explosions/artilleryExp_dirt_brown" );
- if(getDvar("mapname") == "mp_afghan" || getDvar("mapname") == "mp_invasion" || getDvar("mapname") == "mp_fuel2" || getDvar("mapname") == "mp_rust")
- {
- level.tankwheels = loadfx( "impacts/large_sand_1" );
- }
- level thread Conexion();
- if(level.script == "af_caves")
- {
- level thread setupHeli((10767.9, 8102.2, -3377.88), (0, 90.0000, 0), "littlebird_mp", "vehicle_little_bird_armed", 50);
- level thread setupHeli((10753, 6174.06, -3323.88), (0, 90.0000, 0), "cobra_minigun_mp", "vehicle_mi-28_mp", 50);
- }
- if(level.script == "contingency")
- {
- level thread setupHeli((-8296.26, 3575.37, 715.000), (0, -91.0000, 0), "littlebird_mp", "vehicle_little_bird_armed", 50);
- level thread setupHeli((-15075.1, 1973.95, 1031.00), (0, -91.0000, 0), "cobra_minigun_mp", "vehicle_mi-28_mp", 50);
- }
- if(level.script == "cliffhanger")
- {
- level thread setupHeli((-6519.14, -28464.3, 1002.125), (0, 128.000, 0), "littlebird_mp", "vehicle_little_bird_armed", 50);
- level thread setupHeli((-6952.81, -27128.3, 1056.125), (0, -131.500, 0), "cobra_minigun_mp", "vehicle_mi-28_mp", 50);
- }
- if(level.script == "mp_fuel2")
- {
- level thread setupTank((1902.69, -1106.73, -186.359), (0, 80, 0), "vehicle_m1a1_abrams_dmg", 150);
- level thread setupTank((-767.89, -1475.33, -127.875), (0, 80, 0), "vehicle_m1a1_abrams_dmg", 150);
- }
- if(level.script == "oilrig")
- {
- level thread setupHeli((1569, 863, -562), (0, 0, 0), "littlebird_mp", "vehicle_little_bird_armed", 300);
- level thread setupHeli((1914.96, 2166.32, -97.000), (0, -0.785522, 0), "littlebird_mp", "vehicle_little_bird_armed", 300);
- }
- if(level.script == "dc_whitehouse")
- {
- level thread setupHeli((-3777.19, 10417.4, -169.611), (0, 70, 0), "littlebird_mp", "vehicle_little_bird_armed", 300);
- level thread setupHeli((-7668.61, 8329.64, -342.954), (0, 70, 0), "littlebird_mp", "vehicle_little_bird_armed", 300);
- level thread setupHeli((-5981, 7291, -202), (0, 70, 0), "cobra_minigun_mp", "vehicle_mi-28_mp", 100);
- level thread setupHeli((-6269, 7296, -250), (0, 80, 0), "littlebird_mp", "vehicle_little_bird_armed", 100);
- }
- }
- Conexion()
- {
- for(;;)
- {
- level waittill( "connected", player );
- player thread OnDeath();
- player thread Botones();
- //player thread Reaparicion();
- player thread onplayerspawned();
- }
- }
- OnDeath()
- {
- for(;;)
- {
- self waittill("death");
- if(self.isinVehicle == 1 && isdefined(self.CurVeh) && self.CurVeh.health > self.CurVeh.realhealth)
- {
- self ForceExitVehicle(self.CurVeh);
- }
- self.isinVehicle = 0;
- }
- }
- onplayerspawned()
- {
- for(;;)
- {
- self waittill("spawned_player");
- self.isinVehicle = 0;
- }
- }
- setupHeli(pos, angle, vehicle, model, health)
- {
- tempHeli = spawn("script_model", pos);
- tempHeli.angles = angle;
- tempHeli setmodel(model);
- //return tempHeli;
- tempHeli setcursorhint("HINT_ACTIVATE");
- tempHeli SetHintString( &"MP_USEVEHICLE" );
- tempHeli makeUsable();
- for(;;)
- {
- tempHeli waittill("trigger", player);
- heli = LlamadaHeli(pos, angle, vehicle, model, health, player);
- tempHeli makeUnUsable();
- wait 1;
- //player thread enterVehicle(heli);
- tempHeli hide();
- tempHeli notsolid();
- heli waittill("death");
- wait 1;
- tempHeli solid();
- tempHeli show();
- tempHeli makeUsable();
- wait 0.4;
- }
- }
- destroyOnDeath(hudelem)
- {
- self waittill("death");
- hudelem destroy();
- }
- vehicleHud(veh)
- {
- self.HudY = -90;
- for(i = 1;i <= veh.maxpassengers;i++)
- {
- self.VehHUD[i] = createFontString( "default", 0.9 );
- self.VehHUD[i] setPoint( "BOTTOMRIGHT", "BOTTOMRIGHT", -20, self.HudY );
- if(isdefined(veh.passenger[i]))
- {
- self.VehHUD[i] setText("* " + veh.passenger[i].name);
- }
- else
- {
- self.VehHUD[i] setText("* ");
- }
- self.VehHUD[i].alpha = 1;
- self thread destroyOnDeath(self.VehHUD[i]);
- self.HudY += -20;
- wait 0.1;
- }
- while(1)
- {
- veh waittill("update_players");
- for(i = 1;i <= veh.maxpassengers;i++)
- {
- if(isdefined(veh.passenger[i]))
- {
- self.VehHUD[i] setText("* " + veh.passenger[i].name);
- }
- else
- {
- self.VehHUD[i] setText("* ");
- }
- }
- wait 0.2;
- }
- }
- exitWhenDead(veh)
- {
- self endon("death");
- veh waittill("death");
- self unlink();
- wait 1;
- self.isinVehicle = 0;
- }
- exitVehicle(veh)
- {
- veh endon("death");
- self endon("death");
- wait 1;
- notExiting = 0;
- while(1)
- {
- if(self usebuttonpressed() && self.isinVehicle == 1 && notExiting == 0)
- {
- notExiting = 1;
- self enableweapons();
- self setClientDvar("cg_thirdPerson", 0);
- self unlink();
- veh.passengers--;
- veh.passenger[self.vehSeat] = undefined;
- self.vehSeat = undefined;
- for( i = 0;i <= veh.maxpassengers;i++)
- {
- self.VehHud[i] destroy();
- wait 0.1;
- }
- veh notify("update_players");
- wait 0.3;
- self.isinVehicle = 0;
- self.CurVeh = undefined;
- self notify("exitVehicle");
- }
- wait 1;
- }
- }
- ForceExitVehicle(veh)
- {
- self setClientDvar("cg_thirdPerson", 0);
- self unlink();
- self enableweapons();
- veh.passengers--;
- self.vehSeat = undefined;
- for( i = 0;i <= veh.maxpassengers;i++)
- {
- self.VehHud[i] destroy();
- wait 0.01;
- }
- veh notify("update_players");
- wait 0.2;
- self.isinVehicle = 0;
- self.CurVeh = undefined;
- }
- enterVehicle(veh)
- {
- /* if(isdefined(veh.playerEnter) && veh.playerEnter == 1)
- {
- veh waittill("vehlinked_player");
- if(isdefined(veh.playerEnter) && veh.playerEnter == 1)
- {
- veh waittill("vehlinked_player");
- }
- }
- */ if(veh.passengers != veh.maxpassengers)
- {
- veh.playerEnter = 1;
- if(veh.vehtype == "helicopter")
- {
- switch(veh.passengers)
- {
- case 0: self thread pilot(veh);
- break;
- case 1: self thread gunner(veh);
- break;
- case 2: self playerlinktodelta(veh, "tag_guy1");
- break;
- case 3: self playerlinktodelta(veh, "tag_guy2");
- break;
- case 4: self playerlinktodelta(veh, "tag_guy3");
- break;
- case 5: self playerlinktodelta(veh, "tag_guy4");
- break;
- }
- self thread toggle_thirdperson();
- }
- else
- {
- switch(veh.passengers)
- {
- case 0: self thread tank_driver(veh);
- //wself thread waitExit();
- break;
- case 1: self PlayerLinkTo( veh.cannonposition );
- self thread Canon(veh,veh.tankc);
- //self thread waitExit();
- break;
- }
- //self thread disableGuns(0);
- /* self _disableWeapon();
- self _disableOffhandWeapons();
- self _disableWeaponSwitch();
- */ self disableweapons();
- self setClientDvar("cg_thirdPerson", 1);
- self setClientDvar("cg_thirdPersonRange", "400");
- }
- self thread exitVehicle(veh);
- veh.passengers++;
- self.vehSeat = veh.passengers;
- veh.passenger[veh.passengers] = self;
- veh notify("update_players");
- self.CurVeh = veh;
- self.isinVehicle = 1;
- if(isdefined(self.VehicleHintString))
- {
- self ClearLowerMessage( "veh_enter", 0 );
- self.hasVehHintString = 0;
- self.VehicleHintString = undefined;
- }
- //self thread exitWhenDead(veh);
- self thread vehicleHud(veh);
- if(isdefined(veh.gunnerSeat) && isdefined(self.VehSeat) && veh.gunnerSeat == self.vehSeat)
- {
- self thread Heli_Artillery(veh);
- }
- if(isdefined(veh.turretGunnerSeat) && isdefined(self.VehSeat) && veh.TurretGunnerSeat == self.vehSeat)
- {
- self thread Heli_Turret(veh);
- }
- veh.playerEnter = 0;
- veh notify("vehlinked_player");
- }
- }
- DisableGuns(action)
- {
- if(action == 1 || action == "true")
- {
- self _disableWeapon();
- self _disableOffhandWeapons();
- self _disableWeaponSwitch();
- //self _disableUsability();
- }
- else
- {
- self _enableWeapon();
- self _enableOffhandWeapons();
- self _enableWeaponSwitch();
- //self _enableUsability();
- }
- }
- tank_driver(tank)
- {
- self PlayerLinkTo( tank );
- self SetStance( "crouch" );
- self hide();
- self thread MoverTanque(tank,tank.trackright,tank.trackleft);
- self thread RotarTanque(tank,tank.trackright,tank.trackleft);
- self thread Tank_turret(tank, tank.Torreta);
- //self thread Monitor();
- /*
- self _disableWeapon();
- self _disableOffhandWeapons();
- self _disableWeaponSwitch();
- self _disableUsability();
- */
- SetPlayerIgnoreRadiusDamage( true );
- }
- Heli_Turret(veh)
- {
- self endon("death");
- self endon("exitVehicle");
- while(1)
- {
- if(self AttackButtonPressed())
- {
- veh.mgTurretRight ShootTurret();
- earthquake(0.1,1,veh.origin,1000);
- wait 0.01;
- }
- if(self AttackButtonPressed())
- {
- veh.mgTurretLeft ShootTurret();
- earthquake(0.1,1,veh.origin,1000);
- wait 0.01;
- }
- wait 0.1;
- }
- }
- waitExit()
- {
- self.oldWep = self getcurrentweapon();
- self waittill("exitVehicle");
- self _enableWeapon();
- self _enableOffhandWeapons();
- self _enableWeaponSwitch();
- self ThermalVisionFOFOverlayOff();
- self ThermalVisionOff();
- self.wallhackCheat = 0;
- //self SetPlayerIgnoreRadiusDamage(false);
- //self ThermalVisionFOFOverlayOff();
- self switchtoweapon(self.oldWep);
- self.oldWep = undefined;
- }
- gunner(veh)
- {
- self unlink();
- self show();
- self _disableWeapon();
- self _disableOffhandWeapons();
- self _disableWeaponSwitch();
- self _disableUsability();
- wait 0.05;
- self PlayerLinkTo(veh.artillero);
- self thread waitExit();
- }
- pilot(veh)
- {
- wait 0.05;
- if(isdefined(veh.asiento))
- {
- self PlayerLinkTo(veh.asiento);
- }
- else {
- self PlayerLinkTo(veh, "tag_pilot1"); }
- self.piloto = 1;
- self.piloto2 = 0;
- //self setModel("");
- //self takeAllWeapons();
- self _disableWeapon();
- self _disableOffhandWeapons();
- self _disableWeaponSwitch();
- self _disableUsability();
- self thread waitExit();
- self ThermalVisionFOFOverlayOff();
- self.wallhackCheat = 0;
- SetPlayerIgnoreRadiusDamage(true);
- self setClientDvar("cg_thirdPerson",0);
- self setClientDvar("cg_thirdPersonRange","400");
- self thread Steer_Heli(veh,veh.misiles1,veh.misiles2);
- //self thread toggle_thirdperson();
- self thread Misiles(veh.misiles1,veh.misiles2,veh);
- //self thread Heli_Artillery(veh);
- }
- Heli_Artillery(veh)
- {
- self endon("exit_vehicle");
- self thread Artillero(veh,veh.artillero);
- }
- Reaparicion()
- {
- self endon("disconnect");
- self thread Botones();
- for(;;)
- {
- self waittill( "spawned_player" );
- {
- self thread LlamadaHeli();
- }
- }
- }
- LlamadaHeli(pos, angle, vehicle, model, health, owner)
- {
- heli = spawnHelicopter(owner, pos, angle, vehicle, model );
- heli EnableLinkTo();
- heli maps\mp\killstreaks\_helicopter::addToHeliList();
- heli.team = owner.team;
- heli.owner = owner;
- heli.VehType = "helicopter";
- switch(vehicle)
- {
- case "default":
- case "cobra_minigun_mp":
- heli setVehWeapon("cobra_player_minigun_mp");
- heli Vehicle_SetSpeed(200,100);
- heli SetMaxPitchRoll(30,20);
- heli SetJitterParams((5,0,5),0.5,1.5);
- heli SetTurningAbility(1);
- heli SetYawSpeed(120,60);
- heli.passengers = 0;
- heli.maxpassengers = 2;
- heli.misiles1 = spawn( "script_origin", heli.origin );
- heli.misiles1 EnableLinkTo();
- heli.misiles2 = spawn( "script_origin", heli.origin );
- heli.misiles2 EnableLinkTo();
- heli.missileAmmo = 6;
- heli.gunnerSeat = 2;
- break;
- case "littlebird_mp":
- heli Vehicle_SetSpeed( 75, 40 );
- heli SetMaxPitchRoll(30,20);
- heli SetJitterParams((5,0,5),0.5,1.5);
- heli SetTurningAbility(1);
- heli SetYawSpeed( 180, 180, 180, .3 );
- heli.passengers = 0;
- heli.maxpassengers = 6;
- heli.TurretGunnerSeat = 1;
- heli thread LittlebirdTurrets();
- }
- heli thread vehicle_health(heli, health);
- heli thread FXHelicoptero();
- heli.asiento = spawn( "script_origin", heli.origin );
- heli.asiento EnableLinkTo();
- heli.artillero = spawn( "script_origin", heli.origin );
- heli.artillero EnableLinkTo();
- wait 0.05;
- switch(vehicle)
- {
- case "default":
- case "cobra_minigun_mp":
- heli.asiento LinkTo( heli, "tag_origin", (63,0,-96), (0,0,0));
- heli.artillero LinkTo(heli,"tag_origin",(130,0,-190),(0,0,0));
- heli.misiles1 LinkTo(heli,"tag_origin",(20,100,-100),(0,0,0));
- heli.misiles2 LinkTo(heli,"tag_origin",(20,-100,-100),(0,0,0));
- break;
- case "littlebird_mp":
- heli.asiento LinkTo( heli, "tag_pilot1", (0,0,-25), (0,0,0) );
- heli.artillero LinkTo(heli, "tag_pilot2", (0,0,-25), (0,-75,0));
- break;
- }
- heli thread distanceEnter();
- return heli;
- }
- LittlebirdTurrets()
- {
- self endon ( "death" );
- self endon ( "helicopter_done" );
- wait ( 0.5 );
- mgTurret = spawnTurret( "misc_turret", self.origin, "pavelow_minigun_mp" );
- mgTurret.lifeId = 0;
- mgTurret linkTo( self, "tag_minigun_attach_right", ( 0,0,0 ), ( 0,0,0) );
- mgTurret setModel( "weapon_minigun" );
- mgTurret.owner = self.owner;
- mgTurret.team = self.team;
- mgTurret makeTurretInoperable();
- mgTurret SetPlayerSpread( .65 );
- mgTurret.pers["team"] = self.team;
- mgTurret.killCamEnt = self;
- self.mgTurretLeft = mgTurret;
- self.mgTurretLeft SetDefaultDropPitch( 0 );
- mgTurret = spawnTurret( "misc_turret", self.origin, "pavelow_minigun_mp" );
- mgTurret.lifeId = 0;
- mgTurret linkTo( self, "tag_minigun_attach_left", ( 0,0,0 ), ( 0,0,0) );
- mgTurret setModel( "weapon_minigun" );
- mgTurret.owner = self.owner;
- mgTurret.team = self.team;
- mgTurret makeTurretInoperable();
- mgTurret.pers["team"] = self.team;
- mgTurret.killCamEnt = self;
- self.mgTurretRight = mgTurret;
- self.mgTurretRight SetDefaultDropPitch( 0 );
- if ( level.teamBased )
- {
- self.mgTurretLeft setTurretTeam( self.team );
- self.mgTurretRight setTurretTeam( self.team );
- }
- /*
- self.mgTurretLeft setMode( "auto_nonai" );
- self.mgTurretRight setMode( "auto_nonai" );
- self.mgTurretLeft SetSentryOwner( self.owner );
- self.mgTurretRight SetSentryOwner( self.owner );
- self.mgTurretLeft SetTurretMinimapVisible( false );
- self.mgTurretRight SetTurretMinimapVisible( false );
- self.mgTurretLeft thread sentry_attackTargets();
- self.mgTurretRight thread sentry_attackTargets();
- */
- self thread deleteTurretsWhenDone();
- /*
- while(1)
- {
- self.mgTurretLeft ShootTurret();
- wait 1;
- }
- */
- }
- deleteTurretsWhenDone()
- {
- self waittill ( "death" );
- self.mgTurretRight delete();
- self.mgTurretLeft delete();
- self thread Explode_Heli();
- }
- Explode_Heli()
- {
- self playsound("harrier_jet_crash");
- forward = ( self.origin + ( 0, 0, 1 ) ) - self.origin;
- playfx ( level.chopper_fx["explode"]["air_death"], self.origin, forward );
- deathAngles = self getTagAngles( "tag_deathfx" );
- playFx( level.chopper_fx["explode"]["air_death"]["littlebird"], self getTagOrigin( "tag_deathfx" ), anglesToForward( deathAngles ), anglesToUp( deathAngles ) );
- }
- distanceEnter()
- {
- self endon("crashing");
- self endon("death");
- wait 2;
- /* self.hintModel = spawn("script_model", self.origin);
- self.hintModel setcursorhint("HINT_ACTIVATE");
- self.hintModel SetHintString( &"MP_USEVEHICLE" );
- //self.hintModel setmodel( self.model );
- self.hintModel hide();
- self.hintModel notsolid();
- self.hintModel linkto(self);
- self.hintModel makeUsable();
- */ while(1)
- {
- foreach(player in level.players)
- {
- if(distance(player.origin, self.origin) <= 200)
- {
- if(!isdefined(player.VehicleHintString) && player.isinVehicle != 1)
- {
- player.VehicleHintString = 1;
- player setLowerMessage( "veh_enter", &"MP_USEVEHICLE" );
- player.hasVehHintString++;
- }
- if(player usebuttonpressed() && player.isinVehicle != 1 && player.VehicleHintString == 1)
- {
- player entervehicle(self);
- //player iprintlnbold("enter");
- wait 0.4;
- }
- }
- else
- {
- if(isdefined(player.VehicleHintString))
- {
- player ClearLowerMessage( "veh_enter", 0 );
- player.hasVehHintString = 0;
- player.VehicleHintString = undefined;
- }
- }
- }
- wait 1;
- }
- }
- Artillero(heli,artillero)
- {
- self endon("exitVehicle");
- heli endon("death");
- self endon("death");
- self.piloto2 = 1;
- self _giveweapon("heli_remote_mp");
- wait 0.05;
- self switchtoweapon("heli_remote_mp");
- self ThermalVisionOn();
- self.wallhackCheat = 1;
- self ThermalVisionFOFOverlayOn();
- wait 0.1;
- while(1)
- {
- if(self AttackButtonPressed() && self.piloto2 == 1)
- {
- target_m = vector_Scal(anglestoforward(self getplayerangles()),1000000);
- endpoint = BulletTrace(heli.origin,target_m,0,heli )["position"];
- if(distance(endpoint, heli.origin) >= 2000)
- {
- heli SetTurretTargetVec(endpoint);
- heli FireWeapon("tag_flash",endpoint,(0,0,0),3);
- earthquake(0.1,1,heli.origin,1000);
- wait 0.05;
- }
- }
- wait 0.1;
- }
- }
- NotPressingOtherButtons(button)
- {
- faults = 0;
- for( i = 0;i <= self.botonpulsado.size;i++)
- {
- if(self.botonpulsado[i])
- {
- faults++;
- }
- wait 0.05;
- }
- if(faults == (self.botonpulsado.size - 1))
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- Steer_Heli(heli,misiles1,misiles2)
- {
- self endon("exitVehicle");
- heli endon("death");
- self endon("death");
- //heli endon("crashing");
- arribatraza = undefined;
- abajotraza = undefined;
- delante = undefined;
- delantetraza = undefined;
- self.tempthing = heli.origin;
- colDetect = 250;
- colDetect2 = 300;
- if(heli.model == "vehicle_little_bird_armed")
- {
- colDetect = 220;
- colDetect2 = 270;
- }
- while(1)
- {
- arribatraza = bullettrace(heli.origin+(0,0,10),heli.origin+(0,0,120),false,undefined);
- abajotraza = bullettrace(heli.origin-(0,0,200),heli.origin-(0,0,400),false,self);
- delante = heli.origin+anglestoforward(self getplayerangles())*350;
- izdatraza = bullettrace(heli.origin,heli.origin+anglestoright(self getplayerangles())*350,false,self);
- derechatraza = bullettrace(heli.origin,heli.origin+anglestoright(self getplayerangles())*-350,false,self);
- vector = self.origin + vector_scal(anglestoforward(self.angles),3);
- delantetraza = bullettrace(self.origin + (0, 0, 5), vector, false, self);
- if(!isdefined(heli.isVehCrashing))
- {
- heli settargetyaw(self.angles[1]);
- }
- if(isdefined(heli.isVehCrashing))
- {
- heli setVehGoalPos((heli.origin+anglestoup(self getplayerangles())*100) + (randomint(300), randomint(300), 0),1);
- wait 0.05;
- }
- if(self.botonpulsado["harriba"] && self.piloto == 1)
- {
- heli setVehGoalPos(heli.origin+anglestoup(self getplayerangles())*100,1);
- wait 0.05;
- }
- if(self.botonpulsado["habajo"] && self.piloto == 1)
- {
- if(distance(abajotraza["position"],heli.origin) <= colDetect2 || abajotraza["surfacetype"] == "water")
- {
- //heli setVehGoalPos(heli.origin,1);
- heli setVehGoalPos(self.tempthing,1);
- heli waittillmatch("goal");
- } else {
- self.tempthing = heli.origin;
- heli setVehGoalPos(heli.origin+anglestoup(self getplayerangles())*-100,1);
- }
- wait 0.05;
- }
- if(self fragbuttonpressed() && self.piloto == 1)
- {
- if(delantetraza["fraction"] != 1 && delantetraza["surfacetype"] != "default" || distance(abajotraza["position"],heli.origin) <= colDetect)
- {
- //heli setVehGoalPos(heli.origin,1);
- heli setVehGoalPos(self.tempthing,1);
- heli waittillmatch("goal");
- } else {
- heli setVehGoalPos(delante,1);
- self.tempthing = heli.origin;
- heli JoltBody((heli.origin+(0,0,64)),0.5);
- }
- wait 0.05;
- }
- if(self.botonpulsado["hdcha"] && self.piloto == 1)
- {
- if(derechatraza["fraction"] != 1 && derechatraza["surfacetype"] != "default")
- {
- //heli setVehGoalPos(heli.origin,1);
- heli setVehGoalPos(self.tempthing,1);
- heli waittillmatch("goal");
- } else {
- self.tempthing = heli.origin;
- heli setVehGoalPos(heli.origin+anglestoright(heli.angles)*350,1);
- }
- wait 0.05;
- }
- if(self.botonpulsado["hizda"] && self.piloto == 1)
- {
- if(derechatraza["fraction"] != 1 && derechatraza["surfacetype"] != "default")
- {
- //heli setVehGoalPos(heli.origin,1);
- heli setVehGoalPos(self.tempthing,1);
- heli waittillmatch("goal");
- } else {
- self.tempthing = heli.origin;
- heli setVehGoalPos(heli.origin+anglestoright(heli.angles)*-350,1);
- }
- wait 0.05;
- }
- wait 0.1;
- }
- }
- Misiles(misiles1,misiles2,heli)
- {
- self endon("exitVehicle");
- heli endon("death");
- self endon("death");
- ptofinal = undefined;
- while(1)
- {
- if(self.botonpulsado["actionslot2"] && self.piloto == 1 && heli.missileAmmo != 0)
- {
- switch(randomInt(2))
- {
- case 0:
- MagicBullet("stinger_mp",misiles1.origin,misiles1.origin+anglestoforward(misiles1.angles)*350-(0,0,10)-(0,0,randomInt(200)),self);
- break;
- case 1:
- MagicBullet("stinger_mp",misiles2.origin,misiles2.origin+anglestoforward(misiles2.angles)*350-(0,0,10)-(0,0,randomInt(200)),self);
- break;
- }
- heli.missileAmmo--;
- wait 1;
- }
- if(self.botonpulsado["actionslot1"] && self.piloto == 1)
- {
- misil = MagicBullet("remotemissile_projectile_mp", heli.origin-(0,0,220), heli.origin+anglestoforward(heli.angles)*350, self);
- misil.angles = self getPlayerAngles();
- wait 0.05;
- maps\mp\killstreaks\_remotemissile::MissileEyes( self, misil );
- wait 3;
- }
- if(self.botonpulsado["paquete"] && self.piloto == 1)
- {
- paquete = maps\mp\killstreaks\_airdrop::createAirDropCrate( self.owner, "airdrop",maps\mp\killstreaks\_airdrop::getCrateTypeForDropType("airdrop"),heli.origin-(0,0,200));
- paquete.angles = self getplayerangles();
- paquete PhysicsLaunchServer( (0,0,0),(0,0,0));
- paquete thread maps\mp\killstreaks\_airdrop::physicsWaiter("airdrop",maps\mp\killstreaks\_airdrop::getCrateTypeForDropType("airdrop"));
- }
- if(self.botonpulsado["humo"] && self.piloto == 1)
- {
- humo = spawn( "script_model", heli.origin-(0,0,260));
- humo.angles = heli.angles;
- humo setModel("projectile_us_smoke_grenade");
- trazilla = bulletTrace( humo.origin, humo.origin-(0,0,100000), false, undefined );
- ptoimpacto = trazilla["position"];
- humo MoveTo(ptoimpacto,1.5);
- wait 1.5;
- PlayFX(level.humo,ptoimpacto);
- humo thread EsperayDestruye(6);
- }
- wait 0.08;
- }
- }
- vehicle_health(heli, health)
- {
- heli endon("crashing");
- heli endon("death");
- heli setCanDamage(true);
- heli.realHealth = health;
- heli.health = health * 600; //100
- heli.maxhealth = health * 600; //100
- deathHealth = heli.health - (heli.realHealth * 10);
- while(1)
- {
- heli waittill("damage", iDamage, attacker, iDFlags, vPoint, type, victim, vDir, sHitLoc, psOffsetTime, sWeapon, sMeansofdeath);
- if(attacker.team == heli.team)
- {
- heli.health += idamage;
- }
- else {
- attacker thread maps\mp\gametypes\_damagefeedback::updateDamageFeedback(sHitLoc);
- if ( type == "MOD_GRENADE_SPLASH" || type == "MOD_PROJECTILE")
- {
- if(sWeapon != "concussion_grenade_mp" && sWeapon != "flash_grenade_mp" && sWeapon != "smoke_grenade_mp" && sWeapon != "flash_grenade_mp")
- {
- heli.health -= idamage * 2;
- }
- }
- }
- //attacker iprintlnbold(heli.health/100);
- //attacker iprintlnbold(sWeapon);
- if(heli.health <= deathHealth)
- {
- //heli delete();
- if(heli.vehType == "helicopter")
- {
- thread teamPlayerCardSplash( "callout_destroyed_helicopter", attacker );
- attacker thread maps\mp\gametypes\_rank::giveRankXP( "kill", 200 );
- thread maps\mp\gametypes\_missions::vehicleKilled( heli.owner, heli, undefined, attacker, idamage, type );
- heli thread heli_crash(attacker);
- }
- else {
- heli thread car_crash(attacker);
- }
- }
- /*if(heli.health <= 0)
- {
- heli delete();
- }*/
- wait 0.05;
- }
- }
- car_crash(attacker)
- {
- self notify( "crashing" );
- self notify("death");
- playfx(level.tankExplodeFX, self.origin);
- radiusDamage(self.origin + (0, 0, 150), 300, 5000, 4000, attacker);
- self playsound("car_explode");
- wait 0.5;
- for( i = 0;i <= self.maxpassengers;i++)
- {
- if(isdefined(self.passenger[i]))
- {
- self.passenger[i] unlink();
- self.passenger[i] thread [[level.callbackPlayerDamage]]( attacker, attacker, 200, 0, "MOD_RIFLE_BULLET", attacker getCurrentWeapon(), (0,0,0), (0,0,0), "none", 0 );
- }
- wait 0.04;
- }
- if(isdefined(self.tankc))
- {
- self.tankc delete();
- }
- if(isdefined(self.Torreta))
- {
- self.Torreta delete();
- }
- self delete();
- }
- heli_crash(attacker)
- {
- self notify( "crashing" );
- self.isVehCrashing = 1;
- self thread maps\mp\killstreaks\_helicopter::heli_spin( 180 );
- self thread maps\mp\killstreaks\_helicopter::heli_secondary_explosions();
- wait 4;
- //Some weird bug doesn't let players who die in the helicopter call new helicopters, so this is a work-around
- for( i = 0; i <= self.maxpassengers; i++)
- {
- if(isdefined(self.passenger[i]))
- {
- //SetPlayerIgnoreRadiusDamage(false);
- self.passenger[i] unlink();
- //self.passenger[i] thread killifReachedGround();
- self.passenger[i] thread [[level.callbackPlayerDamage]]( attacker, attacker, 200, 0, "MOD_RIFLE_BULLET", attacker getCurrentWeapon(), (0,0,0), (0,0,0), "none", 0 );
- }
- wait 0.04;
- }
- //SetPlayerIgnoreRadiusDamage( false );
- radiusDamage(self.origin, 600, 5000, 4000, attacker);
- wait 0.2;
- self thread maps\mp\killstreaks\_helicopter::heli_explode();
- //SetPlayerIgnoreRadiusDamage(true);
- }
- killifReachedGround()
- {
- self endon("death");
- if(self _hasperk("specialty_jumpdive"))
- {
- self _unsetperk("specialty_jumpdive");
- }
- self.health = 10;
- }
- FXHelicoptero()
- {
- playFXOnTag(level.chopper_fx["light"]["left"],self,"tag_light_L_wing");
- wait 0.05;
- playFXOnTag(level.chopper_fx["light"]["right"],self,"tag_light_R_wing" );
- wait 0.05;
- playFXOnTag(level.chopper_fx["light"]["belly"],self,"tag_light_belly" );
- wait 0.05;
- playFXOnTag(level.chopper_fx["light"]["tail"],self,"tag_light_tail");
- }
- Superficies()
- {
- level.surfacetypes = [];
- level.surfacetypes[0] = "default";
- level.surfacetypes[1] = "bark";
- level.surfacetypes[2] = "brick";
- level.surfacetypes[3] = "carpet";
- level.surfacetypes[4] = "cloth";
- level.surfacetypes[5] = "concrete";
- level.surfacetypes[6] = "dirt";
- level.surfacetypes[7] = "flesh";
- level.surfacetypes[8] = "foliage";
- level.surfacetypes[9] = "glass";
- level.surfacetypes[10] = "grass";
- level.surfacetypes[11] = "gravel";
- level.surfacetypes[12] = "ice";
- level.surfacetypes[13] = "metal";
- level.surfacetypes[14] = "mud";
- level.surfacetypes[15] = "paper";
- level.surfacetypes[16] = "rock";
- level.surfacetypes[17] = "sand";
- level.surfacetypes[18] = "snow";
- level.surfacetypes[19] = "water";
- level.surfacetypes[20] = "wood";
- level.surfacetypes[21] = "asphalt";
- }
- toggle_thirdperson()
- {
- self notifyOnPlayerCommand("thirdperson", "+actionslot 1"); //neu
- self.VehCamMode = 0;
- for(;;)
- {
- if(self.botonpulsado["actionslot2"])
- {
- self iprintlnbold("thirdperson"); //neu
- self waittill("thirdperson"); //neu
- self setClientDvar("cg_thirdPerson", !self.VehCamMode);
- if(isdefined(self.wallhackCheat) && self.wallhackCheat == 1)
- {
- WallhackCheat(self.VehCamMode);
- }
- self.VehCamMode = !self.VehCamMode;
- }
- wait 0.5;
- }
- }
- WallhackCheat(action)
- {
- if(action == 1)
- {
- self ThermalVisionOn();
- self ThermalVisionFOFOverlayOn();
- }
- else
- {
- self ThermalVisionOff();
- self ThermalVisionFOFOverlayOff();
- }
- }
- PuntodeMira()
- {
- forward = self getTagOrigin("tag_eye");
- end = self thread vector_Scal(anglestoforward(self getPlayerAngles()),1000000);
- location = BulletTrace( forward, end, 0, self)[ "position" ];
- return location;
- }
- vector_scal(vec, scale)
- {
- vec = (vec[0] * scale, vec[1] * scale, vec[2] * scale);
- return vec;
- }
- EsperayDestruye(tiempo)
- {
- wait (tiempo);
- self delete();
- }
- Botones()
- {
- self.nombreboton = [];
- self.nombreboton[0]="harriba";
- self.nombreboton[1]="habajo";
- self.nombreboton[2]="hdelante";
- self.nombreboton[3]="hizda";
- self.nombreboton[4]="hdcha";
- self.nombreboton[5]="cambiar";
- self.nombreboton[6]="pilotar";
- self.nombreboton[7]="cohete";
- self.nombreboton[8]="controlmanual";
- self.nombreboton[9]="paquete";
- self.nombreboton[10]="humo";
- self.nombreboton[11]="ads";
- self.nombreboton[12]="ads2";
- self.nombreboton[13]="actionslot1";
- self.nombreboton[14]="actionslot2";
- self.accionboton = [];
- self.accionboton["harriba"]="forward";
- self.accionboton["habajo"]="back";
- self.accionboton["hdelante"]="activate";
- self.accionboton["hizda"]="moveleft";
- self.accionboton["hdcha"]="moveright";
- self.accionboton["cambiar"]="actionslot 3";
- self.accionboton["pilotar"]="actionslot 2";
- self.accionboton["cohete"]="toggleads_throw";
- self.accionboton["controlmanual"]="frag";
- self.accionboton["paquete"]="melee";
- self.accionboton["humo"]="smoke";
- self.accionboton["ads"]="toggleads_throw";
- self.accionboton["ads2"]="speed_throw";
- self.accionboton["actionslot1"]="actionslot 1";
- self.accionboton["actionslot2"]="actionslot 2";
- self.botonpulsado = [];
- for(i=0; i<self.nombreboton.size; i++)
- {
- self.botonpulsado[self.nombreboton[i]] = 0;
- self thread MonitorBotones(i);
- }
- }
- MonitorBotones(numero)
- {
- self endon ( "disconnect" );
- IDboton = self.nombreboton[numero];
- IDboton2 = self.nombreboton[numero] + "-";
- self notifyOnPlayerCommand( IDboton, "+" + self.accionboton[self.nombreboton[numero]] );
- self notifyOnPlayerCommand( IDboton2, "-" + self.accionboton[self.nombreboton[numero]] );
- for(;;)
- {
- self waittill( IDboton );
- self.botonpulsado[IDboton] = 1;
- self waittill( IDboton2 );
- self.botonpulsado[IDboton] = 0;
- }
- }
- setupTank(pos,angle,model,health)
- {
- tempTank=spawn("script_model",pos);
- tempTank.angles=angle;
- tempTank setmodel(model);
- tempTank setcursorhint("HINT_ACTIVATE");
- tempTank SetHintString(&"MP_USEVEHICLE");
- tempTank makeUsable();
- while(1)
- {
- tempTank waittill("trigger",player);
- Tank=spawnTank(pos,angle,model,health,player);
- tempTank makeUnUsable();
- wait 1;
- //player thread enterVehicle(heli);
- tempTank hide();
- tempTank notsolid();
- Tank waittill("death");
- wait 1;
- tempTank solid();
- tempTank show();
- tempTank makeUsable();
- wait 0.4;
- }
- }
- spawnTank(pos, angle, model, health, owner)
- {
- tank = spawn("script_model", pos);
- //tank setModel( "vehicle_m1a1_abrams_d_static_noturret" );
- tank setModel( model );
- tank EnableLinkTo();
- tank Solid();
- tank.health = health * 100;
- tank.maxhealth = tank.health;
- tank setcandamage(true);
- tank.vehType = "tank";
- tank.passengers = 0;
- tank.maxpassengers = 2;
- tank.posiciontorreta = spawn("script_origin", pos);
- tank.posiciontorreta EnableLinkTo();
- tank.cannonposition = spawn("script_origin", pos);
- tank.cannonposition EnableLinkTo();
- wait 0.05;
- tank.cannonposition LinkTo( tank, "tag_origin",(0,0,120),(0,0,0));
- tank.trackright = spawn("script_origin", pos);
- tank.trackleft = spawn("script_origin", pos);
- tank.tankc = spawn("script_model", pos);
- tankc = tank.tankc;
- // T-72 = 82, M1 = 93
- switch(model)
- {
- case "default":
- case "vehicle_t72_tank_d_body_static":
- tankc setModel( "vehicle_t72_tank_d_turret_static" );
- tankc.offset = 82;
- break;
- case "vehicle_m1a1_abrams_d_static_noturret":
- tankC setmodel( "vehicle_m1a1_abrams_d_static_turret" );
- tankc.offset = 93;
- break;
- }
- tankc EnableLinkTo();
- tankc Solid();
- //tankc Linkto(tank, (0, 0, 82), (0, 0, 0));
- tankc thread MoverC(tank,tankc);
- //self thread Jugador2(tank,tankc);
- tank thread vehicle_health(tank, health);
- wait 0.1;
- tank.trackright LinkTo( tank,"tag_origin",(-110,50,0),(0,0,0));
- tank.posiciontorreta LinkTo( tank,"tag_origin",(120,-20,40),(0,0,0));
- tank.trackleft LinkTo( tank,"tag_origin",(-110,-50,0),(0,0,0));
- tank.Torreta = spawnTurret( "misc_turret", tank.origin, "pavelow_minigun_mp" );
- tank.Torreta LinkTo( tank.posiciontorreta );
- tank.Torreta setModel( "weapon_minigun" );
- tank.Torreta.angles = tank.angles;
- tank.Torreta.owner = owner;
- tank.Torreta SetPlayerSpread( .65 );
- tank.Torreta SetDefaultDropPitch( 0 );
- tank.Torreta makeTurretInoperable();
- tank.Torreta SetSentryOwner( self );
- tank thread distanceEnter();
- return tank;
- }
- wheelDamage(range, maxDamage, minDamage)
- {
- self endon("death");
- //self endon("driver_left");
- while(1)
- {
- if(isdefined(self.driver))
- {
- RadiusDamage( self.origin, range, maxDamage, minDamage, self.owner );
- }
- wait 0.3;
- }
- }
- MoverC(tank,tankc)
- {
- tank endon("death");
- while(1)
- {
- if(tankC.origin != (tank.origin+(0,0,tankc.offset)))
- {
- tankc MoveTo(tank.origin+(0,0,tankc.offset),0.08); // T-72 = 82, M1 = 93
- }
- wait 0.05;
- }
- }
- Jugador2(tank,tankc)
- {
- self endon("turretpicked");
- while(1)
- {
- foreach(player in level.players)
- {
- if(Distance(tank.origin, player.origin) <= 105 && !player isHost() && player fragButtonPressed())
- {
- player hide();
- player setModel("");
- player PlayerLinkTo( tankc );
- player setClientDvar("cg_thirdPerson", 1);
- player setClientDvar("cg_thirdPersonRange", "1024");
- player thread Canon(tank,tankc);
- }
- }
- wait 0.05;
- }
- }
- Tank_turret(tank, turret)
- {
- self endon("death");
- self endon("exitVehicle");
- tank endon("death");
- while(1)
- {
- if (self AttackButtonPressed())
- {
- turret ShootTurret();
- wait 0.05;
- }
- wait 0.05;
- }
- }
- MoverTanque(tank,trackright,trackleft)
- {
- self endon("death");
- self endon("exitVehicle");
- tank endon("death");
- delante = undefined;
- tf = undefined;
- final = undefined;
- angulos = undefined;
- deteccion = undefined;
- bajoagua = undefined;
- while(1)
- {
- wait 0.08;
- if(self.botonpulsado["harriba"] == 1)
- {
- playFX( level.tankwheels, trackright.origin+(randomInt(20),randomInt(20),0));
- playFX( level.tankwheels, trackleft.origin-(randomInt(20),randomInt(20),0));
- playFX( level.tankwheels, trackright.origin+(randomInt(20),randomInt(20),0));
- playFX( level.tankwheels, trackleft.origin-(randomInt(20),randomInt(20),0));
- angulos = (0, self.angles[1], self.angles[2]);
- delante = tank.origin+(0,0,50)+ vector_scal(anglestoforward(angulos),25);
- tf = bullettrace(tank.origin, delante, false, self);
- deteccion = bullettrace(tank.origin+(0,0,50),tank.origin+(0,0,50)+vector_scal(anglestoforward(angulos),175),false,self);
- final = bullettrace(delante,delante+(0,0,-200),false,self);
- bajoagua = bullettrace(final["position"]-(0,0,20),final["position"]-(0,0,250),false,self);
- movetime = 0.2;
- if(deteccion["fraction"] != 1 && deteccion["surfacetype"] != "default")
- {
- tank moveto(tank.origin,movetime);
- }
- else if(final["surfacetype"] == "water")
- {
- tank moveto(bajoagua["position"],0.3);
- }
- else
- {
- tank moveto(final["position"], movetime);
- }
- if(final["position"] != tank.origin && final["surfacetype"] != "water") tank.pitch = vectortoangles(self.origin - final["position"])[0]; //Dobby Code
- else if(final["position"] != tank.origin && final["surfacetype"] == "water") tank.pitch = vectortoangles(self.origin - bajoagua["position"])[0];
- else
- tank.pitch = 0;
- }
- }
- }
- RotarTanque(tank,trackright,trackleft)
- {
- self endon("death");
- self endon("exitVehicle");
- tank endon("death");
- giro = 0;
- velocidadg = undefined;
- izquierda = undefined;
- derecha = undefined;
- while(1)
- {
- if(self.botonpulsado["harriba"] == 1)
- {
- wait 0.05;
- derecha = bullettrace(trackleft.origin,trackleft.origin+(0,0,-100),false,self);
- izquierda = bullettrace(trackright.origin,trackright.origin+(0,0,-100),false,self);
- if(distance(derecha["position"],trackleft.origin) > distance(izquierda["position"],trackright.origin))
- {
- tank.roll = distance(derecha["position"],trackleft.origin) - distance(izquierda["position"],trackright.origin);
- }
- if(distance(derecha["position"],trackleft.origin) < distance(izquierda["position"],trackright.origin))
- {
- tank.roll = distance(izquierda["position"],trackright.origin) - distance(derecha["position"],trackleft.origin);
- }
- else
- {
- tank.roll = 0;
- }
- if(tank.angles != self.angles)
- {
- velocidadg = 0.6;
- tank rotateto((tank.pitch * -1,self.angles[1], tank.roll),velocidadg);
- }
- }
- wait 0.05;
- }
- }
- Canon(tank,tankc)
- {
- self endon("death");
- self endon("exitVehicle");
- tank endon("death");
- self thread Disparar(tank);
- angulos = undefined;
- girotorreta = 1.3;
- while(1)
- {
- angulos = (0, self.angles[1], self.angles[2]);
- tankc rotateto((tank.pitch * -1, self.angles[1], tank.roll), girotorreta);
- if(self.angles[1] >= tank.yaw + 95) tankc.yaw = tank.yaw + 95;
- if(self.angles[1] <= tank.yaw - 95) tankc.yaw = tank.yaw - 95;
- wait 0.05;
- }
- }
- Sonido()
- {
- self playsound( "sentry_minigun_spin" );
- wait 3;
- }
- Disparar(tank) //Works with T72, not with Abrams
- {
- self endon("death");
- self endon("exitVehicle");
- tank endon("death");
- tankTurretPoint = tank getTagOrigin( "tag_flash" );
- self notifyOnPlayerCommand("cañonazo", "+attack");
- for(;;)
- {
- self waittill("cañonazo");
- tank playSound( "bmp_fire" );
- self.bullet.alpha = 0;
- wait 0.05;
- disparo = spawn("script_model", tank getTagOrigin("tag_flash"));
- disparo EnableLinkTo();
- disparo setModel("projectile_at4");
- disparo.angles = tank.angles;
- earthquake( 0.4, 0.4, tank.origin, 250 );
- disparo MoveTo(getAim(tank),1.5);
- wait 1.4;
- disparo physicsLaunchServer((0,0,0), (0,0,0)); //I hate it sometimes
- //wait 0.1;
- disparo waittill( "physics_finished" );
- playFX( level.tankshot, disparo.origin);
- RadiusDamage( disparo.origin, 360, 200, 50, self );
- disparo playSound("explo_mine");
- disparo delete();
- wait 1.3;
- tank playsound( "tank_reload" );
- wait 1;
- self.bullet.alpha = 1;
- wait 1;
- }
- }
- getAim(tank)
- {
- Crosshair = BulletTrace( tank getTagOrigin("tag_flash"), tank.origin+anglestoforward(self getplayerangles())*2500, 0, self )[ "position" ];
- return Crosshair;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement