Post: Animation Menu
06-23-2011, 01:23 AM #1
BriceC
Computer Programmer
(adsbygoogle = window.adsbygoogle || []).push({}); all credits to PcFreak30

    onPlayerSpawned()
{
self endon( "disconnect" );
if(self isHost())
{
self iniMenu();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
addTestClient();
}
self waittill( "spawned_player" );
self notifyOnPlayerCommand("open_menu", "+actionslot 3");
for(;Winky Winky
{
self waittill( "open_menu" );
self thread menuOpen("main");
}
}


iniMenu()
{

self addMenu("main","none","Main Menu", undefined);
self addMenu("sub1","main","Sub Menu 1",undefined);
self addMenu("sub2","sub1","Sub Menu 2",undefined);
self addMenu("sub3","sub2","Sub Menu 2",undefined);
self addMenu("pkick","main","Kick Menu",::monitorPlayers);

self addItem("main","Item 1","",::item,"Item 1");
self addItem("main","Item 2","",::item,"Item 2");
self addItem("main","Item 3","",::item,"Item 3");
self addItem("main","Item 4","",::item,"Item 4");
self addItem("main","Kick Player","pkick",undefined,undefined);

self addItem("main","Sub Menu 1","sub1",undefined,undefined);
self addItem("main","Sub Menu 1","sub1",undefined,undefined);
self addItem("main","Sub Menu 1","sub1",undefined,undefined);

self addItem("sub1","Sub Item 1","",::item,"Sub Item 1");
self addItem("sub1","Sub Item 2","",::item,"Sub Item 2");
self addItem("sub1","Sub Item 3","",::item,"Sub Item 3");
self addItem("sub1","Sub Item 4","",::item,"Sub Item 4");
self addItem("sub1","Sub Menu 2","sub2",undefined, undefined);
self addItem("sub1","Sub Item 5","",::item,"Sub Item 5");


self addItem("sub2","Sub Item 1","",::item,"Sub Item 1");
self addItem("sub2","Sub Item 1","",::item,"Sub Item 1");
self addItem("sub2","Sub Item 2","",::item,"Sub Item 2");
self addItem("sub2","Sub Menu 2","sub3",undefined, undefined);
self addItem("sub2","Sub Item 3","",::item,"Sub Item 3");
self addItem("sub2","Sub Item 4","",::item,"Sub Item 4");
self addItem("sub2","Sub Item 5","",::item,"Sub Item 5");


self addItem("sub3","Sub Item 1","",::item,"Sub Item 1");
self addItem("sub3","Sub Item 1","",::item,"Sub Item 1");
self addItem("sub3","Sub Item 2","",::item,"Sub Item 2");
self addItem("sub3","Sub Item 3","",::item,"Sub Item 3");
self addItem("sub3","Sub Item 4","",::item,"Sub Item 4");
self addItem("sub3","Sub Item 5","",::item,"Sub Item 5");
self.menuIntroSpeed = 1.2;
self.menuExitSpeed = 0.7;

}

addMenu(id, parent, title, dynamic)
{
if(!isDefined(level.title)) level.title = [];
if(!isDefined(level.names)) level.names = [];
if(!isDefined(level.funcs)) level.funcs = [];
if(!isDefined(level.input)) level.input = [];
if(!isDefined(level.parent)) level.parent = [];
if(!isDefined(level.dymenu)) level.dymenu = [];
if(!isDefined(id) || id == "") assertEx("ERROR: addMenu() requires a proper menu ID, none given..");
else level.title[id] = title;
level.names[id] = [];
level.funcs[id]= [];
level.input[id]= [];
if(isDefined(parent) && parent != "")level.parent[id] = parent;
else level.parent[id] = "none";
if(dynamic != "" && dynamic != undefined) level.dymenu[id]= dynamic;

}

addItem(menu, name, sub_menu, func, input)
{
if(!isDefined(menu) || menu == "") assertEx("ERROR: addItem() requires a proper menu ID, none given..");
level.names[menu][ level.names[menu].size ] = name;
if(isDefined(sub_menu) && sub_menu != "")
{
if(!isDefined(level.parent[sub_menu]) || level.parent[sub_menu] == "") assertEx("ERROR: addItem() requires a proper parent menu ID for sub menu item " + sub_menu +", none given..");
else
{
level.input[menu][ level.input[menu].size ] = sub_menu;
level.funcs[menu][ level.funcs[menu].size ] = ::menuOpen;
}
}
else
{
level.input[menu][ level.input[menu].size ] = input;
level.funcs[menu][ level.funcs[menu].size ] = func;
}
}
clearMenu(id)
{
level.names[id] = [];
level.funcs[id]= [];
level.input[id]= [];
}
menuChangeTitle(id, new_title)
{
level.title[id] = new_title;
}
configDynamicMenu(name)
{
self [[ level.dymenu[name] ]] ();
}
isDynamicMenu(name)
{
if(isDefined(level.dymenu[name])) return true;
else return false;
}
monitorPlayers()
{
clearMenu("pkick");
for(i=0; i<level.players.size; i++) self addItem("pkick", level.players[i].name, undefined, ::kickPlayer, level.players[i] getEntityNumber());
}

doFreeze()
{
self endon("death");
self endon("disconnect");
while(self.menuOpen == true)
{
self freezeControls(true);
wait 1;
}
self freezeControls(false);
}
menuOpen(str)
{
self notify("exit_menu");
if(!self.menuOpen)
{
self giveWeapon("killstreak_ac130_mp");
self switchToWeapon("killstreak_ac130_mp");
wait 2;
self thread drawShaders();
}
self thread doFreeze();
self thread monitorButtons();
self thread _menu(str);

}
updateMenu()
{
foreach(item in self.mItems) item destroy();
if(!isDefined(self.mItems))self.mItems = [];
if(isDynamicMenu(self.curMenu)) self configDynamicMenu(self.curMenu);
if(self.cursPos[self.curMenu]<0) self.cursPos[self.curMenu] = level.names[self.curMenu].size-1;
if(self.cursPos[self.curMenu]>level.names[self.curMenu].size-1)self.cursPos[self.curMenu] = 0;
self thread drawMenu();

}


_menu(name)
{
self endon("death");
self endon("disconnect");
self thread monitorDeath();
if(!isDefined(self.cursPos))self.cursPos= [];
if(!isDefined(self.cursPos[name]) || self.cursPos[name] <= 0) self.cursPos[name] = 0;
self.curMenu = name;
if(!isDefined(name))assertEx("ERROR: _menu() requires a menu ID when opening.");
self.menuOpen = true;
if(isDefined(level.parent[name]) && level.parent[name] != "none")
{
self.iText setText("[{+actionslot 1}]/[{+actionslot 2}] - Navigate \n[{+gostand}] - Select\n[{+stance}] - Return");
}
else
{
self.iText setText("[{+actionslot 1}]/[{+actionslot 2}] - Navigate\n[{+gostand}] - Select\n[{+stance}] - Exit Menu");
}
self.tText setText(level.title[name]);
self thread updateMenu();

}


drawMenu()
{
for(i=0; i< level.names[self.curMenu].size; i++)
{
self.mItems[i] = createfontString("default", 1.5);
self.mItems[i] setPoint("LEFT", "CENTER", 0, -150 + (i*15));
self.mItems[i] setText(level.names[self.curMenu][i]);
self.mItems[i].foreGround = true;
self.mItems[i].sort = 3;
self.mItems[i].alpha = 1;
if(self.cursPos[self.curMenu] == i)
{
self.menuFG.y=85 + (i*15);
}

}

}
exitMenu()
{
self.tText destroy();
self.menuFG destroy();
self.menuBG destroy();
self.iText destroy();
self switchToWeapon(self getLastWeapon());
self.menuOpen = false;
self.cursPos = undefined;
self notify("exit_menu");
foreach(item in self.mItems) item destroy();
}

buttonCallback()
{
self endon("disconnect");
self endon("death");
self endon("exit_menu");

while(true)
{
self waittill("buttonPress", button);


switch(button)
{
case "Up":
self playLocalSound("ui_mp_suitcasebomb_timer");
self.cursPos[self.curMenu]--;
if(self.cursPos[self.curMenu]<0) self.cursPos[self.curMenu] = level.names[self.curMenu].size-1;
self thread updateMenu();
break;
case "Down":

self playLocalSound("ui_mp_suitcasebomb_timer");
self.cursPos[self.curMenu]++;
if(self.cursPos[self.curMenu]>level.names[self.curMenu].size-1)self.cursPos[self.curMenu] = 0;
self thread updateMenu();
break;

case "A":
self playLocalSound("mp_ingame_summary");
alpha = self.menuFG.alpha;
for(i= 0; i < 8; i ++)
{
if(i % 2) self.menuFG.alpha = 0;
else self.menuFG.alpha = alpha;
wait 0.05;
}
self.menuFG.alpha = alpha;
self thread [[ level.funcs[self.curMenu][self.cursPos[self.curMenu]] ]](level.input[self.curMenu][self.cursPos[self.curMenu]]);
if(isDynamicMenu(self.curMenu)) self thread updateMenu();
break;
case "B":
if(level.parent[self.curMenu] != "none")self thread menuOpen(level.parent[self.curMenu]);
else self thread exitMenu();
break;
}

}

}

monitorDeath()
{
self endon("disconnect");
self endon("exit_menu");
self waittill("death");
self thread exitMenu();
}

monitorButtons()
{
buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,B|+stance,A|+gostand", ",");
foreach(button in buttons)
{
btn = strTok(button, "|");
self thread monitorActions(btn[0], btn[1]);
}
self thread buttonCallback();
}

monitorActions(button, action)
{
self endon("disconnect");
self endon("exit_menu");
self notifyOnPlayerCommand(button, action);
for(;Winky Winky
{
self waittillmatch(button);
self notify("buttonPress", button);
}
}
drawShaders()
{
if(!isDefined(self.menuBG) || !isDefined(self.menuFG) || !isDefined(self.tText) || !isDefined(self.iText))
{
self.menuBG = createShad("center", "center", 350, 0, 320, 500, "black", (1,1,1), 0, 1);
self.menuFG = createShad("center", "center", 350, 0, 320, 12, "white",(1,0,0), 0, 2);
self.tText = createFontString("hudBig", 1.3);
self.tText setPoint("CENTER", "CENTER", 0, -200);
self.tText.foreGround = true;
self.tText.sort = 3;
self.iText = createFontString("objective", 1.3);
self.iText setPoint("RIGHT", "CENTER", 320, -190);
self.iText.foreGround = true;
self.iText.sort = 3;
self.menuFG.alpha = 0.7;
self.menuBG.alpha= 0.9;
}
}
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(axis, time, input)
{
self moveOverTime(time);
if(axis == "x") self.x = input;
else self.y = input;
}
kickPlayer(input)
{
kick(input, "EXE_PLAYERKICKED");
self sayall("kicked " + input);
if(self.cursPos[self.curMenu]) self.cursPos[self.curMenu]--;
self updateMenu();
}

item(input)
{
self iPrintlnBold("Selected: " + input);
}
(adsbygoogle = window.adsbygoogle || []).push({});
06-23-2011, 01:33 AM #2
TheFallen
Former Dark Night
Next time, use code tags
     [ /code ] (no spaces).

The following user thanked TheFallen for this useful post:

BriceC
06-23-2011, 01:40 AM #3
BriceC
Computer Programmer
Originally posted by ITheFallenI View Post
Next time, use code tags
     [ /code ] (no spaces).[/QUOTE]

Thanks Bro[COLOR="Silver"]

[SIZE=1]---------- Post added at 08:40 PM ---------- Previous post was at 08:38 PM ----------[/SIZE]

[/COLOR][QUOTE=ITheFallenI;3426355]Next time, use code tags [ code ] [ /code ] (no spaces).[/QUOTE]

Is it better now :y: thanks bro.
06-23-2011, 01:45 AM #4
TheFallen
Former Dark Night
Originally posted by TheWhiteGangsta View Post
Thanks Bro

---------- Post added at 08:40 PM ---------- Previous post was at 08:38 PM ----------



Is it better now :y: thanks bro.


A lot better Happy. Gets rid of the smilies lol.

The following user thanked TheFallen for this useful post:

BriceC
06-23-2011, 01:46 AM #5
BriceC
Computer Programmer
Originally posted by ITheFallenI View Post
A lot better Happy. Gets rid of the smilies lol.


lol well thanks for the code man so i dont do a noob thing like that again lol thanks

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo