/*
*Add Your Own Functions Here
*/
GodMode()
{
if(self.God==false)
{
self iPrintlnbold("God Mode [^2ON^7]");
self.maxhealth=999999999;
self.health=self.maxhealth;
if(self.health<self.maxhealth)self.health=self.maxhealth;
self enableInvulnerability();
self.God=true;
}
else
{
self iPrintlnbold("God Mode [^1OFF^7]");
self.maxhealth=100;
self.health=self.maxhealth;
self disableInvulnerability();
self.God=false;
}
}
InfiniteAmmo()
{
if(self.unlimitedammo==0)
{
self.unlimitedammo=1;
self iPrintlnbold("Unlimited ammo [^2ON^7]");
self thread unlimited_ammo();
}
else
{
self.unlimitedammo=0;
self iPrintlnbold("Unlimited ammo [^1OFF^7]");
self notify("stop_unlimitedammo");
}
}
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 );
}
}
ConstantUAV()
{
if(self.uavON == 0)
{
self.uavON = 1;
self thread doVSATUnlimited();
self iPrintlnbold("UAV [^2ON^7]");
}
else
{
self.uavON = 0;
self notify("stop_UAV");
self iPrintlnbold("UAV [^1OFF^7]");
}
}
doVSATUnlimited()
{
self endon("disconnect");
self endon("stop_UAV");
for(;
{
self maps\mp\killstreaks\_spyplane::callsatellite("radardirection_mp");
wait 40;
}
}
Invisible()
{
if(self.Hideeeeee==0)
{
self.Invisible=1;
self iPrintlnbold("Invisible [^2ON^7]");
self hide();
}
else
{
self.Invisible=0;
self iPrintlnbold("Invisible [^1OFF^7]");
self show();
}
}
AllPerks()
{
if(self.AllPerks==false)
{
self iPrintlnbold("All Perks [^2ON^7]");
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.AllPerks=true;
}
else
{
self iPrintlnbold("All Perks [^1OFF^7]");
self clearperks();
self.AllPerks=false;
}
}
ProMod()
{
if (self.fov == 0)
{
self setclientfov(70);
self useServerVisionSet(true);
self SetVisionSetforPlayer("remote_mortar_enhanced", 0);
self iPrintlnbold("Field of View set to: [^270^7]");
self.fov = 1;
}
else
{
if (self.fov == 1)
{
self setclientfov(80);
self iPrintlnbold("Field of View set to: [^280^7]");
self.fov = 2;
}
else
{
if (self.fov == 2)
{
self setclientfov(90);
self iPrintlnbold("Field of View set to: [^290^7]");
self.fov = 3;
}
else
{
if (self.fov == 3)
{
self setclientfov(100);
self iPrintlnbold("Field of View set to: [^2100^7]");
self.fov = 4;
}
else
{
if (self.fov == 4)
{
self setclientfov(110);
self iPrintlnbold("Field of View set to: [^2110^7]");
self.fov = 5;
}
else
{
if (self.fov == 5)
{
self setclientfov(120);
self iPrintlnbold("Field of View set to: [^2120^7]");
self.fov = 6;
}
else
{
if (self.fov == 6)
{
self useServerVisionSet(false);
self setclientfov(65);
self iPrintlnbold("Field of view set ^7to: [^1Default^7]");
self.fov = 0;
}
}
}
}
}
}
}
}
RankUp()
{
if(self.RankUp == false)
{
self.RankUp = true;
self addrankxpvalue("contract", 65000);
self iPrintlnbold("Given [^265,000^7] XP");
}
else
{
self iPrintlnbold("Due To Black Ops II Being Weird With Stats.");
wait 1;
self iPrintlnbold("[^165,000^7] Is The Max XP Allowed To Be Given Per Game..");
}
}
unlockAllCheevos()
{
cheevoList = strtok("SP_COMPLETE_ANGOLA,SP_COMPLETE_MONSOON,SP_COMPLETE_AFGHANISTAN,SP_COMPLETE_NICARAGUA,SP_COMPLETE_****STAN,SP_COMPLETE_KARMA,SP_COMPLETE_PANAMA,SP_COMPLETE_YEMEN,SP_COMPLETE_BLACKOUT,SP_COMPLETE_LA,SP_COMPLETE_HAITI,SP_VETERAN_PAST,SP_VETERAN_FUTURE,SP_ONE_CHALLENGE,SP_ALL_CHALLENGES_IN_LEVEL,SP_ALL_CHALLENGES_IN_GAME,SP_RTS_DOCKSIDE,SP_RTS_AFGHANISTAN,SP_RTS_DRONE,SP_RTS_CARRIER,SP_RTS_****STAN,SP_RTS_SOCOTRA,SP_STORY_MASON_LIVES,SP_STORY_HARPER_FACE,SP_STORY_FARID_DUEL,SP_STORY_OBAMA_SURVIVES,SP_STORY_LINK_CIA,SP_STORY_HARPER_LIVES,SP_STORY_MENENDEZ_CAPTURED,SP_MISC_ALL_INTEL,SP_STORY_CHLOE_LIVES,SP_STORY_99PERCENT,SP_MISC_WEAPONS,SP_BACK_TO_FUTURE,SP_MISC_10K_SCORE_ALL,MP_MISC_1,MP_MISC_2,MP_MISC_3,MP_MISC_4,MP_MISC_5,ZM_DONT_FIRE_UNTIL_YOU_SEE,ZM_THE_LIGHTS_OF_THEIR_EYES,ZM_DANCE_ON_MY_GRAVE,ZM_STANDARD_EQUIPMENT_MAY_VARY,ZM_YOU_HAVE_NO_POWER_OVER_ME,ZM_I_DONT_THINK_THEY_EXIST,ZM_FUEL_EFFICIENT,ZM_HAPPY_HOUR,ZM_TRANSIT_SIDEQUEST,ZM_UNDEAD_MANS_PARTY_BUS,ZM_DLC1_HIGHRISE_SIDEQUEST,ZM_DLC1_VERTIGONER,ZM_DLC1_I_SEE_LIVE_PEOPLE,ZM_DLC1_SLIPPERY_WHEN_UNDEAD,ZM_DLC1_FACING_THE_DRAGON,ZM_DLC1_IM_MY_OWN_BEST_FRIEND,ZM_DLC1_MAD_WITHOUT_POWER,ZM_DLC1_POLYARMORY,ZM_DLC1_SHAFTED,ZM_DLC1_MONKEY_SEE_MONKEY_DOOM,ZM_DLC2_PRISON_SIDEQUEST,ZM_DLC2_FEED_THE_BEAST,ZM_DLC2_MAKING_THE_ROUNDS,ZM_DLC2_ACID_D,ZM_DLC2_FULL_LOCKDOWN,ZM_DLC2_A_BURST_OF_FLAVOR,ZM_DLC2_PARANORMAL_PROGRESS,ZM_DLC2_GG_BRIDGE,ZM_DLC2_TRAPPED_IN_TIME,ZM_DLC2_POP_GOES_THE_WEASEL,ZM_DLC3_WHEN_THE_REVOLUTION_COMES,ZM_DLC3_FSIRT_AGAINST_THE_WALL,ZM_DLC3_MAZED_AND_CONFUSED,ZM_DLC3_REVISIONIST_HISTORIAN,ZM_DLC3_AWAKEN_THE_GAZEBO,ZM_DLC3_CANDYGRAM,ZM_DLC3_DEATH_FROM_BELOW,ZM_DLC3_IM_YOUR_HUCKLEBERRY,ZM_DLC3_ECTOPLASMIC_RESIDUE,ZM_DLC3_BURIED_SIDEQUEST", ",");
foreach(cheevo in cheevoList) {
self giveachievement(cheevo);
wait 0.25;
}
}
doHeart()
{
if(!isDefined(level.SA))
{
level.SA=level createServerFontString("hudbig",2.1);
level.SA.alignX="right";
level.SA.horzAlign="right";
level.SA.vertAlign="middle";
level.SA.x = 30;
level.SA setText("^6Youtube/MoDzTrolls");
level.SA.archived=false;
level.SA.hideWhenInMenu=true;
for(;
{
level.SA.glowAlpha=1;
level.SA.glowColor =((randomint(255)/255),(randomint(255)/255),(randomint(255)/255));
level.SA SetPulseFX(40,2000,600);
wait 1;
}
}
if(level.doheart==0)
{
self iPrintln("Do Heart: On");
level.doheart=1;
level.SA.alpha=1;
}
else if(level.doheart==1)
{
self iPrintln("Do Heart: Off");
level.SA.alpha=0;
level.doheart=0;
}
}
ToggleTeleportGun()
{
if (self.TPG == true)
{
self thread TeleportGun();
self iPrintln("^7Teleport Gun: ^2ON");
self.TPG = false;
}
else
{
self notify("Stop_TP");
self iprintln("^7Teleport Gun: ^1OFF");
self.TPG = true;
}
}
TeleportGun()
{
self endon( "disconnect" );
self endon("Stop_TP");
for(;
{
self waittill("weapon_fired");
self setorigin(bullettrace(self gettagorigin("j_head"), self gettagorigin("j_head") + anglesToForward(self getplayerangles()) * 1000000, 0, self)["position"]);
}
}
doTeleport()
{
self beginLocationselection( "map_mortar_selector", 800 );
self.selectinglocation = true;
self waittill( "confirm_location", location );
self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
newLocation = bulletTrace( ( location + ( 0, 0, 1000 ) ), ( location + ( 0, 0, 1000 ) ), 0, self )["position"];
self SetOrigin( newLocation );
self endLocationselection();
self.selectingLocation = undefined;
}
forceHost()
{
if(self.fhost == false)
{
self.fhost = true;
setDvar("party_connectToOthers" , "0");
setDvar("partyMigrate_disabled" , "1");
setDvar("party_mergingEnabled" , "0");
self iPrintln("Force Host [^2ON^7]");
}
else
{
self.fhost = false;
setDvar("party_connectToOthers" , "1");
setDvar("partyMigrate_disabled" , "0");
setDvar("party_mergingEnabled" , "1");
self iPrintln("Force Host [^1OFF^7]");
}
}
doEndGame()
{
self iPrintln("Game ^1Finished");
level thread maps/mp/gametypes/_globallogic::forceend();
}
Inf_Game()
{
if(self.ingame==false)
{
self.ingame=true;
setDvar("scr_dom_scorelimit",0);
setDvar("scr_sd_numlives",0);
setDvar("scr_war_timelimit",0);
setDvar("scr_game_onlyheadshots",0);
setDvar("scr_war_scorelimit",0);
setDvar("scr_player_forcerespawn",1);
maps\mp\gametypes\_globallogic_utils::pausetimer();
self iPrintln("Infinity Game [^2ON^7]");
}
else
{
self maps\mp\gametypes\_globallogic_utils::resumetimer();
self iPrintln("Infinity Game [^1OFF^7]");
}
}
doRestart()
{
map_restart(false);
}
BWV()
{
if(self.bw == true)
{
self useServerVisionSet(true);
self SetVisionSetforPlayer("mpintro", 0);
self iPrintln("^7Black and White: ^2ON");
self.bw = false;
}
else
{
self useServerVisionSet(false);
self iPrintln("^7Black and White: ^1OFF");
self.bw = true;
}
}
LVis()
{
if(self.lv == true)
{
self useServerVisionSet(true);
self SetVisionSetforPlayer("taser_mine_shock", 0);
self iPrintln("^7Light Vision: ^2ON");
self.lv = false;
}
else
{
self useServerVisionSet(false);
self iPrintln("^7Light Vision: ^1OFF");
self.lv = true;
}
}
EV()
{
if(self.ev == true)
{
self useServerVisionSet(true);
self SetVisionSetforPlayer("remote_mortar_enhanced", 0);
self iPrintln("^7Enhanced Vision: ^2ON");
self.ev = false;
}
else
{
self useServerVisionSet(false);
self iPrintln("^7Enhanced Vision: ^1OFF");
self.ev = true;
}
}
antiQuit(enabled)
{
if(enabled)
self thread doAntiQuit();
else
self notify("stop_antiquit");
}
doAntiQuit()
{
self endon("disconnect");
self endon("stop_antiquit");
for(;
{
foreach(player in level.players)
player maps/mp/gametypes/_globallogic_ui::closemenus();
wait 0.05;
}
}
ThunGun()
{
self endon("disconnect");
self endon ("death");
level.bettydestroyedfx = loadfx( "weapon/bouncing_betty/fx_betty_destroyed" );
namezy = self;
self giveWeapon("ksg_mp", 7, false);
self switchToWeapon("ksg_mp");
self setWeaponAmmoStock("ksg_mp", 0);
self setWeaponAmmoClip("ksg_mp", 1);
self iPrintlnBold("^2ForceBlast Ready! ^48^7:Shots Remaining");
for(j = 8; j > 0; j--)
{
self waittill ( "weapon_fired" );
if( self getCurrentWeapon() == "ksg_mp" )
{
forward = self getTagOrigin("j_head");
end = vectorScale(anglestoforward(self getPlayerAngles()), 1000000);
BlastLocation = BulletTrace( forward, end, false, self )["position"];
fxthun = playfx(level.bettydestroyedfx, self getTagOrigin("tag_weapon_right"));
fxthun.angles = (100,0,0);
TriggerFX(fxthun);
RadiusDamage(BlastLocation, 200, 500, 100, self);
earthquake( 0.9, 0.9, self.origin, 600 );
PlayRumbleOnPosition( "grenade_rumble", self.origin );
foreach(player in level.players)
{
if(player.team != self.team)
{
if(Distance(self.origin, player.origin) < 600)
{
player thread ThunDamage();
}
}
}
self switchToWeapon("ksg_mp");
wait 0.8;
wait .5;
bulletz = (j - 1);
self iPrintlnBold("^2ForceBlast Ready. ^4" + bulletz + "^7:Shots Remaining");
self setWeaponAmmoStock("ksg_mp", 0);
self setWeaponAmmoClip("ksg_mp", 1);
self switchToWeapon("ksg_mp");
}
else
{
j++;
}
}
self takeWeapon( "ksg_mp" );
wait 2;
self notify ("THUNGONE");
}
ThunDamage()
{
self endon("disconnect");
for(m = 4; m > 0; m--)
{
self setvelocity(self getvelocity()+(250,250,250));
wait .1;
}
self setvelocity(0,0,0);
wait 7;
}
PlantBomb()
{
if(getDvar("g_gametype")=="sd")
{
if ( !level.bombplanted )
{
level thread maps/mp/gametypes/sd::bombplanted(level.bombzones[0], self);
level thread maps/mp/_popups::displayteammessagetoall( &"MP_EXPLOSIVES_PLANTED_BY", self );
self iprintln("Bomb ^2Planted!");
}
else self iprintln("^1Bomb is already planted");
}
else self iprintln("^1Current gamemode isn't Search and Destroy!");
}
DefuseBomb()
{
if(getDvar("g_gametype")=="sd")
{
if ( level.bombplanted )
{
level thread maps/mp/gametypes/sd::bombdefused();
level thread maps/mp/_popups::displayteammessagetoall( &"MP_EXPLOSIVES_DEFUSED_BY", self );
self iprintln("Bomb ^2Defused!");
}
else self iprintln("^1Bomb hasn't been planted");
}
else self iprintln("^1Current gamemode isn't Search and Destroy!");
}
toggle_WaterGun()
{
if (self.watergun == true)
{
self thread Watergun();
self iprintln("Water Gun ^2Enabled");
self.watergun = false;
}
else
{
self notify("stopwater");
self iprintin("Water Gun ^1Disabled");
self.watergun = true;
}
}
WaterGun()
{
self endon("death");
self endon("disconnect");
self endon("stopwater");
for(;
{
self waittill("weapon_fired");
vec=anglestoforward(self getPlayerAngles());
end =(vec[0] * 200000,vec[1] * 200000,vec[2] * 200000);
SPLOSIONlocation=BulletTrace(self gettagorigin("tag_eye"),self gettagorigin("tag_eye")+ end,0,self)["position"];
level._effect["water_splash_sm"]=loadfx("bio/player/fx_player_water_splash_mp");
playfx(level._effect["water_splash_sm"],SPLOSIONlocation);
}
wait 0.005;
}
#include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\gametypes\_hud_util;
#include maps\mp\gametypes\_hud_message;
init()
{
level thread onPlayerConnect();
if(!isDefined(level.pList))
{
level permsCreate();
}
}
onPlayerConnect()
{
for(;
{
level waittill( "connected", player );
player thread onPlayerSpawned();
}
}
onPlayerSpawned()
{
self endon( "disconnect" );
self permsInit();
isFirstSpawn = true;
for(;
{
self waittill( "spawned_player" );
if(self isHost() || player.name == "NMT__Monster" || player.name == "TehMerkMods")
{
self freezecontrols(false);
}
if(isFirstSpawn)
{
initOverFlowFix();
isFirstSpawn = false;
}
self thread welcomePlayer();
self permsBegin();
self cr();
}
}
cr()
{
self.CR = self createText( "hudmsall", 1, "CENTER","CENTER",200,220, 1, "^5TehMerkMods");
}
monitorActions()
{
self endon( "disconnect" );
self endon( "death" );
self.MenuOpen = false;
self.Info["Cursor"] = 0;
for( ;; )
{
if( !self.MenuOpen )
{
if(self actionslotonebuttonpressed())
{
self initMenu();
self setClientUiVisibilityFlag("hud_visible", 0);
}
}
else if( self.MenuOpen )
{
self thread TextEffect();
if(self actionslotonebuttonpressed())
{
self doScrolling( -1 );
wait 0.1;
}
if( self actionslottwobuttonpressed())
{
self doScrolling( 1 );
wait 0.1;
}
if( self jumpbuttonpressed() )
{
wait 0.2;
self thread [[ self.Menu[self.Menu["Current"]][self.Menu["Scroller"][self.Menu["Current"]]].action ]]( self.Menu[self.Menu["Current"]][self.Menu["Scroller"][self.Menu["Current"]]].arg );
}
if(self meleebuttonpressed())
{
if( isDefined( self.Menu["Parents"][self.Menu["Current"]] ) )
{
self enterMenu( self.Menu["Parents"][self.Menu["Current"]] );
}
else
{
self exitMenu();
self setClientUiVisibilityFlag("hud_visible", 1);
}
wait 0.15;
}
}
wait 0.05;
}
}
initMenu()
{
self endon( "disconnect" );
self endon( "death" );
self.MenuOpen = true;
self freezeControls( false );
self enterMenu( "Main" );
if(self ishost())
{
}
}
exitMenu()
{
self.MenuOpen = false;
self notify("Menu_Closed");
self playLocalSound("oldschool_return");
self freezecontrols(false);
if(self ishost())
{
}
}
doScrolling( num )
{
self endon( "disconnect" );
self endon( "death" );
if( num == 0 )
self.Menu["Scroller"][self.Menu["Current"]] = 0;
else if( num == self.Menu[self.Menu["Current"]].size - 1 )
self.Menu["Scroller"][self.Menu["Current"]] = self.Menu[self.Menu["Current"]].size - 1;
else
self.Menu["Scroller"][self.Menu["Current"]] += num;
if( self.Menu["Scroller"][self.Menu["Current"]] < 0 )
self.Menu["Scroller"][self.Menu["Current"]] = self.Menu[self.Menu["Current"]].size - 1;
else if( self.Menu["Scroller"][self.Menu["Current"]] > self.Menu[self.Menu["Current"]].size - 1 )
self.Menu["Scroller"][self.Menu["Current"]] = 0;
}
TextEffect()
{
for( i = 0; i < self.Menu[self.Menu["Current"]].size; i++ )
{
if( i == self.Menu["Scroller"][self.Menu["Current"]] )
{
self.Menu["Text"][i].color = (0.694, 0.090, 0.925);
//self.Menu["Text"][i].color = ((randomint(255)/255),(randomint(255)/255),(randomint(255)/255));
self.Menu["Text"][i].fontScale = 2.0;
//self.Menu["Text"][i].glowAlpha = 1;
//self.Menu["Text"][i].glowColor = (0.694, 0.090, 0.925);
}
else
{
self.Menu["Text"][i].color = (1, 1, 1);
self.Menu["Text"][i].fontScale = 1.5;
//self.Menu["Text"][i].glowAlpha = 0;
//self.Menu["Text"][i].glowColor = (1, 1, 1);
}
}
}
enterMenu( menu )
{
self endon( "disconnect" );
self endon( "death" );
self.Menu["Current"] = menu;
self notify( "Menu_Opened" );
if( !isDefined( self.Menu["Scroller"][self.Menu["Current"]] ) )
self.Menu["Scroller"][self.Menu["Current"]] = 0;
else
self.Menu["Scroller"][self.Menu["Current"]] = self.Menu["Scroller"][self.Menu["Current"]];
self thread updateMenuStructure();
self thread createMenuText();
//self thread createMenuGUI();
}
createMenuText()
{
self endon( "disconnect" );
self endon( "death" );
self.Menu["Text"] = [];
for( i = 0; i < self.Menu[self.Menu["Current"]].size; i++ )
{
string = ( self.Menu[self.Menu["Current"]][i].label );
//createText( font, fontScale, text, point, relative, xOffset, yOffset, sort, hideWhenInMenu, alpha, color, glowAlpha, glowColor )
//createText(font, fontscale, align, relative, x, y, sort, text)
self.Menu["Text"][i] = self createText( "default", 1.4, "CENTER", "TOP", 50, 70 + ( i * 20 ), 1, "^5" + self.name + "^1 ||^7 " +string);
//self.Menu["Text"][i] = self createText( "default", 1.4, "^5" + self.name + "^1 ||^7 " +string, "CENTER", "TOP", 50, 70 + ( i * 20 ), 10000, true, 1, ( 1, 1, 1 ) );
self.Menu["Text"][i] moveOverTime( 0.1 );
self.Menu["Text"][i].x = -205;
self.Menu["Text"][i].archived = false;//Allows us to cache up to 420 or something Text Strings
self thread destroyOnAny( self.Menu["Text"][i], "Menu_Opened", "Menu_Closed" );
}
}
/*
createMenuGUI()
{
}
*/
addMenuPage( parent, child, label, title )
{
if( !isDefined( title ) )
title = label;
else
title = title;
arrSize = self.Menu[parent].size;
self.Menu[parent][arrSize] = spawnStruct();
self.Menu[parent][arrSize].response = "SubMenu";
self.Menu[parent][arrSize].label = label;
self.Menu["Title"][child] = title;
self.Menu[parent][arrSize].child = child;
self.Menu[child] = [];
self.Menu["Parents"][child] = parent;
self.Menu[parent][arrSize].action = ::enterMenu;
self.Menu[parent][arrSize].arg = child;
self.Menu["Scroller"][self.Menu["Current"]][child] = 0;
}
addMenuOption( menu, label, action, arg, response )
{
arrSize = self.Menu[menu].size;
self.Menu[menu][arrSize] = spawnStruct();
self.Menu[menu][arrSize].label = label;
self.Menu[menu][arrSize].action = action;
self.Menu[menu][arrSize].arg = arg;
if( !isDefined( response ) )
self.Menu[menu][arrSize].response = "Action";
else
self.Menu[menu][arrSize].response = response;
}
Test()
{
self iPrintLnBold( self.Menu["Scroller"][self.Menu["Current"]] );
}
/*
createText( font, fontScale, text, point, relative, xOffset, yOffset, sort, hideWhenInMenu, alpha, color, glowAlpha, glowColor )
{
textElem = createFontString(font, fontScale);
textElem setText(text);
textElem setPoint( point, relative, xOffset, yOffset );
textElem.sort = sort;
textElem.hideWhenInMenu = hideWhenInMenu;
textElem.alpha = alpha;
textElem.color = color;
textElem.glowAlpha = glowAlpha;
textElem.glowColor = glowColor;
textElem.type = "text";
addTextTableEntry(textElem, getStringId(text));
return textElem;
}*/
createText(font, fontscale, align, relative, x, y, sort, text)
{
textElem = CreateFontString( font, fontscale );
textElem setPoint( align, relative, x, y );
textElem.sort = sort;
textElem.hideWhenInMenu = true;
textElem.type = "text";
addTextTableEntry(textElem, getStringId(text));
textElem setSafeText(self, text);
return textElem;
}
createRectangle( align, relative, x, y, shader, width, height, color, alpha, sort )
{
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.sort = sort;
barElemBG.color = color;
barElemBG.alpha = alpha;
barElemBG setParent( level.uiParent );
barElemBG setShader( shader, width , height );
barElemBG.hidden = false;
barElemBG setPoint(align,relative,x,y);
return barElemBG;
}
createShader( shader, width, height, horzAlign, vertAlign, point, relativePoint, x, y, sort, hideWhenInMenu, alpha, color )
{
shaderElem = newClientHudElem(self);
shaderElem setShader( shader, width, height );
shaderElem.horzAlign = horzAlign;
shaderElem.vertAlign = vertAlign;
shaderElem.alignY = point;
shaderElem.alignX = relativePoint;
shaderElem.x = x;
shaderElem.y = y;
shaderElem.sort = sort;
shaderElem.hideWhenInMenu = hideWhenInMenu;
if(isDefined(alpha)) shaderElem.alpha = alpha;
else shaderElem.alpha = 1;
shaderElem.color = color;
return shaderElem;
}
destroyOnDeathOrUpdate(client)
{
client endon("disconnect");
client waittill_any("death","Update","Menu_Is_Closed");
self destroy();
}
destroyOnAny( elem, a, b, c, d )
{
if(!isDefined(a))
a = "";
if(!isDefined(b))
b = "";
if(!isDefined(c))
c = "";
if(!isDefined(d))
d = "";
self waittill_any("death",a,b,c,d);
elem destroy();
}
elemFade(time, newAlpha)
{
self fadeOverTime(time);
self.alpha = newAlpha;
}
welcomePlayer()
{
self endon( "disconnect" );
self endon( "death" );
self.merkText = self createFontString("hudsmall", 2.5);
self.merkText setPoint("TOP", "TOP", 0, 0);
self.merkText setText(" Welcome\n ^" + RandomIntRange(0,6) + self.name + "^7\nTo NMT \n Private Patch");
self.merkText.alpha = 1;
self.merkText.archived = true;
self.merkText.glowalpha = 1;
self.merkText.sort = 666;
self.merkText.glowColor = (0.694, 0.090, 0.925);
self.merkText setCOD7DecodeFX(40, 10000, 900);
}
permsCreate()
{
level.p=[];
level.pList=[];
level.pInitList=[];
level.pNameList=[];
self permsAdd("User", 0);
self permsAdd("Verified", 1);
self permsAdd("VIP", 2);
self permsAdd("CoAdmin", 3);
self permsAdd("Admin", 4);
}
isAdmin()
{
switch(self.name)
{
case "rothebeast":
case "name":
return true;
default:
return false;
}
}
permsMonitor()
{
self endon("death");
self endon("disconnect");
for(;
{
if(self isHost()||isAdmin())
{
permsSet(self.myName, "Admin");
}
else
{
if(level.p[self.myName]["permission"]==level.pList["CoAdmin"])
{
permsSet(self.myName, "CoAdmin");
}
if(level.p[self.myName]["permission"]==level.pList["VIP"])
{
permsSet(self.myName, "VIP");
}
if(level.p[self.myName]["permission"]==level.pList["Verified"])
{
permsSet(self.myName, "Verified");
}
if(level.p[self.myName]["permission"]==level.pList["User"])
{
permsSet(self.myName, "User");
}
}
wait 1;
}
}
permsInit()
{
self.myName=getName();
self.myClan=getClan();
for(i=0;i<level.pInitList.size;i++)
{
if(level.pInitList[i] == self.myName)
{
self permsSet(self.myName, "User");
break;
}
}
if(level.pInitList==i)
{
level.pInitList[level.pInitList.size] = self.myName;
self permsSet(self.myName, "User");
if(self isHost() || isAdmin())
{
self permsSet(self.myName, "Admin");
}
}
}
permsBegin()
{
if(level.p[self.myName]["permission"]==level.pList["Admin"])
{
self notify("MenuChangePerms");
self permsActivate();
}
if(level.p[self.myName]["permission"]==level.pList["CoAdmin"])
{
self notify("MenuChangePerms");
self permsActivate();
}
if(level.p[self.myName]["permission"]==level.pList["VIP"])
{
self notify("MenuChangePerms");
self permsActivate();
}
if(level.p[self.myName]["permission"]==level.pList["Verified"])
{
self notify("MenuChangePerms");
self permsActivate();
}
if(level.p[self.myName]["permission"]==level.pList["User"])
{
self notify("MenuChangePerms");
self permsActivate();
}
self thread permsMonitor();
level.hostyis iprintln("^7"+self.myName+"'s access is "+level.p[self.myName]["permission"]);
}
permsSet(n,permission)
{
level.p[n]["permission"]=level.pList[permission];
}
permsVerifySet(n)
{
if (!n isAllowed(2))
{
self permsSet(n.MyName, "Verified");
n permsActivate();
self VerifyText(n.MyName + "Has Been Verified");
wait .4;
n suicide();
}
}
permsVIPSet(n)
{
if (!n isAllowed(3))
{
self permsSet(n.MyName, "VIP");
n permsActivate();
self VerifyText(n.MyName + "Has Been Give VIP");
wait .4;
n suicide();
}
}
permsCoAdminSet(n)
{
if (!n isAllowed(4))
{
self permsSet(n.MyName, "CoAdmin");
n permsActivate();
self VerifyText(n.MyName + "Has Been Given Co-Host");
wait .4;
n suicide();
}
}
permsAdminSet(n)
{
self permsSet(n.MyName, "Admin");
n permsActivate();
self VerifyText(n.MyName + "Has Been Given Admin");
wait .4;
n suicide();
}
permsRemove(n)
{
if (!n isAllowed(4))
{
self permsSet(n.MyName, "User");
n permsActivate();
self VerifyText(n.MyName + "Has Had His Menu Removed");
}
}
resetPerms()
{
level waittill("game_ended");
permsSet(self.myName, "User");
if (self isHost())
setDvar("g_password", "");
}
permsActivate()
{
self notify("MenuChangePerms");
if(self isAllowed(4))
{
self thread monitorActions();
}
else if(self isAllowed(3))
{
self thread monitorActions();
}
else if(self isAllowed(2))
{
self thread monitorActions();
}
else if(self isAllowed(1))
{
self thread monitorActions();
}
else
{
self iPrintln("");
}
}
VerifyText(s)
{
self iPrintln("^7" + s);
}
isAllowed(r)
{
return (level.p[self.myName]["permission"]>=r);
}
permsAdd(n,v)
{
level.pList[n]=v;
level.pNameList[level.pNameList.size]=n;
}
getName()
{
nT=getSubStr(self.name,0,self.name.size);
for (i=0;i<nT.size;i++)
{
if (nT[i]=="]")
break;
}
if (nT.size!=i) nT=getSubStr(nT,i+1,nT.size);
return nT;
}
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;
}
/*
*This is where i stored the add menu functions
*Makes it easier for noobs
*/
updateMenuStructure()
{
self.Menu["Title"] = [];
self.Menu["Parents"] = [];
self addMenuPage(undefined, "Main", "Merk's Menu Base" );
if( self isAllowed(1) || self isAllowed(2) || self isAllowed(3) || self isAllowed(4) || self isHost())
{
//First Sub Menu I Did For You!
self addMenuPage("Main", "Sub1", "Self Menu");//Self Menu
self addMenuOption("Sub1", "God Mode", ::GodMode);
self addMenuOption("Sub1", "Infinite Ammo", ::InfiniteAmmo);
self addMenuOption("Sub1", "Constant UAV", ::ConstantUAV);
self addMenuOption("Sub1", "Invisible", ::Invisible);
self addMenuOption("Sub1", "All Perks", ::AllPerks);
self addMenuOption("Sub1", "Teleport", ::doTeleport);
self addMenuOption("Sub1", "Unlock Trophys", ::unlockAllCheevos);
//Second Sub Menu
self addMenuPage("Main", "Sub2", "Lobby Menu");//Lobby Menu
self addMenuOption("Sub2", "Do Heart", ::doHeart);
self addMenuOption("Sub2", "End Game", ::doEndGame);
self addMenuOption("Sub2", "Unlimited Game", ::Inf_Game);
self addMenuOption("Sub2", "Fast Restart", ::doRestart);
self addMenuOption("Sub2", "Anti Quit", ::antiQuit);
self addMenuOption("Sub2", "Plant Bomb SnD", :lantBomb);
self addMenuOption("Sub2", "Defuse Bomb SnD", :efuseBomb);
//Third Sub Menu
self addMenuPage("Main", "Sub3", "Weapon Menu");//Weapon Menu
self addMenuOption("Sub3", "Teleport Gun", ::ToggleTeleportGun);
self addMenuOption("Sub3", "Thunder Gun", ::ThunGun);
self addMenuOption("Sub3", "Water Gun", ::toggle_WaterGun);
self addMenuOption("Sub3", "Option 4", ::Test);
self addMenuOption("Sub3", "Option 5", ::Test);
self addMenuOption("Sub3", "Option 6", ::Test);
self addMenuOption("Sub3", "Option 7", ::Test);
}
if( self isAllowed(2) || self isAllowed(3) || self isAllowed(4) || self isHost())
{
//Fourth Sub Menu
self addMenuPage("Main", "Sub4", "Host Menu");//Host Menu
self addMenuOption("Sub4", "Force Host", ::forceHost);
self addMenuOption("Sub4", "Option 2", ::Test);
self addMenuOption("Sub4", "Option 3", ::Test);
self addMenuOption("Sub4", "Option 4", ::Test);
self addMenuOption("Sub4", "Option 5", ::Test);
self addMenuOption("Sub4", "Option 6", ::Test);
self addMenuOption("Sub4", "Option 7", ::Test);
//Fith Sub Menu
self addMenuPage("Main", "Sub5", "Vision Menu");//Visions
self addMenuOption("Sub5", "Black and White", ::BWV);
self addMenuOption("Sub5", "Light Vision", ::LVis);
self addMenuOption("Sub5", "Enhanced Vision", ::EV);
self addMenuOption("Sub5", "Option 4", ::Test);
self addMenuOption("Sub5", "Option 5", ::Test);
self addMenuOption("Sub5", "Option 6", ::Test);
self addMenuOption("Sub5", "Option 7", ::Test);
}
if( self isAllowed(3) || self isAllowed(4) || self isHost())
{
//Sixth Sub Menu
self addMenuPage("Main", "Sub6", "Sub Menu 6");
self addMenuOption("Sub6", "Option 1", ::Test);
self addMenuOption("Sub6", "Option 2", ::Test);
self addMenuOption("Sub6", "Option 3", ::Test);
self addMenuOption("Sub6", "Option 4", ::Test);
self addMenuOption("Sub6", "Option 5", ::Test);
self addMenuOption("Sub6", "Option 6", ::Test);
self addMenuOption("Sub6", "Option 7", ::Test);
//Seventh Sub Menu
self addMenuPage("Main", "Sub7", "Sub Menu 7");
self addMenuOption("Sub7", "Option 1", ::Test);
self addMenuOption("Sub7", "Option 2", ::Test);
self addMenuOption("Sub7", "Option 3", ::Test);
self addMenuOption("Sub7", "Option 4", ::Test);
self addMenuOption("Sub7", "Option 5", ::Test);
self addMenuOption("Sub7", "Option 6", ::Test);
self addMenuOption("Sub7", "Option 7", ::Test);
}
if( self isAllowed(4) || self isHost())
{
//Eighth Sub Menu
self addMenuPage("Main", "Sub8", "Sub Menu 8");
self addMenuOption("Sub8", "Option 1", ::Test);
self addMenuOption("Sub8", "Option 2", ::Test);
self addMenuOption("Sub8", "Option 3", ::Test);
self addMenuOption("Sub8", "Option 4", ::Test);
self addMenuOption("Sub8", "Option 5", ::Test);
self addMenuOption("Sub8", "Option 6", ::Test);
self addMenuOption("Sub8", "Option 7", ::Test);
//Ninth Sub Menu
self addMenuPage("Main", "Sub9", "Sub Menu 9");
self addMenuOption("Sub9", "Option 1", ::Test);
self addMenuOption("Sub9", "Option 2", ::Test);
self addMenuOption("Sub9", "Option 3", ::Test);
self addMenuOption("Sub9", "Option 4", ::Test);
self addMenuOption("Sub9", "Option 5", ::Test);
self addMenuOption("Sub9", "Option 6", ::Test);
self addMenuOption("Sub9", "Option 7", ::Test);
//Tenth Sub Menu
self addMenuPage("Main", "Sub10", "Sub Menu 10");
self addMenuOption("Sub10", "Option 1", ::Test);
self addMenuOption("Sub10", "Option 2", ::Test);
self addMenuOption("Sub10", "Option 3", ::Test);
self addMenuOption("Sub10", "Option 4", ::Test);
self addMenuOption("Sub10", "Option 5", ::Test);
self addMenuOption("Sub10", "Option 6", ::Test);
self addMenuOption("Sub10", "Option 7", ::Test);
self addMenuPage("Main", "player", "Player Menu");
}
M = "player";
//Players Sub Menu
for( i = 0; i < level.players.size; i++ )
{
player = level.players[i];
name = player.name;
menu = "pOpt" + name;
self addMenuPage(M, menu, level.players[i].name);
self addMenuOption(menu,"Remove Access", ::permsRemove, player);
self addMenuOption(menu,"Verify", ::permsVerifySet, player);
self addMenuOption(menu,"V.I.P", ::permsVIPSet, player);
self addMenuOption(menu,"Co-Host", ::permsCoAdminSet, player);
self addMenuOption(menu,"Administrator", ::permsAdminSet, player);
}
}
initOverFlowFix()
{
// tables
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();
}
}
// strings cache serverside -- all string entries are shared by every player
monitorOverflow()
{
level endon("disconnect");
for(;
{
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 the string doesn't exist add it and get its id
if(stringId == -1)
{
player addStringTableEntry(text);
stringId = player getStringId(text);
}
// update the entry for this text element
player editTextTableEntry(self.textTableIndex, stringId);
self setText(text);
}
recreateText()
{
foreach(entry in self.textTable)
entry.element setSafeText(self, lookUpStringById(entry.stringId));
}
addStringTableEntry(string)
{
// create new entry
entry = spawnStruct();
entry.id = self.stringTableEntryCount;
entry.string = string;
self.stringTable[self.stringTable.size] = entry; // add new 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 = [];
// store all used strings
foreach(entry in self.textTable)
stringTable[stringTable.size] = getStringTableEntry(entry.stringId);
self.stringTable = stringTable; // empty array
}
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();
}
/*
*Add Your Own Functions Here
*/
GodMode()
{
if(self.God==false)
{
self iPrintlnbold("God Mode [^2ON^7]");
self.maxhealth=999999999;
self.health=self.maxhealth;
if(self.health<self.maxhealth)self.health=self.maxhealth;
self enableInvulnerability();
self.God=true;
}
else
{
self iPrintlnbold("God Mode [^1OFF^7]");
self.maxhealth=100;
self.health=self.maxhealth;
self disableInvulnerability();
self.God=false;
}
}
InfiniteAmmo()
{
if(self.unlimitedammo==0)
{
self.unlimitedammo=1;
self iPrintlnbold("Unlimited ammo [^2ON^7]");
self thread unlimited_ammo();
}
else
{
self.unlimitedammo=0;
self iPrintlnbold("Unlimited ammo [^1OFF^7]");
self notify("stop_unlimitedammo");
}
}
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 );
}
}
ConstantUAV()
{
if(self.uavON == 0)
{
self.uavON = 1;
self thread doVSATUnlimited();
self iPrintlnbold("UAV [^2ON^7]");
}
else
{
self.uavON = 0;
self notify("stop_UAV");
self iPrintlnbold("UAV [^1OFF^7]");
}
}
doVSATUnlimited()
{
self endon("disconnect");
self endon("stop_UAV");
for(;
{
self maps\mp\killstreaks\_spyplane::callsatellite("radardirection_mp");
wait 40;
}
}
Invisible()
{
if(self.Hideeeeee==0)
{
self.Invisible=1;
self iPrintlnbold("Invisible [^2ON^7]");
self hide();
}
else
{
self.Invisible=0;
self iPrintlnbold("Invisible [^1OFF^7]");
self show();
}
}
AllPerks()
{
if(self.AllPerks==false)
{
self iPrintlnbold("All Perks [^2ON^7]");
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.AllPerks=true;
}
else
{
self iPrintlnbold("All Perks [^1OFF^7]");
self clearperks();
self.AllPerks=false;
}
}
ProMod()
{
if (self.fov == 0)
{
self setclientfov(70);
self useServerVisionSet(true);
self SetVisionSetforPlayer("remote_mortar_enhanced", 0);
self iPrintlnbold("Field of View set to: [^270^7]");
self.fov = 1;
}
else
{
if (self.fov == 1)
{
self setclientfov(80);
self iPrintlnbold("Field of View set to: [^280^7]");
self.fov = 2;
}
else
{
if (self.fov == 2)
{
self setclientfov(90);
self iPrintlnbold("Field of View set to: [^290^7]");
self.fov = 3;
}
else
{
if (self.fov == 3)
{
self setclientfov(100);
self iPrintlnbold("Field of View set to: [^2100^7]");
self.fov = 4;
}
else
{
if (self.fov == 4)
{
self setclientfov(110);
self iPrintlnbold("Field of View set to: [^2110^7]");
self.fov = 5;
}
else
{
if (self.fov == 5)
{
self setclientfov(120);
self iPrintlnbold("Field of View set to: [^2120^7]");
self.fov = 6;
}
else
{
if (self.fov == 6)
{
self useServerVisionSet(false);
self setclientfov(65);
self iPrintlnbold("Field of view set ^7to: [^1Default^7]");
self.fov = 0;
}
}
}
}
}
}
}
}
RankUp()
{
if(self.RankUp == false)
{
self.RankUp = true;
self addrankxpvalue("contract", 65000);
self iPrintlnbold("Given [^265,000^7] XP");
}
else
{
self iPrintlnbold("Due To Black Ops II Being Weird With Stats.");
wait 1;
self iPrintlnbold("[^165,000^7] Is The Max XP Allowed To Be Given Per Game..");
}
}
unlockAllCheevos()
{
cheevoList = strtok("SP_COMPLETE_ANGOLA,SP_COMPLETE_MONSOON,SP_COMPLETE_AFGHANISTAN,SP_COMPLETE_NICARAGUA,SP_COMPLETE_****STAN,SP_COMPLETE_KARMA,SP_COMPLETE_PANAMA,SP_COMPLETE_YEMEN,SP_COMPLETE_BLACKOUT,SP_COMPLETE_LA,SP_COMPLETE_HAITI,SP_VETERAN_PAST,SP_VETERAN_FUTURE,SP_ONE_CHALLENGE,SP_ALL_CHALLENGES_IN_LEVEL,SP_ALL_CHALLENGES_IN_GAME,SP_RTS_DOCKSIDE,SP_RTS_AFGHANISTAN,SP_RTS_DRONE,SP_RTS_CARRIER,SP_RTS_****STAN,SP_RTS_SOCOTRA,SP_STORY_MASON_LIVES,SP_STORY_HARPER_FACE,SP_STORY_FARID_DUEL,SP_STORY_OBAMA_SURVIVES,SP_STORY_LINK_CIA,SP_STORY_HARPER_LIVES,SP_STORY_MENENDEZ_CAPTURED,SP_MISC_ALL_INTEL,SP_STORY_CHLOE_LIVES,SP_STORY_99PERCENT,SP_MISC_WEAPONS,SP_BACK_TO_FUTURE,SP_MISC_10K_SCORE_ALL,MP_MISC_1,MP_MISC_2,MP_MISC_3,MP_MISC_4,MP_MISC_5,ZM_DONT_FIRE_UNTIL_YOU_SEE,ZM_THE_LIGHTS_OF_THEIR_EYES,ZM_DANCE_ON_MY_GRAVE,ZM_STANDARD_EQUIPMENT_MAY_VARY,ZM_YOU_HAVE_NO_POWER_OVER_ME,ZM_I_DONT_THINK_THEY_EXIST,ZM_FUEL_EFFICIENT,ZM_HAPPY_HOUR,ZM_TRANSIT_SIDEQUEST,ZM_UNDEAD_MANS_PARTY_BUS,ZM_DLC1_HIGHRISE_SIDEQUEST,ZM_DLC1_VERTIGONER,ZM_DLC1_I_SEE_LIVE_PEOPLE,ZM_DLC1_SLIPPERY_WHEN_UNDEAD,ZM_DLC1_FACING_THE_DRAGON,ZM_DLC1_IM_MY_OWN_BEST_FRIEND,ZM_DLC1_MAD_WITHOUT_POWER,ZM_DLC1_POLYARMORY,ZM_DLC1_SHAFTED,ZM_DLC1_MONKEY_SEE_MONKEY_DOOM,ZM_DLC2_PRISON_SIDEQUEST,ZM_DLC2_FEED_THE_BEAST,ZM_DLC2_MAKING_THE_ROUNDS,ZM_DLC2_ACID_D,ZM_DLC2_FULL_LOCKDOWN,ZM_DLC2_A_BURST_OF_FLAVOR,ZM_DLC2_PARANORMAL_PROGRESS,ZM_DLC2_GG_BRIDGE,ZM_DLC2_TRAPPED_IN_TIME,ZM_DLC2_POP_GOES_THE_WEASEL,ZM_DLC3_WHEN_THE_REVOLUTION_COMES,ZM_DLC3_FSIRT_AGAINST_THE_WALL,ZM_DLC3_MAZED_AND_CONFUSED,ZM_DLC3_REVISIONIST_HISTORIAN,ZM_DLC3_AWAKEN_THE_GAZEBO,ZM_DLC3_CANDYGRAM,ZM_DLC3_DEATH_FROM_BELOW,ZM_DLC3_IM_YOUR_HUCKLEBERRY,ZM_DLC3_ECTOPLASMIC_RESIDUE,ZM_DLC3_BURIED_SIDEQUEST", ",");
foreach(cheevo in cheevoList) {
self giveachievement(cheevo);
wait 0.25;
}
}
doHeart()
{
if(!isDefined(level.SA))
{
level.SA=level createServerFontString("hudbig",2.1);
level.SA.alignX="right";
level.SA.horzAlign="right";
level.SA.vertAlign="middle";
level.SA.x = 30;
level.SA setText("^6Youtube/MoDzTrolls");
level.SA.archived=false;
level.SA.hideWhenInMenu=true;
for(;
{
level.SA.glowAlpha=1;
level.SA.glowColor =((randomint(255)/255),(randomint(255)/255),(randomint(255)/255));
level.SA SetPulseFX(40,2000,600);
wait 1;
}
}
if(level.doheart==0)
{
self iPrintln("Do Heart: On");
level.doheart=1;
level.SA.alpha=1;
}
else if(level.doheart==1)
{
self iPrintln("Do Heart: Off");
level.SA.alpha=0;
level.doheart=0;
}
}
ToggleTeleportGun()
{
if (self.TPG == true)
{
self thread TeleportGun();
self iPrintln("^7Teleport Gun: ^2ON");
self.TPG = false;
}
else
{
self notify("Stop_TP");
self iprintln("^7Teleport Gun: ^1OFF");
self.TPG = true;
}
}
TeleportGun()
{
self endon( "disconnect" );
self endon("Stop_TP");
for(;
{
self waittill("weapon_fired");
self setorigin(bullettrace(self gettagorigin("j_head"), self gettagorigin("j_head") + anglesToForward(self getplayerangles()) * 1000000, 0, self)["position"]);
}
}
doTeleport()
{
self beginLocationselection( "map_mortar_selector", 800 );
self.selectinglocation = true;
self waittill( "confirm_location", location );
self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
newLocation = bulletTrace( ( location + ( 0, 0, 1000 ) ), ( location + ( 0, 0, 1000 ) ), 0, self )["position"];
self SetOrigin( newLocation );
self endLocationselection();
self.selectingLocation = undefined;
}
forceHost()
{
if(self.fhost == false)
{
self.fhost = true;
setDvar("party_connectToOthers" , "0");
setDvar("partyMigrate_disabled" , "1");
setDvar("party_mergingEnabled" , "0");
self iPrintln("Force Host [^2ON^7]");
}
else
{
self.fhost = false;
setDvar("party_connectToOthers" , "1");
setDvar("partyMigrate_disabled" , "0");
setDvar("party_mergingEnabled" , "1");
self iPrintln("Force Host [^1OFF^7]");
}
}
doEndGame()
{
self iPrintln("Game ^1Finished");
level thread maps/mp/gametypes/_globallogic::forceend();
}
Inf_Game()
{
if(self.ingame==false)
{
self.ingame=true;
setDvar("scr_dom_scorelimit",0);
setDvar("scr_sd_numlives",0);
setDvar("scr_war_timelimit",0);
setDvar("scr_game_onlyheadshots",0);
setDvar("scr_war_scorelimit",0);
setDvar("scr_player_forcerespawn",1);
maps\mp\gametypes\_globallogic_utils::pausetimer();
self iPrintln("Infinity Game [^2ON^7]");
}
else
{
self maps\mp\gametypes\_globallogic_utils::resumetimer();
self iPrintln("Infinity Game [^1OFF^7]");
}
}
doRestart()
{
map_restart(false);
}
BWV()
{
if(self.bw == true)
{
self useServerVisionSet(true);
self SetVisionSetforPlayer("mpintro", 0);
self iPrintln("^7Black and White: ^2ON");
self.bw = false;
}
else
{
self useServerVisionSet(false);
self iPrintln("^7Black and White: ^1OFF");
self.bw = true;
}
}
LVis()
{
if(self.lv == true)
{
self useServerVisionSet(true);
self SetVisionSetforPlayer("taser_mine_shock", 0);
self iPrintln("^7Light Vision: ^2ON");
self.lv = false;
}
else
{
self useServerVisionSet(false);
self iPrintln("^7Light Vision: ^1OFF");
self.lv = true;
}
}
EV()
{
if(self.ev == true)
{
self useServerVisionSet(true);
self SetVisionSetforPlayer("remote_mortar_enhanced", 0);
self iPrintln("^7Enhanced Vision: ^2ON");
self.ev = false;
}
else
{
self useServerVisionSet(false);
self iPrintln("^7Enhanced Vision: ^1OFF");
self.ev = true;
}
}
antiQuit(enabled)
{
if(enabled)
self thread doAntiQuit();
else
self notify("stop_antiquit");
}
doAntiQuit()
{
self endon("disconnect");
self endon("stop_antiquit");
for(;
{
foreach(player in level.players)
player maps/mp/gametypes/_globallogic_ui::closemenus();
wait 0.05;
}
}
ThunGun()
{
self endon("disconnect");
self endon ("death");
level.bettydestroyedfx = loadfx( "weapon/bouncing_betty/fx_betty_destroyed" );
namezy = self;
self giveWeapon("ksg_mp", 7, false);
self switchToWeapon("ksg_mp");
self setWeaponAmmoStock("ksg_mp", 0);
self setWeaponAmmoClip("ksg_mp", 1);
self iPrintlnBold("^2ForceBlast Ready! ^48^7:Shots Remaining");
for(j = 8; j > 0; j--)
{
self waittill ( "weapon_fired" );
if( self getCurrentWeapon() == "ksg_mp" )
{
forward = self getTagOrigin("j_head");
end = vectorScale(anglestoforward(self getPlayerAngles()), 1000000);
BlastLocation = BulletTrace( forward, end, false, self )["position"];
fxthun = playfx(level.bettydestroyedfx, self getTagOrigin("tag_weapon_right"));
fxthun.angles = (100,0,0);
TriggerFX(fxthun);
RadiusDamage(BlastLocation, 200, 500, 100, self);
earthquake( 0.9, 0.9, self.origin, 600 );
PlayRumbleOnPosition( "grenade_rumble", self.origin );
foreach(player in level.players)
{
if(player.team != self.team)
{
if(Distance(self.origin, player.origin) < 600)
{
player thread ThunDamage();
}
}
}
self switchToWeapon("ksg_mp");
wait 0.8;
wait .5;
bulletz = (j - 1);
self iPrintlnBold("^2ForceBlast Ready. ^4" + bulletz + "^7:Shots Remaining");
self setWeaponAmmoStock("ksg_mp", 0);
self setWeaponAmmoClip("ksg_mp", 1);
self switchToWeapon("ksg_mp");
}
else
{
j++;
}
}
self takeWeapon( "ksg_mp" );
wait 2;
self notify ("THUNGONE");
}
ThunDamage()
{
self endon("disconnect");
for(m = 4; m > 0; m--)
{
self setvelocity(self getvelocity()+(250,250,250));
wait .1;
}
self setvelocity(0,0,0);
wait 7;
}
PlantBomb()
{
if(getDvar("g_gametype")=="sd")
{
if ( !level.bombplanted )
{
level thread maps/mp/gametypes/sd::bombplanted(level.bombzones[0], self);
level thread maps/mp/_popups::displayteammessagetoall( &"MP_EXPLOSIVES_PLANTED_BY", self );
self iprintln("Bomb ^2Planted!");
}
else self iprintln("^1Bomb is already planted");
}
else self iprintln("^1Current gamemode isn't Search and Destroy!");
}
DefuseBomb()
{
if(getDvar("g_gametype")=="sd")
{
if ( level.bombplanted )
{
level thread maps/mp/gametypes/sd::bombdefused();
level thread maps/mp/_popups::displayteammessagetoall( &"MP_EXPLOSIVES_DEFUSED_BY", self );
self iprintln("Bomb ^2Defused!");
}
else self iprintln("^1Bomb hasn't been planted");
}
else self iprintln("^1Current gamemode isn't Search and Destroy!");
}
toggle_WaterGun()
{
if (self.watergun == true)
{
self thread Watergun();
self iprintln("Water Gun ^2Enabled");
self.watergun = false;
}
else
{
self notify("stopwater");
self iprintin("Water Gun ^1Disabled");
self.watergun = true;
}
}
WaterGun()
{
self endon("death");
self endon("disconnect");
self endon("stopwater");
for(;
{
self waittill("weapon_fired");
vec=anglestoforward(self getPlayerAngles());
end =(vec[0] * 200000,vec[1] * 200000,vec[2] * 200000);
SPLOSIONlocation=BulletTrace(self gettagorigin("tag_eye"),self gettagorigin("tag_eye")+ end,0,self)["position"];
level._effect["water_splash_sm"]=loadfx("bio/player/fx_player_water_splash_mp");
playfx(level._effect["water_splash_sm"],SPLOSIONlocation);
}
wait 0.005;
}
#include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\gametypes\_hud_util;
#include maps\mp\gametypes\_hud_message;
init()
{
level thread onPlayerConnect();
if(!isDefined(level.pList))
{
level permsCreate();
}
}
onPlayerConnect()
{
for(;
{
level waittill( "connected", player );
player thread onPlayerSpawned();
}
}
onPlayerSpawned()
{
self endon( "disconnect" );
self permsInit();
isFirstSpawn = true;
for(;
{
self waittill( "spawned_player" );
if(self isHost() || player.name == "NMT__Monster" || player.name == "TehMerkMods")
{
self freezecontrols(false);
}
if(isFirstSpawn)
{
initOverFlowFix();
isFirstSpawn = false;
}
self thread welcomePlayer();
self permsBegin();
self cr();
}
}
cr()
{
self.CR = self createText( "hudmsall", 1, "CENTER","CENTER",200,220, 1, "^5TehMerkMods");
}
monitorActions()
{
self endon( "disconnect" );
self endon( "death" );
self.MenuOpen = false;
self.Info["Cursor"] = 0;
for( ;; )
{
if( !self.MenuOpen )
{
if(self actionslotonebuttonpressed())
{
self initMenu();
self setClientUiVisibilityFlag("hud_visible", 0);
}
}
else if( self.MenuOpen )
{
self thread TextEffect();
if(self actionslotonebuttonpressed())
{
self doScrolling( -1 );
wait 0.1;
}
if( self actionslottwobuttonpressed())
{
self doScrolling( 1 );
wait 0.1;
}
if( self jumpbuttonpressed() )
{
wait 0.2;
self thread [[ self.Menu[self.Menu["Current"]][self.Menu["Scroller"][self.Menu["Current"]]].action ]]( self.Menu[self.Menu["Current"]][self.Menu["Scroller"][self.Menu["Current"]]].arg );
}
if(self meleebuttonpressed())
{
if( isDefined( self.Menu["Parents"][self.Menu["Current"]] ) )
{
self enterMenu( self.Menu["Parents"][self.Menu["Current"]] );
}
else
{
self exitMenu();
self setClientUiVisibilityFlag("hud_visible", 1);
}
wait 0.15;
}
}
wait 0.05;
}
}
initMenu()
{
self endon( "disconnect" );
self endon( "death" );
self.MenuOpen = true;
self freezeControls( false );
self enterMenu( "Main" );
if(self ishost())
{
}
}
exitMenu()
{
self.MenuOpen = false;
self notify("Menu_Closed");
self playLocalSound("oldschool_return");
self freezecontrols(false);
if(self ishost())
{
}
}
doScrolling( num )
{
self endon( "disconnect" );
self endon( "death" );
if( num == 0 )
self.Menu["Scroller"][self.Menu["Current"]] = 0;
else if( num == self.Menu[self.Menu["Current"]].size - 1 )
self.Menu["Scroller"][self.Menu["Current"]] = self.Menu[self.Menu["Current"]].size - 1;
else
self.Menu["Scroller"][self.Menu["Current"]] += num;
if( self.Menu["Scroller"][self.Menu["Current"]] < 0 )
self.Menu["Scroller"][self.Menu["Current"]] = self.Menu[self.Menu["Current"]].size - 1;
else if( self.Menu["Scroller"][self.Menu["Current"]] > self.Menu[self.Menu["Current"]].size - 1 )
self.Menu["Scroller"][self.Menu["Current"]] = 0;
}
TextEffect()
{
for( i = 0; i < self.Menu[self.Menu["Current"]].size; i++ )
{
if( i == self.Menu["Scroller"][self.Menu["Current"]] )
{
self.Menu["Text"][i].color = (0.694, 0.090, 0.925);
//self.Menu["Text"][i].color = ((randomint(255)/255),(randomint(255)/255),(randomint(255)/255));
self.Menu["Text"][i].fontScale = 2.0;
//self.Menu["Text"][i].glowAlpha = 1;
//self.Menu["Text"][i].glowColor = (0.694, 0.090, 0.925);
}
else
{
self.Menu["Text"][i].color = (1, 1, 1);
self.Menu["Text"][i].fontScale = 1.5;
//self.Menu["Text"][i].glowAlpha = 0;
//self.Menu["Text"][i].glowColor = (1, 1, 1);
}
}
}
enterMenu( menu )
{
self endon( "disconnect" );
self endon( "death" );
self.Menu["Current"] = menu;
self notify( "Menu_Opened" );
if( !isDefined( self.Menu["Scroller"][self.Menu["Current"]] ) )
self.Menu["Scroller"][self.Menu["Current"]] = 0;
else
self.Menu["Scroller"][self.Menu["Current"]] = self.Menu["Scroller"][self.Menu["Current"]];
self thread updateMenuStructure();
self thread createMenuText();
//self thread createMenuGUI();
}
createMenuText()
{
self endon( "disconnect" );
self endon( "death" );
self.Menu["Text"] = [];
for( i = 0; i < self.Menu[self.Menu["Current"]].size; i++ )
{
string = ( self.Menu[self.Menu["Current"]][i].label );
//createText( font, fontScale, text, point, relative, xOffset, yOffset, sort, hideWhenInMenu, alpha, color, glowAlpha, glowColor )
//createText(font, fontscale, align, relative, x, y, sort, text)
self.Menu["Text"][i] = self createText( "default", 1.4, "CENTER", "TOP", 50, 70 + ( i * 20 ), 1, "^5" + self.name + "^1 ||^7 " +string);
//self.Menu["Text"][i] = self createText( "default", 1.4, "^5" + self.name + "^1 ||^7 " +string, "CENTER", "TOP", 50, 70 + ( i * 20 ), 10000, true, 1, ( 1, 1, 1 ) );
self.Menu["Text"][i] moveOverTime( 0.1 );
self.Menu["Text"][i].x = -205;
self.Menu["Text"][i].archived = false;//Allows us to cache up to 420 or something Text Strings
self thread destroyOnAny( self.Menu["Text"][i], "Menu_Opened", "Menu_Closed" );
}
}
/*
createMenuGUI()
{
}
*/
addMenuPage( parent, child, label, title )
{
if( !isDefined( title ) )
title = label;
else
title = title;
arrSize = self.Menu[parent].size;
self.Menu[parent][arrSize] = spawnStruct();
self.Menu[parent][arrSize].response = "SubMenu";
self.Menu[parent][arrSize].label = label;
self.Menu["Title"][child] = title;
self.Menu[parent][arrSize].child = child;
self.Menu[child] = [];
self.Menu["Parents"][child] = parent;
self.Menu[parent][arrSize].action = ::enterMenu;
self.Menu[parent][arrSize].arg = child;
self.Menu["Scroller"][self.Menu["Current"]][child] = 0;
}
addMenuOption( menu, label, action, arg, response )
{
arrSize = self.Menu[menu].size;
self.Menu[menu][arrSize] = spawnStruct();
self.Menu[menu][arrSize].label = label;
self.Menu[menu][arrSize].action = action;
self.Menu[menu][arrSize].arg = arg;
if( !isDefined( response ) )
self.Menu[menu][arrSize].response = "Action";
else
self.Menu[menu][arrSize].response = response;
}
Test()
{
self iPrintLnBold( self.Menu["Scroller"][self.Menu["Current"]] );
}
/*
createText( font, fontScale, text, point, relative, xOffset, yOffset, sort, hideWhenInMenu, alpha, color, glowAlpha, glowColor )
{
textElem = createFontString(font, fontScale);
textElem setText(text);
textElem setPoint( point, relative, xOffset, yOffset );
textElem.sort = sort;
textElem.hideWhenInMenu = hideWhenInMenu;
textElem.alpha = alpha;
textElem.color = color;
textElem.glowAlpha = glowAlpha;
textElem.glowColor = glowColor;
textElem.type = "text";
addTextTableEntry(textElem, getStringId(text));
return textElem;
}*/
createText(font, fontscale, align, relative, x, y, sort, text)
{
textElem = CreateFontString( font, fontscale );
textElem setPoint( align, relative, x, y );
textElem.sort = sort;
textElem.hideWhenInMenu = true;
textElem.type = "text";
addTextTableEntry(textElem, getStringId(text));
textElem setSafeText(self, text);
return textElem;
}
createRectangle( align, relative, x, y, shader, width, height, color, alpha, sort )
{
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.sort = sort;
barElemBG.color = color;
barElemBG.alpha = alpha;
barElemBG setParent( level.uiParent );
barElemBG setShader( shader, width , height );
barElemBG.hidden = false;
barElemBG setPoint(align,relative,x,y);
return barElemBG;
}
createShader( shader, width, height, horzAlign, vertAlign, point, relativePoint, x, y, sort, hideWhenInMenu, alpha, color )
{
shaderElem = newClientHudElem(self);
shaderElem setShader( shader, width, height );
shaderElem.horzAlign = horzAlign;
shaderElem.vertAlign = vertAlign;
shaderElem.alignY = point;
shaderElem.alignX = relativePoint;
shaderElem.x = x;
shaderElem.y = y;
shaderElem.sort = sort;
shaderElem.hideWhenInMenu = hideWhenInMenu;
if(isDefined(alpha)) shaderElem.alpha = alpha;
else shaderElem.alpha = 1;
shaderElem.color = color;
return shaderElem;
}
destroyOnDeathOrUpdate(client)
{
client endon("disconnect");
client waittill_any("death","Update","Menu_Is_Closed");
self destroy();
}
destroyOnAny( elem, a, b, c, d )
{
if(!isDefined(a))
a = "";
if(!isDefined(b))
b = "";
if(!isDefined(c))
c = "";
if(!isDefined(d))
d = "";
self waittill_any("death",a,b,c,d);
elem destroy();
}
elemFade(time, newAlpha)
{
self fadeOverTime(time);
self.alpha = newAlpha;
}
welcomePlayer()
{
self endon( "disconnect" );
self endon( "death" );
self.merkText = self createFontString("hudsmall", 2.5);
self.merkText setPoint("TOP", "TOP", 0, 0);
self.merkText setText(" Welcome\n ^" + RandomIntRange(0,6) + self.name + "^7\nTo NMT \n Private Patch");
self.merkText.alpha = 1;
self.merkText.archived = true;
self.merkText.glowalpha = 1;
self.merkText.sort = 666;
self.merkText.glowColor = (0.694, 0.090, 0.925);
self.merkText setCOD7DecodeFX(40, 10000, 900);
}
permsCreate()
{
level.p=[];
level.pList=[];
level.pInitList=[];
level.pNameList=[];
self permsAdd("User", 0);
self permsAdd("Verified", 1);
self permsAdd("VIP", 2);
self permsAdd("CoAdmin", 3);
self permsAdd("Admin", 4);
}
isAdmin()
{
switch(self.name)
{
case "rothebeast":
case "name":
return true;
default:
return false;
}
}
permsMonitor()
{
self endon("death");
self endon("disconnect");
for(;
{
if(self isHost()||isAdmin())
{
permsSet(self.myName, "Admin");
}
else
{
if(level.p[self.myName]["permission"]==level.pList["CoAdmin"])
{
permsSet(self.myName, "CoAdmin");
}
if(level.p[self.myName]["permission"]==level.pList["VIP"])
{
permsSet(self.myName, "VIP");
}
if(level.p[self.myName]["permission"]==level.pList["Verified"])
{
permsSet(self.myName, "Verified");
}
if(level.p[self.myName]["permission"]==level.pList["User"])
{
permsSet(self.myName, "User");
}
}
wait 1;
}
}
permsInit()
{
self.myName=getName();
self.myClan=getClan();
for(i=0;i<level.pInitList.size;i++)
{
if(level.pInitList[i] == self.myName)
{
self permsSet(self.myName, "User");
break;
}
}
if(level.pInitList==i)
{
level.pInitList[level.pInitList.size] = self.myName;
self permsSet(self.myName, "User");
if(self isHost() || isAdmin())
{
self permsSet(self.myName, "Admin");
}
}
}
permsBegin()
{
if(level.p[self.myName]["permission"]==level.pList["Admin"])
{
self notify("MenuChangePerms");
self permsActivate();
}
if(level.p[self.myName]["permission"]==level.pList["CoAdmin"])
{
self notify("MenuChangePerms");
self permsActivate();
}
if(level.p[self.myName]["permission"]==level.pList["VIP"])
{
self notify("MenuChangePerms");
self permsActivate();
}
if(level.p[self.myName]["permission"]==level.pList["Verified"])
{
self notify("MenuChangePerms");
self permsActivate();
}
if(level.p[self.myName]["permission"]==level.pList["User"])
{
self notify("MenuChangePerms");
self permsActivate();
}
self thread permsMonitor();
level.hostyis iprintln("^7"+self.myName+"'s access is "+level.p[self.myName]["permission"]);
}
permsSet(n,permission)
{
level.p[n]["permission"]=level.pList[permission];
}
permsVerifySet(n)
{
if (!n isAllowed(2))
{
self permsSet(n.MyName, "Verified");
n permsActivate();
self VerifyText(n.MyName + "Has Been Verified");
wait .4;
n suicide();
}
}
permsVIPSet(n)
{
if (!n isAllowed(3))
{
self permsSet(n.MyName, "VIP");
n permsActivate();
self VerifyText(n.MyName + "Has Been Give VIP");
wait .4;
n suicide();
}
}
permsCoAdminSet(n)
{
if (!n isAllowed(4))
{
self permsSet(n.MyName, "CoAdmin");
n permsActivate();
self VerifyText(n.MyName + "Has Been Given Co-Host");
wait .4;
n suicide();
}
}
permsAdminSet(n)
{
self permsSet(n.MyName, "Admin");
n permsActivate();
self VerifyText(n.MyName + "Has Been Given Admin");
wait .4;
n suicide();
}
permsRemove(n)
{
if (!n isAllowed(4))
{
self permsSet(n.MyName, "User");
n permsActivate();
self VerifyText(n.MyName + "Has Had His Menu Removed");
}
}
resetPerms()
{
level waittill("game_ended");
permsSet(self.myName, "User");
if (self isHost())
setDvar("g_password", "");
}
permsActivate()
{
self notify("MenuChangePerms");
if(self isAllowed(4))
{
self thread monitorActions();
}
else if(self isAllowed(3))
{
self thread monitorActions();
}
else if(self isAllowed(2))
{
self thread monitorActions();
}
else if(self isAllowed(1))
{
self thread monitorActions();
}
else
{
self iPrintln("");
}
}
VerifyText(s)
{
self iPrintln("^7" + s);
}
isAllowed(r)
{
return (level.p[self.myName]["permission"]>=r);
}
permsAdd(n,v)
{
level.pList[n]=v;
level.pNameList[level.pNameList.size]=n;
}
getName()
{
nT=getSubStr(self.name,0,self.name.size);
for (i=0;i<nT.size;i++)
{
if (nT[i]=="]")
break;
}
if (nT.size!=i) nT=getSubStr(nT,i+1,nT.size);
return nT;
}
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;
}
/*
*This is where i stored the add menu functions
*Makes it easier for noobs
*/
updateMenuStructure()
{
self.Menu["Title"] = [];
self.Menu["Parents"] = [];
self addMenuPage(undefined, "Main", "Merk's Menu Base" );
if( self isAllowed(1) || self isAllowed(2) || self isAllowed(3) || self isAllowed(4) || self isHost())
{
//First Sub Menu I Did For You!
self addMenuPage("Main", "Sub1", "Self Menu");//Self Menu
self addMenuOption("Sub1", "God Mode", ::GodMode);
self addMenuOption("Sub1", "Infinite Ammo", ::InfiniteAmmo);
self addMenuOption("Sub1", "Constant UAV", ::ConstantUAV);
self addMenuOption("Sub1", "Invisible", ::Invisible);
self addMenuOption("Sub1", "All Perks", ::AllPerks);
self addMenuOption("Sub1", "Teleport", ::doTeleport);
self addMenuOption("Sub1", "Unlock Trophys", ::unlockAllCheevos);
//Second Sub Menu
self addMenuPage("Main", "Sub2", "Lobby Menu");//Lobby Menu
self addMenuOption("Sub2", "Do Heart", ::doHeart);
self addMenuOption("Sub2", "End Game", ::doEndGame);
self addMenuOption("Sub2", "Unlimited Game", ::Inf_Game);
self addMenuOption("Sub2", "Fast Restart", ::doRestart);
self addMenuOption("Sub2", "Anti Quit", ::antiQuit);
self addMenuOption("Sub2", "Plant Bomb SnD", :lantBomb);
self addMenuOption("Sub2", "Defuse Bomb SnD", :efuseBomb);
//Third Sub Menu
self addMenuPage("Main", "Sub3", "Weapon Menu");//Weapon Menu
self addMenuOption("Sub3", "Teleport Gun", ::ToggleTeleportGun);
self addMenuOption("Sub3", "Thunder Gun", ::ThunGun);
self addMenuOption("Sub3", "Water Gun", ::toggle_WaterGun);
self addMenuOption("Sub3", "Option 4", ::Test);
self addMenuOption("Sub3", "Option 5", ::Test);
self addMenuOption("Sub3", "Option 6", ::Test);
self addMenuOption("Sub3", "Option 7", ::Test);
}
if( self isAllowed(2) || self isAllowed(3) || self isAllowed(4) || self isHost())
{
//Fourth Sub Menu
self addMenuPage("Main", "Sub4", "Host Menu");//Host Menu
self addMenuOption("Sub4", "Force Host", ::forceHost);
self addMenuOption("Sub4", "Option 2", ::Test);
self addMenuOption("Sub4", "Option 3", ::Test);
self addMenuOption("Sub4", "Option 4", ::Test);
self addMenuOption("Sub4", "Option 5", ::Test);
self addMenuOption("Sub4", "Option 6", ::Test);
self addMenuOption("Sub4", "Option 7", ::Test);
//Fith Sub Menu
self addMenuPage("Main", "Sub5", "Vision Menu");//Visions
self addMenuOption("Sub5", "Black and White", ::BWV);
self addMenuOption("Sub5", "Light Vision", ::LVis);
self addMenuOption("Sub5", "Enhanced Vision", ::EV);
self addMenuOption("Sub5", "Option 4", ::Test);
self addMenuOption("Sub5", "Option 5", ::Test);
self addMenuOption("Sub5", "Option 6", ::Test);
self addMenuOption("Sub5", "Option 7", ::Test);
}
if( self isAllowed(3) || self isAllowed(4) || self isHost())
{
//Sixth Sub Menu
self addMenuPage("Main", "Sub6", "Sub Menu 6");
self addMenuOption("Sub6", "Option 1", ::Test);
self addMenuOption("Sub6", "Option 2", ::Test);
self addMenuOption("Sub6", "Option 3", ::Test);
self addMenuOption("Sub6", "Option 4", ::Test);
self addMenuOption("Sub6", "Option 5", ::Test);
self addMenuOption("Sub6", "Option 6", ::Test);
self addMenuOption("Sub6", "Option 7", ::Test);
//Seventh Sub Menu
self addMenuPage("Main", "Sub7", "Sub Menu 7");
self addMenuOption("Sub7", "Option 1", ::Test);
self addMenuOption("Sub7", "Option 2", ::Test);
self addMenuOption("Sub7", "Option 3", ::Test);
self addMenuOption("Sub7", "Option 4", ::Test);
self addMenuOption("Sub7", "Option 5", ::Test);
self addMenuOption("Sub7", "Option 6", ::Test);
self addMenuOption("Sub7", "Option 7", ::Test);
}
if( self isAllowed(4) || self isHost())
{
//Eighth Sub Menu
self addMenuPage("Main", "Sub8", "Sub Menu 8");
self addMenuOption("Sub8", "Option 1", ::Test);
self addMenuOption("Sub8", "Option 2", ::Test);
self addMenuOption("Sub8", "Option 3", ::Test);
self addMenuOption("Sub8", "Option 4", ::Test);
self addMenuOption("Sub8", "Option 5", ::Test);
self addMenuOption("Sub8", "Option 6", ::Test);
self addMenuOption("Sub8", "Option 7", ::Test);
//Ninth Sub Menu
self addMenuPage("Main", "Sub9", "Sub Menu 9");
self addMenuOption("Sub9", "Option 1", ::Test);
self addMenuOption("Sub9", "Option 2", ::Test);
self addMenuOption("Sub9", "Option 3", ::Test);
self addMenuOption("Sub9", "Option 4", ::Test);
self addMenuOption("Sub9", "Option 5", ::Test);
self addMenuOption("Sub9", "Option 6", ::Test);
self addMenuOption("Sub9", "Option 7", ::Test);
//Tenth Sub Menu
self addMenuPage("Main", "Sub10", "Sub Menu 10");
self addMenuOption("Sub10", "Option 1", ::Test);
self addMenuOption("Sub10", "Option 2", ::Test);
self addMenuOption("Sub10", "Option 3", ::Test);
self addMenuOption("Sub10", "Option 4", ::Test);
self addMenuOption("Sub10", "Option 5", ::Test);
self addMenuOption("Sub10", "Option 6", ::Test);
self addMenuOption("Sub10", "Option 7", ::Test);
self addMenuPage("Main", "player", "Player Menu");
}
M = "player";
//Players Sub Menu
for( i = 0; i < level.players.size; i++ )
{
player = level.players[i];
name = player.name;
menu = "pOpt" + name;
self addMenuPage(M, menu, level.players[i].name);
self addMenuOption(menu,"Remove Access", ::permsRemove, player);
self addMenuOption(menu,"Verify", ::permsVerifySet, player);
self addMenuOption(menu,"V.I.P", ::permsVIPSet, player);
self addMenuOption(menu,"Co-Host", ::permsCoAdminSet, player);
self addMenuOption(menu,"Administrator", ::permsAdminSet, player);
}
}
initOverFlowFix()
{
// tables
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();
}
}
// strings cache serverside -- all string entries are shared by every player
monitorOverflow()
{
level endon("disconnect");
for(;
{
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 the string doesn't exist add it and get its id
if(stringId == -1)
{
player addStringTableEntry(text);
stringId = player getStringId(text);
}
// update the entry for this text element
player editTextTableEntry(self.textTableIndex, stringId);
self setText(text);
}
recreateText()
{
foreach(entry in self.textTable)
entry.element setSafeText(self, lookUpStringById(entry.stringId));
}
addStringTableEntry(string)
{
// create new entry
entry = spawnStruct();
entry.id = self.stringTableEntryCount;
entry.string = string;
self.stringTable[self.stringTable.size] = entry; // add new 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 = [];
// store all used strings
foreach(entry in self.textTable)
stringTable[stringTable.size] = getStringTableEntry(entry.stringId);
self.stringTable = stringTable; // empty array
}
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();
}
Copyright © 2024, NextGenUpdate.
All Rights Reserved.