Advertisement
body_guard

_bfvehicles.gsc

Feb 20th, 2013
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 38.39 KB | None | 0 0
  1. /*
  2. _rank.gsc
  3.  
  4. init()
  5. level thread maps\mp\killstreaks\_bfvehicles::inicio();
  6.  
  7. Spawn Flayable an Vehicle on the Map!
  8. */
  9.  
  10. #include maps\mp\gametypes\_hud_util;
  11. #include maps\mp\_utility;
  12. #include common_scripts\utility;
  13.  
  14. inicio()
  15. {
  16. precachestring(&"MP_USEVEHICLE");
  17.  
  18. precachevehicle("cobra_minigun_mp");
  19. precachemodel("vehicle_mi-28_mp");
  20. precachemodel("vehicle_little_bird_armed");
  21. precacheModel("vehicle_m1a1_abrams_dmg");
  22. precacheturret("pavelow_minigun_mp");
  23.  
  24. level.humo = loadfx( "props/american_smoke_grenade_mp" );
  25. level.tankExplodeFX = loadfx( "explosions/small_vehicle_explosion" );
  26.  
  27. //precacheModel("vehicle_t72_tank_d_body_static");
  28. //precacheModel("vehicle_t72_tank_d_turret_static");
  29. //precacheModel("vehicle_m1a1_abrams_d_static_noturret");
  30. //precacheModel("vehicle_m1a1_abrams_d_static_turret");
  31. //precacheModel("vehicle_m1a1_abrams_static");
  32. //precacheModel("vehicle_uaz_winter_destructible");
  33.  
  34. level.tankshot = loadfx( "explosions/artilleryExp_dirt_brown" );
  35.  
  36. if(getDvar("mapname") == "mp_afghan" || getDvar("mapname") == "mp_invasion" || getDvar("mapname") == "mp_fuel2" || getDvar("mapname") == "mp_rust")
  37. {
  38. level.tankwheels = loadfx( "impacts/large_sand_1" );
  39. }
  40.  
  41. level thread Conexion();
  42.  
  43. if(level.script == "af_caves")
  44. {
  45. level thread setupHeli((10767.9, 8102.2, -3377.88), (0, 90.0000, 0), "littlebird_mp", "vehicle_little_bird_armed", 50);
  46. level thread setupHeli((10753, 6174.06, -3323.88), (0, 90.0000, 0), "cobra_minigun_mp", "vehicle_mi-28_mp", 50);
  47. }
  48. if(level.script == "contingency")
  49. {
  50. level thread setupHeli((-8296.26, 3575.37, 715.000), (0, -91.0000, 0), "littlebird_mp", "vehicle_little_bird_armed", 50);
  51. level thread setupHeli((-15075.1, 1973.95, 1031.00), (0, -91.0000, 0), "cobra_minigun_mp", "vehicle_mi-28_mp", 50);
  52. }
  53. if(level.script == "cliffhanger")
  54. {
  55. level thread setupHeli((-6519.14, -28464.3, 1002.125), (0, 128.000, 0), "littlebird_mp", "vehicle_little_bird_armed", 50);
  56. level thread setupHeli((-6952.81, -27128.3, 1056.125), (0, -131.500, 0), "cobra_minigun_mp", "vehicle_mi-28_mp", 50);
  57. }
  58. if(level.script == "mp_fuel2")
  59. {
  60. level thread setupTank((1902.69, -1106.73, -186.359), (0, 80, 0), "vehicle_m1a1_abrams_dmg", 150);
  61. level thread setupTank((-767.89, -1475.33, -127.875), (0, 80, 0), "vehicle_m1a1_abrams_dmg", 150);
  62. }
  63. if(level.script == "oilrig")
  64. {
  65. level thread setupHeli((1569, 863, -562), (0, 0, 0), "littlebird_mp", "vehicle_little_bird_armed", 300);
  66. level thread setupHeli((1914.96, 2166.32, -97.000), (0, -0.785522, 0), "littlebird_mp", "vehicle_little_bird_armed", 300);
  67. }
  68. if(level.script == "dc_whitehouse")
  69. {
  70. level thread setupHeli((-3777.19, 10417.4, -169.611), (0, 70, 0), "littlebird_mp", "vehicle_little_bird_armed", 300);
  71. level thread setupHeli((-7668.61, 8329.64, -342.954), (0, 70, 0), "littlebird_mp", "vehicle_little_bird_armed", 300);
  72.  
  73. level thread setupHeli((-5981, 7291, -202), (0, 70, 0), "cobra_minigun_mp", "vehicle_mi-28_mp", 100);
  74. level thread setupHeli((-6269, 7296, -250), (0, 80, 0), "littlebird_mp", "vehicle_little_bird_armed", 100);
  75. }
  76. }
  77. Conexion()
  78. {
  79. for(;;)
  80. {
  81. level waittill( "connected", player );
  82. player thread OnDeath();
  83. player thread Botones();
  84. //player thread Reaparicion();
  85. player thread onplayerspawned();
  86. }
  87. }
  88. OnDeath()
  89. {
  90. for(;;)
  91. {
  92. self waittill("death");
  93. if(self.isinVehicle == 1 && isdefined(self.CurVeh) && self.CurVeh.health > self.CurVeh.realhealth)
  94. {
  95. self ForceExitVehicle(self.CurVeh);
  96. }
  97.  
  98.  
  99. self.isinVehicle = 0;
  100. }
  101. }
  102. onplayerspawned()
  103. {
  104. for(;;)
  105. {
  106. self waittill("spawned_player");
  107. self.isinVehicle = 0;
  108. }
  109. }
  110. setupHeli(pos, angle, vehicle, model, health)
  111. {
  112. tempHeli = spawn("script_model", pos);
  113. tempHeli.angles = angle;
  114. tempHeli setmodel(model);
  115.  
  116. //return tempHeli;
  117.  
  118. tempHeli setcursorhint("HINT_ACTIVATE");
  119. tempHeli SetHintString( &"MP_USEVEHICLE" );
  120. tempHeli makeUsable();
  121. for(;;)
  122. {
  123. tempHeli waittill("trigger", player);
  124. heli = LlamadaHeli(pos, angle, vehicle, model, health, player);
  125. tempHeli makeUnUsable();
  126. wait 1;
  127.  
  128. //player thread enterVehicle(heli);
  129.  
  130. tempHeli hide();
  131. tempHeli notsolid();
  132. heli waittill("death");
  133. wait 1;
  134. tempHeli solid();
  135. tempHeli show();
  136. tempHeli makeUsable();
  137. wait 0.4;
  138. }
  139. }
  140. destroyOnDeath(hudelem)
  141. {
  142. self waittill("death");
  143. hudelem destroy();
  144. }
  145. vehicleHud(veh)
  146. {
  147. self.HudY = -90;
  148. for(i = 1;i <= veh.maxpassengers;i++)
  149. {
  150. self.VehHUD[i] = createFontString( "default", 0.9 );
  151. self.VehHUD[i] setPoint( "BOTTOMRIGHT", "BOTTOMRIGHT", -20, self.HudY );
  152. if(isdefined(veh.passenger[i]))
  153. {
  154. self.VehHUD[i] setText("* " + veh.passenger[i].name);
  155. }
  156. else
  157. {
  158. self.VehHUD[i] setText("* ");
  159. }
  160. self.VehHUD[i].alpha = 1;
  161. self thread destroyOnDeath(self.VehHUD[i]);
  162. self.HudY += -20;
  163. wait 0.1;
  164. }
  165. while(1)
  166. {
  167. veh waittill("update_players");
  168. for(i = 1;i <= veh.maxpassengers;i++)
  169. {
  170. if(isdefined(veh.passenger[i]))
  171. {
  172. self.VehHUD[i] setText("* " + veh.passenger[i].name);
  173. }
  174. else
  175. {
  176. self.VehHUD[i] setText("* ");
  177. }
  178. }
  179. wait 0.2;
  180. }
  181. }
  182. exitWhenDead(veh)
  183. {
  184. self endon("death");
  185. veh waittill("death");
  186. self unlink();
  187. wait 1;
  188. self.isinVehicle = 0;
  189. }
  190. exitVehicle(veh)
  191. {
  192. veh endon("death");
  193. self endon("death");
  194. wait 1;
  195. notExiting = 0;
  196. while(1)
  197. {
  198. if(self usebuttonpressed() && self.isinVehicle == 1 && notExiting == 0)
  199. {
  200. notExiting = 1;
  201. self enableweapons();
  202. self setClientDvar("cg_thirdPerson", 0);
  203. self unlink();
  204. veh.passengers--;
  205. veh.passenger[self.vehSeat] = undefined;
  206. self.vehSeat = undefined;
  207. for( i = 0;i <= veh.maxpassengers;i++)
  208. {
  209. self.VehHud[i] destroy();
  210. wait 0.1;
  211. }
  212. veh notify("update_players");
  213. wait 0.3;
  214. self.isinVehicle = 0;
  215. self.CurVeh = undefined;
  216. self notify("exitVehicle");
  217. }
  218. wait 1;
  219. }
  220. }
  221. ForceExitVehicle(veh)
  222. {
  223. self setClientDvar("cg_thirdPerson", 0);
  224. self unlink();
  225. self enableweapons();
  226. veh.passengers--;
  227. self.vehSeat = undefined;
  228. for( i = 0;i <= veh.maxpassengers;i++)
  229. {
  230. self.VehHud[i] destroy();
  231. wait 0.01;
  232. }
  233. veh notify("update_players");
  234. wait 0.2;
  235. self.isinVehicle = 0;
  236. self.CurVeh = undefined;
  237. }
  238. enterVehicle(veh)
  239. {
  240. /* if(isdefined(veh.playerEnter) && veh.playerEnter == 1)
  241. {
  242. veh waittill("vehlinked_player");
  243. if(isdefined(veh.playerEnter) && veh.playerEnter == 1)
  244. {
  245. veh waittill("vehlinked_player");
  246. }
  247. }
  248. */ if(veh.passengers != veh.maxpassengers)
  249. {
  250. veh.playerEnter = 1;
  251. if(veh.vehtype == "helicopter")
  252. {
  253. switch(veh.passengers)
  254. {
  255. case 0: self thread pilot(veh);
  256. break;
  257. case 1: self thread gunner(veh);
  258. break;
  259. case 2: self playerlinktodelta(veh, "tag_guy1");
  260. break;
  261. case 3: self playerlinktodelta(veh, "tag_guy2");
  262. break;
  263. case 4: self playerlinktodelta(veh, "tag_guy3");
  264. break;
  265. case 5: self playerlinktodelta(veh, "tag_guy4");
  266. break;
  267. }
  268. self thread toggle_thirdperson();
  269. }
  270. else
  271. {
  272. switch(veh.passengers)
  273. {
  274. case 0: self thread tank_driver(veh);
  275. //wself thread waitExit();
  276. break;
  277. case 1: self PlayerLinkTo( veh.cannonposition );
  278. self thread Canon(veh,veh.tankc);
  279. //self thread waitExit();
  280. break;
  281. }
  282. //self thread disableGuns(0);
  283.  
  284. /* self _disableWeapon();
  285. self _disableOffhandWeapons();
  286. self _disableWeaponSwitch();
  287. */ self disableweapons();
  288.  
  289. self setClientDvar("cg_thirdPerson", 1);
  290. self setClientDvar("cg_thirdPersonRange", "400");
  291. }
  292. self thread exitVehicle(veh);
  293. veh.passengers++;
  294. self.vehSeat = veh.passengers;
  295. veh.passenger[veh.passengers] = self;
  296. veh notify("update_players");
  297. self.CurVeh = veh;
  298. self.isinVehicle = 1;
  299. if(isdefined(self.VehicleHintString))
  300. {
  301. self ClearLowerMessage( "veh_enter", 0 );
  302. self.hasVehHintString = 0;
  303. self.VehicleHintString = undefined;
  304. }
  305.  
  306. //self thread exitWhenDead(veh);
  307.  
  308. self thread vehicleHud(veh);
  309. if(isdefined(veh.gunnerSeat) && isdefined(self.VehSeat) && veh.gunnerSeat == self.vehSeat)
  310. {
  311. self thread Heli_Artillery(veh);
  312. }
  313. if(isdefined(veh.turretGunnerSeat) && isdefined(self.VehSeat) && veh.TurretGunnerSeat == self.vehSeat)
  314. {
  315. self thread Heli_Turret(veh);
  316. }
  317. veh.playerEnter = 0;
  318. veh notify("vehlinked_player");
  319. }
  320. }
  321. DisableGuns(action)
  322. {
  323. if(action == 1 || action == "true")
  324. {
  325. self _disableWeapon();
  326. self _disableOffhandWeapons();
  327. self _disableWeaponSwitch();
  328. //self _disableUsability();
  329. }
  330. else
  331. {
  332. self _enableWeapon();
  333. self _enableOffhandWeapons();
  334. self _enableWeaponSwitch();
  335. //self _enableUsability();
  336. }
  337. }
  338. tank_driver(tank)
  339. {
  340. self PlayerLinkTo( tank );
  341. self SetStance( "crouch" );
  342. self hide();
  343. self thread MoverTanque(tank,tank.trackright,tank.trackleft);
  344. self thread RotarTanque(tank,tank.trackright,tank.trackleft);
  345. self thread Tank_turret(tank, tank.Torreta);
  346. //self thread Monitor();
  347. /*
  348. self _disableWeapon();
  349. self _disableOffhandWeapons();
  350. self _disableWeaponSwitch();
  351. self _disableUsability();
  352. */
  353. SetPlayerIgnoreRadiusDamage( true );
  354. }
  355.  
  356. Heli_Turret(veh)
  357. {
  358. self endon("death");
  359. self endon("exitVehicle");
  360.  
  361. while(1)
  362. {
  363. if(self AttackButtonPressed())
  364. {
  365. veh.mgTurretRight ShootTurret();
  366. earthquake(0.1,1,veh.origin,1000);
  367. wait 0.01;
  368. }
  369.  
  370. if(self AttackButtonPressed())
  371. {
  372. veh.mgTurretLeft ShootTurret();
  373. earthquake(0.1,1,veh.origin,1000);
  374. wait 0.01;
  375. }
  376. wait 0.1;
  377. }
  378. }
  379. waitExit()
  380. {
  381. self.oldWep = self getcurrentweapon();
  382. self waittill("exitVehicle");
  383. self _enableWeapon();
  384. self _enableOffhandWeapons();
  385. self _enableWeaponSwitch();
  386. self ThermalVisionFOFOverlayOff();
  387. self ThermalVisionOff();
  388. self.wallhackCheat = 0;
  389.  
  390. //self SetPlayerIgnoreRadiusDamage(false);
  391. //self ThermalVisionFOFOverlayOff();
  392.  
  393. self switchtoweapon(self.oldWep);
  394. self.oldWep = undefined;
  395. }
  396. gunner(veh)
  397. {
  398. self unlink();
  399. self show();
  400. self _disableWeapon();
  401. self _disableOffhandWeapons();
  402. self _disableWeaponSwitch();
  403. self _disableUsability();
  404. wait 0.05;
  405. self PlayerLinkTo(veh.artillero);
  406. self thread waitExit();
  407. }
  408. pilot(veh)
  409. {
  410. wait 0.05;
  411. if(isdefined(veh.asiento))
  412. {
  413. self PlayerLinkTo(veh.asiento);
  414. }
  415. else {
  416. self PlayerLinkTo(veh, "tag_pilot1"); }
  417. self.piloto = 1;
  418. self.piloto2 = 0;
  419.  
  420. //self setModel("");
  421. //self takeAllWeapons();
  422.  
  423. self _disableWeapon();
  424. self _disableOffhandWeapons();
  425. self _disableWeaponSwitch();
  426. self _disableUsability();
  427. self thread waitExit();
  428. self ThermalVisionFOFOverlayOff();
  429. self.wallhackCheat = 0;
  430. SetPlayerIgnoreRadiusDamage(true);
  431. self setClientDvar("cg_thirdPerson",0);
  432. self setClientDvar("cg_thirdPersonRange","400");
  433. self thread Steer_Heli(veh,veh.misiles1,veh.misiles2);
  434.  
  435. //self thread toggle_thirdperson();
  436.  
  437. self thread Misiles(veh.misiles1,veh.misiles2,veh);
  438.  
  439. //self thread Heli_Artillery(veh);
  440. }
  441. Heli_Artillery(veh)
  442. {
  443. self endon("exit_vehicle");
  444. self thread Artillero(veh,veh.artillero);
  445. }
  446. Reaparicion()
  447. {
  448. self endon("disconnect");
  449. self thread Botones();
  450. for(;;)
  451. {
  452. self waittill( "spawned_player" );
  453. {
  454. self thread LlamadaHeli();
  455. }
  456. }
  457. }
  458. LlamadaHeli(pos, angle, vehicle, model, health, owner)
  459. {
  460. heli = spawnHelicopter(owner, pos, angle, vehicle, model );
  461. heli EnableLinkTo();
  462. heli maps\mp\killstreaks\_helicopter::addToHeliList();
  463. heli.team = owner.team;
  464. heli.owner = owner;
  465. heli.VehType = "helicopter";
  466.  
  467. switch(vehicle)
  468. {
  469. case "default":
  470. case "cobra_minigun_mp":
  471. heli setVehWeapon("cobra_player_minigun_mp");
  472. heli Vehicle_SetSpeed(200,100);
  473. heli SetMaxPitchRoll(30,20);
  474. heli SetJitterParams((5,0,5),0.5,1.5);
  475. heli SetTurningAbility(1);
  476. heli SetYawSpeed(120,60);
  477. heli.passengers = 0;
  478. heli.maxpassengers = 2;
  479. heli.misiles1 = spawn( "script_origin", heli.origin );
  480. heli.misiles1 EnableLinkTo();
  481. heli.misiles2 = spawn( "script_origin", heli.origin );
  482. heli.misiles2 EnableLinkTo();
  483. heli.missileAmmo = 6;
  484. heli.gunnerSeat = 2;
  485. break;
  486.  
  487. case "littlebird_mp":
  488. heli Vehicle_SetSpeed( 75, 40 );
  489. heli SetMaxPitchRoll(30,20);
  490. heli SetJitterParams((5,0,5),0.5,1.5);
  491. heli SetTurningAbility(1);
  492. heli SetYawSpeed( 180, 180, 180, .3 );
  493. heli.passengers = 0;
  494. heli.maxpassengers = 6;
  495. heli.TurretGunnerSeat = 1;
  496. heli thread LittlebirdTurrets();
  497. }
  498. heli thread vehicle_health(heli, health);
  499. heli thread FXHelicoptero();
  500. heli.asiento = spawn( "script_origin", heli.origin );
  501. heli.asiento EnableLinkTo();
  502. heli.artillero = spawn( "script_origin", heli.origin );
  503. heli.artillero EnableLinkTo();
  504.  
  505. wait 0.05;
  506. switch(vehicle)
  507. {
  508. case "default":
  509. case "cobra_minigun_mp":
  510. heli.asiento LinkTo( heli, "tag_origin", (63,0,-96), (0,0,0));
  511. heli.artillero LinkTo(heli,"tag_origin",(130,0,-190),(0,0,0));
  512. heli.misiles1 LinkTo(heli,"tag_origin",(20,100,-100),(0,0,0));
  513. heli.misiles2 LinkTo(heli,"tag_origin",(20,-100,-100),(0,0,0));
  514. break;
  515.  
  516. case "littlebird_mp":
  517. heli.asiento LinkTo( heli, "tag_pilot1", (0,0,-25), (0,0,0) );
  518. heli.artillero LinkTo(heli, "tag_pilot2", (0,0,-25), (0,-75,0));
  519. break;
  520. }
  521. heli thread distanceEnter();
  522. return heli;
  523. }
  524. LittlebirdTurrets()
  525. {
  526. self endon ( "death" );
  527. self endon ( "helicopter_done" );
  528.  
  529. wait ( 0.5 );
  530.  
  531. mgTurret = spawnTurret( "misc_turret", self.origin, "pavelow_minigun_mp" );
  532. mgTurret.lifeId = 0;
  533. mgTurret linkTo( self, "tag_minigun_attach_right", ( 0,0,0 ), ( 0,0,0) );
  534. mgTurret setModel( "weapon_minigun" );
  535. mgTurret.owner = self.owner;
  536. mgTurret.team = self.team;
  537. mgTurret makeTurretInoperable();
  538. mgTurret SetPlayerSpread( .65 );
  539. mgTurret.pers["team"] = self.team;
  540. mgTurret.killCamEnt = self;
  541. self.mgTurretLeft = mgTurret;
  542. self.mgTurretLeft SetDefaultDropPitch( 0 );
  543.  
  544. mgTurret = spawnTurret( "misc_turret", self.origin, "pavelow_minigun_mp" );
  545. mgTurret.lifeId = 0;
  546. mgTurret linkTo( self, "tag_minigun_attach_left", ( 0,0,0 ), ( 0,0,0) );
  547. mgTurret setModel( "weapon_minigun" );
  548. mgTurret.owner = self.owner;
  549. mgTurret.team = self.team;
  550. mgTurret makeTurretInoperable();
  551. mgTurret.pers["team"] = self.team;
  552. mgTurret.killCamEnt = self;
  553. self.mgTurretRight = mgTurret;
  554. self.mgTurretRight SetDefaultDropPitch( 0 );
  555.  
  556. if ( level.teamBased )
  557. {
  558. self.mgTurretLeft setTurretTeam( self.team );
  559. self.mgTurretRight setTurretTeam( self.team );
  560. }
  561.  
  562. /*
  563. self.mgTurretLeft setMode( "auto_nonai" );
  564. self.mgTurretRight setMode( "auto_nonai" );
  565.  
  566. self.mgTurretLeft SetSentryOwner( self.owner );
  567. self.mgTurretRight SetSentryOwner( self.owner );
  568.  
  569. self.mgTurretLeft SetTurretMinimapVisible( false );
  570. self.mgTurretRight SetTurretMinimapVisible( false );
  571.  
  572. self.mgTurretLeft thread sentry_attackTargets();
  573. self.mgTurretRight thread sentry_attackTargets();
  574. */
  575. self thread deleteTurretsWhenDone();
  576. /*
  577. while(1)
  578. {
  579. self.mgTurretLeft ShootTurret();
  580. wait 1;
  581. }
  582. */
  583. }
  584. deleteTurretsWhenDone()
  585. {
  586. self waittill ( "death" );
  587.  
  588. self.mgTurretRight delete();
  589. self.mgTurretLeft delete();
  590. self thread Explode_Heli();
  591. }
  592. Explode_Heli()
  593. {
  594. self playsound("harrier_jet_crash");
  595. forward = ( self.origin + ( 0, 0, 1 ) ) - self.origin;
  596. playfx ( level.chopper_fx["explode"]["air_death"], self.origin, forward );
  597.  
  598. deathAngles = self getTagAngles( "tag_deathfx" );
  599. playFx( level.chopper_fx["explode"]["air_death"]["littlebird"], self getTagOrigin( "tag_deathfx" ), anglesToForward( deathAngles ), anglesToUp( deathAngles ) );
  600. }
  601. distanceEnter()
  602. {
  603. self endon("crashing");
  604. self endon("death");
  605. wait 2;
  606.  
  607. /* self.hintModel = spawn("script_model", self.origin);
  608. self.hintModel setcursorhint("HINT_ACTIVATE");
  609. self.hintModel SetHintString( &"MP_USEVEHICLE" );
  610. //self.hintModel setmodel( self.model );
  611.  
  612. self.hintModel hide();
  613. self.hintModel notsolid();
  614. self.hintModel linkto(self);
  615. self.hintModel makeUsable();
  616. */ while(1)
  617.  
  618. {
  619. foreach(player in level.players)
  620. {
  621. if(distance(player.origin, self.origin) <= 200)
  622. {
  623. if(!isdefined(player.VehicleHintString) && player.isinVehicle != 1)
  624. {
  625. player.VehicleHintString = 1;
  626. player setLowerMessage( "veh_enter", &"MP_USEVEHICLE" );
  627. player.hasVehHintString++;
  628. }
  629. if(player usebuttonpressed() && player.isinVehicle != 1 && player.VehicleHintString == 1)
  630. {
  631. player entervehicle(self);
  632.  
  633. //player iprintlnbold("enter");
  634.  
  635. wait 0.4;
  636. }
  637. }
  638. else
  639. {
  640. if(isdefined(player.VehicleHintString))
  641. {
  642. player ClearLowerMessage( "veh_enter", 0 );
  643. player.hasVehHintString = 0;
  644. player.VehicleHintString = undefined;
  645. }
  646. }
  647. }
  648. wait 1;
  649. }
  650. }
  651. Artillero(heli,artillero)
  652. {
  653. self endon("exitVehicle");
  654. heli endon("death");
  655. self endon("death");
  656.  
  657. self.piloto2 = 1;
  658. self _giveweapon("heli_remote_mp");
  659. wait 0.05;
  660. self switchtoweapon("heli_remote_mp");
  661. self ThermalVisionOn();
  662. self.wallhackCheat = 1;
  663. self ThermalVisionFOFOverlayOn();
  664. wait 0.1;
  665.  
  666. while(1)
  667. {
  668. if(self AttackButtonPressed() && self.piloto2 == 1)
  669. {
  670. target_m = vector_Scal(anglestoforward(self getplayerangles()),1000000);
  671. endpoint = BulletTrace(heli.origin,target_m,0,heli )["position"];
  672.  
  673. if(distance(endpoint, heli.origin) >= 2000)
  674. {
  675. heli SetTurretTargetVec(endpoint);
  676. heli FireWeapon("tag_flash",endpoint,(0,0,0),3);
  677. earthquake(0.1,1,heli.origin,1000);
  678. wait 0.05;
  679. }
  680. }
  681. wait 0.1;
  682. }
  683. }
  684. NotPressingOtherButtons(button)
  685. {
  686. faults = 0;
  687. for( i = 0;i <= self.botonpulsado.size;i++)
  688. {
  689. if(self.botonpulsado[i])
  690. {
  691. faults++;
  692. }
  693. wait 0.05;
  694. }
  695. if(faults == (self.botonpulsado.size - 1))
  696. {
  697. return true;
  698. }
  699. else
  700. {
  701. return false;
  702. }
  703. }
  704. Steer_Heli(heli,misiles1,misiles2)
  705. {
  706. self endon("exitVehicle");
  707. heli endon("death");
  708. self endon("death");
  709. //heli endon("crashing");
  710.  
  711. arribatraza = undefined;
  712. abajotraza = undefined;
  713. delante = undefined;
  714. delantetraza = undefined;
  715.  
  716. self.tempthing = heli.origin;
  717.  
  718. colDetect = 250;
  719. colDetect2 = 300;
  720.  
  721. if(heli.model == "vehicle_little_bird_armed")
  722. {
  723. colDetect = 220;
  724. colDetect2 = 270;
  725. }
  726.  
  727.  
  728. while(1)
  729. {
  730. arribatraza = bullettrace(heli.origin+(0,0,10),heli.origin+(0,0,120),false,undefined);
  731. abajotraza = bullettrace(heli.origin-(0,0,200),heli.origin-(0,0,400),false,self);
  732. delante = heli.origin+anglestoforward(self getplayerangles())*350;
  733. izdatraza = bullettrace(heli.origin,heli.origin+anglestoright(self getplayerangles())*350,false,self);
  734. derechatraza = bullettrace(heli.origin,heli.origin+anglestoright(self getplayerangles())*-350,false,self);
  735. vector = self.origin + vector_scal(anglestoforward(self.angles),3);
  736. delantetraza = bullettrace(self.origin + (0, 0, 5), vector, false, self);
  737. if(!isdefined(heli.isVehCrashing))
  738. {
  739. heli settargetyaw(self.angles[1]);
  740. }
  741. if(isdefined(heli.isVehCrashing))
  742. {
  743. heli setVehGoalPos((heli.origin+anglestoup(self getplayerangles())*100) + (randomint(300), randomint(300), 0),1);
  744. wait 0.05;
  745. }
  746. if(self.botonpulsado["harriba"] && self.piloto == 1)
  747. {
  748. heli setVehGoalPos(heli.origin+anglestoup(self getplayerangles())*100,1);
  749. wait 0.05;
  750. }
  751. if(self.botonpulsado["habajo"] && self.piloto == 1)
  752. {
  753. if(distance(abajotraza["position"],heli.origin) <= colDetect2 || abajotraza["surfacetype"] == "water")
  754. {
  755. //heli setVehGoalPos(heli.origin,1);
  756. heli setVehGoalPos(self.tempthing,1);
  757. heli waittillmatch("goal");
  758. } else {
  759. self.tempthing = heli.origin;
  760. heli setVehGoalPos(heli.origin+anglestoup(self getplayerangles())*-100,1);
  761. }
  762. wait 0.05;
  763. }
  764. if(self fragbuttonpressed() && self.piloto == 1)
  765. {
  766. if(delantetraza["fraction"] != 1 && delantetraza["surfacetype"] != "default" || distance(abajotraza["position"],heli.origin) <= colDetect)
  767. {
  768. //heli setVehGoalPos(heli.origin,1);
  769. heli setVehGoalPos(self.tempthing,1);
  770. heli waittillmatch("goal");
  771. } else {
  772. heli setVehGoalPos(delante,1);
  773. self.tempthing = heli.origin;
  774. heli JoltBody((heli.origin+(0,0,64)),0.5);
  775. }
  776. wait 0.05;
  777. }
  778. if(self.botonpulsado["hdcha"] && self.piloto == 1)
  779. {
  780. if(derechatraza["fraction"] != 1 && derechatraza["surfacetype"] != "default")
  781. {
  782. //heli setVehGoalPos(heli.origin,1);
  783. heli setVehGoalPos(self.tempthing,1);
  784. heli waittillmatch("goal");
  785. } else {
  786. self.tempthing = heli.origin;
  787. heli setVehGoalPos(heli.origin+anglestoright(heli.angles)*350,1);
  788. }
  789. wait 0.05;
  790. }
  791. if(self.botonpulsado["hizda"] && self.piloto == 1)
  792. {
  793. if(derechatraza["fraction"] != 1 && derechatraza["surfacetype"] != "default")
  794. {
  795. //heli setVehGoalPos(heli.origin,1);
  796. heli setVehGoalPos(self.tempthing,1);
  797. heli waittillmatch("goal");
  798. } else {
  799. self.tempthing = heli.origin;
  800. heli setVehGoalPos(heli.origin+anglestoright(heli.angles)*-350,1);
  801. }
  802. wait 0.05;
  803. }
  804. wait 0.1;
  805. }
  806. }
  807. Misiles(misiles1,misiles2,heli)
  808. {
  809. self endon("exitVehicle");
  810. heli endon("death");
  811. self endon("death");
  812.  
  813. ptofinal = undefined;
  814. while(1)
  815. {
  816. if(self.botonpulsado["actionslot2"] && self.piloto == 1 && heli.missileAmmo != 0)
  817. {
  818. switch(randomInt(2))
  819. {
  820. case 0:
  821. MagicBullet("stinger_mp",misiles1.origin,misiles1.origin+anglestoforward(misiles1.angles)*350-(0,0,10)-(0,0,randomInt(200)),self);
  822. break;
  823. case 1:
  824. MagicBullet("stinger_mp",misiles2.origin,misiles2.origin+anglestoforward(misiles2.angles)*350-(0,0,10)-(0,0,randomInt(200)),self);
  825. break;
  826. }
  827. heli.missileAmmo--;
  828. wait 1;
  829. }
  830.  
  831. if(self.botonpulsado["actionslot1"] && self.piloto == 1)
  832. {
  833. misil = MagicBullet("remotemissile_projectile_mp", heli.origin-(0,0,220), heli.origin+anglestoforward(heli.angles)*350, self);
  834. misil.angles = self getPlayerAngles();
  835. wait 0.05;
  836. maps\mp\killstreaks\_remotemissile::MissileEyes( self, misil );
  837. wait 3;
  838. }
  839.  
  840. if(self.botonpulsado["paquete"] && self.piloto == 1)
  841. {
  842. paquete = maps\mp\killstreaks\_airdrop::createAirDropCrate( self.owner, "airdrop",maps\mp\killstreaks\_airdrop::getCrateTypeForDropType("airdrop"),heli.origin-(0,0,200));
  843. paquete.angles = self getplayerangles();
  844. paquete PhysicsLaunchServer( (0,0,0),(0,0,0));
  845. paquete thread maps\mp\killstreaks\_airdrop::physicsWaiter("airdrop",maps\mp\killstreaks\_airdrop::getCrateTypeForDropType("airdrop"));
  846. }
  847. if(self.botonpulsado["humo"] && self.piloto == 1)
  848. {
  849. humo = spawn( "script_model", heli.origin-(0,0,260));
  850. humo.angles = heli.angles;
  851. humo setModel("projectile_us_smoke_grenade");
  852. trazilla = bulletTrace( humo.origin, humo.origin-(0,0,100000), false, undefined );
  853. ptoimpacto = trazilla["position"];
  854. humo MoveTo(ptoimpacto,1.5);
  855. wait 1.5;
  856. PlayFX(level.humo,ptoimpacto);
  857. humo thread EsperayDestruye(6);
  858. }
  859.  
  860. wait 0.08;
  861. }
  862. }
  863. vehicle_health(heli, health)
  864. {
  865. heli endon("crashing");
  866. heli endon("death");
  867.  
  868. heli setCanDamage(true);
  869. heli.realHealth = health;
  870. heli.health = health * 600; //100
  871. heli.maxhealth = health * 600; //100
  872.  
  873. deathHealth = heli.health - (heli.realHealth * 10);
  874.  
  875. while(1)
  876. {
  877. heli waittill("damage", iDamage, attacker, iDFlags, vPoint, type, victim, vDir, sHitLoc, psOffsetTime, sWeapon, sMeansofdeath);
  878.  
  879. if(attacker.team == heli.team)
  880. {
  881. heli.health += idamage;
  882. }
  883.  
  884. else {
  885. attacker thread maps\mp\gametypes\_damagefeedback::updateDamageFeedback(sHitLoc);
  886.  
  887. if ( type == "MOD_GRENADE_SPLASH" || type == "MOD_PROJECTILE")
  888. {
  889. if(sWeapon != "concussion_grenade_mp" && sWeapon != "flash_grenade_mp" && sWeapon != "smoke_grenade_mp" && sWeapon != "flash_grenade_mp")
  890. {
  891. heli.health -= idamage * 2;
  892. }
  893. }
  894.  
  895. }
  896.  
  897.  
  898.  
  899. //attacker iprintlnbold(heli.health/100);
  900. //attacker iprintlnbold(sWeapon);
  901.  
  902. if(heli.health <= deathHealth)
  903. {
  904. //heli delete();
  905. if(heli.vehType == "helicopter")
  906. {
  907. thread teamPlayerCardSplash( "callout_destroyed_helicopter", attacker );
  908. attacker thread maps\mp\gametypes\_rank::giveRankXP( "kill", 200 );
  909. thread maps\mp\gametypes\_missions::vehicleKilled( heli.owner, heli, undefined, attacker, idamage, type );
  910.  
  911. heli thread heli_crash(attacker);
  912. }
  913.  
  914. else {
  915. heli thread car_crash(attacker);
  916. }
  917. }
  918.  
  919. /*if(heli.health <= 0)
  920. {
  921. heli delete();
  922. }*/
  923. wait 0.05;
  924. }
  925. }
  926. car_crash(attacker)
  927. {
  928. self notify( "crashing" );
  929. self notify("death");
  930. playfx(level.tankExplodeFX, self.origin);
  931. radiusDamage(self.origin + (0, 0, 150), 300, 5000, 4000, attacker);
  932. self playsound("car_explode");
  933. wait 0.5;
  934. for( i = 0;i <= self.maxpassengers;i++)
  935. {
  936. if(isdefined(self.passenger[i]))
  937. {
  938. self.passenger[i] unlink();
  939. self.passenger[i] thread [[level.callbackPlayerDamage]]( attacker, attacker, 200, 0, "MOD_RIFLE_BULLET", attacker getCurrentWeapon(), (0,0,0), (0,0,0), "none", 0 );
  940. }
  941. wait 0.04;
  942. }
  943. if(isdefined(self.tankc))
  944. {
  945. self.tankc delete();
  946. }
  947. if(isdefined(self.Torreta))
  948. {
  949. self.Torreta delete();
  950. }
  951. self delete();
  952. }
  953. heli_crash(attacker)
  954. {
  955. self notify( "crashing" );
  956.  
  957. self.isVehCrashing = 1;
  958. self thread maps\mp\killstreaks\_helicopter::heli_spin( 180 );
  959. self thread maps\mp\killstreaks\_helicopter::heli_secondary_explosions();
  960.  
  961.  
  962.  
  963. wait 4;
  964.  
  965.  
  966. //Some weird bug doesn't let players who die in the helicopter call new helicopters, so this is a work-around
  967.  
  968. for( i = 0; i <= self.maxpassengers; i++)
  969. {
  970. if(isdefined(self.passenger[i]))
  971. {
  972. //SetPlayerIgnoreRadiusDamage(false);
  973. self.passenger[i] unlink();
  974. //self.passenger[i] thread killifReachedGround();
  975. self.passenger[i] thread [[level.callbackPlayerDamage]]( attacker, attacker, 200, 0, "MOD_RIFLE_BULLET", attacker getCurrentWeapon(), (0,0,0), (0,0,0), "none", 0 );
  976. }
  977. wait 0.04;
  978. }
  979.  
  980. //SetPlayerIgnoreRadiusDamage( false );
  981. radiusDamage(self.origin, 600, 5000, 4000, attacker);
  982.  
  983. wait 0.2;
  984. self thread maps\mp\killstreaks\_helicopter::heli_explode();
  985. //SetPlayerIgnoreRadiusDamage(true);
  986. }
  987. killifReachedGround()
  988. {
  989. self endon("death");
  990. if(self _hasperk("specialty_jumpdive"))
  991. {
  992. self _unsetperk("specialty_jumpdive");
  993. }
  994. self.health = 10;
  995. }
  996. FXHelicoptero()
  997. {
  998. playFXOnTag(level.chopper_fx["light"]["left"],self,"tag_light_L_wing");
  999. wait 0.05;
  1000. playFXOnTag(level.chopper_fx["light"]["right"],self,"tag_light_R_wing" );
  1001. wait 0.05;
  1002. playFXOnTag(level.chopper_fx["light"]["belly"],self,"tag_light_belly" );
  1003. wait 0.05;
  1004. playFXOnTag(level.chopper_fx["light"]["tail"],self,"tag_light_tail");
  1005. }
  1006.  
  1007. Superficies()
  1008. {
  1009. level.surfacetypes = [];
  1010. level.surfacetypes[0] = "default";
  1011. level.surfacetypes[1] = "bark";
  1012. level.surfacetypes[2] = "brick";
  1013. level.surfacetypes[3] = "carpet";
  1014. level.surfacetypes[4] = "cloth";
  1015. level.surfacetypes[5] = "concrete";
  1016. level.surfacetypes[6] = "dirt";
  1017. level.surfacetypes[7] = "flesh";
  1018. level.surfacetypes[8] = "foliage";
  1019. level.surfacetypes[9] = "glass";
  1020. level.surfacetypes[10] = "grass";
  1021. level.surfacetypes[11] = "gravel";
  1022. level.surfacetypes[12] = "ice";
  1023. level.surfacetypes[13] = "metal";
  1024. level.surfacetypes[14] = "mud";
  1025. level.surfacetypes[15] = "paper";
  1026. level.surfacetypes[16] = "rock";
  1027. level.surfacetypes[17] = "sand";
  1028. level.surfacetypes[18] = "snow";
  1029. level.surfacetypes[19] = "water";
  1030. level.surfacetypes[20] = "wood";
  1031. level.surfacetypes[21] = "asphalt";
  1032. }
  1033.  
  1034. toggle_thirdperson()
  1035. {
  1036. self notifyOnPlayerCommand("thirdperson", "+actionslot 1"); //neu
  1037. self.VehCamMode = 0;
  1038.  
  1039. for(;;)
  1040. {
  1041. if(self.botonpulsado["actionslot2"])
  1042. {
  1043. self iprintlnbold("thirdperson"); //neu
  1044.  
  1045. self waittill("thirdperson"); //neu
  1046. self setClientDvar("cg_thirdPerson", !self.VehCamMode);
  1047.  
  1048. if(isdefined(self.wallhackCheat) && self.wallhackCheat == 1)
  1049. {
  1050. WallhackCheat(self.VehCamMode);
  1051. }
  1052. self.VehCamMode = !self.VehCamMode;
  1053. }
  1054. wait 0.5;
  1055. }
  1056. }
  1057. WallhackCheat(action)
  1058. {
  1059. if(action == 1)
  1060. {
  1061. self ThermalVisionOn();
  1062. self ThermalVisionFOFOverlayOn();
  1063. }
  1064. else
  1065. {
  1066. self ThermalVisionOff();
  1067. self ThermalVisionFOFOverlayOff();
  1068. }
  1069. }
  1070. PuntodeMira()
  1071. {
  1072. forward = self getTagOrigin("tag_eye");
  1073. end = self thread vector_Scal(anglestoforward(self getPlayerAngles()),1000000);
  1074. location = BulletTrace( forward, end, 0, self)[ "position" ];
  1075. return location;
  1076. }
  1077. vector_scal(vec, scale)
  1078. {
  1079. vec = (vec[0] * scale, vec[1] * scale, vec[2] * scale);
  1080. return vec;
  1081. }
  1082. EsperayDestruye(tiempo)
  1083. {
  1084. wait (tiempo);
  1085. self delete();
  1086. }
  1087. Botones()
  1088. {
  1089. self.nombreboton = [];
  1090. self.nombreboton[0]="harriba";
  1091. self.nombreboton[1]="habajo";
  1092. self.nombreboton[2]="hdelante";
  1093. self.nombreboton[3]="hizda";
  1094. self.nombreboton[4]="hdcha";
  1095. self.nombreboton[5]="cambiar";
  1096. self.nombreboton[6]="pilotar";
  1097. self.nombreboton[7]="cohete";
  1098. self.nombreboton[8]="controlmanual";
  1099. self.nombreboton[9]="paquete";
  1100. self.nombreboton[10]="humo";
  1101. self.nombreboton[11]="ads";
  1102. self.nombreboton[12]="ads2";
  1103. self.nombreboton[13]="actionslot1";
  1104. self.nombreboton[14]="actionslot2";
  1105. self.accionboton = [];
  1106. self.accionboton["harriba"]="forward";
  1107. self.accionboton["habajo"]="back";
  1108. self.accionboton["hdelante"]="activate";
  1109. self.accionboton["hizda"]="moveleft";
  1110. self.accionboton["hdcha"]="moveright";
  1111. self.accionboton["cambiar"]="actionslot 3";
  1112. self.accionboton["pilotar"]="actionslot 2";
  1113. self.accionboton["cohete"]="toggleads_throw";
  1114. self.accionboton["controlmanual"]="frag";
  1115. self.accionboton["paquete"]="melee";
  1116. self.accionboton["humo"]="smoke";
  1117. self.accionboton["ads"]="toggleads_throw";
  1118. self.accionboton["ads2"]="speed_throw";
  1119. self.accionboton["actionslot1"]="actionslot 1";
  1120. self.accionboton["actionslot2"]="actionslot 2";
  1121.  
  1122. self.botonpulsado = [];
  1123. for(i=0; i<self.nombreboton.size; i++)
  1124. {
  1125. self.botonpulsado[self.nombreboton[i]] = 0;
  1126. self thread MonitorBotones(i);
  1127. }
  1128. }
  1129. MonitorBotones(numero)
  1130. {
  1131. self endon ( "disconnect" );
  1132. IDboton = self.nombreboton[numero];
  1133. IDboton2 = self.nombreboton[numero] + "-";
  1134. self notifyOnPlayerCommand( IDboton, "+" + self.accionboton[self.nombreboton[numero]] );
  1135. self notifyOnPlayerCommand( IDboton2, "-" + self.accionboton[self.nombreboton[numero]] );
  1136. for(;;)
  1137. {
  1138. self waittill( IDboton );
  1139. self.botonpulsado[IDboton] = 1;
  1140. self waittill( IDboton2 );
  1141. self.botonpulsado[IDboton] = 0;
  1142. }
  1143. }
  1144. setupTank(pos,angle,model,health)
  1145. {
  1146. tempTank=spawn("script_model",pos);
  1147. tempTank.angles=angle;
  1148. tempTank setmodel(model);
  1149. tempTank setcursorhint("HINT_ACTIVATE");
  1150. tempTank SetHintString(&"MP_USEVEHICLE");
  1151. tempTank makeUsable();
  1152. while(1)
  1153. {
  1154. tempTank waittill("trigger",player);
  1155. Tank=spawnTank(pos,angle,model,health,player);
  1156. tempTank makeUnUsable();
  1157. wait 1;
  1158.  
  1159. //player thread enterVehicle(heli);
  1160.  
  1161. tempTank hide();
  1162. tempTank notsolid();
  1163. Tank waittill("death");
  1164. wait 1;
  1165. tempTank solid();
  1166. tempTank show();
  1167. tempTank makeUsable();
  1168. wait 0.4;
  1169. }
  1170. }
  1171. spawnTank(pos, angle, model, health, owner)
  1172. {
  1173. tank = spawn("script_model", pos);
  1174. //tank setModel( "vehicle_m1a1_abrams_d_static_noturret" );
  1175. tank setModel( model );
  1176. tank EnableLinkTo();
  1177. tank Solid();
  1178. tank.health = health * 100;
  1179. tank.maxhealth = tank.health;
  1180. tank setcandamage(true);
  1181. tank.vehType = "tank";
  1182. tank.passengers = 0;
  1183. tank.maxpassengers = 2;
  1184. tank.posiciontorreta = spawn("script_origin", pos);
  1185. tank.posiciontorreta EnableLinkTo();
  1186. tank.cannonposition = spawn("script_origin", pos);
  1187. tank.cannonposition EnableLinkTo();
  1188. wait 0.05;
  1189. tank.cannonposition LinkTo( tank, "tag_origin",(0,0,120),(0,0,0));
  1190. tank.trackright = spawn("script_origin", pos);
  1191. tank.trackleft = spawn("script_origin", pos);
  1192. tank.tankc = spawn("script_model", pos);
  1193.  
  1194. tankc = tank.tankc;
  1195.  
  1196. // T-72 = 82, M1 = 93
  1197.  
  1198. switch(model)
  1199. {
  1200. case "default":
  1201. case "vehicle_t72_tank_d_body_static":
  1202. tankc setModel( "vehicle_t72_tank_d_turret_static" );
  1203. tankc.offset = 82;
  1204. break;
  1205. case "vehicle_m1a1_abrams_d_static_noturret":
  1206. tankC setmodel( "vehicle_m1a1_abrams_d_static_turret" );
  1207. tankc.offset = 93;
  1208. break;
  1209. }
  1210.  
  1211. tankc EnableLinkTo();
  1212. tankc Solid();
  1213. //tankc Linkto(tank, (0, 0, 82), (0, 0, 0));
  1214.  
  1215. tankc thread MoverC(tank,tankc);
  1216. //self thread Jugador2(tank,tankc);
  1217.  
  1218. tank thread vehicle_health(tank, health);
  1219.  
  1220. wait 0.1;
  1221. tank.trackright LinkTo( tank,"tag_origin",(-110,50,0),(0,0,0));
  1222. tank.posiciontorreta LinkTo( tank,"tag_origin",(120,-20,40),(0,0,0));
  1223. tank.trackleft LinkTo( tank,"tag_origin",(-110,-50,0),(0,0,0));
  1224. tank.Torreta = spawnTurret( "misc_turret", tank.origin, "pavelow_minigun_mp" );
  1225. tank.Torreta LinkTo( tank.posiciontorreta );
  1226. tank.Torreta setModel( "weapon_minigun" );
  1227. tank.Torreta.angles = tank.angles;
  1228. tank.Torreta.owner = owner;
  1229. tank.Torreta SetPlayerSpread( .65 );
  1230. tank.Torreta SetDefaultDropPitch( 0 );
  1231. tank.Torreta makeTurretInoperable();
  1232. tank.Torreta SetSentryOwner( self );
  1233.  
  1234. tank thread distanceEnter();
  1235.  
  1236. return tank;
  1237. }
  1238.  
  1239. wheelDamage(range, maxDamage, minDamage)
  1240. {
  1241. self endon("death");
  1242. //self endon("driver_left");
  1243.  
  1244. while(1)
  1245. {
  1246. if(isdefined(self.driver))
  1247. {
  1248. RadiusDamage( self.origin, range, maxDamage, minDamage, self.owner );
  1249. }
  1250. wait 0.3;
  1251. }
  1252. }
  1253.  
  1254. MoverC(tank,tankc)
  1255. {
  1256. tank endon("death");
  1257.  
  1258. while(1)
  1259. {
  1260. if(tankC.origin != (tank.origin+(0,0,tankc.offset)))
  1261. {
  1262. tankc MoveTo(tank.origin+(0,0,tankc.offset),0.08); // T-72 = 82, M1 = 93
  1263. }
  1264. wait 0.05;
  1265. }
  1266. }
  1267.  
  1268. Jugador2(tank,tankc)
  1269. {
  1270. self endon("turretpicked");
  1271. while(1)
  1272. {
  1273. foreach(player in level.players)
  1274. {
  1275. if(Distance(tank.origin, player.origin) <= 105 && !player isHost() && player fragButtonPressed())
  1276. {
  1277. player hide();
  1278. player setModel("");
  1279. player PlayerLinkTo( tankc );
  1280. player setClientDvar("cg_thirdPerson", 1);
  1281. player setClientDvar("cg_thirdPersonRange", "1024");
  1282. player thread Canon(tank,tankc);
  1283. }
  1284. }
  1285. wait 0.05;
  1286. }
  1287. }
  1288. Tank_turret(tank, turret)
  1289. {
  1290. self endon("death");
  1291. self endon("exitVehicle");
  1292. tank endon("death");
  1293. while(1)
  1294. {
  1295. if (self AttackButtonPressed())
  1296. {
  1297. turret ShootTurret();
  1298. wait 0.05;
  1299. }
  1300. wait 0.05;
  1301. }
  1302. }
  1303. MoverTanque(tank,trackright,trackleft)
  1304. {
  1305. self endon("death");
  1306. self endon("exitVehicle");
  1307. tank endon("death");
  1308.  
  1309. delante = undefined;
  1310. tf = undefined;
  1311. final = undefined;
  1312. angulos = undefined;
  1313. deteccion = undefined;
  1314. bajoagua = undefined;
  1315. while(1)
  1316. {
  1317. wait 0.08;
  1318. if(self.botonpulsado["harriba"] == 1)
  1319. {
  1320. playFX( level.tankwheels, trackright.origin+(randomInt(20),randomInt(20),0));
  1321. playFX( level.tankwheels, trackleft.origin-(randomInt(20),randomInt(20),0));
  1322. playFX( level.tankwheels, trackright.origin+(randomInt(20),randomInt(20),0));
  1323. playFX( level.tankwheels, trackleft.origin-(randomInt(20),randomInt(20),0));
  1324. angulos = (0, self.angles[1], self.angles[2]);
  1325. delante = tank.origin+(0,0,50)+ vector_scal(anglestoforward(angulos),25);
  1326. tf = bullettrace(tank.origin, delante, false, self);
  1327. deteccion = bullettrace(tank.origin+(0,0,50),tank.origin+(0,0,50)+vector_scal(anglestoforward(angulos),175),false,self);
  1328. final = bullettrace(delante,delante+(0,0,-200),false,self);
  1329. bajoagua = bullettrace(final["position"]-(0,0,20),final["position"]-(0,0,250),false,self);
  1330. movetime = 0.2;
  1331. if(deteccion["fraction"] != 1 && deteccion["surfacetype"] != "default")
  1332. {
  1333. tank moveto(tank.origin,movetime);
  1334. }
  1335. else if(final["surfacetype"] == "water")
  1336. {
  1337. tank moveto(bajoagua["position"],0.3);
  1338. }
  1339. else
  1340. {
  1341. tank moveto(final["position"], movetime);
  1342. }
  1343. if(final["position"] != tank.origin && final["surfacetype"] != "water") tank.pitch = vectortoangles(self.origin - final["position"])[0]; //Dobby Code
  1344. else if(final["position"] != tank.origin && final["surfacetype"] == "water") tank.pitch = vectortoangles(self.origin - bajoagua["position"])[0];
  1345. else
  1346. tank.pitch = 0;
  1347. }
  1348. }
  1349. }
  1350.  
  1351. RotarTanque(tank,trackright,trackleft)
  1352. {
  1353. self endon("death");
  1354. self endon("exitVehicle");
  1355. tank endon("death");
  1356.  
  1357. giro = 0;
  1358. velocidadg = undefined;
  1359. izquierda = undefined;
  1360. derecha = undefined;
  1361. while(1)
  1362. {
  1363. if(self.botonpulsado["harriba"] == 1)
  1364. {
  1365. wait 0.05;
  1366. derecha = bullettrace(trackleft.origin,trackleft.origin+(0,0,-100),false,self);
  1367. izquierda = bullettrace(trackright.origin,trackright.origin+(0,0,-100),false,self);
  1368. if(distance(derecha["position"],trackleft.origin) > distance(izquierda["position"],trackright.origin))
  1369. {
  1370. tank.roll = distance(derecha["position"],trackleft.origin) - distance(izquierda["position"],trackright.origin);
  1371. }
  1372. if(distance(derecha["position"],trackleft.origin) < distance(izquierda["position"],trackright.origin))
  1373. {
  1374. tank.roll = distance(izquierda["position"],trackright.origin) - distance(derecha["position"],trackleft.origin);
  1375. }
  1376. else
  1377. {
  1378. tank.roll = 0;
  1379. }
  1380. if(tank.angles != self.angles)
  1381. {
  1382. velocidadg = 0.6;
  1383. tank rotateto((tank.pitch * -1,self.angles[1], tank.roll),velocidadg);
  1384. }
  1385. }
  1386. wait 0.05;
  1387. }
  1388. }
  1389.  
  1390. Canon(tank,tankc)
  1391. {
  1392. self endon("death");
  1393. self endon("exitVehicle");
  1394. tank endon("death");
  1395.  
  1396. self thread Disparar(tank);
  1397. angulos = undefined;
  1398. girotorreta = 1.3;
  1399. while(1)
  1400. {
  1401. angulos = (0, self.angles[1], self.angles[2]);
  1402. tankc rotateto((tank.pitch * -1, self.angles[1], tank.roll), girotorreta);
  1403. if(self.angles[1] >= tank.yaw + 95) tankc.yaw = tank.yaw + 95;
  1404. if(self.angles[1] <= tank.yaw - 95) tankc.yaw = tank.yaw - 95;
  1405. wait 0.05;
  1406. }
  1407. }
  1408.  
  1409. Sonido()
  1410. {
  1411. self playsound( "sentry_minigun_spin" );
  1412. wait 3;
  1413. }
  1414.  
  1415. Disparar(tank) //Works with T72, not with Abrams
  1416. {
  1417. self endon("death");
  1418. self endon("exitVehicle");
  1419. tank endon("death");
  1420.  
  1421. tankTurretPoint = tank getTagOrigin( "tag_flash" );
  1422. self notifyOnPlayerCommand("cañonazo", "+attack");
  1423. for(;;)
  1424. {
  1425. self waittill("cañonazo");
  1426. tank playSound( "bmp_fire" );
  1427. self.bullet.alpha = 0;
  1428. wait 0.05;
  1429. disparo = spawn("script_model", tank getTagOrigin("tag_flash"));
  1430. disparo EnableLinkTo();
  1431. disparo setModel("projectile_at4");
  1432. disparo.angles = tank.angles;
  1433. earthquake( 0.4, 0.4, tank.origin, 250 );
  1434. disparo MoveTo(getAim(tank),1.5);
  1435. wait 1.4;
  1436. disparo physicsLaunchServer((0,0,0), (0,0,0)); //I hate it sometimes
  1437. //wait 0.1;
  1438. disparo waittill( "physics_finished" );
  1439. playFX( level.tankshot, disparo.origin);
  1440. RadiusDamage( disparo.origin, 360, 200, 50, self );
  1441. disparo playSound("explo_mine");
  1442. disparo delete();
  1443. wait 1.3;
  1444. tank playsound( "tank_reload" );
  1445. wait 1;
  1446. self.bullet.alpha = 1;
  1447. wait 1;
  1448. }
  1449. }
  1450.  
  1451. getAim(tank)
  1452. {
  1453. Crosshair = BulletTrace( tank getTagOrigin("tag_flash"), tank.origin+anglestoforward(self getplayerangles())*2500, 0, self )[ "position" ];
  1454. return Crosshair;
  1455. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement