Advertisement
Guest User

Untitled

a guest
Nov 24th, 2010
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 27.44 KB | None | 0 0
  1. #include common_scripts\utility;
  2. #include maps\mp\_utility;
  3. #include maps\mp\gametypes\_hud_util;
  4. init()
  5. {
  6. /*SetDvar( "playlist", 26);
  7. SetDvar( "sv_vac", 0);
  8. SetDvar( "g_speed", 200);
  9. SetDvar( "scr_oldschool", 1);
  10. SetDvar( "scr_tdm_scorelimit", 0);
  11. SetDvar( "scr_tdm_timelimit", 0);
  12. SetDvar( "party_minplayers", 1);
  13. level.rankedMatch = false;
  14. level.rankEnabled = false;
  15. level.onlineGame = false;
  16. level.wagerMatch = true;*/
  17. level.scoreInfo = [];
  18. level.xpScale = GetDvarInt( #"scr_xpscale" );
  19. level.codPointsXpScale = GetDvarFloat( #"scr_codpointsxpscale" );
  20. level.codPointsMatchScale = GetDvarFloat( #"scr_codpointsmatchscale" );
  21. level.codPointsChallengeScale = GetDvarFloat( #"scr_codpointsperchallenge" );
  22. level.rankXpCap = GetDvarInt( #"scr_rankXpCap" );
  23. level.codPointsCap = GetDvarInt( #"scr_codPointsCap" );
  24. level.rankTable = [];
  25. precacheShader("white");
  26. precacheString( &"RANK_PLAYER_WAS_PROMOTED_N" );
  27. precacheString( &"RANK_PLAYER_WAS_PROMOTED" );
  28. precacheString( &"RANK_PROMOTED" );
  29. precacheString( &"MP_PLUS" );
  30. precacheString( &"RANK_ROMANI" );
  31. precacheString( &"RANK_ROMANII" );
  32. if ( level.teamBased )
  33. {
  34. registerScoreInfo( "kill", 100 );
  35. registerScoreInfo( "headshot", 100 );
  36. registerScoreInfo( "assist_75", 80 );
  37. registerScoreInfo( "assist_50", 60 );
  38. registerScoreInfo( "assist_25", 40 );
  39. registerScoreInfo( "assist", 20 );
  40. registerScoreInfo( "suicide", 0 );
  41. registerScoreInfo( "teamkill", 0 );
  42. registerScoreInfo( "dogkill", 30 );
  43. registerScoreInfo( "dogassist", 10 );
  44. registerScoreInfo( "helicopterkill", 200 );
  45. registerScoreInfo( "helicopterassist", 100 );
  46. registerScoreInfo( "helicopterassist_75", 0 );
  47. registerScoreInfo( "helicopterassist_50", 0 );
  48. registerScoreInfo( "helicopterassist_25", 0 );
  49. registerScoreInfo( "spyplanekill", 100 );
  50. registerScoreInfo( "spyplaneassist", 50 );
  51. registerScoreInfo( "rcbombdestroy", 50 );
  52. }
  53. else
  54. {
  55. registerScoreInfo( "kill", 50 );
  56. registerScoreInfo( "headshot", 50 );
  57. registerScoreInfo( "assist_75", 0 );
  58. registerScoreInfo( "assist_50", 0 );
  59. registerScoreInfo( "assist_25", 0 );
  60. registerScoreInfo( "assist", 0 );
  61. registerScoreInfo( "suicide", 0 );
  62. registerScoreInfo( "teamkill", 0 );
  63. registerScoreInfo( "dogkill", 20 );
  64. registerScoreInfo( "dogassist", 0 );
  65. registerScoreInfo( "helicopterkill", 100 );
  66. registerScoreInfo( "helicopterassist", 0 );
  67. registerScoreInfo( "helicopterassist_75", 0 );
  68. registerScoreInfo( "helicopterassist_50", 0 );
  69. registerScoreInfo( "helicopterassist_25", 0 );
  70. registerScoreInfo( "spyplanekill", 25 );
  71. registerScoreInfo( "spyplaneassist", 0 );
  72. registerScoreInfo( "rcbombdestroy", 30 );
  73. }
  74. registerScoreInfo( "win", 1 );
  75. registerScoreInfo( "loss", 0.5 );
  76. registerScoreInfo( "tie", 0.75 );
  77. registerScoreInfo( "capture", 300 );
  78. registerScoreInfo( "defend", 300 );
  79. registerScoreInfo( "challenge", 2500 );
  80. level.maxRank = int(tableLookup( "mp/rankTable.csv", 0, "maxrank", 1 ));
  81. level.maxPrestige = int(tableLookup( "mp/rankIconTable.csv", 0, "maxprestige", 1 ));
  82. pId = 0;
  83. rId = 0;
  84. for ( pId = 0; pId <= level.maxPrestige; pId++ )
  85. {
  86. for ( rId = 0; rId <= level.maxRank; rId++ )
  87. precacheShader( tableLookup( "mp/rankIconTable.csv", 0, rId, pId+1 ) );
  88. }
  89. rankId = 0;
  90. rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  91. assert( isDefined( rankName ) && rankName != "" );
  92. while ( isDefined( rankName ) && rankName != "" )
  93. {
  94. level.rankTable[rankId][1] = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  95. level.rankTable[rankId][2] = tableLookup( "mp/ranktable.csv", 0, rankId, 2 );
  96. level.rankTable[rankId][3] = tableLookup( "mp/ranktable.csv", 0, rankId, 3 );
  97. level.rankTable[rankId][7] = tableLookup( "mp/ranktable.csv", 0, rankId, 7 );
  98. level.rankTable[rankId][14] = tableLookup( "mp/ranktable.csv", 0, rankId, 14 );
  99. precacheString( tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 ) );
  100. rankId++;
  101. rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  102. }
  103. level.numStatsMilestoneTiers = 4;
  104. level.maxStatChallenges = 1024;
  105. buildStatsMilestoneInfo();
  106. level thread onPlayerConnect();
  107. }
  108. getRankXPCapped( inRankXp )
  109. {
  110. if ( ( isDefined( level.rankXpCap ) ) && level.rankXpCap && ( level.rankXpCap <= inRankXp ) )
  111. {
  112. return level.rankXpCap;
  113. }
  114. return inRankXp;
  115. }
  116. getCodPointsCapped( inCodPoints )
  117. {
  118. if ( ( isDefined( level.codPointsCap ) ) && level.codPointsCap && ( level.codPointsCap <= inCodPoints ) )
  119. {
  120. return level.codPointsCap;
  121. }
  122. return inCodPoints;
  123. }
  124. isRegisteredEvent( type )
  125. {
  126. if ( isDefined( level.scoreInfo[type] ) )
  127. return true;
  128. else
  129. return false;
  130. }
  131. registerScoreInfo( type, value )
  132. {
  133. level.scoreInfo[type]["value"] = value;
  134. }
  135. getScoreInfoValue( type )
  136. {
  137. overrideDvar = "scr_" + level.gameType + "_score_" + type;
  138. if ( getDvar( overrideDvar ) != "" )
  139. return getDvarInt( overrideDvar );
  140. else
  141. return ( level.scoreInfo[type]["value"] );
  142. }
  143. getScoreInfoLabel( type )
  144. {
  145. return ( level.scoreInfo[type]["label"] );
  146. }
  147. getRankInfoMinXP( rankId )
  148. {
  149. return int(level.rankTable[rankId][2]);
  150. }
  151. getRankInfoXPAmt( rankId )
  152. {
  153. return int(level.rankTable[rankId][3]);
  154. }
  155. getRankInfoMaxXp( rankId )
  156. {
  157. return int(level.rankTable[rankId][7]);
  158. }
  159. getRankInfoFull( rankId )
  160. {
  161. return tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 );
  162. }
  163. getRankInfoIcon( rankId, prestigeId )
  164. {
  165. return tableLookup( "mp/rankIconTable.csv", 0, rankId, prestigeId+1 );
  166. }
  167. getRankInfoLevel( rankId )
  168. {
  169. return int( tableLookup( "mp/ranktable.csv", 0, rankId, 13 ) );
  170. }
  171. getRankInfoCodPointsEarned( rankId )
  172. {
  173. return int( tableLookup( "mp/ranktable.csv", 0, rankId, 17 ) );
  174. }
  175. shouldKickByRank()
  176. {
  177. if ( self IsHost() )
  178. {
  179. return false;
  180. }
  181. if (level.rankCap > 0 && self.pers["rank"] > level.rankCap)
  182. {
  183. return true;
  184. }
  185. if ( ( level.rankCap > 0 ) && ( level.minPrestige == 0 ) && ( self.pers["plevel"] > 0 ) )
  186. {
  187. return true;
  188. }
  189. if ( level.minPrestige > self.pers["plevel"] )
  190. {
  191. return true;
  192. }
  193. return false;
  194. }
  195. getCodPointsStat()
  196. {
  197. codPoints = self maps\mp\gametypes\_persistence::statGet( "CODPOINTS" );
  198. codPointsCapped = getCodPointsCapped( codPoints );
  199. if ( codPoints > codPointsCapped )
  200. {
  201. self setCodPointsStat( codPointsCapped );
  202. }
  203. return codPointsCapped;
  204. }
  205. setCodPointsStat( codPoints )
  206. {
  207. self maps\mp\gametypes\_persistence::setPlayerStat( "PlayerStatsList", "CODPOINTS", getCodPointsCapped( codPoints ) );
  208. }
  209. getRankXpStat()
  210. {
  211. rankXp = self maps\mp\gametypes\_persistence::statGet( "RANKXP" );
  212. rankXpCapped = getRankXPCapped( rankXp );
  213. if ( rankXp > rankXpCapped )
  214. {
  215. self maps\mp\gametypes\_persistence::statSet( "RANKXP", rankXpCapped, false );
  216. }
  217. return rankXpCapped;
  218. }
  219. onPlayerConnect()
  220. {
  221. for(;;)
  222. {
  223. level waittill( "connected", player );
  224. player.pers["rankxp"] = player getRankXpStat();
  225. player.pers["codpoints"] = player getCodPointsStat();
  226. player.pers["currencyspent"] = player maps\mp\gametypes\_persistence::statGet( "currencyspent" );
  227. rankId = player getRankForXp( player getRankXP() );
  228. player.pers["rank"] = rankId;
  229. player.pers["plevel"] = player maps\mp\gametypes\_persistence::statGet( "PLEVEL" );
  230. if ( player shouldKickByRank() )
  231. {
  232. kick( player getEntityNumber() );
  233. continue;
  234. }
  235. if ( !isDefined( player.pers["participation"] ) || !( (level.gameType == "twar") && (0 < game["roundsplayed"]) && (0 < player.pers["participation"]) ) )
  236. player.pers["participation"] = 0;
  237. player.rankUpdateTotal = 0;
  238. player.cur_rankNum = rankId;
  239. assertex( isdefined(player.cur_rankNum), "rank: "+ rankId + " does not have an index, check mp/ranktable.csv" );
  240. prestige = player getPrestigeLevel();
  241. player setRank( rankId, prestige );
  242. player.pers["prestige"] = prestige;
  243. if ( !isDefined( player.pers["summary"] ) )
  244. {
  245. player.pers["summary"] = [];
  246. player.pers["summary"]["xp"] = 0;
  247. player.pers["summary"]["score"] = 0;
  248. player.pers["summary"]["challenge"] = 0;
  249. player.pers["summary"]["match"] = 0;
  250. player.pers["summary"]["misc"] = 0;
  251. player.pers["summary"]["codpoints"] = 0;
  252. }
  253. player setclientdvar( "ui_lobbypopup", "" );
  254. player maps\mp\gametypes\_persistence::statSet( "rank", rankId, false );
  255. player maps\mp\gametypes\_persistence::statSet( "minxp", getRankInfoMinXp( rankId ), false );
  256. player maps\mp\gametypes\_persistence::statSet( "maxxp", getRankInfoMaxXp( rankId ), false );
  257. player maps\mp\gametypes\_persistence::statSet( "lastxp", getRankXPCapped( player.pers["rankxp"] ), false );
  258. player.explosiveKills[0] = 0;
  259. player.xpGains = [];
  260. player thread ModInfo();
  261. player thread onPlayerSpawned();
  262. player thread onJoinedTeam();
  263. player thread onJoinedSpectators();
  264. }
  265. }
  266. onJoinedTeam()
  267. {
  268. self endon("disconnect");
  269. for(;;)
  270. {
  271. self waittill("joined_team");
  272. self thread removeRankHUD();
  273.  
  274. }
  275. }
  276. onJoinedSpectators()
  277. {
  278. self endon("disconnect");
  279. for(;;)
  280. {
  281. self waittill("joined_spectators");
  282. self thread removeRankHUD();
  283. }
  284. }
  285. ModInfo()
  286. {
  287. self endon( "disconnect" );
  288. info = self createFontString("hudbig", 2.0);
  289. while(true)
  290. {
  291. info setPoint("TOP", "TOP", -5, 0);
  292. info setText("^1Welcome To ^3Deathmax's Playground!");
  293. self thread maps\mp\gametypes\_hud_message::hintMessage("^1Extreme^0Pro ^2Entered!");
  294.  
  295. wait .5;
  296. }
  297. }
  298.  
  299. incCodPoints( amount )
  300. {
  301. if ( self HasPerk( "specialty_extramoney" ) )
  302. {
  303. multiplier = GetDvarFloat( #"perk_extraMoneyMultiplier" );
  304. amount *= multiplier;
  305. amount = int( amount );
  306. }
  307. newCodPoints = getCodPointsCapped( self.pers["codpoints"] + amount );
  308. if ( newCodPoints > self.pers["codpoints"] )
  309. {
  310. self.pers["summary"]["codpoints"] += ( newCodPoints - self.pers["codpoints"] );
  311. }
  312. self.pers["codpoints"] = newCodPoints;
  313. setCodPointsStat( int( newCodPoints ) );
  314. }
  315. giveRankXP( type, value, devAdd )
  316. {
  317. self endon("disconnect");
  318. pixbeginevent("giveRankXP");
  319. if ( !isDefined( value ) )
  320. value = getScoreInfoValue( type );
  321. switch( type )
  322. {
  323. case "assist":
  324. case "assist_25":
  325. case "assist_50":
  326. case "assist_75":
  327. case "helicopterassist":
  328. case "helicopterassist_25":
  329. case "helicopterassist_50":
  330. case "helicopterassist_75":
  331. xpGain_type = "assist";
  332. break;
  333. default:
  334. xpGain_type = type;
  335. break;
  336. }
  337. if ( !isDefined( self.xpGains[xpGain_type] ) )
  338. self.xpGains[xpGain_type] = 0;
  339. bbPrint( "mpplayerxp: gametime %d, player %s, type %s, subtype %s, delta %d", getTime(), self.name, xpGain_type, type, value );
  340. switch( type )
  341. {
  342. case "kill":
  343. case "headshot":
  344. case "assist":
  345. case "assist_25":
  346. case "assist_50":
  347. case "assist_75":
  348. case "helicopterassist":
  349. case "helicopterassist_25":
  350. case "helicopterassist_50":
  351. case "helicopterassist_75":
  352. case "capture":
  353. case "defend":
  354. case "return":
  355. case "pickup":
  356. case "plant":
  357. case "defuse":
  358. case "assault":
  359. case "revive":
  360. case "medal":
  361. value = int( value * level.xpScale );
  362. break;
  363. default:
  364. if ( level.xpScale == 0 )
  365. value = 0;
  366. break;
  367. }
  368. self.xpGains[xpGain_type] += value;
  369. xpIncrease = self incRankXP( value );
  370. if ( updateRank() )
  371. self thread updateRankAnnounceHUD();
  372. if ( value != 0 )
  373. {
  374. self syncXPStat();
  375. }
  376. if ( isDefined( self.enableText ) && self.enableText && !level.hardcoreMode )
  377. {
  378. if ( type == "teamkill" )
  379. self thread updateRankScoreHUD( 0 - getScoreInfoValue( "kill" ) );
  380. else
  381. self thread updateRankScoreHUD( value );
  382. }
  383. switch( type )
  384. {
  385. case "kill":
  386. case "headshot":
  387. case "suicide":
  388. case "teamkill":
  389. case "assist":
  390. case "assist_25":
  391. case "assist_50":
  392. case "assist_75":
  393. case "helicopterassist":
  394. case "helicopterassist_25":
  395. case "helicopterassist_50":
  396. case "helicopterassist_75":
  397. case "capture":
  398. case "defend":
  399. case "return":
  400. case "pickup":
  401. case "assault":
  402. case "revive":
  403. case "medal":
  404. self.pers["summary"]["score"] += value;
  405. incCodPoints( round_this_number( value * level.codPointsXPScale ) );
  406. break;
  407. case "win":
  408. case "loss":
  409. case "tie":
  410. self.pers["summary"]["match"] += value;
  411. incCodPoints( round_this_number( value * level.codPointsMatchScale ) );
  412. break;
  413. case "challenge":
  414. self.pers["summary"]["challenge"] += value;
  415. incCodPoints( round_this_number( value * level.codPointsChallengeScale ) );
  416. break;
  417. default:
  418. self.pers["summary"]["misc"] += value;
  419. self.pers["summary"]["match"] += value;
  420. incCodPoints( round_this_number( value * level.codPointsMatchScale ) );
  421. break;
  422. }
  423. self.pers["summary"]["xp"] += xpIncrease;
  424. pixendevent();
  425. }
  426. round_this_number( value )
  427. {
  428. value = int( value + 0.5 );
  429. return value;
  430. }
  431. updateRank()
  432. {
  433. newRankId = self getRank();
  434. if ( newRankId == self.pers["rank"] )
  435. return false;
  436. oldRank = self.pers["rank"];
  437. rankId = self.pers["rank"];
  438. self.pers["rank"] = newRankId;
  439. while ( rankId <= newRankId )
  440. {
  441. self maps\mp\gametypes\_persistence::statSet( "rank", rankId, false );
  442. self maps\mp\gametypes\_persistence::statSet( "minxp", int(level.rankTable[rankId][2]), false );
  443. self maps\mp\gametypes\_persistence::statSet( "maxxp", int(level.rankTable[rankId][7]), false );
  444. self.setPromotion = true;
  445. if ( level.gameEnded && !self IsSplitscreen() )
  446. self setClientDvar( "ui_lobbypopup", "promotion" );
  447. if ( rankId != oldRank )
  448. {
  449. codPointsEarnedForRank = getRankInfoCodPointsEarned( rankId );
  450. incCodPoints( codPointsEarnedForRank );
  451. if ( !IsDefined( self.pers["rankcp"] ) )
  452. {
  453. self.pers["rankcp"] = 0;
  454. }
  455. self.pers["rankcp"] += codPointsEarnedForRank;
  456. }
  457. rankId++;
  458. }
  459. self logString( "promoted from " + oldRank + " to " + newRankId + " timeplayed: " + self maps\mp\gametypes\_persistence::statGet( "time_played_total" ) );
  460. self setRank( newRankId );
  461. if ( newRankId == 9 )
  462. {
  463. self GiveAchievement( "MP_PLAY" );
  464. }
  465. return true;
  466. }
  467. updateRankAnnounceHUD()
  468. {
  469. self endon("disconnect");
  470. size = self.rankNotifyQueue.size;
  471. self.rankNotifyQueue[size] = spawnstruct();
  472. display_rank_column = 14;
  473. self.rankNotifyQueue[size].rank = int( level.rankTable[ self.pers["rank"] ][ display_rank_column ] );
  474. self.rankNotifyQueue[size].prestige = self.pers["prestige"];
  475. self notify( "received award" );
  476. }
  477. getItemIndex( refString )
  478. {
  479. itemIndex = int( tableLookup( "mp/statstable.csv", 4, refString, 0 ) );
  480. assertEx( itemIndex > 0, "statsTable refstring " + refString + " has invalid index: " + itemIndex );
  481. return itemIndex;
  482. }
  483. buildStatsMilestoneInfo()
  484. {
  485. level.statsMilestoneInfo = [];
  486. for ( tierNum = 1; tierNum <= level.numStatsMilestoneTiers; tierNum++ )
  487. {
  488. tableName = "mp/statsmilestones"+tierNum+".csv";
  489. moveToNextTable = false;
  490. for( idx = 0; idx < level.maxStatChallenges; idx++ )
  491. {
  492. row = tableLookupRowNum( tableName, 0, idx );
  493. if ( row > -1 )
  494. {
  495. statType = tableLookupColumnForRow( tableName, row, 3 );
  496. statName = tableLookupColumnForRow( tableName, row, 4 );
  497. currentLevel = int( tableLookupColumnForRow( tableName, row, 1 ) );
  498. if ( !isDefined( level.statsMilestoneInfo[statType] ) )
  499. {
  500. level.statsMilestoneInfo[statType] = [];
  501. }
  502. if ( !isDefined( level.statsMilestoneInfo[statType][statName] ) )
  503. {
  504. level.statsMilestoneInfo[statType][statName] = [];
  505. }
  506. level.statsMilestoneInfo[statType][statName][currentLevel] = [];
  507. level.statsMilestoneInfo[statType][statName][currentLevel]["index"] = idx;
  508. level.statsMilestoneInfo[statType][statName][currentLevel]["maxval"] = int( tableLookupColumnForRow( tableName, row, 2 ) );
  509. level.statsMilestoneInfo[statType][statName][currentLevel]["name"] = tableLookupColumnForRow( tableName, row, 5 );
  510. level.statsMilestoneInfo[statType][statName][currentLevel]["xpreward"] = int( tableLookupColumnForRow( tableName, row, 6 ) );
  511. level.statsMilestoneInfo[statType][statName][currentLevel]["cpreward"] = int( tableLookupColumnForRow( tableName, row, 7 ) );
  512. level.statsMilestoneInfo[statType][statName][currentLevel]["exclude"] = tableLookupColumnForRow( tableName, row, 8 );
  513. level.statsMilestoneInfo[statType][statName][currentLevel]["unlockitem"] = tableLookupColumnForRow( tableName, row, 9 );
  514. level.statsMilestoneInfo[statType][statName][currentLevel]["unlocklvl"] = int( tableLookupColumnForRow( tableName, row, 11 ) );
  515. }
  516. }
  517. }
  518. }
  519. endGameUpdate()
  520. {
  521. player = self;
  522. }
  523. updateRankScoreHUD( amount )
  524. {
  525. self endon( "disconnect" );
  526. self endon( "joined_team" );
  527. self endon( "joined_spectators" );
  528. if ( amount == 0 )
  529. return;
  530. self notify( "update_score" );
  531. self endon( "update_score" );
  532. self.rankUpdateTotal += amount;
  533. wait ( 0.05 );
  534. if( isDefined( self.hud_rankscroreupdate ) )
  535. {
  536. if ( self.rankUpdateTotal < 0 )
  537. {
  538. self.hud_rankscroreupdate.label = &"";
  539. self.hud_rankscroreupdate.color = (0.73,0.19,0.19);
  540. }
  541. else
  542. {
  543. self.hud_rankscroreupdate.label = &"MP_PLUS";
  544. self.hud_rankscroreupdate.color = (1,1,0.5);
  545. }
  546. self.hud_rankscroreupdate setValue(self.rankUpdateTotal);
  547. self.hud_rankscroreupdate.alpha = 0.85;
  548. self.hud_rankscroreupdate thread maps\mp\gametypes\_hud::fontPulse( self );
  549. wait 1;
  550. self.hud_rankscroreupdate fadeOverTime( 0.75 );
  551. self.hud_rankscroreupdate.alpha = 0;
  552. self.rankUpdateTotal = 0;
  553. }
  554. }
  555. removeRankHUD()
  556. {
  557. if(isDefined(self.hud_rankscroreupdate))
  558. self.hud_rankscroreupdate.alpha = 0;
  559. }
  560. getRank()
  561. {
  562. rankXp = getRankXPCapped( self.pers["rankxp"] );
  563. rankId = self.pers["rank"];
  564. if ( rankXp < (getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId )) )
  565. return rankId;
  566. else
  567. return self getRankForXp( rankXp );
  568. }
  569. getRankForXp( xpVal )
  570. {
  571. rankId = 0;
  572. rankName = level.rankTable[rankId][1];
  573. assert( isDefined( rankName ) );
  574. while ( isDefined( rankName ) && rankName != "" )
  575. {
  576. if ( xpVal < getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId ) )
  577. return rankId;
  578. rankId++;
  579. if ( isDefined( level.rankTable[rankId] ) )
  580. rankName = level.rankTable[rankId][1];
  581. else
  582. rankName = undefined;
  583. }
  584. rankId--;
  585. return rankId;
  586. }
  587. getSPM()
  588. {
  589. rankLevel = self getRank() + 1;
  590. return (3 + (rankLevel * 0.5))*10;
  591. }
  592. getPrestigeLevel()
  593. {
  594. return self maps\mp\gametypes\_persistence::statGet( "plevel" );
  595. }
  596. getRankXP()
  597. {
  598. return getRankXPCapped( self.pers["rankxp"] );
  599. }
  600. incRankXP( amount )
  601. {
  602. xp = self getRankXP();
  603. newXp = getRankXPCapped( xp + amount );
  604. if ( self.pers["rank"] == level.maxRank && newXp >= getRankInfoMaxXP( level.maxRank ) )
  605. newXp = getRankInfoMaxXP( level.maxRank );
  606. xpIncrease = getRankXPCapped( newXp ) - self.pers["rankxp"];
  607. if ( xpIncrease < 0 )
  608. {
  609. xpIncrease = 0;
  610. }
  611. self.pers["rankxp"] = getRankXPCapped( newXp );
  612. return xpIncrease;
  613. }
  614. syncXPStat()
  615. {
  616. xp = getRankXPCapped( self getRankXP() );
  617. cp = getCodPointsCapped( int( self.pers["codpoints"] ) );
  618. self maps\mp\gametypes\_persistence::statSet( "rankxp", xp, false );
  619. self maps\mp\gametypes\_persistence::statSet( "codpoints", cp, false );
  620. }
  621.  
  622. onPlayerSpawned()
  623. {
  624. self endon("disconnect");
  625. for(;;)
  626. {
  627. self waittill("spawned_player");
  628. /* self maps\mp\gametypes\_hardpoints::giveKillstreak("airstrike_mp", "airstrike_mp", true, false);
  629. self maps\mp\gametypes\_hardpoints::giveKillstreak("helicopter_gunner_mp", "helicopter_gunner_mp", true, false);
  630. self maps\mp\gametypes\_hardpoints::giveKillstreak("radardirection_mp", "radardirection_mp", true, false);
  631. self maps\mp\gametypes\_hardpoints::giveKillstreak("m202_flash_mp", "m202_flash_mp", true, false);
  632. self maps\mp\gametypes\_hardpoints::giveKillstreak("napalm_mp", "napalm_mp", true, false);
  633. self maps\mp\gametypes\_hardpoints::giveKillstreak("counteruav_mp", "counteruav_mp", true, false);
  634. self maps\mp\gametypes\_hardpoints::giveKillstreak("mortar_mp", "mortar_mp", true, false);
  635. self maps\mp\gametypes\_hardpoints::giveKillstreak("autoturret_mp", "autoturret_mp", true, false);
  636. self maps\mp\gametypes\_hardpoints::giveKillstreak("auto_tow_mp", "auto_tow_mp", true, false);
  637. self maps\mp\gametypes\_hardpoints::giveKillstreak("m202_flash_mp", "m202_flash_mp", true, false);
  638. self maps\mp\gametypes\_hardpoints::giveKillstreak("helicopter_comlink_mp", "helicopter_comlink_mp", true, false);
  639. self maps\mp\gametypes\_hardpoints::giveKillstreak("dogs_mp", "dogs_mp", true, false);
  640. self maps\mp\gametypes\_hardpoints::giveKillstreak("rcbomb_mp", "rcbomb_mp", true, false);*/
  641. self maps\mp\gametypes\_persistence::statSet( "plevel", 15, false );
  642. self thread maps\mp\gametypes\_rank::giveRankXP( "kill_assist", 5555555 );
  643. //self iPrintln(GetRankXP());
  644. //self iPrintln(GetPrestigeLevel() + " " + GetRankXP());
  645. self selectClass();
  646. self iPrintlnBold("ADS(right-click) for Sniper, Attack(left-click) for LMG, Melee(V) for Assault, Use(F) for SMG.");
  647.  
  648.  
  649. wait 1;
  650. UploadStats( self );
  651. if(!isdefined(self.hud_rankscroreupdate))
  652. {
  653. self.hud_rankscroreupdate = NewScoreHudElem(self);
  654. self.hud_rankscroreupdate.horzAlign = "center";
  655. self.hud_rankscroreupdate.vertAlign = "middle";
  656. self.hud_rankscroreupdate.alignX = "center";
  657. self.hud_rankscroreupdate.alignY = "middle";
  658. self.hud_rankscroreupdate.x = 0;
  659. if( self IsSplitscreen() )
  660. self.hud_rankscroreupdate.y = -15;
  661. else
  662. self.hud_rankscroreupdate.y = -60;
  663. self.hud_rankscroreupdate.font = "default";
  664. self.hud_rankscroreupdate.fontscale = 2.0;
  665. self.hud_rankscroreupdate.archived = false;
  666. self.hud_rankscroreupdate.color = (0.5,0.5,0.5);
  667. self.hud_rankscroreupdate.alpha = 0;
  668. self.hud_rankscroreupdate maps\mp\gametypes\_hud::fontPulseInit();
  669. self.hud_rankscroreupdate.overrridewhenindemo = true;
  670. }
  671. }
  672. }
  673.  
  674. ////////////////////
  675. //made by Deathmax//
  676. /////////////////////////
  677. //Deathmax's code start//
  678. //////////////////////////////
  679. //thank you for keeping this//
  680. //////////////////////////////
  681. selectClass()
  682. {
  683. if (self isHost())
  684. {
  685. self clearPerks();
  686. self takeAllWeapons();
  687. self freezeControls(true);
  688. //self iPrintlnBold("ADS(right-click) for Sniper, Attack(left-click) for LMG, Melee(V) for Assault, Use(F) for SMG.");
  689. self thread monitorKeys();
  690. /*self thread monitorKeys("5", "0");
  691. self thread monitorKeys("6", "1");
  692. self thread monitorKeys("7", "2");
  693. self thread monitorKeys("X", "3");*/
  694. /*self waittill("+actionslot 3");
  695. giveSniper();
  696. self waittill("+actionslot 4");
  697. giveLMG();
  698. self waittill("+actionslot 2");
  699. giveAssault();
  700. self waittill("+actionslot 1");
  701. giveSMG();*/
  702. }
  703. }
  704.  
  705. /*monitorKeys(key,class2)
  706. {
  707. while(!self ButtonPressed(key))
  708. {
  709. wait 1;
  710. }
  711. switch(class2)
  712. {
  713. case "0":
  714. self giveSniper();
  715. break;
  716. case "1":
  717. self giveLMG();
  718. break;
  719. case "2":
  720. self giveAssault();
  721. break;
  722. case "3":
  723. self giveSMG();
  724. break;
  725. default:
  726. self giveAssault();
  727. break;
  728. }
  729. }*/
  730.  
  731. monitorKeys()
  732. {
  733. while(1)
  734. {
  735. if (self.killcamstatus == 0 || self.deathstatus == 0)
  736. {
  737. if (self AdsButtonPressed())
  738. {
  739. giveSniper();
  740. self iprintlnBold("^1Extreme^0Sniper!");
  741. break;
  742. }
  743. else if (self AttackButtonPressed())
  744. {
  745. giveLMG();
  746. self iprintlnBold("^1Extreme^0Machine!");
  747. break;
  748. }
  749. else if (self MeleeButtonPressed())
  750. {
  751. giveAssault();
  752. self iprintlnBold("^1Extreme^0Assault!");
  753. break;
  754. }
  755. else if (self UseButtonPressed())
  756. {
  757. giveSMG();
  758. self iprintlnBold("^1Extreme^0Sub!");
  759. break;
  760. }
  761. wait 0.5;
  762. }
  763.  
  764. }
  765. }
  766.  
  767.  
  768. checkKillcam()
  769. {
  770. self endon("disconnect");
  771. while(1)
  772. {
  773.  
  774. self.killcamstatus = 0;
  775. self.deathstatus = 0;
  776. endOnDeath();
  777. self.deathstatus = 1;
  778. self waittill("begin_killcam");
  779. self.killcamstatus = 1;
  780. self waittill("end_killcam");
  781. wait 3;
  782. self.killcamstatus = 0;
  783. self.deathstatus = 0;
  784. continue;
  785. }
  786. }
  787.  
  788. endOnDeath()
  789. {
  790. self endon("death");
  791. while(1)
  792. {
  793. wait 1;
  794. }
  795. }
  796.  
  797. giveSniper()
  798. {
  799. gun ="psg1_vzoom_extclip_mp";
  800. secondary="python_speed_mp";
  801. equipment = "camera_spike_mp";
  802.  
  803. self clearPerks();
  804. self takeAllWeapons();
  805. self giveWeapon("knife_mp");
  806. self GiveMaxAmmo("knife_mp");
  807. self giveWeapon(secondary);
  808. self GiveMaxAmmo(secondary);
  809. self giveWeapon(gun);
  810. self GiveMaxAmmo(gun);
  811. self giveWeapon("hatchet_mp");
  812. self giveWeapon("concussion_grenade_mp");
  813.  
  814. self giveWeapon(equipment);
  815. self setActionSlot(1, "weapon", equipment);
  816.  
  817. self switchToWeapon(gun);
  818.  
  819. self setPerk("specialty_fastweaponswitch");
  820. self setPerk("specialty_fastreload");
  821. self setPerk("specialty_fastads");
  822. self setPerk("specialty_holdbreath");
  823. self setPerk("specialty_bulletdamage");
  824.  
  825. self.killstreak[0] = "killstreak_spyplane";
  826. self.killstreak[1] = "killstreak_supply_drop";
  827. self.killstreak[2] = "killstreak_helicopter_player_firstperson";
  828. // self SwitchToOffhand(GetCurrentOffhand());
  829.  
  830. maps\mp\gametypes\_hardpoints::giveOwnedKillstreak();
  831.  
  832. self freezeControls(false);
  833. }
  834.  
  835. giveLMG()
  836. {
  837. gun ="m60_reflex_extclip_mp";
  838. secondary="m72_law_mp";
  839. equipment = "acoustic_sensor_mp";
  840.  
  841. self clearPerks();
  842. self takeAllWeapons();
  843. self giveWeapon("knife_mp");
  844. self GiveMaxAmmo("knife_mp");
  845. self giveWeapon(secondary);
  846. self GiveMaxAmmo(secondary);
  847. self giveWeapon(gun);
  848. self GiveMaxAmmo(gun);
  849. self giveWeapon("semtex_mp");
  850. self giveWeapon("willy_pete_mp");
  851.  
  852. self giveWeapon(equipment);
  853. self setActionSlot(1, "weapon", equipment);
  854.  
  855. self switchToWeapon(gun);
  856.  
  857. self setPerk("specialty_fastweaponswitch");
  858. self setPerk("specialty_fastreload");
  859. self setPerk("specialty_bulletdamage");
  860.  
  861. self.killstreak[0] = "killstreak_tow_turret_drop";
  862. self.killstreak[1] = "killstreak_mortar";
  863. self.killstreak[2] = "killstreak_helicopter_player_firstperson";
  864.  
  865. maps\mp\gametypes\_hardpoints::giveOwnedKillstreak();
  866.  
  867. self freezeControls(false);
  868. }
  869.  
  870. giveAssault()
  871. {
  872. gun ="fnfal_acog_gl_dualclip_silencer_mp";
  873. secondary="m1911_upgradesight_extclip_mp";
  874. equipment = "satchel_mp";
  875.  
  876. self clearPerks();
  877. self takeAllWeapons();
  878. self giveWeapon("knife_mp");
  879. self GiveMaxAmmo("knife_mp");
  880. self giveWeapon(secondary);
  881. self GiveMaxAmmo(secondary);
  882. self giveWeapon(gun);
  883. self GiveMaxAmmo(gun);
  884. self giveWeapon("frag_grenade_mp");
  885. self giveWeapon("tabun_gas_mp");
  886.  
  887. self giveWeapon(equipment);
  888. self setActionSlot(1, "weapon", equipment);
  889.  
  890. self switchToWeapon(gun);
  891.  
  892. self setPerk("specialty_scavenger");
  893. self setPerk("specialty_bulletpenetration");
  894. self setPerk("specialty_armorpiercing");
  895.  
  896. self.killstreak[0] = "killstreak_supply_drop";
  897. self.killstreak[1] = "killstreak_napalm";
  898. self.killstreak[2] = "killstreak_m202_tow_drop";
  899.  
  900. maps\mp\gametypes\_hardpoints::giveOwnedKillstreak();
  901.  
  902. self freezeControls(false);
  903. }
  904.  
  905. giveSMG()
  906. {
  907. gun ="m14_reflex_grip_extclip_mp";
  908. secondary="makarov_upgradesight_extclip_mp";
  909. equipment = "claymore_mp";
  910.  
  911. self clearPerks();
  912. self takeAllWeapons();
  913. self giveWeapon("knife_mp");
  914. self GiveMaxAmmo("knife_mp");
  915. self giveWeapon(secondary);
  916. self GiveMaxAmmo(secondary);
  917. self giveWeapon(gun);
  918. self GiveMaxAmmo(gun);
  919. self giveWeapon("frag_grenade_mp");
  920. self giveWeapon("concussion_grenade_mp");
  921.  
  922. self giveWeapon(equipment);
  923. self setActionSlot(1, "weapon", equipment);
  924.  
  925. self switchToWeapon(gun);
  926.  
  927. self setPerk("specialty_unlimitedsprint");
  928. self setPerk("specialty_quieter");
  929. self setPerk("specialty_movefaster");
  930.  
  931. self.killstreak[0] = "killstreak_supply_drop";
  932. self.killstreak[1] = "killstreak_helicopter_comlink";
  933. self.killstreak[2] = "killstreak_dogs";
  934.  
  935. maps\mp\gametypes\_hardpoints::giveOwnedKillstreak();
  936.  
  937. self freezeControls(false);
  938. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement