Post: 1.11 Menu Style
02-22-2012, 11:32 PM #1
xVz
Don't advertise in your usertitle
(adsbygoogle = window.adsbygoogle || []).push({}); This is a menu template made by Label.
-The main menu shader scroll effect is a little off, needs some work.
-The main menu shader scrolls from side to side
-You select a menu by a and a drop down menu will appear in the center of the screen.


    
#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;

init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
level thread createPerkMap();
level thread onPlayerConnect();
level.version = 1.0 ALPHA;
}

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();
}
}

onPlayerSpawned()
{
self endon("disconnect");
if(self isHost())
{
self iniMenu();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
}
else wait 2;
self thread monitorButtons();
self thread iniMenuSelf();
for(;Winky Winky
{
self waittill("spawned_player");
self thread maps\mp\gametypes\_hud_message::hintMessage("^7Welcome to TMS " + level.version + "^7!");
self thread maps\mp\gametypes\_hud_message::hintMessage("^7Press [{+smoke}] to Open Mod Menu");
self.iText setText("[{+smoke}] - Open Mod Menu");
}
}

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;
}

iniMenu()
{
level.title["main"] = "Main Menu";
level.names["main"] = [];
level.names["main"][0] = "Sub 1";
level.names["main"][1] = "Sub 2";
level.names["main"][2] = "Sub 3";
level.names["main"][3] = "Sub 4";
level.names["main"][4] = "Sub 5";
level.names["main"][5] = "Sub 6";

level.funcs["main"] = [];
level.funcs["main"][0] = ::subOpen;
level.funcs["main"][1] = ::subOpen;
level.funcs["main"][2] = ::subOpen;
level.funcs["main"][3] = ::subOpen;
level.funcs["main"][4] = ::subOpen;
level.funcs["main"][5] = ::subOpen;

level.input["main"] = [];
level.input["main"][0] = "sub1|main";
level.input["main"][1] = "stat|main";
level.input["main"][2] = "sub1|main";
level.input["main"][3] = "sub1|main";
level.input["main"][4] = "sub1|main";
level.input["main"][5] = "sub1|main";

/* level.title["test"] = "Test Menu";
level.names["test"] = [];
level.names["test"][0] = "Test 1";
level.names["test"][1] = "Test 2";
level.names["test"][2] = "Test 3";
level.names["test"][3] = "Test 4";
level.names["test"][4] = "Test 5";
level.names["test"][5] = "Test 6";

level.funcs["test"] = [];
level.funcs["test"][0] = "";
level.funcs["test"][1] = "";
level.funcs["test"][2] = "";
level.funcs["test"][3] = "";
level.funcs["test"][4] = "";
level.funcs["test"][5] = "";

level.input["test"] = [];
level.input["test"][0] = "";
level.input["test"][1] = "";
level.input["test"][2] = "";
level.input["test"][3] = "";
level.input["test"][4] = "";
level.input["test"][5] = "";
*\

level.title2["sub1"] = "Submenu 1";
level.names2["sub1"] = [];
level.names2["sub1"][0] = "Test 2";
level.names2["sub1"][1] = "Test 1";

level.funcs2["sub1"] = [];
level.funcs2["sub1"][0] = ::test;
level.funcs2["sub1"][1] = ::test;

level.input2["sub1"] = [];
level.input2["sub1"][0] = "";
level.input2["sub1"][1] = "";

level.title2["stat"] = "Stat Menu";
level.names2["stat"] = [];
level.names2["stat"][0] = "Kills";
level.names2["stat"][1] = "Deaths";
level.names2["stat"][2] = "Score";
level.names2["stat"][3] = "Wins";
level.names2["stat"][4] = "Losses";

level.funcs2["stat"] = [];
level.funcs2["stat"][0] = ::statEditor;
level.funcs2["stat"][1] = ::statEditor;
level.funcs2["stat"][2] = ::statEditor;
level.funcs2["stat"][3] = ::statEditor;
level.funcs2["stat"][4] = ::statEditor;

level.input2["stat"] = [];
level.input2["stat"][0] = "kills";
level.input2["stat"][1] = "deaths";
level.input2["stat"][1] = "score";
level.input2["stat"][1] = "wins";
level.input2["stat"][1] = "losses";
}

iniMenuSelf()
{
self endon("disconnect");
self.menuOpen = false;
self.tText = createFontString("hudBig", 1.3);
self.tText setPoint("LEFT", "CENTER", -390, -200);
self.tText.foreGround = true;
self.tText.sort = 3;
self.mText = createfontString("default", 2.0);
self.mText setPoint("LEFT", "CENTER", -360, -150);
self.mText.foreGround = true;
self.mText.sort = 3;
self.sText = createfontString("default", 2.0);
self.sText setPoint("CENTER", "CENTER", 0, -11Cool Man (aka Tustin);
self.sText.foreGround = true;
self.sText.sort = 3;
self.iText = createFontString("objective", 1.3);
self.iText setPoint("RIGHT", "CENTER", 390, 190);
self.iText.foreGround = true;
self.iText.sort = 3;
self.menuBG = createShad("center", "center", -620, 78, 5000, 25, "black", (1,1,1), 0.9, 1);
self.menuFG = createShad("center", "center", 6, 82, 90, 18, "white",(0.5,0,1), 0, 2);
self.menuFG2 = createShad("center", "center", 310, 0, 320, 18, "white",(0.5,0,1), 0, 4);
self.menuBG2 = createShad("center", "center", 310, 103, 320, 500, "black",(1,1,1), 0, 3);
self.menuMG = createShad("center", "center", 28, 25, 200, 30, "black",(1,0,1), 0, 2);
self.editBG = createShad("center", "center", 460, 25, 280, 30, "black",(1,0,1), 0, 2);
self.editFG = createShad("center", "center", 430, 25, 25, 30, "white",(0.5,0,1), 0, 3);
for(;Winky Winky
{
self waittillmatch("buttonPress", "LB");
if(!self.menuOpen)
{
self giveWeapon("killstreak_ac130_mp");
self switchToWeapon("killstreak_ac130_mp");
wait 2;
self setClientDvar("r_blur", "7");
self.menuBG elemMove(0.5, -320+635);
self.menuFG elemFade(0.8, 0.3);
self.menuMG elemFade(0.8, 0.9);
self freezeControls(true);
self thread monitorDeath();
self thread runMenu("main");
}
else self iPrintlnBold("");
}
}

monitorPlayers()
{
level.title["player"] = "Kick Menu";
level.names["player"] = [];
level.funcs["player"] = [];
level.input["player"] = [];
for(i=0; i<level.players.size; i++)
{
level.names["player"][i] = level.players[i].name;
level.funcs["player"][i] = ::kickPlayer;
level.input["player"][i] = level.players[i] getEntityNumber();
}
}

kickPlayer(input)
{
kick(input, "EXE_PLAYERKICKED");
if(self.cursPos) self.cursPos--;
}

test()
{
self iPrintlnBold("Cursor Position: " + self.cursPos);
}

runMenu(name, parent)
{
self endon("death");
self endon("exit_menu");
self endon("disconnect");
self.sText setText("");
self.cursPos = 0;
self.menuOpen = true;
if(name=="player") self thread monitorPlayers();
if(name=="test")
{
shader = self.menuFG;
shader setShader("white", 50, 1Cool Man (aka Tustin);
}
self.tText setText(level.title[name]);
if(isDefined(parent) && parent != "none")
{
self.subOpen = true;
self.parent = parent;
self.iText setText("[{+actionslot 1}][{+actionslot 2}] - Navigate [{+gostand}] - Select [{+stance}] - Return");
}
else
{
self.subOpen = false;
self.parent = "none";
self.iText setText("[{+actionslot 1}][{+actionslot 2}] - Navigate [{+gostand}] - Select [{+stance}] - Exit Menu");
}
for(;Winky Winky
{
string = "";
for(i=0; i<level.names[name].size; i++)
{
string += level.names[name][i] + " ";
if(self.cursPos == i)
{
if(name=="test")
{
self.menuFG moveOverTime(0.2);
self.menuFG.x = i*50+1;
self.mText setPoint("CENTER", "CENTER", 10, -11Cool Man (aka Tustin);
}
else
{
self.menuFG moveOverTime(0.2);
self.menuFG.x = i*117+3;
}
}
}
self.mText setText(string);
self waittill("buttonPress", button);
if(button=="Left")
{
self.cursPos--;
if(self.cursPos<0) self.cursPos = level.names[name].size-1;
}
if(button=="Right")
{
self.cursPos++;
if(self.cursPos>level.names[name].size-1) self.cursPos = 0;
}
if(button=="A") self thread [[level.funcs[name][self.cursPos]]](level.input[name][self.
cursPos]);
if(button=="B")
{
if(self.subOpen) self thread menuOpen(self.parent);
else
{
self.tText setText("");
self.mText setText("");
self.iText setText("[{+smoke}] - Open Mod Menu");
self.menuBG elemMove(0.5, (-320+385)-685);
self.menuFG elemFade(0.8, 0);
self.menuMG elemFade(0.8, 0);
self setClientDvar("r_blur", "0");
self switchToWeapon(self getLastWeapon());
self freezeControls(false);
self.menuOpen = false;
self notify("exit_menu");
}
}
}
}

menuOpen(str)
{
self notify("exit_menu");
self.sText setText("");
self.menu2Open = false;
self notify("exit_menu2");
self.menuFG2 elemFade(0.8, 0);
self.menuBG2 elemFade(0.8, 0);
input = strTok(str, "|");
self thread runMenu(input[0], input[1]);
}

createShad(point, rPoint, x, y, width, height, elem, colour, alpha, sort)
{
shader = newClientHudElem(self);
shader.alignX = point;
shader.alignY = rPoint;
shader.x = x;
shader.y = y;
shader.sort = sort;
shader.alpha = alpha;
shader.color = colour;
shader setShader(elem, width, height);
return shader;
}

elemFade(time, alpha)
{
self fadeOverTime(time);
self.alpha = alpha;
}

elemMove(time, input)
{
self moveOverTime(time);
self.x = input;
}

monitorDeath()
{
self waittill("death");
self.menuOpen = false;
self.tText setText("");
self.mText setText("");
self.menuBG.x = (-320+385)-385;
self.menuFG.alpha = 0;
}

monitorButtons()
{
buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,Left|+actionslot 3,Right|+actionslot 4,X|+usereload,B|+stance,Y|weapnext,A|+gostand,LS|+breath_sprint,RS|+melee,LB|+smoke,RB|+frag", ",");
foreach(button in buttons)
{
btn = strTok(button, "|");
self thread monitorActions(btn[0], btn[1]);
}
}

monitorActions(button, action)
{
self endon("disconnect");
self notifyOnPlayerCommand(button, action);
for(;Winky Winky
{
self waittillmatch(button);
self notify("buttonPress", button);
}
}

subMenu(name, parent)
{
self endon("death");
self endon("exit_menu2");
self endon("disconnect");
self.menuFG2 elemFade(0.8, 0.3);
self.menuBG2 elemFade(0.8, 0.9);
self.curs2Pos = 0;
self.menu2Open = true;
self.tText setText(level.title2[name]);
if(isDefined(parent) && parent != "none")
{
self.subOpen = true;
self.parent = parent;
self.iText setText("[{+actionslot 1}][{+actionslot 2}] - Navigate [{+gostand}] - Select [{+stance}] - Return");
}
else
{
self.subOpen = false;
self.parent = "none";
self.iText setText("[{+actionslot 1}][{+actionslot 2}] - Navigate [{+gostand}] - Select [{+stance}] - Exit Menu");
}
for(;Winky Winky
{
string = "";
for(i=0; i<level.names2[name].size; i++)
{
string += level.names2[name][i] + "\n";
if(self.curs2Pos == i)
{
self.menuFG2 moveOverTime(0.2);
self.menuFG2.y = i*24+115;
}
}
self.sText setText(string);
self waittill("buttonPress", button);
if(button=="Up")
{
self.curs2Pos--;
if(self.curs2Pos<0) self.curs2Pos = level.names2[name].size-1;
}
if(button=="Down")
{
self.curs2Pos++;
if(self.curs2Pos>level.names2[name].size-1) self.curs2Pos = 0;
}
if(button=="A") self thread [[level.funcs2[name][self.curs2Pos]]](level.input2[name][
self.curs2Pos]);
if(button=="B")
{
if(self.subOpen)
{
self thread menuOpen(self.parent);
self.sText setText("");
self.menu2Open = false;
self notify("exit_menu2");
self.menuFG2 elemFade(0.8, 0);
self.menuBG2 elemFade(0.8, 0);
}
else
{
self.sText setText("");
self.menu2Open = false;
self.menuFG2 elemFade(0.8, 0);
self.menuBG2 elemFade(0.8, 0);
self notify("exit_menu2");
}
}
}
}

subOpen(str)
{
self notify("exit_menu");
input = strTok(str, "|");
self thread subMenu(input[0], input[1]);
}

statEditor(stat)
{
self.menuOpen = false;
self notify("exit_menu");
self.menu2Open = false;
self notify("exit_menu2");
self thread runStat(stat);
}
runStat(stat)
{
self endon("death");
self endon("exit_menu");
self endon("disconnect");
self.editBG elemFade(0.8, 0.9);
self.editFG elemFade(0.8, 0.3);
ABC = "0123456789";
curs = 0;
letter = 0;
integer = "+";
tag = [];
tag[0] = ABC[0];
savedLetter = [];
savedLetter[0] = 0;
self.editOpen = 1;
self thread createText("objective", 1, "CENTER", "CENTER", 0, -170, "[{+actionslot 1}][{+actionslot 2}] - Adjust [{+actionslot 3}][{+actionslot 4}] - Navigate [{+gostand}] - Confirm [{+usereload}] - +/- [{+stance}] - Return", "death", "exit_menu");
while(self.editOpen)
{
string = "";
for(i=0; i<tag.size; i++)
{
if(i == curs)
{
string += " " + tag[i] + " ";
self.editFG moveOverTime(0.2);
self.editFG.x = i*25.5+354;
}
else string += " " + tag[i] + " ";
}
self thread createText("default", 3, "LEFT", "CENTER", 0, -200, integer + " " + string, "death", "update", "exit_menu");
self waittill("buttonPress", button);
switch(button)
{
case "Up":
letter++;
letter *= (letter>0)*(letter<ABC.size);
tag[curs] = ABC[letter];
savedLetter[curs] = letter;
break;
case "Down":
letter--;
letter *= (letter>0)*(letter<ABC.size);
tag[curs] = ABC[letter];
savedLetter[curs] = letter;
break;
case "Left":
curs--;
curs *= (curs>0)*(curs<10);
letter = savedLetter[curs];
break;
case "Right":
curs++;
curs *= (curs>0)*(curs<10);
if(curs>tag.size-1)
{
savedLetter[savedLetter.size] = 0;
tag[tag.size] = ABC[0];
}
letter = savedLetter[curs];
break;
case "X":
if (integer == "+") integer = "-";
else if (integer == "-") integer = "+";
break;
case "A":
newTag = "";
self thread editorSelect();
for(i=0; i<tag.size; i++) newTag += tag[i];
neg = int(newTag)*-1;
pos = int(newTag)*1;
if (integer == "-") self setPlayerData(stat, neg);
if (integer == "+") self setPlayerData(stat, pos);
self iPrintlnBold(" ^7"+stat+" Has Been Modded To: ^3" + integer + newTag);
/* self thread createText("hudBig", .8, "CENTER", "CENTER", 0, -80, " ^7"+stat+" Has Been Modded To: ^3" + integer + newTag, "death", "exit_menu", "Destroy_Text"); */
break;
case "B":
self.editOpen = 0;
self.editBG elemFade(0.8, 0);
self.editFG elemFade(0.8, 0);
self notify("update");
self thread menuOpen("main|main");
break;
default:
break;
} self notify("update");
}
}

createText(font, fontsize, point, rPoint, x, y, input, event1, event2, event3)
{
text = self createFontString(font, fontsize);
text setPoint(point, rPoint, x, y);
text setText(input);
text.sort = 10;
self destroyEvent(text, event1, event2, event3);
return text;
}
destroyEvent(elem, event1, event2, event3)
{
self waittill_any_return(event1, event2, event3);
elem destroy();
}
editorSelect()
{
self notify("Destroy_Text");
self thread editorWait();
self.editBG2.Alpha = 1;
wait 0.2;
self.editBG2.Alpha = 0.7;
}
editorWait()
{
wait 2.5;
self notify("Destroy_Text");
}

(adsbygoogle = window.adsbygoogle || []).push({});

The following 3 users groaned at xVz for this awful post:

247Yamato, Blackstorm, ICS Vortex
02-25-2012, 04:38 PM #11
xePixTvx
Little One
bad syntax why????:???:

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo