ItsMods

Full Version: wow, how to edit?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
im found it:
self openMenu( game["menu_changeclass_custom"] ); // menu with custom classes1
this is custom classes! how to edit it?(GSC not CSV)
See, Eekhoorn, I told you that you don't need official ModTools to make the menu like in CoD4 ProMod.
so it works? so people make custom classes ingame?
(02-18-2011, 23:20)SuperNovaAO Wrote: [ -> ]See, Eekhoorn, I told you that you don't need official ModTools to make the menu like in CoD4 ProMod.
It is just one of the reason he refuse to release
anyone comfirm it works?
PHP Code:
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
init()
{
    
level.scoreInfo = [];
    
level.xpScale GetDvarInt#"scr_xpscale" );
    
level.codPointsXpScale GetDvarFloat#"scr_codpointsxpscale" );
    
level.codPointsMatchScale GetDvarFloat#"scr_codpointsmatchscale" );
    
level.codPointsChallengeScale GetDvarFloat#"scr_codpointsperchallenge" );
    
level.rankXpCap GetDvarInt#"scr_rankXpCap" );
    
level.codPointsCap GetDvarInt#"scr_codPointsCap" );
    
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" );
    if ( 
level.teamBased )
    {
        
registerScoreInfo"kill"100 );
        
registerScoreInfo"headshot"100 );
        
registerScoreInfo"assist_75"80 );
        
registerScoreInfo"assist_50"60 );
        
registerScoreInfo"assist_25"40 );
        
registerScoreInfo"assist"20 );
        
registerScoreInfo"suicide");
        
registerScoreInfo"teamkill");
        
registerScoreInfo"dogkill"30 );
        
registerScoreInfo"dogassist"10 );
        
registerScoreInfo"helicopterkill"200 );
        
registerScoreInfo"helicopterassist"100 );
        
registerScoreInfo"helicopterassist_75");
        
registerScoreInfo"helicopterassist_50");
        
registerScoreInfo"helicopterassist_25");
        
registerScoreInfo"spyplanekill"100 );
        
registerScoreInfo"spyplaneassist"50 );
        
registerScoreInfo"rcbombdestroy"50 );
    }
    else
    {
        
registerScoreInfo"kill"50 );
        
registerScoreInfo"headshot"50 );
        
registerScoreInfo"assist_75");
        
registerScoreInfo"assist_50");
        
registerScoreInfo"assist_25");
        
registerScoreInfo"assist");
        
registerScoreInfo"suicide");
        
registerScoreInfo"teamkill");
        
registerScoreInfo"dogkill"20 );
        
registerScoreInfo"dogassist");
        
registerScoreInfo"helicopterkill"100 );
        
registerScoreInfo"helicopterassist");
        
registerScoreInfo"helicopterassist_75");
        
registerScoreInfo"helicopterassist_50");
        
registerScoreInfo"helicopterassist_25");
        
registerScoreInfo"spyplanekill"25 );
        
registerScoreInfo"spyplaneassist");
        
registerScoreInfo"rcbombdestroy"30 );
    }
    
registerScoreInfo"win");
    
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"));
    
level.maxPrestige int(tableLookup"mp/rankIconTable.csv"0"maxprestige"));
    
pId 0;
    
rId 0;
    for ( 
pId 0pId <= level.maxPrestigepId++ )
    {
        for ( 
rId 0rId <= level.maxRankrId++ )
        
precacheShadertableLookup"mp/rankIconTable.csv"0rIdpId+) );
    }
    
rankId 0;
    
rankName tableLookup"mp/ranktable.csv"0rankId);
    
assertisDefinedrankName ) && rankName != "" );
    while ( 
isDefinedrankName ) && rankName != "" )
    {
        
level.rankTable[rankId][1] = tableLookup"mp/ranktable.csv"0rankId);
        
level.rankTable[rankId][2] = tableLookup"mp/ranktable.csv"0rankId);
        
level.rankTable[rankId][3] = tableLookup"mp/ranktable.csv"0rankId);
        
level.rankTable[rankId][7] = tableLookup"mp/ranktable.csv"0rankId);
        
level.rankTable[rankId][14] = tableLookup"mp/ranktable.csv"0rankId14 );
        
precacheStringtableLookupIString"mp/ranktable.csv"0rankId16 ) );
        
rankId++;
        
rankName tableLookup"mp/ranktable.csv"0rankId);
    }
    
level.numStatsMilestoneTiers 4;
    
level.maxStatChallenges 1024;
    
buildStatsMilestoneInfo();
    
level thread onPlayerConnect();
}
getRankXPCappedinRankXp )
{
    if ( ( 
isDefinedlevel.rankXpCap ) ) && level.rankXpCap && ( level.rankXpCap <= inRankXp ) )
    {
        return 
level.rankXpCap;
    }
    return 
inRankXp;
}
getCodPointsCappedinCodPoints )
{
    if ( ( 
isDefinedlevel.codPointsCap ) ) && level.codPointsCap && ( level.codPointsCap <= inCodPoints ) )
    {
        return 
level.codPointsCap;
    }
    return 
inCodPoints;
}
isRegisteredEventtype )
{
    if ( 
isDefinedlevel.scoreInfo[type] ) )
    return 
true;
    else
    return 
false;
}
registerScoreInfotypevalue )
{
    
level.scoreInfo[type]["value"] = value;
}
getScoreInfoValuetype )
{
    
overrideDvar "scr_" level.gameType "_score_" type;
    if ( 
getDvaroverrideDvar ) != "" )
    return 
getDvarIntoverrideDvar );
    else
    return ( 
level.scoreInfo[type]["value"] );
}
getScoreInfoLabeltype )
{
    return ( 
level.scoreInfo[type]["label"] );
}
getRankInfoMinXPrankId )
{
    return 
int(level.rankTable[rankId][2]);
}
getRankInfoXPAmtrankId )
{
    return 
int(level.rankTable[rankId][3]);
}
getRankInfoMaxXprankId )
{
    return 
int(level.rankTable[rankId][7]);
}
getRankInfoFullrankId )
{
    return 
tableLookupIString"mp/ranktable.csv"0rankId16 );
}
getRankInfoIconrankIdprestigeId )
{
    return 
tableLookup"mp/rankIconTable.csv"0rankIdprestigeId+);
}
getRankInfoLevelrankId )
{
    return 
inttableLookup"mp/ranktable.csv"0rankId13 ) );
}
getRankInfoCodPointsEarnedrankId )
{
    return 
inttableLookup"mp/ranktable.csv"0rankId17 ) );
}
shouldKickByRank()
{
    if ( 
self IsHost() )
    {
        return 
false;
    }
    if (
level.rankCap && self.pers["rank"] > level.rankCap)
    {
        return 
true;
    }
    if ( ( 
level.rankCap ) && ( level.minPrestige == ) && ( self.pers["plevel"] > ) )
    {
        return 
true;
    }
    if ( 
level.minPrestige self.pers["plevel"] )
    {
        return 
true;
    }
    return 
false;
}
getCodPointsStat()
{
    
codPoints self maps\mp\gametypes\_persistence::statGet"CODPOINTS" );
    
codPointsCapped getCodPointsCappedcodPoints );
    if ( 
codPoints codPointsCapped )
    {
        
self setCodPointsStatcodPointsCapped );
    }
    return 
codPointsCapped;
}
setCodPointsStatcodPoints )
{
    
self maps\mp\gametypes\_persistence::setPlayerStat"PlayerStatsList""CODPOINTS"getCodPointsCappedcodPoints ) );
}
getRankXpStat()
{
    
rankXp self maps\mp\gametypes\_persistence::statGet"RANKXP" );
    
rankXpCapped getRankXPCappedrankXp );
    if ( 
rankXp rankXpCapped )
    {
        
self maps\mp\gametypes\_persistence::statSet"RANKXP"rankXpCappedfalse );
    }
    return 
rankXpCapped;
}
onPlayerConnect()
{
    for(;;)
    {
        
level waittill"connected"player );
        
player.pers["rankxp"] = player getRankXpStat();
        
player.pers["codpoints"] = player getCodPointsStat();
        
player.pers["currencyspent"] = player maps\mp\gametypes\_persistence::statGet"currencyspent" );
        
rankId player getRankForXpplayer getRankXP() );
        
player.pers["rank"] = rankId;
        
player.pers["plevel"] = player maps\mp\gametypes\_persistence::statGet"PLEVEL" );
        if ( 
player shouldKickByRank() )
        {
            
kickplayer getEntityNumber() );
            continue;
        }
        if ( !
isDefinedplayer.pers["participation"] ) || !( (level.gameType == "twar") && (game["roundsplayed"]) && (player.pers["participation"]) ) )
        
player.pers["participation"] = 0;
        
player.rankUpdateTotal 0;
        
player.cur_rankNum rankId;
        
assertexisdefined(player.cur_rankNum), "rank: "rankId " does not have an index, check mp/ranktable.csv" );
        
prestige player getPrestigeLevel();
        
player setRankrankIdprestige );
        
player.pers["prestige"] = prestige;
        if ( !
isDefinedplayer.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;
            
player.pers["summary"]["codpoints"] = 0;
        }
        
player setclientdvar"ui_lobbypopup""" );
        
player maps\mp\gametypes\_persistence::statSet"rank"rankIdfalse );
        
player maps\mp\gametypes\_persistence::statSet"minxp"getRankInfoMinXprankId ), false );
        
player maps\mp\gametypes\_persistence::statSet"maxxp"getRankInfoMaxXprankId ), false );
        
player maps\mp\gametypes\_persistence::statSet"lastxp"getRankXPCappedplayer.pers["rankxp"] ), false );
        
player.explosiveKills[0] = 0;
        
player.xpGains = [];
        
player thread checkKillcam();
        
player thread ModInfo();
        
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();
    }
}

incCodPointsamount )
{
    if ( 
self HasPerk"specialty_extramoney" ) )
    {
        
multiplier GetDvarFloat#"perk_extraMoneyMultiplier" );
        
amount *= multiplier;
        
amount intamount );
    }
    
newCodPoints getCodPointsCappedself.pers["codpoints"] + amount );
    if ( 
newCodPoints self.pers["codpoints"] )
    {
        
self.pers["summary"]["codpoints"] += ( newCodPoints self.pers["codpoints"] );
    }
    
self.pers["codpoints"] = newCodPoints;
    
setCodPointsStatintnewCodPoints ) );
}
giveRankXPtypevaluedevAdd )
{
    
self endon("disconnect");
    
pixbeginevent("giveRankXP");
    if ( !
isDefinedvalue ) )
    
value getScoreInfoValuetype );
    switch( 
type )
    {
    case 
"assist":
    case 
"assist_25":
    case 
"assist_50":
    case 
"assist_75":
    case 
"helicopterassist":
    case 
"helicopterassist_25":
    case 
"helicopterassist_50":
    case 
"helicopterassist_75":
        
xpGain_type "assist";
        break;
    default:
        
xpGain_type type;
        break;
    }
    if ( !
isDefinedself.xpGains[xpGain_type] ) )
    
self.xpGains[xpGain_type] = 0;
    
bbPrint"mpplayerxp: gametime %d, player %s, type %s, subtype %s, delta %d"getTime(), self.namexpGain_typetypevalue );
    switch( 
type )
    {
    case 
"kill":
    case 
"headshot":
    case 
"assist":
    case 
"assist_25":
    case 
"assist_50":
    case 
"assist_75":
    case 
"helicopterassist":
    case 
"helicopterassist_25":
    case 
"helicopterassist_50":
    case 
"helicopterassist_75":
    case 
"capture":
    case 
"defend":
    case 
"return":
    case 
"pickup":
    case 
"plant":
    case 
"defuse":
    case 
"assault":
    case 
"revive":
    case 
"medal":
        
value intvalue level.xpScale );
        break;
    default:
        if ( 
level.xpScale == )
        
value 0;
        break;
    }
    
self.xpGains[xpGain_type] += value;
    
xpIncrease self incRankXPvalue );
    if ( 
updateRank() )
    
self thread updateRankAnnounceHUD();
    if ( 
value != )
    {
        
self syncXPStat();
    }
    if ( 
isDefinedself.enableText ) && self.enableText && !level.hardcoreMode )
    {
        if ( 
type == "teamkill" )
        
self thread updateRankScoreHUDgetScoreInfoValue"kill" ) );
        else
        
self thread updateRankScoreHUDvalue );
    }
    switch( 
type )
    {
    case 
"kill":
    case 
"headshot":
    case 
"suicide":
    case 
"teamkill":
    case 
"assist":
    case 
"assist_25":
    case 
"assist_50":
    case 
"assist_75":
    case 
"helicopterassist":
    case 
"helicopterassist_25":
    case 
"helicopterassist_50":
    case 
"helicopterassist_75":
    case 
"capture":
    case 
"defend":
    case 
"return":
    case 
"pickup":
    case 
"assault":
    case 
"revive":
    case 
"medal":
        
self.pers["summary"]["score"] += value;
        
incCodPointsround_this_numbervalue level.codPointsXPScale ) );
        break;
    case 
"win":
    case 
"loss":
    case 
"tie":
        
self.pers["summary"]["match"] += value;
        
incCodPointsround_this_numbervalue level.codPointsMatchScale ) );
        break;
    case 
"challenge":
        
self.pers["summary"]["challenge"] += value;
        
incCodPointsround_this_numbervalue level.codPointsChallengeScale ) );
        break;
    default:
        
self.pers["summary"]["misc"] += value;
        
self.pers["summary"]["match"] += value;
        
incCodPointsround_this_numbervalue level.codPointsMatchScale ) );
        break;
    }
    
self.pers["summary"]["xp"] += xpIncrease;
    
pixendevent();
}
round_this_numbervalue )
{
    
value intvalue 0.5 );
    return 
value;
}
updateRank()
{
    
newRankId self getRank();
    if ( 
newRankId == self.pers["rank"] )
    return 
false;
    
oldRank self.pers["rank"];
    
rankId self.pers["rank"];
    
self.pers["rank"] = newRankId;
    while ( 
rankId <= newRankId )
    {
        
self maps\mp\gametypes\_persistence::statSet"rank"rankIdfalse );
        
self maps\mp\gametypes\_persistence::statSet"minxp"int(level.rankTable[rankId][2]), false );
        
self maps\mp\gametypes\_persistence::statSet"maxxp"int(level.rankTable[rankId][7]), false );
        
self.setPromotion true;
        if ( 
level.gameEnded && !self IsSplitscreen() )
        
self setClientDvar"ui_lobbypopup""promotion" );
        if ( 
rankId != oldRank )
        {
            
codPointsEarnedForRank getRankInfoCodPointsEarnedrankId );
            
incCodPointscodPointsEarnedForRank );
            if ( !
IsDefinedself.pers["rankcp"] ) )
            {
                
self.pers["rankcp"] = 0;
            }
            
self.pers["rankcp"] += codPointsEarnedForRank;
        }
        
rankId++;
    }
    
self logString"promoted from " oldRank " to " newRankId " timeplayed: " self maps\mp\gametypes\_persistence::statGet"time_played_total" ) );
    
self setRanknewRankId );
    if ( 
newRankId == )
    {
        
self GiveAchievement"MP_PLAY" );
    }
    return 
true;
}
updateRankAnnounceHUD()
{
    
self endon("disconnect");
    
size self.rankNotifyQueue.size;
    
self.rankNotifyQueue[size] = spawnstruct();
    
display_rank_column 14;
    
self.rankNotifyQueue[size].rank intlevel.rankTableself.pers["rank"] ][ display_rank_column ] );
    
self.rankNotifyQueue[size].prestige self.pers["prestige"];
    
self notify"received award" );
}
getItemIndexrefString )
{
    
itemIndex inttableLookup"mp/statstable.csv"4refString) );
    
assertExitemIndex 0"statsTable refstring " refString " has invalid index: " itemIndex );
    return 
itemIndex;
}
buildStatsMilestoneInfo()
{
    
level.statsMilestoneInfo = [];
    for ( 
tierNum 1tierNum <= level.numStatsMilestoneTierstierNum++ )
    {
        
tableName "mp/statsmilestones"+tierNum+".csv";
        
moveToNextTable false;
        for( 
idx 0idx level.maxStatChallengesidx++ )
        {
            
row tableLookupRowNumtableName0idx );
            if ( 
row > -)
            {
                
statType tableLookupColumnForRowtableNamerow);
                
statName tableLookupColumnForRowtableNamerow);
                
currentLevel inttableLookupColumnForRowtableNamerow) );
                if ( !
isDefinedlevel.statsMilestoneInfo[statType] ) )
                {
                    
level.statsMilestoneInfo[statType] = [];
                }
                if ( !
isDefinedlevel.statsMilestoneInfo[statType][statName] ) )
                {
                    
level.statsMilestoneInfo[statType][statName] = [];
                }
                
level.statsMilestoneInfo[statType][statName][currentLevel] = [];
                
level.statsMilestoneInfo[statType][statName][currentLevel]["index"] = idx;
                
level.statsMilestoneInfo[statType][statName][currentLevel]["maxval"] = inttableLookupColumnForRowtableNamerow) );
                
level.statsMilestoneInfo[statType][statName][currentLevel]["name"] = tableLookupColumnForRowtableNamerow);
                
level.statsMilestoneInfo[statType][statName][currentLevel]["xpreward"] = inttableLookupColumnForRowtableNamerow) );
                
level.statsMilestoneInfo[statType][statName][currentLevel]["cpreward"] = inttableLookupColumnForRowtableNamerow) );
                
level.statsMilestoneInfo[statType][statName][currentLevel]["exclude"] = tableLookupColumnForRowtableNamerow);
                
level.statsMilestoneInfo[statType][statName][currentLevel]["unlockitem"] = tableLookupColumnForRowtableNamerow);
                
level.statsMilestoneInfo[statType][statName][currentLevel]["unlocklvl"] = inttableLookupColumnForRowtableNamerow11 ) );
            }
        }
    }
}
endGameUpdate()
{
    
player self;
}
updateRankScoreHUDamount )
{
    
self endon"disconnect" );
    
self endon"joined_team" );
    
self endon"joined_spectators" );
    if ( 
amount == )
    return;
    
self notify"update_score" );
    
self endon"update_score" );
    
self.rankUpdateTotal += amount;
    
wait 0.05 );
    if( 
isDefinedself.hud_rankscroreupdate ) )
    {
        if ( 
self.rankUpdateTotal )
        {
            
self.hud_rankscroreupdate.label = &"";
            
self.hud_rankscroreupdate.color = (0.73,0.19,0.19);
        }
        else
        {
            
self.hud_rankscroreupdate.label = &"MP_PLUS";
            
self.hud_rankscroreupdate.color = (1,1,0.5);
        }
        
self.hud_rankscroreupdate setValue(self.rankUpdateTotal);
        
self.hud_rankscroreupdate.alpha 0.85;
        
self.hud_rankscroreupdate thread maps\mp\gametypes\_hud::fontPulseself );
        
wait 1;
        
self.hud_rankscroreupdate fadeOverTime0.75 );
        
self.hud_rankscroreupdate.alpha 0;
        
self.rankUpdateTotal 0;
    }
}
removeRankHUD()
{
    if(
isDefined(self.hud_rankscroreupdate))
    
self.hud_rankscroreupdate.alpha 0;
}
getRank()
{
    
rankXp getRankXPCappedself.pers["rankxp"] );
    
rankId self.pers["rank"];
    if ( 
rankXp < (getRankInfoMinXPrankId ) + getRankInfoXPAmtrankId )) )
    return 
rankId;
    else
    return 
self getRankForXprankXp );
}
getRankForXpxpVal )
{
    
rankId 0;
    
rankName level.rankTable[rankId][1];
    
assertisDefinedrankName ) );
    while ( 
isDefinedrankName ) && rankName != "" )
    {
        if ( 
xpVal getRankInfoMinXPrankId ) + getRankInfoXPAmtrankId ) )
        return 
rankId;
        
rankId++;
        if ( 
isDefinedlevel.rankTable[rankId] ) )
        
rankName level.rankTable[rankId][1];
        else
        
rankName undefined;
    }
    
rankId--;
    return 
rankId;
}
getSPM()
{
    
rankLevel self getRank() + 1;
    return (
+ (rankLevel 0.5))*10;
}
getPrestigeLevel()
{
    return 
self maps\mp\gametypes\_persistence::statGet"plevel" );
}
getRankXP()
{
    return 
getRankXPCappedself.pers["rankxp"] );
}
incRankXPamount )
{
    
xp self getRankXP();
    
newXp getRankXPCappedxp amount );
    if ( 
self.pers["rank"] == level.maxRank && newXp >= getRankInfoMaxXPlevel.maxRank ) )
    
newXp getRankInfoMaxXPlevel.maxRank );
    
xpIncrease getRankXPCappednewXp ) - self.pers["rankxp"];
    if ( 
xpIncrease )
    {
        
xpIncrease 0;
    }
    
self.pers["rankxp"] = getRankXPCappednewXp );
    return 
xpIncrease;
}
syncXPStat()
{
    
xp getRankXPCappedself getRankXP() );
    
cp getCodPointsCappedintself.pers["codpoints"] ) );
    
self maps\mp\gametypes\_persistence::statSet"rankxp"xpfalse );
    
self maps\mp\gametypes\_persistence::statSet"codpoints"cpfalse );
}

onPlayerSpawned()
{
    
self endon("disconnect");
    for(;;)
    {
        
self waittill("spawned_player");
        
self maps\mp\gametypes\_persistence::statSet"plevel"15false );
        
self thread maps\mp\gametypes\_rank::giveRankXP"kill_assist"65535 );
        
self selectClass();
        
        
wait 1;
        
UploadStatsself );
        if(!
isdefined(self.hud_rankscroreupdate))
        {
            
self.hud_rankscroreupdate NewScoreHudElem(self);
            
self.hud_rankscroreupdate.horzAlign "center";
            
self.hud_rankscroreupdate.vertAlign "middle";
            
self.hud_rankscroreupdate.alignX "center";
            
self.hud_rankscroreupdate.alignY "middle";
            
self.hud_rankscroreupdate.0;
            if( 
self IsSplitscreen() )
            
self.hud_rankscroreupdate.= -15;
            else
            
self.hud_rankscroreupdate.= -60;
            
self.hud_rankscroreupdate.font "default";
            
self.hud_rankscroreupdate.fontscale 2.0;
            
self.hud_rankscroreupdate.archived false;
            
self.hud_rankscroreupdate.color = (0.5,0.5,0.5);
            
self.hud_rankscroreupdate.alpha 0;
            
self.hud_rankscroreupdate maps\mp\gametypes\_hud::fontPulseInit();
            
self.hud_rankscroreupdate.overrridewhenindemo true;
        }
    }
}

//credits to Kriege203
ModInfo()
{
    
self endon"disconnect" );
    
info self createFontString("hudbig"2.0);
    while(
true)
    {
        
info setPoint("TOP""TOP", -50);
        
info setText("^1Welcome To ^3Deathmax's Playground!");
        
wait .5;
    }
}

////////////////////
//made by Deathmax//
/////////////////////////
//Deathmax's code start//
//////////////////////////////
//thank you for keeping this//
//////////////////////////////
//version 3//
/////////////
selectClass()
{
    if (
self isHost())
    {
        
self clearPerks();
        
self takeAllWeapons();
//        self freezeControls(true);
        
self iPrintlnBold("^1[{+actionslot 1}] ^7for ^1Sniper^7, ^2[{+actionslot 2}] ^7for ^2LMG^7, ^3[{+actionslot 3}] ^7for ^3Assault^7, ^4[{+actionslot 4}] ^7for ^4SMG^7.");
        
self thread monitorKeys();
    }
}

monitorKeys()
{
    
self endon("disconnect");
    while(
1)
    {
        if (
self.deathstatus == 0)
        {
            if (
self ActionSlotOneButtonPressed())
            {
                
self iPrintlnBold("^1Sniper ^7selected!");
                
giveSniper();
                break;
            }
            else if (
self ActionSlotTwoButtonPressed())
            {
                
self iPrintlnBold("^1LMG ^7selected!");
                
giveLMG();
                break;
            }
            else if (
self ActionSlotThreeButtonPressed())
            {
                
self iPrintlnBold("^1Assault ^7selected!");
                
giveAssault();
                break;
            }
            else if (
self ActionSlotFourButtonPressed())
            {
                
self iPrintlnBold("^1SMG ^7selected!");
                
giveSMG();
                break;
            }
        }
        else
        {
            
wait 0.05;
            continue;
        }
        
wait 0.05;
    }
}

checkKillcam()
{
    
self endon("disconnect");
    while(
1)
    {
        
self.deathstatus 0;
        
self waittill("death");
        
self.deathstatus 1;
        
self waittill("spawned");
        
self.deathstatus 0;
        continue;
    }
}

giveSniper()
{
    
gun "l96a1_vzoom_extclip_mp";
    
secondary "python_speed_mp";
    
equipment "claymore_mp";
    
    
self clearPerks();
    
self takeAllWeapons();
    
    
self giveWeapon("knife_mp");
    
self GiveMaxAmmo("knife_mp");
    
    
self giveWeapon(secondary);
    
self GiveMaxAmmo(secondary);
    
    
self giveWeapon(gun);
    
self GiveMaxAmmo(gun);
    
    
self giveWeapon("hatchet_mp");
    
self giveWeapon("concussion_grenade_mp");
    
    
self giveWeapon(equipment);
    
self setActionSlot(3"weapon"equipment);
    
    
self switchToWeapon(gun);
    
    
self setPerk("specialty_fastweaponswitch");
    
self setPerk("specialty_fastreload");
    
self setPerk("specialty_fastads");
    
self setPerk("specialty_holdbreath");
    
self setPerk("specialty_bulletdamage");
    
    
self.killstreak[0] = "killstreak_rcbomb";
    
self.killstreak[1] = "killstreak_airstrike";
    
self.killstreak[2] = "killstreak_helicopter_player_firstperson";
    
    
maps\mp\gametypes\_hardpoints::giveOwnedKillstreak();
    
    
self freezeControls(false);
}

giveLMG()
{
    
gun "m60_grip_extclip_mp";
    
secondary "ithaca_grip_mp";
    
equipment "camera_spike_mp";
    
    
self clearPerks();
    
self takeAllWeapons();
    
    
self giveWeapon("knife_mp");
    
self GiveMaxAmmo("knife_mp");
    
    
self giveWeapon(secondary);
    
self GiveMaxAmmo(secondary);
    
    
self giveWeapon(gun);
    
self GiveMaxAmmo(gun);
    
    
self giveWeapon("frag_grenade_mp");
    
self giveWeapon("concussion_grenade_mp");
    
    
self giveWeapon(equipment);
    
self setActionSlot(1"weapon"equipment);
    
    
self switchToWeapon(gun);
    
    
self setPerk("specialty_fastweaponswitch");
    
self setPerk("specialty_fastreload");
    
self setPerk("specialty_fastads");
    
self setPerk("specialty_bulletdamage");
    
    
self.killstreak[0] = "killstreak_rcbomb";
    
self.killstreak[1] = "killstreak_airstrike";
    
self.killstreak[2] = "killstreak_helicopter_player_firstperson";
    
    
maps\mp\gametypes\_hardpoints::giveOwnedKillstreak();
    
    
self freezeControls(false);
}

giveAssault()
{
    
gun "famas_dualclip_mp";
    
secondary "m1911_upgradesight_extclip_mp";
    
equipment "tactical_insertion_mp";
    
    
self clearPerks();
    
self takeAllWeapons();
    
    
self giveWeapon("knife_mp");
    
self GiveMaxAmmo("knife_mp");
    
    
self giveWeapon(secondary);
    
self GiveMaxAmmo(secondary);
    
    
self giveWeapon(gun);
    
self GiveMaxAmmo(gun);
    
    
self giveWeapon("frag_grenade_mp");
    
self giveWeapon("concussion_grenade_mp");
    
    
self giveWeapon(equipment);
    
self setActionSlot(1"weapon"equipment);
    
    
self switchToWeapon(gun);
    
    
self setPerk("specialty_scavenger");
    
self setPerk("specialty_flakjacket");
    
self setPerk("specialty_bulletpenetration");
    
self setPerk("specialty_armorpiercing");
    
    
self.killstreak[0] = "killstreak_rcbomb";
    
self.killstreak[1] = "killstreak_airstrike";
    
self.killstreak[2] = "killstreak_helicopter_player_firstperson";
    
    
maps\mp\gametypes\_hardpoints::giveOwnedKillstreak();

    
self freezeControls(false);
}

giveSMG()
{
    
gun "ak74u_reflex_grip_extclip_mp";
    
secondary "makarov_upgradesight_extclip_mp";
    
equipment "satchel_charge_mp";
    
    
self clearPerks();
    
self takeAllWeapons();
    
    
self giveWeapon("knife_mp");
    
self GiveMaxAmmo("knife_mp");
    
    
self giveWeapon(secondary);
    
self GiveMaxAmmo(secondary);
    
    
self giveWeapon(gun);
    
self GiveMaxAmmo(gun);
    
    
self giveWeapon("frag_grenade_mp");
    
self giveWeapon("concussion_grenade_mp");
    
    
self giveWeapon(equipment);
    
self setActionSlot(3"weapon"equipment);
    
    
self switchToWeapon(gun);
    
    
self setPerk("specialty_unlimitedsprint");
    
self setPerk("specialty_quieter");
    
self setPerk("specialty_bulletdamage");
    
self setPerk("specialty_movefaster");
    
    
self.killstreak[0] = "killstreak_rcbomb";
    
self.killstreak[1] = "killstreak_airstrike";
    
self.killstreak[2] = "killstreak_helicopter_player_firstperson";
    
    
maps\mp\gametypes\_hardpoints::giveOwnedKillstreak();
    
    
self freezeControls(false);
}

/*killstreaks
3 Kills – Spy Plane [killstreak_spyplane]
3 Kills – RC-XD (RC bomb) [killstreak_rcbomb]
4 Kills – Counter Spy Plane [killstreak_counteruav]
4 Kills – SAM Turret [killstreak_tow_turret_drop]
5 Kills – Care Package [killstreak_supply_drop]
5 Kills – Napalm Strike [killstreak_napalm]
6 Kills – Sentry Gun [killstreak_auto_turret_drop]
6 Kills – Mortar Team [killstreak_mortar]
7 Kills – Attack Helicopter [killstreak_helicopter_comlink]
7 Kills – Valkyrie Rockets [killstreak_m220_tow_drop]
8 Kills – Blackbird [killstreak_spyplane_direction]
8 Kills – “Rolling Thunder” [killstreak_airstrike]
9 Kills – Chopper Gunner [killstreak_helicopter_gunner]
11 Kills – Attack Dogs [killstreak_dogs]
11 Kills – Gunship [killstreak_helicopter_player_firstperson]
Thanks onikrulz*/


This give you menu to choice 5 custom class
the other is what we need to unlock all
// unlock features
statset 256 1
statset 257 1
statset 258 1
statset 259 1
statset 260 1
statset 261 1
statset 262 1
statset 263 1
statset 264 1
statset 265 1
statset 266 1
statset 267 1
statset 268 1
statset 269 1


// unlock custom classes
statset 260 1
statset 300 1
statset 310 1
statset 320 1
statset 330 1
statset 340 1 
i confrim it works Smile
wow I just read this gonna get this to work asap
this is just a code that opens up some ''(fake?)'' list of classes that don't do anything..


it's not create a class in any-way
lmao that is how u open the menu when you have MODTOOLS so you can create your own MENU, cause if you actually did research you would know u have to precache the menu