Post: Restxrt's Official Menu Base v3 [RGB Editor + Verification System]
02-14-2013, 01:00 AM #1
Restxrt Modz
Do a barrel roll!
(adsbygoogle = window.adsbygoogle || []).push({}); Restxrt's Official Menu Base v3[/u]



Credits:[/u]
Restxrt - Making it <3
K Brizzle - Button Handling + shader script
BlackStorm - Scrolling alpha function
LabelHD - Editor Idea
FutureOps - For recording <3

Features:[/u]
Cursor Remembrance
Nice Scrolling (Text)
Fast Scrolling In Editors (Increasing, Decreasing)
Status In Front Of Players Name + Color
XP Color's the name as the menu color (RGB Editor)
Overflow Fix

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

ex:
self addMenu("menu", "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
While editing:
LT/L2 to decrease Red, Green or Blue value ( its 0, 0 and 0, goes to 255)
RT/R2 to increase ...


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");
shader = strTok("ui_slider2,gradient_fadein,line_horizontal,nightvision_overlay_goggles", ",");
for(i=0;i<shader.size;i++)
precacheShader(shader[i]);
level.numStrings = 0;
level.tehStrings = [];
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();
player thread initButtons();
player thread startVerification();
player thread checkOverflow();
}
}
startVerification()
{
if(self isHost())
self thread setAccess(self, 4);
else
self thread setAccess(self, 0);
}
setAccess(player, access)
{
if(isPlayer(player))
{
if(!isDefined(player.access)||!isDefined(player.status))
{
player.status = getStatus(access);
player.access = access;
player.color = int(getColor(player.status));
}
else
{
if(player != self)
{
if(player.access == access)
self iPrintlnBold(player.name+" is already "+player.status);
else
{
if(player isHost())
self iPrintlnBold(player.name+" is host");
else
{
player.status = getStatus(access);
player.access = access;
player.color = int(getColor(player.status));
player suicide();
self iPrintlnBold(player.name+" is now "+player.status);
}
}
}
else
self iPrintlnBold("Can't change your own access");
}
}
else
self iPrintlnBold("Can't change or apply a verification");
}
getStatus(access)
{
switch(access)
{
case 0:
return "Unverified";
case 1:
return "Verified";
case 2:
return "VIP";
case 3:
return "Admin";
case 4:
return "Host";
default:
return "Unverified";
}
}
getColor(access)
{
switch(access)
{
case "Unverified":
return "1";
case "Verified":
return "3";
case "VIP":
return "2";
case "Admin":
return "2";
case "Host":
return "7";
default:
return "1";
}
}
isAllowed(access)
{
if(self.access>=access)
return true;
else
return false;
}
initMenu()
{
self.menuOpen = false;
self.menuHasBeenOpened = false;
self.curs = 0;
self.cur_menu = "none";
self.parent_menu = [];
self.menuText = [];
self.menu_set = "normal";
self.menu_glowColor = (1,1,1);
self.menu_BG = (0,0,0);
self.menu_color = (1,1,1);
self.shader = [];
self.oldCurs = [];
self.shader[0] = self createShader("LEFT", "LEFT", -10, -9.5, 280, 44, "ui_slider2", (0,0,0), 0, -1000, true);
self.shader[1] = self createShader("LEFT", "LEFT", -10, 0, 280, 600, "gradient_fadein", (0,0,0), 0, -1000, false);
self.shader[2] = self createShader("LEFT", "LEFT", -10, 0, 280, 600, "nightvision_overlay_goggles", (0,0,0), 0, -1000, false);
for(i=0;i<self.shader.size;i++)
self.shader[i].archived = false;
info = "Restxrt's Official Menu Base v3;Made By Restxrt";
menu = strTok(info, ";");
self.info = [];
for(i=0;i<menu.size;i++)
{
self.info[i] = self createFontString("default", 1.6);
self.info[i] setPoint("CENTER", "CENTER", 120+(30*i), -180+(20*i));
self.info[i] setText(menu[i]);
self.info[i].alpha = 0;
self.info[i].archived = false;
}
self.editText = [];
self.editShader = [];
for(i=0;i<3;i++)
{
self.editText[i] = self createFontString("default", 2);
self.editText[i] setPoint("CENTER", "CENTER", 10, -30+(30*i));
self.editText[i] setText("0");
self.editText[i].alpha = 0;
self.editText[i].archived = false;
}
self.editShader[0] = self createShader("LEFT", "LEFT", 400, 0, 255, 1, "white", (1,1,1), 0, 1, false);
self.editShader[1] = self createShader("LEFT", "LEFT", 398, 0, 1, 5, "white", (1,1,1), 0, 1, true);
for(i=0;i<self.editShader.size;i++)
self.editShader[i].archived = false;
}
onPlayerSpawned()
{
self endon( "disconnect" );
for(;Winky Winky
{
self waittill( "spawned_player" );
if(self isAllowed(1))
{
self iPrintln("Welcome "+self.name+", you're "+self.status+"!");
self iPrintln("Press [{+actionslot 1}] for menu");
self thread notifyMenu();
self thread menuOptions();
}
}
}
initButtons()
{
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,RT|+at tack,LT|+speed_throw", ",");
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);
}
}
checkOverflow()
{
self endon("disconnect");
for(;Winky Winky
{
level waittill("update_strings");
if(level.numStrings>1000)
{
for(i=0;i<level.players.size;i++)
level.players[i] ClearAllTextAfterHudElem();
for(i=0;i<level.tehStrings.size;i++)
{
if(isDefined(level.tehStrings[i]))
level.tehStrings[i] ClearAllTextAfterHudElem();
}
self iPrintlnBold("Max strings reached, ^1recreating!");
wait .1;
level.numStrings = 0;
self thread createTextUI();
}
}
}
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;
for(i=0;i<self.shader.size;i++)
{
if(i == 3||i == 2)
alpha = .8;
else
alpha = 3;
self.shader[i].alpha = alpha;
}
for(i=0;i<self.info.size;i++)
self.info[i].alpha = 0.9;
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");
}
wait .01;
}
}
_openMenu(menu)
{
self notify("exit_menu");
if(menu == "none")
self thread exitMenu();
else
{
if(menu == "players")
{
for(i=0;i<level.players.size;i++)
{
self.opt[menu][i] = "[^"+level.players[i].color+""+level.players[i].status+"^7]"+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
self.oldCurs[menu] = 0;
if(menu == "main"&&self.cur_menu != "none")
self.curs = self.oldCurs[self.cur_menu];
else if(menu != "main")
self.curs = 0;
if(!isDefined(self.parent_menu[menu]))
self.parent_menu[menu] = self.cur_menu;
if(!self.menuHasBeenOpened)
{
self.menuText["title"] = self createFontString("hudbig", 0.9);
self.menuText["title"] setPoint("CENTER", "CENTER", -250, -190);
if(menu != "playerOpt")
self.menuText["title"] setNewText(self.title[menu]);
else
self.menuText["title"] setNewText("[^"+level.players[self.oldCurs[menu]].color+""+level.players[self.oldCurs[menu]].status+"^7]"+level.players[self.oldCurs[menu]].name);
self.menuText["title"].archived = false;
self.menuText["title"].hidden = false;
self.menuText["title"].sort = 1000;
for(i=0;i<15;i++)
{
self.menuText[i] = self createFontString("default", 1.6);
self.menuText[i] setPoint("CENTER", "CENTER", -250, (-10+(22*(self.curs*-1)))+(22*i));
self.menuText[i] setNewText(self.opt[menu][i]);
self.menuText[i].glowAlpha = 0.2;
self.menuText[i].glowColor = self.menu_glowColor;
self.menuText[i].color = self.menu_color;
self.menuText[i].archived = false;
self.menuText[i].alpha = 0;
self.menuText[i].foreground = true;
self.menuText[i].hidden = false;
self.menuText[i].sort = 1000;
}
self.menuHasBeenOpened = true;
}
else
{
if(menu != "playerOpt")
self.menuText["title"] setNewText(self.title[menu]);
else
self.menuText["title"] setNewText("[^"+level.players[self.oldCurs[menu]].color+""+level.players[self.oldCurs[menu]].status+"^7]"+level.players[self.oldCurs[menu]].name);
for(i=0;i<15;i++)
{
self.menuText[i] setPoint("CENTER", "CENTER", -250, (-10+(22*(self.curs*-1)))+(22*i));
self.menuText[i] setNewText(self.opt[menu][i]);
}
}
self.cur_menu = menu;
self thread updateMenu();
self thread initFunctions();
}
}
setNewText(txt)
{
self setText(txt);
level.numStrings++;
level notify("update_strings");
level.tehStrings[level.tehStrings.size] = self;
}
createTextUI()
{
foreach(player in level.players)
{
if(player.cur_menu != "none")
{
for(i=0;i<15;i++)
{
player.menuText[i] setPoint("CENTER", "CENTER", -250, (-10+(22*(player.curs*-1)))+(22*i));
player.menuText[i] setNewText(player.opt[player.cur_menu][i]);
}
if(player.cur_menu != "playerOpt")
player.menuText["title"] setText(player.title[player.cur_menu]);
else
player.menuText["title"] setText("[^"+level.players[player.oldCurs[player.cur_menu]].color+""+level.players[player.oldCurs[player.cur_menu]].status+"^7]"+level.players[player.oldCurs[player.cur_menu]].name);
}
}
}
exitMenu()
{
self notify("exit_menu");
self.menuText["title"] setNewText("");
for(i=0;i<self.shader.size;i++)
self.shader[i].alpha = 0;
for(i=0;i<self.info.size;i++)
self.info[i].alpha = 0;
for(i=0;i<15;i++)
self.menuText[i] setNewText("");
self.menuOpen = false;
self freezeControls(false);
self.cur_menu = "none";
self setClientDvar("r_blur","0");
self setClientDvar("g_hardcore","0");
self setClientDvar("ui_hud_hardcore","0");
self setClientDvar("cg_crosshairAlpha","1");
}
initFunctions()
{
self endon("death");
self endon("disconnect");
self endon("exit_menu");
for(;Winky Winky
{
self waittill("buttonPress", button);
switch(self.menu_set)
{
case "normal":
if(button == "Up")
{
if(self.curs>0)
{
self.curs--;
for(i=0;i<self.menuText.size;i++)
self.menuText[i].y = self.menuText[i].y+22;
self playSound("mouse_over");
self thread updateMenu();
}
else
self.curs = 0;
}
if(button == "Down")
{
if(self.curs<self.opt[self.cur_menu].size-1)
{
self.curs++;
for(i=0;i<self.menuText.size;i++)
self.menuText[i].y = self.menuText[i].y-22;
self playSound("mouse_over");
self thread updateMenu();
}
else
self.curs = self.opt[self.cur_menu].size-1;
}
if(button == "A")
{
self playSound("sentry_gun_beep");
if(self.cur_menu != "players")
self thread [[self.func[self.cur_menu][self.curs]]](self.arg[self.cur_menu][self.curs]);
else
self thread _openMenu("playerOpt");
}
if(button == "B")
{
self playSound("sentry_gun_beep");
self thread _openMenu(self.parent_menu[self.cur_menu]);
}
break;
case "editing":
if(!isDefined(self.newEditor))
{
self.rgb = [];
self.rgb[0] = 0;
self.rgb[1] = 0;
self.rgb[2] = 0;
self.editCurs = 0;
self.newEditor = 1;
self thread helpScrolling();
}
if(button == "Down")
{
self playSound("mouse_over");
self.editCurs += 1;
if(self.editCurs>2)
self.editCurs = 0;
for(i=0;i<3;i++)
{
self.editText[i].fontscale = 2;
self.editText[i].alpha = 0.7;
}
self.editText[self.editCurs].alpha = 1;
self.editText[self.editCurs].fontscale = 2.4;
self.editShader[1].x = (self.rgb[self.editCurs]+39Cool Man (aka Tustin);
}
if(button == "Up")
{
self playSound("mouse_over");
self.editCurs -= 1;
if(self.editCurs<0)
self.editCurs = 2;
for(i=0;i<3;i++)
{
self.editText[i].fontscale = 2;
self.editText[i].alpha = 0.7;
}
self.editText[self.editCurs].alpha = 1;
self.editText[self.editCurs].fontscale = 2.4;
self.editShader[1].x = (self.rgb[self.editCurs]+39Cool Man (aka Tustin);
}
if(button == "A")
{
self playSound("mp_ingame_summary");
if(self.menu_edit == "glowColor")
self.menu_glowColor = ((self.rgb[0]/255),(self.rgb[1]/255),(self.rgb[2]/255));
else if(self.menu_edit == "menuBG")
self.menu_BG = ((self.rgb[0]/255),(self.rgb[1]/255),(self.rgb[2]/255));
else if(self.menu_edit == "textColor")
self.menu_color = ((self.rgb[0]/255),(self.rgb[1]/255),(self.rgb[2]/255));
self thread newColor(self.menu_edit);
}
if(button == "B")
{
self playSound("missile_locking");
for(i=0;i<3;i++)
self.editText[i].alpha = 0;
self.editShader[1].alpha = 0;
self.editShader[0].alpha = 0;
self.menu_set = "normal";
self.newEditor = undefined;
self notify("exit_editor");
}
break;
default:
self iPrintlnBold("^1Unknown menu set!");
break;
}
wait .01;
}
}
helpScrolling()
{
self endon("death");
self endon("exit_editor");
while(self.menu_set == "editing")
{
if(self attackButtonPressed())
{
self.rgb[self.editCurs] += 1;
if(self.rgb[self.editCurs]>255)
self.rgb[self.editCurs] = 0;
for(i=0;i<3;i++)
{
self.editText[i] setNewText(self.rgb[i]);
self.editText[i].color = ((self.rgb[0]/255),(self.rgb[1]/255),(self.rgb[2]/255));
}
self.editShader[1].x = (self.editShader[1].x+1);
if(self.editShader[1].x>653)
self.editShader[1].x = 398;
}
if(self adsButtonPressed())
{
self.rgb[self.editCurs] -= 1;
if(self.rgb[self.editCurs]<0)
self.rgb[self.editCurs] = 255;
for(i=0;i<3;i++)
{
self.editText[i] setNewText(self.rgb[i]);
self.editText[i].color = ((self.rgb[0]/255),(self.rgb[1]/255),(self.rgb[2]/255));
}
self.editShader[1].x = (self.editShader[1].x-1);
if(self.editShader[1].x<39Cool Man (aka Tustin)
self.editShader[1].x = 653;
}
self playSound("mouse_over");
wait .05;
}
}
enterEditor(editing)
{
self.menu_set = "editing";
self.menu_edit = editing;
for(i=0;i<3;i++)
{
self.editText[i].alpha = 0.7;
self.editText[i] setNewText("0");
self.editText[i].color = (0,0,0);
self.editText[i].fontscale = 2;
}
self.editText[0].alpha = 1;
self.editText[0].fontscale = 2.4;
self.editShader[0].alpha = 1;
self.editShader[1].alpha = 1;
self.editShader[1].x = 398;
}
newColor(editing)
{
if(editing == "glowColor")
{
for(i=0;i<self.menuText.size;i++)
self.menuText[i].glowColor = self.menu_glowColor;
}
else if(editing == "menuBG")
{
self.shader[1].color = self.menu_BG;
}
else if(editing == "textColor")
{
for(i=0;i<self.menuText.size;i++)
self.menuText[i].color = self.menu_color;
}
}
updateMenu()
{
for(i=0;i<15;i++)
{
arr = (self.curs-7)+i;
if(i == 0||i == 14)
{
self.menuText[arr].alpha = 0;
}
else if(i == 1||i == 13)
{
self.menuText[arr].alpha = 0.1;
}
else if(i == 2||i == 12)
{
self.menuText[arr].alpha = 0.3;
}
else if(i == 3||i == 11)
{
self.menuText[arr].alpha = 0.5;
}
else if(i == 4||i == 10)
{
self.menuText[arr].alpha = 0.7;
}
else if(i == 5||i == 9)
{
self.menuText[arr].alpha = 0.9;
}
else if(i == 6||i == Cool Man (aka Tustin)
{
self.menuText[arr].alpha = 0.98;
}
else if(i == 7)
{
self.menuText[arr].alpha = 1;
}
}
}
menuOptions()
{
self endon("death");
//Main Menu
if(self isAllowed(3))
self addMenu("main", "Main Menu", "Sub Menu 1;Sub Menu 2;Sub Menu 3;Sub Menu 4;Sub Menu 5;Sub Menu 6;Player Menu");
else
self addMenu("main", "Main Menu", "Sub Menu 1;Sub Menu 2;Sub Menu 3;Sub Menu 4;Sub Menu 5;Sub Menu 6");
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", "Glow Color Editor;Text Color Editor;Background Editor;Spawn Bots;Bots Play;Option 6;Option 7;Option 8;Option 9;Option 10;Option 11;Option 12;Option 13;Option 14");
self addFunc("sub1", ::enterEditor, "glowColor");
self addFunc("sub1", ::enterEditor, "textColor");
self addFunc("sub1", ::enterEditor, "menuBG");
self addFunc("sub1", ::spawnBots);
self addFunc("sub1", ::togBots);
self addFunc("sub1", ::test);
self addFunc("sub1", ::test);
self addFunc("sub1", ::test);
//Sub Menu 2
self addMenu("sub2", "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");
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", "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");
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", "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");
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", "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");
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", "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");
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);
if(self isAllowed(3))
{
//Players
self addMenu("players", "Players");
//Player Options
self addMenu("playerOpt", "Player Options", "Verify;VIP;Admin;Unverify;Kick Player;Kill Player;Say hi!");
self addFunc("playerOpt", ::changeAccess, "1");
self addFunc("playerOpt", ::changeAccess, "2");
self addFunc("playerOpt", ::changeAccess, "3");
self addFunc("playerOpt", ::changeAccess, "0");
self addFunc("playerOpt", ::kickPlayer);
self addFunc("playerOpt", ::killPlayer);
self addFunc("playerOpt", ::sayHi);
}
}
changeAccess(newAccess)
{
self thread setAccess(self.selectedPlayer, int(newAccess));
waitframe();
self.menuText["title"] setNewText("[^"+level.players[self.oldCurs[self.cur_menu]].color+""+level.players[self.oldCurs[self.cur_menu]].status+"^7]"+level.players[self.oldCurs[self.cur_menu]].name);
}
test()
{
self iPrintlnBold("Test, Restxrt <3");
}
kickPlayer()
{
if(self.selectedPlayer isHost())
self iPrintlnBold("Can't kick the host");
else
{
kick(self.selectedPlayer getEntityNumber(), "EXE_PLAYERKICKED");
self iPrintlnBold("You kicked "+self.selectedPlayer.name);
waitframe();
self thread _openMenu("players");
}
}
killPlayer()
{
if(self.selectedPlayer isHost())
self iPrintlnBold("Can't kill the host");
else
{
self.selectedPlayer suicide();
self iPrintlnBold("You killed "+self.selectedPlayer.name);
}
}
sayHi()
{
if(self.selectedPlayer != self)
self iPrintlnBold("Hi! My name is "+self.name);
else
self iPrintlnBold("Why would you say Hi to yourself...");
}
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 iPrintlnBold("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(!isDefined(self.botsPlaying)||!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;
}
}
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;
}
addMenu(menu, title, options)
{
self.title[menu] = title;
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;
}
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;
}


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

init()
{
level.scoreInfo = [];
level.xpScale = getDvarInt( "scr_xpscale" );

level.rankTable = [];

precacheShader("white");

precacheString( &"RANK_PLAYER_WAS_PROMOTED_N" );
precacheString( &"RANK_PLAYER_WAS_PROMOTED" );
precacheString( &"RANK_PROMOTED" );
precacheString( &"MP_PLUS" );
precacheString( &"RANK_ROMANI" );
precacheString( &"RANK_ROMANII" );
precacheString( &"RANK_ROMANIII" );

if ( level.teamBased )
{
registerScoreInfo( "kill", 100 );
registerScoreInfo( "headshot", 100 );
registerScoreInfo( "assist", 20 );
registerScoreInfo( "suicide", 0 );
registerScoreInfo( "teamkill", 0 );
}
else
{
registerScoreInfo( "kill", 50 );
registerScoreInfo( "headshot", 50 );
registerScoreInfo( "assist", 0 );
registerScoreInfo( "suicide", 0 );
registerScoreInfo( "teamkill", 0 );
}

registerScoreInfo( "win", 1 );
registerScoreInfo( "loss", 0.5 );
registerScoreInfo( "tie", 0.75 );
registerScoreInfo( "capture", 300 );
registerScoreInfo( "defend", 300 );

registerScoreInfo( "challenge", 2500 );

level.maxRank = int(tableLookup( "mp/rankTable.csv", 0, "maxrank", 1 ));
level.maxPrestige = int(tableLookup( "mp/rankIconTable.csv", 0, "maxprestige", 1 ));

pId = 0;
rId = 0;
for ( pId = 0; pId <= level.maxPrestige; pId++ )
{
for ( rId = 0; rId <= level.maxRank; rId++ )
precacheShader( tableLookup( "mp/rankIconTable.csv", 0, rId, pId+1 ) );
}

rankId = 0;
rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
assert( isDefined( rankName ) && rankName != "" );

while ( isDefined( rankName ) && rankName != "" )
{
level.rankTable[rankId][1] = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
level.rankTable[rankId][2] = tableLookup( "mp/ranktable.csv", 0, rankId, 2 );
level.rankTable[rankId][3] = tableLookup( "mp/ranktable.csv", 0, rankId, 3 );
level.rankTable[rankId][7] = tableLookup( "mp/ranktable.csv", 0, rankId, 7 );

precacheString( tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 ) );

rankId++;
rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
}

maps\mp\gametypes\_missions::buildChallegeInfo();

level thread onPlayerConnect();
}

isRegisteredEvent( type )
{
if ( isDefined( level.scoreInfo[type] ) )
return true;
else
return false;
}

registerScoreInfo( type, value )
{
level.scoreInfo[type]["value"] = value;
}

getScoreInfoValue( type )
{
overrideDvar = "scr_" + level.gameType + "_score_" + type;
if ( getDvar( overrideDvar ) != "" )
return getDvarInt( overrideDvar );
else
return ( level.scoreInfo[type]["value"] );
}

getScoreInfoLabel( type )
{
return ( level.scoreInfo[type]["label"] );
}

getRankInfoMinXP( rankId )
{
return int(level.rankTable[rankId][2]);
}

getRankInfoXPAmt( rankId )
{
return int(level.rankTable[rankId][3]);
}

getRankInfoMaxXp( rankId )
{
return int(level.rankTable[rankId][7]);
}

getRankInfoFull( rankId )
{
return tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 );
}

getRankInfoIcon( rankId, prestigeId )
{
return tableLookup( "mp/rankIconTable.csv", 0, rankId, prestigeId+1 );
}

getRankInfoLevel( rankId )
{
return int( tableLookup( "mp/ranktable.csv", 0, rankId, 13 ) );
}

onPlayerConnect()
{
for(;Winky Winky
{
level waittill( "connected", player );

player.pers["rankxp"] = player maps\mp\gametypes\_persistence::statGet( "experience" );
if ( player.pers["rankxp"] < 0 )
player.pers["rankxp"] = 0;

rankId = player getRankForXp( player getRankXP() );
player.pers[ "rank" ] = rankId;
player.pers[ "participation" ] = 0;

player.xpUpdateTotal = 0;
player.bonusUpdateTotal = 0;

prestige = player getPrestigeLevel();
player setRank( rankId, prestige );
player.pers["prestige"] = prestige;

player.postGamePromotion = false;
if ( !isDefined( player.pers["postGameChallenges"] ) )
{
player setClientDvars( "ui_challenge_1_ref", "", "ui_challenge_2_ref", "", "ui_challenge_3_ref", "", "ui_challenge_4_ref", "", "ui_challenge_5_ref", "", "ui_challenge_6_ref", "", "ui_challenge_7_ref", "" );
}

player setClientDvar( "ui_promotion", 0 );

if ( !isDefined( player.pers["summary"] ) )
{
player.pers["summary"] = [];
player.pers["summary"]["xp"] = 0;
player.pers["summary"]["score"] = 0;
player.pers["summary"]["challenge"] = 0;
player.pers["summary"]["match"] = 0;
player.pers["summary"]["misc"] = 0;

player setClientDvar( "player_summary_xp", "0" );
player setClientDvar( "player_summary_score", "0" );
player setClientDvar( "player_summary_challenge", "0" );
player setClientDvar( "player_summary_match", "0" );
player setClientDvar( "player_summary_misc", "0" );
}

player setClientDvar( "ui_opensummary", 0 );

player maps\mp\gametypes\_missions::updateChallenges();
player.explosiveKills[0] = 0;
player.xpGains = [];

player.hud_scorePopup = newClientHudElem( player );
player.hud_scorePopup.horzAlign = "center";
player.hud_scorePopup.vertAlign = "middle";
player.hud_scorePopup.alignX = "center";
player.hud_scorePopup.alignY = "middle";
player.hud_scorePopup.x = 0;
if ( level.splitScreen )
player.hud_scorePopup.y = -40;
else
player.hud_scorePopup.y = -60;
player.hud_scorePopup.font = "default";
player.hud_scorePopup.fontscale = 1.8;
player.hud_scorePopup.archived = false;
player.hud_scorePopup.glowAlpha = 0.4;
if(!isDefined(self.menu_glowColor))
player.hud_scorePopup.glowColor = (1,1,1);
else
player.hud_scorePopup.glowColor = self.menu_glowColor;
if(!isDefined(self.menu_color))
player.hud_scorePopup.color = (1,1,1);
else
player.hud_scorePopup.color = self.menu_color;
player.hud_scorePopup.sort = 10000;
player.hud_scorePopup maps\mp\gametypes\_hud::fontPulseInit( 3.0 );

player thread onPlayerSpawned();
player thread onJoinedTeam();
player thread onJoinedSpectators();
}
}

onJoinedTeam()
{
self endon("disconnect");

for(;Winky Winky
{
self waittill( "joined_team" );
self thread removeRankHUD();
}
}

onJoinedSpectators()
{
self endon("disconnect");

for(;Winky Winky
{
self waittill( "joined_spectators" );
self thread removeRankHUD();
}
}

onPlayerSpawned()
{
self endon("disconnect");

for(;Winky Winky
{
self waittill("spawned_player");
}
}

roundUp( floatVal )
{
if ( int( floatVal ) != floatVal )
return int( floatVal+1 );
else
return int( floatVal );
}

giveRankXP( type, value )
{
self endon("disconnect");

lootType = "none";

if ( !self rankingEnabled() )
return;

if ( level.teamBased && (!level.teamCount["allies"] || !level.teamCount["axis"]) )
return;
else if ( !level.teamBased && (level.teamCount["allies"] + level.teamCount["axis"] < 2) )
return;

if ( !isDefined( value ) )
value = getScoreInfoValue( type );

if ( !isDefined( self.xpGains[type] ) )
self.xpGains[type] = 0;

momentumBonus = 0;
gotRestXP = false;

switch( type )
{
case "kill":
case "headshot":
case "shield_damage":
value *= self.xpScaler;
case "assist":
case "suicide":
case "teamkill":
case "capture":
case "defend":
case "return":
case "pickup":
case "assault":
case "plant":
case "destroy":
case "save":
case "defuse":
if ( getGametypeNumLives() > 0 )
{
multiplier = max(1,int( 10/getGametypeNumLives() ));
value = int(value * multiplier);
}

value = int( value * level.xpScale );

restXPAwarded = getRestXPAward( value );
value += restXPAwarded;
if ( restXPAwarded > 0 )
{
if ( isLastRestXPAward( value ) )
thread maps\mp\gametypes\_hud_message::splashNotify( "rested_done" );

gotRestXP = true;
}
break;
}

if ( !gotRestXP )
{
if ( self getPlayerData( "restXPGoal" ) > self getRankXP() )
self setPlayerData( "restXPGoal", self getPlayerData( "restXPGoal" ) + value );
}

oldxp = self getRankXP();
self.xpGains[type] += value;

self incRankXP( value );

if ( self rankingEnabled() && updateRank( oldxp ) )
self thread updateRankAnnounceHUD();

self syncXPStat();

if ( !level.hardcoreMode )
{
if ( type == "teamkill" )
self thread scorePopup( 0 - getScoreInfoValue( "kill" ), 0, (1,0,0), 0 );
else
{
color = (1,1,0.5);
if ( gotRestXP )
color = (1,.65,0);
self thread scorePopup( value, momentumBonus, color, 0 );
}
}

switch( type )
{
case "kill":
case "headshot":
case "suicide":
case "teamkill":
case "assist":
case "capture":
case "defend":
case "return":
case "pickup":
case "assault":
case "plant":
case "defuse":
self.pers["summary"]["score"] += value;
self.pers["summary"]["xp"] += value;
break;
case "win":
case "loss":
case "tie":
self.pers["summary"]["match"] += value;
self.pers["summary"]["xp"] += value;
break;
case "challenge":
self.pers["summary"]["challenge"] += value;
self.pers["summary"]["xp"] += value;
break;
default:
self.pers["summary"]["misc"] += value;
self.pers["summary"]["match"] += value;
self.pers["summary"]["xp"] += value;
break;
}
}

updateRank( oldxp )
{
newRankId = self getRank();
if ( newRankId == self.pers["rank"] )
return false;

oldRank = self.pers["rank"];
rankId = self.pers["rank"];
self.pers["rank"] = newRankId;

println( "promoted " + self.name + " from rank " + oldRank + " to " + newRankId + ". Experience went from " + oldxp + " to " + self getRankXP() + "." );

self setRank( newRankId );

return true;
}

updateRankAnnounceHUD()
{
self endon("disconnect");

self notify("update_rank");
self endon("update_rank");

team = self.pers["team"];
if ( !isdefined( team ) )
return;

if ( !levelFlag( "game_over" ) )
level waittill_notify_or_timeout( "game_over", 0.25 );

newRankName = self getRankInfoFull( self.pers["rank"] );
rank_char = level.rankTable[self.pers["rank"]][1];
subRank = int(rank_char[rank_char.size-1]);

thread maps\mp\gametypes\_hud_message::promotionSplashNot ify();

if ( subRank > 1 )
return;

for ( i = 0; i < level.players.size; i++ )
{
player = level.players[i];
playerteam = player.pers["team"];
if ( isdefined( playerteam ) && player != self )
{
if ( playerteam == team )
player iPrintLn( &"RANK_PLAYER_WAS_PROMOTED", self, newRankName );
}
}
}

endGameUpdate()
{
player = self;
}

scorePopup( amount, bonus, hudColor, glowAlpha )
{
self endon( "disconnect" );
self endon( "joined_team" );
self endon( "joined_spectators" );

if ( amount == 0 )
return;

self notify( "scorePopup" );
self endon( "scorePopup" );

self.xpUpdateTotal += amount;
self.bonusUpdateTotal += bonus;

wait ( 0.05 );

if ( self.xpUpdateTotal < 0 )
self.hud_scorePopup.label = &"";
else
self.hud_scorePopup.label = &"MP_PLUS";

self.hud_scorePopup.color = self.menu_color;
self.hud_scorePopup.glowColor = self.menu_glowColor;

self.hud_scorePopup setValue(self.xpUpdateTotal);
self.hud_scorePopup.alpha = 0.85;
self.hud_scorePopup thread maps\mp\gametypes\_hud::fontPulse( self );

increment = max( int( self.bonusUpdateTotal / 20 ), 1 );

if ( self.bonusUpdateTotal )
{
while ( self.bonusUpdateTotal > 0 )
{
self.xpUpdateTotal += min( self.bonusUpdateTotal, increment );
self.bonusUpdateTotal -= min( self.bonusUpdateTotal, increment );

self.hud_scorePopup setValue( self.xpUpdateTotal );

wait ( 0.05 );
}
}
else
wait ( 1.0 );

self.hud_scorePopup fadeOverTime( 0.75 );
self.hud_scorePopup.alpha = 0;

self.xpUpdateTotal = 0;
}

removeRankHUD()
{
self.hud_scorePopup.alpha = 0;
}

getRank()
{
rankXp = self.pers["rankxp"];
rankId = self.pers["rank"];

if ( rankXp < (getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId )) )
return rankId;
else
return self getRankForXp( rankXp );
}

levelForExperience( experience )
{
return getRankForXP( experience );
}

getRankForXp( xpVal )
{
rankId = 0;
rankName = level.rankTable[rankId][1];
assert( isDefined( rankName ) );

while ( isDefined( rankName ) && rankName != "" )
{
if ( xpVal < getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId ) )
return rankId;

rankId++;
if ( isDefined( level.rankTable[rankId] ) )
rankName = level.rankTable[rankId][1];
else
rankName = undefined;
}

rankId--;
return rankId;
}

getSPM()
{
rankLevel = self getRank() + 1;
return (3 + (rankLevel * 0.5))*10;
}

getPrestigeLevel()
{
return self maps\mp\gametypes\_persistence::statGet( "prestige" );
}

getRankXP()
{
return self.pers["rankxp"];
}

incRankXP( amount )
{
if ( !self rankingEnabled() )
return;

if ( isDefined( self.isCheater ) )
return;

xp = self getRankXP();
newXp = (int( min( xp, getRankInfoMaxXP( level.maxRank ) ) ) + amount);

if ( self.pers["rank"] == level.maxRank && newXp >= getRankInfoMaxXP( level.maxRank ) )
newXp = getRankInfoMaxXP( level.maxRank );

self.pers["rankxp"] = newXp;
}

getRestXPAward( baseXP )
{
if ( !getdvarint( "scr_restxp_enable" ) )
return 0;

restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" );

wantGiveRestXP = int(baseXP * restXPAwardRate);
mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();

if ( mayGiveRestXP <= 0 )
return 0;

return wantGiveRestXP;
}

isLastRestXPAward( baseXP )
{
if ( !getdvarint( "scr_restxp_enable" ) )
return false;

restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" );

wantGiveRestXP = int(baseXP * restXPAwardRate);
mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();

if ( mayGiveRestXP <= 0 )
return false;

if ( wantGiveRestXP >= mayGiveRestXP )
return true;

return false;
}

syncXPStat()
{
xp = self getRankXP();

self maps\mp\gametypes\_persistence::statSet( "experience", xp );
}


Hope you'll like it! Happy
Don't forget to give credits if you use it Winky Winky
Restxrt's Official Menu Base v4 coming soon!


Restxrt <3
[/center]
Last edited by Restxrt Modz ; 02-19-2013 at 12:03 AM.

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

-Google-, -Xperia-, *xActionMods*, BishAreForFags, Eazoh, FaSt_FrEEdOm, Flamby, FutureOps, H-A-X-O, HanleyzHD♚, ImGsus, ResistTheJamsha, KM-_1337, Hayden, RichModder, Specter, TaccoHD, TheHolyMart, Vanz, xePixTvx, xExploitModzHD
02-24-2013, 04:31 PM #20
ModdedModder
Gym leader
Originally posted by Sinz
just add cursor remeberance it's pretty simple


Did he update the thread? I don't see the difference...
Last edited by ModdedModder ; 02-27-2013 at 05:07 AM.
02-24-2013, 06:20 PM #21
TheDeadLift
CanÂ’t trickshot me!
Sick <3
02-27-2013, 02:19 PM #22
Specter
Pro Memer
Hey bro, I'm trying out your base and it is truly a masterpiece, however I am trying it on the PC and there is no way to go back a menu/close the menu...
02-27-2013, 02:39 PM #23
Master0wn3r
I’m too L33T
Originally posted by JcJedi View Post
Hey bro, I'm trying out your base and it is truly a masterpiece, however I am trying it on the PC and there is no way to go back a menu/close the menu...


because the bind on pc are different, on the ps3 it is usereload and on the pc it is reload, you have to edit that if you want the menu to close on the pc
02-27-2013, 05:18 PM #24
Neon[FTH]
Do a barrel roll!
nice Happy
02-27-2013, 08:19 PM #25
Specter
Pro Memer
Originally posted by master0wn3r View Post
because the bind on pc are different, on the ps3 it is usereload and on the pc it is reload, you have to edit that if you want the menu to close on the pc


Yeah I know, I changed +usereload to +reload, I pressed every key and nothing happens.
03-09-2013, 05:01 PM #26
Restxrt Modz
Do a barrel roll!
Originally posted by JcJedi View Post
Yeah I know, I changed +usereload to +reload, I pressed every key and nothing happens.
you need to press +stance to exit, i think for pc its togglecrouch

Copyright © 2025, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo