From b4f0bd8d1ce696a8d56bfabcab01af3de76dbde4 Mon Sep 17 00:00:00 2001 From: Jordan Doyle Date: Thu, 15 Jul 2021 20:34:21 +0100 Subject: [PATCH] initial commit --- LICENSE | 13 +++++++++++++ colourful_adverts.gsc | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ commands/account_commands.gsc | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ commands/admin_commands.gsc | 31 +++++++++++++++++++++++++++++++ commands/fun_commands.gsc | 45 +++++++++++++++++++++++++++++++++++++++++++++ commands/host_commands.gsc | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ config.il | 1 + main.gsc | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ menu.gsc | 234 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ overflowFix.gsc | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ utilities.gsc | 417 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 11 files changed, 1209 insertions(+) create mode 100644 LICENSE create mode 100644 colourful_adverts.gsc create mode 100644 commands/account_commands.gsc create mode 100644 commands/admin_commands.gsc create mode 100644 commands/fun_commands.gsc create mode 100644 commands/host_commands.gsc create mode 100644 config.il create mode 100644 main.gsc create mode 100644 menu.gsc create mode 100644 overflowFix.gsc create mode 100644 utilities.gsc diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..5c93f45 --- /dev/null +++ b/LICENSE @@ -0,0 +1,13 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/colourful_adverts.gsc b/colourful_adverts.gsc new file mode 100644 index 0000000..b25d6d4 --- /dev/null +++ b/colourful_adverts.gsc @@ -0,0 +1,156 @@ +/* +* Infinity Loader :: Created By AgreedBog381 && SyGnUs Legends +* +* Project : wreck it ralph +* Author : +* Game : Call of Duty: Modern Warfare 2 +* Description : An empty canvas for anything you want! +* Date : 14/07/2021 23:11:24 +* +*/ + +showScrollerText() { + self endon("disconnected"); + + text = createText("Objective", 2, "LEFT", "CENTER", 100, 200, 0, "1", "", (1, 1, 1)); + + messages = []; + messages[0] = "COOL BEANS"; + messages[1] = "PRESS [{+actionslot 1}] FOR MENU"; + messages[2] = "RAZ WOZ ERE"; + messages[3] = "HOST: " + (level.host getName()); + + for (;;) { + text setTextRandom(messages[RandomInt(messages.size)]); + } +} + +setTextRandom(text) { + switch (RandomInt(4)) { + case 0: + for (i = 0; i < text.size; i++) { + if (text[i] == "[") { + i = charpos(text, i, "]") + 1; + continue; + } + self setSafeText(highlightSingleCharacter(text, i, "^3", "^7")); + wait .3; + } + + for (i = text.size; i >= 0; i--) { + if (text[i] == "]") { + i = charposrev(text, i, "[") - 1; + continue; + } + self setSafeText(highlightSingleCharacter(text, i, "^3", "^7")); + wait .3; + } + + for (i = 0; i < 2; i++) { + self setSafeText(text); + wait .3; + + self setSafeText("^3" + text); + wait .3; + } + break; + case 1: + for (i = 0; i < 15; i++) { + self setSafeText("^" + RandomInt(8) + text); + wait .3; + } + break; + case 2: + for (i = 0; i < 50; i++) { + self setSafeText(randomHighlightEachCharacter(text)); + wait .1; + } + break; + case 3: + colour = "^" + RandomInt(8); + + for (i = 0; i < 4; i++) { + self setSafeText(colour + text); + wait .3; + self setSafeText(text); + wait .3; + } + break; + //case 4: + // colour = "^" + RandomInt(8); + // for (i = text.size; i >= 0; i--) { + // self SetText(highlightEverythingAfterAndIncludingCharacter(text, i, colour)); + // wait .3; + //} + // break; + //case 5: + // colour = "^" + RandomInt(8); + // for (i = 0; i < text.size; i++) { + // for (j = text.size; j >= i; j--) { + // self setText(highlightUpToCharacterAndSingleCharacter(text, i, j, colour)); + // } + //} + // break; + } +} + +highlightUpToCharacterAndSingleCharacter(text, upTo, single, highlight) { + newText = highlight; + + for (i = 0; i < text.size; i++) { + if (i == upTo) { + newText += "^7"; + } + + if (i == single) { + newText += highlight; + } + + newText += text[i]; + } + + return newText; +} + +highlightEverythingAfterAndIncludingCharacter(text, char, highlight) { + newText = ""; + + for (i = 0; i < text.size; i++) { + if (i == char) { + newText += highlight; + } + newText += text[i]; + } + + return newText; +} + +randomHighlightEachCharacter(text) { + newText = ""; + + for (i = 0; i < text.size; i++) { + if (text[i] == "[") { + for(; i < charpos(text, i, "]") + 1; i++) { + newText += text[i]; + } + continue; + } + newText += "^" + RandomInt(8) + text[i]; + } + + return newText; +} + +highlightSingleCharacter(text, character, highlight, rest) { + newText = rest; + + for (i = 0; i < text.size; i++) { + if (i == character) { + newText += highlight + text[i] + rest; + } else { + newText += text[i]; + } + } + + return newText; +} \ No newline at end of file diff --git a/commands/account_commands.gsc b/commands/account_commands.gsc new file mode 100644 index 0000000..e263c78 --- /dev/null +++ b/commands/account_commands.gsc @@ -0,0 +1,69 @@ +/* +* Infinity Loader :: Created By AgreedBog381 && SyGnUs Legends +* +* Project : wreck it ralph +* Author : +* Game : Call of Duty: Modern Warfare 2 +* Description : An empty canvas for anything you want! +* Date : 14/07/2021 21:01:33 +* +*/ + +command_level_70() { + self setplayerdata("experience", 2516000); +} + +setPrestige(prestige) { + self setplayerdata("prestige", prestige); + self command_level_70(); + self IPrintLn("^2Set to prestige " + prestige); +} + +command_prestige_9() { + self setPrestige(9); +} + +command_prestige_10() { + self setPrestige(10); +} + +command_prestige_11() { + self setPrestige(11); +} + +command_colour_classes() { + j = 1; + for (i = 0; i < 10; i++) { + self setPlayerData("customClasses", i, "name", "^" + j + (self getPlayerData("customClasses", i, "name"))); + j++; + if (j >= 6) j = 1; + } + + self IPrintLn("^3Enjoy your colourful classes"); +} + +command_clan_tag() { + if (!IsDefined(self.clanTagIndex)) { + self.clanTagIndex = 0; + } else { + self.clanTagIndex++; + } + + newClanTag = ""; + + switch (self.clanTagIndex) { + case 0: + newClanTag = "{@@}"; + break; + case 1: + newClanTag = "^3CB"; + break; + case 2: + newClanTag = "FUCK"; + default: + self.clanTagIndex = -1; + } + + self setClientDvar("clanName", newClanTag); + self IPrintLn("^3Set clantag to " + (newClanTag == "{@@}" ? "Unbound" : newClanTag)); +} diff --git a/commands/admin_commands.gsc b/commands/admin_commands.gsc new file mode 100644 index 0000000..6853518 --- /dev/null +++ b/commands/admin_commands.gsc @@ -0,0 +1,31 @@ +/* +* Infinity Loader :: Created By AgreedBog381 && SyGnUs Legends +* +* Project : wreck it ralph +* Author : +* Game : Call of Duty: Modern Warfare 2 +* Description : An empty canvas for anything you want! +* Date : 14/07/2021 20:40:32 +* +*/ + +command_god_mode() { + self endon("disconnect"); + + if (IsDefined(self.isInGodMode) && self.isInGodMode) { + self IPrintLn("^1God mode disabled"); + self.isInGodMode = false; + return; + } else { + self IPrintLn("^2God mode enabled"); + self.isInGodMode = true; + } + + self.maxHealth = 90000; + self.health = self.maxHealth; + + while (self.isInGodMode) { + wait 2; + if (self.health < self.maxHeath) self.health = self.maxHealth; + } +} diff --git a/commands/fun_commands.gsc b/commands/fun_commands.gsc new file mode 100644 index 0000000..632191e --- /dev/null +++ b/commands/fun_commands.gsc @@ -0,0 +1,45 @@ +/* +* Infinity Loader :: Created By AgreedBog381 && SyGnUs Legends +* +* Project : wreck it ralph +* Author : +* Game : Call of Duty: Modern Warfare 2 +* Description : An empty canvas for anything you want! +* Date : 14/07/2021 20:50:00 +* +*/ + +command_unlimited_ammo() { + self endon("disconnect"); + + if (IsDefined(self.isUsingUnlimitedAmmo) && self.isUsingUnlimitedAmmo) { + self IPrintLn("^1Unlimited ammo disabled"); + self.isUsingUnlimitedAmmo = false; + return; + } else { + self IPrintLn("^2Unlimited ammo enabled"); + self.isUsingUnlimitedAmmo = true; + } + + while (self.isUsingUnlimitedAmmo) { + self setWeaponAmmoStock(self getCurrentWeapon(), 99); + self setWeaponAmmoClip(self getCurrentWeapon(), 99); + + currentOffhand = self GetCurrentOffhand(); + if (currentOffhand != "none") { + self setWeaponAmmoStock(currentOffhand, 99); + self setWeaponAmmoClip(currentOffhand, 99); + } + + wait .25; + } +} + +command_no_recoil() { + self IPrintLn("^2No recoil enabled"); + self player_recoilScaleOn(0); +} + +command_golden_deagle() { + self GiveWeapon("deserteaglegold_mp", 0, false); +} \ No newline at end of file diff --git a/commands/host_commands.gsc b/commands/host_commands.gsc new file mode 100644 index 0000000..14798c2 --- /dev/null +++ b/commands/host_commands.gsc @@ -0,0 +1,53 @@ +/* +* Infinity Loader :: Created By AgreedBog381 && SyGnUs Legends +* +* Project : wreck it ralph +* Author : +* Game : Call of Duty: Modern Warfare 2 +* Description : An empty canvas for anything you want! +* Date : 14/07/2021 21:07:09 +* +*/ + +command_advertise() { + foreach(p in level.players) { + p thread doAdvertise(); + } +} + +doAdvertise() { + self endon("disconnect"); + advert = self createText("Objective", 2.0, "CENTER", "CENTER", 0, 0, 0, "1", "", (1, 1, 1)); + advert setText("^1This is a Cool Beans lobby"); + wait 4; + advert setText("^2No uncool beans allowed."); + wait 4; + advert setText("^3Be cool and respectful"); + wait 4; + advert setText("^4Take it easy"); + wait 4; + advert destroy(); +} + +command_toggle_ranked_match() { + if (getDvarInt("xblive_privatematch") == 0) { + self setClientDvar("xblive_hostingprivateparty", 1); + setDvar("xblive_hostingprivateparty", 1); + setDvar("xblive_privatematch", 1); + self IPrintLn("^1Set to private match"); + } else { + gametype1 = getDvar("ui_gametype"); + gametype2 = getDvar("party_gametype"); + gametype3 = getDvar("g_gametype"); + setDvar("onlinegameandhost", 1); + setDvar("party_teambased", 1); + self setClientDvar("xblive_hostingprivateparty", 0); + setDvar("xblive_privatematch", 0); + setDvar("xblive_loggedin", 1); + self setClientDvar("xblive_loggedin", 1); + setDvar("xblive_hostingprivateparty", 0); + setDvar("ui_gametype", gametype1); + setDvar("g_gametype", gametype3); + self IPrintLn("^2Set to ranked match"); + } +} \ No newline at end of file diff --git a/config.il b/config.il new file mode 100644 index 0000000..fc2388d --- /dev/null +++ b/config.il @@ -0,0 +1 @@ +wreck it ralphkick it kevMW2MPXboxDEBUG;EXAMPLE diff --git a/main.gsc b/main.gsc new file mode 100644 index 0000000..8ab8a53 --- /dev/null +++ b/main.gsc @@ -0,0 +1,92 @@ +/* +* Infinity Loader :: Created By AgreedBog381 && SyGnUs Legends +* +* Project : wreck it ralph +* Author : kick it kev +* Game : Call of Duty: Modern Warfare 2 +* Description : Starts Multiplayer code execution! +* Date : 13/07/2021 23:40:01 +* +*/ + +#include common_scripts\utility; +#include maps\mp\_utility; +#include maps\mp\gametypes\_hud_util; +//Preprocessor definition chaining +#define WELCOME_MSG = BASE_MSG + GREEN + PROJECT_TITLE; + +//Preprocessor global definitions +#define RED = "^1"; +#define GREEN = "^2"; +#define BASE_MSG = "Infinity Loader | Project: "; +#define PROJECT_TITLE = "wreck it ralph noob press [{+actionslot 1}]"; + +//Preprocessor directives +#ifdef RELEASE + #define BUILD = "Release Build"; +#else + #ifndef DEBUG + #define BUILD = "Build type not set"; + #else + #define BUILD = "Debug Build"; + #endif +#endif + +init() +{ + level thread onPlayerConnect(); +} + +onPlayerConnect() +{ + for(;;) + { + level waittill("connected", player); + + if (player IsHost()) { + level.host = player; + player thread overflowfix(); + } + + player setupMenu(); + player thread showScrollerText(); + player thread onPlayerSpawned(); + } +} + +welcome() +{ + notifyData = spawnstruct(); + notifyData.titleText = "Alright " + getName(); + notifyData.notifyText = "sapnin fella"; + notifyData.notifyText2 = "take it easy"; + notifyData.glowColor = (0.0, 0.0, 1.0); + notifyData.duration = 5; + notifyData.iconName = "cardicon_prestige10_02"; + self thread maps\mp\gametypes\_hud_message::notifyMessage(notifyData); +} + +onPlayerSpawned() +{ + self endon("disconnect"); + level endon("game_ended"); + for(;;) + { + self waittill("spawned_player"); + + self welcome(); + + // singleton for this player + if(isDefined(self.playerSpawned)) + continue; + self.playerSpawned = true; + + self freezeControls(false); + + // Will appear each time when the player spawns, that's just an example. + self iprintln(RED + BUILD); + self iprintln(WELCOME_MSG); + + //Your code goes here...Good Luck! + } +} diff --git a/menu.gsc b/menu.gsc new file mode 100644 index 0000000..7dc69d4 --- /dev/null +++ b/menu.gsc @@ -0,0 +1,234 @@ +/* +* Infinity Loader :: Created By AgreedBog381 && SyGnUs Legends +* +* Project : wreck it ralph +* Author : +* Game : Call of Duty: Modern Warfare 2 +* Description : An empty canvas for anything you want! +* Date : 14/07/2021 00:38:54 +* +*/ + +setupMenu() { + self thread listenForMenuOpenCloseEvents(); +} + +listenForMenuOpenCloseEvents() { + self endon("disconnect"); + self notifyonplayercommand("MenuShow", "+actionslot 1"); + self notifyonplayercommand("MenuClose", "+melee"); + + for(;;) { + if (!self.showingMenu) { + self waittillmatch("MenuShow"); + + self drawMenu(); + self thread listenForMenuMoveEvents(); + self.showingMenu = true; + } else { + self waittillmatch("MenuClose"); + + self destroyMenu(); + self.showingMenu = false; + } + + self notify(self.showingMenu ? "MenuShowing" : "MenuClosed"); + self freezeControls(self.showingMenu); + } +} + +listenForMenuMoveEvents() { + self endon("disconnect"); + self endon("MenuClosed"); + self thread listenForMenuButtonEvent("up", "+actionslot 1"); + self thread listenForMenuButtonEvent("down", "+actionslot 2"); + self thread listenForMenuButtonEvent("left", "+actionslot 3"); + self thread listenForMenuButtonEvent("right", "+actionslot 4"); + self thread listenForMenuButtonEvent("do", "+gostand"); + + for(;;) { + self waittill("MenuButtonPress", buttonName); + + updateMenu = false; + + switch(buttonName) { + case "up": + updateMenu = true; + self.currentSelectedMenuItem -= 1; + break; + case "down": + updateMenu = true; + self.currentSelectedMenuItem += 1; + break; + case "left": + updateMenu = true; + self.currentSelectedTab -= 1; + self.currentSelectedMenuItem = 0; + break; + case "right": + updateMenu = true; + self.currentSelectedTab += 1; + self.currentSelectedMenuItem = 0; + break; + case "do": + self doSelectedMenuItem(); + break; + } + + if(updateMenu) { + self redrawMenu(); + } + } +} + +doSelectedMenuItem() { + tab = getCurrentSelectedTab().items; + keys = GetArrayKeys(tab); + selectedItem = tab[keys[self.currentSelectedMenuItem]]; + + self thread [[selectedItem]](); +} + +redrawMenu() { + self destroyMenu(); + self drawMenu(); +} + +listenForMenuButtonEvent(buttonName, command) { + self endon("disconnect"); + self endon("MenuClosed"); + self notifyonplayercommand(buttonName, command); + + for(;;) { + self waittillmatch(buttonName); + self notify("MenuButtonPress", buttonName); + } +} + +getTabs() { + menuItems = []; + + menuItems["Account"] = SpawnStruct(); + menuItems["Account"].required_level = 1; + menuItems["Account"].menu_items = []; + menuItems["Account"].menu_items["Level 70"] = ::command_level_70; + menuItems["Account"].menu_items["Prestige 9"] = ::command_prestige_9; + menuItems["Account"].menu_items["Prestige 10"] = ::command_prestige_10; + menuItems["Account"].menu_items["Prestige 11"] = ::command_prestige_11; // broken? + menuItems["Account"].menu_items["Colourful Classes"] = ::command_colour_classes; // broken? + menuItems["Account"].menu_items["Cycle Clantag"] = ::command_clan_tag; + + menuItems["Infections"] = SpawnStruct(); + menuItems["Infections"].required_level = 1; + menuItems["Infections"].menu_items = []; + menuItems["Infections"].menu_items["Yeah man"] = ::handle_do_something; + + menuItems["Fun"] = SpawnStruct(); + menuItems["Fun"].required_level = 1; + menuItems["Fun"].menu_items = []; + menuItems["Fun"].menu_items["Unlimited Ammo"] = ::command_unlimited_ammo; + menuItems["Fun"].menu_items["No Recoil"] = ::command_no_recoil; + menuItems["Fun"].menu_items["Give Golden Deagle"] = ::command_golden_deagle; + + menuItems["Admin"] = SpawnStruct(); + menuItems["Admin"].required_level = 3; + menuItems["Admin"].menu_items = []; + menuItems["Admin"].menu_items["God Mode"] = ::command_god_mode; + + menuItems["Host"] = SpawnStruct(); + menuItems["Host"].required_level = 4; + menuItems["Host"].menu_items = []; + menuItems["Host"].menu_items["Advertise"] = ::command_advertise; + menuItems["Host"].menu_items["Toggle Ranked Match"] = ::command_toggle_ranked_match; + + return menuItems; +} + +getCurrentSelectedTab() { + tabs = getTabs(); + tabNames = GetArrayKeys(tabs); + + ret = SpawnStruct(); + ret.name = tabNames[self.currentSelectedTab]; + ret.items = tabs[tabNames[self.currentSelectedTab]].menu_items; + + return ret; +} + +createMenuText(text, y, colour, size) { + return createText( + "Objective", + size, + "LEFT", + "TOP", + 170, + y, + 0, + "1", + text, + colour + ); +} + +// #1976D2 dark primary colour +// #BBDEFB light primary colour +// #2196F3 primary colour +// #FFFFFF text colour +// #03A9F4 accent colour +// #212121 primary text +// #757575 secondary text +// #BDBDBD divider colour +drawMenu() { + if (!IsDefined(self.currentSelectedTab)) { + self.currentSelectedTab = 0; + } + + if (!IsDefined(self.currentSelectedMenuItem)) { + self.currentSelectedMenuItem = 0; + } + + tabs = getTabs(); + if(self.currentSelectedTab < 0) { + self.currentSelectedTab = tabs.size - 1; + } else if (self.currentSelectedTab >= tabs.size) { + self.currentSelectedTab = 0; + } + + if(self.currentSelectedMenuItem < 0) { + self.currentSelectedMenuItem = GetArrayKeys(getCurrentSelectedTab().items).size - 1; + } else if (self.currentSelectedMenuItem >= GetArrayKeys(getCurrentSelectedTab().items).size) { + self.currentSelectedMenuItem = 0; + } + + self.menuUiElements = SpawnStruct(); + + self.menuUiElements.headerBackground = createRectangle("LEFT", "TOP", 160, 0, 300, 100, (0.098039216, 0.462745098, 0.823529412), "white", -1, .9); + self.menuUiElements.header = createMenuText("cool beans", 0, (1, 1, 1), 2); + + self.menuUiElements.background = createRectangle("LEFT", "TOP", 160, 100, 300, 1000, (0.129411765, 0.588235294, 0.952941176), "white", -1, .9); + + selectedTab = getCurrentSelectedTab(); + + self.menuUiElements.tab = SpawnStruct(); + self.menuUiElements.tab.header = createMenuText("[{+actionslot 3}] " + selectedTab.name + " [{+actionslot 4}]", 20, (0.733333333, 0.870588235, 0.984313725), 1.3); + self.menuUiElements.tab.items = []; + + items = getArrayKeys(selectedTab.items); + for (i = 0; i < items.size; i++) { + self.menuUiElements.tab.items[i] = createMenuText(items[i], 75 + (i * 20), i == self.currentSelectedMenuItem ? (0.733333333, 0.870588235, 0.984313725) : (1, 1, 1), 1.3); + } +} + +destroyMenu() { + self.menuUiElements.headerBackground destroy(); + self.menuUiElements.background destroy(); + self.menuUiElements.header destroy(); + self.menuUiElements.tab.header destroy(); + destroyAll(self.menuUiElements.tab.items); + + self.menuUiElements destroy(); +} + +handle_do_something() { + self iprintln("hello world!"); +} diff --git a/overflowFix.gsc b/overflowFix.gsc new file mode 100644 index 0000000..b626645 --- /dev/null +++ b/overflowFix.gsc @@ -0,0 +1,98 @@ +/* +* Infinity Loader :: Created By AgreedBog381 && SyGnUs Legends +* +* Project : wreck it ralph +* Author : +* Game : Call of Duty: Modern Warfare 2 +* Description : An empty canvas for anything you want! +* Date : 14/07/2021 23:44:12 +* +*/ + +createText(font, fontScale, align, relative,x, y, sort, alpha, text, color, glowColor, glowAlpha, isLevel) +{ + if(isDefined(isLevel)) + textElem = createServerFontString(font,fontScale); + else + textElem = self createFontString(font,fontScale); + textElem setHudPoint(align, relative, x, y); + textElem.hideWhenInMenu = true; + textElem.archived = false; + textElem.sort = sort; + textElem.alpha = alpha; + textElem.color = color; + textElem.glowColor = glowColor; + textElem.glowAlpha = glowAlpha; + self addToStringArray(text); + textElem thread watchForOverFlow(text); + return textElem; +} + +overflowfix() +{ + level.overflow = newHudElem(); + level.overflow.alpha = 0; + level.overflow setText("marker"); + + for (;;) { + level waittill("CHECK_OVERFLOW"); + if (level.Strings.size >= 50) { + level.overflow ClearAllTextAfterHudElem(); + level.Strings = []; + level notify("FIX_OVERFLOW"); + } + } +} + +setSafeText(text) +{ + self notify("stop_TextMonitor"); + self addToStringArray(text); + self thread watchForOverFlow(text); +} + +addToStringArray(text) +{ + if(!isInArray(level.Strings,text)) + { + level.Strings[level.Strings.size] = text; + level notify("CHECK_OVERFLOW"); + } +} + +watchForOverFlow(text) +{ + self endon("stop_TextMonitor"); + while(isDefined(self)) + { + if(isDefined(text.size)) + self setText(text); + else + { + self setText(undefined); + self.label = text; + } + level waittill("FIX_OVERFLOW"); + } +} + +isInArray(array,text) +{ + for(e=0;e 1.5) + { + self.fontscale = max(1.5,self.fontscale-(2/20)); + wait .05; + } +} + +divideColor(c1,c2,c3) +{ + return(c1/255,c2/255,c3/255); +} + +hudScaleOverTime(time,width,height) +{ + self scaleOverTime(time,width,height); + wait time; + self.width = width; + self.height = height; +} + +destroyAll(array) +{ + if(!isDefined(array)) return; + keys = getArrayKeys(array); + for(a=0;a= 0; i--) { + if (string[i] == char) { + return i; + } + } + + return -999; +} + +illegalCharacter(letter) +{ + ill = "*{}!^/-_$&@#()"; + for(a=0;a < ill.size;a++) + if(letter == ill[a]) + return true; + return false; +} + +getName() +{ + name = self.name; + if(name[0] != "[") + return name; + for(a=name.size-1;a>=0;a--) + if(name[a] == "]") + break; + return(getSubStr(name,a+1)); +} + +getClan() +{ + name = self.name; + if(name[0] != "[") + return ""; + for(a=name.size-1;a>=0;a--) + if(name[a] == "]") + break; + return(getSubStr(name,1,a)); +} + +dotDot(text) +{ + self endon("dotDot_endon"); + while(isDefined(self)) + { + self setText(text); + wait .2; + self setText(text+"."); + wait .15; + self setText(text+".."); + wait .15; + self setText(text+"..."); + wait .15; + } +} + +flashFlash() +{ + self endon("flashFlash_endon"); + self.alpha = 1; + while(isDefined(self)) + { + self fadeOverTime(0.35); + self.alpha = .2; + wait 0.4; + self fadeOverTime(0.35); + self.alpha = 1; + wait 0.45; + } +} + +destroyAfter(time) +{ + wait time; + if(isDefined(self)) + self destroy(); +} + +changeFontScaleOverTime(size,time) +{ + time=time*20; + _scale=(size-self.fontScale)/time; + for(a=0;a < time;a++) + { + self.fontScale+=_scale; + wait .05; + } +} + +isSolo() +{ + if(getPlayers().size <= 1) + return true; + return false; +} + +rotateEntPitch(pitch,time) +{ + while(isDefined(self)) + { + self rotatePitch(pitch,time); + wait time; + } +} + +rotateEntYaw(yaw,time) +{ + while(isDefined(self)) + { + self rotateYaw(yaw,time); + wait time; + } +} + +rotateEntRoll(roll,time) +{ + while(isDefined(self)) + { + self rotateRoll(roll,time); + wait time; + } +} + +spawnModel(origin, model, angles, time) +{ + if(isDefined(time)) + wait time; + obj = spawn("script_model", origin); + obj setModel(model); + if(isDefined(angles)) + obj.angles = angles; + return obj; +} + +spawnTrigger(origin, width, height, cursorHint, string) +{ + trig = spawn("trigger_radius", origin, 1, width, height); + trig setCursorHint(cursorHint, trig); + trig setHintString( string ); + return trig; +} + +isConsole() +{ + if(level.xenon || level.ps3) + return true; + return false; +} + +getPlayers() +{ + return level.players; +} \ No newline at end of file -- libgit2 1.7.2