#include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\gametypes\_hud;
#include maps\mp\gametypes\_hud_util;
#include maps\mp\gametypes\_globallogic;
#include maps\mp\gametypes\_hud_message;
#include maps\mp\gametypes\_weapons;
#include maps\mp\gametypes\_rank;
/*onPlayerSpawned()
{
self endon("disconnect");
level endon("game_ended");
self.MenuInit = false;
for(;
{
self waittill("spawned_player");
if( self.status == "Host" || self.status == "Co-Host" || self.status == "Admin" || self.status == "VIP" || self.status == "Verified")
{
if (!self.MenuInit)
{
self freezecontrols(false);
self iprintln("^5Welcome to ^2Vitruvius v1 ^5by MoDzTrolls");
self iprintln("^1[{+speed_throw}] + [{+attack}]^6 to Open");
self.MenuInit = true;
self thread MenuInit();
self thread closeMenuOnDeath();
self.menu.backgroundinfo1 = self drawShader(level.icontest, -400, -100, 1000, 1000, (0.04, 0.66, 0.89), 1, 0);
self.menu.backgroundinfo = self drawShader(level.icontest, 400, -100, 1000, 1000, (0.04, 0.66, 0.89), 1, 0);
self.menu.backgroundinfo.alpha = 0;
self.infos = self createFontString( "objective", 2);
self.infos setPoint( "LEFT", "LEFT", 180, -150 );
self.infos setText("");
self.infos.alpha = 0;
self.infos.foreground = true;
self.infos.archived = false;
}
}
else{ }
}
}*/
init()
{
level thread onplayerconnect();
}
onplayerconnect()
{
for(;
{
level waittill( "connecting", player );
if(player isHost())
player.status = "Host";
else
player.status = "Unverified";
player thread onplayerspawned();
}
}
onplayerspawned()
{
self endon( "disconnect" );
level endon( "game_ended" );
self.MenuInit = false;
for(;
{
self waittill( "spawned_player" );
if( self.status == "Host" || self.status == "CoHost" || self.status == "Admin" || self.status == "VIP" || self.status == "Verified")
{
if (!self.MenuInit)
{
self.MenuInit = true;
self thread MenuInit();
self thread closeMenuOnDeath();
self iprintln("^5Welcome to ^2Vitruvius v1 ^5by MoDzTrolls");
self iprintln("^1[{+speed_throw}] + [{+melee}]^6 to Open");
}
}
}
}
drawText(text, font, fontScale, x, y, color, alpha, glowColor, glowAlpha, sort)
{
hud = self createFontString(font, fontScale);
hud setText(text);
hud.x = x;
hud.y = y;
hud.color = color;
hud.alpha = alpha;
hud.glowColor = glowColor;
hud.glowAlpha = glowAlpha;
hud.sort = sort;
hud.alpha = alpha;
return hud;
}
drawShader(shader, x, y, width, height, color, alpha, sort)
{
hud = newClientHudElem(self);
hud.elemtype = "icon";
hud.color = color;
hud.alpha = alpha;
hud.sort = sort;
hud.children = [];
hud setParent(level.uiParent);
hud setShader(shader, width, height);
hud.x = x;
hud.y = y;
return hud;
}
verificationToNum(status)
{
if (status == "Host")
return 5;
if (status == "CoHost")
return 4;
if (status == "Admin")
return 3;
if (status == "VIP")
return 2;
if (status == "Verified")
return 1;
else
return 0;
}
verificationToColor(status)
{
if (status == "Host")
return "^2Host";
if (status == "CoHost")
return "^5CoHost";
if (status == "Admin")
return "^1Admin";
if (status == "VIP")
return "^4VIP";
if (status == "Verified")
return "^3Verified";
else
return "^7Unverified";
}
changeVerificationMenu(player, verlevel)
{
if( player.status != verlevel)
{
player.status = verlevel;
self.menu.title destroy();
self.menu.title = drawText("[" + verificationToColor(player.status) + "^7] " + player.name, "objective", 2, 280, 30, (1, 1, 1), 0, (0, 0.58, 1), 1, 3);
self.menu.title FadeOverTime(0.3);
self.menu.title.alpha = 1;
if(player.status == "Unverified")
self thread destroyMenu(player);
player suicide();
self iPrintln("Set Access Level For " + player.name + " To " + verificationToColor(verlevel));
player iPrintln("Your Access Level Has Been Set To " + verificationToColor(verlevel));
}
else
{
self iPrintln("Access Level For " + player.name + " Is Already Set To " + verificationToColor(verlevel));
}
}
changeVerification(player, verlevel)
{
player.status = verlevel;
}
Iif(bool, rTrue, rFalse)
{
if(bool)
return rTrue;
else
return rFalse;
}
CreateMenu()
{
self add_menu("Main Menu", undefined, "Unverified");
self add_option("Main Menu", "Self Menu", ::submenu, "SubMenu1", "Self Mods");
self add_option("Main Menu", "Say Menu", ::submenu, "SubMenu2", "Say Mods");
self add_option("Main Menu", "Sub Menu 3", ::submenu, "SubMenu3", "Sub Menu 3");
self add_option("Main Menu", "Players", ::submenu, "PlayersMenu", "Players");
self add_menu("SubMenu1", "Main Menu", "Admin");
self add_option("SubMenu1", "God Mode", ::Toggle_God);
self add_option("SubMenu1", "Unlimited Ammo", ::Toggle_unlimitedammo);
self add_option("SubMenu1", "Multi Jump", ::Toggle_Multijump);
self add_option("SubMenu1", "Speed x2", ::Toggle_SpeedX2);
self add_option("SubMenu1", "Give Scorestreaks", ::GiveScorestreaks);
self add_option("SubMenu1", "Give Adv UAV", ::ToggleUAV2);
self add_option("SubMenu1", "All Perks", ::doPerks);
self add_option("SubMenu1", "Pro Mod", ::ToggleFOV);
self add_option("SubMenu1", "Change Class", ::ChangeClass);
self add_option("SubMenu1", "Invisible", ::Toggle_Hideeeeee);
self add_option("SubMenu1", "Teleport", ::doTeleport);
self add_menu("SubMenu2", "Main Menu", "VIP");
self add_option("SubMenu2", "Option 1");
self add_option("SubMenu2", "Option 2");
self add_option("SubMenu2", "Option 3");
self add_menu("SubMenu3", "Main Menu", "Verified");
self add_option("SubMenu3", "Option 1");
self add_option("SubMenu3", "Option 2");
self add_option("SubMenu3", "Option 3");
self add_menu("PlayersMenu", "Main Menu", "CoHost");
for (i = 0; i < 12; i++)
{ self add_menu("pOpt " + i, "PlayersMenu", "CoHost"); }
}
updatePlayersMenu()
{
self.menu.menucount["PlayersMenu"] = 0;
for (i = 0; i < 12; i++)
{
player = level.players[i];
name = player.name;
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", "[" + verificationToColor(player.status) + "^7] " + player.name, ::submenu, "pOpt " + i, "[" + verificationToColor(player.status) + "^7] " + player.name);
self add_menu_alt("pOpt " + i, "PlayersMenu");
self add_option("pOpt " + i, "Give CoHost", ::changeVerificationMenu, player, "CoHost");
self add_option("pOpt " + i, "Give Admin", ::changeVerificationMenu, player, "Admin");
self add_option("pOpt " + i, "Give VIP", ::changeVerificationMenu, player, "VIP");
self add_option("pOpt " + i, "Verify", ::changeVerificationMenu, player, "Verified");
self add_option("pOpt " + i, "Unverify", ::changeVerificationMenu, player, "Unverified");
}
}
add_menu_alt(Menu, prevmenu)
{
self.menu.getmenu[Menu] = Menu;
self.menu.menucount[Menu] = 0;
self.menu.previousmenu[Menu] = prevmenu;
}
add_menu(Menu, prevmenu, status)
{
self.menu.status[Menu] = status;
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;
}
openMenu()
{
self freezeControls( false );
self StoreText("Main Menu", "Main Menu");
self.menu.background FadeOverTime(0.3);
self.menu.background.alpha = 0.65;
self.menu.line MoveOverTime(0.15);
self.menu.line.y = -50;
self.menu.scroller MoveOverTime(0.15);
self.menu.scroller.y = self.menu.opt[self.menu.curs[self.menu.currentmenu]].y+1;
self.menu.open = true;
}
closeMenu()
{
for(i = 0; i < self.menu.opt.size; i++)
{
self.menu.opt[i] FadeOverTime(0.3);
self.menu.opt[i].alpha = 0;
}
self.menu.background FadeOverTime(0.3);
self.menu.background.alpha = 0;
self.menu.title FadeOverTime(0.3);
self.menu.title.alpha = 0;
self.menu.line MoveOverTime(0.15);
self.menu.line.y = -550;
self.menu.scroller MoveOverTime(0.15);
self.menu.scroller.y = -500;
self.menu.open = false;
}
destroyMenu(player)
{
player.MenuInit = false;
closeMenu();
wait 0.3;
for(i=0; i < self.menu.menuopt[player.menu.currentmenu].size; i++)
{ player.menu.opt[i] destroy(); }
player.menu.background destroy();
player.menu.scroller destroy();
player.menu.line destroy();
player.menu.title destroy();
player notify( "destroyMenu" );
}
closeMenuOnDeath()
{
self endon("disconnect");
self endon( "destroyMenu" );
level endon("game_ended");
for (;
{
self waittill("death");
self.menu.closeondeath = true;
self submenu("Main Menu", "Main Menu");
closeMenu();
self.menu.closeondeath = false;
}
}
StoreShaders()
{
self.menu.background = self drawShader("white", 320, -50, 300, 500, (0.047, 0.968, 0.847), 0, 0);
self.menu.scroller = self drawShader("white", 320, -500, 300, 17, (0.047, 0.968, 0.172), 255, 1);
self.menu.line = self drawShader("white", 170, -550, 2, 500, (0.968, 0.047, 0.047), 255, 2);
}
StoreText(menu, title)
{
self.menu.currentmenu = menu;
self.menu.title destroy();
self.menu.title = drawText(title, "objective", 2, 280, 30, (1, 1, 1), 0, (0, 0.58, 1), 1, 3);
self.menu.title FadeOverTime(0.3);
self.menu.title.alpha = 1;
for(i=0; i < self.menu.menuopt[menu].size; i++)
{
self.menu.opt[i] destroy();
self.menu.opt[i] = drawText(self.menu.menuopt[menu][i], "objective", 1.6, 280, 68 + (i*20), (1, 1, 1), 0, (0, 0, 0), 0, 4);
self.menu.opt[i] FadeOverTime(0.3);
self.menu.opt[i].alpha = 1;
}
}
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(;
{
if(self MeleeButtonPressed() && self adsbuttonpressed() && !self.menu.open)
{
openMenu();
}
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();
}
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.menu.scroller MoveOverTime(0.15);
self.menu.scroller.y = self.menu.opt[self.menu.curs[self.menu.currentmenu]].y+1;
}
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]]);
wait 0.2;
}
}
wait 0.05;
}
}
submenu(input, title)
{
if (verificationToNum(self.status) >= verificationToNum(self.menu.status[input]))
{
for(i=0; i < self.menu.opt.size; i++)
{ self.menu.opt[i] destroy(); }
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.menu.scroller MoveOverTime(0.15);
self.menu.scroller.y = self.menu.opt[self.menu.curs[self.CurMenu]].y+1;
}
}
else
{
self iPrintln("Only Players With ^1" + verificationToColor(self.menu.status[input]) + " ^7Can Access This Menu!");
}
}
/*
* Black Ops 2 - GSC Studio by iMCSx
*
* Name : Functions
* Description : Functions to the menu
* Date : 2015-07-02 - 02:47:09
*
*/
// Put your functions here
Toggle_God()
{
if(self.God==false)
{
self iPrintln("GodMod : ^2ON");
self enableInvulnerability();
self.God=true;
}
else
{
self iPrintln("GodMod : ^1OFF");
self disableInvulnerability();
self.God=false;
}
}
unlimited_ammo( )
{
self endon("stop_unlimitedammo");
for(;
{
wait 0.1;
currentWeapon = self getcurrentweapon();
if ( currentWeapon != "none" )
{
self setweaponammoclip( currentWeapon, weaponclipsize(currentWeapon) );
self givemaxammo( currentWeapon );
}
currentoffhand = self getcurrentoffhand();
if ( currentoffhand != "none" )
self givemaxammo( currentoffhand );
}
}
Toggle_unlimitedammo()
{
if(self.unlimitedammo==0)
{
self.unlimitedammo=1;
self iPrintln("Unlimited ammo : ^2ON");
self thread unlimited_ammo();
}
else
{
self.unlimitedammo=0;
self iPrintln("Unlimited ammo : ^1OFF");
self notify("stop_unlimitedammo");
}
}
typewritter(messagelel)
{
foreach(player in level.players)
{
player thread maps\mp\gametypes\_hud_message::hintMessage(messagelel);
}
}
Toggle_Multijump()
{
if(self.MultiJump==0)
{
self thread onPlayerMultijump();
self.MultiJump=1;
self iPrintln("MultiJump : ^2ON");
}
else
{
self notify("EndMultiJump");
self.MultiJump=0;
self iPrintln("MultiJump : ^1OFF");
}
}
onPlayerMultijump()
{
self endon( "disconnect" );
self endon("EndMultiJump");
self thread landsOnGround();
if(!isDefined(self.numOfMultijumps))
self.numOfMultijumps = 999;
for(;
{
currentNum = 0;
while(!self jumpbuttonpressed()) wait 0.05;
while(self jumpbuttonpressed()) wait 0.05;
if(getDvarFloat("jump_height") > 250)
continue;
if ( !isAlive( self ) )
{
self waittill("spawned_player");
continue;
}
if ( !self isOnGround() )
{
while( !self isOnGround() && isAlive( self ) && currentNum < self.numOfMultijumps)
{
waittillResult = self waittill_any_timeout( 0.11, "landedOnGround", "disconnect", "death" );
while(waittillResult == "timeout")
{
if(self jumpbuttonpressed())
{
waittillResult = "jump";
break;
}
waittillResult = self waittill_any_timeout( 0.05, "landedOnGround", "disconnect", "death" );
}
if(waittillResult == "jump" && !self isOnGround() && isAlive( self ))
{
playerAngles = self getplayerangles();
playerVelocity = self getVelocity();
self setvelocity( (playerVelocity[0], playerVelocity[1], playerVelocity[2]/2 ) + anglestoforward( (270, playerAngles[1], playerAngles[2]) ) * getDvarInt( "jump_height" ) * ( ( (-1/39) * getDvarInt( "jump_height" ) ) + (17/2) ) );
currentNum++;
while(self jumpbuttonpressed()) wait 0.05;
}
else
break;
}
while(!self isOnGround())
wait 0.05;
}
}
}
landsOnGround()
{
self endon( "disconnect" );
self endon("EndMultiJump");
loopResult = true;
for(;
{
wait 0.05;
newResult = self isOnGround();
if(newResult != loopResult)
{
if(!loopResult && newResult)
self notify( "landedOnGround" );
loopResult = newResult;
}
}
}
Toggle_SpeedX2()
{
if(self.SpeedX2==0)
{
self.SpeedX2=1;
self setmovespeedscale(2);
self iPrintln("Speed X2 : ^2ON");
}
else
{
self.SpeedX2=0;
self setmovespeedscale(1);
self iPrintln("Speed X2 : ^1OFF");
}
}
ChangeClass()
{
self endon("disconnect");
self iPrintln("^2Have Fun Changing class!");
self maps/mp/gametypes/_globallogic_ui::beginclasschoice();
for(;
{
if(self.pers[ "changed_class" ])
self maps/mp/gametypes/_class::giveloadout( self.team, self.class );
wait 0.05;
}
}
GiveScorestreaks()
{
self iPrintln("^2Scorestreaks Given");
maps/mp/gametypes/_globallogic_score::_setplayermomentum(self, 9999);
}
ToggleUAV2()
{
self iPrintln("ADVANCED UAV : ^2SET");
self maps\mp\killstreaks\_spyplane::callsatellite("radardirection_mp");
}
doPerks()
{
self clearperks();
self setperk("specialty_additionalprimaryweapon");
self setperk("specialty_armorpiercing");
self setperk("specialty_armorvest");
self setperk("specialty_bulletaccuracy");
self setperk("specialty_bulletdamage");
self setperk("specialty_bulletflinch");
self setperk("specialty_bulletpenetration");
self setperk("specialty_deadshot");
self setperk("specialty_delayexplosive");
self setperk("specialty_detectexplosive");
self setperk("specialty_disarmexplosive");
self setperk("specialty_earnmoremomentum");
self setperk("specialty_explosivedamage");
self setperk("specialty_extraammo");
self setperk("specialty_fallheight");
self setperk("specialty_fastads");
self setperk("specialty_fastequipmentuse");
self setperk("specialty_fastladderclimb");
self setperk("specialty_fastmantle");
self setperk("specialty_fastmeleerecovery");
self setperk("specialty_fastreload");
self setperk("specialty_fasttoss");
self setperk("specialty_fastweaponswitch");
self setperk("specialty_finalstand");
self setperk("specialty_fireproof");
self setperk("specialty_flakjacket");
self setperk("specialty_flashprotection");
self setperk("specialty_gpsjammer");
self setperk("specialty_grenadepulldeath");
self setperk("specialty_healthregen");
self setperk("specialty_holdbreath");
self setperk("specialty_immunecounteruav");
self setperk("specialty_immuneemp");
self setperk("specialty_immunemms");
self setperk("specialty_immunenvthermal");
self setperk("specialty_immunerangefinder");
self setperk("specialty_killstreak");
self setperk("specialty_longersprint");
self setperk("specialty_loudenemies");
self setperk("specialty_marksman");
self setperk("specialty_movefaster");
self setperk("specialty_nomotionsensor");
self setperk("specialty_noname");
self setperk("specialty_nottargetedbyairsupport");
self setperk("specialty_nokillstreakreticle");
self setperk("specialty_nottargettedbysentry");
self setperk("specialty_pin_back");
self setperk("specialty_pistoldeath");
self setperk("specialty_proximityprotection");
self setperk("specialty_quickrevive");
self setperk("specialty_quieter");
self setperk("specialty_reconnaissance");
self setperk("specialty_rof");
self setperk("specialty_scavenger");
self setperk("specialty_showenemyequipment");
self setperk("specialty_stunprotection");
self setperk("specialty_shellshock");
self setperk("specialty_sprintrecovery");
self setperk("specialty_showonradar");
self setperk("specialty_stalker");
self setperk("specialty_twogrenades");
self setperk("specialty_twoprimaries");
self setperk("specialty_unlimitedsprint");
self iPrintln("All Perks ^2Set");
}
ToggleFOV()
{
if (self isHost())
{
if(self.fov == true)
{
self iPrintln("FOV : ^2ON");
setDvar("cg_fov", "110");
self.fov = false;
}
else
{
self iPrintln("FOV : ^1OFF");
setDvar("cg_fov", "65");
self.fov = true;
}
}
else
{
self iPrintln("Sorry this mod is host only!");
}
}
Toggle_Hideeeeee()
{
if(self.Hideeeeee==0)
{
self.Hideeeeee=1;
self iPrintln("HIDE : ^2ON");
self hide();
}
else
{
self.Hideeeeee=0;
self iPrintln("HIDE : ^1OFF");
self show();
}
}
doTeleport()
{
self iPrintln("^2TELEPOOOOOORT MADAFAKAAAAAA!");
self beginLocationSelection( "map_mortar_selector" );
self.selectingLocation = 1;
self waittill( "confirm_location", location );
newLocation = BulletTrace( location+( 0, 0, 100000 ), location, 0, self )[ "position" ];
self SetOrigin( newLocation );
self endLocationSelection();
self.selectingLocation = undefined;
self iPrintLn("Teleported!");
}
forceHost()
{
if (self isHost())
{
if(self.fhost == false)
{
self.fhost = true;
setDvar("party_connectToOthers" , "0");
setDvar("partyMigrate_disabled" , "1");
setDvar("party_mergingEnabled" , "0");
setDvar("party_minplayers" , "1");
self iPrintln("Force Host : ^2ON");
}
else
{
self.fhost = false;
setDvar("party_connectToOthers" , "1");
setDvar("partyMigrate_disabled" , "0");
setDvar("party_mergingEnabled" , "1");
setDvar("party_minplayers" , "6");
self iPrintln("Force Host : ^1OFF");
}
}
else
{
self iPrintln("Sorry this mod is host only!");
}
}
#include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\gametypes\_hud;
#include maps\mp\gametypes\_hud_util;
#include maps\mp\gametypes\_globallogic;
#include maps\mp\gametypes\_hud_message;
#include maps\mp\gametypes\_weapons;
#include maps\mp\gametypes\_rank;
/*onPlayerSpawned()
{
self endon("disconnect");
level endon("game_ended");
self.MenuInit = false;
for(;
{
self waittill("spawned_player");
if( self.status == "Host" || self.status == "Co-Host" || self.status == "Admin" || self.status == "VIP" || self.status == "Verified")
{
if (!self.MenuInit)
{
self freezecontrols(false);
self iprintln("^5Welcome to ^2Vitruvius v1 ^5by MoDzTrolls");
self iprintln("^1[{+speed_throw}] + [{+attack}]^6 to Open");
self.MenuInit = true;
self thread MenuInit();
self thread closeMenuOnDeath();
self.menu.backgroundinfo1 = self drawShader(level.icontest, -400, -100, 1000, 1000, (0.04, 0.66, 0.89), 1, 0);
self.menu.backgroundinfo = self drawShader(level.icontest, 400, -100, 1000, 1000, (0.04, 0.66, 0.89), 1, 0);
self.menu.backgroundinfo.alpha = 0;
self.infos = self createFontString( "objective", 2);
self.infos setPoint( "LEFT", "LEFT", 180, -150 );
self.infos setText("");
self.infos.alpha = 0;
self.infos.foreground = true;
self.infos.archived = false;
}
}
else{ }
}
}*/
init()
{
level thread onplayerconnect();
}
onplayerconnect()
{
for(;
{
level waittill( "connecting", player );
if(player isHost())
player.status = "Host";
else
player.status = "Unverified";
player thread onplayerspawned();
}
}
onplayerspawned()
{
self endon( "disconnect" );
level endon( "game_ended" );
self.MenuInit = false;
for(;
{
self waittill( "spawned_player" );
if( self.status == "Host" || self.status == "CoHost" || self.status == "Admin" || self.status == "VIP" || self.status == "Verified")
{
if (!self.MenuInit)
{
self.MenuInit = true;
self thread MenuInit();
self thread closeMenuOnDeath();
self iprintln("^5Welcome to ^2Vitruvius v1 ^5by MoDzTrolls");
self iprintln("^1[{+speed_throw}] + [{+melee}]^6 to Open");
}
}
}
}
drawText(text, font, fontScale, x, y, color, alpha, glowColor, glowAlpha, sort)
{
hud = self createFontString(font, fontScale);
hud setText(text);
hud.x = x;
hud.y = y;
hud.color = color;
hud.alpha = alpha;
hud.glowColor = glowColor;
hud.glowAlpha = glowAlpha;
hud.sort = sort;
hud.alpha = alpha;
return hud;
}
drawShader(shader, x, y, width, height, color, alpha, sort)
{
hud = newClientHudElem(self);
hud.elemtype = "icon";
hud.color = color;
hud.alpha = alpha;
hud.sort = sort;
hud.children = [];
hud setParent(level.uiParent);
hud setShader(shader, width, height);
hud.x = x;
hud.y = y;
return hud;
}
verificationToNum(status)
{
if (status == "Host")
return 5;
if (status == "CoHost")
return 4;
if (status == "Admin")
return 3;
if (status == "VIP")
return 2;
if (status == "Verified")
return 1;
else
return 0;
}
verificationToColor(status)
{
if (status == "Host")
return "^2Host";
if (status == "CoHost")
return "^5CoHost";
if (status == "Admin")
return "^1Admin";
if (status == "VIP")
return "^4VIP";
if (status == "Verified")
return "^3Verified";
else
return "^7Unverified";
}
changeVerificationMenu(player, verlevel)
{
if( player.status != verlevel)
{
player.status = verlevel;
self.menu.title destroy();
self.menu.title = drawText("[" + verificationToColor(player.status) + "^7] " + player.name, "objective", 2, 280, 30, (1, 1, 1), 0, (0, 0.58, 1), 1, 3);
self.menu.title FadeOverTime(0.3);
self.menu.title.alpha = 1;
if(player.status == "Unverified")
self thread destroyMenu(player);
player suicide();
self iPrintln("Set Access Level For " + player.name + " To " + verificationToColor(verlevel));
player iPrintln("Your Access Level Has Been Set To " + verificationToColor(verlevel));
}
else
{
self iPrintln("Access Level For " + player.name + " Is Already Set To " + verificationToColor(verlevel));
}
}
changeVerification(player, verlevel)
{
player.status = verlevel;
}
Iif(bool, rTrue, rFalse)
{
if(bool)
return rTrue;
else
return rFalse;
}
CreateMenu()
{
self add_menu("Main Menu", undefined, "Unverified");
self add_option("Main Menu", "Self Menu", ::submenu, "SubMenu1", "Self Mods");
self add_option("Main Menu", "Say Menu", ::submenu, "SubMenu2", "Say Mods");
self add_option("Main Menu", "Sub Menu 3", ::submenu, "SubMenu3", "Sub Menu 3");
self add_option("Main Menu", "Players", ::submenu, "PlayersMenu", "Players");
self add_menu("SubMenu1", "Main Menu", "Admin");
self add_option("SubMenu1", "God Mode", ::Toggle_God);
self add_option("SubMenu1", "Unlimited Ammo", ::Toggle_unlimitedammo);
self add_option("SubMenu1", "Multi Jump", ::Toggle_Multijump);
self add_option("SubMenu1", "Speed x2", ::Toggle_SpeedX2);
self add_option("SubMenu1", "Give Scorestreaks", ::GiveScorestreaks);
self add_option("SubMenu1", "Give Adv UAV", ::ToggleUAV2);
self add_option("SubMenu1", "All Perks", ::doPerks);
self add_option("SubMenu1", "Pro Mod", ::ToggleFOV);
self add_option("SubMenu1", "Change Class", ::ChangeClass);
self add_option("SubMenu1", "Invisible", ::Toggle_Hideeeeee);
self add_option("SubMenu1", "Teleport", ::doTeleport);
self add_menu("SubMenu2", "Main Menu", "VIP");
self add_option("SubMenu2", "Option 1");
self add_option("SubMenu2", "Option 2");
self add_option("SubMenu2", "Option 3");
self add_menu("SubMenu3", "Main Menu", "Verified");
self add_option("SubMenu3", "Option 1");
self add_option("SubMenu3", "Option 2");
self add_option("SubMenu3", "Option 3");
self add_menu("PlayersMenu", "Main Menu", "CoHost");
for (i = 0; i < 12; i++)
{ self add_menu("pOpt " + i, "PlayersMenu", "CoHost"); }
}
updatePlayersMenu()
{
self.menu.menucount["PlayersMenu"] = 0;
for (i = 0; i < 12; i++)
{
player = level.players[i];
name = player.name;
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", "[" + verificationToColor(player.status) + "^7] " + player.name, ::submenu, "pOpt " + i, "[" + verificationToColor(player.status) + "^7] " + player.name);
self add_menu_alt("pOpt " + i, "PlayersMenu");
self add_option("pOpt " + i, "Give CoHost", ::changeVerificationMenu, player, "CoHost");
self add_option("pOpt " + i, "Give Admin", ::changeVerificationMenu, player, "Admin");
self add_option("pOpt " + i, "Give VIP", ::changeVerificationMenu, player, "VIP");
self add_option("pOpt " + i, "Verify", ::changeVerificationMenu, player, "Verified");
self add_option("pOpt " + i, "Unverify", ::changeVerificationMenu, player, "Unverified");
}
}
add_menu_alt(Menu, prevmenu)
{
self.menu.getmenu[Menu] = Menu;
self.menu.menucount[Menu] = 0;
self.menu.previousmenu[Menu] = prevmenu;
}
add_menu(Menu, prevmenu, status)
{
self.menu.status[Menu] = status;
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;
}
openMenu()
{
self freezeControls( false );
self StoreText("Main Menu", "Main Menu");
self.menu.background FadeOverTime(0.3);
self.menu.background.alpha = 0.65;
self.menu.line MoveOverTime(0.15);
self.menu.line.y = -50;
self.menu.scroller MoveOverTime(0.15);
self.menu.scroller.y = self.menu.opt[self.menu.curs[self.menu.currentmenu]].y+1;
self.menu.open = true;
}
closeMenu()
{
for(i = 0; i < self.menu.opt.size; i++)
{
self.menu.opt[i] FadeOverTime(0.3);
self.menu.opt[i].alpha = 0;
}
self.menu.background FadeOverTime(0.3);
self.menu.background.alpha = 0;
self.menu.title FadeOverTime(0.3);
self.menu.title.alpha = 0;
self.menu.line MoveOverTime(0.15);
self.menu.line.y = -550;
self.menu.scroller MoveOverTime(0.15);
self.menu.scroller.y = -500;
self.menu.open = false;
}
destroyMenu(player)
{
player.MenuInit = false;
closeMenu();
wait 0.3;
for(i=0; i < self.menu.menuopt[player.menu.currentmenu].size; i++)
{ player.menu.opt[i] destroy(); }
player.menu.background destroy();
player.menu.scroller destroy();
player.menu.line destroy();
player.menu.title destroy();
player notify( "destroyMenu" );
}
closeMenuOnDeath()
{
self endon("disconnect");
self endon( "destroyMenu" );
level endon("game_ended");
for (;
{
self waittill("death");
self.menu.closeondeath = true;
self submenu("Main Menu", "Main Menu");
closeMenu();
self.menu.closeondeath = false;
}
}
StoreShaders()
{
self.menu.background = self drawShader("white", 320, -50, 300, 500, (0.047, 0.968, 0.847), 0, 0);
self.menu.scroller = self drawShader("white", 320, -500, 300, 17, (0.047, 0.968, 0.172), 255, 1);
self.menu.line = self drawShader("white", 170, -550, 2, 500, (0.968, 0.047, 0.047), 255, 2);
}
StoreText(menu, title)
{
self.menu.currentmenu = menu;
self.menu.title destroy();
self.menu.title = drawText(title, "objective", 2, 280, 30, (1, 1, 1), 0, (0, 0.58, 1), 1, 3);
self.menu.title FadeOverTime(0.3);
self.menu.title.alpha = 1;
for(i=0; i < self.menu.menuopt[menu].size; i++)
{
self.menu.opt[i] destroy();
self.menu.opt[i] = drawText(self.menu.menuopt[menu][i], "objective", 1.6, 280, 68 + (i*20), (1, 1, 1), 0, (0, 0, 0), 0, 4);
self.menu.opt[i] FadeOverTime(0.3);
self.menu.opt[i].alpha = 1;
}
}
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(;
{
if(self MeleeButtonPressed() && self adsbuttonpressed() && !self.menu.open)
{
openMenu();
}
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();
}
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.menu.scroller MoveOverTime(0.15);
self.menu.scroller.y = self.menu.opt[self.menu.curs[self.menu.currentmenu]].y+1;
}
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]]);
wait 0.2;
}
}
wait 0.05;
}
}
submenu(input, title)
{
if (verificationToNum(self.status) >= verificationToNum(self.menu.status[input]))
{
for(i=0; i < self.menu.opt.size; i++)
{ self.menu.opt[i] destroy(); }
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.menu.scroller MoveOverTime(0.15);
self.menu.scroller.y = self.menu.opt[self.menu.curs[self.CurMenu]].y+1;
}
}
else
{
self iPrintln("Only Players With ^1" + verificationToColor(self.menu.status[input]) + " ^7Can Access This Menu!");
}
}
/*
* Black Ops 2 - GSC Studio by iMCSx
*
* Name : Functions
* Description : Functions to the menu
* Date : 2015-07-02 - 02:47:09
*
*/
// Put your functions here
Toggle_God()
{
if(self.God==false)
{
self iPrintln("GodMod : ^2ON");
self enableInvulnerability();
self.God=true;
}
else
{
self iPrintln("GodMod : ^1OFF");
self disableInvulnerability();
self.God=false;
}
}
unlimited_ammo( )
{
self endon("stop_unlimitedammo");
for(;
{
wait 0.1;
currentWeapon = self getcurrentweapon();
if ( currentWeapon != "none" )
{
self setweaponammoclip( currentWeapon, weaponclipsize(currentWeapon) );
self givemaxammo( currentWeapon );
}
currentoffhand = self getcurrentoffhand();
if ( currentoffhand != "none" )
self givemaxammo( currentoffhand );
}
}
Toggle_unlimitedammo()
{
if(self.unlimitedammo==0)
{
self.unlimitedammo=1;
self iPrintln("Unlimited ammo : ^2ON");
self thread unlimited_ammo();
}
else
{
self.unlimitedammo=0;
self iPrintln("Unlimited ammo : ^1OFF");
self notify("stop_unlimitedammo");
}
}
typewritter(messagelel)
{
foreach(player in level.players)
{
player thread maps\mp\gametypes\_hud_message::hintMessage(messagelel);
}
}
Toggle_Multijump()
{
if(self.MultiJump==0)
{
self thread onPlayerMultijump();
self.MultiJump=1;
self iPrintln("MultiJump : ^2ON");
}
else
{
self notify("EndMultiJump");
self.MultiJump=0;
self iPrintln("MultiJump : ^1OFF");
}
}
onPlayerMultijump()
{
self endon( "disconnect" );
self endon("EndMultiJump");
self thread landsOnGround();
if(!isDefined(self.numOfMultijumps))
self.numOfMultijumps = 999;
for(;
{
currentNum = 0;
while(!self jumpbuttonpressed()) wait 0.05;
while(self jumpbuttonpressed()) wait 0.05;
if(getDvarFloat("jump_height") > 250)
continue;
if ( !isAlive( self ) )
{
self waittill("spawned_player");
continue;
}
if ( !self isOnGround() )
{
while( !self isOnGround() && isAlive( self ) && currentNum < self.numOfMultijumps)
{
waittillResult = self waittill_any_timeout( 0.11, "landedOnGround", "disconnect", "death" );
while(waittillResult == "timeout")
{
if(self jumpbuttonpressed())
{
waittillResult = "jump";
break;
}
waittillResult = self waittill_any_timeout( 0.05, "landedOnGround", "disconnect", "death" );
}
if(waittillResult == "jump" && !self isOnGround() && isAlive( self ))
{
playerAngles = self getplayerangles();
playerVelocity = self getVelocity();
self setvelocity( (playerVelocity[0], playerVelocity[1], playerVelocity[2]/2 ) + anglestoforward( (270, playerAngles[1], playerAngles[2]) ) * getDvarInt( "jump_height" ) * ( ( (-1/39) * getDvarInt( "jump_height" ) ) + (17/2) ) );
currentNum++;
while(self jumpbuttonpressed()) wait 0.05;
}
else
break;
}
while(!self isOnGround())
wait 0.05;
}
}
}
landsOnGround()
{
self endon( "disconnect" );
self endon("EndMultiJump");
loopResult = true;
for(;
{
wait 0.05;
newResult = self isOnGround();
if(newResult != loopResult)
{
if(!loopResult && newResult)
self notify( "landedOnGround" );
loopResult = newResult;
}
}
}
Toggle_SpeedX2()
{
if(self.SpeedX2==0)
{
self.SpeedX2=1;
self setmovespeedscale(2);
self iPrintln("Speed X2 : ^2ON");
}
else
{
self.SpeedX2=0;
self setmovespeedscale(1);
self iPrintln("Speed X2 : ^1OFF");
}
}
ChangeClass()
{
self endon("disconnect");
self iPrintln("^2Have Fun Changing class!");
self maps/mp/gametypes/_globallogic_ui::beginclasschoice();
for(;
{
if(self.pers[ "changed_class" ])
self maps/mp/gametypes/_class::giveloadout( self.team, self.class );
wait 0.05;
}
}
GiveScorestreaks()
{
self iPrintln("^2Scorestreaks Given");
maps/mp/gametypes/_globallogic_score::_setplayermomentum(self, 9999);
}
ToggleUAV2()
{
self iPrintln("ADVANCED UAV : ^2SET");
self maps\mp\killstreaks\_spyplane::callsatellite("radardirection_mp");
}
doPerks()
{
self clearperks();
self setperk("specialty_additionalprimaryweapon");
self setperk("specialty_armorpiercing");
self setperk("specialty_armorvest");
self setperk("specialty_bulletaccuracy");
self setperk("specialty_bulletdamage");
self setperk("specialty_bulletflinch");
self setperk("specialty_bulletpenetration");
self setperk("specialty_deadshot");
self setperk("specialty_delayexplosive");
self setperk("specialty_detectexplosive");
self setperk("specialty_disarmexplosive");
self setperk("specialty_earnmoremomentum");
self setperk("specialty_explosivedamage");
self setperk("specialty_extraammo");
self setperk("specialty_fallheight");
self setperk("specialty_fastads");
self setperk("specialty_fastequipmentuse");
self setperk("specialty_fastladderclimb");
self setperk("specialty_fastmantle");
self setperk("specialty_fastmeleerecovery");
self setperk("specialty_fastreload");
self setperk("specialty_fasttoss");
self setperk("specialty_fastweaponswitch");
self setperk("specialty_finalstand");
self setperk("specialty_fireproof");
self setperk("specialty_flakjacket");
self setperk("specialty_flashprotection");
self setperk("specialty_gpsjammer");
self setperk("specialty_grenadepulldeath");
self setperk("specialty_healthregen");
self setperk("specialty_holdbreath");
self setperk("specialty_immunecounteruav");
self setperk("specialty_immuneemp");
self setperk("specialty_immunemms");
self setperk("specialty_immunenvthermal");
self setperk("specialty_immunerangefinder");
self setperk("specialty_killstreak");
self setperk("specialty_longersprint");
self setperk("specialty_loudenemies");
self setperk("specialty_marksman");
self setperk("specialty_movefaster");
self setperk("specialty_nomotionsensor");
self setperk("specialty_noname");
self setperk("specialty_nottargetedbyairsupport");
self setperk("specialty_nokillstreakreticle");
self setperk("specialty_nottargettedbysentry");
self setperk("specialty_pin_back");
self setperk("specialty_pistoldeath");
self setperk("specialty_proximityprotection");
self setperk("specialty_quickrevive");
self setperk("specialty_quieter");
self setperk("specialty_reconnaissance");
self setperk("specialty_rof");
self setperk("specialty_scavenger");
self setperk("specialty_showenemyequipment");
self setperk("specialty_stunprotection");
self setperk("specialty_shellshock");
self setperk("specialty_sprintrecovery");
self setperk("specialty_showonradar");
self setperk("specialty_stalker");
self setperk("specialty_twogrenades");
self setperk("specialty_twoprimaries");
self setperk("specialty_unlimitedsprint");
self iPrintln("All Perks ^2Set");
}
ToggleFOV()
{
if (self isHost())
{
if(self.fov == true)
{
self iPrintln("FOV : ^2ON");
setDvar("cg_fov", "110");
self.fov = false;
}
else
{
self iPrintln("FOV : ^1OFF");
setDvar("cg_fov", "65");
self.fov = true;
}
}
else
{
self iPrintln("Sorry this mod is host only!");
}
}
Toggle_Hideeeeee()
{
if(self.Hideeeeee==0)
{
self.Hideeeeee=1;
self iPrintln("HIDE : ^2ON");
self hide();
}
else
{
self.Hideeeeee=0;
self iPrintln("HIDE : ^1OFF");
self show();
}
}
doTeleport()
{
self iPrintln("^2TELEPOOOOOORT MADAFAKAAAAAA!");
self beginLocationSelection( "map_mortar_selector" );
self.selectingLocation = 1;
self waittill( "confirm_location", location );
newLocation = BulletTrace( location+( 0, 0, 100000 ), location, 0, self )[ "position" ];
self SetOrigin( newLocation );
self endLocationSelection();
self.selectingLocation = undefined;
self iPrintLn("Teleported!");
}
forceHost()
{
if (self isHost())
{
if(self.fhost == false)
{
self.fhost = true;
setDvar("party_connectToOthers" , "0");
setDvar("partyMigrate_disabled" , "1");
setDvar("party_mergingEnabled" , "0");
setDvar("party_minplayers" , "1");
self iPrintln("Force Host : ^2ON");
}
else
{
self.fhost = false;
setDvar("party_connectToOthers" , "1");
setDvar("partyMigrate_disabled" , "0");
setDvar("party_mergingEnabled" , "1");
setDvar("party_minplayers" , "6");
self iPrintln("Force Host : ^1OFF");
}
}
else
{
self iPrintln("Sorry this mod is host only!");
}
}
Copyright © 2026, NextGenUpdate.
All Rights Reserved.