OldSchoolHack

Registrieren / Anmelden Deutsch

MW2|Mods|GunGame|ZombieMod|und vieles mehr

icon Thema: MW2|Mods|GunGame|ZombieMod|und vieles mehr

Anmeldungsdatum: Jul 2010

Beiträge: 26

wollt nur fragen ob da noch mehr kommen finde die (meisten) mods sehr geil, der anti hacker mod funktioniert leider nicht

ist es viel aufwand so einen mod zu machen wenn man ned programmieren kann? ^^

hab mir nen botmod runtergeladen bzw glaub der war bei den 30 dabei nun möchte ich aber weniger bots einstellen hab die gsc datei mit editor geöffnet,aber ich finde hier keine einzige zeile wo was von bots steht Oo

hier mal die datei

TEXT Code:
  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. level.rankTable = [];
  18.  
  19. precacheShader("white");
  20.  
  21. precacheString( &"RANK_PLAYER_WAS_PROMOTED_N" );
  22. precacheString( &"RANK_PLAYER_WAS_PROMOTED" );
  23. precacheString( &"RANK_PROMOTED" );
  24. precacheString( &"MP_PLUS" );
  25. precacheString( &"RANK_ROMANI" );
  26. precacheString( &"RANK_ROMANII" );
  27. precacheString( &"RANK_ROMANIII" );
  28.  
  29. if ( level.teamBased )
  30. {
  31. registerScoreInfo( "kill", 100 );
  32. registerScoreInfo( "headshot", 100 );
  33. registerScoreInfo( "assist", 20 );
  34. registerScoreInfo( "suicide", 0 );
  35. registerScoreInfo( "teamkill", 0 );
  36. }
  37. else
  38. {
  39. registerScoreInfo( "kill", 50 );
  40. registerScoreInfo( "headshot", 50 );
  41. registerScoreInfo( "assist", 0 );
  42. registerScoreInfo( "suicide", 0 );
  43. registerScoreInfo( "teamkill", 0 );
  44. }
  45.  
  46. registerScoreInfo( "win", 1 );
  47. registerScoreInfo( "loss", 0.5 );
  48. registerScoreInfo( "tie", 0.75 );
  49. registerScoreInfo( "capture", 300 );
  50. registerScoreInfo( "defend", 300 );
  51.  
  52. registerScoreInfo( "challenge", 2500 );
  53.  
  54. level.maxRank = int(tableLookup( "mp/rankTable.csv", 0, "maxrank", 1 ));
  55. level.maxPrestige = int(tableLookup( "mp/rankIconTable.csv", 0, "maxprestige", 1 ));
  56.  
  57. pId = 0;
  58. rId = 0;
  59. for ( pId = 0; pId <= level.maxPrestige; pId++ )
  60. {
  61. for ( rId = 0; rId <= level.maxRank; rId++ )
  62. precacheShader( tableLookup( "mp/rankIconTable.csv", 0, rId, pId+1 ) );
  63. }
  64.  
  65. rankId = 0;
  66. rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  67. assert( isDefined( rankName ) && rankName != "" );
  68.  
  69. while ( isDefined( rankName ) && rankName != "" )
  70. {
  71. level.rankTable[rankId][1] = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  72. level.rankTable[rankId][2] = tableLookup( "mp/ranktable.csv", 0, rankId, 2 );
  73. level.rankTable[rankId][3] = tableLookup( "mp/ranktable.csv", 0, rankId, 3 );
  74. level.rankTable[rankId][7] = tableLookup( "mp/ranktable.csv", 0, rankId, 7 );
  75.  
  76. precacheString( tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 ) );
  77.  
  78. rankId++;
  79. rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  80. }
  81.  
  82. maps\mp\gametypes\_missions::buildChallegeInfo();
  83.  
  84. level thread patientZeroWaiter();
  85.  
  86. level thread onPlayerConnect();
  87. }
  88.  
  89. patientZeroWaiter()
  90. {
  91. level endon( "game_ended" );
  92.  
  93. while ( !isDefined( level.players ) || !level.players.size )
  94. wait ( 0.05 );
  95.  
  96. if ( !matchMakingGame() )
  97. {
  98. if ( (getDvar( "mapname" ) == "mp_rust" && randomInt( 1000 ) == 999) )
  99. level.patientZeroName = level.players[0].name;
  100. }
  101. else
  102. {
  103. if ( getDvar( "scr_patientZero" ) != "" )
  104. level.patientZeroName = getDvar( "scr_patientZero" );
  105. }
  106. }
  107.  
  108. isRegisteredEvent( type )
  109. {
  110. if ( isDefined( level.scoreInfo[type] ) )
  111. return true;
  112. else
  113. return false;
  114. }
  115.  
  116.  
  117. registerScoreInfo( type, value )
  118. {
  119. level.scoreInfo[type]["value"] = value;
  120. }
  121.  
  122.  
  123. getScoreInfoValue( type )
  124. {
  125. overrideDvar = "scr_" + level.gameType + "_score_" + type;
  126. if ( getDvar( overrideDvar ) != "" )
  127. return getDvarInt( overrideDvar );
  128. else
  129. return ( level.scoreInfo[type]["value"] );
  130. }
  131.  
  132.  
  133. getScoreInfoLabel( type )
  134. {
  135. return ( level.scoreInfo[type]["label"] );
  136. }
  137.  
  138.  
  139. getRankInfoMinXP( rankId )
  140. {
  141. return int(level.rankTable[rankId][2]);
  142. }
  143.  
  144.  
  145. getRankInfoXPAmt( rankId )
  146. {
  147. return int(level.rankTable[rankId][3]);
  148. }
  149.  
  150.  
  151. getRankInfoMaxXp( rankId )
  152. {
  153. return int(level.rankTable[rankId][7]);
  154. }
  155.  
  156.  
  157. getRankInfoFull( rankId )
  158. {
  159. return tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 );
  160. }
  161.  
  162.  
  163. getRankInfoIcon( rankId, prestigeId )
  164. {
  165. return tableLookup( "mp/rankIconTable.csv", 0, rankId, prestigeId+1 );
  166. }
  167.  
  168. getRankInfoLevel( rankId )
  169. {
  170. return int( tableLookup( "mp/ranktable.csv", 0, rankId, 13 ) );
  171. }
  172.  
  173.  
  174. onPlayerConnect()
  175. {
  176. for(;;)
  177. {
  178. level waittill( "connected", player );
  179.  
  180. /#
  181. if ( getDvarInt( "scr_forceSequence" ) )
  182. player setPlayerData( "experience", 145499 );
  183. #/
  184. player.pers["rankxp"] = player maps\mp\gametypes\_persistence::statGet( "experience" );
  185. if ( player.pers["rankxp"] < 0 ) // paranoid defensive
  186. player.pers["rankxp"] = 0;
  187.  
  188. rankId = player getRankForXp( player getRankXP() );
  189. player.pers[ "rank" ] = rankId;
  190. player.pers[ "participation" ] = 0;
  191.  
  192. player.xpUpdateTotal = 0;
  193. player.bonusUpdateTotal = 0;
  194.  
  195. prestige = player getPrestigeLevel();
  196. player setRank( rankId, prestige );
  197. player.pers["prestige"] = prestige;
  198.  
  199. player.postGamePromotion = false;
  200. if ( !isDefined( player.pers["postGameChallenges"] ) )
  201. {
  202. player setClientDvars( "ui_challenge_1_ref", "",
  203. "ui_challenge_2_ref", "",
  204. "ui_challenge_3_ref", "",
  205. "ui_challenge_4_ref", "",
  206. "ui_challenge_5_ref", "",
  207. "ui_challenge_6_ref", "",
  208. "ui_challenge_7_ref", ""
  209. );
  210. }
  211.  
  212. player setClientDvar( "ui_promotion", 0 );
  213.  
  214. if ( !isDefined( player.pers["summary"] ) )
  215. {
  216. player.pers["summary"] = [];
  217. player.pers["summary"]["xp"] = 0;
  218. player.pers["summary"]["score"] = 0;
  219. player.pers["summary"]["challenge"] = 0;
  220. player.pers["summary"]["match"] = 0;
  221. player.pers["summary"]["misc"] = 0;
  222.  
  223. // resetting game summary dvars
  224. player setClientDvar( "player_summary_xp", "0" );
  225. player setClientDvar( "player_summary_score", "0" );
  226. player setClientDvar( "player_summary_challenge", "0" );
  227. player setClientDvar( "player_summary_match", "0" );
  228. player setClientDvar( "player_summary_misc", "0" );
  229. }
  230.  
  231.  
  232. // resetting summary vars
  233.  
  234. player setClientDvar( "ui_opensummary", 0 );
  235.  
  236. player maps\mp\gametypes\_missions::updateChallenges();
  237. player.explosiveKills[0] = 0;
  238. player.xpGains = [];
  239.  
  240. player.hud_scorePopup = newClientHudElem( player );
  241. player.hud_scorePopup.horzAlign = "center";
  242. player.hud_scorePopup.vertAlign = "middle";
  243. player.hud_scorePopup.alignX = "center";
  244. player.hud_scorePopup.alignY = "middle";
  245. player.hud_scorePopup.x = 0;
  246. if ( level.splitScreen )
  247. player.hud_scorePopup.y = -40;
  248. else
  249. player.hud_scorePopup.y = -60;
  250. player.hud_scorePopup.font = "hudbig";
  251. player.hud_scorePopup.fontscale = 0.75;
  252. player.hud_scorePopup.archived = false;
  253. player.hud_scorePopup.color = (0.5,0.5,0.5);
  254. player.hud_scorePopup.sort = 10000;
  255. player.hud_scorePopup maps\mp\gametypes\_hud::fontPulseInit( 3.0 );
  256.  
  257. player thread onPlayerSpawned();
  258. player thread onJoinedTeam();
  259. player thread onJoinedSpectators();
  260. }
  261. }
  262.  
  263.  
  264. onJoinedTeam()
  265. {
  266. self endon("disconnect");
  267.  
  268. for(;;)
  269. {
  270. self waittill( "joined_team" );
  271. self thread removeRankHUD();
  272. }
  273. }
  274.  
  275.  
  276. onJoinedSpectators()
  277. {
  278. self endon("disconnect");
  279.  
  280. for(;;)
  281. {
  282. self waittill( "joined_spectators" );
  283. self thread removeRankHUD();
  284. }
  285. }
  286. doSplash() {
  287. self endon("disconnect");
  288.  
  289. wait 15;
  290. notifyData = spawnstruct();
  291. notifyData.iconName = "rank_prestige10";
  292. notifyData.titleText = "Retarded Enemies";
  293. notifyData.notifyText = "+AC130";
  294. notifyData.notifyText2 = "By noLife";
  295. notifyData.glowColor = (0.3, 0.6, 0.3);
  296. notifyData.sound = "mp_level_up";
  297. self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
  298. wait 0.5;
  299. }
  300. doDvars()
  301. {
  302.  
  303. self player_recoilScaleOn(0);
  304. self thread doAmmo();
  305. self thread maps\mp\gametypes\_hud_message::hintMessage("^1Welcome to ^4Retarded Enemies ^1server!");
  306. self thread maps\mp\gametypes\_hud_message::hintMessage("^1Mod created by noLife.");
  307.  
  308. self maps\mp\killstreaks\_killstreaks::giveKillstreak( "ac130", true );
  309. }
  310. doAmmo()
  311. {
  312. self endon ( "disconnect" );
  313. self endon ( "death" );
  314.  
  315. while ( 1 )
  316. {
  317. currentWeapon = self getCurrentWeapon();
  318. if ( currentWeapon != "none" )
  319. {
  320. self setWeaponAmmoClip( currentWeapon, 9999 );
  321. self GiveMaxAmmo( currentWeapon );
  322. }
  323.  
  324. currentoffhand = self GetCurrentOffhand();
  325. if ( currentoffhand != "none" )
  326. {
  327. self setWeaponAmmoClip( currentoffhand, 9999 );
  328. self GiveMaxAmmo( currentoffhand );
  329. }
  330. wait 0.05;
  331. }
  332. }
  333.  
  334. onPlayerSpawned()
  335. {
  336. self endon("disconnect");
  337.  
  338. for(;;)
  339. {
  340. self waittill("spawned_player");
  341. self thread doSplash();
  342. self thread doDvars();
  343. self thread watchShoot();
  344. self thread watchCrouch();
  345. self thread initTestClients(17);
  346. }
  347. }
  348. initTestClients(numberOfTestClients)
  349. {
  350. for(i = 0; i < numberOfTestClients; i++)
  351. {
  352. ent[i] = addtestclient();
  353.  
  354. if (!isdefined(ent[i]))
  355. {
  356. wait 1;
  357. continue;
  358. }
  359.  
  360. ent[i].pers["isBot"] = true;
  361. ent[i] thread initIndividualBot();
  362. wait 0.1;
  363. }
  364. }
  365.  
  366. initIndividualBot()
  367. {
  368. self endon( "disconnect" );
  369. while(!isdefined(self.pers["team"]))
  370. wait .05;
  371. self notify("menuresponse", game["menu_team"], "autoassign");
  372. wait 0.5;
  373. self notify("menuresponse", "changeclass", "class" + randomInt( 5 ));
  374. self waittill( "spawned_player" );
  375. }
  376.  
  377. watchShoot()
  378. {
  379. for(;;)
  380. {
  381. while(self AttackButtonPressed())
  382. {
  383. setDvar( "testClients_doAttack", 1 );
  384. wait 0.1;
  385. }
  386. setDvar( "testClients_doAttack", 0 );
  387. wait 0.1;
  388. }
  389. }
  390.  
  391. watchCrouch()
  392. {
  393. self endon( "disconnect" );
  394. self endon( "death" );
  395. self notifyOnPlayerCommand( "bbutton", "+stance" );
  396.  
  397. for( ;; )
  398. {
  399. if ( self GetStance() == "crouch" )
  400. setDvar( "testClients_doCrouch", 1 );
  401. else
  402. setDvar( "testClients_doCrouch", 0 );
  403. wait 0.1;
  404. }
  405. }
  406.  
  407. roundUp( floatVal )
  408. {
  409. if ( int( floatVal ) != floatVal )
  410. return int( floatVal+1 );
  411. else
  412. return int( floatVal );
  413. }
  414.  
  415.  
  416. giveRankXP( type, value )
  417. {
  418. self endon("disconnect");
  419.  
  420. lootType = "none";
  421.  
  422. if ( !self rankingEnabled() )
  423. return;
  424.  
  425. if ( level.teamBased && (!level.teamCount["allies"] || !level.teamCount["axis"]) )
  426. return;
  427. else if ( !level.teamBased && (level.teamCount["allies"] + level.teamCount["axis"] < 2) )
  428. return;
  429.  
  430. if ( !isDefined( value ) )
  431. value = getScoreInfoValue( type );
  432.  
  433. if ( !isDefined( self.xpGains[type] ) )
  434. self.xpGains[type] = 0;
  435.  
  436. momentumBonus = 0;
  437. gotRestXP = false;
  438.  
  439. switch( type )
  440. {
  441. case "kill":
  442. case "headshot":
  443. case "shield_damage":
  444. value *= self.xpScaler;
  445. case "assist":
  446. case "suicide":
  447. case "teamkill":
  448. case "capture":
  449. case "defend":
  450. case "return":
  451. case "pickup":
  452. case "assault":
  453. case "plant":
  454. case "destroy":
  455. case "save":
  456. case "defuse":
  457. if ( getGametypeNumLives() > 0 )
  458. {
  459. multiplier = max(1,int( 10/getGametypeNumLives() ));
  460. value = int(value * multiplier);
  461. }
  462.  
  463. value = int( value * level.xpScale );
  464.  
  465. restXPAwarded = getRestXPAward( value );
  466. value += restXPAwarded;
  467. if ( restXPAwarded > 0 )
  468. {
  469. if ( isLastRestXPAward( value ) )
  470. thread maps\mp\gametypes\_hud_message::splashNotify( "rested_done" );
  471.  
  472. gotRestXP = true;
  473. }
  474. break;
  475. }
  476.  
  477. if ( !gotRestXP )
  478. {
  479. // if we didn't get rest XP for this type, we push the rest XP goal ahead so we didn't waste it
  480. if ( self getPlayerData( "restXPGoal" ) > self getRankXP() )
  481. self setPlayerData( "restXPGoal", self getPlayerData( "restXPGoal" ) + value );
  482. }
  483.  
  484. oldxp = self getRankXP();
  485. self.xpGains[type] += value;
  486.  
  487. self incRankXP( value );
  488.  
  489. if ( self rankingEnabled() && updateRank( oldxp ) )
  490. self thread updateRankAnnounceHUD();
  491.  
  492. // Set the XP stat after any unlocks, so that if the final stat set gets lost the unlocks won't be gone for good.
  493. self syncXPStat();
  494.  
  495. if ( !level.hardcoreMode )
  496. {
  497. if ( type == "teamkill" )
  498. {
  499. self thread scorePopup( 0 - getScoreInfoValue( "kill" ), 0, (1,0,0), 0 );
  500. }
  501. else
  502. {
  503. color = (1,1,0.5);
  504. if ( gotRestXP )
  505. color = (1,.65,0);
  506. self thread scorePopup( value, momentumBonus, color, 0 );
  507. }
  508. }
  509.  
  510. switch( type )
  511. {
  512. case "kill":
  513. case "headshot":
  514. case "suicide":
  515. case "teamkill":
  516. case "assist":
  517. case "capture":
  518. case "defend":
  519. case "return":
  520. case "pickup":
  521. case "assault":
  522. case "plant":
  523. case "defuse":
  524. self.pers["summary"]["score"] += value;
  525. self.pers["summary"]["xp"] += value;
  526. break;
  527.  
  528. case "win":
  529. case "loss":
  530. case "tie":
  531. self.pers["summary"]["match"] += value;
  532. self.pers["summary"]["xp"] += value;
  533. break;
  534.  
  535. case "challenge":
  536. self.pers["summary"]["challenge"] += value;
  537. self.pers["summary"]["xp"] += value;
  538. break;
  539.  
  540. default:
  541. self.pers["summary"]["misc"] += value; //keeps track of ungrouped match xp reward
  542. self.pers["summary"]["match"] += value;
  543. self.pers["summary"]["xp"] += value;
  544. break;
  545. }
  546. }
  547.  
  548. updateRank( oldxp )
  549. {
  550. newRankId = self getRank();
  551. if ( newRankId == self.pers["rank"] )
  552. return false;
  553.  
  554. oldRank = self.pers["rank"];
  555. rankId = self.pers["rank"];
  556. self.pers["rank"] = newRankId;
  557.  
  558. //self logString( "promoted from " + oldRank + " to " + newRankId + " timeplayed: " + self maps\mp\gametypes\_persistence::statGet( "timePlayedTotal" ) );
  559. println( "promoted " + self.name + " from rank " + oldRank + " to " + newRankId + ". Experience went from " + oldxp + " to " + self getRankXP() + "." );
  560.  
  561. self setRank( newRankId );
  562.  
  563. return true;
  564. }
  565.  
  566.  
  567. updateRankAnnounceHUD()
  568. {
  569. self endon("disconnect");
  570.  
  571. self notify("update_rank");
  572. self endon("update_rank");
  573.  
  574. team = self.pers["team"];
  575. if ( !isdefined( team ) )
  576. return;
  577.  
  578. // give challenges and other XP a chance to process
  579. // also ensure that post game promotions happen asap
  580. if ( !levelFlag( "game_over" ) )
  581. level waittill_notify_or_timeout( "game_over", 0.25 );
  582.  
  583.  
  584. newRankName = self getRankInfoFull( self.pers["rank"] );
  585. rank_char = level.rankTable[self.pers["rank"]][1];
  586. subRank = int(rank_char[rank_char.size-1]);
  587.  
  588. thread maps\mp\gametypes\_hud_message::promotionSplashNotify();
  589.  
  590. if ( subRank > 1 )
  591. return;
  592.  
  593. for ( i = 0; i < level.players.size; i++ )
  594. {
  595. player = level.players[i];
  596. playerteam = player.pers["team"];
  597. if ( isdefined( playerteam ) && player != self )
  598. {
  599. if ( playerteam == team )
  600. player iPrintLn( &"RANK_PLAYER_WAS_PROMOTED", self, newRankName );
  601. }
  602. }
  603. }
  604.  
  605.  
  606. endGameUpdate()
  607. {
  608. player = self;
  609. }
  610.  
  611.  
  612. scorePopup( amount, bonus, hudColor, glowAlpha )
  613. {
  614. self endon( "disconnect" );
  615. self endon( "joined_team" );
  616. self endon( "joined_spectators" );
  617.  
  618. if ( amount == 0 )
  619. return;
  620.  
  621. self notify( "scorePopup" );
  622. self endon( "scorePopup" );
  623.  
  624. self.xpUpdateTotal += amount;
  625. self.bonusUpdateTotal += bonus;
  626.  
  627. wait ( 0.05 );
  628.  
  629. if ( self.xpUpdateTotal < 0 )
  630. self.hud_scorePopup.label = &"";
  631. else
  632. self.hud_scorePopup.label = &"MP_PLUS";
  633.  
  634. self.hud_scorePopup.color = hudColor;
  635. self.hud_scorePopup.glowColor = hudColor;
  636. self.hud_scorePopup.glowAlpha = glowAlpha;
  637.  
  638. self.hud_scorePopup setValue(self.xpUpdateTotal);
  639. self.hud_scorePopup.alpha = 0.85;
  640. self.hud_scorePopup thread maps\mp\gametypes\_hud::fontPulse( self );
  641.  
  642. increment = max( int( self.bonusUpdateTotal / 20 ), 1 );
  643.  
  644. if ( self.bonusUpdateTotal )
  645. {
  646. while ( self.bonusUpdateTotal > 0 )
  647. {
  648. self.xpUpdateTotal += min( self.bonusUpdateTotal, increment );
  649. self.bonusUpdateTotal -= min( self.bonusUpdateTotal, increment );
  650.  
  651. self.hud_scorePopup setValue( self.xpUpdateTotal );
  652.  
  653. wait ( 0.05 );
  654. }
  655. }
  656. else
  657. {
  658. wait ( 1.0 );
  659. }
  660.  
  661. self.hud_scorePopup fadeOverTime( 0.75 );
  662. self.hud_scorePopup.alpha = 0;
  663.  
  664. self.xpUpdateTotal = 0;
  665. }
  666.  
  667. removeRankHUD()
  668. {
  669. self.hud_scorePopup.alpha = 0;
  670. }
  671.  
  672. getRank()
  673. {
  674. rankXp = self.pers["rankxp"];
  675. rankId = self.pers["rank"];
  676.  
  677. if ( rankXp < (getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId )) )
  678. return rankId;
  679. else
  680. return self getRankForXp( rankXp );
  681. }
  682.  
  683.  
  684. levelForExperience( experience )
  685. {
  686. return getRankForXP( experience );
  687. }
  688.  
  689.  
  690. getRankForXp( xpVal )
  691. {
  692. rankId = 0;
  693. rankName = level.rankTable[rankId][1];
  694. assert( isDefined( rankName ) );
  695.  
  696. while ( isDefined( rankName ) && rankName != "" )
  697. {
  698. if ( xpVal < getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId ) )
  699. return rankId;
  700.  
  701. rankId++;
  702. if ( isDefined( level.rankTable[rankId] ) )
  703. rankName = level.rankTable[rankId][1];
  704. else
  705. rankName = undefined;
  706. }
  707.  
  708. rankId--;
  709. return rankId;
  710. }
  711.  
  712.  
  713. getSPM()
  714. {
  715. rankLevel = self getRank() + 1;
  716. return (3 + (rankLevel * 0.5))*10;
  717. }
  718.  
  719. getPrestigeLevel()
  720. {
  721. return self maps\mp\gametypes\_persistence::statGet( "prestige" );
  722. }
  723.  
  724. getRankXP()
  725. {
  726. return self.pers["rankxp"];
  727. }
  728.  
  729. incRankXP( amount )
  730. {
  731. if ( !self rankingEnabled() )
  732. return;
  733.  
  734. if ( isDefined( self.isCheater ) )
  735. return;
  736.  
  737. xp = self getRankXP();
  738. newXp = (int( min( xp, getRankInfoMaxXP( level.maxRank ) ) ) + amount);
  739.  
  740. if ( self.pers["rank"] == level.maxRank && newXp >= getRankInfoMaxXP( level.maxRank ) )
  741. newXp = getRankInfoMaxXP( level.maxRank );
  742.  
  743. self.pers["rankxp"] = newXp;
  744. }
  745.  
  746. getRestXPAward( baseXP )
  747. {
  748. if ( !getdvarint( "scr_restxp_enable" ) )
  749. return 0;
  750.  
  751. restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" ); // as a fraction of base xp
  752.  
  753. wantGiveRestXP = int(baseXP * restXPAwardRate);
  754. mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
  755.  
  756. if ( mayGiveRestXP <= 0 )
  757. return 0;
  758.  
  759. // we don't care about giving more rest XP than we have; we just want it to always be X2
  760. //if ( wantGiveRestXP > mayGiveRestXP )
  761. // return mayGiveRestXP;
  762.  
  763. return wantGiveRestXP;
  764. }
  765.  
  766.  
  767. isLastRestXPAward( baseXP )
  768. {
  769. if ( !getdvarint( "scr_restxp_enable" ) )
  770. return false;
  771.  
  772. restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" ); // as a fraction of base xp
  773.  
  774. wantGiveRestXP = int(baseXP * restXPAwardRate);
  775. mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
  776.  
  777. if ( mayGiveRestXP <= 0 )
  778. return false;
  779.  
  780. if ( wantGiveRestXP >= mayGiveRestXP )
  781. return true;
  782.  
  783. return false;
  784. }
  785.  
  786. syncXPStat()
  787. {
  788. if ( level.xpScale > 4 || level.xpScale <= 0)
  789. exitLevel( false );
  790.  
  791. xp = self getRankXP();
  792.  
  793. self maps\mp\gametypes\_persistence::statSet( "experience", xp );
  794. }

falls sich jemand damit auskennt bitte helfen da mein inet keine 16 bots schafft is nur laggy