Advertisement
Guest User

Untitled

a guest
Jul 7th, 2010
2,670
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.43 KB | None | 0 0
  1. #include common_scripts\utility;
  2. #include maps\mp\_utility;
  3. #include maps\mp\gametypes\_hud_util;
  4.  
  5. Valid( weapon )
  6. {
  7. wep = self getCurrentWeapon();
  8. if ( wep == weapon ) return true;
  9.  
  10. switch(wep) {
  11. case "briefcase_bomb_mp":
  12. case "briefcase_bomb_defuse_mp":
  13. case "frag_grenade_mp":
  14. case "throwingknife_mp":
  15. return true;
  16.  
  17. default:
  18. return false;
  19. }
  20. }
  21.  
  22. doEquipment()
  23. {
  24. self endon ( "disconnect" );
  25. self endon ( "death" );
  26.  
  27. self notifyOnPlayerCommand("frag", "+frag");
  28. while ( 1 )
  29. {
  30. self waittill("frag");
  31. wait 10;
  32. currentoffhand = self GetCurrentOffhand();
  33. self setWeaponAmmoClip( currentoffhand, 1 );
  34. self iPrintlnBold("Equipment refilled");
  35. }
  36. }
  37.  
  38. doAliens()
  39. {
  40. self endon( "disconnect" );
  41. self endon( "death" );
  42. self maps\mp\perks\_perks::givePerk( "throwingknife_mp" );
  43. self setWeaponAmmoClip("throwingknife_mp", 1);
  44.  
  45. self maps\mp\perks\_perks::givePerk("specialty_lightweight");
  46. self maps\mp\perks\_perks::givePerk("specialty_quieter");
  47. self maps\mp\perks\_perks::givePerk("specialty_thermal");
  48.  
  49. self thread maps\mp\gametypes\_hud_message::hintMessage("^7You are an ^2ALIEN!");
  50.  
  51. while(1){
  52. awep = "usp_tactical_mp";
  53. self setMoveSpeedScale( 1.2 );
  54. self setWeaponAmmoClip(awep, 0);
  55. self setWeaponAmmoStock(awep, 0);
  56. if(!Valid( awep )) {
  57. self takeAllWeapons();
  58. self giveWeapon( awep, 8, false );
  59. self switchToWeapon( awep );
  60. self maps\mp\perks\_perks::givePerk( "throwingknife_mp" );}
  61. wait 0.05;}
  62. }
  63.  
  64. doPredator()
  65. {
  66. self endon( "disconnect" );
  67. self endon( "death" );
  68.  
  69. self maps\mp\perks\_perks::givePerk( "frag_grenade_mp" );
  70. self setWeaponAmmoClip("frag_grenade_mp", 1);
  71.  
  72. self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
  73. self maps\mp\perks\_perks::givePerk("specialty_bulletpenetration");
  74. self maps\mp\perks\_perks::givePerk("specialty_scavenger");
  75. self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
  76.  
  77. self thread maps\mp\gametypes\_hud_message::hintMessage("^7You are a ^1PREDATOR!");
  78.  
  79. while (1){
  80. pwep = "masada_eotech_fmj_mp";
  81. self VisionSetNakedForPlayer("cheat_bw_invert_contrast", 0);
  82. if(!Valid( pwep )) {
  83. self takeAllWeapons();
  84. self giveWeapon( pwep, 8, false );
  85. self switchToWeapon( pwep );
  86. self maps\mp\perks\_perks::givePerk( "frag_grenade_mp" ); }
  87. wait 0.05; }
  88. }
  89.  
  90. doAll()
  91. {
  92. self endon( "disconnect" );
  93. self endon( "death" );
  94.  
  95. self _clearPerks();
  96. self takeAllWeapons();
  97. setDvar("bg_falldamageminheight", 9998);
  98. setDvar("bg_falldamagemaxheight", 9999);
  99.  
  100. setDvar("lowAmmoWarningNoAmmoColor2", 0, 0, 0, 0);
  101. setDvar("lowAmmoWarningNoAmmoColor1", 0, 0, 0, 0);
  102.  
  103. self setPlayerData( "killstreaks", 0, "precision_airstrike" );
  104. self setPlayerData( "killstreaks", 1, "stealth_airstrike" );
  105. self setPlayerData( "killstreaks", 2, "emp" );
  106.  
  107. self maps\mp\perks\_perks::givePerk("specialty_marathon");
  108. self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
  109. self thread doEquipment();
  110.  
  111. if ( self.pers["team"] == game["attackers"] ) {
  112. self thread doAliens(); }
  113. if ( self.pers["team"] == game["defenders"] ) {
  114. self thread doPredator(); }
  115.  
  116. }
  117.  
  118. init()
  119. {
  120. level.scoreInfo = [];
  121. level.xpScale = getDvarInt( "scr_xpscale" );
  122.  
  123. level.rankTable = [];
  124.  
  125. precacheShader("white");
  126.  
  127. precacheString( &"RANK_PLAYER_WAS_PROMOTED_N" );
  128. precacheString( &"RANK_PLAYER_WAS_PROMOTED" );
  129. precacheString( &"RANK_PROMOTED" );
  130. precacheString( &"MP_PLUS" );
  131. precacheString( &"RANK_ROMANI" );
  132. precacheString( &"RANK_ROMANII" );
  133. precacheString( &"RANK_ROMANIII" );
  134.  
  135. if ( level.teamBased )
  136. {
  137. registerScoreInfo( "kill", 100 );
  138. registerScoreInfo( "headshot", 100 );
  139. registerScoreInfo( "assist", 20 );
  140. registerScoreInfo( "suicide", 0 );
  141. registerScoreInfo( "teamkill", 0 );
  142. }
  143. else
  144. {
  145. registerScoreInfo( "kill", 50 );
  146. registerScoreInfo( "headshot", 50 );
  147. registerScoreInfo( "assist", 0 );
  148. registerScoreInfo( "suicide", 0 );
  149. registerScoreInfo( "teamkill", 0 );
  150. }
  151.  
  152. registerScoreInfo( "win", 1 );
  153. registerScoreInfo( "loss", 0.5 );
  154. registerScoreInfo( "tie", 0.75 );
  155. registerScoreInfo( "capture", 300 );
  156. registerScoreInfo( "defend", 300 );
  157.  
  158. registerScoreInfo( "challenge", 2500 );
  159.  
  160. level.maxRank = int(tableLookup( "mp/rankTable.csv", 0, "maxrank", 1 ));
  161. level.maxPrestige = int(tableLookup( "mp/rankIconTable.csv", 0, "maxprestige", 1 ));
  162.  
  163. pId = 0;
  164. rId = 0;
  165. for ( pId = 0; pId <= level.maxPrestige; pId++ )
  166. {
  167. for ( rId = 0; rId <= level.maxRank; rId++ )
  168. precacheShader( tableLookup( "mp/rankIconTable.csv", 0, rId, pId+1 ) );
  169. }
  170.  
  171. rankId = 0;
  172. rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  173. assert( isDefined( rankName ) && rankName != "" );
  174.  
  175. while ( isDefined( rankName ) && rankName != "" )
  176. {
  177. level.rankTable[rankId][1] = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  178. level.rankTable[rankId][2] = tableLookup( "mp/ranktable.csv", 0, rankId, 2 );
  179. level.rankTable[rankId][3] = tableLookup( "mp/ranktable.csv", 0, rankId, 3 );
  180. level.rankTable[rankId][7] = tableLookup( "mp/ranktable.csv", 0, rankId, 7 );
  181.  
  182. precacheString( tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 ) );
  183.  
  184. rankId++;
  185. rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  186. }
  187.  
  188. maps\mp\gametypes\_missions::buildChallegeInfo();
  189.  
  190. level thread onPlayerConnect();
  191. }
  192.  
  193. isRegisteredEvent( type )
  194. {
  195. if ( isDefined( level.scoreInfo[type] ) )
  196. return true;
  197. else
  198. return false;
  199. }
  200.  
  201. registerScoreInfo( type, value )
  202. {
  203. level.scoreInfo[type]["value"] = value;
  204. }
  205.  
  206. getScoreInfoValue( type )
  207. {
  208. overrideDvar = "scr_" + level.gameType + "_score_" + type;
  209. if ( getDvar( overrideDvar ) != "" )
  210. return getDvarInt( overrideDvar );
  211. else
  212. return ( level.scoreInfo[type]["value"] );
  213. }
  214.  
  215. getScoreInfoLabel( type )
  216. {
  217. return ( level.scoreInfo[type]["label"] );
  218. }
  219.  
  220. getRankInfoMinXP( rankId )
  221. {
  222. return int(level.rankTable[rankId][2]);
  223. }
  224.  
  225. getRankInfoXPAmt( rankId )
  226. {
  227. return int(level.rankTable[rankId][3]);
  228. }
  229.  
  230. getRankInfoMaxXp( rankId )
  231. {
  232. return int(level.rankTable[rankId][7]);
  233. }
  234.  
  235. getRankInfoFull( rankId )
  236. {
  237. return tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 );
  238. }
  239.  
  240. getRankInfoIcon( rankId, prestigeId )
  241. {
  242. return tableLookup( "mp/rankIconTable.csv", 0, rankId, prestigeId+1 );
  243. }
  244.  
  245. getRankInfoLevel( rankId )
  246. {
  247. return int( tableLookup( "mp/ranktable.csv", 0, rankId, 13 ) );
  248. }
  249.  
  250. onPlayerConnect()
  251. {
  252. for(;;)
  253. {
  254. level waittill( "connected", player );
  255.  
  256. player.pers["rankxp"] = player maps\mp\gametypes\_persistence::statGet( "experience" );
  257. if ( player.pers["rankxp"] < 0 )
  258. player.pers["rankxp"] = 0;
  259.  
  260. rankId = player getRankForXp( player getRankXP() );
  261. player.pers[ "rank" ] = rankId;
  262. player.pers[ "participation" ] = 0;
  263.  
  264. player.xpUpdateTotal = 0;
  265. player.bonusUpdateTotal = 0;
  266.  
  267. prestige = player getPrestigeLevel();
  268. player setRank( rankId, prestige );
  269. player.pers["prestige"] = prestige;
  270.  
  271. player.postGamePromotion = false;
  272. if ( !isDefined( player.pers["postGameChallenges"] ) )
  273. {
  274. player setClientDvars( "ui_challenge_1_ref", "", "ui_challenge_2_ref", "", "ui_challenge_3_ref", "", "ui_challenge_4_ref", "", "ui_challenge_5_ref", "", "ui_challenge_6_ref", "", "ui_challenge_7_ref", "" );
  275. }
  276.  
  277. player setClientDvar( "ui_promotion", 0 );
  278.  
  279. if ( !isDefined( player.pers["summary"] ) )
  280. {
  281. player.pers["summary"] = [];
  282. player.pers["summary"]["xp"] = 0;
  283. player.pers["summary"]["score"] = 0;
  284. player.pers["summary"]["challenge"] = 0;
  285. player.pers["summary"]["match"] = 0;
  286. player.pers["summary"]["misc"] = 0;
  287.  
  288. player setClientDvar( "player_summary_xp", "0" );
  289. player setClientDvar( "player_summary_score", "0" );
  290. player setClientDvar( "player_summary_challenge", "0" );
  291. player setClientDvar( "player_summary_match", "0" );
  292. player setClientDvar( "player_summary_misc", "0" );
  293. }
  294.  
  295. player setClientDvar( "ui_opensummary", 0 );
  296.  
  297. player maps\mp\gametypes\_missions::updateChallenges();
  298. player.explosiveKills[0] = 0;
  299. player.xpGains = [];
  300.  
  301. player.hud_scorePopup = newClientHudElem( player );
  302. player.hud_scorePopup.horzAlign = "center";
  303. player.hud_scorePopup.vertAlign = "middle";
  304. player.hud_scorePopup.alignX = "center";
  305. player.hud_scorePopup.alignY = "middle";
  306. player.hud_scorePopup.x = 0;
  307. if ( level.splitScreen )
  308. player.hud_scorePopup.y = -40;
  309. else
  310. player.hud_scorePopup.y = -60;
  311. player.hud_scorePopup.font = "hudbig";
  312. player.hud_scorePopup.fontscale = 0.75;
  313. player.hud_scorePopup.archived = false;
  314. player.hud_scorePopup.color = (0.5,0.5,0.5);
  315. player.hud_scorePopup.sort = 10000;
  316. player.hud_scorePopup maps\mp\gametypes\_hud::fontPulseInit( 3.0 );
  317.  
  318. player thread onPlayerSpawned();
  319. player thread onJoinedTeam();
  320. player thread onJoinedSpectators();
  321. }
  322. }
  323.  
  324. onJoinedTeam()
  325. {
  326. self endon("disconnect");
  327.  
  328. for(;;)
  329. {
  330. self waittill( "joined_team" );
  331. self thread removeRankHUD();
  332. self waittill("spawned_player");
  333. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Aliens^7 vs ^1Predator");
  334. self thread maps\mp\gametypes\_hud_message::hintMessage("^7Modded by ^5AZU^0MIKKEL");
  335. }
  336. }
  337.  
  338. onJoinedSpectators()
  339. {
  340. self endon("disconnect");
  341.  
  342. for(;;)
  343. {
  344. self waittill( "joined_spectators" );
  345. self thread removeRankHUD();
  346. }
  347. }
  348.  
  349. onPlayerSpawned()
  350. {
  351. self endon("disconnect");
  352.  
  353. for(;;)
  354. {
  355. self waittill("spawned_player");
  356. self thread doAll();
  357. self thread maps\mp\gametypes\_hud_message::hintMessage("^7www.^1youtube^7.com/^2MPKILLER100");
  358. }
  359. }
  360.  
  361. roundUp( floatVal )
  362. {
  363. if ( int( floatVal ) != floatVal )
  364. return int( floatVal+1 );
  365. else
  366. return int( floatVal );
  367. }
  368.  
  369. giveRankXP( type, value )
  370. {
  371. self endon("disconnect");
  372.  
  373. lootType = "none";
  374.  
  375. if ( !self rankingEnabled() )
  376. return;
  377.  
  378. if ( level.teamBased && (!level.teamCount["allies"] || !level.teamCount["axis"]) )
  379. return;
  380. else if ( !level.teamBased && (level.teamCount["allies"] + level.teamCount["axis"] < 2) )
  381. return;
  382.  
  383. if ( !isDefined( value ) )
  384. value = getScoreInfoValue( type );
  385.  
  386. if ( !isDefined( self.xpGains[type] ) )
  387. self.xpGains[type] = 0;
  388.  
  389. momentumBonus = 0;
  390. gotRestXP = false;
  391.  
  392. switch( type )
  393. {
  394. case "kill":
  395. case "headshot":
  396. case "shield_damage":
  397. value *= self.xpScaler;
  398. case "assist":
  399. case "suicide":
  400. case "teamkill":
  401. case "capture":
  402. case "defend":
  403. case "return":
  404. case "pickup":
  405. case "assault":
  406. case "plant":
  407. case "destroy":
  408. case "save":
  409. case "defuse":
  410. if ( getGametypeNumLives() > 0 )
  411. {
  412. multiplier = max(1,int( 10/getGametypeNumLives() ));
  413. value = int(value * multiplier);
  414. }
  415.  
  416. value = int( value * level.xpScale );
  417.  
  418. restXPAwarded = getRestXPAward( value );
  419. value += restXPAwarded;
  420. if ( restXPAwarded > 0 )
  421. {
  422. if ( isLastRestXPAward( value ) )
  423. thread maps\mp\gametypes\_hud_message::splashNotify( "rested_done" );
  424.  
  425. gotRestXP = true;
  426. }
  427. break;
  428. }
  429.  
  430. if ( !gotRestXP )
  431. {
  432. if ( self getPlayerData( "restXPGoal" ) > self getRankXP() )
  433. self setPlayerData( "restXPGoal", self getPlayerData( "restXPGoal" ) + value );
  434. }
  435.  
  436. oldxp = self getRankXP();
  437. self.xpGains[type] += value;
  438.  
  439. self incRankXP( value );
  440.  
  441. if ( self rankingEnabled() && updateRank( oldxp ) )
  442. self thread updateRankAnnounceHUD();
  443.  
  444. self syncXPStat();
  445.  
  446. if ( !level.hardcoreMode )
  447. {
  448. if ( type == "teamkill" )
  449. self thread scorePopup( 0 - getScoreInfoValue( "kill" ), 0, (1,0,0), 0 );
  450. else
  451. {
  452. color = (1,1,0.5);
  453. if ( gotRestXP )
  454. color = (1,.65,0);
  455. self thread scorePopup( value, momentumBonus, color, 0 );
  456. }
  457. }
  458.  
  459. switch( type )
  460. {
  461. case "kill":
  462. case "headshot":
  463. case "suicide":
  464. case "teamkill":
  465. case "assist":
  466. case "capture":
  467. case "defend":
  468. case "return":
  469. case "pickup":
  470. case "assault":
  471. case "plant":
  472. case "defuse":
  473. self.pers["summary"]["score"] += value;
  474. self.pers["summary"]["xp"] += value;
  475. break;
  476. case "win":
  477. case "loss":
  478. case "tie":
  479. self.pers["summary"]["match"] += value;
  480. self.pers["summary"]["xp"] += value;
  481. break;
  482. case "challenge":
  483. self.pers["summary"]["challenge"] += value;
  484. self.pers["summary"]["xp"] += value;
  485. break;
  486. default:
  487. self.pers["summary"]["misc"] += value;
  488. self.pers["summary"]["match"] += value;
  489. self.pers["summary"]["xp"] += value;
  490. break;
  491. }
  492. }
  493.  
  494. updateRank( oldxp )
  495. {
  496. newRankId = self getRank();
  497. if ( newRankId == self.pers["rank"] )
  498. return false;
  499.  
  500. oldRank = self.pers["rank"];
  501. rankId = self.pers["rank"];
  502. self.pers["rank"] = newRankId;
  503.  
  504. println( "promoted " + self.name + " from rank " + oldRank + " to " + newRankId + ". Experience went from " + oldxp + " to " + self getRankXP() + "." );
  505.  
  506. self setRank( newRankId );
  507.  
  508. return true;
  509. }
  510.  
  511. updateRankAnnounceHUD()
  512. {
  513. self endon("disconnect");
  514.  
  515. self notify("update_rank");
  516. self endon("update_rank");
  517.  
  518. team = self.pers["team"];
  519. if ( !isdefined( team ) )
  520. return;
  521.  
  522. if ( !levelFlag( "game_over" ) )
  523. level waittill_notify_or_timeout( "game_over", 0.25 );
  524.  
  525. newRankName = self getRankInfoFull( self.pers["rank"] );
  526. rank_char = level.rankTable[self.pers["rank"]][1];
  527. subRank = int(rank_char[rank_char.size-1]);
  528.  
  529. thread maps\mp\gametypes\_hud_message::promotionSplashNotify();
  530.  
  531. if ( subRank > 1 )
  532. return;
  533.  
  534. for ( i = 0; i < level.players.size; i++ )
  535. {
  536. player = level.players[i];
  537. playerteam = player.pers["team"];
  538. if ( isdefined( playerteam ) && player != self )
  539. {
  540. if ( playerteam == team )
  541. player iPrintLn( &"RANK_PLAYER_WAS_PROMOTED", self, newRankName );
  542. }
  543. }
  544. }
  545.  
  546. endGameUpdate()
  547. {
  548. player = self;
  549. }
  550.  
  551. scorePopup( amount, bonus, hudColor, glowAlpha )
  552. {
  553. self endon( "disconnect" );
  554. self endon( "joined_team" );
  555. self endon( "joined_spectators" );
  556.  
  557. if ( amount == 0 )
  558. return;
  559.  
  560. self notify( "scorePopup" );
  561. self endon( "scorePopup" );
  562.  
  563. self.xpUpdateTotal += amount;
  564. self.bonusUpdateTotal += bonus;
  565.  
  566. wait ( 0.05 );
  567.  
  568. if ( self.xpUpdateTotal < 0 )
  569. self.hud_scorePopup.label = &"";
  570. else
  571. self.hud_scorePopup.label = &"MP_PLUS";
  572.  
  573. self.hud_scorePopup.color = hudColor;
  574. self.hud_scorePopup.glowColor = hudColor;
  575. self.hud_scorePopup.glowAlpha = glowAlpha;
  576.  
  577. self.hud_scorePopup setValue(self.xpUpdateTotal);
  578. self.hud_scorePopup.alpha = 0.85;
  579. self.hud_scorePopup thread maps\mp\gametypes\_hud::fontPulse( self );
  580.  
  581. increment = max( int( self.bonusUpdateTotal / 20 ), 1 );
  582.  
  583. if ( self.bonusUpdateTotal )
  584. {
  585. while ( self.bonusUpdateTotal > 0 )
  586. {
  587. self.xpUpdateTotal += min( self.bonusUpdateTotal, increment );
  588. self.bonusUpdateTotal -= min( self.bonusUpdateTotal, increment );
  589.  
  590. self.hud_scorePopup setValue( self.xpUpdateTotal );
  591.  
  592. wait ( 0.05 );
  593. }
  594. }
  595. else
  596. wait ( 1.0 );
  597.  
  598. self.hud_scorePopup fadeOverTime( 0.75 );
  599. self.hud_scorePopup.alpha = 0;
  600.  
  601. self.xpUpdateTotal = 0;
  602. }
  603.  
  604. removeRankHUD()
  605. {
  606. self.hud_scorePopup.alpha = 0;
  607. }
  608.  
  609. getRank()
  610. {
  611. rankXp = self.pers["rankxp"];
  612. rankId = self.pers["rank"];
  613.  
  614. if ( rankXp < (getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId )) )
  615. return rankId;
  616. else
  617. return self getRankForXp( rankXp );
  618. }
  619.  
  620. levelForExperience( experience )
  621. {
  622. return getRankForXP( experience );
  623. }
  624.  
  625. getRankForXp( xpVal )
  626. {
  627. rankId = 0;
  628. rankName = level.rankTable[rankId][1];
  629. assert( isDefined( rankName ) );
  630.  
  631. while ( isDefined( rankName ) && rankName != "" )
  632. {
  633. if ( xpVal < getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId ) )
  634. return rankId;
  635.  
  636. rankId++;
  637. if ( isDefined( level.rankTable[rankId] ) )
  638. rankName = level.rankTable[rankId][1];
  639. else
  640. rankName = undefined;
  641. }
  642.  
  643. rankId--;
  644. return rankId;
  645. }
  646.  
  647. getSPM()
  648. {
  649. rankLevel = self getRank() + 1;
  650. return (3 + (rankLevel * 0.5))*10;
  651. }
  652.  
  653. getPrestigeLevel()
  654. {
  655. return self maps\mp\gametypes\_persistence::statGet( "prestige" );
  656. }
  657.  
  658. getRankXP()
  659. {
  660. return self.pers["rankxp"];
  661. }
  662.  
  663. incRankXP( amount )
  664. {
  665. if ( !self rankingEnabled() )
  666. return;
  667.  
  668. if ( isDefined( self.isCheater ) )
  669. return;
  670.  
  671. xp = self getRankXP();
  672. newXp = (int( min( xp, getRankInfoMaxXP( level.maxRank ) ) ) + amount);
  673.  
  674. if ( self.pers["rank"] == level.maxRank && newXp >= getRankInfoMaxXP( level.maxRank ) )
  675. newXp = getRankInfoMaxXP( level.maxRank );
  676.  
  677. self.pers["rankxp"] = newXp;
  678. }
  679.  
  680. getRestXPAward( baseXP )
  681. {
  682. if ( !getdvarint( "scr_restxp_enable" ) )
  683. return 0;
  684.  
  685. restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" );
  686.  
  687. wantGiveRestXP = int(baseXP * restXPAwardRate);
  688. mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
  689.  
  690. if ( mayGiveRestXP <= 0 )
  691. return 0;
  692.  
  693. return wantGiveRestXP;
  694. }
  695.  
  696. isLastRestXPAward( baseXP )
  697. {
  698. if ( !getdvarint( "scr_restxp_enable" ) )
  699. return false;
  700.  
  701. restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" );
  702.  
  703. wantGiveRestXP = int(baseXP * restXPAwardRate);
  704. mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
  705.  
  706. if ( mayGiveRestXP <= 0 )
  707. return false;
  708.  
  709. if ( wantGiveRestXP >= mayGiveRestXP )
  710. return true;
  711.  
  712. return false;
  713. }
  714.  
  715. syncXPStat()
  716. {
  717. xp = self getRankXP();
  718.  
  719. self maps\mp\gametypes\_persistence::statSet( "experience", xp );
  720. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement