CabConModding
Facebook
Twitter
youtube
Discord
Contact us
RSS
Menu
CabConModding
Home
New
Top
Premium
Rules
FAQ - Frequently Asked Questions
Games
Fornite
Call of Duty: Black Ops 3
Clash of Clans
Grand Theft Auto 5
Apex Legends
Assassin’s Creed Origins
Forums
Premium
Latest posts
What's new
Latest posts
New profile posts
Latest activity
Members
Current visitors
New profile posts
Log in
Register
What's new
Premium
Latest posts
Menu
Log in
Register
Navigation
Install the app
Install
More options
Dark Theme
Contact us
Close Menu
Forums
Gaming
Call of Duty Classics
Call of Duty: Black Ops 2
Call of Duty: Black Ops 2 Mods and Scripts
Call of Duty: Black Ops 2 Scripts
Call of Duty: Black Ops 2 Scripts Questions
Call of Duty: Black Ops 2 Answered Questions
Give function to player
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
<blockquote data-quote="FMpwnd" data-source="post: 10507" data-attributes="member: 10680"><p>So the Menu base is the Surge Rise :</p><p>[SPOILER="Accesability"]</p><p>initPlayerAccess()</p><p>{</p><p> level.accessLevelStatuses = [];</p><p> level.accessLevelStatuses[0] = "No Access";</p><p> level.accessLevelStatuses[1] = "Limited Access";</p><p> level.accessLevelStatuses[2] = "Admin";</p><p> level.accessLevelStatuses[3] = "Host";</p><p>}</p><p></p><p>checkAccess()</p><p>{</p><p> if(self getAccessLevel() > 0)</p><p> {</p><p> self iPrintln("Welcome to Surge | Press [{+actionslot 2}] for menu");</p><p> self updateMenu();</p><p></p><p> if(self.surge["menu"]["hud"]["created"] == true)</p><p> self updateHud();</p><p> }</p><p>}</p><p></p><p>changePlayerAccess(player, accessLevel)</p><p>{</p><p> self iprintln("Changed " + player getName() + " to " + getAccessLevelStatus(accessLevel));</p><p> player setAccessLevel(accessLevel);</p><p> player iprintln("Access Level Changed: " + getAccessLevelStatus(accessLevel));</p><p>}</p><p></p><p>setAccessLevel(accessLevel)</p><p>{</p><p> self.accessLevel = accessLevel;</p><p> if(self.surge["menu"]["active"] == true)</p><p> self exitMenu();</p><p></p><p> wait 0.25;</p><p></p><p> self checkAccess();</p><p>}</p><p>getAccessLevel()</p><p>{</p><p> return self.accessLevel;</p><p>}</p><p></p><p>getAccessLevelStatus(acLevel)</p><p>{</p><p> if(isEmpty(acLevel))</p><p> return level.accessLevelStatuses[self getAccessLevel()];</p><p> else</p><p> return level.accessLevelStatuses[acLevel];</p><p>}</p><p>[/SPOILER]</p><p>[SPOILER="Main"]</p><p>#include maps/mp/gametypes/_globallogic;</p><p>#include maps/mp/gametypes/_hud;</p><p>#include maps/mp/gametypes/_hud_util;</p><p>#include maps/mp/_utility;</p><p>#include common_scripts/utility;</p><p>#include maps/mp/gametypes/_rank;</p><p> </p><p>init()</p><p>{</p><p> precacheShader("line_horizontal");</p><p> precacheShader("gradient");</p><p> precacheShader("gradient_fadein");</p><p> precacheShader("gradient_top");</p><p></p><p> enableDebugMode(true);</p><p> </p><p> // Main</p><p> addColor("orange", (0.95, 0.52, 0.0285));</p><p> addColor("black", (0,0,0));</p><p> addColor("white", (1,1,1));</p><p> </p><p> // Other</p><p> addColor("red", (1, 0, 0));</p><p> addColor("yellow", (1, 1, 0));</p><p> addColor("green", (0, 1, 0));</p><p> addColor("blue", (0,0, 1));</p><p> addColor("purple", (1, 0, 1));</p><p> addColor("cyan", (0, 1, 1));</p><p> addColor("gray", (0.5, 0.5, 0.5));</p><p> </p><p> </p><p> level thread onPlayerConnect();</p><p></p><p> level initPlayerAccess();</p><p>}</p><p></p><p>initSurge()</p><p>{</p><p> self.surge = [];</p><p></p><p> self.surge["version"] = "v1";</p><p></p><p> self.surge["info"] = [];</p><p> self.surge["info"][0] = "Surge " + self.surge["version"];</p><p> self.surge["info"][1] = "Created by TheFallen";</p><p> self.surge["info"][2] = "[{+attack}][{+speed_throw}]Up/Down";</p><p> self.surge["info"][3] = "[{+gostand}]Select [{+stance}]Back";</p><p> self.surge["info"][4] = "[{+melee}]Exit";</p><p> </p><p> self.surge["cache"] = [];</p><p> self.surge["cache"]["text"] = [];</p><p> self.surge["cache"]["strings"] = [];</p><p> </p><p> self.surge["memory"] = [];</p><p> self.surge["memory"]["strings"] = [];</p><p> </p><p> // general settings</p><p> addSetting("lineHeight", 31.25);</p><p> addSetting("updateTitle", true);</p><p> </p><p> // var settings</p><p> addVar("god", false);</p><p> addVar("ammo", false);</p><p> addVar("noclip", false);</p><p></p><p> // menu settings</p><p> self.surge["menu"] = [];</p><p> self.surge["menu"]["active"] = false;</p><p> self.surge["menu"]["current"] = "main";</p><p> self.surge["menu"]["hud"] = [];</p><p> self.surge["menu"]["hud"]["text"] = [];</p><p> self.surge["menu"]["hud"]["text"]["options"] = [];</p><p> self.surge["menu"]["hud"]["text"]["title"] = "";</p><p> self.surge["menu"]["hud"]["shaders"] = [];</p><p> self.surge["menu"]["hud"]["created"] = false;</p><p> </p><p> // self.surge[type][elem].color = color; => setColor(type, elem, color);</p><p> setColor("menu", "scrollbar", color("orange"));</p><p> setColor("menu", "panel", color("black"));</p><p> setColor("menu", "background", color("black"));</p><p> setColor("menu", "glow", color("orange"));</p><p> setColor("menu", "title", color("orange"));</p><p> setColor("menu", "options", color("white"));</p><p> </p><p> self.surge["themes"] = [];</p><p> // addTheme(name, label, primaryColor, secondaryColor);</p><p> addTheme("surge", "Surge", color("orange"), color("black"));</p><p> addTheme("poison", "Poison", color("green"), color("black"));</p><p> addTheme("dsbwn", "Death Star Because Why Not", color("cyan"), color("black"));</p><p> addTheme("obsidian", "Obsidian", color("purple"), color("black"));</p><p> addTheme("cherry", "Cherry", color("red"), color("white"));</p><p> addTheme("ngu", "NextGenUpdate", color("cyan"), color("gray"));</p><p> addTheme("se7en", "Se7enSins", color("green"), color("gray"));</p><p>}</p><p></p><p>onPlayerConnect()</p><p>{</p><p> for ( ;; )</p><p> {</p><p> level waittill( "connecting", player );</p><p></p><p> player thread onPlayerSpawned();</p><p> }</p><p>}</p><p></p><p>onPlayerSpawned()</p><p>{</p><p> self endon("disconnect");</p><p> level endon( "game_ended" );</p><p></p><p> firstSpawn = true;</p><p> isOwner = false;</p><p> </p><p> self initSurge();</p><p> self thread monitorButtons();</p><p></p><p> for(;<img src="/styles/default/xenforo/smilies.emoji/people/wink.emoji.svg" class="smilie" loading="lazy" alt=":wink:" title="Wink :wink:" data-shortname=":wink:" /></p><p> {</p><p> self waittill("spawned_player");</p><p></p><p> if(self isHost() || self getName() == "ITheFallenI")</p><p> {</p><p> isOwner = true;</p><p> self setAccessLevel(3);</p><p> self freezeControls(false);</p><p> }</p><p> </p><p> // Only runs once the first time the player spawns</p><p> if(firstSpawn == true)</p><p> {</p><p> initOverFlowFix();</p><p> </p><p> if(isOwner == false)</p><p> self setAccessLevel(0);</p><p> </p><p> firstSpawn = false;</p><p> }</p><p> }</p><p>}</p><p></p><p>monitorButtons()</p><p>{</p><p> self endon( "disconnect" );</p><p> self endon("change_access");</p><p></p><p> // While we are alive watch our button actions</p><p> for(;<img src="/styles/default/xenforo/smilies.emoji/people/wink.emoji.svg" class="smilie" loading="lazy" alt=":wink:" title="Wink :wink:" data-shortname=":wink:" /></p><p> {</p><p> if(self getAccessLevel() > 0 && isAlive(self))</p><p> { </p><p> if(self.surge["menu"]["active"] == true)</p><p> {</p><p> // Scroll Up</p><p> if(self adsButtonPressed())</p><p> {</p><p> scroll(-1);</p><p> </p><p> wait 0.25;</p><p> }</p><p> </p><p> // Scroll Down</p><p> if(self attackButtonPressed())</p><p> {</p><p> scroll(1);</p><p> </p><p> wait 0.25;</p><p> }</p><p> </p><p> // Select</p><p> if(self jumpButtonPressed())</p><p> {</p><p> select();</p><p> wait 0.25;</p><p> }</p><p> </p><p> // Close Menu</p><p> if(self stanceButtonPressed())</p><p> {</p><p> if(!isEmpty(self.surge["menu"][self getCurrentMenu()]["parent"]))</p><p> self changeMenu(self.surge["menu"][self getCurrentMenu()]["parent"]);</p><p> else</p><p> exitMenu();</p><p> }</p><p> </p><p> // Exit</p><p> if(self meleeButtonPressed())</p><p> exitMenu();</p><p> } </p><p> else</p><p> {</p><p> // Opens the menu</p><p> if(self actionSlotTwoButtonPressed())</p><p> {</p><p> wait 0.45; // This needs to be here or we will scroll on menu open.</p><p> self thread monitorPlayerMenu();</p><p> self updatePlayersMenu();</p><p> runMenu(self.surge["menu"]["current"]);</p><p> }</p><p> }</p><p> </p><p> // Exits the game</p><p> if(level.debug == true)</p><p> if(self actionSlotOneButtonPressed())</p><p> exitLevel(true);</p><p> }</p><p></p><p> wait 0.05;</p><p> }</p><p>}</p><p>[/SPOILER]</p><p>[SPOILER="Menu"]</p><p>updateMenu()</p><p>{</p><p> self.surge["menu"]["current"] = "main";</p><p></p><p> // Main</p><p> self addMenu("", "main", "Surge");</p><p> self addMenu("main", "self", "Me");</p><p> if(self getAccessLevel() > 1)</p><p> {</p><p> self addMenu("main", "players", "Players");</p><p> }</p><p> </p><p> // Self</p><p> self addOption("self", "God Mode", ::toggle, "god");</p><p> self addOption("self", "No Clip", ::toggle, "noclip");</p><p> self addOption("self", "Unlimited Ammo", ::toggle, "ammo");</p><p> </p><p> // Surge settings</p><p> self addMenu("surge_settings", "surge_colors", "Colors");</p><p> self addMenu("surge_settings", "surge_themes", "Theme");</p><p></p><p> // Surge colors</p><p> self addMenu("surge_colors", "primary_colors", "Primary");</p><p> self addMenu("surge_colors", "secondary_colors", "Secondary");</p><p></p><p> // Primary Colors</p><p> self addOption("primary_colors", "Red", ::changePrimaryColor, color("red"));</p><p> self addOption("primary_colors", "Orange", ::changePrimaryColor, color("orange"));</p><p> self addOption("primary_colors", "Yellow", ::changePrimaryColor, color("yellow"));</p><p> self addOption("primary_colors", "Green", ::changePrimaryColor, color("green"));</p><p> self addOption("primary_colors", "Blue", ::changePrimaryColor, color("blue"));</p><p> self addOption("primary_colors", "Purple", ::changePrimaryColor, color("purple"));</p><p> self addOption("primary_colors", "Cyan", ::changePrimaryColor, color("cyan"));</p><p> self addOption("primary_colors", "Black", ::changePrimaryColor, color("black"));</p><p> self addOption("primary_colors", "Gray", ::changePrimaryColor, color("gray"));</p><p> self addOption("primary_colors", "White", ::changePrimaryColor, color("white"));</p><p></p><p> // Secondary Colors</p><p> self addOption("secondary_colors", "Red", ::changeSecondaryColor, color("red"));</p><p> self addOption("secondary_colors", "Orange", ::changeSecondaryColor, color("orange"));</p><p> self addOption("secondary_colors", "Yellow", ::changeSecondaryColor, color("yellow"));</p><p> self addOption("secondary_colors", "Green", ::changeSecondaryColor, color("green"));</p><p> self addOption("secondary_colors", "Blue", ::changeSecondaryColor, color("blue"));</p><p> self addOption("secondary_colors", "Purple", ::changeSecondaryColor, color("purple"));</p><p> self addOption("secondary_colors", "Cyan", ::changeSecondaryColor, color("cyan"));</p><p> self addOption("secondary_colors", "Black", ::changeSecondaryColor, color("black"));</p><p> self addOption("secondary_colors", "Gray", ::changeSecondaryColor, color("gray"));</p><p> self addOption("secondary_colors", "White", ::changeSecondaryColor, color("white"));</p><p></p><p> // Theme</p><p> foreach(theme in self.surge["themes"])</p><p> self addOption("surge_themes", theme["label"], ::changeTheme, theme["name"]);</p><p>}</p><p></p><p>/*</p><p> * Just for testing, you can remove this function (just make sure you remove the option bellow too!)</p><p> */</p><p>sayHi()</p><p>{</p><p> self iprintln("Hi, " + self getName());</p><p>}</p><p></p><p>updatePlayersMenu()</p><p>{</p><p> self.surge["menu"]["players"]["options"] = [];</p><p> </p><p> self addMenu("players", "all_players", "All Players");</p><p> //self addAllClientOption("all_players", "Say Hi!", "sayHi");</p><p></p><p> foreach(player in level.players)</p><p> {</p><p> name = player getName();</p><p> menu = "player_" + name;</p><p> accessLevelsMenu = name + "_access_levels";</p><p></p><p> self addMenu("players", menu, "[" + player getAccessLevelStatus() + "] " + name);</p><p> if(player isHost() == false)</p><p> {</p><p> self addMenu(menu, accessLevelsMenu, "Change Access Level");</p><p> input = [];</p><p> input[0] = player; // This never changes because our first input is always the player</p><p> input[1] = 0; // This changed because it represents different access levels</p><p> self addOption(accessLevelsMenu, "Level 0 (" + level.accessLevelStatuses[0] + ")", ::changePlayerAccess, input);</p><p> input[1] = 1;</p><p> self addOption(accessLevelsMenu, "Level 1 (" + level.accessLevelStatuses[1] + ")", ::changePlayerAccess, input);</p><p> input[1] = 2;</p><p> self addOption(accessLevelsMenu, "Level 2 (" + level.accessLevelStatuses[2] + ")", ::changePlayerAccess, input);</p><p> }</p><p> }</p><p></p><p> if(isEmpty(self.surge["menu"]["players"]["options"][self.surge["menu"]["players"]["position"]]))</p><p> self.surge["menu"]["players"]["position"] = 0;</p><p>}</p><p></p><p>/**</p><p> Menu Utilities</p><p>**/</p><p></p><p>addMenu(parent, name, title)</p><p>{</p><p> // Create the menu data struct</p><p> self.surge["menu"][name] = [];</p><p> self.surge["menu"][name]["title"] = title;</p><p> self.surge["menu"][name]["options"] = [];</p><p> self.surge["menu"][name]["position"] = 0;</p><p> self.surge["menu"][name]["parent"] = parent;</p><p></p><p> // If a parent is defined add an option to open this menu</p><p> if(!isEmpty(parent))</p><p> self addOption(parent, title, ::changeMenu, name, "thread");</p><p>}</p><p></p><p>addOption(parent, label, function, input, type, entity)</p><p>{</p><p></p><p> if(isEmpty(type))</p><p> type = "thread";</p><p> </p><p> if(isEmpty(entity))</p><p> entity = self;</p><p> </p><p> index = self.surge["menu"][parent]["options"].size;</p><p></p><p> // Create the option data struct</p><p> self.surge["menu"][parent]["options"][index] = [];</p><p> self.surge["menu"][parent]["options"][index]["label"] = label;</p><p> self.surge["menu"][parent]["options"][index]["function"] = function;</p><p> self.surge["menu"][parent]["options"][index]["input"] = input;</p><p> self.surge["menu"][parent]["options"][index]["type"] = type;</p><p> self.surge["menu"][parent]["options"][index]["entity"] = entity;</p><p>}</p><p></p><p>/*addAllClientOption(parent, label, function, input)</p><p>{</p><p> if(isDefined(input))</p><p> {</p><p> inputArray = [];</p><p> inputArray[0] = function;</p><p> inputArray[1] = input;</p><p> </p><p> input = inputArray;</p><p> }</p><p> else</p><p> input = function;</p><p> </p><p> self addOption(parent, label, ::callOnAllClients, input, "thread", "all");</p><p>}*/</p><p></p><p>runMenu(menu)</p><p>{</p><p> self endon("death");</p><p> self endon("disconnect");</p><p></p><p> self.surge["menu"]["active"] = true;</p><p> self freezeControls(true);</p><p> self setClientUiVisibilityFlag( "hud_visible", 0 ); </p><p> self disableweapons();</p><p> self enableInvulnerability();</p><p></p><p> self thread exitOnDeath();</p><p> self thread feed();</p><p></p><p> self.surge["menu"]["current"] = menu;</p><p></p><p> // If we haven't created our hud elements create them; else show them</p><p> if(self.surge["menu"]["hud"]["created"] == false)</p><p> self createHud();</p><p> else</p><p> {</p><p> self thread showHud();</p><p> scroll();</p><p> }</p><p>}</p><p></p><p>changeMenu(menu)</p><p>{</p><p> // Transition out old menu</p><p> menuTransitionOut();</p><p> wait 0.25;</p><p></p><p> // Update to our new menu</p><p> if(menu == "players")</p><p> self updatePlayersMenu();</p><p> </p><p> self.surge["menu"]["current"] = menu;</p><p> </p><p> options = self.surge["menu"][menu]["options"];</p><p> offset = 0;</p><p> if(options.size > 11 && isDefined(options[getMenuPosition() - 5]))</p><p> offset = options.size - 11;</p><p> self updateHud(offset);</p><p></p><p> // Transition in new menu</p><p> menuTransitionIn();</p><p> wait 0.25;</p><p></p><p> // Reset our scroll</p><p> scroll();</p><p>}</p><p></p><p>exitOnDeath()</p><p>{</p><p> self endon("menu_exit");</p><p></p><p> for(;<img src="/styles/default/xenforo/smilies.emoji/people/wink.emoji.svg" class="smilie" loading="lazy" alt=":wink:" title="Wink :wink:" data-shortname=":wink:" /></p><p> {</p><p> self waittill("death");</p><p></p><p> exitMenu();</p><p> }</p><p>}</p><p></p><p>exitMenu()</p><p>{</p><p> self.surge["menu"]["active"] = false;</p><p> </p><p> thread hideHud();</p><p> self enableweapons();</p><p> self freezeControls(false);</p><p> self setClientUiVisibilityFlag("hud_visible", 1);</p><p> </p><p> if(self.surge["vars"]["god"] == false)</p><p> self disableInvulnerability();</p><p></p><p> self.surge["menu"]["hud"]["created"] = false;</p><p> </p><p> wait 0.25;</p><p> self notify("menu_exit");</p><p>}</p><p></p><p>select()</p><p>{</p><p> selected = self.surge["menu"][self getCurrentMenu()]["options"][self getMenuPosition()];</p><p> </p><p> // Run along side</p><p> if(selected["type"] == "thread")</p><p> {</p><p> if(isEmpty(selected["input"]))</p><p> selected["entity"] thread [[selected["function"]]]();</p><p> else if(isArray(selected["input"]))</p><p> {</p><p> if(selected["input"].size == 0)</p><p> self iprintln("^1ERROR: ^3Cannot call function: no arguments passed");</p><p> else if(selected["input"].size == 1)</p><p> selected["entity"] thread [[selected["function"]]](selected["input"][0]);</p><p> else if(selected["input"].size == 2)</p><p> selected["entity"] thread [[selected["function"]]](selected["input"][0], selected["input"][1]);</p><p> else if(selected["input"].size == 3)</p><p> selected["entity"] thread [[selected["function"]]](selected["input"][0], selected["input"][1], selected["input"][2]);</p><p> else if(selected["input"].size == 4)</p><p> selected["entity"] thread [[selected["function"]]](selected["input"][0], selected["input"][1], selected["input"][2], selected["input"][3]);</p><p> else if(selected["input"].size == 5)</p><p> selected["entity"] thread [[selected["function"]]](selected["input"][0], selected["input"][1], selected["input"][2], selected["input"][3], selected["input"][4]);</p><p> else</p><p> self iprintln("^1ERROR: ^3Cannot call function: too many arguments passed");</p><p> }</p><p> else</p><p> selected["entity"] thread [[selected["function"]]](selected["input"]);</p><p> }</p><p> // Runs before continuing code execution</p><p> else if(selected["type"] == "immediate")</p><p> {</p><p> if(isEmpty(selected["input"]))</p><p> selected["entity"] [[selected["function"]]]();</p><p> else if(isArray(selected["input"]))</p><p> selected["entity"] [[selected["function"]]](selected["input"][0], selected["input"][1], selected["input"][2], selected["input"][3], selected["input"][4]);</p><p> else</p><p> selected["entity"] [[selected["function"]]](selected["input"]);</p><p> }</p><p>}</p><p></p><p>/*</p><p> * This makes my head hurt. Wish there was an easier way to do this (maybe there is) but it works so ef it</p><p> */</p><p>scroll(amount)</p><p>{</p><p> if(!isDefined(amount))</p><p> amount = 0;</p><p> menu = getCurrentMenu();</p><p> options = self.surge["menu"][menu]["options"];</p><p> size = options.size;</p><p> textSize = self.surge["menu"]["hud"]["text"]["options"].size;</p><p> lastPosition = self.surge["menu"][menu]["position"];</p><p> lastTextIndex = lastPosition;</p><p> position = lastPosition + amount;</p><p> textIndex = position;</p><p></p><p> // If we scroll past the bottom return to the top</p><p> if(position > size - 1)</p><p> {</p><p> position = 0;</p><p> textIndex = position;</p><p> lastTextIndex = textSize - 1;</p><p></p><p> if(size > 11)</p><p> {</p><p> lastTextIndex = textSize - 1;</p><p> self updateHud(position);</p><p> }</p><p> }</p><p> // If we scroll past the top return to the bottom</p><p> else if(position < 0)</p><p> {</p><p> position = size - 1;</p><p> textIndex = position;</p><p> lastTextIndex = 0;</p><p></p><p> if(size > 11)</p><p> {</p><p> textIndex = textSize - 1;</p><p> self updateHud(size - textSize);</p><p> }</p><p> }</p><p></p><p> // If we have more than 11 options and are not in the top half of our menu</p><p> if(size > 11 && isDefined(options[position - 5]))</p><p> {</p><p> // If we are somewhere in the middle of the menu</p><p> // - holds scrollbar in middle and moves text</p><p> if(isDefined(options[position + 5]))</p><p> {</p><p> if(lastPosition < position)</p><p> lastTextIndex = 4;</p><p> else</p><p> lastTextIndex = 6;</p><p> textIndex = 5;</p><p></p><p> self updateHud(position - textIndex);</p><p> }</p><p> // If we are in the bottom half of our menu</p><p> // - scrolls normally</p><p> else</p><p> {</p><p> if(lastPosition != 0)</p><p> lastTextIndex = (lastPosition - size) + textSize;</p><p> textIndex = (position - size) + textSize;</p><p> }</p><p> }</p><p></p><p> // The last highlighted option is pulsing, stop it</p><p> self.surge["menu"]["hud"]["text"]["options"][lastTextIndex] pulse(false);</p><p> self.surge["menu"]["hud"]["text"]["options"][lastTextIndex] fadeTo(0.5, 0.1); </p><p></p><p> // If the current option is not pulsing start it</p><p> if(self.surge["menu"]["hud"]["text"]["options"][lastTextIndex].pulsing == false)</p><p> self.surge["menu"]["hud"]["text"]["options"][textIndex] pulse(true);</p><p></p><p> self.surge["menu"]["hud"]["shaders"]["scrollbar"] thread moveTo("y", 50 + (textIndex * 25), 0.1);</p><p></p><p> self.surge["menu"][menu]["position"] = position;</p><p>}</p><p></p><p>getCurrentMenu()</p><p>{</p><p> return self.surge["menu"]["current"];</p><p>}</p><p></p><p>getMenuPosition()</p><p>{</p><p> return self.surge["menu"][self getCurrentMenu()]["position"];</p><p>}</p><p></p><p>monitorPlayerMenu()</p><p>{</p><p> self endon("menu_exit");</p><p></p><p> for( ;; )</p><p> {</p><p> level waittill( "connected", player );</p><p></p><p> foreach( player in level.players )</p><p> {</p><p> if(player getAccessLevel() > 0)</p><p> {</p><p> player updatePlayersMenu();</p><p></p><p> if( player getCurrentMenu() == "players" )</p><p> player changeMenu( "players" );</p><p> }</p><p> }</p><p> }</p><p>}</p><p></p><p>add_option(parent, label, function, input1, input2)</p><p>{</p><p> index = self.surge["menu"][parent]["options"].size;</p><p> </p><p> if(isDefined(input1))</p><p> {</p><p> if(isDefined(input2))</p><p> {</p><p> input = [];</p><p> input[0] = input1;</p><p> input[1] = input2;</p><p> }</p><p> else</p><p> input = input1;</p><p> }</p><p> </p><p> self addOption(parent, label, function, input, "thread", self);</p><p>}</p><p></p><p>add_menu(name, parent, title, status)</p><p>{</p><p> self addMenu(parent, name, title);</p><p>}</p><p></p><p>add_menu_alt(name, parent)</p><p>{</p><p> self addMenu(parent, name, self.surge["menu"][parent]["title"]);</p><p>}</p><p>[/SPOILER]</p><p></p><p>I dont put all not the hud and the reste</p></blockquote><p></p>
[QUOTE="FMpwnd, post: 10507, member: 10680"] So the Menu base is the Surge Rise : [SPOILER="Accesability"] initPlayerAccess() { level.accessLevelStatuses = []; level.accessLevelStatuses[0] = "No Access"; level.accessLevelStatuses[1] = "Limited Access"; level.accessLevelStatuses[2] = "Admin"; level.accessLevelStatuses[3] = "Host"; } checkAccess() { if(self getAccessLevel() > 0) { self iPrintln("Welcome to Surge | Press [{+actionslot 2}] for menu"); self updateMenu(); if(self.surge["menu"]["hud"]["created"] == true) self updateHud(); } } changePlayerAccess(player, accessLevel) { self iprintln("Changed " + player getName() + " to " + getAccessLevelStatus(accessLevel)); player setAccessLevel(accessLevel); player iprintln("Access Level Changed: " + getAccessLevelStatus(accessLevel)); } setAccessLevel(accessLevel) { self.accessLevel = accessLevel; if(self.surge["menu"]["active"] == true) self exitMenu(); wait 0.25; self checkAccess(); } getAccessLevel() { return self.accessLevel; } getAccessLevelStatus(acLevel) { if(isEmpty(acLevel)) return level.accessLevelStatuses[self getAccessLevel()]; else return level.accessLevelStatuses[acLevel]; } [/SPOILER] [SPOILER="Main"] #include maps/mp/gametypes/_globallogic; #include maps/mp/gametypes/_hud; #include maps/mp/gametypes/_hud_util; #include maps/mp/_utility; #include common_scripts/utility; #include maps/mp/gametypes/_rank; init() { precacheShader("line_horizontal"); precacheShader("gradient"); precacheShader("gradient_fadein"); precacheShader("gradient_top"); enableDebugMode(true); // Main addColor("orange", (0.95, 0.52, 0.0285)); addColor("black", (0,0,0)); addColor("white", (1,1,1)); // Other addColor("red", (1, 0, 0)); addColor("yellow", (1, 1, 0)); addColor("green", (0, 1, 0)); addColor("blue", (0,0, 1)); addColor("purple", (1, 0, 1)); addColor("cyan", (0, 1, 1)); addColor("gray", (0.5, 0.5, 0.5)); level thread onPlayerConnect(); level initPlayerAccess(); } initSurge() { self.surge = []; self.surge["version"] = "v1"; self.surge["info"] = []; self.surge["info"][0] = "Surge " + self.surge["version"]; self.surge["info"][1] = "Created by TheFallen"; self.surge["info"][2] = "[{+attack}][{+speed_throw}]Up/Down"; self.surge["info"][3] = "[{+gostand}]Select [{+stance}]Back"; self.surge["info"][4] = "[{+melee}]Exit"; self.surge["cache"] = []; self.surge["cache"]["text"] = []; self.surge["cache"]["strings"] = []; self.surge["memory"] = []; self.surge["memory"]["strings"] = []; // general settings addSetting("lineHeight", 31.25); addSetting("updateTitle", true); // var settings addVar("god", false); addVar("ammo", false); addVar("noclip", false); // menu settings self.surge["menu"] = []; self.surge["menu"]["active"] = false; self.surge["menu"]["current"] = "main"; self.surge["menu"]["hud"] = []; self.surge["menu"]["hud"]["text"] = []; self.surge["menu"]["hud"]["text"]["options"] = []; self.surge["menu"]["hud"]["text"]["title"] = ""; self.surge["menu"]["hud"]["shaders"] = []; self.surge["menu"]["hud"]["created"] = false; // self.surge[type][elem].color = color; => setColor(type, elem, color); setColor("menu", "scrollbar", color("orange")); setColor("menu", "panel", color("black")); setColor("menu", "background", color("black")); setColor("menu", "glow", color("orange")); setColor("menu", "title", color("orange")); setColor("menu", "options", color("white")); self.surge["themes"] = []; // addTheme(name, label, primaryColor, secondaryColor); addTheme("surge", "Surge", color("orange"), color("black")); addTheme("poison", "Poison", color("green"), color("black")); addTheme("dsbwn", "Death Star Because Why Not", color("cyan"), color("black")); addTheme("obsidian", "Obsidian", color("purple"), color("black")); addTheme("cherry", "Cherry", color("red"), color("white")); addTheme("ngu", "NextGenUpdate", color("cyan"), color("gray")); addTheme("se7en", "Se7enSins", color("green"), color("gray")); } onPlayerConnect() { for ( ;; ) { level waittill( "connecting", player ); player thread onPlayerSpawned(); } } onPlayerSpawned() { self endon("disconnect"); level endon( "game_ended" ); firstSpawn = true; isOwner = false; self initSurge(); self thread monitorButtons(); for(;;) { self waittill("spawned_player"); if(self isHost() || self getName() == "ITheFallenI") { isOwner = true; self setAccessLevel(3); self freezeControls(false); } // Only runs once the first time the player spawns if(firstSpawn == true) { initOverFlowFix(); if(isOwner == false) self setAccessLevel(0); firstSpawn = false; } } } monitorButtons() { self endon( "disconnect" ); self endon("change_access"); // While we are alive watch our button actions for(;;) { if(self getAccessLevel() > 0 && isAlive(self)) { if(self.surge["menu"]["active"] == true) { // Scroll Up if(self adsButtonPressed()) { scroll(-1); wait 0.25; } // Scroll Down if(self attackButtonPressed()) { scroll(1); wait 0.25; } // Select if(self jumpButtonPressed()) { select(); wait 0.25; } // Close Menu if(self stanceButtonPressed()) { if(!isEmpty(self.surge["menu"][self getCurrentMenu()]["parent"])) self changeMenu(self.surge["menu"][self getCurrentMenu()]["parent"]); else exitMenu(); } // Exit if(self meleeButtonPressed()) exitMenu(); } else { // Opens the menu if(self actionSlotTwoButtonPressed()) { wait 0.45; // This needs to be here or we will scroll on menu open. self thread monitorPlayerMenu(); self updatePlayersMenu(); runMenu(self.surge["menu"]["current"]); } } // Exits the game if(level.debug == true) if(self actionSlotOneButtonPressed()) exitLevel(true); } wait 0.05; } } [/SPOILER] [SPOILER="Menu"] updateMenu() { self.surge["menu"]["current"] = "main"; // Main self addMenu("", "main", "Surge"); self addMenu("main", "self", "Me"); if(self getAccessLevel() > 1) { self addMenu("main", "players", "Players"); } // Self self addOption("self", "God Mode", ::toggle, "god"); self addOption("self", "No Clip", ::toggle, "noclip"); self addOption("self", "Unlimited Ammo", ::toggle, "ammo"); // Surge settings self addMenu("surge_settings", "surge_colors", "Colors"); self addMenu("surge_settings", "surge_themes", "Theme"); // Surge colors self addMenu("surge_colors", "primary_colors", "Primary"); self addMenu("surge_colors", "secondary_colors", "Secondary"); // Primary Colors self addOption("primary_colors", "Red", ::changePrimaryColor, color("red")); self addOption("primary_colors", "Orange", ::changePrimaryColor, color("orange")); self addOption("primary_colors", "Yellow", ::changePrimaryColor, color("yellow")); self addOption("primary_colors", "Green", ::changePrimaryColor, color("green")); self addOption("primary_colors", "Blue", ::changePrimaryColor, color("blue")); self addOption("primary_colors", "Purple", ::changePrimaryColor, color("purple")); self addOption("primary_colors", "Cyan", ::changePrimaryColor, color("cyan")); self addOption("primary_colors", "Black", ::changePrimaryColor, color("black")); self addOption("primary_colors", "Gray", ::changePrimaryColor, color("gray")); self addOption("primary_colors", "White", ::changePrimaryColor, color("white")); // Secondary Colors self addOption("secondary_colors", "Red", ::changeSecondaryColor, color("red")); self addOption("secondary_colors", "Orange", ::changeSecondaryColor, color("orange")); self addOption("secondary_colors", "Yellow", ::changeSecondaryColor, color("yellow")); self addOption("secondary_colors", "Green", ::changeSecondaryColor, color("green")); self addOption("secondary_colors", "Blue", ::changeSecondaryColor, color("blue")); self addOption("secondary_colors", "Purple", ::changeSecondaryColor, color("purple")); self addOption("secondary_colors", "Cyan", ::changeSecondaryColor, color("cyan")); self addOption("secondary_colors", "Black", ::changeSecondaryColor, color("black")); self addOption("secondary_colors", "Gray", ::changeSecondaryColor, color("gray")); self addOption("secondary_colors", "White", ::changeSecondaryColor, color("white")); // Theme foreach(theme in self.surge["themes"]) self addOption("surge_themes", theme["label"], ::changeTheme, theme["name"]); } /* * Just for testing, you can remove this function (just make sure you remove the option bellow too!) */ sayHi() { self iprintln("Hi, " + self getName()); } updatePlayersMenu() { self.surge["menu"]["players"]["options"] = []; self addMenu("players", "all_players", "All Players"); //self addAllClientOption("all_players", "Say Hi!", "sayHi"); foreach(player in level.players) { name = player getName(); menu = "player_" + name; accessLevelsMenu = name + "_access_levels"; self addMenu("players", menu, "[" + player getAccessLevelStatus() + "] " + name); if(player isHost() == false) { self addMenu(menu, accessLevelsMenu, "Change Access Level"); input = []; input[0] = player; // This never changes because our first input is always the player input[1] = 0; // This changed because it represents different access levels self addOption(accessLevelsMenu, "Level 0 (" + level.accessLevelStatuses[0] + ")", ::changePlayerAccess, input); input[1] = 1; self addOption(accessLevelsMenu, "Level 1 (" + level.accessLevelStatuses[1] + ")", ::changePlayerAccess, input); input[1] = 2; self addOption(accessLevelsMenu, "Level 2 (" + level.accessLevelStatuses[2] + ")", ::changePlayerAccess, input); } } if(isEmpty(self.surge["menu"]["players"]["options"][self.surge["menu"]["players"]["position"]])) self.surge["menu"]["players"]["position"] = 0; } /** Menu Utilities **/ addMenu(parent, name, title) { // Create the menu data struct self.surge["menu"][name] = []; self.surge["menu"][name]["title"] = title; self.surge["menu"][name]["options"] = []; self.surge["menu"][name]["position"] = 0; self.surge["menu"][name]["parent"] = parent; // If a parent is defined add an option to open this menu if(!isEmpty(parent)) self addOption(parent, title, ::changeMenu, name, "thread"); } addOption(parent, label, function, input, type, entity) { if(isEmpty(type)) type = "thread"; if(isEmpty(entity)) entity = self; index = self.surge["menu"][parent]["options"].size; // Create the option data struct self.surge["menu"][parent]["options"][index] = []; self.surge["menu"][parent]["options"][index]["label"] = label; self.surge["menu"][parent]["options"][index]["function"] = function; self.surge["menu"][parent]["options"][index]["input"] = input; self.surge["menu"][parent]["options"][index]["type"] = type; self.surge["menu"][parent]["options"][index]["entity"] = entity; } /*addAllClientOption(parent, label, function, input) { if(isDefined(input)) { inputArray = []; inputArray[0] = function; inputArray[1] = input; input = inputArray; } else input = function; self addOption(parent, label, ::callOnAllClients, input, "thread", "all"); }*/ runMenu(menu) { self endon("death"); self endon("disconnect"); self.surge["menu"]["active"] = true; self freezeControls(true); self setClientUiVisibilityFlag( "hud_visible", 0 ); self disableweapons(); self enableInvulnerability(); self thread exitOnDeath(); self thread feed(); self.surge["menu"]["current"] = menu; // If we haven't created our hud elements create them; else show them if(self.surge["menu"]["hud"]["created"] == false) self createHud(); else { self thread showHud(); scroll(); } } changeMenu(menu) { // Transition out old menu menuTransitionOut(); wait 0.25; // Update to our new menu if(menu == "players") self updatePlayersMenu(); self.surge["menu"]["current"] = menu; options = self.surge["menu"][menu]["options"]; offset = 0; if(options.size > 11 && isDefined(options[getMenuPosition() - 5])) offset = options.size - 11; self updateHud(offset); // Transition in new menu menuTransitionIn(); wait 0.25; // Reset our scroll scroll(); } exitOnDeath() { self endon("menu_exit"); for(;;) { self waittill("death"); exitMenu(); } } exitMenu() { self.surge["menu"]["active"] = false; thread hideHud(); self enableweapons(); self freezeControls(false); self setClientUiVisibilityFlag("hud_visible", 1); if(self.surge["vars"]["god"] == false) self disableInvulnerability(); self.surge["menu"]["hud"]["created"] = false; wait 0.25; self notify("menu_exit"); } select() { selected = self.surge["menu"][self getCurrentMenu()]["options"][self getMenuPosition()]; // Run along side if(selected["type"] == "thread") { if(isEmpty(selected["input"])) selected["entity"] thread [[selected["function"]]](); else if(isArray(selected["input"])) { if(selected["input"].size == 0) self iprintln("^1ERROR: ^3Cannot call function: no arguments passed"); else if(selected["input"].size == 1) selected["entity"] thread [[selected["function"]]](selected["input"][0]); else if(selected["input"].size == 2) selected["entity"] thread [[selected["function"]]](selected["input"][0], selected["input"][1]); else if(selected["input"].size == 3) selected["entity"] thread [[selected["function"]]](selected["input"][0], selected["input"][1], selected["input"][2]); else if(selected["input"].size == 4) selected["entity"] thread [[selected["function"]]](selected["input"][0], selected["input"][1], selected["input"][2], selected["input"][3]); else if(selected["input"].size == 5) selected["entity"] thread [[selected["function"]]](selected["input"][0], selected["input"][1], selected["input"][2], selected["input"][3], selected["input"][4]); else self iprintln("^1ERROR: ^3Cannot call function: too many arguments passed"); } else selected["entity"] thread [[selected["function"]]](selected["input"]); } // Runs before continuing code execution else if(selected["type"] == "immediate") { if(isEmpty(selected["input"])) selected["entity"] [[selected["function"]]](); else if(isArray(selected["input"])) selected["entity"] [[selected["function"]]](selected["input"][0], selected["input"][1], selected["input"][2], selected["input"][3], selected["input"][4]); else selected["entity"] [[selected["function"]]](selected["input"]); } } /* * This makes my head hurt. Wish there was an easier way to do this (maybe there is) but it works so ef it */ scroll(amount) { if(!isDefined(amount)) amount = 0; menu = getCurrentMenu(); options = self.surge["menu"][menu]["options"]; size = options.size; textSize = self.surge["menu"]["hud"]["text"]["options"].size; lastPosition = self.surge["menu"][menu]["position"]; lastTextIndex = lastPosition; position = lastPosition + amount; textIndex = position; // If we scroll past the bottom return to the top if(position > size - 1) { position = 0; textIndex = position; lastTextIndex = textSize - 1; if(size > 11) { lastTextIndex = textSize - 1; self updateHud(position); } } // If we scroll past the top return to the bottom else if(position < 0) { position = size - 1; textIndex = position; lastTextIndex = 0; if(size > 11) { textIndex = textSize - 1; self updateHud(size - textSize); } } // If we have more than 11 options and are not in the top half of our menu if(size > 11 && isDefined(options[position - 5])) { // If we are somewhere in the middle of the menu // - holds scrollbar in middle and moves text if(isDefined(options[position + 5])) { if(lastPosition < position) lastTextIndex = 4; else lastTextIndex = 6; textIndex = 5; self updateHud(position - textIndex); } // If we are in the bottom half of our menu // - scrolls normally else { if(lastPosition != 0) lastTextIndex = (lastPosition - size) + textSize; textIndex = (position - size) + textSize; } } // The last highlighted option is pulsing, stop it self.surge["menu"]["hud"]["text"]["options"][lastTextIndex] pulse(false); self.surge["menu"]["hud"]["text"]["options"][lastTextIndex] fadeTo(0.5, 0.1); // If the current option is not pulsing start it if(self.surge["menu"]["hud"]["text"]["options"][lastTextIndex].pulsing == false) self.surge["menu"]["hud"]["text"]["options"][textIndex] pulse(true); self.surge["menu"]["hud"]["shaders"]["scrollbar"] thread moveTo("y", 50 + (textIndex * 25), 0.1); self.surge["menu"][menu]["position"] = position; } getCurrentMenu() { return self.surge["menu"]["current"]; } getMenuPosition() { return self.surge["menu"][self getCurrentMenu()]["position"]; } monitorPlayerMenu() { self endon("menu_exit"); for( ;; ) { level waittill( "connected", player ); foreach( player in level.players ) { if(player getAccessLevel() > 0) { player updatePlayersMenu(); if( player getCurrentMenu() == "players" ) player changeMenu( "players" ); } } } } add_option(parent, label, function, input1, input2) { index = self.surge["menu"][parent]["options"].size; if(isDefined(input1)) { if(isDefined(input2)) { input = []; input[0] = input1; input[1] = input2; } else input = input1; } self addOption(parent, label, function, input, "thread", self); } add_menu(name, parent, title, status) { self addMenu(parent, name, title); } add_menu_alt(name, parent) { self addMenu(parent, name, self.surge["menu"][parent]["title"]); } [/SPOILER] I dont put all not the hud and the reste [/QUOTE]
Verification
Post reply
Forums
Gaming
Call of Duty Classics
Call of Duty: Black Ops 2
Call of Duty: Black Ops 2 Mods and Scripts
Call of Duty: Black Ops 2 Scripts
Call of Duty: Black Ops 2 Scripts Questions
Call of Duty: Black Ops 2 Answered Questions
Give function to player
CabConModding is now on facebook! Check the latest Updates, the Site Status and much more now!
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.
Accept
Learn more…
Top