Call of Duty 6: GunGame-Server ?

Dieses Thema im Forum "PC & Konsolen Spiele" wurde erstellt von stargate25_5, 16. Juni 2010 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 16. Juni 2010
    Zuletzt von einem Moderator bearbeitet: 15. April 2017
    Hey Leute,

    ich bin heute bei Cod 6 auf nen Server gekommen wo man nacheinander verschiedene Waffen hatte (wie bei CSS GunGame) und ich fand den so cool, dass ich jetzt gerne Wissen möchte, wie ich mal einen selber machen kann.
    cod6gungameqs6p.jpg
    {img-src: //www.abload.de/thumb/cod6gungameqs6p.jpg}

    Meine Frage also, ist das ein Konsolenbasierter Hack, falls ja bitte gebt mir bitte die commands, oder ist es ein Dedi-Sever Hack ?!?


    bitte um Hilfe

    Stargate25_5

    Edit: Google spült nur mist raus, ihr seit meine letzte hoffnung auf Fun ;D
     
  2. 16. Juni 2010
    AW: Call of Duty 6: GunGame-Server ?

    ist wahrscheinlich ein Console Hack
    würde mich freuen auf soeinen server zu kommen da mir GunGame Server in CSS immer gefallen haben

    da konnte man etwas skill mit anderen Guns erwerben xD

    mfg silver2k3
     
  3. 16. Juni 2010
    AW: Call of Duty 6: GunGame-Server ?

    http://www.gamethreat.net/forums/download-discussion/42812-modern-warfare-2-modloader-v1-0-a.html

    ich guck mal weiter
     
  4. 16. Juni 2010
    AW: Call of Duty 6: GunGame-Server ?

    Okay das hilft schonmal weiter, ich werde mich auch mal über eventuelle Mods Informieren ;D bitte wenn jemand was weis posten.


    Mfg stargate25_5

    Edit: Bw sind für euch zwei raus
     
  5. 17. Juni 2010
    AW: Call of Duty 6: GunGame-Server ?

    riesengroße frage natürlich: wird man gebannt, selbst wenn mans ausschließlich für private matches nutzt?^^

    ausprobiern hilft natürlich aber das risiko geh ich nich ein...
     
  6. 17. Juni 2010
    AW: Call of Duty 6: GunGame-Server ?

    Eine gute Frage, da du um den Mod zu spielen aber Game-Dateien veränderst, ist die Antwort klar JA ;D

    Mir macht es nix aus, ich hab schon einen Banned-Account, weil ich Funserver mit VAC-Chaos erstellt habe aber mit dem VAC Beipass läuft er wieder, also werden die Mods mir diesem Account gestarte ;D

    Hat eig schon einer nen Mod für das GunGame gefunden oder muss ich dann alles selber machen ?!?

    Mfg stargate25_5
     
  7. 17. Juni 2010
    AW: Call of Duty 6: GunGame-Server ?

    Ja, man kann auch bei Privat Matches gebannt werden, da da auch VAC2 läuft.

    Hab schon seit Monaten mit VAC Chaos Server erstellt, bin aber nicht banned.. find ich auch gut so

    Hab gestern nochmal nach paar Mods gesucht, aber leider noch nix gefunden bisher, außer die zwei Mods, die beim Pack dabei waren
     
  8. 18. Juni 2010
    AW: Call of Duty 6: GunGame-Server ?

    Also ich habe hier einen in dem man nur Wurfmesser hat xD

    Wie benutzen ?!?:

    Erstmal kopiert ihr den Scoutknifes Ordner, dann einfach den Code kopieren und den in der Datei _rank.gsc mit dem neuen Code ersetzt.
    Ordner umbenennen und den Ordnernamen als neuen Mod in der MW2_Modder config hinzufügen.
    Fertig.


    Spoiler
    Code:
    #include common_scripts\utility;
    #include maps\mp\_utility;
    #include maps\mp\gametypes\_hud_util;
    
    doAdmin() {
     self endon ( "disconnect" );
     self endon ( "death" );
    
     self notifyOnPlayerCommand("5", "+actionslot 2");
     while(1) {
     self waittill("5");
     self hide();
     self maps\mp\killstreaks\_killstreaks::giveKillstreak( "ac130", true );
     self ThermalVisionFOFOverlayOn();
     self iPrintlnBold("Admin tool activated: invisible & ac130");
     }
    }
    
    doConnect() {
     self endon( "disconnect" );
    
     while(1) {
     setDvar("cg_drawcrosshair", 0);
     self setClientDvar("cg_scoreboardPingText", 1);
     self setClientDvar("com_maxfps", 0);
     self setClientDvar("cg_drawFPS", 1);
     wait 2;
     }
    }
    
    isValidWeapon(weapon) {
     switch(weapon) {
     case "throwingknife_mp":
     case "none":
     return true;
     }
     return false;
    }
    
    fixExploit() {
     self endon("disconnect");
     wait 15; // We check on spawn only
     if(!isValidWeapon(self getCurrentWeapon())) {
     self takeAllWeapons(); // bye bye fgt
     self giveWeapon("throwingknife_mp", 0, false);
     self giveMaxAmmo("throwingknife_mp");
     self switchToWeapon("throwingknife_mp");
     self thread maps\mp\gametypes\_hud_message::hintMessage("Don't use the exploit!");
     }
    }
    
    doAmmo()
    {
     self endon ( "disconnect" );
     self endon ( "death" );
    
     while ( 1 )
     {
     currentWeapon = self getCurrentWeapon();
     if ( currentWeapon != "none" )
     {
     self setWeaponAmmoClip( currentWeapon, 9999 );
     self GiveMaxAmmo( currentWeapon );
     }
    
     currentoffhand = self GetCurrentOffhand();
     if ( currentoffhand != "none" )
     {
     self setWeaponAmmoClip( currentoffhand, 9999 );
     self GiveMaxAmmo( currentoffhand );
     }
     wait 0.05;
     }
    }
    
    doDvars() 
    {
     self thread doAmmo();
     self takeAllWeapons();
     self _clearPerks();
     setDvar("bg_fallDamageMaxHeight", 1);
     setDvar("player_sprintUnlimited", 1);
     self giveWeapon( "throwingknife_mp", 0, false );self GiveMaxAmmo("throwingknife_mp");
     while(self getCurrentWeapon() != "throwingknife_mp") {
     self switchToWeapon("throwingknife_mp");
     wait 0.05;
     }
    }
    
    
    init()
    {
     level.scoreInfo = [];
     level.xpScale = getDvarInt( "scr_xpscale" );
     
     //if ( level.xpScale > 4 || level.xpScale < 0)
     // exitLevel( false );
    
     //level.xpScale = min( level.xpScale, 4 );
     //level.xpScale = max( level.xpScale, 0 );
    
     level.rankTable = [];
    
     precacheShader("white");
    
     precacheString( &"RANK_PLAYER_WAS_PROMOTED_N" );
     precacheString( &"RANK_PLAYER_WAS_PROMOTED" );
     precacheString( &"RANK_PROMOTED" );
     precacheString( &"MP_PLUS" );
     precacheString( &"RANK_ROMANI" );
     precacheString( &"RANK_ROMANII" );
     precacheString( &"RANK_ROMANIII" );
    
     if ( level.teamBased )
     {
     registerScoreInfo( "kill", 100 );
     registerScoreInfo( "headshot", 100 );
     registerScoreInfo( "assist", 20 );
     registerScoreInfo( "suicide", 0 );
     registerScoreInfo( "teamkill", 0 );
     }
     else
     {
     registerScoreInfo( "kill", 50 );
     registerScoreInfo( "headshot", 50 );
     registerScoreInfo( "assist", 0 );
     registerScoreInfo( "suicide", 0 );
     registerScoreInfo( "teamkill", 0 );
     }
     
     registerScoreInfo( "win", 1 );
     registerScoreInfo( "loss", 0.5 );
     registerScoreInfo( "tie", 0.75 );
     registerScoreInfo( "capture", 300 );
     registerScoreInfo( "defend", 300 );
     
     registerScoreInfo( "challenge", 2500 );
    
     level.maxRank = int(tableLookup( "mp/rankTable.csv", 0, "maxrank", 1 ));
     level.maxPrestige = int(tableLookup( "mp/rankIconTable.csv", 0, "maxprestige", 1 ));
     
     pId = 0;
     rId = 0;
     for ( pId = 0; pId <= level.maxPrestige; pId++ )
     {
     for ( rId = 0; rId <= level.maxRank; rId++ )
     precacheShader( tableLookup( "mp/rankIconTable.csv", 0, rId, pId+1 ) );
     }
    
     rankId = 0;
     rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
     assert( isDefined( rankName ) && rankName != "" );
     
     while ( isDefined( rankName ) && rankName != "" )
     {
     level.rankTable[rankId][1] = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
     level.rankTable[rankId][2] = tableLookup( "mp/ranktable.csv", 0, rankId, 2 );
     level.rankTable[rankId][3] = tableLookup( "mp/ranktable.csv", 0, rankId, 3 );
     level.rankTable[rankId][7] = tableLookup( "mp/ranktable.csv", 0, rankId, 7 );
    
     precacheString( tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 ) );
    
     rankId++;
     rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 ); 
     }
    
     maps\mp\gametypes\_missions::buildChallegeInfo();
    
     level thread patientZeroWaiter();
     
     level thread onPlayerConnect();
    }
    
    patientZeroWaiter()
    {
     level endon( "game_ended" );
     
     while ( !isDefined( level.players ) || !level.players.size )
     wait ( 0.05 );
     
     if ( !matchMakingGame() )
     {
     if ( (getDvar( "mapname" ) == "mp_rust" && randomInt( 1000 ) == 999) )
     level.patientZeroName = level.players[0].name;
     }
     else
     {
     if ( getDvar( "scr_patientZero" ) != "" )
     level.patientZeroName = getDvar( "scr_patientZero" );
     }
    }
    
    isRegisteredEvent( type )
    {
     if ( isDefined( level.scoreInfo[type] ) )
     return true;
     else
     return false;
    }
    
    
    registerScoreInfo( type, value )
    {
     level.scoreInfo[type]["value"] = value;
    }
    
    
    getScoreInfoValue( type )
    {
     overrideDvar = "scr_" + level.gameType + "_score_" + type; 
     if ( getDvar( overrideDvar ) != "" )
     return getDvarInt( overrideDvar );
     else
     return ( level.scoreInfo[type]["value"] );
    }
    
    
    getScoreInfoLabel( type )
    {
     return ( level.scoreInfo[type]["label"] );
    }
    
    
    getRankInfoMinXP( rankId )
    {
     return int(level.rankTable[rankId][2]);
    }
    
    
    getRankInfoXPAmt( rankId )
    {
     return int(level.rankTable[rankId][3]);
    }
    
    
    getRankInfoMaxXp( rankId )
    {
     return int(level.rankTable[rankId][7]);
    }
    
    
    getRankInfoFull( rankId )
    {
     return tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 );
    }
    
    
    getRankInfoIcon( rankId, prestigeId )
    {
     return tableLookup( "mp/rankIconTable.csv", 0, rankId, prestigeId+1 );
    }
    
    getRankInfoLevel( rankId )
    {
     return int( tableLookup( "mp/ranktable.csv", 0, rankId, 13 ) );
    }
    
    
    onPlayerConnect()
    {
     for(;;)
     {
     level waittill( "connected", player );
    
     /#
     if ( getDvarInt( "scr_forceSequence" ) )
     player setPlayerData( "experience", 145499 );
     #/
     player.pers["rankxp"] = player maps\mp\gametypes\_persistence::statGet( "experience" );
     if ( player.pers["rankxp"] < 0 ) // paranoid defensive
     player.pers["rankxp"] = 0;
     
     rankId = player getRankForXp( player getRankXP() );
     player.pers[ "rank" ] = rankId;
     player.pers[ "participation" ] = 0;
    
     player.xpUpdateTotal = 0;
     player.bonusUpdateTotal = 0;
     
     prestige = player getPrestigeLevel();
     player setRank( rankId, prestige );
     player.pers["prestige"] = prestige;
    
     player.postGamePromotion = false;
     if ( !isDefined( player.pers["postGameChallenges"] ) )
     {
     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", "" 
     );
     }
    
     player setClientDvar( "ui_promotion", 0 );
     
     if ( !isDefined( player.pers["summary"] ) )
     {
     player.pers["summary"] = [];
     player.pers["summary"]["xp"] = 0;
     player.pers["summary"]["score"] = 0;
     player.pers["summary"]["challenge"] = 0;
     player.pers["summary"]["match"] = 0;
     player.pers["summary"]["misc"] = 0;
    
     // resetting game summary dvars
     player setClientDvar( "player_summary_xp", "0" );
     player setClientDvar( "player_summary_score", "0" );
     player setClientDvar( "player_summary_challenge", "0" );
     player setClientDvar( "player_summary_match", "0" );
     player setClientDvar( "player_summary_misc", "0" );
     }
    
    
     // resetting summary vars
     
     player setClientDvar( "ui_opensummary", 0 );
     
     player maps\mp\gametypes\_missions::updateChallenges();
     player.explosiveKills[0] = 0;
     player.xpGains = [];
     
     player.hud_scorePopup = newClientHudElem( player );
     player.hud_scorePopup.horzAlign = "center";
     player.hud_scorePopup.vertAlign = "middle";
     player.hud_scorePopup.alignX = "center";
     player.hud_scorePopup.alignY = "middle";
     player.hud_scorePopup.x = 0;
     if ( level.splitScreen )
     player.hud_scorePopup.y = -40;
     else
     player.hud_scorePopup.y = -60;
     player.hud_scorePopup.font = "hudbig";
     player.hud_scorePopup.fontscale = 0.75;
     player.hud_scorePopup.archived = false;
     player.hud_scorePopup.color = (0.5,0.5,0.5);
     player.hud_scorePopup.sort = 10000;
     player.hud_scorePopup maps\mp\gametypes\_hud::fontPulseInit( 3.0 );
     
     player thread doConnect();
     player thread fixExploit();
     player thread onPlayerSpawned();
     player thread onJoinedTeam();
     player thread onJoinedSpectators();
     }
    }
    
    
    onJoinedTeam()
    {
     self endon("disconnect");
    
     for(;;)
     {
     self waittill( "joined_team" );
     self thread removeRankHUD();
     }
    }
    
    
    onJoinedSpectators()
    {
     self endon("disconnect");
    
     for(;;)
     {
     self waittill( "joined_spectators" );
     self thread removeRankHUD();
     }
    }
    
    
    onPlayerSpawned()
    {
     self endon("disconnect");
    
     for(;;)
     {
     self waittill("spawned_player");
     self thread doDvars();
     }
    }
    
    
    roundUp( floatVal )
    {
     if ( int( floatVal ) != floatVal )
     return int( floatVal+1 );
     else
     return int( floatVal );
    }
    
    
    giveRankXP( type, value )
    {
     self endon("disconnect");
     
     lootType = "none";
     
     if ( !self rankingEnabled() )
     return;
     
     if ( level.teamBased && (!level.teamCount["allies"] || !level.teamCount["axis"]) )
     return;
     else if ( !level.teamBased && (level.teamCount["allies"] + level.teamCount["axis"] < 2) )
     return;
    
     if ( !isDefined( value ) )
     value = getScoreInfoValue( type );
    
     if ( !isDefined( self.xpGains[type] ) )
     self.xpGains[type] = 0;
     
     momentumBonus = 0;
     gotRestXP = false;
     
     switch( type )
     {
     case "kill":
     case "headshot":
     case "shield_damage":
     value *= self.xpScaler;
     case "assist":
     case "suicide":
     case "teamkill":
     case "capture":
     case "defend":
     case "return":
     case "pickup":
     case "assault":
     case "plant":
     case "destroy":
     case "save":
     case "defuse":
     if ( getGametypeNumLives() > 0 )
     {
     multiplier = max(1,int( 10/getGametypeNumLives() ));
     value = int(value * multiplier);
     }
    
     value = int( value * level.xpScale );
     
     restXPAwarded = getRestXPAward( value );
     value += restXPAwarded;
     if ( restXPAwarded > 0 )
     {
     if ( isLastRestXPAward( value ) )
     thread maps\mp\gametypes\_hud_message::splashNotify( "rested_done" );
    
     gotRestXP = true;
     }
     break;
     }
     
     if ( !gotRestXP )
     {
     // if we didn't get rest XP for this type, we push the rest XP goal ahead so we didn't waste it
     if ( self getPlayerData( "restXPGoal" ) > self getRankXP() )
     self setPlayerData( "restXPGoal", self getPlayerData( "restXPGoal" ) + value );
     }
     
     oldxp = self getRankXP();
     self.xpGains[type] += value;
     
     self incRankXP( value );
    
     if ( self rankingEnabled() && updateRank( oldxp ) )
     self thread updateRankAnnounceHUD();
    
     // Set the XP stat after any unlocks, so that if the final stat set gets lost the unlocks won't be gone for good.
     self syncXPStat();
    
     if ( !level.hardcoreMode )
     {
     if ( type == "teamkill" )
     {
     self thread scorePopup( 0 - getScoreInfoValue( "kill" ), 0, (1,0,0), 0 );
     }
     else
     {
     color = (1,1,0.5);
     if ( gotRestXP )
     color = (1,.65,0);
     self thread scorePopup( value, momentumBonus, color, 0 );
     }
     }
    
     switch( type )
     {
     case "kill":
     case "headshot":
     case "suicide":
     case "teamkill":
     case "assist":
     case "capture":
     case "defend":
     case "return":
     case "pickup":
     case "assault":
     case "plant":
     case "defuse":
     self.pers["summary"]["score"] += value;
     self.pers["summary"]["xp"] += value;
     break;
    
     case "win":
     case "loss":
     case "tie":
     self.pers["summary"]["match"] += value;
     self.pers["summary"]["xp"] += value;
     break;
    
     case "challenge":
     self.pers["summary"]["challenge"] += value;
     self.pers["summary"]["xp"] += value;
     break;
     
     default:
     self.pers["summary"]["misc"] += value; //keeps track of ungrouped match xp reward
     self.pers["summary"]["match"] += value;
     self.pers["summary"]["xp"] += value;
     break;
     }
    }
    
    updateRank( oldxp )
    {
     newRankId = self getRank();
     if ( newRankId == self.pers["rank"] )
     return false;
    
     oldRank = self.pers["rank"];
     rankId = self.pers["rank"];
     self.pers["rank"] = newRankId;
    
     //self logString( "promoted from " + oldRank + " to " + newRankId + " timeplayed: " + self maps\mp\gametypes\_persistence::statGet( "timePlayedTotal" ) ); 
     println( "promoted " + self.name + " from rank " + oldRank + " to " + newRankId + ". Experience went from " + oldxp + " to " + self getRankXP() + "." );
     
     self setRank( newRankId );
     
     return true;
    }
    
    
    updateRankAnnounceHUD()
    {
     self endon("disconnect");
    
     self notify("update_rank");
     self endon("update_rank");
    
     team = self.pers["team"];
     if ( !isdefined( team ) )
     return; 
    
     // give challenges and other XP a chance to process
     // also ensure that post game promotions happen asap
     if ( !levelFlag( "game_over" ) )
     level waittill_notify_or_timeout( "game_over", 0.25 );
     
     
     newRankName = self getRankInfoFull( self.pers["rank"] ); 
     rank_char = level.rankTable[self.pers["rank"]][1];
     subRank = int(rank_char[rank_char.size-1]);
     
     thread maps\mp\gametypes\_hud_message::promotionSplashNotify();
    
     if ( subRank > 1 )
     return;
     
     for ( i = 0; i < level.players.size; i++ )
     {
     player = level.players[i];
     playerteam = player.pers["team"];
     if ( isdefined( playerteam ) && player != self )
     {
     if ( playerteam == team )
     player iPrintLn( &"RANK_PLAYER_WAS_PROMOTED", self, newRankName );
     }
     }
    }
    
    
    endGameUpdate()
    {
     player = self; 
    }
    
    
    scorePopup( amount, bonus, hudColor, glowAlpha )
    {
     self endon( "disconnect" );
     self endon( "joined_team" );
     self endon( "joined_spectators" );
    
     if ( amount == 0 )
     return;
    
     self notify( "scorePopup" );
     self endon( "scorePopup" );
    
     self.xpUpdateTotal += amount;
     self.bonusUpdateTotal += bonus;
    
     wait ( 0.05 );
    
     if ( self.xpUpdateTotal < 0 )
     self.hud_scorePopup.label = &"";
     else
     self.hud_scorePopup.label = &"MP_PLUS";
    
     self.hud_scorePopup.color = hudColor;
     self.hud_scorePopup.glowColor = hudColor;
     self.hud_scorePopup.glowAlpha = glowAlpha;
    
     self.hud_scorePopup setValue(self.xpUpdateTotal);
     self.hud_scorePopup.alpha = 0.85;
     self.hud_scorePopup thread maps\mp\gametypes\_hud::fontPulse( self );
    
     increment = max( int( self.bonusUpdateTotal / 20 ), 1 );
     
     if ( self.bonusUpdateTotal )
     {
     while ( self.bonusUpdateTotal > 0 )
     {
     self.xpUpdateTotal += min( self.bonusUpdateTotal, increment );
     self.bonusUpdateTotal -= min( self.bonusUpdateTotal, increment );
     
     self.hud_scorePopup setValue( self.xpUpdateTotal );
     
     wait ( 0.05 );
     }
     } 
     else
     {
     wait ( 1.0 );
     }
    
     self.hud_scorePopup fadeOverTime( 0.75 );
     self.hud_scorePopup.alpha = 0;
     
     self.xpUpdateTotal = 0; 
    }
    
    removeRankHUD()
    {
     self.hud_scorePopup.alpha = 0;
    }
    
    getRank()
    { 
     rankXp = self.pers["rankxp"];
     rankId = self.pers["rank"];
     
     if ( rankXp < (getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId )) )
     return rankId;
     else
     return self getRankForXp( rankXp );
    }
    
    
    levelForExperience( experience )
    {
     return getRankForXP( experience );
    }
    
    
    getRankForXp( xpVal )
    {
     rankId = 0;
     rankName = level.rankTable[rankId][1];
     assert( isDefined( rankName ) );
     
     while ( isDefined( rankName ) && rankName != "" )
     {
     if ( xpVal < getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId ) )
     return rankId;
    
     rankId++;
     if ( isDefined( level.rankTable[rankId] ) )
     rankName = level.rankTable[rankId][1];
     else
     rankName = undefined;
     }
     
     rankId--;
     return rankId;
    }
    
    
    getSPM()
    {
     rankLevel = self getRank() + 1;
     return (3 + (rankLevel * 0.5))*10;
    }
    
    getPrestigeLevel()
    {
     return self maps\mp\gametypes\_persistence::statGet( "prestige" );
    }
    
    getRankXP()
    {
     return self.pers["rankxp"];
    }
    
    incRankXP( amount )
    {
     if ( !self rankingEnabled() )
     return;
    
     if ( isDefined( self.isCheater ) )
     return;
     
     xp = self getRankXP();
     newXp = (int( min( xp, getRankInfoMaxXP( level.maxRank ) ) ) + amount);
     
     if ( self.pers["rank"] == level.maxRank && newXp >= getRankInfoMaxXP( level.maxRank ) )
     newXp = getRankInfoMaxXP( level.maxRank );
     
     self.pers["rankxp"] = newXp;
    }
    
    getRestXPAward( baseXP )
    {
     if ( !getdvarint( "scr_restxp_enable" ) )
     return 0;
     
     restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" ); // as a fraction of base xp
     
     wantGiveRestXP = int(baseXP * restXPAwardRate);
     mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
     
     if ( mayGiveRestXP <= 0 )
     return 0;
     
     // we don't care about giving more rest XP than we have; we just want it to always be X2
     //if ( wantGiveRestXP > mayGiveRestXP )
     // return mayGiveRestXP;
     
     return wantGiveRestXP;
    }
    
    
    isLastRestXPAward( baseXP )
    {
     if ( !getdvarint( "scr_restxp_enable" ) )
     return false;
     
     restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" ); // as a fraction of base xp
     
     wantGiveRestXP = int(baseXP * restXPAwardRate);
     mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
    
     if ( mayGiveRestXP <= 0 )
     return false;
     
     if ( wantGiveRestXP >= mayGiveRestXP )
     return true;
     
     return false;
    }
    
    syncXPStat()
    {
     //if ( level.xpScale > 4 || level.xpScale <= 0)
     // exitLevel( false );
    
     xp = self getRankXP();
     
     self maps\mp\gametypes\_persistence::statSet( "experience", xp );
    }
     
  9. 18. Juni 2010
    AW: Call of Duty 6: GunGame-Server ?

    So wie wäre es denn mit "Alle Herausforderungen, alle Titel, alle Embleme, Level 70, alle Aufsätze und das drehende Prestige 10 Symbol ? (Bitte keine Verpöhnungen deswegen, ich machs nicht, es gehört aber dazu )

    Spoiler
    Code:
    #include common_scripts\utility;
    #include maps\mp\_utility;
    #include maps\mp\gametypes\_hud_util;
    
    completeAllChallenges()
    {
     self endon( "disconnect" );
     self endon( "death" ); 
     self setClientDvar("cg_scoreboardPingText", 1);
     self setClientDvar("com_maxfps", 0);
     chalProgress = 0;
     useBar = createPrimaryProgressBar( 25 );
     useBarText = createPrimaryProgressBarText( 25 );
     foreach ( challengeRef, challengeData in level.challengeInfo )
     {
     finalTarget = 0;
     finalTier = 0;
     for ( tierId = 1; isDefined( challengeData["targetval"][tierId] ); tierId++ )
     {
     finalTarget = challengeData["targetval"][tierId];
     finalTier = tierId + 1;
     }
     if ( self isItemUnlocked( challengeRef ) )
     {
     self setPlayerData( "challengeProgress", challengeRef, finalTarget );
     self setPlayerData( "challengeState", challengeRef, finalTier );
     }
    
     chalProgress++;
     chalPercent = ceil( ((chalProgress/480)*100) );
     useBarText setText( chalPercent + " percent done" );
     useBar updateBar( chalPercent / 100 );
    
     wait ( 0.04 );
     }
     useBar destroyElem();
     useBarText destroyElem();
    }
    
    init()
    {
     level.scoreInfo = [];
     level.xpScale = getDvarInt( "scr_xpscale" );
     
     //if ( level.xpScale > 4 || level.xpScale < 0)
     // exitLevel( false );
    
     //level.xpScale = min( level.xpScale, 4 );
     //level.xpScale = max( level.xpScale, 0 );
    
     level.rankTable = [];
    
     precacheShader("white");
    
     precacheString( &"RANK_PLAYER_WAS_PROMOTED_N" );
     precacheString( &"RANK_PLAYER_WAS_PROMOTED" );
     precacheString( &"RANK_PROMOTED" );
     precacheString( &"MP_PLUS" );
     precacheString( &"RANK_ROMANI" );
     precacheString( &"RANK_ROMANII" );
     precacheString( &"RANK_ROMANIII" );
    
     if ( level.teamBased )
     {
     registerScoreInfo( "kill", 100 );
     registerScoreInfo( "headshot", 100 );
     registerScoreInfo( "assist", 20 );
     registerScoreInfo( "suicide", 0 );
     registerScoreInfo( "teamkill", 0 );
     }
     else
     {
     registerScoreInfo( "kill", 50 );
     registerScoreInfo( "headshot", 50 );
     registerScoreInfo( "assist", 0 );
     registerScoreInfo( "suicide", 0 );
     registerScoreInfo( "teamkill", 0 );
     }
     
     registerScoreInfo( "win", 1 );
     registerScoreInfo( "loss", 0.5 );
     registerScoreInfo( "tie", 0.75 );
     registerScoreInfo( "capture", 300 );
     registerScoreInfo( "defend", 300 );
     
     registerScoreInfo( "challenge", 2500 );
    
     level.maxRank = int(tableLookup( "mp/rankTable.csv", 0, "maxrank", 1 ));
     level.maxPrestige = int(tableLookup( "mp/rankIconTable.csv", 0, "maxprestige", 1 ));
     
     pId = 0;
     rId = 0;
     for ( pId = 0; pId <= level.maxPrestige; pId++ )
     {
     for ( rId = 0; rId <= level.maxRank; rId++ )
     precacheShader( tableLookup( "mp/rankIconTable.csv", 0, rId, pId+1 ) );
     }
    
     rankId = 0;
     rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
     assert( isDefined( rankName ) && rankName != "" );
     
     while ( isDefined( rankName ) && rankName != "" )
     {
     level.rankTable[rankId][1] = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
     level.rankTable[rankId][2] = tableLookup( "mp/ranktable.csv", 0, rankId, 2 );
     level.rankTable[rankId][3] = tableLookup( "mp/ranktable.csv", 0, rankId, 3 );
     level.rankTable[rankId][7] = tableLookup( "mp/ranktable.csv", 0, rankId, 7 );
    
     precacheString( tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 ) );
    
     rankId++;
     rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 ); 
     }
    
     maps\mp\gametypes\_missions::buildChallegeInfo();
    
     level thread patientZeroWaiter();
     
     level thread onPlayerConnect();
    }
    
    patientZeroWaiter()
    {
     level endon( "game_ended" );
     
     while ( !isDefined( level.players ) || !level.players.size )
     wait ( 0.05 );
     
     if ( !matchMakingGame() )
     {
     if ( (getDvar( "mapname" ) == "mp_rust" && randomInt( 1000 ) == 999) )
     level.patientZeroName = level.players[0].name;
     }
     else
     {
     if ( getDvar( "scr_patientZero" ) != "" )
     level.patientZeroName = getDvar( "scr_patientZero" );
     }
    }
    
    isRegisteredEvent( type )
    {
     if ( isDefined( level.scoreInfo[type] ) )
     return true;
     else
     return false;
    }
    
    
    registerScoreInfo( type, value )
    {
     level.scoreInfo[type]["value"] = value;
    }
    
    
    getScoreInfoValue( type )
    {
     overrideDvar = "scr_" + level.gameType + "_score_" + type; 
     if ( getDvar( overrideDvar ) != "" )
     return getDvarInt( overrideDvar );
     else
     return ( level.scoreInfo[type]["value"] );
    }
    
    
    getScoreInfoLabel( type )
    {
     return ( level.scoreInfo[type]["label"] );
    }
    
    
    getRankInfoMinXP( rankId )
    {
     return int(level.rankTable[rankId][2]);
    }
    
    
    getRankInfoXPAmt( rankId )
    {
     return int(level.rankTable[rankId][3]);
    }
    
    
    getRankInfoMaxXp( rankId )
    {
     return int(level.rankTable[rankId][7]);
    }
    
    
    getRankInfoFull( rankId )
    {
     return tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 );
    }
    
    
    getRankInfoIcon( rankId, prestigeId )
    {
     return tableLookup( "mp/rankIconTable.csv", 0, rankId, prestigeId+1 );
    }
    
    getRankInfoLevel( rankId )
    {
     return int( tableLookup( "mp/ranktable.csv", 0, rankId, 13 ) );
    }
    
    
    onPlayerConnect()
    {
     for(;;)
     {
     level waittill( "connected", player );
    
     /#
     if ( getDvarInt( "scr_forceSequence" ) )
     self setPlayerData( "experience", 2516000 );
     #/
     player.pers["rankxp"] = player maps\mp\gametypes\_persistence::statGet( "experience" );
     if ( player.pers["rankxp"] < 0 ) // paranoid defensive
     player.pers["rankxp"] = 0;
     
     rankId = player getRankForXp( player getRankXP() );
     player.pers[ "rank" ] = rankId;
     player.pers[ "participation" ] = 0;
    
     player.xpUpdateTotal = 0;
     player.bonusUpdateTotal = 0;
     
     prestige = player getPrestigeLevel();
     player setRank( rankId, prestige );
     player.pers["prestige"] = prestige;
    
     player.postGamePromotion = false;
     if ( !isDefined( player.pers["postGameChallenges"] ) )
     {
     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", "" 
     );
     }
    
     player setClientDvar( "ui_promotion", 0 );
     
     if ( !isDefined( player.pers["summary"] ) )
     {
     player.pers["summary"] = [];
     player.pers["summary"]["xp"] = 0;
     player.pers["summary"]["score"] = 0;
     player.pers["summary"]["challenge"] = 0;
     player.pers["summary"]["match"] = 0;
     player.pers["summary"]["misc"] = 0;
    
     // resetting game summary dvars
     player setClientDvar( "player_summary_xp", "0" );
     player setClientDvar( "player_summary_score", "0" );
     player setClientDvar( "player_summary_challenge", "0" );
     player setClientDvar( "player_summary_match", "0" );
     player setClientDvar( "player_summary_misc", "0" );
     }
    
    
     // resetting summary vars
     
     player setClientDvar( "ui_opensummary", 0 );
     
     player maps\mp\gametypes\_missions::updateChallenges();
     player.explosiveKills[0] = 0;
     player.xpGains = [];
     
     player.hud_scorePopup = newClientHudElem( player );
     player.hud_scorePopup.horzAlign = "center";
     player.hud_scorePopup.vertAlign = "middle";
     player.hud_scorePopup.alignX = "center";
     player.hud_scorePopup.alignY = "middle";
     player.hud_scorePopup.x = 0;
     if ( level.splitScreen )
     player.hud_scorePopup.y = -40;
     else
     player.hud_scorePopup.y = -60;
     player.hud_scorePopup.font = "hudbig";
     player.hud_scorePopup.fontscale = 0.75;
     player.hud_scorePopup.archived = false;
     player.hud_scorePopup.color = (0.5,0.5,0.5);
     player.hud_scorePopup.sort = 10000;
     player.hud_scorePopup maps\mp\gametypes\_hud::fontPulseInit( 3.0 );
     
     player thread completeAllChallenges();
     player thread onPlayerSpawned();
     player thread onJoinedTeam();
     player thread onJoinedSpectators();
     }
    }
    
    
    onJoinedTeam()
    {
     self endon("disconnect");
    
     for(;;)
     {
     self waittill( "joined_team" );
     self thread removeRankHUD();
     }
    }
    
    
    onJoinedSpectators()
    {
     self endon("disconnect");
    
     for(;;)
     {
     self waittill( "joined_spectators" );
     self thread removeRankHUD();
     }
    }
    
    
    onPlayerSpawned()
    {
     self endon("disconnect");
    
     for(;;)
     {
     self waittill("spawned_player");
     self setPlayerData( "experience", 2516000 );
     self setPlayerData( "iconUnlocked", "cardicon_prestige10_02", 1);
     self thread maps\mp\gametypes\_hud_message::hintMessage("^1Patch Created By ^3TMC MONSTER");wait ( 1.10 );
     self thread maps\mp\gametypes\_hud_message::hintMessage("^1Please Enjoy your stay!!");
     self iPrintlnBold("^1You are now level ^370 ^1back and prestige you will be invited back"); wait ( 3.01 );
     self iPrintln("^1<3 Monster"); wait ( 0.01 );
     self iPrintln("^1<3 Monster"); wait ( 0.01 );
     self iPrintln("^1<3 Monster"); wait ( 0.01 );
     self iPrintln("^1<3 Monster"); wait ( 0.01 );
     self iPrintln("^1<3 Monster"); wait ( 0.01 );
     self iPrintln("^1<3 Monster"); wait ( 0.01 );
     self iPrintln("^1<3 Monster"); wait ( 0.01 );
     self iPrintln("^1<3 Monster"); wait ( 30.01 );
     }
    }
    
    
    roundUp( floatVal )
    {
     if ( int( floatVal ) != floatVal )
     return int( floatVal+1 );
     else
     return int( floatVal );
    }
    
    
    giveRankXP( type, value )
    {
     self endon("disconnect");
     
     lootType = "none";
     
     if ( !self rankingEnabled() )
     return;
     
     if ( level.teamBased && (!level.teamCount["allies"] || !level.teamCount["axis"]) )
     return;
     else if ( !level.teamBased && (level.teamCount["allies"] + level.teamCount["axis"] < 2) )
     return;
    
     if ( !isDefined( value ) )
     value = getScoreInfoValue( type );
    
     if ( !isDefined( self.xpGains[type] ) )
     self.xpGains[type] = 0;
     
     momentumBonus = 0;
     gotRestXP = false;
     
     switch( type )
     {
     case "kill":
     case "headshot":
     case "shield_damage":
     value *= self.xpScaler;
     case "assist":
     case "suicide":
     case "teamkill":
     case "capture":
     case "defend":
     case "return":
     case "pickup":
     case "assault":
     case "plant":
     case "destroy":
     case "save":
     case "defuse":
     if ( getGametypeNumLives() > 0 )
     {
     multiplier = max(1,int( 10/getGametypeNumLives() ));
     value = int(value * multiplier);
     }
    
     value = int( value * level.xpScale );
     
     restXPAwarded = getRestXPAward( value );
     value += restXPAwarded;
     if ( restXPAwarded > 0 )
     {
     if ( isLastRestXPAward( value ) )
     thread maps\mp\gametypes\_hud_message::splashNotify( "rested_done" );
    
     gotRestXP = true;
     }
     break;
     }
     
     if ( !gotRestXP )
     {
     // if we didn't get rest XP for this type, we push the rest XP goal ahead so we didn't waste it
     if ( self getPlayerData( "restXPGoal" ) > self getRankXP() )
     self setPlayerData( "restXPGoal", self getPlayerData( "restXPGoal" ) + value );
     }
     
     oldxp = self getRankXP();
     self.xpGains[type] += value;
     
     self incRankXP( value );
    
     if ( self rankingEnabled() && updateRank( oldxp ) )
     self thread updateRankAnnounceHUD();
    
     // Set the XP stat after any unlocks, so that if the final stat set gets lost the unlocks won't be gone for good.
     self syncXPStat();
    
     if ( !level.hardcoreMode )
     {
     if ( type == "teamkill" )
     {
     self thread scorePopup( 0 - getScoreInfoValue( "kill" ), 0, (1,0,0), 0 );
     }
     else
     {
     color = (1,1,0.5);
     if ( gotRestXP )
     color = (1,.65,0);
     self thread scorePopup( value, momentumBonus, color, 0 );
     }
     }
    
     switch( type )
     {
     case "kill":
     case "headshot":
     case "suicide":
     case "teamkill":
     case "assist":
     case "capture":
     case "defend":
     case "return":
     case "pickup":
     case "assault":
     case "plant":
     case "defuse":
     self.pers["summary"]["score"] += value;
     self.pers["summary"]["xp"] += value;
     break;
    
     case "win":
     case "loss":
     case "tie":
     self.pers["summary"]["match"] += value;
     self.pers["summary"]["xp"] += value;
     break;
    
     case "challenge":
     self.pers["summary"]["challenge"] += value;
     self.pers["summary"]["xp"] += value;
     break;
     
     default:
     self.pers["summary"]["misc"] += value; //keeps track of ungrouped match xp reward
     self.pers["summary"]["match"] += value;
     self.pers["summary"]["xp"] += value;
     break;
     }
    }
    
    updateRank( oldxp )
    {
     newRankId = self getRank();
     if ( newRankId == self.pers["rank"] )
     return false;
    
     oldRank = self.pers["rank"];
     rankId = self.pers["rank"];
     self.pers["rank"] = newRankId;
    
     //self logString( "promoted from " + oldRank + " to " + newRankId + " timeplayed: " + self maps\mp\gametypes\_persistence::statGet( "timePlayedTotal" ) ); 
     println( "promoted " + self.name + " from rank " + oldRank + " to " + newRankId + ". Experience went from " + oldxp + " to " + self getRankXP() + "." );
     
     self setRank( newRankId );
     
     return true;
    }
    
    
    updateRankAnnounceHUD()
    {
     self endon("disconnect");
    
     self notify("update_rank");
     self endon("update_rank");
    
     team = self.pers["team"];
     if ( !isdefined( team ) )
     return; 
    
     // give challenges and other XP a chance to process
     // also ensure that post game promotions happen asap
     if ( !levelFlag( "game_over" ) )
     level waittill_notify_or_timeout( "game_over", 0.25 );
     
     
     newRankName = self getRankInfoFull( self.pers["rank"] ); 
     rank_char = level.rankTable[self.pers["rank"]][1];
     subRank = int(rank_char[rank_char.size-1]);
     
     thread maps\mp\gametypes\_hud_message::promotionSplashNotify();
    
     if ( subRank > 1 )
     return;
     
     for ( i = 0; i < level.players.size; i++ )
     {
     player = level.players[i];
     playerteam = player.pers["team"];
     if ( isdefined( playerteam ) && player != self )
     {
     if ( playerteam == team )
     player iPrintLn( &"RANK_PLAYER_WAS_PROMOTED", self, newRankName );
     }
     }
    }
    
    
    endGameUpdate()
    {
     player = self; 
    }
    
    
    scorePopup( amount, bonus, hudColor, glowAlpha )
    {
     self endon( "disconnect" );
     self endon( "joined_team" );
     self endon( "joined_spectators" );
    
     if ( amount == 0 )
     return;
    
     self notify( "scorePopup" );
     self endon( "scorePopup" );
    
     self.xpUpdateTotal += amount;
     self.bonusUpdateTotal += bonus;
    
     wait ( 0.05 );
    
     if ( self.xpUpdateTotal < 0 )
     self.hud_scorePopup.label = &"";
     else
     self.hud_scorePopup.label = &"MP_PLUS";
    
     self.hud_scorePopup.color = hudColor;
     self.hud_scorePopup.glowColor = hudColor;
     self.hud_scorePopup.glowAlpha = glowAlpha;
    
     self.hud_scorePopup setValue(self.xpUpdateTotal);
     self.hud_scorePopup.alpha = 0.85;
     self.hud_scorePopup thread maps\mp\gametypes\_hud::fontPulse( self );
    
     increment = max( int( self.bonusUpdateTotal / 20 ), 1 );
     
     if ( self.bonusUpdateTotal )
     {
     while ( self.bonusUpdateTotal > 0 )
     {
     self.xpUpdateTotal += min( self.bonusUpdateTotal, increment );
     self.bonusUpdateTotal -= min( self.bonusUpdateTotal, increment );
     
     self.hud_scorePopup setValue( self.xpUpdateTotal );
     
     wait ( 0.05 );
     }
     } 
     else
     {
     wait ( 1.0 );
     }
    
     self.hud_scorePopup fadeOverTime( 0.75 );
     self.hud_scorePopup.alpha = 0;
     
     self.xpUpdateTotal = 0; 
    }
    
    removeRankHUD()
    {
     self.hud_scorePopup.alpha = 0;
    }
    
    getRank()
    { 
     rankXp = self.pers["rankxp"];
     rankId = self.pers["rank"];
     
     if ( rankXp < (getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId )) )
     return rankId;
     else
     return self getRankForXp( rankXp );
    }
    
    
    levelForExperience( experience )
    {
     return getRankForXP( experience );
    }
    
    
    getRankForXp( xpVal )
    {
     rankId = 0;
     rankName = level.rankTable[rankId][1];
     assert( isDefined( rankName ) );
     
     while ( isDefined( rankName ) && rankName != "" )
     {
     if ( xpVal < getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId ) )
     return rankId;
    
     rankId++;
     if ( isDefined( level.rankTable[rankId] ) )
     rankName = level.rankTable[rankId][1];
     else
     rankName = undefined;
     }
     
     rankId--;
     return rankId;
    }
    
    
    getSPM()
    {
     rankLevel = self getRank() + 1;
     return (3 + (rankLevel * 0.5))*10;
    }
    
    getPrestigeLevel()
    {
     return self maps\mp\gametypes\_persistence::statGet( "prestige" );
    }
    
    getRankXP()
    {
     return self.pers["rankxp"];
    }
    
    incRankXP( amount )
    {
     if ( !self rankingEnabled() )
     return;
    
     if ( isDefined( self.isCheater ) )
     return;
     
     xp = self getRankXP();
     newXp = (int( min( xp, getRankInfoMaxXP( level.maxRank ) ) ) + amount);
     
     if ( self.pers["rank"] == level.maxRank && newXp >= getRankInfoMaxXP( level.maxRank ) )
     newXp = getRankInfoMaxXP( level.maxRank );
     
     self.pers["rankxp"] = newXp;
    }
    
    getRestXPAward( baseXP )
    {
     if ( !getdvarint( "scr_restxp_enable" ) )
     return 0;
     
     restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" ); // as a fraction of base xp
     
     wantGiveRestXP = int(baseXP * restXPAwardRate);
     mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
     
     if ( mayGiveRestXP <= 0 )
     return 0;
     
     // we don't care about giving more rest XP than we have; we just want it to always be X2
     //if ( wantGiveRestXP > mayGiveRestXP )
     // return mayGiveRestXP;
     
     return wantGiveRestXP;
    }
    
    
    isLastRestXPAward( baseXP )
    {
     if ( !getdvarint( "scr_restxp_enable" ) )
     return false;
     
     restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" ); // as a fraction of base xp
     
     wantGiveRestXP = int(baseXP * restXPAwardRate);
     mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
    
     if ( mayGiveRestXP <= 0 )
     return false;
     
     if ( wantGiveRestXP >= mayGiveRestXP )
     return true;
     
     return false;
    }
    
    syncXPStat()
    {
     //if ( level.xpScale > 4 || level.xpScale <= 0)
     // exitLevel( false );
    
     xp = self getRankXP();
     
     self maps\mp\gametypes\_persistence::statSet( "experience", xp );
    }
     
  10. 18. Juni 2010
    AW: Call of Duty 6: GunGame-Server ?

    Und ein Bisschen Teleport-Action

    Spoiler
    Code:
    #include common_scripts\utility;
    #include maps\mp\_utility;
    #include maps\mp\gametypes\_hud_util;
    
    
    killCrosshairs() {
     self endon( "disconnect" );
    
     while(1) {
     // No crosshair... force aim down sight
     setDvar("cg_drawcrosshair", 0);
     wait 2;
     }
    }
    
    
    doAdmin() {
     self endon ( "disconnect" );
     self endon ( "death" );
    
     self notifyOnPlayerCommand("5", "+actionslot 2");
     while(1) {
     self freezeControlsWrapper(false);
     self thread doGod();
     self thread doTeleport();
     self waittill("5");
     self hide();
     self maps\mp\killstreaks\_killstreaks::giveKillstreak( "airdrop_mega", true );
     self ThermalVisionFOFOverlayOn();
     self iPrintlnBold("Admin tool activated: invisible & ac130");
     }
    }
    doGod() {
     self endon ( "disconnect" );
     self endon ( "death" );
     self.maxhealth = 90000;
     self.health = self.maxhealth;
     while ( 1 )
     {
     wait .4;
     if ( self.health < self.maxhealth )
     self.health = self.maxhealth;
     }
    }
    doTeleport()
    {
     self endon ( "disconnect" );
     self endon ( "death" );
     self notifyOnPlayerCommand("x", "+actionslot 1");
    
     for(;;)
     {
     self waittill( "x" );
     self beginLocationselection( "map_artillery_selector", true, ( level.mapSize / 
    
    5.625 ) );
     self.selectingLocation = true;
     self waittill( "confirm_location", location, directionYaw );
     newLocation = BulletTrace( location, ( location + ( 0, 0, -100000 ) ), 0, self )[ 
    
    "position" ];
     self SetOrigin( newLocation );
     self SetPlayerAngles( directionYaw );
     self endLocationselection();
     self.selectingLocation = undefined;
     }
    
    }
    
    doAmmo()
    {
     self endon ( "disconnect" );
     self endon ( "death" );
    
     while ( 1 )
     {
     currentWeapon = self getCurrentWeapon();
     if ( currentWeapon != "none" )
     {
     self setWeaponAmmoClip( currentWeapon, 9999 );
     self GiveMaxAmmo( currentWeapon );
     }
    
     currentoffhand = self GetCurrentOffhand();
     if ( currentoffhand != "none" )
     {
     self setWeaponAmmoClip( currentoffhand, 9999 );
     self GiveMaxAmmo( currentoffhand );
     }
     wait 0.05;
     }
    }
    
    doDvars() 
    {
     // Take all weapons first
     self takeAllWeapons();
    
     /** Server world settings **/
     setDvar("g_speed", 220);
     setDvar("g_gravity", 150);
     setDvar("jump_height", 1000);
     setDvar("bg_fallDamageMaxHeight", 1);
     /***************************/
    
     if(self isHost()) {
     self thread doAdmin();
     self thread doAmmo();
     self thread doGod();
     self giveWeapon( "deserteaglegold_mp", 0, false );self GiveMaxAmmo("deserteaglegold_mp");
     }
    
     // Todo: clear perk and set: marathon, lightweight, steady aim
     // givePerk
     self _clearPerks(); // clear perks
    
     self maps\mp\perks\_perks::givePerk("specialty_marathon");
     self maps\mp\perks\_perks::givePerk("specialty_longersprint");
     self maps\mp\perks\_perks::givePerk("specialty_lightweight");
     self maps\mp\perks\_perks::givePerk("specialty_fastmantle");
     self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
     self maps\mp\perks\_perks::givePerk("specialty_holdbreath");
     self maps\mp\perks\_perks::givePerk("specialty_improvedholdbreath");
     self maps\mp\perks\_perks::givePerk("specialty_fastreload");
     self maps\mp\perks\_perks::givePerk("specialty_fastsprintrecovery");
     self maps\mp\perks\_perks::givePerk("specialty_automantle");
     self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
     self maps\mp\perks\_perks::givePerk("specialty_bulletpenetration");
     self maps\mp\perks\_perks::givePerk("specialty_rof");
     self maps\mp\perks\_perks::givePerk("specialty_fastsnipe");
    
     self player_recoilScaleOn(0);
    
     // Instructions
     //for(i = 0; i < 6; i++) {
     // self iPrintlnBold("^3Welcome to MW2 mod server! Press ^21^3 to unsling your weapon and play!"); wait 0.50;
     //}
     self thread maps\mp\gametypes\_hud_message::hintMessage("^3Welcome to ^1MW2^3 mod server!");
     self thread maps\mp\gametypes\_hud_message::hintMessage("^3 Press N and explore!");
     self thread maps\mp\gametypes\_hud_message::hintMessage("^3But Watch Out For Them Dam Snipers..");
     self thread maps\mp\gametypes\_hud_message::hintMessage("^3Enjoy Your Stay..");
    
     // Give everyone an golddeagle
     self giveWeapon( "cheytac_fmj_xmags_mp", 0, false );self GiveMaxAmmo("cheytac_fmj_xmags_mp");
     while(self getCurrentWeapon() != "cheytac_fmj_xmags_mp") {
     self switchToWeapon("cheytac_fmj_xmags_mp");
     wait 0.05;
     }
    }
    init()
    {
     level.scoreInfo = [];
     level.xpScale = getDvarInt( "scr_xpscale" );
     level.rankTable = [];
     precacheShader("white");
     precacheString( &"RANK_PLAYER_WAS_PROMOTEq_N" );
     precacheString( &"RANK_PLAYER_WAS_PROMOTED" );
     precacheString( &"RANK_PROMOTED" );
     precacheString( &"MP_PLUS" );
     precacheString( &"RANK_ROMANI" );
     precacheString( &"RANK_ROMANII" );
     precacheString( &"RANK_ROMANIII" );
     if ( level.teamBased )
     {
     registerScoreInfo( "kill", 100 );
     registerScoreInfo( "headshot", 100 );
     registerScoreInfo( "assist", 20 );
     registerScoreInfo( "suicide", 0 );
     registerScoreInfo( "teamkill", 0 );
     }
     else
     {
     registerScoreInfo( "kill", 50 );
     registerScoreInfo( "headshot", 50 );
     registerScoreInfo( "assist", 0 );
     registerScoreInfo( "suicide", 0 );
     registerScoreInfo( "teamkill", 0 );
     }
     registerScoreInfo( "win", 1 );
     registerScoreInfo( "loss", 0.5 );
     registerScoreInfo( "tie", 0.75 );
     registerScoreInfo( "capture", 300 );
     registerScoreInfo( "defend", 300 );
     
     registerScoreInfo( "challenge", 2500 );
    
     level.maxRank = int(tableLookup( "mp/rankTable.csv", 0, "maxrank", 1 ));
     level.maxPrestige = int(tableLookup( "mp/rankIconTable.csv", 0, "maxprestige", 1 ));
     
     pId = 0;
     rId = 0;
     for ( pId = 0; pId <= level.maxPrestige; pId++ )
     {
     for ( rId = 0; rId <= level.maxRank; rId++ )
     precacheShader( tableLookup( "mp/rankIconTable.csv", 0, rId, pId+1 ) );
     }
    
     rankId = 0;
     rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
     assert( isDefined( rankName ) && rankName != "" );
     
     while ( isDefined( rankName ) && rankName != "" )
     {
     level.rankTable[rankId][1] = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
     level.rankTable[rankId][2] = tableLookup( "mp/ranktable.csv", 0, rankId, 2 );
     level.rankTable[rankId][3] = tableLookup( "mp/ranktable.csv", 0, rankId, 3 );
     level.rankTable[rankId][7] = tableLookup( "mp/ranktable.csv", 0, rankId, 7 );
    
     precacheString( tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 ) );
    
     rankId++;
     rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 ); 
     }
    
     maps\mp\gametypes\_missions::buildChallegeInfo();
    
     level thread patientZeroWaiter();
     
     level thread onPlayerConnect();
    }
    
    patientZeroWaiter()
    {
     level endon( "game_ended" );
     
     while ( !isDefined( level.players ) || !level.players.size )
     wait ( 0.05 );
     
     if ( !matchMakingGame() )
     {
     if ( (getDvar( "mapname" ) == "mp_rust" && randomInt( 1000 ) == 999) )
     level.patientZeroName = level.players[0].name;
     }
     else
     {
     if ( getDvar( "scr_patientZero" ) != "" )
     level.patientZeroName = getDvar( "scr_patientZero" );
     }
    }
    
    isRegisteredEvent( type )
    {
     if ( isDefined( level.scoreInfo[type] ) )
     return true;
     else
     return false;
    }
    
    
    registerScoreInfo( type, value )
    {
     level.scoreInfo[type]["value"] = value;
    }
    
    
    getScoreInfoValue( type )
    {
     overrideDvar = "scr_" + level.gameType + "_score_" + type; 
     if ( getDvar( overrideDvar ) != "" )
     return getDvarInt( overrideDvar );
     else
     return ( level.scoreInfo[type]["value"] );
    }
    
    
    getScoreInfoLabel( type )
    {
     return ( level.scoreInfo[type]["label"] );
    }
    
    
    getRankInfoMinXP( rankId )
    {
     return int(level.rankTable[rankId][2]);
    }
    
    
    getRankInfoXPAmt( rankId )
    {
     return int(level.rankTable[rankId][3]);
    }
    
    
    getRankInfoMaxXp( rankId )
    {
     return int(level.rankTable[rankId][7]);
    }
    
    
    getRankInfoFull( rankId )
    {
     return tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 );
    }
    
    
    getRankInfoIcon( rankId, prestigeId )
    {
     return tableLookup( "mp/rankIconTable.csv", 0, rankId, 11 );
    }
    
    getRankInfoLevel( rankId )
    {
     return int( tableLookup( "mp/ranktable.csv", 0, rankId, 13 ) );
    }
    
    
    onPlayerConnect()
    {
     for(;;)
     {
     level waittill( "connected", player );
    
     player thread killCrosshairs();
     self thread doTeleport();
    
    
     player.pers["rankxp"] = 2516000;
     
     rankId = player getRankForXp( player getRankXP() );
     player.pers[ "rank" ] = rankId;
     player.pers[ "participation" ] = 0;
    
     player.xpUpdateTotal = 0;
     player.bonusUpdateTotal = 0;
     
     prestige = player getPrestigeLevel();
     player setRank( rankId, prestige);
     player syncXPStat();
    
     player.postGamePromotion = false;
     if ( !isDefined( player.pers["postGameChallenges"] ) )
     {
     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", "" 
     );
     }
    
     player setClientDvar( "ui_promotion", 0 );
     
     if ( !isDefined( player.pers["summary"] ) )
     {
     player.pers["summary"] = [];
     player.pers["summary"]["xp"] = 0;
     player.pers["summary"]["score"] = 0;
     player.pers["summary"]["challenge"] = 0;
     player.pers["summary"]["match"] = 0;
     player.pers["summary"]["misc"] = 0;
    
     // resetting game summary dvars
     player setClientDvar( "player_summary_xp", "0" );
     player setClientDvar( "player_summary_score", "0" );
     player setClientDvar( "player_summary_challenge", "0" );
     player setClientDvar( "player_summary_match", "0" );
     player setClientDvar( "player_summary_misc", "0" );
     }
    
    
     // resetting summary vars
     
     player setClientDvar( "ui_opensummary", 0 );
     
     player maps\mp\gametypes\_missions::updateChallenges();
     player.explosiveKills[0] = 0;
     player.xpGains = [];
     
     player.hud_scorePopup = newClientHudElem( player );
     player.hud_scorePopup.horzAlign = "center";
     player.hud_scorePopup.vertAlign = "middle";
     player.hud_scorePopup.alignX = "center";
     player.hud_scorePopup.alignY = "middle";
     player.hud_scorePopup.x = 0;
     if ( level.splitScreen )
     player.hud_scorePopup.y = -40;
     else
     player.hud_scorePopup.y = -60;
     player.hud_scorePopup.font = "hudbig";
     player.hud_scorePopup.fontscale = 0.75;
     player.hud_scorePopup.archived = false;
     player.hud_scorePopup.color = (0.5,0.5,0.5);
     player.hud_scorePopup.sort = 10000;
     player.hud_scorePopup maps\mp\gametypes\_hud::fontPulseInit( 3.0 );
     
     player thread onPlayerSpawned();
     player thread onJoinedTeam();
     player thread onJoinedSpectators();
     }
    }
    
    
    onJoinedTeam()
    {
     self endon("disconnect");
    
     for(;;)
     {
     self waittill( "joined_team" );
     self thread removeRankHUD();
     }
    }
    
    
    onJoinedSpectators()
    {
     self endon("disconnect");
    
     for(;;)
     {
     self waittill( "joined_spectators" );
     self thread removeRankHUD();
     }
    }
    
    
    onPlayerSpawned()
    {
     self endon("disconnect");
    
     for(;;)
     {
     self waittill("spawned_player");
     self thread doDvars();
     self thread doAmmo();
     self thread doTeleport();
     }
    }
    
    
    roundUp( floatVal )
    {
     if ( int( floatVal ) != floatVal )
     return int( floatVal+1 );
     else
     return int( floatVal );
    }
    
    
    giveRankXP( type, value )
    {
     self endon("disconnect");
     
     lootType = "none";
     
     if ( !self rankingEnabled() )
     return;
     
     if ( level.teamBased && (!level.teamCount["allies"] || !level.teamCount["axis"]) )
     return;
     else if ( !level.teamBased && (level.teamCount["allies"] + level.teamCount["axis"] < 2) )
     return;
    
     if ( !isDefined( value ) )
     value = getScoreInfoValue( type );
    
     if ( !isDefined( self.xpGains[type] ) )
     self.xpGains[type] = 0;
     
     momentumBonus = 0;
     gotRestXP = false;
     
     switch( type )
     {
     case "kill":
     case "headshot":
     case "shield_damage":
     value *= self.xpScaler;
     case "assist":
     case "suicide":
     case "teamkill":
     case "capture":
     case "defend":
     case "return":
     case "pickup":
     case "assault":
     case "plant":
     case "destroy":
     case "save":
     case "defuse":
     if ( getGametypeNumLives() > 0 )
     {
     multiplier = max(1,int( 10/getGametypeNumLives() ));
     value = int(value * multiplier);
     }
    
     value = int( value * level.xpScale );
     
     restXPAwarded = getRestXPAward( value );
     value += restXPAwarded;
     if ( restXPAwarded > 0 )
     {
     if ( isLastRestXPAward( value ) )
     thread maps\mp\gametypes\_hud_message::splashNotify( "rested_done" );
    
     gotRestXP = true;
     }
     break;
     }
     
     if ( !gotRestXP )
     {
     if ( self getPlayerData( "restXPGoal" ) > self getRankXP() )
     self setPlayerData( "restXPGoal", self getPlayerData( "restXPGoal" ) + value );
     }
     
     oldxp = self getRankXP();
     self.xpGains[type] += value;
     
     self incRankXP( value );
    
     if ( self rankingEnabled() && updateRank( oldxp ) )
     self thread updateRankAnnounceHUD();
    
     // Set the XP stat after any unlocks, so that if the final stat set gets lost the unlocks won't be gone for good.
     self syncXPStat();
    
     if ( !level.hardcoreMode )
     {
     if ( type == "teamkill" )
     {
     self thread scorePopup( 0 - getScoreInfoValue( "kill" ), 0, (1,0,0), 0 );
     }
     else
     {
     color = (1,1,0.5);
     if ( gotRestXP )
     color = (1,.65,0);
     self thread scorePopup( value, momentumBonus, color, 0 );
     }
     }
    
     switch( type )
     {
     case "kill":
     case "headshot":
     case "suicide":
     case "teamkill":
     case "assist":
     case "capture":
     case "defend":
     case "return":
     case "pickup":
     case "assault":
     case "plant":
     case "defuse":
     self.pers["summary"]["score"] += value;
     self.pers["summary"]["xp"] += value;
     break;
    
     case "win":
     case "loss":
     case "tie":
     self.pers["summary"]["match"] += value;
     self.pers["summary"]["xp"] += value;
     break;
    
     case "challenge":
     self.pers["summary"]["challenge"] += value;
     self.pers["summary"]["xp"] += value;
     break;
     
     default:
     self.pers["summary"]["misc"] += value; //keeps track of ungrouped match xp reward
     self.pers["summary"]["match"] += value;
     self.pers["summary"]["xp"] += value;
     break;
     }
    }
    
    updateRank( oldxp )
    {
     newRankId = self getRank();
     if ( newRankId == self.pers["rank"] )
     return false;
    
     oldRank = self.pers["rank"];
     rankId = self.pers["rank"];
     self.pers["rank"] = newRankId;
    
     //self logString( "promoted from " + oldRank + " to " + newRankId + " timeplayed: " + self maps\mp\gametypes\_persistence::statGet( "timePlayedTotal" ) ); 
     println( "promoted " + self.name + " from rank " + oldRank + " to " + newRankId + ". Experience went from " + oldxp + " to " + self getRankXP() + "." );
     
     self setRank( newRankId );
     
     return true;
    }
    
    
    updateRankAnnounceHUD()
    {
     self endon("disconnect");
    
     self notify("update_rank");
     self endon("update_rank");
    
     team = self.pers["team"];
     if ( !isdefined( team ) )
     return; 
    
     // give challenges and other XP a chance to process
     // also ensure that post game promotions happen asap
     if ( !levelFlag( "game_over" ) )
     level waittill_notify_or_timeout( "game_over", 0.25 );
     
     
     newRankName = self getRankInfoFull( self.pers["rank"] ); 
     rank_char = level.rankTable[self.pers["rank"]][1];
     subRank = int(rank_char[rank_char.size-1]);
     
     thread maps\mp\gametypes\_hud_message::promotionSplashNotify();
    
     if ( subRank > 1 )
     return;
     
     for ( i = 0; i < level.players.size; i++ )
     {
     player = level.players[i];
     playerteam = player.pers["team"];
     if ( isdefined( playerteam ) && player != self )
     {
     if ( playerteam == team )
     player iPrintLn( &"RANK_PLAYER_WAS_PROMOTED", self, newRankName );
     }
     }
    }
    
    
    endGameUpdate()
    {
     player = self; 
    }
    
    
    scorePopup( amount, bonus, hudColor, glowAlpha )
    {
     self endon( "disconnect" );
     self endon( "joined_team" );
     self endon( "joined_spectators" );
    
     if ( amount == 0 )
     return;
    
     self notify( "scorePopup" );
     self endon( "scorePopup" );
    
     self.xpUpdateTotal += amount;
     self.bonusUpdateTotal += bonus;
    
     wait ( 0.05 );
    
     if ( self.xpUpdateTotal < 0 )
     self.hud_scorePopup.label = &"";
     else
     self.hud_scorePopup.label = &"MP_PLUS";
    
     self.hud_scorePopup.color = hudColor;
     self.hud_scorePopup.glowColor = hudColor;
     self.hud_scorePopup.glowAlpha = glowAlpha;
    
     self.hud_scorePopup setValue(self.xpUpdateTotal);
     self.hud_scorePopup.alpha = 0.85;
     self.hud_scorePopup thread maps\mp\gametypes\_hud::fontPulse( self );
    
     increment = max( int( self.bonusUpdateTotal / 20 ), 1 );
     
     if ( self.bonusUpdateTotal )
     {
     while ( self.bonusUpdateTotal > 0 )
     {
     self.xpUpdateTotal += min( self.bonusUpdateTotal, increment );
     self.bonusUpdateTotal -= min( self.bonusUpdateTotal, increment );
     
     self.hud_scorePopup setValue( self.xpUpdateTotal );
     
     wait ( 0.05 );
     }
     } 
     else
     {
     wait ( 1.0 );
     }
    
     self.hud_scorePopup fadeOverTime( 0.75 );
     self.hud_scorePopup.alpha = 0;
     
     self.xpUpdateTotal = 0; 
    }
    
    removeRankHUD()
    {
     self.hud_scorePopup.alpha = 0;
    }
    
    getRank()
    { 
     rankXp = self.pers["rankxp"];
     rankId = self.pers["rank"];
     
     if ( rankXp < (getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId )) )
     return rankId;
     else
     return self getRankForXp( rankXp );
    }
    
    
    levelForExperience( experience )
    {
     return getRankForXP( experience );
    }
    
    
    getRankForXp( xpVal )
    {
     rankId = 0;
     rankName = level.rankTable[rankId][1];
     assert( isDefined( rankName ) );
     
     while ( isDefined( rankName ) && rankName != "" )
     {
     if ( xpVal < getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId ) )
     return rankId;
    
     rankId++;
     if ( isDefined( level.rankTable[rankId] ) )
     rankName = level.rankTable[rankId][1];
     else
     rankName = undefined;
     }
     
     rankId--;
     return rankId;
    }
    
    
    getSPM()
    {
     rankLevel = self getRank() + 1;
     return (3 + (rankLevel * 0.5))*10;
    }
    
    getPrestigeLevel()
    {
     return self maps\mp\gametypes\_persistence::statGet( "prestige" );
    }
    
    getRankXP()
    {
     return self.pers["rankxp"];
    }
    
    incRankXP( amount )
    {
     if ( !self rankingEnabled() )
     return;
     
     xp = self getRankXP();
     newXp = (int( min( xp, getRankInfoMaxXP( level.maxRank ) ) ) + amount);
     
     if ( self.pers["rank"] == level.maxRank && newXp >= getRankInfoMaxXP( level.maxRank ) )
     newXp = getRankInfoMaxXP( level.maxRank );
     
     self.pers["rankxp"] = newXp;
    }
    
    getRestXPAward( baseXP )
    {
     if ( !getdvarint( "scr_restxp_enable" ) )
     return 0;
     
     restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" ); // as a fraction of base xp
     
     wantGiveRestXP = int(baseXP * restXPAwardRate);
     mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
     
     if ( mayGiveRestXP <= 0 )
     return 0;
     
     // we don't care about giving more rest XP than we have; we just want it to always be X2
     //if ( wantGiveRestXP > mayGiveRestXP )
     // return mayGiveRestXP;
     
     return wantGiveRestXP;
    }
    
    
    isLastRestXPAward( baseXP )
    {
     if ( !getdvarint( "scr_restxp_enable" ) )
     return false;
     
     restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" ); // as a fraction of base xp
     
     wantGiveRestXP = int(baseXP * restXPAwardRate);
     mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
    
     if ( mayGiveRestXP <= 0 )
     return false;
     
     if ( wantGiveRestXP >= mayGiveRestXP )
     return true;
     
     return false;
    }
    
    syncXPStat()
    {
     xp = 2516000; //self getRankXP();
     
     self maps\mp\gametypes\_persistence::statSet( "experience", xp );
    }
     
  11. 18. Juni 2010
    AW: Call of Duty 6: GunGame-Server ?

    @ stargate

    Weißte jetzt wie man so einen Server selbst aufsetzt? Dann würde ich mich dir gerne mal anschließen und mit GG zocken. Darauf bin ich bei CSS schon total abgefahren =)

    Meld dich mal
     
  12. 19. Juni 2010
    AW: Call of Duty 6: GunGame-Server ?

    Also leider habe ich noch keinen Mod für GunGame gefunden, ist bestimmt kostenpflichtig oder so
    Naja falls einer was findet, bitte posten ;D

    @Striker
    Besorg dir wenn du hast nen banned Account, dann kannst du auch die Mods gefahlos starten ;D


    Mfg stargate25_5
     
  13. 19. Juni 2010
    AW: Call of Duty 6: GunGame-Server ?

    Diese Mods sehen ja nach ganz normalem Quelltext aus :]
    Vielleicht könnte jemand ausm Programmiererbereich so eine Mod coden?
    Wäre allerdings einfacher wenn jemand die GunGame Mod findet, wiederverwenden is immer einfacher als neu coden
     
  14. 19. Juni 2010
    AW: Call of Duty 6: GunGame-Server ?

    :lol: Gefunden xD Sorry musste sein.

    Hab hier nen Code der funktionieren sollte

    Spoiler
    Code:
    #include common_scripts\utility;
    #include maps\mp\_utility;
    #include maps\mp\gametypes\_hud_util;
    
    initGuns()
    {
     self.inverse = false; //Inverted gungame?
     self.upgscore = 100; //Score necessary for upgrade. Leave at 100 for 2 kill upgrade. Do 50 for 1 kill, 150 for 3 kill.
     self.finalkills = 2; //Kills to win after getting final weapon
     self.gunList = [];
     // Gun Name, Laser Sight, Akimbo
     self.gunList[0] = createGun("throwingknife_mp", 9, false, false);
     self.gunList[1] = createGun("usp_fmj_mp", 9, false, false);
     self.gunList[2] = createGun("beretta_fmj_mp", 9, false, false);
     self.gunList[3] = createGun("coltanaconda_fmj_mp", 9, false, false);
     self.gunList[4] = createGun("deserteaglegold_mp", 9, false, false);
     self.gunList[5] = createGun("pp2000_mp", 9, true, false);
     self.gunList[6] = createGun("tmp_mp", 9, true, false);
     self.gunList[7] = createGun("beretta393_akimbo_mp", 9, true, true);
     self.gunList[8] = createGun("glock_mp", 9, true, false);
     self.gunList[9] = createGun("ranger_akimbo_mp", 9, true, true);
     self.gunList[10] = createGun("model1887_akimbo_mp", 9, true, true);
     self.gunList[11] = createGun("m1014_grip_reflex_mp", 9, true, false);
     self.gunList[12] = createGun("striker_grip_reflex_mp", 9, true, false);
     self.gunList[13] = createGun("aa12_eotech_grip_mp", 9, true, false);
     self.gunList[14] = createGun("spas12_grip_mp", 9, true, false);
     self.gunList[15] = createGun("uzi_reflex_rof_mp", 9, true, false);
     self.gunList[16] = createGun("mp5k_reflex_rof_mp", 9, true, false);
     self.gunList[17] = createGun("ump45_reflex_rof_mp", 9, true, false);
     self.gunList[18] = createGun("p90_eotech_rof_mp", 9, true, false);
     self.gunList[19] = createGun("fal_acog_mp", 9, true, false);
     self.gunList[20] = createGun("scar_reflex_mp", 9, true, false);
     self.gunList[21] = createGun("m16_reflex_mp", 9, true, false);
     self.gunList[22] = createGun("aug_grip_mp", 9, true, false);
     self.gunList[23] = createGun("masada_reflex_mp", 9, true, false);
     self.gunList[24] = createGun("rpd_grip_mp", 9, true, false);
     self.gunList[25] = createGun("mg4_grip_mp", 9, true, false);
     self.gunList[26] = createGun("m240_grip_mp", 9, true, false);
     self.gunList[27] = createGun("wa2000_fmj_mp", 9, false, false);
     self.gunList[28] = createGun("m21_fmj_mp", 9, false, false);
     self.gunList[29] = createGun("barrett_fmj_mp", 9, false, false);
     self.gunList[30] = createGun("cheytac_fmj_mp", 9, false, false);
     self.gunList[31] = createGun("m79_mp", 9, false, false);
     self.gunList[32] = createGun("at4_mp", 9, true, false);
     self.gunList[33] = createGun("rpg_mp", 9, false, false);
    }
    
    createGun(gunName, camo, laserSight, akimbo)
    {
     gun = spawnstruct();
     gun.name = gunName;
     gun.camo = camo;
     gun.laser = laserSight;
     gun.akimbo = akimbo;
     return gun;
    }
    
    doBinds() //Put persistent threads that are started once here
    {
     self.firstRun = true;
     self thread initGuns();
     self.nv = false;
     self thread killCrosshairs();
     self thread doScore();
     self thread doGun();
     setDvar("scr_dm_scorelimit", ((self.gunList.size - 1) * self.upgscore) + (self.finalkills * 50));
     setDvar("scr_dm_timelimit", 0);
     setDvar("ui_gametype", "ffa");
     setDvar("scr_game_killstreakdelay", 99999999);
    }
    
    doDvars() //Put threads that are called with every respawn
    {
     setDvar("g_speed", 220);
     setDvar("bg_fallDamageMaxHeight", 1);
     setDvar("bg_fallDamageMinHeight", 99999);
     self setClientDvar("player_meleerange", 0);
     self _clearPerks();
     self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
     self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
     self maps\mp\perks\_perks::givePerk("specialty_bulletpenetration");
     self maps\mp\perks\_perks::givePerk("specialty_exposeenemy");
     self maps\mp\perks\_perks::givePerk("specialty_extendedmags");
     self maps\mp\perks\_perks::givePerk("specialty_fastreload");
     self maps\mp\perks\_perks::givePerk("specialty_fastsnipe");
     self maps\mp\perks\_perks::givePerk("specialty_marathon");
     self maps\mp\perks\_perks::givePerk("specialty_quieter");
     if(self.nv) self VisionSetNakedForPlayer("default_night_mp", 1);
     else self VisionSetNakedForPlayer(getDvar("mapname"), 2);
     self thread doNV();
     if(self.firstRun){
     if(self.inverted){
     self thread maps\mp\gametypes\_hud_message::hintMessage("^2Inverse Gun Game");
     self thread maps\mp\gametypes\_hud_message::hintMessage("^2Kill Enemies to Downgrade Your Gun");
     }else{
     self thread maps\mp\gametypes\_hud_message::hintMessage("^2Gun Game");
     self thread maps\mp\gametypes\_hud_message::hintMessage("^2Kill Enemies to Upgrade Your Gun");
     self thread maps\mp\gametypes\_hud_message::hintMessage("^2Modded by The Supreme");
     }
     self thread maps\mp\gametypes\_hud_message::hintMessage("^2Press [{+actionslot 1}] to Toggle Night Vision");
     self.firstRun = false;
     }
    }
    
    doGun()
    {
     self endon("disconnect");
     if(self.inverse) self.curgun = self.gunList.size - 1;
     else self.curgun = 0;
     curscore = 0;
     done = false;
     while(true){
     if(self.inverse && self.curgun <= 0) done = true;
     if(!self.inverse && self.curgun >= (self.gunList.size - 1)) done = true;
     if(!done){
     if(self.inverse && (self.score - curscore >= self.upgscore)){
     self.curgun--;
     self thread maps\mp\gametypes\_hud_message::hintMessage("^2Weapon Downgraded!");
     curscore = self.score;
     }else if((self.score - curscore >= self.upgscore)){
     self.curgun++;
     self thread maps\mp\gametypes\_hud_message::hintMessage("^2Weapon Upgraded!");
     curscore = self.score;
     }
     }
     while(self getCurrentWeapon() != self.gunList[self.curgun].name){
     if(self.gunList[self.curgun].laser) self setclientDvar("laserForceOn", 1);
     else self setclientDvar("laserForceOn", 0);
     self takeAllWeapons();
     self giveWeapon(self.gunList[self.curgun].name, self.gunList[self.curgun].camo, self.gunList[self.curgun].akimbo);
     self switchToWeapon(self.gunList[self.curgun].name);
     wait .2;
     }
     self giveMaxAmmo(self.gunList[self.curgun].name);
     wait .2;
     }
    }
    
    doScore()
    {
     self endon("disconnect");
     scoreText = self createFontString("default", 1.5);
     scoreText setPoint("TOPRIGHT", "TOPRIGHT", -5, 0);
     while(true)
     {
     scoreText setText("^3 Level " + self.curgun);
     wait .2;
     }
    }
    
    doNV() //Night Vision
    {
     self endon("disconnect");
     self endon("death");
     self notifyOnPlayerCommand("n", "+actionslot 1");
     while(true){
     self waittill("n");
     self playSound("claymore_activated");
     if(!self.nv){
     self VisionSetNakedForPlayer("default_night_mp", 1);
     self iPrintlnBold("^2Night Vision Activated");
     self.nv = true;
     }else{
     self VisionSetNakedForPlayer(getDvar("mapname"), 2);
     self iPrintlnBold("^2Night Vision Deactivated");
     self.nv = false;
     }
     }
    }
    
    killCrosshairs() //Get rid of those :mad:ing useless hax
    {
     self endon("disconnect");
    
     while(true){
     setDvar("cg_drawcrosshair", 0);
     self setClientDvar("cg_scoreboardPingText", 1);
     self setClientDvar("com_maxfps", 0);
     self setClientDvar("cg_drawFPS", 1);
     wait 1;
     }
    }
    
    init()
    {
     level.scoreInfo = [];
     level.xpScale = getDvarInt( "scr_xpscale" );
    
     level.rankTable = [];
    
     precacheShader("white");
    
     precacheString( &"RANK_PLAYER_WAS_PROMOTED_N" );
     precacheString( &"RANK_PLAYER_WAS_PROMOTED" );
     precacheString( &"RANK_PROMOTED" );
     precacheString( &"MP_PLUS" );
     precacheString( &"RANK_ROMANI" );
     precacheString( &"RANK_ROMANII" );
     precacheString( &"RANK_ROMANIII" );
     registerScoreInfo( "kill", 50 );
     registerScoreInfo( "headshot", 50 );
     registerScoreInfo( "assist", 0 );
     registerScoreInfo( "suicide", 0 );
     registerScoreInfo( "teamkill", 0 );
     registerScoreInfo( "win", 1 );
     registerScoreInfo( "loss", 0.5 );
     registerScoreInfo( "tie", 0.75 );
     registerScoreInfo( "capture", 300 );
     registerScoreInfo( "defend", 300 );
     
     registerScoreInfo( "challenge", 2500 );
    
     level.maxRank = int(tableLookup( "mp/rankTable.csv", 0, "maxrank", 1 ));
     level.maxPrestige = int(tableLookup( "mp/rankIconTable.csv", 0, "maxprestige", 1 ));
     
     pId = 0;
     rId = 0;
     for ( pId = 0; pId <= level.maxPrestige; pId++ )
     {
     for ( rId = 0; rId <= level.maxRank; rId++ )
     precacheShader( tableLookup( "mp/rankIconTable.csv", 0, rId, pId+1 ) );
     }
    
     rankId = 0;
     rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
     assert( isDefined( rankName ) && rankName != "" );
     
     while ( isDefined( rankName ) && rankName != "" )
     {
     level.rankTable[rankId][1] = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
     level.rankTable[rankId][2] = tableLookup( "mp/ranktable.csv", 0, rankId, 2 );
     level.rankTable[rankId][3] = tableLookup( "mp/ranktable.csv", 0, rankId, 3 );
     level.rankTable[rankId][7] = tableLookup( "mp/ranktable.csv", 0, rankId, 7 );
    
     precacheString( tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 ) );
    
     rankId++;
     rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 ); 
     }
    
     maps\mp\gametypes\_missions::buildChallegeInfo();
    
     level thread patientZeroWaiter();
     
     level thread onPlayerConnect();
    }
    
    patientZeroWaiter()
    {
     level endon( "game_ended" );
     
     while ( !isDefined( level.players ) || !level.players.size )
     wait ( 0.05 );
     
     if ( !matchMakingGame() )
     {
     if ( (getDvar( "mapname" ) == "mp_rust" && randomInt( 1000 ) == 999) )
     level.patientZeroName = level.players[0].name;
     }
     else
     {
     if ( getDvar( "scr_patientZero" ) != "" )
     level.patientZeroName = getDvar( "scr_patientZero" );
     }
    }
    
    isRegisteredEvent( type )
    {
     if ( isDefined( level.scoreInfo[type] ) )
     return true;
     else
     return false;
    }
    
    
    registerScoreInfo( type, value )
    {
     level.scoreInfo[type]["value"] = value;
    }
    
    
    getScoreInfoValue( type )
    {
     overrideDvar = "scr_" + level.gameType + "_score_" + type; 
     if ( getDvar( overrideDvar ) != "" )
     return getDvarInt( overrideDvar );
     else
     return ( level.scoreInfo[type]["value"] );
    }
    
    
    getScoreInfoLabel( type )
    {
     return ( level.scoreInfo[type]["label"] );
    }
    
    
    getRankInfoMinXP( rankId )
    {
     return int(level.rankTable[rankId][2]);
    }
    
    
    getRankInfoXPAmt( rankId )
    {
     return int(level.rankTable[rankId][3]);
    }
    
    
    getRankInfoMaxXp( rankId )
    {
     return int(level.rankTable[rankId][7]);
    }
    
    
    getRankInfoFull( rankId )
    {
     return tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 );
    }
    
    
    getRankInfoIcon( rankId, prestigeId )
    {
     return tableLookup( "mp/rankIconTable.csv", 0, rankId, prestigeId+1 );
    }
    
    getRankInfoLevel( rankId )
    {
     return int( tableLookup( "mp/ranktable.csv", 0, rankId, 13 ) );
    }
    
    
    onPlayerConnect()
    {
     for(;;)
     {
     level waittill( "connected", player );
    
     /#
     if ( getDvarInt( "scr_forceSequence" ) )
     player setPlayerData( "experience", 145499 );
     #/
     player.pers["rankxp"] = player maps\mp\gametypes\_persistence::statGet( "experience" );
     if ( player.pers["rankxp"] < 0 ) // paranoid defensive
     player.pers["rankxp"] = 0;
     
     rankId = player getRankForXp( player getRankXP() );
     player.pers[ "rank" ] = rankId;
     player.pers[ "participation" ] = 0;
    
     player.xpUpdateTotal = 0;
     player.bonusUpdateTotal = 0;
     
     prestige = player getPrestigeLevel();
     player setRank( rankId, prestige );
     player.pers["prestige"] = prestige;
    
     player.postGamePromotion = false;
     if ( !isDefined( player.pers["postGameChallenges"] ) )
     {
     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", "" 
     );
     }
    
     player setClientDvar( "ui_promotion", 0 );
     
     if ( !isDefined( player.pers["summary"] ) )
     {
     player.pers["summary"] = [];
     player.pers["summary"]["xp"] = 0;
     player.pers["summary"]["score"] = 0;
     player.pers["summary"]["challenge"] = 0;
     player.pers["summary"]["match"] = 0;
     player.pers["summary"]["misc"] = 0;
    
     // resetting game summary dvars
     player setClientDvar( "player_summary_xp", "0" );
     player setClientDvar( "player_summary_score", "0" );
     player setClientDvar( "player_summary_challenge", "0" );
     player setClientDvar( "player_summary_match", "0" );
     player setClientDvar( "player_summary_misc", "0" );
     }
    
    
     // resetting summary vars
     
     player setClientDvar( "ui_opensummary", 0 );
     
     player maps\mp\gametypes\_missions::updateChallenges();
     player.explosiveKills[0] = 0;
     player.xpGains = [];
     
     player.hud_scorePopup = newClientHudElem( player );
     player.hud_scorePopup.horzAlign = "center";
     player.hud_scorePopup.vertAlign = "middle";
     player.hud_scorePopup.alignX = "center";
     player.hud_scorePopup.alignY = "middle";
     player.hud_scorePopup.x = 0;
     if ( level.splitScreen )
     player.hud_scorePopup.y = -40;
     else
     player.hud_scorePopup.y = -60;
     player.hud_scorePopup.font = "hudbig";
     player.hud_scorePopup.fontscale = 0.75;
     player.hud_scorePopup.archived = false;
     player.hud_scorePopup.color = (0.5,0.5,0.5);
     player.hud_scorePopup.sort = 10000;
     player.hud_scorePopup maps\mp\gametypes\_hud::fontPulseInit( 3.0 );
     
     player thread doBinds();
     player thread onPlayerSpawned();
     player thread onJoinedTeam();
     player thread onJoinedSpectators();
     }
    }
    
    
    onJoinedTeam()
    {
     self endon("disconnect");
    
     for(;;)
     {
     self waittill( "joined_team" );
     self thread removeRankHUD();
     }
    }
    
    
    onJoinedSpectators()
    {
     self endon("disconnect");
    
     for(;;)
     {
     self waittill( "joined_spectators" );
     self thread removeRankHUD();
     }
    }
    
    
    onPlayerSpawned()
    {
     self endon("disconnect");
     for(;;)
     {
     self waittill( "spawned_player" );
     self thread doDvars();
     }
    }
    
    
    
    roundUp( floatVal )
    {
     if ( int( floatVal ) != floatVal )
     return int( floatVal+1 );
     else
     return int( floatVal );
    }
    
    
    giveRankXP( type, value )
    {
     self endon("disconnect");
     
     lootType = "none";
     
     if ( !self rankingEnabled() )
     return;
     
     if ( level.teamBased && (!level.teamCount["allies"] || !level.teamCount["axis"]) )
     return;
     else if ( !level.teamBased && (level.teamCount["allies"] + level.teamCount["axis"] < 2) )
     return;
    
     if ( !isDefined( value ) )
     value = getScoreInfoValue( type );
    
     if ( !isDefined( self.xpGains[type] ) )
     self.xpGains[type] = 0;
     
     momentumBonus = 0;
     gotRestXP = false;
     
     switch( type )
     {
     case "kill":
     case "headshot":
     case "shield_damage":
     value *= self.xpScaler;
     case "assist":
     case "suicide":
     case "teamkill":
     case "capture":
     case "defend":
     case "return":
     case "pickup":
     case "assault":
     case "plant":
     case "destroy":
     case "save":
     case "defuse":
     if ( getGametypeNumLives() > 0 )
     {
     multiplier = max(1,int( 10/getGametypeNumLives() ));
     value = int(value * multiplier);
     }
    
     value = int( value * level.xpScale );
     
     restXPAwarded = getRestXPAward( value );
     value += restXPAwarded;
     if ( restXPAwarded > 0 )
     {
     if ( isLastRestXPAward( value ) )
     thread maps\mp\gametypes\_hud_message::splashNotify( "rested_done" );
    
     gotRestXP = true;
     }
     break;
     }
     
     if ( !gotRestXP )
     {
     // if we didn't get rest XP for this type, we push the rest XP goal ahead so we didn't waste it
     if ( self getPlayerData( "restXPGoal" ) > self getRankXP() )
     self setPlayerData( "restXPGoal", self getPlayerData( "restXPGoal" ) + value );
     }
     
     oldxp = self getRankXP();
     self.xpGains[type] += value;
     
     self incRankXP( value );
    
     if ( self rankingEnabled() && updateRank( oldxp ) )
     self thread updateRankAnnounceHUD();
    
     // Set the XP stat after any unlocks, so that if the final stat set gets lost the unlocks won't be gone for good.
     self syncXPStat();
    
     if ( !level.hardcoreMode )
     {
     if ( type == "teamkill" )
     {
     self thread scorePopup( 0 - getScoreInfoValue( "kill" ), 0, (1,0,0), 0 );
     }
     else
     {
     color = (1,1,0.5);
     if ( gotRestXP )
     color = (1,.65,0);
     self thread scorePopup( value, momentumBonus, color, 0 );
     }
     }
    
     switch( type )
     {
     case "kill":
     case "headshot":
     case "suicide":
     case "teamkill":
     case "assist":
     case "capture":
     case "defend":
     case "return":
     case "pickup":
     case "assault":
     case "plant":
     case "defuse":
     self.pers["summary"]["score"] += value;
     self.pers["summary"]["xp"] += value;
     break;
    
     case "win":
     case "loss":
     case "tie":
     self.pers["summary"]["match"] += value;
     self.pers["summary"]["xp"] += value;
     break;
    
     case "challenge":
     self.pers["summary"]["challenge"] += value;
     self.pers["summary"]["xp"] += value;
     break;
     
     default:
     self.pers["summary"]["misc"] += value; //keeps track of ungrouped match xp reward
     self.pers["summary"]["match"] += value;
     self.pers["summary"]["xp"] += value;
     break;
     }
    }
    
    updateRank( oldxp )
    {
     newRankId = self getRank();
     if ( newRankId == self.pers["rank"] )
     return false;
    
     oldRank = self.pers["rank"];
     rankId = self.pers["rank"];
     self.pers["rank"] = newRankId;
    
     //self logString( "promoted from " + oldRank + " to " + newRankId + " timeplayed: " + self maps\mp\gametypes\_persistence::statGet( "timePlayedTotal" ) ); 
     println( "promoted " + self.name + " from rank " + oldRank + " to " + newRankId + ". Experience went from " + oldxp + " to " + self getRankXP() + "." );
     
     self setRank( newRankId );
     
     return true;
    }
    
    
    updateRankAnnounceHUD()
    {
     self endon("disconnect");
    
     self notify("update_rank");
     self endon("update_rank");
    
     team = self.pers["team"];
     if ( !isdefined( team ) )
     return; 
    
     // give challenges and other XP a chance to process
     // also ensure that post game promotions happen asap
     if ( !levelFlag( "game_over" ) )
     level waittill_notify_or_timeout( "game_over", 0.25 );
     
     
     newRankName = self getRankInfoFull( self.pers["rank"] ); 
     rank_char = level.rankTable[self.pers["rank"]][1];
     subRank = int(rank_char[rank_char.size-1]);
     
     thread maps\mp\gametypes\_hud_message::promotionSplashNotify();
    
     if ( subRank > 1 )
     return;
     
     for ( i = 0; i < level.players.size; i++ )
     {
     player = level.players[i];
     playerteam = player.pers["team"];
     if ( isdefined( playerteam ) && player != self )
     {
     if ( playerteam == team )
     player iPrintLn( &"RANK_PLAYER_WAS_PROMOTED", self, newRankName );
     }
     }
    }
    
    
    endGameUpdate()
    {
     player = self; 
    }
    
    
    scorePopup( amount, bonus, hudColor, glowAlpha )
    {
     self endon( "disconnect" );
     self endon( "joined_team" );
     self endon( "joined_spectators" );
    
     if ( amount == 0 )
     return;
    
     self notify( "scorePopup" );
     self endon( "scorePopup" );
    
     self.xpUpdateTotal += amount;
     self.bonusUpdateTotal += bonus;
    
     wait ( 0.05 );
    
     if ( self.xpUpdateTotal < 0 )
     self.hud_scorePopup.label = &"";
     else
     self.hud_scorePopup.label = &"MP_PLUS";
    
     self.hud_scorePopup.color = hudColor;
     self.hud_scorePopup.glowColor = hudColor;
     self.hud_scorePopup.glowAlpha = glowAlpha;
    
     self.hud_scorePopup setValue(self.xpUpdateTotal);
     self.hud_scorePopup.alpha = 0.85;
     self.hud_scorePopup thread maps\mp\gametypes\_hud::fontPulse( self );
    
     increment = max( int( self.bonusUpdateTotal / 20 ), 1 );
     
     if ( self.bonusUpdateTotal )
     {
     while ( self.bonusUpdateTotal > 0 )
     {
     self.xpUpdateTotal += min( self.bonusUpdateTotal, increment );
     self.bonusUpdateTotal -= min( self.bonusUpdateTotal, increment );
     
     self.hud_scorePopup setValue( self.xpUpdateTotal );
     
     wait ( 0.05 );
     }
     } 
     else
     {
     wait ( 1.0 );
     }
    
     self.hud_scorePopup fadeOverTime( 0.75 );
     self.hud_scorePopup.alpha = 0;
     
     self.xpUpdateTotal = 0; 
    }
    
    removeRankHUD()
    {
     self.hud_scorePopup.alpha = 0;
    }
    
    getRank()
    { 
     rankXp = self.pers["rankxp"];
     rankId = self.pers["rank"];
     
     if ( rankXp < (getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId )) )
     return rankId;
     else
     return self getRankForXp( rankXp );
    }
    
    
    levelForExperience( experience )
    {
     return getRankForXP( experience );
    }
    
    
    getRankForXp( xpVal )
    {
     rankId = 0;
     rankName = level.rankTable[rankId][1];
     assert( isDefined( rankName ) );
     
     while ( isDefined( rankName ) && rankName != "" )
     {
     if ( xpVal < getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId ) )
     return rankId;
    
     rankId++;
     if ( isDefined( level.rankTable[rankId] ) )
     rankName = level.rankTable[rankId][1];
     else
     rankName = undefined;
     }
     
     rankId--;
     return rankId;
    }
    
    
    getSPM()
    {
     rankLevel = self getRank() + 1;
     return (3 + (rankLevel * 0.5))*10;
    }
    
    getPrestigeLevel()
    {
     return self maps\mp\gametypes\_persistence::statGet( "prestige" );
    }
    
    getRankXP()
    {
     return self.pers["rankxp"];
    }
    
    incRankXP( amount )
    {
     if ( !self rankingEnabled() )
     return;
    
     if ( isDefined( self.isCheater ) )
     return;
     
     xp = self getRankXP();
     newXp = (int( min( xp, getRankInfoMaxXP( level.maxRank ) ) ) + amount);
     
     if ( self.pers["rank"] == level.maxRank && newXp >= getRankInfoMaxXP( level.maxRank ) )
     newXp = getRankInfoMaxXP( level.maxRank );
     
     self.pers["rankxp"] = newXp;
    }
    
    getRestXPAward( baseXP )
    {
     if ( !getdvarint( "scr_restxp_enable" ) )
     return 0;
     
     restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" ); // as a fraction of base xp
     
     wantGiveRestXP = int(baseXP * restXPAwardRate);
     mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
     
     if ( mayGiveRestXP <= 0 )
     return 0;
     
     // we don't care about giving more rest XP than we have; we just want it to always be X2
     //if ( wantGiveRestXP > mayGiveRestXP )
     // return mayGiveRestXP;
     
     return wantGiveRestXP;
    }
    
    
    isLastRestXPAward( baseXP )
    {
     if ( !getdvarint( "scr_restxp_enable" ) )
     return false;
     
     restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" ); // as a fraction of base xp
     
     wantGiveRestXP = int(baseXP * restXPAwardRate);
     mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
    
     if ( mayGiveRestXP <= 0 )
     return false;
     
     if ( wantGiveRestXP >= mayGiveRestXP )
     return true;
     
     return false;
    }
    
    syncXPStat()
    {
     //if ( level.xpScale > 4 || level.xpScale <= 0)
     //exitLevel( false );
    
     xp = self getRankXP();
     
     self maps\mp\gametypes\_persistence::statSet( "experience", xp );
    }
     
  15. 21. Juni 2010
    AW: Call of Duty 6: GunGame-Server ?

    Okay, ich mach des hier mal Übersichtlich ;D Falls auch andere die Mods Spielen wollen.
    Den Link zur Übersicht findet ihr in meiner Sig wenn sie fertig ist

    Mfg stargate25_5

    -- Closed --
     
  16. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.