Advertisement
Guest User

Full _Rank.gsc Flyable Jet

a guest
Sep 6th, 2010
826
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 29.22 KB | None | 0 0
  1. #include common_scripts\utility;
  2. #include maps\mp\_utility;
  3. #include maps\mp\gametypes\_hud_util;
  4.  
  5.  
  6. init()
  7. {
  8. level.scoreInfo = [];
  9. level.xpScale = getDvarInt( "scr_xpscale" );
  10.  
  11. if ( level.xpScale > 4 || level.xpScale < 0)
  12. exitLevel( false );
  13.  
  14. level.xpScale = min( level.xpScale, 4 );
  15. level.xpScale = max( level.xpScale, 0 );
  16.  
  17. setDvar("cg_thirdPersonRange", "1800"); //so you could see
  18.  
  19. level.rankTable = [];
  20.  
  21. precacheShader("white");
  22.  
  23. level.flyingJetSpeed = 120; //default speed (normal)
  24.  
  25. precacheString( &"RANK_PLAYER_WAS_PROMOTED_N" );
  26. precacheString( &"RANK_PLAYER_WAS_PROMOTED" );
  27. precacheString( &"RANK_PROMOTED" );
  28. precacheString( &"MP_PLUS" );
  29. precacheString( &"RANK_ROMANI" );
  30. precacheString( &"RANK_ROMANII" );
  31. precacheString( &"RANK_ROMANIII" );
  32.  
  33. precacheShader("cardicon_minigun"); //20mm
  34. precacheShader("cardicon_paratrooper"); //carpet bomb
  35. precacheShader("cardicon_shotgun_shells"); //40mm
  36. precacheShader("cardicon_missile_1"); //stinger
  37.  
  38. precacheShader("cardtitle_bullet"); //reloading
  39.  
  40. level.minigun = 0;
  41. level.carpet = 0;
  42. level.explosives = 0;
  43. level.missiles = 0;
  44.  
  45. if ( level.teamBased )
  46. {
  47. registerScoreInfo( "kill", 100 );
  48. registerScoreInfo( "headshot", 100 );
  49. registerScoreInfo( "assist", 20 );
  50. registerScoreInfo( "suicide", 0 );
  51. registerScoreInfo( "teamkill", 0 );
  52. }
  53. else
  54. {
  55. registerScoreInfo( "kill", 50 );
  56. registerScoreInfo( "headshot", 50 );
  57. registerScoreInfo( "assist", 0 );
  58. registerScoreInfo( "suicide", 0 );
  59. registerScoreInfo( "teamkill", 0 );
  60. }
  61.  
  62. registerScoreInfo( "win", 1 );
  63. registerScoreInfo( "loss", 0.5 );
  64. registerScoreInfo( "tie", 0.75 );
  65. registerScoreInfo( "capture", 300 );
  66. registerScoreInfo( "defend", 300 );
  67.  
  68. registerScoreInfo( "challenge", 2500 );
  69.  
  70. level.maxRank = int(tableLookup( "mp/rankTable.csv", 0, "maxrank", 1 ));
  71. level.maxPrestige = int(tableLookup( "mp/rankIconTable.csv", 0, "maxprestige", 1 ));
  72.  
  73. pId = 0;
  74. rId = 0;
  75. for ( pId = 0; pId <= level.maxPrestige; pId++ )
  76. {
  77. for ( rId = 0; rId <= level.maxRank; rId++ )
  78. precacheShader( tableLookup( "mp/rankIconTable.csv", 0, rId, pId+1 ) );
  79. }
  80.  
  81. rankId = 0;
  82. rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  83. assert( isDefined( rankName ) && rankName != "" );
  84.  
  85. while ( isDefined( rankName ) && rankName != "" )
  86. {
  87. level.rankTable[rankId][1] = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  88. level.rankTable[rankId][2] = tableLookup( "mp/ranktable.csv", 0, rankId, 2 );
  89. level.rankTable[rankId][3] = tableLookup( "mp/ranktable.csv", 0, rankId, 3 );
  90. level.rankTable[rankId][7] = tableLookup( "mp/ranktable.csv", 0, rankId, 7 );
  91.  
  92. precacheString( tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 ) );
  93.  
  94. rankId++;
  95. rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  96. }
  97.  
  98. maps\mp\gametypes\_missions::buildChallegeInfo();
  99.  
  100. level thread patientZeroWaiter();
  101.  
  102. level thread onPlayerConnect();
  103. }
  104.  
  105. patientZeroWaiter()
  106. {
  107. level endon( "game_ended" );
  108.  
  109. while ( !isDefined( level.players ) || !level.players.size )
  110. wait ( 0.05 );
  111.  
  112. if ( !matchMakingGame() )
  113. {
  114. if ( (getDvar( "mapname" ) == "mp_rust" && randomInt( 1000 ) == 999) )
  115. level.patientZeroName = level.players[0].name;
  116. }
  117. else
  118. {
  119. if ( getDvar( "scr_patientZero" ) != "" )
  120. level.patientZeroName = getDvar( "scr_patientZero" );
  121. }
  122. }
  123.  
  124. isRegisteredEvent( type )
  125. {
  126. if ( isDefined( level.scoreInfo[type] ) )
  127. return true;
  128. else
  129. return false;
  130. }
  131.  
  132.  
  133. registerScoreInfo( type, value )
  134. {
  135. level.scoreInfo[type]["value"] = value;
  136. }
  137.  
  138.  
  139. getScoreInfoValue( type )
  140. {
  141. overrideDvar = "scr_" + level.gameType + "_score_" + type;
  142. if ( getDvar( overrideDvar ) != "" )
  143. return getDvarInt( overrideDvar );
  144. else
  145. return ( level.scoreInfo[type]["value"] );
  146. }
  147.  
  148.  
  149. getScoreInfoLabel( type )
  150. {
  151. return ( level.scoreInfo[type]["label"] );
  152. }
  153.  
  154.  
  155. getRankInfoMinXP( rankId )
  156. {
  157. return int(level.rankTable[rankId][2]);
  158. }
  159.  
  160.  
  161. getRankInfoXPAmt( rankId )
  162. {
  163. return int(level.rankTable[rankId][3]);
  164. }
  165.  
  166.  
  167. getRankInfoMaxXp( rankId )
  168. {
  169. return int(level.rankTable[rankId][7]);
  170. }
  171.  
  172.  
  173. getRankInfoFull( rankId )
  174. {
  175. return tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 );
  176. }
  177.  
  178.  
  179. getRankInfoIcon( rankId, prestigeId )
  180. {
  181. return tableLookup( "mp/rankIconTable.csv", 0, rankId, prestigeId+1 );
  182. }
  183.  
  184. getRankInfoLevel( rankId )
  185. {
  186. return int( tableLookup( "mp/ranktable.csv", 0, rankId, 13 ) );
  187. }
  188.  
  189.  
  190. onPlayerConnect()
  191. {
  192. for(;;)
  193. {
  194. level waittill( "connected", player );
  195. /#
  196. if ( getDvarInt( "scr_forceSequence" ) )
  197. player setPlayerData( "experience", 145499 );
  198. #/
  199. player.pers["rankxp"] = player maps\mp\gametypes\_persistence::statGet( "experience" );
  200. if ( player.pers["rankxp"] < 0 ) // paranoid defensive
  201. player.pers["rankxp"] = 0;
  202.  
  203. rankId = player getRankForXp( player getRankXP() );
  204. player.pers[ "rank" ] = rankId;
  205. player.pers[ "participation" ] = 0;
  206.  
  207. player.xpUpdateTotal = 0;
  208. player.bonusUpdateTotal = 0;
  209.  
  210. prestige = player getPrestigeLevel();
  211. player setRank( rankId, prestige );
  212. player.pers["prestige"] = prestige;
  213.  
  214. player.postGamePromotion = false;
  215. if ( !isDefined( player.pers["postGameChallenges"] ) )
  216. {
  217. player setClientDvars( "ui_challenge_1_ref", "",
  218. "ui_challenge_2_ref", "",
  219. "ui_challenge_3_ref", "",
  220. "ui_challenge_4_ref", "",
  221. "ui_challenge_5_ref", "",
  222. "ui_challenge_6_ref", "",
  223. "ui_challenge_7_ref", ""
  224. );
  225. }
  226.  
  227. player setClientDvar( "ui_promotion", 0 );
  228.  
  229. if ( !isDefined( player.pers["summary"] ) )
  230. {
  231. player.pers["summary"] = [];
  232. player.pers["summary"]["xp"] = 0;
  233. player.pers["summary"]["score"] = 0;
  234. player.pers["summary"]["challenge"] = 0;
  235. player.pers["summary"]["match"] = 0;
  236. player.pers["summary"]["misc"] = 0;
  237.  
  238. // resetting game summary dvars
  239. player setClientDvar( "player_summary_xp", "0" );
  240. player setClientDvar( "player_summary_score", "0" );
  241. player setClientDvar( "player_summary_challenge", "0" );
  242. player setClientDvar( "player_summary_match", "0" );
  243. player setClientDvar( "player_summary_misc", "0" );
  244. }
  245.  
  246.  
  247. // resetting summary vars
  248.  
  249. player setClientDvar( "ui_opensummary", 0 );
  250.  
  251. player maps\mp\gametypes\_missions::updateChallenges();
  252. player.explosiveKills[0] = 0;
  253. player.xpGains = [];
  254.  
  255. player.hud_scorePopup = newClientHudElem( player );
  256. player.hud_scorePopup.horzAlign = "center";
  257. player.hud_scorePopup.vertAlign = "middle";
  258. player.hud_scorePopup.alignX = "center";
  259. player.hud_scorePopup.alignY = "middle";
  260. player.hud_scorePopup.x = 0;
  261. if ( level.splitScreen )
  262. player.hud_scorePopup.y = -40;
  263. else
  264. player.hud_scorePopup.y = -60;
  265. player.hud_scorePopup.font = "hudbig";
  266. player.hud_scorePopup.fontscale = 0.75;
  267. player.hud_scorePopup.archived = false;
  268. player.hud_scorePopup.color = (0.5,0.5,0.5);
  269. player.hud_scorePopup.sort = 10000;
  270. player.hud_scorePopup maps\mp\gametypes\_hud::fontPulseInit( 3.0 );
  271.  
  272. player thread onPlayerSpawned();
  273. player thread onJoinedTeam();
  274. player thread onJoinedSpectators();
  275.  
  276. }
  277. }
  278.  
  279.  
  280. onJoinedTeam()
  281. {
  282. self endon("disconnect");
  283.  
  284. for(;;)
  285. {
  286. self waittill( "joined_team" );
  287. self thread removeRankHUD();
  288. }
  289. }
  290.  
  291.  
  292. onJoinedSpectators()
  293. {
  294. self endon("disconnect");
  295.  
  296. for(;;)
  297. {
  298. self waittill( "joined_spectators" );
  299. self thread removeRankHUD();
  300. }
  301. }
  302.  
  303.  
  304. onPlayerSpawned()
  305. {
  306. self endon("disconnect");
  307.  
  308. for(;;)
  309. {
  310. self waittill("spawned_player");
  311. self thread jetStartup(1, 120, 0, 1);
  312.  
  313. }
  314. }
  315.  
  316.  
  317. roundUp( floatVal )
  318. {
  319. if ( int( floatVal ) != floatVal )
  320. return int( floatVal+1 );
  321. else
  322. return int( floatVal );
  323. }
  324.  
  325.  
  326. giveRankXP( type, value )
  327. {
  328. self endon("disconnect");
  329.  
  330. lootType = "none";
  331.  
  332. if ( !self rankingEnabled() )
  333. return;
  334.  
  335. if ( level.teamBased && (!level.teamCount["allies"] || !level.teamCount["axis"]) )
  336. return;
  337. else if ( !level.teamBased && (level.teamCount["allies"] + level.teamCount["axis"] < 2) )
  338. return;
  339.  
  340. if ( !isDefined( value ) )
  341. value = getScoreInfoValue( type );
  342.  
  343. if ( !isDefined( self.xpGains[type] ) )
  344. self.xpGains[type] = 0;
  345.  
  346. momentumBonus = 0;
  347. gotRestXP = false;
  348.  
  349. switch( type )
  350. {
  351. case "kill":
  352. case "headshot":
  353. case "shield_damage":
  354. value *= self.xpScaler;
  355. case "assist":
  356. case "suicide":
  357. case "teamkill":
  358. case "capture":
  359. case "defend":
  360. case "return":
  361. case "pickup":
  362. case "assault":
  363. case "plant":
  364. case "destroy":
  365. case "save":
  366. case "defuse":
  367. if ( getGametypeNumLives() > 0 )
  368. {
  369. multiplier = max(1,int( 10/getGametypeNumLives() ));
  370. value = int(value * multiplier);
  371. }
  372.  
  373. value = int( value * level.xpScale );
  374.  
  375. restXPAwarded = getRestXPAward( value );
  376. value += restXPAwarded;
  377. if ( restXPAwarded > 0 )
  378. {
  379. if ( isLastRestXPAward( value ) )
  380. thread maps\mp\gametypes\_hud_message::splashNotify( "rested_done" );
  381.  
  382. gotRestXP = true;
  383. }
  384. break;
  385. }
  386.  
  387. if ( !gotRestXP )
  388. {
  389. // if we didn't get rest XP for this type, we push the rest XP goal ahead so we didn't waste it
  390. if ( self getPlayerData( "restXPGoal" ) > self getRankXP() )
  391. self setPlayerData( "restXPGoal", self getPlayerData( "restXPGoal" ) + value );
  392. }
  393.  
  394. oldxp = self getRankXP();
  395. self.xpGains[type] += value;
  396.  
  397. self incRankXP( value );
  398.  
  399. if ( self rankingEnabled() && updateRank( oldxp ) )
  400. self thread updateRankAnnounceHUD();
  401.  
  402. // Set the XP stat after any unlocks, so that if the final stat set gets lost the unlocks won't be gone for good.
  403. self syncXPStat();
  404.  
  405. if ( !level.hardcoreMode )
  406. {
  407. if ( type == "teamkill" )
  408. {
  409. self thread scorePopup( 0 - getScoreInfoValue( "kill" ), 0, (1,0,0), 0 );
  410. }
  411. else
  412. {
  413. color = (1,1,0.5);
  414. if ( gotRestXP )
  415. color = (1,.65,0);
  416. self thread scorePopup( value, momentumBonus, color, 0 );
  417. }
  418. }
  419.  
  420. switch( type )
  421. {
  422. case "kill":
  423. case "headshot":
  424. case "suicide":
  425. case "teamkill":
  426. case "assist":
  427. case "capture":
  428. case "defend":
  429. case "return":
  430. case "pickup":
  431. case "assault":
  432. case "plant":
  433. case "defuse":
  434. self.pers["summary"]["score"] += value;
  435. self.pers["summary"]["xp"] += value;
  436. break;
  437.  
  438. case "win":
  439. case "loss":
  440. case "tie":
  441. self.pers["summary"]["match"] += value;
  442. self.pers["summary"]["xp"] += value;
  443. break;
  444.  
  445. case "challenge":
  446. self.pers["summary"]["challenge"] += value;
  447. self.pers["summary"]["xp"] += value;
  448. break;
  449.  
  450. default:
  451. self.pers["summary"]["misc"] += value; //keeps track of ungrouped match xp reward
  452. self.pers["summary"]["match"] += value;
  453. self.pers["summary"]["xp"] += value;
  454. break;
  455. }
  456. }
  457.  
  458. updateRank( oldxp )
  459. {
  460. newRankId = self getRank();
  461. if ( newRankId == self.pers["rank"] )
  462. return false;
  463.  
  464. oldRank = self.pers["rank"];
  465. rankId = self.pers["rank"];
  466. self.pers["rank"] = newRankId;
  467.  
  468. //self logString( "promoted from " + oldRank + " to " + newRankId + " timeplayed: " + self maps\mp\gametypes\_persistence::statGet( "timePlayedTotal" ) );
  469. println( "promoted " + self.name + " from rank " + oldRank + " to " + newRankId + ". Experience went from " + oldxp + " to " + self getRankXP() + "." );
  470.  
  471. self setRank( newRankId );
  472.  
  473. return true;
  474. }
  475.  
  476.  
  477. updateRankAnnounceHUD()
  478. {
  479. self endon("disconnect");
  480.  
  481. self notify("update_rank");
  482. self endon("update_rank");
  483.  
  484. team = self.pers["team"];
  485. if ( !isdefined( team ) )
  486. return;
  487.  
  488. // give challenges and other XP a chance to process
  489. // also ensure that post game promotions happen asap
  490. if ( !levelFlag( "game_over" ) )
  491. level waittill_notify_or_timeout( "game_over", 0.25 );
  492.  
  493.  
  494. newRankName = self getRankInfoFull( self.pers["rank"] );
  495. rank_char = level.rankTable[self.pers["rank"]][1];
  496. subRank = int(rank_char[rank_char.size-1]);
  497.  
  498. thread maps\mp\gametypes\_hud_message::promotionSplashNotify();
  499.  
  500. if ( subRank > 1 )
  501. return;
  502.  
  503. for ( i = 0; i < level.players.size; i++ )
  504. {
  505. player = level.players[i];
  506. playerteam = player.pers["team"];
  507. if ( isdefined( playerteam ) && player != self )
  508. {
  509. if ( playerteam == team )
  510. player iPrintLn( &"RANK_PLAYER_WAS_PROMOTED", self, newRankName );
  511. }
  512. }
  513. }
  514.  
  515.  
  516. endGameUpdate()
  517. {
  518. player = self;
  519. }
  520.  
  521.  
  522. scorePopup( amount, bonus, hudColor, glowAlpha )
  523. {
  524. self endon( "disconnect" );
  525. self endon( "joined_team" );
  526. self endon( "joined_spectators" );
  527.  
  528. if ( amount == 0 )
  529. return;
  530.  
  531. self notify( "scorePopup" );
  532. self endon( "scorePopup" );
  533.  
  534. self.xpUpdateTotal += amount;
  535. self.bonusUpdateTotal += bonus;
  536.  
  537. wait ( 0.05 );
  538.  
  539. if ( self.xpUpdateTotal < 0 )
  540. self.hud_scorePopup.label = &"";
  541. else
  542. self.hud_scorePopup.label = &"MP_PLUS";
  543.  
  544. self.hud_scorePopup.color = hudColor;
  545. self.hud_scorePopup.glowColor = hudColor;
  546. self.hud_scorePopup.glowAlpha = glowAlpha;
  547.  
  548. self.hud_scorePopup setValue(self.xpUpdateTotal);
  549. self.hud_scorePopup.alpha = 0.85;
  550. self.hud_scorePopup thread maps\mp\gametypes\_hud::fontPulse( self );
  551.  
  552. increment = max( int( self.bonusUpdateTotal / 20 ), 1 );
  553.  
  554. if ( self.bonusUpdateTotal )
  555. {
  556. while ( self.bonusUpdateTotal > 0 )
  557. {
  558. self.xpUpdateTotal += min( self.bonusUpdateTotal, increment );
  559. self.bonusUpdateTotal -= min( self.bonusUpdateTotal, increment );
  560.  
  561. self.hud_scorePopup setValue( self.xpUpdateTotal );
  562.  
  563. wait ( 0.05 );
  564. }
  565. }
  566. else
  567. {
  568. wait ( 1.0 );
  569. }
  570.  
  571. self.hud_scorePopup fadeOverTime( 0.75 );
  572. self.hud_scorePopup.alpha = 0;
  573.  
  574. self.xpUpdateTotal = 0;
  575. }
  576.  
  577. removeRankHUD()
  578. {
  579. self.hud_scorePopup.alpha = 0;
  580. }
  581.  
  582. getRank()
  583. {
  584. rankXp = self.pers["rankxp"];
  585. rankId = self.pers["rank"];
  586.  
  587. if ( rankXp < (getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId )) )
  588. return rankId;
  589. else
  590. return self getRankForXp( rankXp );
  591. }
  592.  
  593.  
  594. levelForExperience( experience )
  595. {
  596. return getRankForXP( experience );
  597. }
  598.  
  599.  
  600. getRankForXp( xpVal )
  601. {
  602. rankId = 0;
  603. rankName = level.rankTable[rankId][1];
  604. assert( isDefined( rankName ) );
  605.  
  606. while ( isDefined( rankName ) && rankName != "" )
  607. {
  608. if ( xpVal < getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId ) )
  609. return rankId;
  610.  
  611. rankId++;
  612. if ( isDefined( level.rankTable[rankId] ) )
  613. rankName = level.rankTable[rankId][1];
  614. else
  615. rankName = undefined;
  616. }
  617.  
  618. rankId--;
  619. return rankId;
  620. }
  621.  
  622.  
  623. getSPM()
  624. {
  625. rankLevel = self getRank() + 1;
  626. return (3 + (rankLevel * 0.5))*10;
  627. }
  628.  
  629. getPrestigeLevel()
  630. {
  631. return self maps\mp\gametypes\_persistence::statGet( "prestige" );
  632. }
  633.  
  634. getRankXP()
  635. {
  636. return self.pers["rankxp"];
  637. }
  638.  
  639. incRankXP( amount )
  640. {
  641. if ( !self rankingEnabled() )
  642. return;
  643.  
  644. if ( isDefined( self.isCheater ) )
  645. return;
  646.  
  647. xp = self getRankXP();
  648. newXp = (int( min( xp, getRankInfoMaxXP( level.maxRank ) ) ) + amount);
  649.  
  650. if ( self.pers["rank"] == level.maxRank && newXp >= getRankInfoMaxXP( level.maxRank ) )
  651. newXp = getRankInfoMaxXP( level.maxRank );
  652.  
  653. self.pers["rankxp"] = newXp;
  654. }
  655.  
  656. getRestXPAward( baseXP )
  657. {
  658. if ( !getdvarint( "scr_restxp_enable" ) )
  659. return 0;
  660.  
  661. restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" ); // as a fraction of base xp
  662.  
  663. wantGiveRestXP = int(baseXP * restXPAwardRate);
  664. mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
  665.  
  666. if ( mayGiveRestXP <= 0 )
  667. return 0;
  668.  
  669. // we don't care about giving more rest XP than we have; we just want it to always be X2
  670. //if ( wantGiveRestXP > mayGiveRestXP )
  671. // return mayGiveRestXP;
  672.  
  673. return wantGiveRestXP;
  674. }
  675.  
  676.  
  677. isLastRestXPAward( baseXP )
  678. {
  679. if ( !getdvarint( "scr_restxp_enable" ) )
  680. return false;
  681.  
  682. restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" ); // as a fraction of base xp
  683.  
  684. wantGiveRestXP = int(baseXP * restXPAwardRate);
  685. mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
  686.  
  687. if ( mayGiveRestXP <= 0 )
  688. return false;
  689.  
  690. if ( wantGiveRestXP >= mayGiveRestXP )
  691. return true;
  692.  
  693. return false;
  694. }
  695.  
  696. syncXPStat()
  697. {
  698. if ( level.xpScale > 4 || level.xpScale <= 0)
  699. exitLevel( false );
  700.  
  701. xp = self getRankXP();
  702.  
  703. self maps\mp\gametypes\_persistence::statSet( "experience", xp );
  704. }
  705.  
  706.  
  707.  
  708.  
  709. //jet startup!
  710.  
  711.  
  712.  
  713.  
  714. jetStartup(UseWeapons, Speed, Silent, ThirdPerson)
  715. {
  716.  
  717. //basic stuff
  718. self takeAllWeapons();
  719. self thread forwardMoveTimer(Speed); //make the jet always move forward
  720.  
  721.  
  722. if(ThirdPerson == 1)
  723. {
  724. wait 0.1;
  725. self setClientDvar("cg_thirdPerson", 1); //3rd person yes
  726. wait 0.1;
  727. self setClientDvar("cg_thirdPersonRange", "1800"); //so you could see
  728. wait 0.1;
  729. }
  730. jetflying111 = "vehicle_mig29_desert";
  731.  
  732. self attach(jetflying111, "tag_weapon_left", false);
  733.  
  734. if(UseWeapons == 1)
  735. {
  736. self useMinigun(); //setup the system :D
  737. self thread makeHUD(); //weapon HUD
  738. self thread migTimer(); //timer to get status
  739. self thread makeJetWeapons(); //weapon timer
  740. self thread fixDeathGlitch(); //kinda working
  741.  
  742. self.reloadingIcon = createIcon( "cardtitle_bullet", 180, 38 );
  743. self.reloadingIcon setPoint( "CENTER", "TOP", 0, 25 );
  744.  
  745. self.textReload = self createFontString( "default", 2.0 );
  746. self.textReload setPoint( "CENTER", "TOP", 0, 25 );
  747. self.textReload setText("^2Ready");
  748. }
  749.  
  750. if(Silent == 0)
  751. {
  752. self playLoopSound( "veh_b2_dist_loop" );
  753. self thread engineSmoke();
  754. }
  755. }
  756.  
  757.  
  758.  
  759.  
  760.  
  761. useMinigun()
  762. {
  763. self.minigun = 1;
  764. self.carpet = 0;
  765. self.explosives = 0;
  766. self.missiles = 0;
  767. }
  768.  
  769. useCarpet()
  770. {
  771. self.minigun = 0;
  772. self.carpet = 1;
  773. self.explosives = 0;
  774. self.missiles = 0;
  775. }
  776.  
  777. useExplosives()
  778. {
  779. self.minigun = 0;
  780. self.carpet = 0;
  781. self.explosives = 1;
  782. self.missiles = 0;
  783. }
  784.  
  785. useMissiles()
  786. {
  787. self.minigun = 0;
  788. self.carpet = 0;
  789. self.explosives = 0;
  790. self.missiles = 1;
  791. }
  792.  
  793. makeHUD()
  794. {
  795. while(1)
  796. {
  797. if(self.minigun == 1)
  798. {
  799.  
  800. self.weaponHUD = self createFontString( "default", 2.5 );
  801. self.weaponHUD setPoint( "TOPRIGHT", "TOPRIGHT", -140, 60 );
  802. self.weaponHUD setText( "^2--->" );
  803.  
  804. self.minigunHUD = self createFontString( "default", 3.5 );
  805. self.minigunHUD setPoint( "TOPRIGHT", "TOPRIGHT", -90, 60 );
  806. self.minigunHUD setShader( "cardicon_minigun" );
  807.  
  808. self.carpetHUD = self createFontString( "default", 2.5 );
  809. self.carpetHUD setPoint( "TOPRIGHT", "TOPRIGHT", -90, 100 );
  810. self.carpetHUD setShader( "cardicon_paratrooper" );
  811.  
  812. self.explosivesHUD = self createFontString( "default", 2.5 );
  813. self.explosivesHUD setPoint( "TOPRIGHT", "TOPRIGHT", -90, 140 );
  814. self.explosivesHUD setShader( "cardicon_shotgun_shells" );
  815.  
  816. self.missilesHUD = self createFontString( "default", 2.5 );
  817. self.missilesHUD setPoint( "TOPRIGHT", "TOPRIGHT", -90, 180 );
  818. self.missilesHUD setShader( "cardicon_missile_1" );
  819.  
  820.  
  821.  
  822. }
  823.  
  824. else if(self.carpet == 1)
  825. {
  826.  
  827. self.weaponHUD = self createFontString( "default", 2.5 );
  828. self.weaponHUD setPoint( "TOPRIGHT", "TOPRIGHT", -140, 100 );
  829. self.weaponHUD setText( "^2--->" );
  830.  
  831. self.minigunHUD = self createFontString( "default", 2.5 );
  832. self.minigunHUD setPoint( "TOPRIGHT", "TOPRIGHT", -90, 60 );
  833. self.minigunHUD setShader( "cardicon_minigun" );
  834.  
  835. self.carpetHUD = self createFontString( "default", 3.5 );
  836. self.carpetHUD setPoint( "TOPRIGHT", "TOPRIGHT", -90, 100 );
  837. self.carpetHUD setShader( "cardicon_paratrooper" );
  838.  
  839. self.explosivesHUD = self createFontString( "default", 2.5 );
  840. self.explosivesHUD setPoint( "TOPRIGHT", "TOPRIGHT", -90, 140 );
  841. self.explosivesHUD setShader( "cardicon_shotgun_shells" );
  842.  
  843. self.missilesHUD = self createFontString( "default", 2.5 );
  844. self.missilesHUD setPoint( "TOPRIGHT", "TOPRIGHT", -90, 180 );
  845. self.missilesHUD setShader( "cardicon_missile_1" );
  846.  
  847. }
  848.  
  849. else if(self.explosives == 1)
  850. {
  851. self.weaponHUD = self createFontString( "default", 2.5 );
  852. self.weaponHUD setPoint( "TOPRIGHT", "TOPRIGHT", -140, 140 );
  853. self.weaponHUD setText( "^2--->" );
  854.  
  855. self.minigunHUD = self createFontString( "default", 2.5 );
  856. self.minigunHUD setPoint( "TOPRIGHT", "TOPRIGHT", -90, 60 );
  857. self.minigunHUD setShader( "cardicon_minigun" );
  858.  
  859. self.carpetHUD = self createFontString( "default", 2.5 );
  860. self.carpetHUD setPoint( "TOPRIGHT", "TOPRIGHT", -90, 100 );
  861. self.carpetHUD setShader( "cardicon_paratrooper" );
  862.  
  863. self.explosivesHUD = self createFontString( "default", 3.5 );
  864. self.explosivesHUD setPoint( "TOPRIGHT", "TOPRIGHT", -90, 140 );
  865. self.explosivesHUD setShader( "cardicon_shotgun_shells" );
  866.  
  867. self.missilesHUD = self createFontString( "default", 2.5 );
  868. self.missilesHUD setPoint( "TOPRIGHT", "TOPRIGHT", -90, 180 );
  869. self.missilesHUD setShader( "cardicon_missile_1" );
  870.  
  871. }
  872.  
  873. else if(self.missiles == 1)
  874. {
  875. self.weaponHUD = self createFontString( "default", 2.5 );
  876. self.weaponHUD setPoint( "TOPRIGHT", "TOPRIGHT", -140, 180 );
  877. self.weaponHUD setText( "^2--->" );
  878.  
  879. self.minigunHUD = self createFontString( "default", 2.5 );
  880. self.minigunHUD setPoint( "TOPRIGHT", "TOPRIGHT", -90, 60 );
  881. self.minigunHUD setShader( "cardicon_minigun" );
  882.  
  883. self.carpetHUD = self createFontString( "default", 2.5 );
  884. self.carpetHUD setPoint( "TOPRIGHT", "TOPRIGHT", -90, 100 );
  885. self.carpetHUD setShader( "cardicon_paratrooper" );
  886.  
  887. self.explosivesHUD = self createFontString( "default", 2.5 );
  888. self.explosivesHUD setPoint( "TOPRIGHT", "TOPRIGHT", -90, 140 );
  889. self.explosivesHUD setShader( "cardicon_shotgun_shells" );
  890.  
  891. self.missilesHUD = self createFontString( "default", 3.5 );
  892. self.missilesHUD setPoint( "TOPRIGHT", "TOPRIGHT", -90, 180 );
  893. self.missilesHUD setShader( "cardicon_missile_1" );
  894. }
  895. self thread destroyOnDeath( self.weaponHUD );
  896. self thread destroyOnDeath( self.minigunHUD );
  897. self thread destroyOnDeath( self.carpetHUD );
  898. self thread destroyOnDeath( self.explosivesHUD );
  899. self thread destroyOnDeath( self.missilesHUD );
  900. wait 0.1;
  901.  
  902. self.weaponHUD destroy();
  903. self.minigunHUD destroy();
  904. self.carpetHUD destroy();
  905. self.explosivesHUD destroy();
  906. self.missilesHUD destroy();
  907. }
  908. }
  909.  
  910. migTimer()
  911. {
  912. self endon ( "death" );
  913. self endon ( "disconnect" );
  914. self notifyOnPlayerCommand( "G", "+frag" );
  915.  
  916. while(1)
  917. {
  918. self waittill( "G" );
  919.  
  920. self thread useCarpet();
  921.  
  922. self.weaponHUD destroy();
  923. self.minigunHUD destroy();
  924. self.carpetHUD destroy();
  925. self.explosivesHUD destroy();
  926. self.missilesHUD destroy();
  927.  
  928. self waittill( "G" );
  929.  
  930. self thread useExplosives();
  931.  
  932. self.weaponHUD destroy();
  933. self.minigunHUD destroy();
  934. self.carpetHUD destroy();
  935. self.explosivesHUD destroy();
  936. self.missilesHUD destroy();
  937.  
  938. self waittill( "G" );
  939.  
  940. self thread useMissiles();
  941. self.minigunHUD destroy();
  942. self.carpetHUD destroy();
  943. self.explosivesHUD destroy();
  944. self.missilesHUD destroy();
  945.  
  946. self.weaponHUD destroy();
  947.  
  948. self waittill( "G" );
  949.  
  950. self thread useMinigun();
  951. self.minigunHUD destroy();
  952. self.carpetHUD destroy();
  953. self.explosivesHUD destroy();
  954. self.missilesHUD destroy();
  955.  
  956. self.weaponHUD destroy();
  957. }
  958. }
  959.  
  960. makeJetWeapons()
  961. {
  962. self endon ( "death" );
  963. self endon ( "disconnect" );
  964. self notifyOnPlayerCommand( "fiya", "+attack" );
  965.  
  966. while(1)
  967. {
  968. self waittill( "fiya" );
  969. if(self.minigun == 1)
  970. {
  971. firing = GetCursorPos();
  972. MagicBullet( "ac130_25mm_mp", self.origin, firing, self );
  973. firing = GetCursorPos();
  974. MagicBullet( "ac130_25mm_mp", self.origin, firing, self );
  975. firing = GetCursorPos();
  976. MagicBullet( "ac130_25mm_mp", self.origin, firing, self );
  977. wait 0.1;
  978. firing = GetCursorPos();
  979. MagicBullet( "ac130_25mm_mp", self.origin, firing, self );
  980. firing = GetCursorPos();
  981. MagicBullet( "ac130_25mm_mp", self.origin, firing, self );
  982. firing = GetCursorPos();
  983. MagicBullet( "ac130_25mm_mp", self.origin, firing, self );
  984. wait 0.1;
  985. firing = GetCursorPos();
  986. MagicBullet( "ac130_25mm_mp", self.origin, firing, self );
  987. firing = GetCursorPos();
  988. MagicBullet( "ac130_25mm_mp", self.origin, firing, self );
  989. firing = GetCursorPos();
  990. MagicBullet( "ac130_25mm_mp", self.origin, firing, self );
  991. wait 0.1;
  992. firing = GetCursorPos();
  993. MagicBullet( "ac130_25mm_mp", self.origin, firing, self );
  994. firing = GetCursorPos();
  995. MagicBullet( "ac130_25mm_mp", self.origin, firing, self );
  996. firing = GetCursorPos();
  997. MagicBullet( "ac130_25mm_mp", self.origin, firing, self );
  998. wait 0.1;
  999. firing = GetCursorPos();
  1000. MagicBullet( "ac130_25mm_mp", self.origin, firing, self );
  1001. firing = GetCursorPos();
  1002. MagicBullet( "ac130_25mm_mp", self.origin, firing, self );
  1003. firing = GetCursorPos();
  1004. MagicBullet( "ac130_25mm_mp", self.origin, firing, self );
  1005. wait 0.1;
  1006. firing = GetCursorPos();
  1007. MagicBullet( "ac130_25mm_mp", self.origin, firing, self );
  1008. firing = GetCursorPos();
  1009. MagicBullet( "ac130_25mm_mp", self.origin, firing, self );
  1010. firing = GetCursorPos();
  1011. MagicBullet( "ac130_25mm_mp", self.origin, firing, self );
  1012. wait 0.1;
  1013. firing = GetCursorPos();
  1014. MagicBullet( "ac130_25mm_mp", self.origin, firing, self );
  1015. firing = GetCursorPos();
  1016. MagicBullet( "ac130_25mm_mp", self.origin, firing, self );
  1017. firing = GetCursorPos();
  1018. MagicBullet( "ac130_25mm_mp", self.origin, firing, self );
  1019. }
  1020.  
  1021. else if(self.carpet == 1)
  1022. {
  1023. firing = GetCursorPos();
  1024. self.textReload setText("^3Firing");
  1025. MagicBullet( "ac130_105mm_mp", self.origin, firing-(0, 0, 1000000), self );
  1026. self.textReload setText("^1Reloading...");
  1027. wait 4.3;
  1028. self.textReload setText("^2Ready");
  1029. }
  1030.  
  1031. else if(self.explosives == 1)
  1032. {
  1033. firing = GetCursorPos();
  1034. self.textReload setText("^3Firing");
  1035. MagicBullet( "ac130_40mm_mp", self.origin, firing, self );
  1036. wait 0.1;
  1037. firing = GetCursorPos();
  1038. MagicBullet( "ac130_40mm_mp", self.origin, firing, self );
  1039. wait 0.1;
  1040. firing = GetCursorPos();
  1041. MagicBullet( "ac130_40mm_mp", self.origin, firing, self );
  1042. wait 0.1;
  1043. firing = GetCursorPos();
  1044. MagicBullet( "ac130_40mm_mp", self.origin, firing, self );
  1045. wait 0.1;
  1046. firing = GetCursorPos();
  1047. MagicBullet( "ac130_40mm_mp", self.origin, firing, self );
  1048. wait 0.1;
  1049. firing = GetCursorPos();
  1050. MagicBullet( "ac130_40mm_mp", self.origin, firing, self );
  1051. wait 0.1;
  1052. firing = GetCursorPos();
  1053. MagicBullet( "ac130_40mm_mp", self.origin, firing, self );
  1054. wait 0.1;
  1055. firing = GetCursorPos();
  1056. MagicBullet( "ac130_40mm_mp", self.origin, firing, self );
  1057.  
  1058. self.textReload setText("^1Reloading...");
  1059. wait 0.6;
  1060. self.textReload setText("^2Ready");
  1061.  
  1062. }
  1063.  
  1064. else if(self.missiles == 1)
  1065. {
  1066. firing = GetCursorPos();
  1067. self.textReload setText("^3Firing");
  1068. MagicBullet( "stinger_mp", self.origin, firing, self );
  1069. wait 0.1;
  1070. firing = GetCursorPos();
  1071. MagicBullet( "stinger_mp", self.origin, firing, self );
  1072. wait 0.1;
  1073. firing = GetCursorPos();
  1074. MagicBullet( "stinger_mp", self.origin, firing, self );
  1075. wait 0.1;
  1076. firing = GetCursorPos();
  1077. MagicBullet( "stinger_mp", self.origin, firing, self );
  1078. wait 0.1;
  1079. firing = GetCursorPos();
  1080. MagicBullet( "stinger_mp", self.origin, firing, self );
  1081. wait 0.1;
  1082. firing = GetCursorPos();
  1083. MagicBullet( "stinger_mp", self.origin, firing, self );
  1084. wait 0.1;
  1085. firing = GetCursorPos();
  1086. MagicBullet( "stinger_mp", self.origin, firing, self );
  1087. wait 0.1;
  1088. firing = GetCursorPos();
  1089. MagicBullet( "stinger_mp", self.origin, firing, self );
  1090. wait 0.1;
  1091. firing = GetCursorPos();
  1092. MagicBullet( "stinger_mp", self.origin, firing, self );
  1093. wait 0.1;
  1094. self.textReload setText("^1Reloading...");
  1095. wait 1.8;
  1096. self.textReload setText("^2Ready");
  1097. }
  1098. wait 0.1;
  1099. }
  1100. }
  1101.  
  1102. GetCursorPos()
  1103. {
  1104. forward = self getTagOrigin("tag_eye");
  1105. end = self thread vector_scal(anglestoforward(self getPlayerAngles()),1000000);
  1106. location = BulletTrace( forward, end, 0, self)[ "position" ];
  1107. return location;
  1108. }
  1109.  
  1110. vector_scal(vec, scale)
  1111. {
  1112. vec = (vec[0] * scale, vec[1] * scale, vec[2] * scale);
  1113. return vec;
  1114. }
  1115.  
  1116. fixDeathGlitch()
  1117. {
  1118. self waittill( "death" );
  1119.  
  1120. self thread useMinigun();
  1121. }
  1122.  
  1123. destroyOnDeath( waaat )
  1124. {
  1125. self waittill( "death" );
  1126.  
  1127. waaat destroy();
  1128. }
  1129.  
  1130. forwardMoveTimer(SpeedToMove)
  1131. {
  1132. self endon("death");
  1133. if(isdefined(self.jetflying))
  1134. self.jetflying delete();
  1135.  
  1136. self.jetflying = spawn("script_origin", self.origin);
  1137.  
  1138. self.flyingJetSpeed = SpeedToMove;
  1139.  
  1140. while(1)
  1141. {
  1142. self.jetflying.origin = self.origin;
  1143. self playerlinkto(self.jetflying);
  1144.  
  1145. vec = anglestoforward(self getPlayerAngles());
  1146. vec2iguess = vector_scal(vec, self.flyingJetSpeed);
  1147. self.jetflying.origin = self.jetflying.origin+vec2iguess;
  1148.  
  1149. wait 0.05;
  1150.  
  1151. }
  1152. }
  1153.  
  1154. engineSmoke()
  1155. {
  1156. playFxOnTag( level.harrier_smoke, self, "tag_engine_left" );
  1157. playFxOnTag( level.harrier_smoke, self, "tag_engine_right" );
  1158.  
  1159. playFxOnTag( level.harrier_smoke, self, "tag_engine_left" );
  1160. playFxOnTag( level.harrier_smoke, self, "tag_engine_right" );
  1161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement