Post: Player Menu Error
10-11-2015, 06:03 PM #1
xPlayer420
Bounty hunter
(adsbygoogle = window.adsbygoogle || []).push({}); Does anyone know how to fix the issue when i have more then 6 people in my lobby it doesn't show there name and rank in the players menu?
(adsbygoogle = window.adsbygoogle || []).push({});
10-14-2015, 12:31 AM #11
Originally posted by xPlayer420 View Post
Here is the Update Players Script

    updatePlayersMenu()
{
self.menu.menucount["PlayersMenu"] = 0;
for (i = 0; i < 12; i++)
{
player = level.players[i];
name = player.name;
n = player.name + " ^1[^7 " + player.AccessLevel + " ^1]^7";

playersizefixed = level.players.size - 1;
if(self.menu.curs["PlayersMenu"] > playersizefixed)
{
self.menu.scrollerpos["PlayersMenu"] = playersizefixed;
self.menu.curs["PlayersMenu"] = playersizefixed;
}
self add_option("PlayersMenu", n, ::submenu, name, name);

self add_menu_alt(name, "PlayersMenu");
self add_option(name, "Give Co-Host", ::changeVerificationMenu, player, "Co-Host");
self add_option(name, "Give Admin", ::changeVerificationMenu, player, "Admin");
self add_option(name, "Give VIP", ::changeVerificationMenu, player, "VIP");
self add_option(name, "Give Verified", ::changeVerificationMenu, player, "Verified");
self add_option(name, "Take Access", ::changeVerificationMenu, player, "Unverified");
self add_option(name, "Give Godmode", ::givegodmode, player);
self add_option(name, "Kill Player", ::killPlayer, player);
self add_option(name, "Teleport To Me", ::teletome, player);
self add_option(name, "Teleport To Him", ::teletohim, player);
self add_option(name, "Kick Player", ::kickPlayer, player);
self add_option(name, "Ban Player", ::banPlayer, player);
self add_option(name, "Spin Player", ::ToggleSpin, player);
}
}


Did the base work well before you added anything to it or edit it?
Did you make any changes to this base?

If you did, putting the whole source of the base with your edits on pastebin could help
10-14-2015, 12:56 AM #12
xPlayer420
Bounty hunter
Originally posted by John View Post
Did the base work well before you added anything to it or edit it?
Did you make any changes to this base?

If you did, putting the whole source of the base with your edits on pastebin could help


Okay 1 sec
10-14-2015, 01:04 AM #13
xPlayer420
Bounty hunter
Originally posted by John View Post
Did the base work well before you added anything to it or edit it?
Did you make any changes to this base?

If you did, putting the whole source of the base with your edits on pastebin could help


Its the base thats messed up and i cant fix it.

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

init()
{
precacheShader("menu_camo_mtx_dragon_32");
level thread onplayerconnect();
level thread removeSkyBarrier();
}

onplayerconnect()
{
for(;Winky Winky
{
level waittill( "connecting", player );

if(player isHost() || player islocaltohost())
{
player.AccessLevel = "Access Level 5";
player thread welcomeAnim();
}
else
player.AccessLevel = "No Access";

player thread onplayerspawned();
}
}

onplayerspawned()
{
self endon( "disconnect" );
level endon( "game_ended" );

self.MenuInit = false;
self.menu.stealth = true;
self.firstWelcome = true;

for(;Winky Winky
{
self waittill( "spawned_player" );
if(isAllowed(0))
{
self thread welcomeMessage();
if (!self.MenuInit)
{
self.MenuInit = true;
self thread MenuInit();
self thread closeMenuOnDeath();
thread initOverFlowFix();
}
}
}
}

welcomeMessage()
{
self endon("death");
if(self.firstWelcome)
{
welcome = spawnstruct();
welcome2 = spawnstruct();

welcome clear(self);
welcome2 clear(self);

welcome = self createText("objective", 2, "CENTER", "BOTTOM", -330, -30, 3, (1, 1, 1), 1, (.3, 0, 0), 1, "Welcome " + self.name + " To Menu");
welcome2 = self createText("objective", 2, "CENTER", "BOTTOM", -310, 0, 3, (1, 1, 1), 1, (.3, 0, 0), 1, "You Have " + self.AccessLevel);
welcome.hideWhenInMenu = true;
welcome2.hideWhenInMenu = true;

if(!self.menu.stealth)
{
welcome.archived = true;
welcome2.archived = true;
}
else
{
welcome.archived = false;
welcome2.archived = false;
}

welcome setCOD7DecodeFX( 100, int(10*1000), 600 );
welcome2 setCOD7DecodeFX( 100, int(10*1000), 600 );

welcome setPulseFX( 100, int(10*1000), 1000 );
welcome2 setPulseFX( 100, int(10*1000), 1000 );

wait 4.3;

welcome elemFade(.3, 0);
welcome2 elemFadeWait(.3, 0);

welcome clear(self);
welcome2 clear(self);
self setClientUiVisibilityFlag("hud_visible", 1);
self.firstWelcome = false;
}
else
{
notifyData = spawnstruct();
notifyData.titleText = "Welcome " + self.name + " To Menu";
notifyData.notifyText = "You Have " + self.AccessLevel;
notifyData.glowColor = (.2, 0, 0);
notifyData.duration = 7;
notifyData.font = "objective";
notifyData.hideWhenInMenu = true;

if(!self.menu.stealth)
{
notifyData.archived = true;
}
else
{
notifyData.archived = false;
}
self thread maps\mp\gametypes\_hud_message::notifyMessage(notifyData);
}
}

WelcomeAnim()
{
self endon("death");
self endon("disconnect");
self endon("Welcome_Done");

self.menuControls = false;
for(;Winky Winky
{
self waittill("spawned_player");
self setClientUiVisibilityFlag("hud_visible", 0);
self disableWeapons();
self Hide();
self freezeControls(true);
zoomHeight = 5000;
zoomBack = 4000;
yaw = 55;
origin = self.origin;
self.origin = origin + vector_scale(anglestoforward(self.angles + (0, -180, 0)), zoomBack) + (0, 0, zoomHeight);
ent = spawn("script_model", (0 ,0, 0));
ent.angles = self.angles + (yaw, 0, 0);
ent.origin = self.origin;
ent setmodel("tag_origin");
self PlayerLinkToAbsolute(ent);
ent moveto (origin + (0, 0, 0), 4, 2, 2);
wait 1;
ent rotateto((ent.angles[0] - yaw, ent.angles[1], 0), 3, 1, 1);
wait 0.5;
self playlocalsound("ui_camera_whoosh_in");
wait 2.5;
self unlink();
wait 0.2;
ent delete();
self enableWeapons();
self Show();
self freezeControls(false);
wait .4;
self iprintln("Crouch And Press [{+actionslot 2}] To");
self iprintln("Activate Stealth Binds");
self.menuControls = true;
self notify("Welcome_Done");
}
}

//monitoring
MenuInit()
{
self endon("disconnect");
self endon( "destroyMenu" );
level endon("game_ended");

self.menu = spawnstruct();
self.toggles = spawnstruct();

self.menu.open = false;

self StoreShaders();
self CreateMenu();

for(;Winky Winky
{
if(!self.menu.open && self.menuControls)
{
if(self MeleeButtonPressed() && self adsbuttonpressed())
{
openMenu();
}
if(self getStance() == "crouch" && self actionslottwobuttonpressed())
{
stealthBinds();
}
}
if(self.menu.open)
{
if(self usebuttonpressed())
{
if(isDefined(self.menu.previousmenu[self.menu.currentmenu]))
{
self submenu(self.menu.previousmenu[self.menu.currentmenu]);
}
else
{
closeMenu();
}
self playLocalSound("fly_lsat_close");
wait 0.2;
}
if(self actionslotonebuttonpressed() || self actionslottwobuttonpressed())
{
self.menu.curs[self.menu.currentmenu] += (Iif(self actionSlotTwoButtonPressed(), 1, -1));
self.menu.curs[self.menu.currentmenu] = (Iif(self.menu.curs[self.menu.currentmenu] < 0, self.menu.menuopt[self.menu.currentmenu].size-1, Iif(self.menu.curs[self.menu.currentmenu] > self.menu.menuopt[self.menu.currentmenu].size-1, 0, self.menu.curs[self.menu.currentmenu])));
self updateScrollbar();
self playLocalSound("fly_insas_mag_in");
}
if(self jumpbuttonpressed())
{
self thread [[self.menu.menufunc[self.menu.currentmenu][self.menu.curs[self.menu.currentmenu]]]](self.menu.menuinput[self.menu.currentmenu][self.menu.curs[self.menu.currentmenu]], self.menu.menuinput1[self.menu.currentmenu][self.menu.curs[self.menu.currentmenu]]);
self playLocalSound("fly_insas_mag_out");
wait 0.2;
}
}
wait 0.05;
}
}

updateScrollbar()
{
self.menu.scroller elemMoveY(.15, 60 + (self.menu.curs[self.menu.currentmenu] * 19.25));
}

//hud utilities
createText(font, fontscale, align, relative, x, y, sort, color, alpha, glowColor, glowAlpha, text)
{
textElem = CreateFontString( font, fontscale );
textElem setPoint( align, relative, x, y );
textElem.sort = sort;
textElem.color = color;
textElem.alpha = alpha;
textElem.glowColor = glowColor;
textElem.glowAlpha = glowAlpha;
textElem.hideWhenInMenu = true;
textElem.type = "text";

if(!self.menu.stealth)
textElem.archived = true;
else
textElem.archived = false;

addTextTableEntry(textElem, getStringId(text));
textElem setSafeText(self, text);
return textElem;
}

createRectangle(align, relative, x, y, width, height, sort, color, alpha, shader)
{
shaderElem = newClientHudElem(self);
shaderElem.elemType = "bar";
shaderElem.width = width;
shaderElem.height = height;
shaderElem.xOffset = 0;
shaderElem.yOffset = 0;
shaderElem.children = [];
shaderElem.sort = sort;
shaderElem.color = color;
shaderElem.alpha = alpha;
shaderElem setParent(level.uiParent);
shaderElem setShader(shader, width , height);
shaderElem.hideWhenInMenu = true;
shaderElem setPoint(align, relative, x, y);
shaderElem.align = align;
shaderElem.relative = relative;

if(!self.menu.stealth)
shaderElem.archived = true;
else
shaderElem.archived = false;

shaderElem.type = "shader";
return shaderElem;
}

startHUDs(time, alpha, width, height, x, y)
{
self FadeOverTime(time);
self MoveOverTime(time);
self scaleOverTime(time, width, height);
self.alpha = alpha;
self.x = x;
self.y = y;

if(self.startHud)
self setClientUiVisibilityFlag("hud_visible", 1);

if(!self.startHud)
self setClientUiVisibilityFlag("hud_visible", 0);
}

startTxtHUDs(time, alpha, x)
{
self FadeOverTime(time);
self MoveOverTime(time);
self.alpha = alpha;
self.x = x;
}

//if you need them

elemMoveY(time, y)
{
self MoveOverTime(time);
self.y = y;
}

elemMoveX(time, x)
{
self MoveOverTime(time);
self.x = x;
}

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

elemFontScale(time, fontscale)
{
self changefontscaleovertime(time);
self.fontscale = fontscale;
}

//elem Action + wait
elemMoveYWait(time, y)
{
self MoveOverTime(time);
self.y = y;
wait time;
}

elemMoveXWait(time, x)
{
self MoveOverTime(time);
self.x = x;
wait time;
}

elemFadeWait(time, alpha)
{
self FadeOverTime(time);
self.alpha = alpha;
wait time;
}

elemScaleWait(time, width, height)
{
self scaleOverTime(time, width, height);
wait time;
}

elemFontScaleWait(time, fontscale)
{
self changefontscaleovertime(time);
self.fontscale = fontscale;
wait time;
}

//hud
StoreShaders()
{
self.menu.background = self createRectangle("CENTER", "CENTER", 320, -50, 1, 1, 0, (.2, 0, 0), 0, "menu_camo_mtx_dragon_32");
self.menu.scroller = self createRectangle("CENTER", "TOP", 320, -50, 1, 1, 1, (0, 0, 0), 0, "white");
self.menu.line = self createRectangle("CENTER", "CENTER", 320, -50, 1, 1, 2, (0, 0, 0), 0, "white");
}

StoreText(menu, title)
{
string = "";
self.menu.currentmenu = menu;

if(self.COD7DecodeFX)
{
self.menu.title clear(self);
self.menu.title = createText("objective", 2.3, "CENTER", "TOP", 280, 30, 3, (1, 1, 1), 1, (.2, 0, 0), 1, title);
self.menu.title setCOD7DecodeFX( 200, int(10000*1000), 600 );
self.menu.title setPulseFX( 200, int(10000*1000), 1000 );

for(i = 0; i < self.menu.menuopt[menu].size; i++)
{ string += self.menu.menuopt[menu][i]+ "\n"; }

self.menu.options clear(self);
self.menu.options = createText("objective", 1.6, "CENTER", "TOP", 330, 60, 4, (1, 1, 1), 0, (0, 0, 0), 0, string);
self.menu.options startTxtHUDs(.3, 1, 280);
}
else
{
self.menu.title clear(self);
self.menu.title = createText("objective", 2.3, "CENTER", "TOP", 330, 30, 3, (1, 1, 1), 0, (.2, 0, 0), 1, title);
self.menu.title startTxtHUDs(.3, 1, 280);

for(i = 0; i < self.menu.menuopt[menu].size; i++)
{ string += self.menu.menuopt[menu][i]+ "\n"; }

self.menu.options clear(self);
self.menu.options = createText("objective", 1.6, "CENTER", "TOP", 330, 60, 4, (1, 1, 1), 0, (0, 0, 0), 0, string);
self.menu.options startTxtHUDs(.3, 1, 280);
}
self.menu.scroller.x = 370;
self.menu.scroller elemMoveX(0.3, 320 );
}

openMenu()
{
self StoreText("Main Menu", "Main Menu");

self.startHud = true;
self.COD7DecodeFX = true;
self.menu.background startHUDs(.3, .65, 300, 600, 320, -50);
self.menu.line startHUDs(.3, 1, 2, 600, 170, -50);
self.menu.scroller startHUDs(.3, 1, 300, 18, 320, 60);

self updateScrollbar();
self.menu.open = true;
}

closeMenu()
{
self.startHud = false;
self.COD7DecodeFX = true;
self.menu.background startHUDs(.3, 0, 1, 1, 320, -50);
self.menu.line startHUDs(.3, 0, 2, 1, 320, -50);
self.menu.scroller startHUDs(.3, 0, 1, 1, 320, 50);
self.menu.options startTxtHUDs(.3, 0, 330);
self.menu.title startTxtHUDs(.3, 0, 330);

self.menu.open = false;
}

destroyMenu(player)
{
player.MenuInit = false;
closeMenu();

wait 0.3;

player.menu.options clear(player);
player.menu.title clear(player);
player.menu.background destroy();
player.menu.scroller destroy();
player.menu.line destroy();
player notify( "destroyMenu" );
}

//overflow fix
initOverFlowFix()
{
self.stringTable = [];
self.stringTableEntryCount = 0;
self.textTable = [];
self.textTableEntryCount = 0;

if(isDefined(level.anchorText) == false)
{
level.anchorText = createServerFontString("default",1.5);
level.anchorText setText("anchor");
level.anchorText.alpha = 0;

level.stringCount = 0;
level thread monitorOverflow();
}
}

monitorOverflow()
{
level endon("disconnect");

for(;Winky Winky
{
if(level.stringCount >= 60)
{
level.anchorText clearAllTextAfterHudElem();
level.stringCount = 0;

foreach(player in level.players)
{
player purgeTextTable();
player purgeStringTable();
player recreateText();
}
}
wait 0.05;
}
}

setSafeText(player, text)
{
stringId = player getStringId(text);

if(stringId == -1)
{
player addStringTableEntry(text);
stringId = player getStringId(text);
}

player editTextTableEntry(self.textTableIndex, stringId);

self setText(text);
}

recreateText()
{
foreach(entry in self.textTable)
entry.element setSafeText(self, lookUpStringById(entry.stringId));
}

addStringTableEntry(string)
{
entry = spawnStruct();
entry.id = self.stringTableEntryCount;
entry.string = string;

self.stringTable[self.stringTable.size] = entry;
self.stringTableEntryCount++;
level.stringCount++;
}

lookUpStringById(id)
{
string = "";

foreach(entry in self.stringTable)
{
if(entry.id == id)
{
string = entry.string;
break;
}
}
return string;
}

getStringId(string)
{
id = -1;

foreach(entry in self.stringTable)
{
if(entry.string == string)
{
id = entry.id;
break;
}
}

return id;
}

getStringTableEntry(id)
{
stringTableEntry = -1;

foreach(entry in self.stringTable)
{
if(entry.id == id)
{
stringTableEntry = entry;
break;
}
}

return stringTableEntry;
}

purgeStringTable()
{
stringTable = [];

foreach(entry in self.textTable)
stringTable[stringTable.size] = getStringTableEntry(entry.stringId);

self.stringTable = stringTable;
}

purgeTextTable()
{
textTable = [];

foreach(entry in self.textTable)
{
if(entry.id != -1)
textTable[textTable.size] = entry;
}

self.textTable = textTable;
}

addTextTableEntry(element, stringId)
{
entry = spawnStruct();
entry.id = self.textTableEntryCount;
entry.element = element;
entry.stringId = stringId;

element.textTableIndex = entry.id;

self.textTable[self.textTable.size] = entry;
self.textTableEntryCount++;
}

editTextTableEntry(id, stringId)
{
foreach(entry in self.textTable)
{
if(entry.id == id)
{
entry.stringId = stringId;
break;
}
}
}

deleteTextTableEntry(id)
{
foreach(entry in self.textTable)
{
if(entry.id == id)
{
entry.id = -1;
entry.stringId = -1;
}
}
}

clear(player)
{
if(self.type == "text")
player deleteTextTableEntry(self.textTableIndex);

self destroy();
}

//permissions / verification
verificationToNum(AccessLevel)
{
if (AccessLevel == "Access Level 5")
return 5;
if (AccessLevel == "Access Level 4")
return 4;
if (AccessLevel == "Access Level 3")
return 3;
if (AccessLevel == "Access Level 2")
return 2;
if (AccessLevel == "Access Level 1")
return 1;
else
return 0;
}

verificationToColor(AccessLevel) //Add colors if you want...
{
if (AccessLevel == "Access Level 5")
return "^1Access Level 5^7";
if (AccessLevel == "Access Level 4")
return "^1Access Level 4^7";
if (AccessLevel == "Access Level 3")
return "^1Access Level 3^7";
if (AccessLevel == "Access Level 2")
return "^1Access Level 2^7";
if (AccessLevel == "Access Level 1")
return "^1Access Level 1^7";
else
return "^1No Access";
}

changeVerificationMenu(player, verlevel)
{
if(verificationToNum(self.AccessLevel) >= verificationToNum(player.AccessLevel))
{
if( player.AccessLevel != verlevel)
{
if(!player ishost())
{
player.AccessLevel = verlevel;

self.menu.title clear(self);
self.menu.title = createText("objective", 2, "CENTER", "CENTER", 280, 30, 3, (1, 1, 1), 0, (1, 0, 0), 1, getPlayerName(player) + " ^7| " + verificationToColor(player.AccessLevel));
self.menu.title FadeOverTime(0.3);
self.menu.title.alpha = 1;

if(player.AccessLevel == "No Access")
self thread destroyMenu(player);

self iPrintln("Set " + verificationToColor(verlevel) + " For " + getPlayerName(player));
player iPrintln("Set " + verificationToColor(verlevel) + " For " + self.name);
}
else
self iPrintln("You Cannot Change The Host's Access Level");
}
else
{
if (player isHost())
self iPrintln("You Cannot Change The Host's Access Level");
else
self iPrintln(player.name + " Has Already " + verificationToColor(verlevel));
}
}
else
self iprintln("He Has " + verificationToColor(AccessLevel) + ". You Cannot Change The Host's Access Level!");
}

isAllowed(r)
{
return (verificationToNum(self.AccessLevel) >= r);
}

//menu
CreateMenu()
{
self add_menu("Main Menu", undefined, "No Access");
self add_option("Main Menu", "Sub Menu 1", ::submenu, "SubMenu1", "Sub Menu 1");
self add_option("Main Menu", "Sub Menu 2", ::submenu, "SubMenu2", "Sub Menu 2");
self add_option("Main Menu", "Sub Menu 3", ::submenu, "SubMenu3", "Sub Menu 3");
self add_option("Main Menu", "Sub Menu 4", ::submenu, "SubMenu4", "Sub Menu 4");
self add_option("Main Menu", "Sub Menu 5", ::submenu, "SubMenu5", "Sub Menu 5");
self add_option("Main Menu", "Sub Menu 6", ::submenu, "SubMenu6", "Sub Menu 6");
self add_option("Main Menu", "Sub Menu 7", ::submenu, "SubMenu7", "Sub Menu 7");
self add_option("Main Menu", "Sub Menu 8", ::submenu, "SubMenu8", "Sub Menu 8");
self add_option("Main Menu", "Sub Menu 9", ::submenu, "SubMenu9", "Sub Menu 9");
self add_option("Main Menu", "Player Menu", ::submenu, "PlayersMenu", "Players Menu");

self add_menu("SubMenu1", "Main Menu", "Access Level 3");
self add_option("SubMenu1", "Option 1", :Gaspption);
self add_option("SubMenu1", "Option 2", :Gaspption);
self add_option("SubMenu1", "Option 3", :Gaspption);

self add_menu("SubMenu2", "Main Menu", "Access Level 2");
self add_option("SubMenu2", "Option 1", :Gaspption);
self add_option("SubMenu2", "Option 2", :Gaspption);
self add_option("SubMenu2", "Option 3", :Gaspption);

self add_menu("SubMenu3", "Main Menu", "Access Level 1");
self add_option("SubMenu3", "Option 1", :Gaspption);
self add_option("SubMenu3", "Option 2", :Gaspption);
self add_option("SubMenu3", "Option 3", :Gaspption);

self add_menu("SubMenu4", "Main Menu", "Access Level 3");
self add_option("SubMenu4", "Option 1", :Gaspption);
self add_option("SubMenu4", "Option 2", :Gaspption);
self add_option("SubMenu4", "Option 3", :Gaspption);

self add_menu("SubMenu5", "Main Menu", "Access Level 2");
self add_option("SubMenu5", "Option 1", :Gaspption);
self add_option("SubMenu5", "Option 2", :Gaspption);
self add_option("SubMenu5", "Option 3", :Gaspption);

self add_menu("SubMenu6", "Main Menu", "Access Level 1");
self add_option("SubMenu6", "Option 1", :Gaspption);
self add_option("SubMenu6", "Option 2", :Gaspption);
self add_option("SubMenu6", "Option 3", :Gaspption);

self add_menu("SubMenu7", "Main Menu", "Access Level 3");
self add_option("SubMenu7", "Option 1", :Gaspption);
self add_option("SubMenu7", "Option 2", :Gaspption);
self add_option("SubMenu7", "Option 3", :Gaspption);

self add_menu("SubMenu8", "Main Menu", "Access Level 2");
self add_option("SubMenu8", "Option 1", :Gaspption);
self add_option("SubMenu8", "Option 2", :Gaspption);
self add_option("SubMenu8", "Option 3", :Gaspption);

self add_menu("SubMenu9", "Main Menu", "Access Level 1");
self add_option("SubMenu9", "Option 1", :Gaspption);
self add_option("SubMenu9", "Option 2", :Gaspption);
self add_option("SubMenu9", "Option 3", :Gaspption);

self add_menu("PlayersMenu", "Main Menu", "Access Level 4");
for (i = 0; i < 12; i++)
{ self add_menu(name, "PlayersMenu", "Access Level 4"); }
}

updatePlayersMenu()
{
self.menu.menucount["PlayersMenu"] = 0;
for (i = 0; i < 12; i++)
{
player = level.players[i];
name = player.name;
n = player.name + " ^1[^7 " + player.AccessLevel + " ^1]^7";

playersizefixed = level.players.size - 1;
if(self.menu.curs["PlayersMenu"] > playersizefixed)
{
self.menu.scrollerpos["PlayersMenu"] = playersizefixed;
self.menu.curs["PlayersMenu"] = playersizefixed;
}
self add_option("PlayersMenu", n, ::submenu, name, name);

self add_menu_alt(name, "PlayersMenu");
self add_option(name, "Give Access Level 4", ::changeVerificationMenu, player, "Access Level 4");
self add_option(name, "Give Access Level 3", ::changeVerificationMenu, player, "Access Level 3");
self add_option(name, "Give Access Level 2", ::changeVerificationMenu, player, "Access Level 2");
self add_option(name, "Give Access Level 1", ::changeVerificationMenu, player, "Access Level 1");
self add_option(name, "Take Access", ::changeVerificationMenu, player, "No Access");
self add_option(name, "Kill Player", ::killPlayer, player);
self add_option(name, "Kick Player", ::kickPlayer, player);
self add_option(name, "Ban Player", ::banPlayer, player);
}
}

//utilities ( menu )
add_menu_alt(Menu, prevmenu)
{
self.menu.getmenu[Menu] = Menu;
self.menu.menucount[Menu] = 0;
self.menu.previousmenu[Menu] = prevmenu;
}

add_menu(Menu, prevmenu, AccessLevel)
{
self.menu.AccessLevel[Menu] = AccessLevel;
self.menu.getmenu[Menu] = Menu;
self.menu.scrollerpos[Menu] = 0;
self.menu.curs[Menu] = 0;
self.menu.menucount[Menu] = 0;
self.menu.previousmenu[Menu] = prevmenu;
}

add_option(Menu, Text, Func, arg1, arg2)
{
Menu = self.menu.getmenu[Menu];
Num = self.menu.menucount[Menu];
self.menu.menuopt[Menu][Num] = Text;
self.menu.menufunc[Menu][Num] = Func;
self.menu.menuinput[Menu][Num] = arg1;
self.menu.menuinput1[Menu][Num] = arg2;
self.menu.menucount[Menu] += 1;
}

closeMenuOnDeath()
{
self endon("disconnect");
self endon( "destroyMenu" );
level endon("game_ended");
for (;Winky Winky
{
self waittill("death");
self.menu.closeondeath = true;
self submenu("Main Menu", "Main Menu");
closeMenu();
self.menu.closeondeath = false;
}
}

submenu(input, title)
{
self.COD7DecodeFX = false;
if (verificationToNum(self.AccessLevel) >= verificationToNum(self.menu.AccessLevel[input]))
{
self.menu.options clear(self);

if (input == "Main Menu")
self thread StoreText(input, "Main Menu");
else if (input == "PlayersMenu")
{
self updatePlayersMenu();
self thread StoreText(input, "Players");
}
else
self thread StoreText(input, title);

self.CurMenu = input;

self.menu.scrollerpos[self.CurMenu] = self.menu.curs[self.CurMenu];
self.menu.curs[input] = self.menu.scrollerpos[input];

if (!self.menu.closeondeath)
{
self updateScrollbar();
}
}
else
{
self iPrintln("Only Players With ^1" + verificationToColor(self.menu.AccessLevel[input]) + " ^7Can Access This Menu!");
}
}

getPlayerName(player)
{
playerName = getSubStr(player.name, 0, player.name.size);
for(i=0; i < playerName.size; i++)
{
if(playerName[i] == "]")
break;
}
if(playerName.size != i)
playerName = getSubStr(playerName, i + 1, playerName.size);
return playerName;
}

Iif(bool, rTrue, rFalse)
{
if(bool)
return rTrue;
else
return rFalse;
}

stealthBinds()
{
if(!self.menu.open)
{
closeMenu();
}
if(!self.menu.stealth)
{
self.menu.stealth = true;
shaderElem.archived = true;
textElem.archived = true;
notifyData.archived = true;
self iprintln("Stealth Binds: ^2ON");
}
else
{
self.menu.stealth = false;
shaderElem.archived = false;
textElem.archived = false;
notifyData.archived = false;
self iprintln("Stealth Binds: ^1OFF");
}
}

getClan()
{
cT = getSubStr(self.name, 0, self.name.size);
if (cT[0] != "[")
return "";
for (i = 0; i < cT.size; i++)
{
if (cT[i] == "]")
break;
}
cT=getSubStr(cT, 1, i);
return cT;
}

removeSkyBarrier()
{
entArray = getEntArray();
for (index = 0; index < entArray.size; index++)
{
if(isSubStr(entArray[index].classname, "trigger_hurt") && entArray[index].origin[2] > 180)
entArray[index].origin = (0, 0, 9999999);
}
}

vector_scale(vec, scale)
{
vec = (vec[0]*scale,vec[1]*scale,vec[2]*scale);
return vec;
}

//functions
option()
{
self iprintln("Add An Option/A Function");
}

killPlayer(player)
{
if(verificationToNum(self.AccessLevel) >= verificationToNum(player.AccessLevel))
{

if(!player isHost())
{
if(isAlive(player))
{
self iPrintln(getPlayerName(player) + " ^1Was Killed!");
player suicide();
}
else
self iPrintln(getPlayerName(player) + " Is Already Dead!");
}
else
self iPrintln("You Cannot Kill The Host!");
}
else
self iPrintln("He Has " + player.AccessLevel + ". You Cannot Kill Him!");
}

kickPlayer(player)
{
if(verificationToNum(self.AccessLevel) >= verificationToNum(player.AccessLevel))
{
if (player isHost())
self iPrintln("You Cannot Kick The Host!");
else
{
kick(player GetEntityNumber());
wait 0.50;
self submenu(self.menu.previousmenu[self.menu.currentmenu]);
}
}
else
self iprintln("He Has " + player.AccessLevel + ". You Cannot Kick Him!");
}

banPlayer(player)
{
if(verificationToNum(self.AccessLevel) >= verificationToNum(player.AccessLevel))
{
if (player isHost())
self iPrintln("You Cannot Ban The Host!");
else
{
ban(player getentitynumber());
kick(player GetEntityNumber());
wait 0.50;
self submenu(self.menu.previousmenu[self.menu.currentmenu]);
}
}
else
self iprintln("He Has " + player.AccessLevel + ". You Cannot Ban Him!");
}
10-14-2015, 01:18 AM #14
Originally posted by xPlayer420 View Post
Its the base thats messed up and i cant fix it.

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

init()
{
precacheShader("menu_camo_mtx_dragon_32");
level thread onplayerconnect();
level thread removeSkyBarrier();
}

onplayerconnect()
{
for(;Winky Winky
{
level waittill( "connecting", player );

if(player isHost() || player islocaltohost())
{
player.AccessLevel = "Access Level 5";
player thread welcomeAnim();
}
else
player.AccessLevel = "No Access";

player thread onplayerspawned();
}
}

onplayerspawned()
{
self endon( "disconnect" );
level endon( "game_ended" );

self.MenuInit = false;
self.menu.stealth = true;
self.firstWelcome = true;

for(;Winky Winky
{
self waittill( "spawned_player" );
if(isAllowed(0))
{
self thread welcomeMessage();
if (!self.MenuInit)
{
self.MenuInit = true;
self thread MenuInit();
self thread closeMenuOnDeath();
thread initOverFlowFix();
}
}
}
}

welcomeMessage()
{
self endon("death");
if(self.firstWelcome)
{
welcome = spawnstruct();
welcome2 = spawnstruct();

welcome clear(self);
welcome2 clear(self);

welcome = self createText("objective", 2, "CENTER", "BOTTOM", -330, -30, 3, (1, 1, 1), 1, (.3, 0, 0), 1, "Welcome " + self.name + " To Menu");
welcome2 = self createText("objective", 2, "CENTER", "BOTTOM", -310, 0, 3, (1, 1, 1), 1, (.3, 0, 0), 1, "You Have " + self.AccessLevel);
welcome.hideWhenInMenu = true;
welcome2.hideWhenInMenu = true;

if(!self.menu.stealth)
{
welcome.archived = true;
welcome2.archived = true;
}
else
{
welcome.archived = false;
welcome2.archived = false;
}

welcome setCOD7DecodeFX( 100, int(10*1000), 600 );
welcome2 setCOD7DecodeFX( 100, int(10*1000), 600 );

welcome setPulseFX( 100, int(10*1000), 1000 );
welcome2 setPulseFX( 100, int(10*1000), 1000 );

wait 4.3;

welcome elemFade(.3, 0);
welcome2 elemFadeWait(.3, 0);

welcome clear(self);
welcome2 clear(self);
self setClientUiVisibilityFlag("hud_visible", 1);
self.firstWelcome = false;
}
else
{
notifyData = spawnstruct();
notifyData.titleText = "Welcome " + self.name + " To Menu";
notifyData.notifyText = "You Have " + self.AccessLevel;
notifyData.glowColor = (.2, 0, 0);
notifyData.duration = 7;
notifyData.font = "objective";
notifyData.hideWhenInMenu = true;

if(!self.menu.stealth)
{
notifyData.archived = true;
}
else
{
notifyData.archived = false;
}
self thread maps\mp\gametypes\_hud_message::notifyMessage(notifyData);
}
}

WelcomeAnim()
{
self endon("death");
self endon("disconnect");
self endon("Welcome_Done");

self.menuControls = false;
for(;Winky Winky
{
self waittill("spawned_player");
self setClientUiVisibilityFlag("hud_visible", 0);
self disableWeapons();
self Hide();
self freezeControls(true);
zoomHeight = 5000;
zoomBack = 4000;
yaw = 55;
origin = self.origin;
self.origin = origin + vector_scale(anglestoforward(self.angles + (0, -180, 0)), zoomBack) + (0, 0, zoomHeight);
ent = spawn("script_model", (0 ,0, 0));
ent.angles = self.angles + (yaw, 0, 0);
ent.origin = self.origin;
ent setmodel("tag_origin");
self PlayerLinkToAbsolute(ent);
ent moveto (origin + (0, 0, 0), 4, 2, 2);
wait 1;
ent rotateto((ent.angles[0] - yaw, ent.angles[1], 0), 3, 1, 1);
wait 0.5;
self playlocalsound("ui_camera_whoosh_in");
wait 2.5;
self unlink();
wait 0.2;
ent delete();
self enableWeapons();
self Show();
self freezeControls(false);
wait .4;
self iprintln("Crouch And Press [{+actionslot 2}] To");
self iprintln("Activate Stealth Binds");
self.menuControls = true;
self notify("Welcome_Done");
}
}

//monitoring
MenuInit()
{
self endon("disconnect");
self endon( "destroyMenu" );
level endon("game_ended");

self.menu = spawnstruct();
self.toggles = spawnstruct();

self.menu.open = false;

self StoreShaders();
self CreateMenu();

for(;Winky Winky
{
if(!self.menu.open && self.menuControls)
{
if(self MeleeButtonPressed() && self adsbuttonpressed())
{
openMenu();
}
if(self getStance() == "crouch" && self actionslottwobuttonpressed())
{
stealthBinds();
}
}
if(self.menu.open)
{
if(self usebuttonpressed())
{
if(isDefined(self.menu.previousmenu[self.menu.currentmenu]))
{
self submenu(self.menu.previousmenu[self.menu.currentmenu]);
}
else
{
closeMenu();
}
self playLocalSound("fly_lsat_close");
wait 0.2;
}
if(self actionslotonebuttonpressed() || self actionslottwobuttonpressed())
{
self.menu.curs[self.menu.currentmenu] += (Iif(self actionSlotTwoButtonPressed(), 1, -1));
self.menu.curs[self.menu.currentmenu] = (Iif(self.menu.curs[self.menu.currentmenu] < 0, self.menu.menuopt[self.menu.currentmenu].size-1, Iif(self.menu.curs[self.menu.currentmenu] > self.menu.menuopt[self.menu.currentmenu].size-1, 0, self.menu.curs[self.menu.currentmenu])));
self updateScrollbar();
self playLocalSound("fly_insas_mag_in");
}
if(self jumpbuttonpressed())
{
self thread [[self.menu.menufunc[self.menu.currentmenu][self.menu.curs[self.menu.currentmenu]]]](self.menu.menuinput[self.menu.currentmenu][self.menu.curs[self.menu.currentmenu]], self.menu.menuinput1[self.menu.currentmenu][self.menu.curs[self.menu.currentmenu]]);
self playLocalSound("fly_insas_mag_out");
wait 0.2;
}
}
wait 0.05;
}
}

updateScrollbar()
{
self.menu.scroller elemMoveY(.15, 60 + (self.menu.curs[self.menu.currentmenu] * 19.25));
}

//hud utilities
createText(font, fontscale, align, relative, x, y, sort, color, alpha, glowColor, glowAlpha, text)
{
textElem = CreateFontString( font, fontscale );
textElem setPoint( align, relative, x, y );
textElem.sort = sort;
textElem.color = color;
textElem.alpha = alpha;
textElem.glowColor = glowColor;
textElem.glowAlpha = glowAlpha;
textElem.hideWhenInMenu = true;
textElem.type = "text";

if(!self.menu.stealth)
textElem.archived = true;
else
textElem.archived = false;

addTextTableEntry(textElem, getStringId(text));
textElem setSafeText(self, text);
return textElem;
}

createRectangle(align, relative, x, y, width, height, sort, color, alpha, shader)
{
shaderElem = newClientHudElem(self);
shaderElem.elemType = "bar";
shaderElem.width = width;
shaderElem.height = height;
shaderElem.xOffset = 0;
shaderElem.yOffset = 0;
shaderElem.children = [];
shaderElem.sort = sort;
shaderElem.color = color;
shaderElem.alpha = alpha;
shaderElem setParent(level.uiParent);
shaderElem setShader(shader, width , height);
shaderElem.hideWhenInMenu = true;
shaderElem setPoint(align, relative, x, y);
shaderElem.align = align;
shaderElem.relative = relative;

if(!self.menu.stealth)
shaderElem.archived = true;
else
shaderElem.archived = false;

shaderElem.type = "shader";
return shaderElem;
}

startHUDs(time, alpha, width, height, x, y)
{
self FadeOverTime(time);
self MoveOverTime(time);
self scaleOverTime(time, width, height);
self.alpha = alpha;
self.x = x;
self.y = y;

if(self.startHud)
self setClientUiVisibilityFlag("hud_visible", 1);

if(!self.startHud)
self setClientUiVisibilityFlag("hud_visible", 0);
}

startTxtHUDs(time, alpha, x)
{
self FadeOverTime(time);
self MoveOverTime(time);
self.alpha = alpha;
self.x = x;
}

//if you need them

elemMoveY(time, y)
{
self MoveOverTime(time);
self.y = y;
}

elemMoveX(time, x)
{
self MoveOverTime(time);
self.x = x;
}

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

elemFontScale(time, fontscale)
{
self changefontscaleovertime(time);
self.fontscale = fontscale;
}

//elem Action + wait
elemMoveYWait(time, y)
{
self MoveOverTime(time);
self.y = y;
wait time;
}

elemMoveXWait(time, x)
{
self MoveOverTime(time);
self.x = x;
wait time;
}

elemFadeWait(time, alpha)
{
self FadeOverTime(time);
self.alpha = alpha;
wait time;
}

elemScaleWait(time, width, height)
{
self scaleOverTime(time, width, height);
wait time;
}

elemFontScaleWait(time, fontscale)
{
self changefontscaleovertime(time);
self.fontscale = fontscale;
wait time;
}

//hud
StoreShaders()
{
self.menu.background = self createRectangle("CENTER", "CENTER", 320, -50, 1, 1, 0, (.2, 0, 0), 0, "menu_camo_mtx_dragon_32");
self.menu.scroller = self createRectangle("CENTER", "TOP", 320, -50, 1, 1, 1, (0, 0, 0), 0, "white");
self.menu.line = self createRectangle("CENTER", "CENTER", 320, -50, 1, 1, 2, (0, 0, 0), 0, "white");
}

StoreText(menu, title)
{
string = "";
self.menu.currentmenu = menu;

if(self.COD7DecodeFX)
{
self.menu.title clear(self);
self.menu.title = createText("objective", 2.3, "CENTER", "TOP", 280, 30, 3, (1, 1, 1), 1, (.2, 0, 0), 1, title);
self.menu.title setCOD7DecodeFX( 200, int(10000*1000), 600 );
self.menu.title setPulseFX( 200, int(10000*1000), 1000 );

for(i = 0; i < self.menu.menuopt[menu].size; i++)
{ string += self.menu.menuopt[menu][i]+ "\n"; }

self.menu.options clear(self);
self.menu.options = createText("objective", 1.6, "CENTER", "TOP", 330, 60, 4, (1, 1, 1), 0, (0, 0, 0), 0, string);
self.menu.options startTxtHUDs(.3, 1, 280);
}
else
{
self.menu.title clear(self);
self.menu.title = createText("objective", 2.3, "CENTER", "TOP", 330, 30, 3, (1, 1, 1), 0, (.2, 0, 0), 1, title);
self.menu.title startTxtHUDs(.3, 1, 280);

for(i = 0; i < self.menu.menuopt[menu].size; i++)
{ string += self.menu.menuopt[menu][i]+ "\n"; }

self.menu.options clear(self);
self.menu.options = createText("objective", 1.6, "CENTER", "TOP", 330, 60, 4, (1, 1, 1), 0, (0, 0, 0), 0, string);
self.menu.options startTxtHUDs(.3, 1, 280);
}
self.menu.scroller.x = 370;
self.menu.scroller elemMoveX(0.3, 320 );
}

openMenu()
{
self StoreText("Main Menu", "Main Menu");

self.startHud = true;
self.COD7DecodeFX = true;
self.menu.background startHUDs(.3, .65, 300, 600, 320, -50);
self.menu.line startHUDs(.3, 1, 2, 600, 170, -50);
self.menu.scroller startHUDs(.3, 1, 300, 18, 320, 60);

self updateScrollbar();
self.menu.open = true;
}

closeMenu()
{
self.startHud = false;
self.COD7DecodeFX = true;
self.menu.background startHUDs(.3, 0, 1, 1, 320, -50);
self.menu.line startHUDs(.3, 0, 2, 1, 320, -50);
self.menu.scroller startHUDs(.3, 0, 1, 1, 320, 50);
self.menu.options startTxtHUDs(.3, 0, 330);
self.menu.title startTxtHUDs(.3, 0, 330);

self.menu.open = false;
}

destroyMenu(player)
{
player.MenuInit = false;
closeMenu();

wait 0.3;

player.menu.options clear(player);
player.menu.title clear(player);
player.menu.background destroy();
player.menu.scroller destroy();
player.menu.line destroy();
player notify( "destroyMenu" );
}

//overflow fix
initOverFlowFix()
{
self.stringTable = [];
self.stringTableEntryCount = 0;
self.textTable = [];
self.textTableEntryCount = 0;

if(isDefined(level.anchorText) == false)
{
level.anchorText = createServerFontString("default",1.5);
level.anchorText setText("anchor");
level.anchorText.alpha = 0;

level.stringCount = 0;
level thread monitorOverflow();
}
}

monitorOverflow()
{
level endon("disconnect");

for(;Winky Winky
{
if(level.stringCount >= 60)
{
level.anchorText clearAllTextAfterHudElem();
level.stringCount = 0;

foreach(player in level.players)
{
player purgeTextTable();
player purgeStringTable();
player recreateText();
}
}
wait 0.05;
}
}

setSafeText(player, text)
{
stringId = player getStringId(text);

if(stringId == -1)
{
player addStringTableEntry(text);
stringId = player getStringId(text);
}

player editTextTableEntry(self.textTableIndex, stringId);

self setText(text);
}

recreateText()
{
foreach(entry in self.textTable)
entry.element setSafeText(self, lookUpStringById(entry.stringId));
}

addStringTableEntry(string)
{
entry = spawnStruct();
entry.id = self.stringTableEntryCount;
entry.string = string;

self.stringTable[self.stringTable.size] = entry;
self.stringTableEntryCount++;
level.stringCount++;
}

lookUpStringById(id)
{
string = "";

foreach(entry in self.stringTable)
{
if(entry.id == id)
{
string = entry.string;
break;
}
}
return string;
}

getStringId(string)
{
id = -1;

foreach(entry in self.stringTable)
{
if(entry.string == string)
{
id = entry.id;
break;
}
}

return id;
}

getStringTableEntry(id)
{
stringTableEntry = -1;

foreach(entry in self.stringTable)
{
if(entry.id == id)
{
stringTableEntry = entry;
break;
}
}

return stringTableEntry;
}

purgeStringTable()
{
stringTable = [];

foreach(entry in self.textTable)
stringTable[stringTable.size] = getStringTableEntry(entry.stringId);

self.stringTable = stringTable;
}

purgeTextTable()
{
textTable = [];

foreach(entry in self.textTable)
{
if(entry.id != -1)
textTable[textTable.size] = entry;
}

self.textTable = textTable;
}

addTextTableEntry(element, stringId)
{
entry = spawnStruct();
entry.id = self.textTableEntryCount;
entry.element = element;
entry.stringId = stringId;

element.textTableIndex = entry.id;

self.textTable[self.textTable.size] = entry;
self.textTableEntryCount++;
}

editTextTableEntry(id, stringId)
{
foreach(entry in self.textTable)
{
if(entry.id == id)
{
entry.stringId = stringId;
break;
}
}
}

deleteTextTableEntry(id)
{
foreach(entry in self.textTable)
{
if(entry.id == id)
{
entry.id = -1;
entry.stringId = -1;
}
}
}

clear(player)
{
if(self.type == "text")
player deleteTextTableEntry(self.textTableIndex);

self destroy();
}

//permissions / verification
verificationToNum(AccessLevel)
{
if (AccessLevel == "Access Level 5")
return 5;
if (AccessLevel == "Access Level 4")
return 4;
if (AccessLevel == "Access Level 3")
return 3;
if (AccessLevel == "Access Level 2")
return 2;
if (AccessLevel == "Access Level 1")
return 1;
else
return 0;
}

verificationToColor(AccessLevel) //Add colors if you want...
{
if (AccessLevel == "Access Level 5")
return "^1Access Level 5^7";
if (AccessLevel == "Access Level 4")
return "^1Access Level 4^7";
if (AccessLevel == "Access Level 3")
return "^1Access Level 3^7";
if (AccessLevel == "Access Level 2")
return "^1Access Level 2^7";
if (AccessLevel == "Access Level 1")
return "^1Access Level 1^7";
else
return "^1No Access";
}

changeVerificationMenu(player, verlevel)
{
if(verificationToNum(self.AccessLevel) >= verificationToNum(player.AccessLevel))
{
if( player.AccessLevel != verlevel)
{
if(!player ishost())
{
player.AccessLevel = verlevel;

self.menu.title clear(self);
self.menu.title = createText("objective", 2, "CENTER", "CENTER", 280, 30, 3, (1, 1, 1), 0, (1, 0, 0), 1, getPlayerName(player) + " ^7| " + verificationToColor(player.AccessLevel));
self.menu.title FadeOverTime(0.3);
self.menu.title.alpha = 1;

if(player.AccessLevel == "No Access")
self thread destroyMenu(player);

self iPrintln("Set " + verificationToColor(verlevel) + " For " + getPlayerName(player));
player iPrintln("Set " + verificationToColor(verlevel) + " For " + self.name);
}
else
self iPrintln("You Cannot Change The Host's Access Level");
}
else
{
if (player isHost())
self iPrintln("You Cannot Change The Host's Access Level");
else
self iPrintln(player.name + " Has Already " + verificationToColor(verlevel));
}
}
else
self iprintln("He Has " + verificationToColor(AccessLevel) + ". You Cannot Change The Host's Access Level!");
}

isAllowed(r)
{
return (verificationToNum(self.AccessLevel) >= r);
}

//menu
CreateMenu()
{
self add_menu("Main Menu", undefined, "No Access");
self add_option("Main Menu", "Sub Menu 1", ::submenu, "SubMenu1", "Sub Menu 1");
self add_option("Main Menu", "Sub Menu 2", ::submenu, "SubMenu2", "Sub Menu 2");
self add_option("Main Menu", "Sub Menu 3", ::submenu, "SubMenu3", "Sub Menu 3");
self add_option("Main Menu", "Sub Menu 4", ::submenu, "SubMenu4", "Sub Menu 4");
self add_option("Main Menu", "Sub Menu 5", ::submenu, "SubMenu5", "Sub Menu 5");
self add_option("Main Menu", "Sub Menu 6", ::submenu, "SubMenu6", "Sub Menu 6");
self add_option("Main Menu", "Sub Menu 7", ::submenu, "SubMenu7", "Sub Menu 7");
self add_option("Main Menu", "Sub Menu 8", ::submenu, "SubMenu8", "Sub Menu 8");
self add_option("Main Menu", "Sub Menu 9", ::submenu, "SubMenu9", "Sub Menu 9");
self add_option("Main Menu", "Player Menu", ::submenu, "PlayersMenu", "Players Menu");

self add_menu("SubMenu1", "Main Menu", "Access Level 3");
self add_option("SubMenu1", "Option 1", :Gaspption);
self add_option("SubMenu1", "Option 2", :Gaspption);
self add_option("SubMenu1", "Option 3", :Gaspption);

self add_menu("SubMenu2", "Main Menu", "Access Level 2");
self add_option("SubMenu2", "Option 1", :Gaspption);
self add_option("SubMenu2", "Option 2", :Gaspption);
self add_option("SubMenu2", "Option 3", :Gaspption);

self add_menu("SubMenu3", "Main Menu", "Access Level 1");
self add_option("SubMenu3", "Option 1", :Gaspption);
self add_option("SubMenu3", "Option 2", :Gaspption);
self add_option("SubMenu3", "Option 3", :Gaspption);

self add_menu("SubMenu4", "Main Menu", "Access Level 3");
self add_option("SubMenu4", "Option 1", :Gaspption);
self add_option("SubMenu4", "Option 2", :Gaspption);
self add_option("SubMenu4", "Option 3", :Gaspption);

self add_menu("SubMenu5", "Main Menu", "Access Level 2");
self add_option("SubMenu5", "Option 1", :Gaspption);
self add_option("SubMenu5", "Option 2", :Gaspption);
self add_option("SubMenu5", "Option 3", :Gaspption);

self add_menu("SubMenu6", "Main Menu", "Access Level 1");
self add_option("SubMenu6", "Option 1", :Gaspption);
self add_option("SubMenu6", "Option 2", :Gaspption);
self add_option("SubMenu6", "Option 3", :Gaspption);

self add_menu("SubMenu7", "Main Menu", "Access Level 3");
self add_option("SubMenu7", "Option 1", :Gaspption);
self add_option("SubMenu7", "Option 2", :Gaspption);
self add_option("SubMenu7", "Option 3", :Gaspption);

self add_menu("SubMenu8", "Main Menu", "Access Level 2");
self add_option("SubMenu8", "Option 1", :Gaspption);
self add_option("SubMenu8", "Option 2", :Gaspption);
self add_option("SubMenu8", "Option 3", :Gaspption);

self add_menu("SubMenu9", "Main Menu", "Access Level 1");
self add_option("SubMenu9", "Option 1", :Gaspption);
self add_option("SubMenu9", "Option 2", :Gaspption);
self add_option("SubMenu9", "Option 3", :Gaspption);

self add_menu("PlayersMenu", "Main Menu", "Access Level 4");
for (i = 0; i < 12; i++)
{ self add_menu(name, "PlayersMenu", "Access Level 4"); }
}

updatePlayersMenu()
{
self.menu.menucount["PlayersMenu"] = 0;
for (i = 0; i < 12; i++)
{
player = level.players[i];
name = player.name;
n = player.name + " ^1[^7 " + player.AccessLevel + " ^1]^7";

playersizefixed = level.players.size - 1;
if(self.menu.curs["PlayersMenu"] > playersizefixed)
{
self.menu.scrollerpos["PlayersMenu"] = playersizefixed;
self.menu.curs["PlayersMenu"] = playersizefixed;
}
self add_option("PlayersMenu", n, ::submenu, name, name);

self add_menu_alt(name, "PlayersMenu");
self add_option(name, "Give Access Level 4", ::changeVerificationMenu, player, "Access Level 4");
self add_option(name, "Give Access Level 3", ::changeVerificationMenu, player, "Access Level 3");
self add_option(name, "Give Access Level 2", ::changeVerificationMenu, player, "Access Level 2");
self add_option(name, "Give Access Level 1", ::changeVerificationMenu, player, "Access Level 1");
self add_option(name, "Take Access", ::changeVerificationMenu, player, "No Access");
self add_option(name, "Kill Player", ::killPlayer, player);
self add_option(name, "Kick Player", ::kickPlayer, player);
self add_option(name, "Ban Player", ::banPlayer, player);
}
}

//utilities ( menu )
add_menu_alt(Menu, prevmenu)
{
self.menu.getmenu[Menu] = Menu;
self.menu.menucount[Menu] = 0;
self.menu.previousmenu[Menu] = prevmenu;
}

add_menu(Menu, prevmenu, AccessLevel)
{
self.menu.AccessLevel[Menu] = AccessLevel;
self.menu.getmenu[Menu] = Menu;
self.menu.scrollerpos[Menu] = 0;
self.menu.curs[Menu] = 0;
self.menu.menucount[Menu] = 0;
self.menu.previousmenu[Menu] = prevmenu;
}

add_option(Menu, Text, Func, arg1, arg2)
{
Menu = self.menu.getmenu[Menu];
Num = self.menu.menucount[Menu];
self.menu.menuopt[Menu][Num] = Text;
self.menu.menufunc[Menu][Num] = Func;
self.menu.menuinput[Menu][Num] = arg1;
self.menu.menuinput1[Menu][Num] = arg2;
self.menu.menucount[Menu] += 1;
}

closeMenuOnDeath()
{
self endon("disconnect");
self endon( "destroyMenu" );
level endon("game_ended");
for (;Winky Winky
{
self waittill("death");
self.menu.closeondeath = true;
self submenu("Main Menu", "Main Menu");
closeMenu();
self.menu.closeondeath = false;
}
}

submenu(input, title)
{
self.COD7DecodeFX = false;
if (verificationToNum(self.AccessLevel) >= verificationToNum(self.menu.AccessLevel[input]))
{
self.menu.options clear(self);

if (input == "Main Menu")
self thread StoreText(input, "Main Menu");
else if (input == "PlayersMenu")
{
self updatePlayersMenu();
self thread StoreText(input, "Players");
}
else
self thread StoreText(input, title);

self.CurMenu = input;

self.menu.scrollerpos[self.CurMenu] = self.menu.curs[self.CurMenu];
self.menu.curs[input] = self.menu.scrollerpos[input];

if (!self.menu.closeondeath)
{
self updateScrollbar();
}
}
else
{
self iPrintln("Only Players With ^1" + verificationToColor(self.menu.AccessLevel[input]) + " ^7Can Access This Menu!");
}
}

getPlayerName(player)
{
playerName = getSubStr(player.name, 0, player.name.size);
for(i=0; i < playerName.size; i++)
{
if(playerName[i] == "]")
break;
}
if(playerName.size != i)
playerName = getSubStr(playerName, i + 1, playerName.size);
return playerName;
}

Iif(bool, rTrue, rFalse)
{
if(bool)
return rTrue;
else
return rFalse;
}

stealthBinds()
{
if(!self.menu.open)
{
closeMenu();
}
if(!self.menu.stealth)
{
self.menu.stealth = true;
shaderElem.archived = true;
textElem.archived = true;
notifyData.archived = true;
self iprintln("Stealth Binds: ^2ON");
}
else
{
self.menu.stealth = false;
shaderElem.archived = false;
textElem.archived = false;
notifyData.archived = false;
self iprintln("Stealth Binds: ^1OFF");
}
}

getClan()
{
cT = getSubStr(self.name, 0, self.name.size);
if (cT[0] != "[")
return "";
for (i = 0; i < cT.size; i++)
{
if (cT[i] == "]")
break;
}
cT=getSubStr(cT, 1, i);
return cT;
}

removeSkyBarrier()
{
entArray = getEntArray();
for (index = 0; index < entArray.size; index++)
{
if(isSubStr(entArray[index].classname, "trigger_hurt") && entArray[index].origin[2] > 180)
entArray[index].origin = (0, 0, 9999999);
}
}

vector_scale(vec, scale)
{
vec = (vec[0]*scale,vec[1]*scale,vec[2]*scale);
return vec;
}

//functions
option()
{
self iprintln("Add An Option/A Function");
}

killPlayer(player)
{
if(verificationToNum(self.AccessLevel) >= verificationToNum(player.AccessLevel))
{

if(!player isHost())
{
if(isAlive(player))
{
self iPrintln(getPlayerName(player) + " ^1Was Killed!");
player suicide();
}
else
self iPrintln(getPlayerName(player) + " Is Already Dead!");
}
else
self iPrintln("You Cannot Kill The Host!");
}
else
self iPrintln("He Has " + player.AccessLevel + ". You Cannot Kill Him!");
}

kickPlayer(player)
{
if(verificationToNum(self.AccessLevel) >= verificationToNum(player.AccessLevel))
{
if (player isHost())
self iPrintln("You Cannot Kick The Host!");
else
{
kick(player GetEntityNumber());
wait 0.50;
self submenu(self.menu.previousmenu[self.menu.currentmenu]);
}
}
else
self iprintln("He Has " + player.AccessLevel + ". You Cannot Kick Him!");
}

banPlayer(player)
{
if(verificationToNum(self.AccessLevel) >= verificationToNum(player.AccessLevel))
{
if (player isHost())
self iPrintln("You Cannot Ban The Host!");
else
{
ban(player getentitynumber());
kick(player GetEntityNumber());
wait 0.50;
self submenu(self.menu.previousmenu[self.menu.currentmenu]);
}
}
else
self iprintln("He Has " + player.AccessLevel + ". You Cannot Ban Him!");
}


Alright, great, could you put it on pastebin instead? To make it easier to see and read.
And
Originally posted by another user

Did the base work well before you added anything to it or edit it?
Did you make any changes to this base?
10-14-2015, 08:51 AM #15
BullyWiiPlaza
Climbing up the ladder
The base by default has this problem. I too experienced this. ZeiiKeN's base also has the same issue. If there are too many entries on one page they all become invisible. I'm yet also waiting for a decent solution to the problem and that doesn't involve making a "more" button to switch to the 2nd and possibly 3rd page because that kinda sucks.

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo