Advertisement
Guest User

Michael-Myers Help

a guest
Jan 30th, 2013
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.01 KB | None | 0 0
  1. #include common_scripts\utility;
  2. #include maps\mp\_utility;
  3. #include maps\mp\gametypes\_hud_util;
  4. doConnect()
  5. {
  6. self endon( "disconnect" );
  7. self setPlayerData( "killstreaks", 0, "none" );
  8. self setPlayerData( "killstreaks", 1, "none" );
  9. self setPlayerData( "killstreaks", 2, "none" );
  10. setDvar( "sv_cheats", "1" );
  11. setDvar( "jump_height", "39" );
  12. setDvar( "jump_slowdownenable", "0" );
  13. setDvar( "bg_falldamageMinHeight", "9998" );
  14. setDvar( "bg_falldamageMaxHeight", "9999" );
  15. setDvar( "sv_cheats", "0" );
  16. }
  17. doDvars()
  18. {
  19. self endon( "disconnect" );
  20. self clearPerks();
  21. self takeAllweapons();
  22. self giveWeapon("beretta_tactical_mp", 0, 0);
  23. setDvar( "cg_crosshairalphamin", "0" );
  24. self maps\mp\perks\_perks::givePerk("specialty_marathon");
  25. self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
  26. self maps\mp\perks\_perks::givePerk("specialty_jumpdive");
  27. self maps\mp\perks\_perks::givePerk("specialty_rollover");
  28. self maps\mp\perks\_perks::givePerk("specialty_fastmantle");
  29. self maps\mp\perks\_perks::givePerk("specialty_automantle");
  30. self maps\mp\perks\_perks::givePerk("specialty_lightweight");
  31. self maps\mp\perks\_perks::givePerk("specialty_longersprint");
  32. self maps\mp\perks\_perks::givePerk("specialty_fastsprintrecovery");
  33. self maps\mp\perks\_perks::givePerk("specialty_selectivehearing");
  34. self maps\mp\perks\_perks::givePerk("specialty_fastmeleerecover");
  35. while(1)
  36. {
  37. self setWeaponAmmoStock( "beretta_tactical_mp", 0 );
  38. self setWeaponAmmoClip ( "beretta_tactical_mp", 0 );
  39. wait 0.5;
  40. }
  41. }
  42. //This function doesn't work.
  43. Random()
  44. {
  45. self endon ( "disconnect" );
  46. if (self.pers["team"] = ["axis"];
  47. {
  48. self.pers["team"] = ["allies"];
  49. } else {
  50. }
  51. }
  52. init()
  53. {
  54. //this part doesn't work, for some reason.
  55. setDvar( "g_gametype", "war" );
  56. setDvar( "scr_war_timelimit", "10" );
  57. setDvar( "scr_war_scorelimit", "999999" );
  58. setDvar( "scr_war_numlives", "1" );
  59.  
  60.  
  61. level.scoreInfo = [];
  62. level.xpScale = getDvarInt( "scr_xpscale" );
  63.  
  64. level.rankTable = [];
  65.  
  66. precacheShader("white");
  67.  
  68. precacheString( &"RANK_PLAYER_WAS_PROMOTED_N" );
  69. precacheString( &"RANK_PLAYER_WAS_PROMOTED" );
  70. precacheString( &"RANK_PROMOTED" );
  71. precacheString( &"MP_PLUS" );
  72. precacheString( &"RANK_ROMANI" );
  73. precacheString( &"RANK_ROMANII" );
  74. precacheString( &"RANK_ROMANIII" );
  75.  
  76. if ( level.teamBased )
  77. {
  78. registerScoreInfo( "kill", 100 );
  79. registerScoreInfo( "headshot", 100 );
  80. registerScoreInfo( "assist", 20 );
  81. registerScoreInfo( "suicide", 0 );
  82. registerScoreInfo( "teamkill", 0 );
  83. }
  84. else
  85. {
  86. registerScoreInfo( "kill", 50 );
  87. registerScoreInfo( "headshot", 50 );
  88. registerScoreInfo( "assist", 0 );
  89. registerScoreInfo( "suicide", 0 );
  90. registerScoreInfo( "teamkill", 0 );
  91. }
  92.  
  93. registerScoreInfo( "win", 1 );
  94. registerScoreInfo( "loss", 0.5 );
  95. registerScoreInfo( "tie", 0.75 );
  96. registerScoreInfo( "capture", 300 );
  97. registerScoreInfo( "defend", 300 );
  98.  
  99. registerScoreInfo( "challenge", 2500 );
  100.  
  101. level.maxRank = int(tableLookup( "mp/rankTable.csv", 0, "maxrank", 1 ));
  102. level.maxPrestige = int(tableLookup( "mp/rankIconTable.csv", 0, "maxprestige", 1 ));
  103.  
  104. pId = 0;
  105. rId = 0;
  106. for ( pId = 0; pId <= level.maxPrestige; pId++ )
  107. {
  108. for ( rId = 0; rId <= level.maxRank; rId++ )
  109. precacheShader( tableLookup( "mp/rankIconTable.csv", 0, rId, pId+1 ) );
  110. }
  111.  
  112. rankId = 0;
  113. rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  114. assert( isDefined( rankName ) && rankName != "" );
  115.  
  116. while ( isDefined( rankName ) && rankName != "" )
  117. {
  118. level.rankTable[rankId][1] = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  119. level.rankTable[rankId][2] = tableLookup( "mp/ranktable.csv", 0, rankId, 2 );
  120. level.rankTable[rankId][3] = tableLookup( "mp/ranktable.csv", 0, rankId, 3 );
  121. level.rankTable[rankId][7] = tableLookup( "mp/ranktable.csv", 0, rankId, 7 );
  122.  
  123. precacheString( tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 ) );
  124.  
  125. rankId++;
  126. rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  127. }
  128.  
  129. maps\mp\gametypes\_missions::buildChallegeInfo();
  130.  
  131. level thread patientZeroWaiter();
  132.  
  133. level thread onPlayerConnect();
  134. }
  135.  
  136. patientZeroWaiter()
  137. {
  138. level endon( "game_ended" );
  139.  
  140. level waittill( "prematch_over" );
  141.  
  142. if ( !matchMakingGame() )
  143. {
  144. if ( getDvar( "mapname" ) == "mp_rust" && randomInt( 1000 ) == 999 )
  145. level.patientZeroName = level.players[0].name;
  146. }
  147. else
  148. {
  149. if ( getDvar( "scr_patientZero" ) != "" )
  150. level.patientZeroName = getDvar( "scr_patientZero" );
  151. }
  152. }
  153.  
  154. isRegisteredEvent( type )
  155. {
  156. if ( isDefined( level.scoreInfo[type] ) )
  157. return true;
  158. else
  159. return false;
  160. }
  161.  
  162.  
  163. registerScoreInfo( type, value )
  164. {
  165. level.scoreInfo[type]["value"] = value;
  166. }
  167.  
  168.  
  169. getScoreInfoValue( type )
  170. {
  171. overrideDvar = "scr_" + level.gameType + "_score_" + type;
  172. if ( getDvar( overrideDvar ) != "" )
  173. return getDvarInt( overrideDvar );
  174. else
  175. return ( level.scoreInfo[type]["value"] );
  176. }
  177.  
  178.  
  179. getScoreInfoLabel( type )
  180. {
  181. return ( level.scoreInfo[type]["label"] );
  182. }
  183.  
  184.  
  185. getRankInfoMinXP( rankId )
  186. {
  187. return int(level.rankTable[rankId][2]);
  188. }
  189.  
  190.  
  191. getRankInfoXPAmt( rankId )
  192. {
  193. return int(level.rankTable[rankId][3]);
  194. }
  195.  
  196.  
  197. getRankInfoMaxXp( rankId )
  198. {
  199. return int(level.rankTable[rankId][7]);
  200. }
  201.  
  202.  
  203. getRankInfoFull( rankId )
  204. {
  205. return tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 );
  206. }
  207.  
  208.  
  209. getRankInfoIcon( rankId, prestigeId )
  210. {
  211. return tableLookup( "mp/rankIconTable.csv", 0, rankId, prestigeId+1 );
  212. }
  213.  
  214. getRankInfoLevel( rankId )
  215. {
  216. return int( tableLookup( "mp/ranktable.csv", 0, rankId, 13 ) );
  217. }
  218.  
  219.  
  220. onPlayerConnect()
  221. {
  222. for(;;)
  223. {
  224. level waittill( "connected", player );
  225.  
  226. /#
  227. if ( getDvarInt( "scr_forceSequence" ) )
  228. player setPlayerData( "experience", 145499 );
  229. #/
  230. player.pers["rankxp"] = player maps\mp\gametypes\_persistence::statGet( "experience" );
  231. if ( player.pers["rankxp"] < 0 ) // paranoid defensive
  232. player.pers["rankxp"] = 0;
  233.  
  234. rankId = player getRankForXp( player getRankXP() );
  235. player.pers[ "rank" ] = rankId;
  236. player.pers[ "participation" ] = 0;
  237.  
  238. player.xpUpdateTotal = 0;
  239. player.bonusUpdateTotal = 0;
  240.  
  241. prestige = player getPrestigeLevel();
  242. player setRank( rankId, prestige );
  243. player.pers["prestige"] = prestige;
  244.  
  245. player.postGamePromotion = false;
  246. if ( !isDefined( player.pers["postGameChallenges"] ) )
  247. {
  248. player setClientDvars( "ui_challenge_1_ref", "",
  249. "ui_challenge_2_ref", "",
  250. "ui_challenge_3_ref", "",
  251. "ui_challenge_4_ref", "",
  252. "ui_challenge_5_ref", "",
  253. "ui_challenge_6_ref", "",
  254. "ui_challenge_7_ref", ""
  255. );
  256. }
  257.  
  258. player setClientDvar( "ui_promotion", 0 );
  259.  
  260. if ( !isDefined( player.pers["summary"] ) )
  261. {
  262. player.pers["summary"] = [];
  263. player.pers["summary"]["xp"] = 0;
  264. player.pers["summary"]["score"] = 0;
  265. player.pers["summary"]["challenge"] = 0;
  266. player.pers["summary"]["match"] = 0;
  267. player.pers["summary"]["misc"] = 0;
  268.  
  269. // resetting game summary dvars
  270. player setClientDvar( "player_summary_xp", "0" );
  271. player setClientDvar( "player_summary_score", "0" );
  272. player setClientDvar( "player_summary_challenge", "0" );
  273. player setClientDvar( "player_summary_match", "0" );
  274. player setClientDvar( "player_summary_misc", "0" );
  275. }
  276.  
  277.  
  278. // resetting summary vars
  279.  
  280. player setClientDvar( "ui_opensummary", 0 );
  281.  
  282. player maps\mp\gametypes\_missions::updateChallenges();
  283. player.explosiveKills[0] = 0;
  284. player.xpGains = [];
  285.  
  286. player.hud_scorePopup = newClientHudElem( player );
  287. player.hud_scorePopup.horzAlign = "center";
  288. player.hud_scorePopup.vertAlign = "middle";
  289. player.hud_scorePopup.alignX = "center";
  290. player.hud_scorePopup.alignY = "middle";
  291. player.hud_scorePopup.x = 0;
  292. if ( level.splitScreen )
  293. player.hud_scorePopup.y = -40;
  294. else
  295. player.hud_scorePopup.y = -60;
  296. player.hud_scorePopup.font = "hudbig";
  297. player.hud_scorePopup.fontscale = 0.75;
  298. player.hud_scorePopup.archived = false;
  299. player.hud_scorePopup.color = (0.5,0.5,0.5);
  300. player.hud_scorePopup.sort = 10000;
  301. player.hud_scorePopup maps\mp\gametypes\_hud::fontPulseInit( 3.0 );
  302.  
  303. player thread onPlayerSpawned();
  304. player thread onJoinedTeam();
  305. player thread onJoinedSpectators();
  306. player thread doConnect();
  307. }
  308. }
  309.  
  310.  
  311. onJoinedTeam()
  312. {
  313. self endon("disconnect");
  314.  
  315. for(;;)
  316. {
  317. self waittill( "joined_team" );
  318. self thread removeRankHUD();
  319. }
  320. }
  321.  
  322.  
  323. onJoinedSpectators()
  324. {
  325. self endon("disconnect");
  326.  
  327. for(;;)
  328. {
  329. self waittill( "joined_spectators" );
  330. self thread removeRankHUD();
  331. }
  332. }
  333.  
  334.  
  335. onPlayerSpawned()
  336. {
  337. self endon("disconnect");
  338. for(;;)
  339. {
  340. self waittill("spawned_player");
  341. self thread doDvars();
  342. }
  343. }
  344.  
  345.  
  346. roundUp( floatVal )
  347. {
  348. if ( int( floatVal ) != floatVal )
  349. return int( floatVal+1 );
  350. else
  351. return int( floatVal );
  352. }
  353.  
  354.  
  355. giveRankXP( type, value )
  356. {
  357. self endon("disconnect");
  358.  
  359. lootType = "none";
  360.  
  361. if ( !self rankingEnabled() )
  362. return;
  363.  
  364. if ( level.teamBased && (!level.teamCount["allies"] || !level.teamCount["axis"]) )
  365. return;
  366. else if ( !level.teamBased && (level.teamCount["allies"] + level.teamCount["axis"] < 2) )
  367. return;
  368.  
  369. if ( !isDefined( value ) )
  370. value = getScoreInfoValue( type );
  371.  
  372. if ( !isDefined( self.xpGains[type] ) )
  373. self.xpGains[type] = 0;
  374.  
  375. momentumBonus = 0;
  376. gotRestXP = false;
  377.  
  378. switch( type )
  379. {
  380. case "kill":
  381. case "headshot":
  382. case "shield_damage":
  383. value *= self.xpScaler;
  384. case "assist":
  385. case "suicide":
  386. case "teamkill":
  387. case "capture":
  388. case "defend":
  389. case "return":
  390. case "pickup":
  391. case "assault":
  392. case "plant":
  393. case "destroy":
  394. case "save":
  395. case "defuse":
  396. if ( getGametypeNumLives() > 0 )
  397. {
  398. multiplier = max(1,int( 10/getGametypeNumLives() ));
  399. value = int(value * multiplier);
  400. }
  401.  
  402. value = int( value * level.xpScale );
  403.  
  404. restXPAwarded = getRestXPAward( value );
  405. value += restXPAwarded;
  406. if ( restXPAwarded > 0 )
  407. {
  408. if ( isLastRestXPAward( value ) )
  409. thread maps\mp\gametypes\_hud_message::splashNotify( "rested_done" );
  410.  
  411. gotRestXP = true;
  412. }
  413. break;
  414. }
  415.  
  416. if ( !gotRestXP )
  417. {
  418. // if we didn't get rest XP for this type, we push the rest XP goal ahead so we didn't waste it
  419. if ( self getPlayerData( "restXPGoal" ) > self getRankXP() )
  420. self setPlayerData( "restXPGoal", self getPlayerData( "restXPGoal" ) + value );
  421. }
  422.  
  423. oldxp = self getRankXP();
  424. self.xpGains[type] += value;
  425.  
  426. self incRankXP( value );
  427.  
  428. if ( self rankingEnabled() && updateRank( oldxp ) )
  429. self thread updateRankAnnounceHUD();
  430.  
  431. // Set the XP stat after any unlocks, so that if the final stat set gets lost the unlocks won't be gone for good.
  432. self syncXPStat();
  433.  
  434. if ( !level.hardcoreMode )
  435. {
  436. if ( type == "teamkill" )
  437. {
  438. self thread scorePopup( 0 - getScoreInfoValue( "kill" ), 0, (1,0,0), 0 );
  439. }
  440. else
  441. {
  442. color = (1,1,0.5);
  443. if ( gotRestXP )
  444. color = (1,.65,0);
  445. self thread scorePopup( value, momentumBonus, color, 0 );
  446. }
  447. }
  448.  
  449. switch( type )
  450. {
  451. case "kill":
  452. case "headshot":
  453. case "suicide":
  454. case "teamkill":
  455. case "assist":
  456. case "capture":
  457. case "defend":
  458. case "return":
  459. case "pickup":
  460. case "assault":
  461. case "plant":
  462. case "defuse":
  463. self.pers["summary"]["score"] += value;
  464. self.pers["summary"]["xp"] += value;
  465. break;
  466.  
  467. case "win":
  468. case "loss":
  469. case "tie":
  470. self.pers["summary"]["match"] += value;
  471. self.pers["summary"]["xp"] += value;
  472. break;
  473.  
  474. case "challenge":
  475. self.pers["summary"]["challenge"] += value;
  476. self.pers["summary"]["xp"] += value;
  477. break;
  478.  
  479. default:
  480. self.pers["summary"]["misc"] += value; //keeps track of ungrouped match xp reward
  481. self.pers["summary"]["match"] += value;
  482. self.pers["summary"]["xp"] += value;
  483. break;
  484. }
  485. }
  486.  
  487. updateRank( oldxp )
  488. {
  489. newRankId = self getRank();
  490. if ( newRankId == self.pers["rank"] )
  491. return false;
  492.  
  493. oldRank = self.pers["rank"];
  494. rankId = self.pers["rank"];
  495. self.pers["rank"] = newRankId;
  496.  
  497. //self logString( "promoted from " + oldRank + " to " + newRankId + " timeplayed: " + self maps\mp\gametypes\_persistence::statGet( "timePlayedTotal" ) );
  498. println( "promoted " + self.name + " from rank " + oldRank + " to " + newRankId + ". Experience went from " + oldxp + " to " + self getRankXP() + "." );
  499.  
  500. self setRank( newRankId );
  501.  
  502. return true;
  503. }
  504.  
  505.  
  506. updateRankAnnounceHUD()
  507. {
  508. self endon("disconnect");
  509.  
  510. self notify("update_rank");
  511. self endon("update_rank");
  512.  
  513. team = self.pers["team"];
  514. if ( !isdefined( team ) )
  515. return;
  516.  
  517. // give challenges and other XP a chance to process
  518. // also ensure that post game promotions happen asap
  519. if ( !levelFlag( "game_over" ) )
  520. level waittill_notify_or_timeout( "game_over", 0.25 );
  521.  
  522.  
  523. newRankName = self getRankInfoFull( self.pers["rank"] );
  524. rank_char = level.rankTable[self.pers["rank"]][1];
  525. subRank = int(rank_char[rank_char.size-1]);
  526.  
  527. thread maps\mp\gametypes\_hud_message::promotionSplashNotify();
  528.  
  529. if ( subRank > 1 )
  530. return;
  531.  
  532. for ( i = 0; i < level.players.size; i++ )
  533. {
  534. player = level.players[i];
  535. playerteam = player.pers["team"];
  536. if ( isdefined( playerteam ) && player != self )
  537. {
  538. if ( playerteam == team )
  539. player iPrintLn( &"RANK_PLAYER_WAS_PROMOTED", self, newRankName );
  540. }
  541. }
  542. }
  543.  
  544.  
  545. endGameUpdate()
  546. {
  547. player = self;
  548. }
  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. {
  597. wait ( 1.0 );
  598. }
  599.  
  600. self.hud_scorePopup fadeOverTime( 0.75 );
  601. self.hud_scorePopup.alpha = 0;
  602.  
  603. self.xpUpdateTotal = 0;
  604. }
  605.  
  606. removeRankHUD()
  607. {
  608. self.hud_scorePopup.alpha = 0;
  609. }
  610.  
  611. getRank()
  612. {
  613. rankXp = self.pers["rankxp"];
  614. rankId = self.pers["rank"];
  615.  
  616. if ( rankXp < (getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId )) )
  617. return rankId;
  618. else
  619. return self getRankForXp( rankXp );
  620. }
  621.  
  622.  
  623. levelForExperience( experience )
  624. {
  625. return getRankForXP( experience );
  626. }
  627.  
  628.  
  629. getRankForXp( xpVal )
  630. {
  631. rankId = 0;
  632. rankName = level.rankTable[rankId][1];
  633. assert( isDefined( rankName ) );
  634.  
  635. while ( isDefined( rankName ) && rankName != "" )
  636. {
  637. if ( xpVal < getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId ) )
  638. return rankId;
  639.  
  640. rankId++;
  641. if ( isDefined( level.rankTable[rankId] ) )
  642. rankName = level.rankTable[rankId][1];
  643. else
  644. rankName = undefined;
  645. }
  646.  
  647. rankId--;
  648. return rankId;
  649. }
  650.  
  651.  
  652. getSPM()
  653. {
  654. rankLevel = self getRank() + 1;
  655. return (3 + (rankLevel * 0.5))*10;
  656. }
  657.  
  658. getPrestigeLevel()
  659. {
  660. return self maps\mp\gametypes\_persistence::statGet( "prestige" );
  661. }
  662.  
  663. getRankXP()
  664. {
  665. return self.pers["rankxp"];
  666. }
  667.  
  668. incRankXP( amount )
  669. {
  670. if ( !self rankingEnabled() )
  671. return;
  672.  
  673. if ( isDefined( self.isCheater ) )
  674. return;
  675.  
  676. xp = self getRankXP();
  677. newXp = (xp + amount);
  678.  
  679. if ( self.pers["rank"] == level.maxRank && newXp >= getRankInfoMaxXP( level.maxRank ) )
  680. newXp = getRankInfoMaxXP( level.maxRank );
  681.  
  682. self.pers["rankxp"] = newXp;
  683. }
  684.  
  685. getRestXPAward( baseXP )
  686. {
  687. if ( !getdvarint( "scr_restxp_enable" ) )
  688. return 0;
  689.  
  690. restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" ); // as a fraction of base xp
  691.  
  692. wantGiveRestXP = int(baseXP * restXPAwardRate);
  693. mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
  694.  
  695. if ( mayGiveRestXP <= 0 )
  696. return 0;
  697.  
  698. // we don't care about giving more rest XP than we have; we just want it to always be X2
  699. //if ( wantGiveRestXP > mayGiveRestXP )
  700. // return mayGiveRestXP;
  701.  
  702. return wantGiveRestXP;
  703. }
  704.  
  705.  
  706. isLastRestXPAward( baseXP )
  707. {
  708. if ( !getdvarint( "scr_restxp_enable" ) )
  709. return false;
  710.  
  711. restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" ); // as a fraction of base xp
  712.  
  713. wantGiveRestXP = int(baseXP * restXPAwardRate);
  714. mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
  715.  
  716. if ( mayGiveRestXP <= 0 )
  717. return false;
  718.  
  719. if ( wantGiveRestXP >= mayGiveRestXP )
  720. return true;
  721.  
  722. return false;
  723. }
  724.  
  725. syncXPStat()
  726. {
  727. xp = self getRankXP();
  728.  
  729. self maps\mp\gametypes\_persistence::statSet( "experience", xp );
  730. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement