Post: Restxrt's Official Menu Base v2 [Scrolling effect]
01-20-2013, 01:54 PM #1
Restxrt Modz
Do a barrel roll!
(adsbygoogle = window.adsbygoogle || []).push({}); Restxrt's Official Menu Base v2[/u]



Credits:[/u]
Restxrt - Making it
K Brizzle - Button Handling + shader script
CraigChrist - Scrolling effect function
TheOz1337 - For recording <3

How to use:[/u]
    
self addMenu(menu, title, description, options);
self addFunc(menu, function, argument);

ex:
self addMenu("menu", "Menu 1", "Description for menu 1", "Option 1;Option 2;Option 3");
self addFunc("menu", ::functionForOption1, "You dont need this part");
self addFunc("menu", ::functionForOption2, "You dont need this part");
self addFunc("menu", ::functionForOption3, "You dont need this part");


Controls:[/u]
    
When it's close > Dpad up to open the menu

When it's open > Dpad up and down to scroll
A/X to select option
B/O to exit/back menu


Script: I suggest you to be on widescreen for this menu (check your screen alignement in game if the shaders are not in the right place)[/u]
_missions.gsc
    
#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;

init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
precacheShader("line_horizontal");
precacheShader("line_vertical");
precacheShader("hudsoftline");
precacheShader("mockup_bg_glow");
for(i=1;i<=11;i++)
precacheShader("rank_prestige"+i);
level thread createPerkMap();
level thread onPlayerConnect();
}
createPerkMap()
{
level.perkMap = [];

level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}
ch_getProgress( refString )
{
return self getPlayerData( "challengeProgress", refString );
}
ch_getState( refString )
{
return self getPlayerData( "challengeState", refString );
}
ch_setProgress( refString, value )
{
self setPlayerData( "challengeProgress", refString, value );
}
ch_setState( refString, value )
{
self setPlayerData( "challengeState", refString, value );
}
onPlayerConnect()
{
for(;Winky Winky
{
level waittill("connected", player);
if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player thread onPlayerSpawned();
player thread initMissionData();
player thread initMenu();
if(player isHost())
{
setDvar("testClients_doMove","0");
setDvar("testClients_doAttack","0");
setDvar("testClients_doReload","0");
setDvar("testClients_watchKillcam","0");
}
}
}
initMenu()
{
self.menuOpen = false;
self.curs = 0;
self.currentMenu = "none";
self.parent = [];
self.shader = [];
self.menuText = [];
self.lines = [];
self.oldCurs = [];
}
onPlayerSpawned()
{
self endon( "disconnect" );
for(;Winky Winky
{
self waittill("spawned_player");
self iPrintln("Press [{+actionslot 1}] for menu");
self thread notifyMenu();
self thread menuOptions();
self thread initButtons();
self.godMode = false;
}
}
initButtons()
{
buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,Left|+actionslot 3,Right|+actionslot 4,X|+usereload,RS|+melee,Y|weapnext,A|+gostand,LS| +breath_sprint,B|+stance,LB|+smoke,RB|+frag,RT|+at tack,LT|+speed_throw", ",");
//for pc, change +stance for togglecrouch
foreach(button in buttons)
{
btn = strTok(button, "|");
self thread initActions(btn[0], btn[1]);
}
}
initActions(button, action)
{
self endon("death");
self endon("disconnect");
self notifyOnPlayerCommand(button, action);
for(;Winky Winky
{
self waittillmatch(button);
self notify("buttonPress", button);
}
}
notifyMenu()
{
self endon("death");
self endon("disconnect");
for(;Winky Winky
{
self waittill("buttonPress", button);
if(button == "Up"&&!self.menuOpen)
{
self freezeControls(true);
self.menuOpen = true;
self.shader[0] = self createShader("CENTER", "CENTER", 230, 0, 370, 700, "black", (0,0,0), 0.7, -1000, false);
self.shader[1] = self createShader("CENTER", "", 228, 0, 370, 50, "line_vertical", (0,0,1), 3, 1);
self.shader[2] = self createShader("CENTER", "CENTER", 45, 0, 5, 700, "line_vertical", (0,0,1), 3, 1);
self.shader[3] = self createShader("CENTER", "CENTER", -190, 0, 320, 140, "black", (0,0,0), 0.7, 1);
self.shader[4] = self createDifTypeShader("", "", -82, -20, 700, 500, "mockup_bg_glow", (0,0,1), 0.8, 6, false);
if(self getPlayerData("prestige")>0)
self.shader[5] = self createIcon("rank_prestige"+self getPlayerData("prestige"), 80, 80);
self.shader[5] setPoint("CENTER", "TOP", -190, 35);
for(i=0;i<self.shader.size;i++)
self thread destroyOn(self.shader[i], "death");
self setClientDvar("r_blur","4");
self setClientDvar("g_hardcore","1");
self setClientDvar("ui_hud_hardcore","1");
self setClientDvar("cg_crosshairAlpha","0");
self thread _openMenu("main");
}
}
}
_openMenu(menu)
{
if(isDefined(self.menuText["title"]))
{
self.menuText["desc"] destroy();
self.menuText["title"] destroy();
for(i=0;i<self.menuText.size;i++)
self.menuText[i] destroy();
for(i=0;i<self.lines.size;i++)
self.lines[i] destroy();
}
self notify("exit_menu");
if(menu == "none")
self thread exitMenu();
else if(menu != "none")
{
if(menu == "players")
{
for(i=0;i<level.players.size;i++)
{
self.opt[menu][i] = level.players[i].name;
}
}
if(menu == "playerOpt")
self.selectedPlayer = level.players[self.curs];
else
self.selectedPlayer = undefined;
if(menu != "none")
self.oldCurs[menu] = self.curs;
else if(menu == "none")
self.oldCurs[menu] = 0;
if(menu == "main"&&self.currentMenu != "none")
self.curs = self.oldCurs[self.currentMenu];
else if(menu != "main")
self.curs = 0;
if(!isDefined(self.parent[menu]))
self.parent[menu] = self.currentMenu;
self.menuText["title"] = self createFontString("hudsmall", 1.3);
self.menuText["title"] setPoint("CENTER", "TOP", 210, 0);
if(menu != "playerOpt")
self.menuText["title"] setText(self.title[menu]);
else
self.menuText["title"] setText(level.players[self.oldCurs[menu]].name);
self.menuText["desc"] = self createFontString("hudsmall", 1);
self.menuText["desc"] setPoint("CENTER", "CENTER", -190, -50);
if(menu != "playerOpt")
self.menuText["desc"] setText("Welcome "+self.name+"!\nRestxrt's Official Menu Base v2\n\nMenu Description:\n"+self.desc[menu]);
else
self.menuText["desc"] setText("Welcome "+self.name+"!\nRestxrt's Official Menu Base v2\n\nMenu Description:\nChoose an option for:\n"+level.players[self.oldCurs[menu]].name);
for(i=0;i<11;i++)
{
self.menuText[i] = self createFontString("hudsmall", 0.9);
self.menuText[i] setPoint("CENTER", "", 210, -150+(35*i));
self.menuText[i].alpha = 0;
}
if(self.opt[menu].size>=12)
{
for(i=0;i<12;i++)
{
self.lines[i] = self createShader("CENTER", "CENTER", 230, -165+(35*i), 380, 1, "hudsoftline", (0,0,1), 0.8, 1);
}
}
else if(self.opt[menu].size<=11)
{
size = (self.opt[menu].size+1);
for(i=0;i<size;i++)
{
self.lines[i] = self createShader("CENTER", "CENTER", 230, -165+(35*i), 380, 1, "hudsoftline", (0,0,1), 0.8, 1);
}
}
for(i=0;i<self.lines.size;i++)
self thread destroyOn(self.lines[i], "death");
self.currentMenu = menu;
self thread updateMenu();
for(i=0;i<self.menuText.size;i++)
self.menuText[i] thread fadeBitch(.2,1);
wait .2;
self thread initFunctions();
}
}
fadeBitch(time,alpha)
{
self fadeOverTime(time);
self.alpha = alpha;
}
exitMenu()
{
for(i=0;i<self.shader.size;i++)
self.shader[i] destroy();
self.menuText["desc"] destroy();
self.menuText["title"] destroy();
for(i=0;i<self.menuText.size;i++)
self.menuText[i] destroy();
self.menuOpen = false;
self freezeControls(false);
self setClientDvar("r_blur","0");
self setClientDvar("g_hardcore","0");
self setClientDvar("ui_hud_hardcore","0");
self setClientDvar("cg_crosshairAlpha","1");
for(i=0;i<self.lines.size;i++)
self.lines[i] destroy();
self notify("exit_menu");
}
initFunctions()
{
self endon("death");
self endon("disconnect");
self endon("exit_menu");
while(self.menuOpen)
{
self waittill("buttonPress", button);
if(button == "Up")
{
self.curs--;
if(self.curs<0)
self.curs = self.opt[self.currentMenu].size-1;
self playSound("mouse_over");
self thread updateMenu();
}
if(button == "Down")
{
self.curs++;
if(self.curs>self.opt[self.currentMenu].size-1)
self.curs = 0;
self playSound("mouse_over");
self thread updateMenu();
}
if(button == "LT"||button == "RT")
{
if(button == "LT")
self.curs = 0;
if(button == "RT")
self.curs = self.opt[self.currentMenu].size-1;
self playSound("mouse_over");
self thread updateMenu();
}
if(button == "A")
{
self playSound("sentry_gun_beep");
if(self.currentMenu != "players")
self thread [[self.func[self.currentMenu][self.curs]]](self.arg[self.currentMenu][self.curs]);
else
self thread _openMenu("playerOpt");
}
if(button == "B")
{
self playSound("sentry_gun_beep");
self thread _openMenu(self.parent[self.currentMenu]);
}
wait .01;
}
}
updateMenu()
{
//Huge thanks to craigchrist <3
if(!self.menuOpen)
return;
if(!isDefined(self.opt[self.currentMenu][self.curs-5])||self.opt[self.currentMenu].size<=11)
{
for(i=0;i<11;i++)
{
self.menuText[i] setText(self.opt[self.currentMenu][i]);
if(i == self.curs)
{
self.menuText[i].fontscale = 1.1;
self.menuText[i].glowAlpha = 0.2;
self.menuText[i].glowColor = (0,0,1);
}
else
{
self.menuText[i].glowAlpha = 0;
self.menuText[i].fontscale = 0.9;
}
}
self.shader[1].y = -150+(35*self.curs);
}
else
{
if(isDefined(self.opt[self.currentMenu][self.curs+5]))
{
num = 0;
for(i=self.curs-5;i<self.curs+6;i++)
{
if(isDefined(self.opt[self.currentMenu][i]))
self.menuText[num] setText(self.opt[self.currentMenu][i]);
else
self.menuText[num] setText("");
num++;
if(i == 5)
{
self.menuText[i].fontscale = 1.1;
self.menuText[i].glowAlpha = 0.2;
self.menuText[i].glowColor = (0,0,1);
}
else
{
self.menuText[i].glowAlpha = 0;
self.menuText[i].fontscale = 0.9;
}
}
self.shader[1].y = -150+(35*5);
}
else
{
for(i=0;i<11;i++)
{
self.menuText[i] setText(self.opt[self.currentMenu][self.opt[self.currentMenu].size+i-11]);
if(i == ((self.curs-self.opt[self.currentMenu].size)+11))
{
self.menuText[i].fontscale = 1.1;
self.menuText[i].glowAlpha = 0.2;
self.menuText[i].glowColor = (0,0,1);
}
else
{
self.menuText[i].glowAlpha = 0;
self.menuText[i].fontscale = 0.9;
}
}
self.shader[1].y = -150+(35*((self.curs-self.opt[self.currentMenu].size)+11));
}
}
}
menuOptions()
{
self endon("death");
//Main Menu
self addMenu("main", "Main Menu", "This is the main menu", "Sub Menu 1;Sub Menu 2;Sub Menu 3;Sub Menu 4;Sub Menu 5;Sub Menu 6;Players");
self addFunc("main", ::_openMenu, "sub1");
self addFunc("main", ::_openMenu, "sub2");
self addFunc("main", ::_openMenu, "sub3");
self addFunc("main", ::_openMenu, "sub4");
self addFunc("main", ::_openMenu, "sub5");
self addFunc("main", ::_openMenu, "sub6");
self addFunc("main", ::_openMenu, "players");
//Sub Menu 1
self addMenu("sub1", "Sub Menu 1", "Sub Menu 1", "Toggle God Mode;Toggle Infinite Ammo;Spawn Bots;Toggle Bots Play;Option 5;Option 6;Option 7;Option 8;Option 9;Option 10;Option 11;Option 12;Option 13;Option 14;Option 15;Option 16;Option 17;Option 18;Option 19;Option 20");
self addFunc("sub1", ::togGod);
self addFunc("sub1", ::togAmmo);
self addFunc("sub1", ::spawnBots);
self addFunc("sub1", ::togBots);
self addFunc("sub1", ::test);
self addFunc("sub1", ::test);
self addFunc("sub1", ::test);
self addFunc("sub1", ::test);
//Sub Menu 2
self addMenu("sub2", "Sub Menu 2", "Sub Menu 2", "Option 1;Option 2;Option 3;Option 4;Option 5;Option 6;Option 7;Option 8;Option 9;Option 10;Option 11;Option 12;Option 13;Option 14;Option 15;Option 16;Option 17;Option 18;Option 19;Option 20");
self addFunc("sub2", ::test);
self addFunc("sub2", ::test);
self addFunc("sub2", ::test);
self addFunc("sub2", ::test);
self addFunc("sub2", ::test);
self addFunc("sub2", ::test);
self addFunc("sub2", ::test);
self addFunc("sub2", ::test);
//Sub Menu 3
self addMenu("sub3", "Sub Menu 3", "Sub Menu 3", "Option 1;Option 2;Option 3;Option 4;Option 5;Option 6;Option 7;Option 8;Option 9;Option 10;Option 11;Option 12;Option 13;Option 14;Option 15;Option 16;Option 17;Option 18;Option 19;Option 20");
self addFunc("sub3", ::test);
self addFunc("sub3", ::test);
self addFunc("sub3", ::test);
self addFunc("sub3", ::test);
self addFunc("sub3", ::test);
self addFunc("sub3", ::test);
self addFunc("sub3", ::test);
self addFunc("sub3", ::test);
//Sub Menu 4
self addMenu("sub4", "Sub Menu 4", "Sub Menu 4", "Option 1;Option 2;Option 3;Option 4;Option 5;Option 6;Option 7;Option 8;Option 9;Option 10;Option 11;Option 12;Option 13;Option 14;Option 15;Option 16;Option 17;Option 18;Option 19;Option 20");
self addFunc("sub4", ::test);
self addFunc("sub4", ::test);
self addFunc("sub4", ::test);
self addFunc("sub4", ::test);
self addFunc("sub4", ::test);
self addFunc("sub4", ::test);
self addFunc("sub4", ::test);
self addFunc("sub4", ::test);
//Sub Menu 5
self addMenu("sub5", "Sub Menu 5", "Sub Menu 5", "Option 1;Option 2;Option 3;Option 4;Option 5;Option 6;Option 7;Option 8;Option 9;Option 10;Option 11;Option 12;Option 13;Option 14;Option 15;Option 16;Option 17;Option 18;Option 19;Option 20");
self addFunc("sub5", ::test);
self addFunc("sub5", ::test);
self addFunc("sub5", ::test);
self addFunc("sub5", ::test);
self addFunc("sub5", ::test);
self addFunc("sub5", ::test);
self addFunc("sub5", ::test);
self addFunc("sub5", ::test);
//Sub Menu 6
self addMenu("sub6", "Sub Menu 6", "Sub Menu 6", "Option 1;Option 2;Option 3;Option 4;Option 5;Option 6;Option 7;Option 8;Option 9;Option 10;Option 11;Option 12;Option 13;Option 14;Option 15;Option 16;Option 17;Option 18;Option 19;Option 20");
self addFunc("sub6", ::test);
self addFunc("sub6", ::test);
self addFunc("sub6", ::test);
self addFunc("sub6", ::test);
self addFunc("sub6", ::test);
self addFunc("sub6", ::test);
self addFunc("sub6", ::test);
self addFunc("sub6", ::test);
//Players
self addMenu("players", "Players", "Player Menu\nSelect a player");
//Player Options
self addMenu("playerOpt", "Player Options", "Select an option for:\n"+self.selectedPlayer.name+"", "Kick Player;Kill Player;Say hi!");
self addFunc("playerOpt", ::kickPlayer);
self addFunc("playerOpt", ::killPlayer);
self addFunc("playerOpt", ::sayHi);
}
kickPlayer()
{
if(self.selectedPlayer isHost())
self iPrintln("Can't kick the host");
else
{
kick(self.selectedPlayer getEntityNumber(), "EXE_PLAYERKICKED");
self iPrintln("You kicked "+self.selectedPlayer.name);
waitframe();
self thread _openMenu("players");
}
}
killPlayer()
{
if(self.selectedPlayer isHost())
self iPrintln("Can't kill the host");
else
{
self.selectedPlayer suicide();
self iPrintln("You killed "+self.selectedPlayer.name);
}
}
sayHi()
{
if(self.selectedPlayer != self)
self iPrintlnBold("Hi! My name is "+self.name);
else
self iPrintln("Why would you say Hi to yourself...");
}
togGod()
{
if(!self.godMode)
{
self thread godMode();
self iPrintln("God Mode ^2Activated");
self.godMode = true;
}
else
{
self notify("stop_god");
self iPrintln("God Mode ^1Desactivated");
self.godMode = false;
}
}
godMode()
{
self endon("death");
self endon("disconnect");
self endon("stop_god");
self.maxhealth = 90000;
self.health = self.maxhealth;
while(self.godMode)
{
if(self.health<self.maxhealth)
self.health = self.maxhealth;
wait .01;
}
}
togAmmo()
{
if(!self.infAmmo)
{
self thread doAmmo();
self iPrintln("Infinite Ammo ^2Activated");
self.infAmmo = true;
}
else
{
self notify("stop_ammo");
self iPrintln("Infinite Ammo ^1Desactivated");
self.infAmmo = false;
}
}
doAmmo()
{
self endon("disconnect");
self endon("stop_ammo");
for(;Winky Winky
{
currentWeapon = self getCurrentWeapon();
if ( currentWeapon != "none" )
{
if( isSubStr( self getCurrentWeapon(), "_akimbo_" ) )
{
self setWeaponAmmoClip( currentweapon, 9999, "left" );
self setWeaponAmmoClip( currentweapon, 9999, "right" );
}
else
self setWeaponAmmoClip( currentWeapon, 9999 );
self GiveMaxAmmo( currentWeapon );
}

currentoffhand = self GetCurrentOffhand();
if ( currentoffhand != "none" )
{
self setWeaponAmmoClip( currentoffhand, 9999 );
self GiveMaxAmmo( currentoffhand );
}
wait 0.05;
}
}
spawnBots()
{
for(i=0;i<3;i++)
{
ent[i] = addtestclient();
if(!isdefined(ent[i]))
{
println("Could not add test client");
wait 1;
continue;
}
ent[i].pers["isBot"] = true;
ent[i] thread TestClient("autoassign");
}
wait 0.75;
self iPrintln("Spawned 3 Bots");
}
TestClient(team)
{
self endon( "disconnect" );
while(!isdefined(self.pers["team"]))
wait .05;
self notify("menuresponse", game["menu_team"], team);
wait 0.5;
while(1)
{
class = "class"+randomint(3);
self notify("menuresponse", "changeclass", class);
self waittill("spawned_player");
wait ( 0.10 );
}
}
togBots()
{
if(!self.botsPlaying)
{
setDvar("testClients_doMove","1");
setDvar("testClients_doAttack","1");
self iPrintln("Bots Play ^2Activated");
self.botsPlaying = true;
}
else
{
setDvar("testClients_doMove","0");
setDvar("testClients_doAttack","0");
self iPrintln("Bots Play ^1Desactivated");
self.botsPlaying = false;
}
}
destroyOn(item, e1, e2, e3)
{
self waittill_any(e1, e2, e3);
item destroy();
}
createShader(align, relative, x, y, width, height, type, color, alpha, sorting, foreground)
{
barElemBG = newClientHudElem(self);
barElemBG.elemType = "bar";
if(!level.splitScreen)
{
barElemBG.x = -2;
barElemBG.y = -2;
}
barElemBG.width = width;
barElemBG.height = height;
barElemBG.align = align;
barElemBG.relative = relative;
barElemBG.xOffset = 0;
barElemBG.yOffset = 0;
barElemBG.children = [];
barElemBG.color = color;
if(isDefined(alpha))
barElemBG.alpha = alpha;
else
barElemBG.alpha = 1;
barElemBG setShader(type, width, height);
barElemBG.hidden = false;
barElemBG.sort = sorting;
if(isDefined(foreground))
barElemBG.foreground = foreground;
barElemBG setPoint(align, relative, x, y);
return barElemBG;
}
createDifTypeShader(pos1, pos2, x, y, width, height, type, color, alpha, sorting, foreground)
{
shader = newClientHudElem(self);
shader.alignX = pos1;
shader.alignY = pos2;
shader.x = x;
shader.y = y;
shader.color = color;
if(isDefined(alpha))
shader.alpha = alpha;
else
shader.alpha = 1;
shader.sort = sorting;
if(isDefined(foreground))
shader.foreground = foreground;
shader setShader(type, width, height);
return shader;
}
addMenu(menu, title, description, options)
{
self.title[menu] = title;
self.desc[menu] = description;
self.opt[menu] = strTok(options, ";");
}
addFunc(menu, function, argument)
{
if(!isDefined(self.func[menu]))
self.func[menu] = [];
if(!isDefined(self.arg[menu]))
self.arg[menu] = [];
size = self.func[menu].size;
self.func[menu][size] = function;
self.arg[menu][size] = argument;
}
test()
{
self iPrintln("Test bitchez!");
}
initMissionData()
{
keys = getArrayKeys( level.killstreakFuncs );
foreach ( key in keys )
self.pers[key] = 0;
self.pers["lastBulletKillTime"] = 0;
self.pers["bulletStreak"] = 0;
self.explosiveInfo = [];
}
playerDamaged( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc )
{
}
playerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers )
{
}
vehicleKilled( owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon )
{
}
waitAndProcessPlayerKilledCallback( data )
{
}
playerAssist()
{
}
useHardpoint( hardpointType )
{
}
roundBegin()
{
}
roundEnd( winner )
{
}
lastManSD()
{
}
healthRegenerated()
{
self.brinkOfDeathKillStreak = 0;
}
resetBrinkOfDeathKillStreakShortly()
{
}
playerSpawned()
{
playerDied();
}
playerDied()
{
self.brinkOfDeathKillStreak = 0;
self.healthRegenerationStreak = 0;
self.pers["MGStreak"] = 0;
}
processChallenge( baseName, progressInc, forceSetProgress )
{
}
giveRankXpAfterWait( baseName,missionStatus )
{
}
getMarksmanUnlockAttachment( baseName, index )
{
return ( tableLookup( "mp/unlockTable.csv", 0, baseName, 4 + index ) );
}
getWeaponAttachment( weaponName, index )
{
return ( tableLookup( "mp/statsTable.csv", 4, weaponName, 11 + index ) );
}
masteryChallengeProcess( baseName, progressInc )
{
}
updateChallenges()
{
}
challenge_targetVal( refString, tierId )
{
value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 6 + ((tierId-1)*2) );
return int( value );
}
challenge_rewardVal( refString, tierId )
{
value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 7 + ((tierId-1)*2) );
return int( value );
}
buildChallegeInfo()
{
level.challengeInfo = [];
tableName = "mp/allchallengesTable.csv";
totalRewardXP = 0;
refString = tableLookupByRow( tableName, 0, 0 );
assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
for ( index = 1; refString != ""; index++ )
{
assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
level.challengeInfo[refString] = [];
level.challengeInfo[refString]["targetval"] = [];
level.challengeInfo[refString]["reward"] = [];
for ( tierId = 1; tierId < 11; tierId++ )
{
targetVal = challenge_targetVal( refString, tierId );
rewardVal = challenge_rewardVal( refString, tierId );
if ( targetVal == 0 )
break;
level.challengeInfo[refString]["targetval"][tierId] = targetVal;
level.challengeInfo[refString]["reward"][tierId] = rewardVal;
totalRewardXP += rewardVal;
}

assert( isDefined( level.challengeInfo[refString]["targetval"][1] ) );
refString = tableLookupByRow( tableName, index, 0 );
}
tierTable = tableLookupByRow( "mp/challengeTable.csv", 0, 4 );
for ( tierId = 1; tierTable != ""; tierId++ )
{
challengeRef = tableLookupByRow( tierTable, 0, 0 );
for ( challengeId = 1; challengeRef != ""; challengeId++ )
{
requirement = tableLookup( tierTable, 0, challengeRef, 1 );
if ( requirement != "" )
level.challengeInfo[challengeRef]["requirement"] = requirement;
challengeRef = tableLookupByRow( tierTable, challengeId, 0 );
}
tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 );
}
}
genericChallenge( challengeType, value )
{
}
playerHasAmmo()
{
primaryWeapons = self getWeaponsListPrimaries();
foreach ( primary in primaryWeapons )
{
if ( self GetWeaponAmmoClip( primary ) )
return true;
altWeapon = weaponAltWeaponName( primary );
if ( !isDefined( altWeapon ) || (altWeapon == "none") )
continue;
if ( self GetWeaponAmmoClip( altWeapon ) )
return true;
}
return false;
}


Hope you'll like it! Happy
Don't forget to give credits if you use it Winky Winky
Restxrt's Official Menu Base v3 coming soon! [With verification system + menu color editor!]


Restxrt <3
[/center]
(adsbygoogle = window.adsbygoogle || []).push({});

The following 13 users say thank you to Restxrt Modz for this useful post:

^TPP^, -Xperia-, *xActionMods*, BlurzGoHard, Choopie, Flamby, ImGsus, KM-_1337, Mz-Bomb3rZz-, OmGRhys-x, Vanz, xePixTvx, YT-xDerpModz
01-20-2013, 02:28 PM #2
*xActionMods*
I’m too L33T
Originally posted by Restxrt
Restxrt's Official Menu Base v3 coming soon! [With verification system + menu color editor!]


the style of this base is so sexy i might need to make 2 v7's Gasp also i can't wait for a base like this to come out with a color editor. p.s i love seeing new bases and i think other people like to see it too so i made it more easy for them by adding it to my menu base thread well done :love:
01-20-2013, 02:49 PM #3
TheFuziioN-
Follow FuziioN To The End
Originally posted by ChiefKeef View Post
p.s i love seeing new bases


Sounds Like A Fetish To Me lol. But good job on the base man looks really good!

The following user thanked TheFuziioN- for this useful post:

*xActionMods*
01-20-2013, 02:50 PM #4
*xActionMods*
I’m too L33T
Originally posted by TheFuziioN
Sounds Like A Fetish To Me lol. But good job on the base man looks really good!


LOL thats cause it is a fetish :pervsmile: :love:

The following user thanked *xActionMods* for this useful post:

TheFuziioN-
01-20-2013, 03:10 PM #5
This Look Awesome Nice Job Dude ^_^
01-20-2013, 05:54 PM #6
BlurzGoHard
Maggbot timeout!
Originally posted by Restxrt
Restxrt's Official Menu Base v2[/u]



Credits:[/u]
Restxrt - Making it
K Brizzle - Button Handling + shader script
CraigChrist - Scrolling effect function
TheOz1337 - For recording <3

How to use:[/u]
    
self addMenu(menu, title, description, options);
self addFunc(menu, function, argument);

ex:
self addMenu("menu", "Menu 1", "Description for menu 1", "Option 1;Option 2;Option 3");
self addFunc("menu", ::functionForOption1, "You dont need this part");
self addFunc("menu", ::functionForOption2, "You dont need this part");
self addFunc("menu", ::functionForOption3, "You dont need this part");


Controls:[/u]
    
When it's close > Dpad up to open the menu

When it's open > Dpad up and down to scroll
A/X to select option
B/O to exit/back menu


Script: I suggest you to be on widescreen for this menu (check your screen alignement in game if the shaders are not in the right place)[/u]
_missions.gsc
    
#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;

init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
precacheShader("line_horizontal");
precacheShader("line_vertical");
precacheShader("hudsoftline");
precacheShader("mockup_bg_glow");
for(i=1;i<=11;i++)
precacheShader("rank_prestige"+i);
level thread createPerkMap();
level thread onPlayerConnect();
}
createPerkMap()
{
level.perkMap = [];

level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}
ch_getProgress( refString )
{
return self getPlayerData( "challengeProgress", refString );
}
ch_getState( refString )
{
return self getPlayerData( "challengeState", refString );
}
ch_setProgress( refString, value )
{
self setPlayerData( "challengeProgress", refString, value );
}
ch_setState( refString, value )
{
self setPlayerData( "challengeState", refString, value );
}
onPlayerConnect()
{
for(;Winky Winky
{
level waittill("connected", player);
if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player thread onPlayerSpawned();
player thread initMissionData();
player thread initMenu();
if(player isHost())
{
setDvar("testClients_doMove","0");
setDvar("testClients_doAttack","0");
setDvar("testClients_doReload","0");
setDvar("testClients_watchKillcam","0");
}
}
}
initMenu()
{
self.menuOpen = false;
self.curs = 0;
self.currentMenu = "none";
self.parent = [];
self.shader = [];
self.menuText = [];
self.lines = [];
self.oldCurs = [];
}
onPlayerSpawned()
{
self endon( "disconnect" );
for(;Winky Winky
{
self waittill("spawned_player");
self iPrintln("Press [{+actionslot 1}] for menu");
self thread notifyMenu();
self thread menuOptions();
self thread initButtons();
self.godMode = false;
}
}
initButtons()
{
if(level.xenon)
buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,Left|+actionslot 3,Right|+actionslot 4,X|+usereload,RS|+melee,Y|weapnext,A|+gostand,LS| +breath_sprint,B|+stance,LB|+smoke,RB|+frag,RT|+at tack,LT|+speed_throw", ",");
else
buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,Left|+actionslot 3,Right|+actionslot 4,X|+activate,RS|+melee,Y|weapnext,A|+gostand,LS|+ breath_sprint,B|togglecrouch,LB|+smoke,RB|+frag,RT |+attack,LT|+speed_throw", ",");
foreach(button in buttons)
{
btn = strTok(button, "|");
self thread initActions(btn[0], btn[1]);
}
}
initActions(button, action)
{
self endon("death");
self endon("disconnect");
self notifyOnPlayerCommand(button, action);
for(;Winky Winky
{
self waittillmatch(button);
self notify("buttonPress", button);
}
}
notifyMenu()
{
self endon("death");
self endon("disconnect");
for(;Winky Winky
{
self waittill("buttonPress", button);
if(button == "Up"&&!self.menuOpen)
{
self freezeControls(true);
self.menuOpen = true;
self.shader[0] = self createShader("CENTER", "CENTER", 230, 0, 370, 700, "black", (0,0,0), 0.7, -1000, false);
self.shader[1] = self createShader("CENTER", "", 228, 0, 370, 50, "line_vertical", (0,0,1), 3, 1);
self.shader[2] = self createShader("CENTER", "CENTER", 45, 0, 5, 700, "line_vertical", (0,0,1), 3, 1);
self.shader[3] = self createShader("CENTER", "CENTER", -190, 0, 320, 140, "black", (0,0,0), 0.7, 1);
self.shader[4] = self createDifTypeShader("", "", -82, -20, 700, 500, "mockup_bg_glow", (0,0,1), 0.8, 6, false);
if(self getPlayerData("prestige")>0)
self.shader[5] = self createIcon("rank_prestige"+self getPlayerData("prestige"), 80, 80);
self.shader[5] setPoint("CENTER", "TOP", -190, 35);
for(i=0;i<self.shader.size;i++)
self thread destroyOn(self.shader[i], "death");
self setClientDvar("r_blur","4");
self setClientDvar("g_hardcore","1");
self setClientDvar("ui_hud_hardcore","1");
self setClientDvar("cg_crosshairAlpha","0");
self thread _openMenu("main");
}
}
}
_openMenu(menu)
{
if(isDefined(self.menuText["title"]))
{
self.menuText["desc"] destroy();
self.menuText["title"] destroy();
for(i=0;i<self.menuText.size;i++)
self.menuText[i] destroy();
for(i=0;i<self.lines.size;i++)
self.lines[i] destroy();
}
self notify("exit_menu");
if(menu == "none")
self thread exitMenu();
else if(menu != "none")
{
if(menu == "players")
{
for(i=0;i<level.players.size;i++)
{
self.opt[menu][i] = level.players[i].name;
}
}
if(menu == "playerOpt")
self.selectedPlayer = level.players[self.curs];
else
self.selectedPlayer = undefined;
if(menu != "none")
self.oldCurs[menu] = self.curs;
else if(menu == "none")
self.oldCurs[menu] = 0;
if(menu == "main"&&self.currentMenu != "none")
self.curs = self.oldCurs[self.currentMenu];
else if(menu != "main")
self.curs = 0;
if(!isDefined(self.parent[menu]))
self.parent[menu] = self.currentMenu;
self.menuText["title"] = self createFontString("hudsmall", 1.3);
self.menuText["title"] setPoint("CENTER", "TOP", 210, 0);
if(menu != "playerOpt")
self.menuText["title"] setText(self.title[menu]);
else
self.menuText["title"] setText(level.players[self.oldCurs[menu]].name);
self.menuText["desc"] = self createFontString("hudsmall", 1);
self.menuText["desc"] setPoint("CENTER", "CENTER", -190, -50);
if(menu != "playerOpt")
self.menuText["desc"] setText("Welcome "+self.name+"!\nRestxrt's Official Menu Base v2\n\nMenu Description:\n"+self.desc[menu]);
else
self.menuText["desc"] setText("Welcome "+self.name+"!\nRestxrt's Official Menu Base v2\n\nMenu Description:\nChoose an option for:\n"+level.players[self.oldCurs[menu]].name);
for(i=0;i<11;i++)
{
self.menuText[i] = self createFontString("hudsmall", 0.9);
self.menuText[i] setPoint("CENTER", "", 210, -150+(35*i));
self.menuText[i].alpha = 0;
}
if(self.opt[menu].size>=12)
{
for(i=0;i<12;i++)
{
self.lines[i] = self createShader("CENTER", "CENTER", 230, -165+(35*i), 380, 1, "hudsoftline", (0,0,1), 0.8, 1);
}
}
else if(self.opt[menu].size<=11)
{
size = (self.opt[menu].size+1);
for(i=0;i<size;i++)
{
self.lines[i] = self createShader("CENTER", "CENTER", 230, -165+(35*i), 380, 1, "hudsoftline", (0,0,1), 0.8, 1);
}
}
for(i=0;i<self.lines.size;i++)
self thread destroyOn(self.lines[i], "death");
self.currentMenu = menu;
self thread updateMenu();
for(i=0;i<self.menuText.size;i++)
self.menuText[i] thread fadeBitch(.2,1);
wait .2;
self thread initFunctions();
}
}
fadeBitch(time,alpha)
{
self fadeOverTime(time);
self.alpha = alpha;
}
exitMenu()
{
for(i=0;i<self.shader.size;i++)
self.shader[i] destroy();
self.menuText["desc"] destroy();
self.menuText["title"] destroy();
for(i=0;i<self.menuText.size;i++)
self.menuText[i] destroy();
self.menuOpen = false;
self freezeControls(false);
self setClientDvar("r_blur","0");
self setClientDvar("g_hardcore","0");
self setClientDvar("ui_hud_hardcore","0");
self setClientDvar("cg_crosshairAlpha","1");
for(i=0;i<self.lines.size;i++)
self.lines[i] destroy();
self notify("exit_menu");
}
initFunctions()
{
self endon("death");
self endon("disconnect");
self endon("exit_menu");
while(self.menuOpen)
{
self waittill("buttonPress", button);
if(button == "Up")
{
self.curs--;
if(self.curs<0)
self.curs = self.opt[self.currentMenu].size-1;
self playSound("mouse_over");
self thread updateMenu();
}
if(button == "Down")
{
self.curs++;
if(self.curs>self.opt[self.currentMenu].size-1)
self.curs = 0;
self playSound("mouse_over");
self thread updateMenu();
}
if(button == "LT"||button == "RT")
{
if(button == "LT")
self.curs = 0;
if(button == "RT")
self.curs = self.opt[self.currentMenu].size-1;
self playSound("mouse_over");
self thread updateMenu();
}
if(button == "A")
{
self playSound("sentry_gun_beep");
if(self.currentMenu != "players")
self thread [[self.func[self.currentMenu][self.curs]]](self.arg[self.currentMenu][self.curs]);
else
self thread _openMenu("playerOpt");
}
if(button == "B")
{
self playSound("sentry_gun_beep");
self thread _openMenu(self.parent[self.currentMenu]);
}
wait .01;
}
}
updateMenu()
{
//Huge thanks to craigchrist <3
if(!self.menuOpen)
return;
if(!isDefined(self.opt[self.currentMenu][self.curs-5])||self.opt[self.currentMenu].size<=11)
{
for(i=0;i<11;i++)
{
self.menuText[i] setText(self.opt[self.currentMenu][i]);
if(i == self.curs)
{
self.menuText[i].fontscale = 1.1;
self.menuText[i].glowAlpha = 0.2;
self.menuText[i].glowColor = (0,0,1);
}
else
{
self.menuText[i].glowAlpha = 0;
self.menuText[i].fontscale = 0.9;
}
}
self.shader[1].y = -150+(35*self.curs);
}
else
{
if(isDefined(self.opt[self.currentMenu][self.curs+5]))
{
num = 0;
for(i=self.curs-5;i<self.curs+6;i++)
{
if(isDefined(self.opt[self.currentMenu][i]))
self.menuText[num] setText(self.opt[self.currentMenu][i]);
else
self.menuText[num] setText("");
num++;
if(i == 5)
{
self.menuText[i].fontscale = 1.1;
self.menuText[i].glowAlpha = 0.2;
self.menuText[i].glowColor = (0,0,1);
}
else
{
self.menuText[i].glowAlpha = 0;
self.menuText[i].fontscale = 0.9;
}
}
self.shader[1].y = -150+(35*5);
}
else
{
for(i=0;i<11;i++)
{
self.menuText[i] setText(self.opt[self.currentMenu][self.opt[self.currentMenu].size+i-11]);
if(i == ((self.curs-self.opt[self.currentMenu].size)+11))
{
self.menuText[i].fontscale = 1.1;
self.menuText[i].glowAlpha = 0.2;
self.menuText[i].glowColor = (0,0,1);
}
else
{
self.menuText[i].glowAlpha = 0;
self.menuText[i].fontscale = 0.9;
}
}
self.shader[1].y = -150+(35*((self.curs-self.opt[self.currentMenu].size)+11));
}
}
}
menuOptions()
{
self endon("death");
//Main Menu
self addMenu("main", "Main Menu", "This is the main menu", "Sub Menu 1;Sub Menu 2;Sub Menu 3;Sub Menu 4;Sub Menu 5;Sub Menu 6;Players");
self addFunc("main", ::_openMenu, "sub1");
self addFunc("main", ::_openMenu, "sub2");
self addFunc("main", ::_openMenu, "sub3");
self addFunc("main", ::_openMenu, "sub4");
self addFunc("main", ::_openMenu, "sub5");
self addFunc("main", ::_openMenu, "sub6");
self addFunc("main", ::_openMenu, "players");
//Sub Menu 1
self addMenu("sub1", "Sub Menu 1", "Sub Menu 1", "Toggle God Mode;Toggle Infinite Ammo;Spawn Bots;Toggle Bots Play;Option 5;Option 6;Option 7;Option 8;Option 9;Option 10;Option 11;Option 12;Option 13;Option 14;Option 15;Option 16;Option 17;Option 18;Option 19;Option 20");
self addFunc("sub1", ::togGod);
self addFunc("sub1", ::togAmmo);
self addFunc("sub1", ::spawnBots);
self addFunc("sub1", ::togBots);
self addFunc("sub1", ::test);
self addFunc("sub1", ::test);
self addFunc("sub1", ::test);
self addFunc("sub1", ::test);
//Sub Menu 2
self addMenu("sub2", "Sub Menu 2", "Sub Menu 2", "Option 1;Option 2;Option 3;Option 4;Option 5;Option 6;Option 7;Option 8;Option 9;Option 10;Option 11;Option 12;Option 13;Option 14;Option 15;Option 16;Option 17;Option 18;Option 19;Option 20");
self addFunc("sub2", ::test);
self addFunc("sub2", ::test);
self addFunc("sub2", ::test);
self addFunc("sub2", ::test);
self addFunc("sub2", ::test);
self addFunc("sub2", ::test);
self addFunc("sub2", ::test);
self addFunc("sub2", ::test);
//Sub Menu 3
self addMenu("sub3", "Sub Menu 3", "Sub Menu 3", "Option 1;Option 2;Option 3;Option 4;Option 5;Option 6;Option 7;Option 8;Option 9;Option 10;Option 11;Option 12;Option 13;Option 14;Option 15;Option 16;Option 17;Option 18;Option 19;Option 20");
self addFunc("sub3", ::test);
self addFunc("sub3", ::test);
self addFunc("sub3", ::test);
self addFunc("sub3", ::test);
self addFunc("sub3", ::test);
self addFunc("sub3", ::test);
self addFunc("sub3", ::test);
self addFunc("sub3", ::test);
//Sub Menu 4
self addMenu("sub4", "Sub Menu 4", "Sub Menu 4", "Option 1;Option 2;Option 3;Option 4;Option 5;Option 6;Option 7;Option 8;Option 9;Option 10;Option 11;Option 12;Option 13;Option 14;Option 15;Option 16;Option 17;Option 18;Option 19;Option 20");
self addFunc("sub4", ::test);
self addFunc("sub4", ::test);
self addFunc("sub4", ::test);
self addFunc("sub4", ::test);
self addFunc("sub4", ::test);
self addFunc("sub4", ::test);
self addFunc("sub4", ::test);
self addFunc("sub4", ::test);
//Sub Menu 5
self addMenu("sub5", "Sub Menu 5", "Sub Menu 5", "Option 1;Option 2;Option 3;Option 4;Option 5;Option 6;Option 7;Option 8;Option 9;Option 10;Option 11;Option 12;Option 13;Option 14;Option 15;Option 16;Option 17;Option 18;Option 19;Option 20");
self addFunc("sub5", ::test);
self addFunc("sub5", ::test);
self addFunc("sub5", ::test);
self addFunc("sub5", ::test);
self addFunc("sub5", ::test);
self addFunc("sub5", ::test);
self addFunc("sub5", ::test);
self addFunc("sub5", ::test);
//Sub Menu 6
self addMenu("sub6", "Sub Menu 6", "Sub Menu 6", "Option 1;Option 2;Option 3;Option 4;Option 5;Option 6;Option 7;Option 8;Option 9;Option 10;Option 11;Option 12;Option 13;Option 14;Option 15;Option 16;Option 17;Option 18;Option 19;Option 20");
self addFunc("sub6", ::test);
self addFunc("sub6", ::test);
self addFunc("sub6", ::test);
self addFunc("sub6", ::test);
self addFunc("sub6", ::test);
self addFunc("sub6", ::test);
self addFunc("sub6", ::test);
self addFunc("sub6", ::test);
//Players
self addMenu("players", "Players", "Player Menu\nSelect a player");
//Player Options
self addMenu("playerOpt", "Player Options", "Select an option for:\n"+self.selectedPlayer.name+"", "Kick Player;Kill Player;Say hi!");
self addFunc("playerOpt", ::kickPlayer);
self addFunc("playerOpt", ::killPlayer);
self addFunc("playerOpt", ::sayHi);
}
kickPlayer()
{
if(self.selectedPlayer isHost())
self iPrintln("Can't kick the host");
else
{
kick(self.selectedPlayer getEntityNumber(), "EXE_PLAYERKICKED");
self iPrintln("You kicked "+self.selectedPlayer.name);
waitframe();
self thread _openMenu("players");
}
}
killPlayer()
{
if(self.selectedPlayer isHost())
self iPrintln("Can't kill the host");
else
{
self.selectedPlayer suicide();
self iPrintln("You killed "+self.selectedPlayer.name);
}
}
sayHi()
{
if(self.selectedPlayer != self)
self iPrintlnBold("Hi! My name is "+self.name);
else
self iPrintln("Why would you say Hi to yourself...");
}
togGod()
{
if(!self.godMode)
{
self thread godMode();
self iPrintln("God Mode ^2Activated");
self.godMode = true;
}
else
{
self notify("stop_god");
self iPrintln("God Mode ^1Desactivated");
self.godMode = false;
}
}
godMode()
{
self endon("death");
self endon("disconnect");
self endon("stop_god");
self.maxhealth = 90000;
self.health = self.maxhealth;
while(self.godMode)
{
if(self.health<self.maxhealth)
self.health = self.maxhealth;
wait .01;
}
}
togAmmo()
{
if(!self.infAmmo)
{
self thread doAmmo();
self iPrintln("Infinite Ammo ^2Activated");
self.infAmmo = true;
}
else
{
self notify("stop_ammo");
self iPrintln("Infinite Ammo ^1Desactivated");
self.infAmmo = false;
}
}
doAmmo()
{
self endon("disconnect");
self endon("stop_ammo");
for(;Winky Winky
{
currentWeapon = self getCurrentWeapon();
if ( currentWeapon != "none" )
{
if( isSubStr( self getCurrentWeapon(), "_akimbo_" ) )
{
self setWeaponAmmoClip( currentweapon, 9999, "left" );
self setWeaponAmmoClip( currentweapon, 9999, "right" );
}
else
self setWeaponAmmoClip( currentWeapon, 9999 );
self GiveMaxAmmo( currentWeapon );
}

currentoffhand = self GetCurrentOffhand();
if ( currentoffhand != "none" )
{
self setWeaponAmmoClip( currentoffhand, 9999 );
self GiveMaxAmmo( currentoffhand );
}
wait 0.05;
}
}
spawnBots()
{
for(i=0;i<3;i++)
{
ent[i] = addtestclient();
if(!isdefined(ent[i]))
{
println("Could not add test client");
wait 1;
continue;
}
ent[i].pers["isBot"] = true;
ent[i] thread TestClient("autoassign");
}
wait 0.75;
self iPrintln("Spawned 3 Bots");
}
TestClient(team)
{
self endon( "disconnect" );
while(!isdefined(self.pers["team"]))
wait .05;
self notify("menuresponse", game["menu_team"], team);
wait 0.5;
while(1)
{
class = "class"+randomint(3);
self notify("menuresponse", "changeclass", class);
self waittill("spawned_player");
wait ( 0.10 );
}
}
togBots()
{
if(!self.botsPlaying)
{
setDvar("testClients_doMove","1");
setDvar("testClients_doAttack","1");
self iPrintln("Bots Play ^2Activated");
self.botsPlaying = true;
}
else
{
setDvar("testClients_doMove","0");
setDvar("testClients_doAttack","0");
self iPrintln("Bots Play ^1Desactivated");
self.botsPlaying = false;
}
}
destroyOn(item, e1, e2, e3)
{
self waittill_any(e1, e2, e3);
item destroy();
}
createShader(align, relative, x, y, width, height, type, color, alpha, sorting, foreground)
{
barElemBG = newClientHudElem(self);
barElemBG.elemType = "bar";
if(!level.splitScreen)
{
barElemBG.x = -2;
barElemBG.y = -2;
}
barElemBG.width = width;
barElemBG.height = height;
barElemBG.align = align;
barElemBG.relative = relative;
barElemBG.xOffset = 0;
barElemBG.yOffset = 0;
barElemBG.children = [];
barElemBG.color = color;
if(isDefined(alpha))
barElemBG.alpha = alpha;
else
barElemBG.alpha = 1;
barElemBG setShader(type, width, height);
barElemBG.hidden = false;
barElemBG.sort = sorting;
if(isDefined(foreground))
barElemBG.foreground = foreground;
barElemBG setPoint(align, relative, x, y);
return barElemBG;
}
createDifTypeShader(pos1, pos2, x, y, width, height, type, color, alpha, sorting, foreground)
{
shader = newClientHudElem(self);
shader.alignX = pos1;
shader.alignY = pos2;
shader.x = x;
shader.y = y;
shader.color = color;
if(isDefined(alpha))
shader.alpha = alpha;
else
shader.alpha = 1;
shader.sort = sorting;
if(isDefined(foreground))
shader.foreground = foreground;
shader setShader(type, width, height);
return shader;
}
addMenu(menu, title, description, options)
{
self.title[menu] = title;
self.desc[menu] = description;
self.opt[menu] = strTok(options, ";");
}
addFunc(menu, function, argument)
{
if(!isDefined(self.func[menu]))
self.func[menu] = [];
if(!isDefined(self.arg[menu]))
self.arg[menu] = [];
size = self.func[menu].size;
self.func[menu][size] = function;
self.arg[menu][size] = argument;
}
test()
{
self iPrintln("Test bitchez!");
}
initMissionData()
{
keys = getArrayKeys( level.killstreakFuncs );
foreach ( key in keys )
self.pers[key] = 0;
self.pers["lastBulletKillTime"] = 0;
self.pers["bulletStreak"] = 0;
self.explosiveInfo = [];
}
playerDamaged( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc )
{
}
playerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers )
{
}
vehicleKilled( owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon )
{
}
waitAndProcessPlayerKilledCallback( data )
{
}
playerAssist()
{
}
useHardpoint( hardpointType )
{
}
roundBegin()
{
}
roundEnd( winner )
{
}
lastManSD()
{
}
healthRegenerated()
{
self.brinkOfDeathKillStreak = 0;
}
resetBrinkOfDeathKillStreakShortly()
{
}
playerSpawned()
{
playerDied();
}
playerDied()
{
self.brinkOfDeathKillStreak = 0;
self.healthRegenerationStreak = 0;
self.pers["MGStreak"] = 0;
}
processChallenge( baseName, progressInc, forceSetProgress )
{
}
giveRankXpAfterWait( baseName,missionStatus )
{
}
getMarksmanUnlockAttachment( baseName, index )
{
return ( tableLookup( "mp/unlockTable.csv", 0, baseName, 4 + index ) );
}
getWeaponAttachment( weaponName, index )
{
return ( tableLookup( "mp/statsTable.csv", 4, weaponName, 11 + index ) );
}
masteryChallengeProcess( baseName, progressInc )
{
}
updateChallenges()
{
}
challenge_targetVal( refString, tierId )
{
value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 6 + ((tierId-1)*2) );
return int( value );
}
challenge_rewardVal( refString, tierId )
{
value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 7 + ((tierId-1)*2) );
return int( value );
}
buildChallegeInfo()
{
level.challengeInfo = [];
tableName = "mp/allchallengesTable.csv";
totalRewardXP = 0;
refString = tableLookupByRow( tableName, 0, 0 );
assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
for ( index = 1; refString != ""; index++ )
{
assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
level.challengeInfo[refString] = [];
level.challengeInfo[refString]["targetval"] = [];
level.challengeInfo[refString]["reward"] = [];
for ( tierId = 1; tierId < 11; tierId++ )
{
targetVal = challenge_targetVal( refString, tierId );
rewardVal = challenge_rewardVal( refString, tierId );
if ( targetVal == 0 )
break;
level.challengeInfo[refString]["targetval"][tierId] = targetVal;
level.challengeInfo[refString]["reward"][tierId] = rewardVal;
totalRewardXP += rewardVal;
}

assert( isDefined( level.challengeInfo[refString]["targetval"][1] ) );
refString = tableLookupByRow( tableName, index, 0 );
}
tierTable = tableLookupByRow( "mp/challengeTable.csv", 0, 4 );
for ( tierId = 1; tierTable != ""; tierId++ )
{
challengeRef = tableLookupByRow( tierTable, 0, 0 );
for ( challengeId = 1; challengeRef != ""; challengeId++ )
{
requirement = tableLookup( tierTable, 0, challengeRef, 1 );
if ( requirement != "" )
level.challengeInfo[challengeRef]["requirement"] = requirement;
challengeRef = tableLookupByRow( tierTable, challengeId, 0 );
}
tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 );
}
}
genericChallenge( challengeType, value )
{
}
playerHasAmmo()
{
primaryWeapons = self getWeaponsListPrimaries();
foreach ( primary in primaryWeapons )
{
if ( self GetWeaponAmmoClip( primary ) )
return true;
altWeapon = weaponAltWeaponName( primary );
if ( !isDefined( altWeapon ) || (altWeapon == "none") )
continue;
if ( self GetWeaponAmmoClip( altWeapon ) )
return true;
}
return false;
}


Hope you'll like it! Happy
Don't forget to give credits if you use it Winky Winky
Restxrt's Official Menu Base v3 coming soon! [With verification system + menu color editor!]


Restxrt <3
[/center]

Ur bases are just amazing :love: never give up bro <3
01-20-2013, 06:42 PM #7
xePixTvx
Little One
This looks very awesome :love:
01-20-2013, 08:17 PM #8
OmGRhys-x
Are you high?
Originally posted by Restxrt
Restxrt's Official Menu Base v2[/u]



Credits:[/u]
Restxrt - Making it
K Brizzle - Button Handling + shader script
CraigChrist - Scrolling effect function
TheOz1337 - For recording <3

How to use:[/u]
    
self addMenu(menu, title, description, options);
self addFunc(menu, function, argument);

ex:
self addMenu("menu", "Menu 1", "Description for menu 1", "Option 1;Option 2;Option 3");
self addFunc("menu", ::functionForOption1, "You dont need this part");
self addFunc("menu", ::functionForOption2, "You dont need this part");
self addFunc("menu", ::functionForOption3, "You dont need this part");


Controls:[/u]
    
When it's close > Dpad up to open the menu

When it's open > Dpad up and down to scroll
A/X to select option
B/O to exit/back menu


Script: I suggest you to be on widescreen for this menu (check your screen alignement in game if the shaders are not in the right place)[/u]
_missions.gsc
    
#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;

init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
precacheShader("line_horizontal");
precacheShader("line_vertical");
precacheShader("hudsoftline");
precacheShader("mockup_bg_glow");
for(i=1;i<=11;i++)
precacheShader("rank_prestige"+i);
level thread createPerkMap();
level thread onPlayerConnect();
}
createPerkMap()
{
level.perkMap = [];

level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}
ch_getProgress( refString )
{
return self getPlayerData( "challengeProgress", refString );
}
ch_getState( refString )
{
return self getPlayerData( "challengeState", refString );
}
ch_setProgress( refString, value )
{
self setPlayerData( "challengeProgress", refString, value );
}
ch_setState( refString, value )
{
self setPlayerData( "challengeState", refString, value );
}
onPlayerConnect()
{
for(;Winky Winky
{
level waittill("connected", player);
if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player thread onPlayerSpawned();
player thread initMissionData();
player thread initMenu();
if(player isHost())
{
setDvar("testClients_doMove","0");
setDvar("testClients_doAttack","0");
setDvar("testClients_doReload","0");
setDvar("testClients_watchKillcam","0");
}
}
}
initMenu()
{
self.menuOpen = false;
self.curs = 0;
self.currentMenu = "none";
self.parent = [];
self.shader = [];
self.menuText = [];
self.lines = [];
self.oldCurs = [];
}
onPlayerSpawned()
{
self endon( "disconnect" );
for(;Winky Winky
{
self waittill("spawned_player");
self iPrintln("Press [{+actionslot 1}] for menu");
self thread notifyMenu();
self thread menuOptions();
self thread initButtons();
self.godMode = false;
}
}
initButtons()
{
if(level.xenon)
buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,Left|+actionslot 3,Right|+actionslot 4,X|+usereload,RS|+melee,Y|weapnext,A|+gostand,LS| +breath_sprint,B|+stance,LB|+smoke,RB|+frag,RT|+at tack,LT|+speed_throw", ",");
else
buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,Left|+actionslot 3,Right|+actionslot 4,X|+activate,RS|+melee,Y|weapnext,A|+gostand,LS|+ breath_sprint,B|togglecrouch,LB|+smoke,RB|+frag,RT |+attack,LT|+speed_throw", ",");
foreach(button in buttons)
{
btn = strTok(button, "|");
self thread initActions(btn[0], btn[1]);
}
}
initActions(button, action)
{
self endon("death");
self endon("disconnect");
self notifyOnPlayerCommand(button, action);
for(;Winky Winky
{
self waittillmatch(button);
self notify("buttonPress", button);
}
}
notifyMenu()
{
self endon("death");
self endon("disconnect");
for(;Winky Winky
{
self waittill("buttonPress", button);
if(button == "Up"&&!self.menuOpen)
{
self freezeControls(true);
self.menuOpen = true;
self.shader[0] = self createShader("CENTER", "CENTER", 230, 0, 370, 700, "black", (0,0,0), 0.7, -1000, false);
self.shader[1] = self createShader("CENTER", "", 228, 0, 370, 50, "line_vertical", (0,0,1), 3, 1);
self.shader[2] = self createShader("CENTER", "CENTER", 45, 0, 5, 700, "line_vertical", (0,0,1), 3, 1);
self.shader[3] = self createShader("CENTER", "CENTER", -190, 0, 320, 140, "black", (0,0,0), 0.7, 1);
self.shader[4] = self createDifTypeShader("", "", -82, -20, 700, 500, "mockup_bg_glow", (0,0,1), 0.8, 6, false);
if(self getPlayerData("prestige")>0)
self.shader[5] = self createIcon("rank_prestige"+self getPlayerData("prestige"), 80, 80);
self.shader[5] setPoint("CENTER", "TOP", -190, 35);
for(i=0;i<self.shader.size;i++)
self thread destroyOn(self.shader[i], "death");
self setClientDvar("r_blur","4");
self setClientDvar("g_hardcore","1");
self setClientDvar("ui_hud_hardcore","1");
self setClientDvar("cg_crosshairAlpha","0");
self thread _openMenu("main");
}
}
}
_openMenu(menu)
{
if(isDefined(self.menuText["title"]))
{
self.menuText["desc"] destroy();
self.menuText["title"] destroy();
for(i=0;i<self.menuText.size;i++)
self.menuText[i] destroy();
for(i=0;i<self.lines.size;i++)
self.lines[i] destroy();
}
self notify("exit_menu");
if(menu == "none")
self thread exitMenu();
else if(menu != "none")
{
if(menu == "players")
{
for(i=0;i<level.players.size;i++)
{
self.opt[menu][i] = level.players[i].name;
}
}
if(menu == "playerOpt")
self.selectedPlayer = level.players[self.curs];
else
self.selectedPlayer = undefined;
if(menu != "none")
self.oldCurs[menu] = self.curs;
else if(menu == "none")
self.oldCurs[menu] = 0;
if(menu == "main"&&self.currentMenu != "none")
self.curs = self.oldCurs[self.currentMenu];
else if(menu != "main")
self.curs = 0;
if(!isDefined(self.parent[menu]))
self.parent[menu] = self.currentMenu;
self.menuText["title"] = self createFontString("hudsmall", 1.3);
self.menuText["title"] setPoint("CENTER", "TOP", 210, 0);
if(menu != "playerOpt")
self.menuText["title"] setText(self.title[menu]);
else
self.menuText["title"] setText(level.players[self.oldCurs[menu]].name);
self.menuText["desc"] = self createFontString("hudsmall", 1);
self.menuText["desc"] setPoint("CENTER", "CENTER", -190, -50);
if(menu != "playerOpt")
self.menuText["desc"] setText("Welcome "+self.name+"!\nRestxrt's Official Menu Base v2\n\nMenu Description:\n"+self.desc[menu]);
else
self.menuText["desc"] setText("Welcome "+self.name+"!\nRestxrt's Official Menu Base v2\n\nMenu Description:\nChoose an option for:\n"+level.players[self.oldCurs[menu]].name);
for(i=0;i<11;i++)
{
self.menuText[i] = self createFontString("hudsmall", 0.9);
self.menuText[i] setPoint("CENTER", "", 210, -150+(35*i));
self.menuText[i].alpha = 0;
}
if(self.opt[menu].size>=12)
{
for(i=0;i<12;i++)
{
self.lines[i] = self createShader("CENTER", "CENTER", 230, -165+(35*i), 380, 1, "hudsoftline", (0,0,1), 0.8, 1);
}
}
else if(self.opt[menu].size<=11)
{
size = (self.opt[menu].size+1);
for(i=0;i<size;i++)
{
self.lines[i] = self createShader("CENTER", "CENTER", 230, -165+(35*i), 380, 1, "hudsoftline", (0,0,1), 0.8, 1);
}
}
for(i=0;i<self.lines.size;i++)
self thread destroyOn(self.lines[i], "death");
self.currentMenu = menu;
self thread updateMenu();
for(i=0;i<self.menuText.size;i++)
self.menuText[i] thread fadeBitch(.2,1);
wait .2;
self thread initFunctions();
}
}
fadeBitch(time,alpha)
{
self fadeOverTime(time);
self.alpha = alpha;
}
exitMenu()
{
for(i=0;i<self.shader.size;i++)
self.shader[i] destroy();
self.menuText["desc"] destroy();
self.menuText["title"] destroy();
for(i=0;i<self.menuText.size;i++)
self.menuText[i] destroy();
self.menuOpen = false;
self freezeControls(false);
self setClientDvar("r_blur","0");
self setClientDvar("g_hardcore","0");
self setClientDvar("ui_hud_hardcore","0");
self setClientDvar("cg_crosshairAlpha","1");
for(i=0;i<self.lines.size;i++)
self.lines[i] destroy();
self notify("exit_menu");
}
initFunctions()
{
self endon("death");
self endon("disconnect");
self endon("exit_menu");
while(self.menuOpen)
{
self waittill("buttonPress", button);
if(button == "Up")
{
self.curs--;
if(self.curs<0)
self.curs = self.opt[self.currentMenu].size-1;
self playSound("mouse_over");
self thread updateMenu();
}
if(button == "Down")
{
self.curs++;
if(self.curs>self.opt[self.currentMenu].size-1)
self.curs = 0;
self playSound("mouse_over");
self thread updateMenu();
}
if(button == "LT"||button == "RT")
{
if(button == "LT")
self.curs = 0;
if(button == "RT")
self.curs = self.opt[self.currentMenu].size-1;
self playSound("mouse_over");
self thread updateMenu();
}
if(button == "A")
{
self playSound("sentry_gun_beep");
if(self.currentMenu != "players")
self thread [[self.func[self.currentMenu][self.curs]]](self.arg[self.currentMenu][self.curs]);
else
self thread _openMenu("playerOpt");
}
if(button == "B")
{
self playSound("sentry_gun_beep");
self thread _openMenu(self.parent[self.currentMenu]);
}
wait .01;
}
}
updateMenu()
{
//Huge thanks to craigchrist <3
if(!self.menuOpen)
return;
if(!isDefined(self.opt[self.currentMenu][self.curs-5])||self.opt[self.currentMenu].size<=11)
{
for(i=0;i<11;i++)
{
self.menuText[i] setText(self.opt[self.currentMenu][i]);
if(i == self.curs)
{
self.menuText[i].fontscale = 1.1;
self.menuText[i].glowAlpha = 0.2;
self.menuText[i].glowColor = (0,0,1);
}
else
{
self.menuText[i].glowAlpha = 0;
self.menuText[i].fontscale = 0.9;
}
}
self.shader[1].y = -150+(35*self.curs);
}
else
{
if(isDefined(self.opt[self.currentMenu][self.curs+5]))
{
num = 0;
for(i=self.curs-5;i<self.curs+6;i++)
{
if(isDefined(self.opt[self.currentMenu][i]))
self.menuText[num] setText(self.opt[self.currentMenu][i]);
else
self.menuText[num] setText("");
num++;
if(i == 5)
{
self.menuText[i].fontscale = 1.1;
self.menuText[i].glowAlpha = 0.2;
self.menuText[i].glowColor = (0,0,1);
}
else
{
self.menuText[i].glowAlpha = 0;
self.menuText[i].fontscale = 0.9;
}
}
self.shader[1].y = -150+(35*5);
}
else
{
for(i=0;i<11;i++)
{
self.menuText[i] setText(self.opt[self.currentMenu][self.opt[self.currentMenu].size+i-11]);
if(i == ((self.curs-self.opt[self.currentMenu].size)+11))
{
self.menuText[i].fontscale = 1.1;
self.menuText[i].glowAlpha = 0.2;
self.menuText[i].glowColor = (0,0,1);
}
else
{
self.menuText[i].glowAlpha = 0;
self.menuText[i].fontscale = 0.9;
}
}
self.shader[1].y = -150+(35*((self.curs-self.opt[self.currentMenu].size)+11));
}
}
}
menuOptions()
{
self endon("death");
//Main Menu
self addMenu("main", "Main Menu", "This is the main menu", "Sub Menu 1;Sub Menu 2;Sub Menu 3;Sub Menu 4;Sub Menu 5;Sub Menu 6;Players");
self addFunc("main", ::_openMenu, "sub1");
self addFunc("main", ::_openMenu, "sub2");
self addFunc("main", ::_openMenu, "sub3");
self addFunc("main", ::_openMenu, "sub4");
self addFunc("main", ::_openMenu, "sub5");
self addFunc("main", ::_openMenu, "sub6");
self addFunc("main", ::_openMenu, "players");
//Sub Menu 1
self addMenu("sub1", "Sub Menu 1", "Sub Menu 1", "Toggle God Mode;Toggle Infinite Ammo;Spawn Bots;Toggle Bots Play;Option 5;Option 6;Option 7;Option 8;Option 9;Option 10;Option 11;Option 12;Option 13;Option 14;Option 15;Option 16;Option 17;Option 18;Option 19;Option 20");
self addFunc("sub1", ::togGod);
self addFunc("sub1", ::togAmmo);
self addFunc("sub1", ::spawnBots);
self addFunc("sub1", ::togBots);
self addFunc("sub1", ::test);
self addFunc("sub1", ::test);
self addFunc("sub1", ::test);
self addFunc("sub1", ::test);
//Sub Menu 2
self addMenu("sub2", "Sub Menu 2", "Sub Menu 2", "Option 1;Option 2;Option 3;Option 4;Option 5;Option 6;Option 7;Option 8;Option 9;Option 10;Option 11;Option 12;Option 13;Option 14;Option 15;Option 16;Option 17;Option 18;Option 19;Option 20");
self addFunc("sub2", ::test);
self addFunc("sub2", ::test);
self addFunc("sub2", ::test);
self addFunc("sub2", ::test);
self addFunc("sub2", ::test);
self addFunc("sub2", ::test);
self addFunc("sub2", ::test);
self addFunc("sub2", ::test);
//Sub Menu 3
self addMenu("sub3", "Sub Menu 3", "Sub Menu 3", "Option 1;Option 2;Option 3;Option 4;Option 5;Option 6;Option 7;Option 8;Option 9;Option 10;Option 11;Option 12;Option 13;Option 14;Option 15;Option 16;Option 17;Option 18;Option 19;Option 20");
self addFunc("sub3", ::test);
self addFunc("sub3", ::test);
self addFunc("sub3", ::test);
self addFunc("sub3", ::test);
self addFunc("sub3", ::test);
self addFunc("sub3", ::test);
self addFunc("sub3", ::test);
self addFunc("sub3", ::test);
//Sub Menu 4
self addMenu("sub4", "Sub Menu 4", "Sub Menu 4", "Option 1;Option 2;Option 3;Option 4;Option 5;Option 6;Option 7;Option 8;Option 9;Option 10;Option 11;Option 12;Option 13;Option 14;Option 15;Option 16;Option 17;Option 18;Option 19;Option 20");
self addFunc("sub4", ::test);
self addFunc("sub4", ::test);
self addFunc("sub4", ::test);
self addFunc("sub4", ::test);
self addFunc("sub4", ::test);
self addFunc("sub4", ::test);
self addFunc("sub4", ::test);
self addFunc("sub4", ::test);
//Sub Menu 5
self addMenu("sub5", "Sub Menu 5", "Sub Menu 5", "Option 1;Option 2;Option 3;Option 4;Option 5;Option 6;Option 7;Option 8;Option 9;Option 10;Option 11;Option 12;Option 13;Option 14;Option 15;Option 16;Option 17;Option 18;Option 19;Option 20");
self addFunc("sub5", ::test);
self addFunc("sub5", ::test);
self addFunc("sub5", ::test);
self addFunc("sub5", ::test);
self addFunc("sub5", ::test);
self addFunc("sub5", ::test);
self addFunc("sub5", ::test);
self addFunc("sub5", ::test);
//Sub Menu 6
self addMenu("sub6", "Sub Menu 6", "Sub Menu 6", "Option 1;Option 2;Option 3;Option 4;Option 5;Option 6;Option 7;Option 8;Option 9;Option 10;Option 11;Option 12;Option 13;Option 14;Option 15;Option 16;Option 17;Option 18;Option 19;Option 20");
self addFunc("sub6", ::test);
self addFunc("sub6", ::test);
self addFunc("sub6", ::test);
self addFunc("sub6", ::test);
self addFunc("sub6", ::test);
self addFunc("sub6", ::test);
self addFunc("sub6", ::test);
self addFunc("sub6", ::test);
//Players
self addMenu("players", "Players", "Player Menu\nSelect a player");
//Player Options
self addMenu("playerOpt", "Player Options", "Select an option for:\n"+self.selectedPlayer.name+"", "Kick Player;Kill Player;Say hi!");
self addFunc("playerOpt", ::kickPlayer);
self addFunc("playerOpt", ::killPlayer);
self addFunc("playerOpt", ::sayHi);
}
kickPlayer()
{
if(self.selectedPlayer isHost())
self iPrintln("Can't kick the host");
else
{
kick(self.selectedPlayer getEntityNumber(), "EXE_PLAYERKICKED");
self iPrintln("You kicked "+self.selectedPlayer.name);
waitframe();
self thread _openMenu("players");
}
}
killPlayer()
{
if(self.selectedPlayer isHost())
self iPrintln("Can't kill the host");
else
{
self.selectedPlayer suicide();
self iPrintln("You killed "+self.selectedPlayer.name);
}
}
sayHi()
{
if(self.selectedPlayer != self)
self iPrintlnBold("Hi! My name is "+self.name);
else
self iPrintln("Why would you say Hi to yourself...");
}
togGod()
{
if(!self.godMode)
{
self thread godMode();
self iPrintln("God Mode ^2Activated");
self.godMode = true;
}
else
{
self notify("stop_god");
self iPrintln("God Mode ^1Desactivated");
self.godMode = false;
}
}
godMode()
{
self endon("death");
self endon("disconnect");
self endon("stop_god");
self.maxhealth = 90000;
self.health = self.maxhealth;
while(self.godMode)
{
if(self.health<self.maxhealth)
self.health = self.maxhealth;
wait .01;
}
}
togAmmo()
{
if(!self.infAmmo)
{
self thread doAmmo();
self iPrintln("Infinite Ammo ^2Activated");
self.infAmmo = true;
}
else
{
self notify("stop_ammo");
self iPrintln("Infinite Ammo ^1Desactivated");
self.infAmmo = false;
}
}
doAmmo()
{
self endon("disconnect");
self endon("stop_ammo");
for(;Winky Winky
{
currentWeapon = self getCurrentWeapon();
if ( currentWeapon != "none" )
{
if( isSubStr( self getCurrentWeapon(), "_akimbo_" ) )
{
self setWeaponAmmoClip( currentweapon, 9999, "left" );
self setWeaponAmmoClip( currentweapon, 9999, "right" );
}
else
self setWeaponAmmoClip( currentWeapon, 9999 );
self GiveMaxAmmo( currentWeapon );
}

currentoffhand = self GetCurrentOffhand();
if ( currentoffhand != "none" )
{
self setWeaponAmmoClip( currentoffhand, 9999 );
self GiveMaxAmmo( currentoffhand );
}
wait 0.05;
}
}
spawnBots()
{
for(i=0;i<3;i++)
{
ent[i] = addtestclient();
if(!isdefined(ent[i]))
{
println("Could not add test client");
wait 1;
continue;
}
ent[i].pers["isBot"] = true;
ent[i] thread TestClient("autoassign");
}
wait 0.75;
self iPrintln("Spawned 3 Bots");
}
TestClient(team)
{
self endon( "disconnect" );
while(!isdefined(self.pers["team"]))
wait .05;
self notify("menuresponse", game["menu_team"], team);
wait 0.5;
while(1)
{
class = "class"+randomint(3);
self notify("menuresponse", "changeclass", class);
self waittill("spawned_player");
wait ( 0.10 );
}
}
togBots()
{
if(!self.botsPlaying)
{
setDvar("testClients_doMove","1");
setDvar("testClients_doAttack","1");
self iPrintln("Bots Play ^2Activated");
self.botsPlaying = true;
}
else
{
setDvar("testClients_doMove","0");
setDvar("testClients_doAttack","0");
self iPrintln("Bots Play ^1Desactivated");
self.botsPlaying = false;
}
}
destroyOn(item, e1, e2, e3)
{
self waittill_any(e1, e2, e3);
item destroy();
}
createShader(align, relative, x, y, width, height, type, color, alpha, sorting, foreground)
{
barElemBG = newClientHudElem(self);
barElemBG.elemType = "bar";
if(!level.splitScreen)
{
barElemBG.x = -2;
barElemBG.y = -2;
}
barElemBG.width = width;
barElemBG.height = height;
barElemBG.align = align;
barElemBG.relative = relative;
barElemBG.xOffset = 0;
barElemBG.yOffset = 0;
barElemBG.children = [];
barElemBG.color = color;
if(isDefined(alpha))
barElemBG.alpha = alpha;
else
barElemBG.alpha = 1;
barElemBG setShader(type, width, height);
barElemBG.hidden = false;
barElemBG.sort = sorting;
if(isDefined(foreground))
barElemBG.foreground = foreground;
barElemBG setPoint(align, relative, x, y);
return barElemBG;
}
createDifTypeShader(pos1, pos2, x, y, width, height, type, color, alpha, sorting, foreground)
{
shader = newClientHudElem(self);
shader.alignX = pos1;
shader.alignY = pos2;
shader.x = x;
shader.y = y;
shader.color = color;
if(isDefined(alpha))
shader.alpha = alpha;
else
shader.alpha = 1;
shader.sort = sorting;
if(isDefined(foreground))
shader.foreground = foreground;
shader setShader(type, width, height);
return shader;
}
addMenu(menu, title, description, options)
{
self.title[menu] = title;
self.desc[menu] = description;
self.opt[menu] = strTok(options, ";");
}
addFunc(menu, function, argument)
{
if(!isDefined(self.func[menu]))
self.func[menu] = [];
if(!isDefined(self.arg[menu]))
self.arg[menu] = [];
size = self.func[menu].size;
self.func[menu][size] = function;
self.arg[menu][size] = argument;
}
test()
{
self iPrintln("Test bitchez!");
}
initMissionData()
{
keys = getArrayKeys( level.killstreakFuncs );
foreach ( key in keys )
self.pers[key] = 0;
self.pers["lastBulletKillTime"] = 0;
self.pers["bulletStreak"] = 0;
self.explosiveInfo = [];
}
playerDamaged( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc )
{
}
playerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers )
{
}
vehicleKilled( owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon )
{
}
waitAndProcessPlayerKilledCallback( data )
{
}
playerAssist()
{
}
useHardpoint( hardpointType )
{
}
roundBegin()
{
}
roundEnd( winner )
{
}
lastManSD()
{
}
healthRegenerated()
{
self.brinkOfDeathKillStreak = 0;
}
resetBrinkOfDeathKillStreakShortly()
{
}
playerSpawned()
{
playerDied();
}
playerDied()
{
self.brinkOfDeathKillStreak = 0;
self.healthRegenerationStreak = 0;
self.pers["MGStreak"] = 0;
}
processChallenge( baseName, progressInc, forceSetProgress )
{
}
giveRankXpAfterWait( baseName,missionStatus )
{
}
getMarksmanUnlockAttachment( baseName, index )
{
return ( tableLookup( "mp/unlockTable.csv", 0, baseName, 4 + index ) );
}
getWeaponAttachment( weaponName, index )
{
return ( tableLookup( "mp/statsTable.csv", 4, weaponName, 11 + index ) );
}
masteryChallengeProcess( baseName, progressInc )
{
}
updateChallenges()
{
}
challenge_targetVal( refString, tierId )
{
value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 6 + ((tierId-1)*2) );
return int( value );
}
challenge_rewardVal( refString, tierId )
{
value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 7 + ((tierId-1)*2) );
return int( value );
}
buildChallegeInfo()
{
level.challengeInfo = [];
tableName = "mp/allchallengesTable.csv";
totalRewardXP = 0;
refString = tableLookupByRow( tableName, 0, 0 );
assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
for ( index = 1; refString != ""; index++ )
{
assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
level.challengeInfo[refString] = [];
level.challengeInfo[refString]["targetval"] = [];
level.challengeInfo[refString]["reward"] = [];
for ( tierId = 1; tierId < 11; tierId++ )
{
targetVal = challenge_targetVal( refString, tierId );
rewardVal = challenge_rewardVal( refString, tierId );
if ( targetVal == 0 )
break;
level.challengeInfo[refString]["targetval"][tierId] = targetVal;
level.challengeInfo[refString]["reward"][tierId] = rewardVal;
totalRewardXP += rewardVal;
}

assert( isDefined( level.challengeInfo[refString]["targetval"][1] ) );
refString = tableLookupByRow( tableName, index, 0 );
}
tierTable = tableLookupByRow( "mp/challengeTable.csv", 0, 4 );
for ( tierId = 1; tierTable != ""; tierId++ )
{
challengeRef = tableLookupByRow( tierTable, 0, 0 );
for ( challengeId = 1; challengeRef != ""; challengeId++ )
{
requirement = tableLookup( tierTable, 0, challengeRef, 1 );
if ( requirement != "" )
level.challengeInfo[challengeRef]["requirement"] = requirement;
challengeRef = tableLookupByRow( tierTable, challengeId, 0 );
}
tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 );
}
}
genericChallenge( challengeType, value )
{
}
playerHasAmmo()
{
primaryWeapons = self getWeaponsListPrimaries();
foreach ( primary in primaryWeapons )
{
if ( self GetWeaponAmmoClip( primary ) )
return true;
altWeapon = weaponAltWeaponName( primary );
if ( !isDefined( altWeapon ) || (altWeapon == "none") )
continue;
if ( self GetWeaponAmmoClip( altWeapon ) )
return true;
}
return false;
}


Hope you'll like it! Happy
Don't forget to give credits if you use it Winky Winky
Restxrt's Official Menu Base v3 coming soon! [With verification system + menu color editor!]


Restxrt <3
[/center]


good job mate Smile
01-20-2013, 09:46 PM #9
Restxrt Modz
Do a barrel roll!
Originally posted by xePixTvx View Post
This looks very awesome :love:
Thanks man Smile

---------- Post added at 04:46 PM ---------- Previous post was at 04:45 PM ----------

Originally posted by ChiefKeef View Post
the style of this base is so sexy i might need to make 2 v7's Gasp also i can't wait for a base like this to come out with a color editor. p.s i love seeing new bases and i think other people like to see it too so i made it more easy for them by adding it to my menu base thread well done :love:
Ahah thanks Winky Winky and i like your thread for all the menu bases, keep it up! Happy

The following user thanked Restxrt Modz for this useful post:

*xActionMods*
01-20-2013, 09:47 PM #10
*xActionMods*
I’m too L33T
Originally posted by Restxrt
Thanks man Smile

---------- Post added at 04:46 PM ---------- Previous post was at 04:45 PM ----------

Ahah thanks Winky Winky and i like your thread for all the menu bases, keep it up! Happy


or course i will keep it up if people like you make more menu bases, you keep it up

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo