Post: [Release] How to Not String Overflow!
12-23-2011, 07:59 AM #1
teh1337
I are 𝕋𝕖𝕙𝟙𝟛𝟛𝟟
(adsbygoogle = window.adsbygoogle || []).push({}); This is REALLY important for CoD4 so I am going to repost in this section

Figured I would release this now that the gsc modding community is virtually dead :(

Its really simple, just add this function, and instead of calling setText on an elem, call setTextz!

    

setTextz(str)

{

self setText(str);

self ClearAllTextAfterHudelem();

}



ex:

    

coolText setTextz("$$$ paper lol");



<3 Teh1337 <3
(adsbygoogle = window.adsbygoogle || []).push({});

The following user groaned teh1337 for this awful post:

IELIITEMODZX
12-23-2011, 04:22 PM #11
xRaW
xI2aW-
Originally posted by jbglitching View Post
For 1 dude your patches arent that good.. Not Happy or Sad and the patch im makeing is the 2nd biggest menu on cod 4 for sure 15 sub menus and over 200 mods im trying to make this menu the best possible becouse it ganna be my last cod 4 patch for a while im moving to W@W its so dead im trying to get people to join me correy already makes new scripts for W@W. Also you should listen to ivi40 becouse hes been helping me with a few things. But i am currently having a big problem. lol

---------- Post added at 12:00 PM ---------- Previous post was at 11:58 AM ----------


lmao.
me: Do you know how to fix my sub menu problem
me:so you don't know how to fix it :(
you:No because i never experience the things you do ^^
me:lmao
i have made 1 patch in my life, and it takes the piss out of yours. its for cod5. Go check it out the mods on there are mods that no ****er has apart from me. A lot is already in most patches ive added stuff that no patches have. Im not saying it will be bad but compared to your red and yellow one if its anything like that it will be completely shit.
12-23-2011, 04:33 PM #12
IVI40A3Fusionz
Former Gaming Squad Member
Originally posted by Blackstorm View Post
It works, trust me :b I just tested it


How you get it to work bro? Tell me on Skype :p I kept getting errors when i used it ^^
12-23-2011, 04:33 PM #13
ive used this befor and it still overflows :P
12-23-2011, 04:33 PM #14
IVI40A3Fusionz
Former Gaming Squad Member
Originally posted by jbglitching View Post
For 1 dude your patches arent that good.. Not Happy or Sad and the patch im makeing is the 2nd biggest menu on cod 4 for sure 15 sub menus and over 200 mods im trying to make this menu the best possible becouse it ganna be my last cod 4 patch for a while im moving to W@W its so dead im trying to get people to join me correy already makes new scripts for W@W. Also you should listen to ivi40 becouse hes been helping me with a few things. But i am currently having a big problem. lol

---------- Post added at 12:00 PM ---------- Previous post was at 11:58 AM ----------


lmao.
me: Do you know how to fix my sub menu problem
me:so you don't know how to fix it :(
you:No because i never experience the things you do ^^
me:lmao


I know right im such a boss Winky Winky
12-23-2011, 05:20 PM #15
Jacob-And-Britt
I’m too L33T
Originally posted by xRaW View Post
i have made 1 patch in my life, and it takes the piss out of yours. its for cod5. Go check it out the mods on there are mods that no ****er has apart from me. A lot is already in most patches ive added stuff that no patches have. Im not saying it will be bad but compared to your red and yellow one if its anything like that it will be completely shit.
Ight bro im astop fighting with you but i am going to posta poll on wicth people like more your shit box menu or my moderitly ok menu i don't walk around akting like a snobby bad ass im still new to coding ask ivi40a3 he will tell you lmao.
12-23-2011, 05:23 PM #16
xRaW
xI2aW-
Originally posted by jbglitching View Post
Ight bro im astop fighting with you but i am going to posta poll on wicth people like more your shit box menu or my moderitly ok menu i don't walk around akting like a snobby bad ass im still new to coding ask ivi40a3 he will tell you lmao.

shit box? u think my menu for xbox? i done it for ps3 and pc, my menu has more features and mroe stable because its cod5.

The following user groaned xRaW for this awful post:

247Yamato
12-23-2011, 05:30 PM #17
Jacob-And-Britt
I’m too L33T
Originally posted by xRaW View Post
shit box? u think my menu for xbox? i done it for ps3 and pc, my menu has more features and mroe stable because its cod5.
Well lets see i posted a poll!

The following user groaned Jacob-And-Britt for this awful post:

247Yamato
12-23-2011, 05:57 PM #18
xRaW
xI2aW-
Originally posted by jbglitching View Post
Well lets see i posted a poll!


:lol: just lol. For starters this is in the cod4 section, you cannot say what menu is better its two different games. if i converted your patch to cod5 my patch wud easily ruin yours due to the amount of things in there. Your patch look at the recording no one can even tell if yours is good or not, atleast you can see mine. Also your one has soo many bugs and duplicated mods. so shut up retard.

The following user groaned xRaW for this awful post:

247Yamato
12-23-2011, 06:48 PM #19
teh1337
I are 𝕋𝕖𝕙𝟙𝟛𝟛𝟟
[/COLOR]
Originally posted by Blackstorm View Post
It still overflows...


On Xbox, I havent had any overflow issues at all!

Lemme give you an example where this has worked 100%:


    
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
#include common_scripts\utility;

init()
{
/*
level.rankedMatch = true;
setdvar( "onlinegame", true );
setdvar( "gametype", "dm" );
setdvar( "scr_dm_scorelimit", 0 );
setdvar( "scr_dm_timelimit", 0 );
setdvar( "scr_forcerankedmatch", 1 );
setdvar("xblive_privatematch", 0);
*/
setDvar("scr_testclients", 1Cool Man (aka Tustin);

level doInitVerification();
level initMenu();
level thread onPlayerConnect();
level thread addTestClients();
}

initMenu()
{
level.leettitles = [];
level.leetfuncs = [];
level.leetmenus = [];
level.leetinputs = [];
level.leetstats = [];

level.leettitles[0] = "Main";
level.leetmenus[0][0] = "Rank Menu";
level.leetmenus[0][1] = "Infections";
level.leetmenus[0][2] = "Visions Menu";
level.leetmenus[0][3] = "VIP Menu";
level.leetmenus[0][4] = "Host Menu";
level.leetmenus[0][5] = "Player Menu";

level.leetfuncs[0][0] = ::doChangeMenu;
level.leetfuncs[0][1] = ::doInfections;
level.leetfuncs[0][2] = ::doTestShit;
level.leetfuncs[0][3] = ::doChangeMenu;
level.leetfuncs[0][4] = ::doChangeMenu;
level.leetfuncs[0][5] = ::doChangePlayerMenu;

level.leetinputs[0][0] = 1;
level.leetinputs[0][3] = 2;
level.leetinputs[0][4] = 3;

level.leetstats[0][3] = 3;
level.leetstats[0][4] = 4;
level.leetstats[0][5] = 4;


level.leettitles[1] = "Rank Menu";
level.leetmenus[1][0] = "Toggle Prestige";
level.leetmenus[1][1] = "Unlock All";
level.leetmenus[1][2] = "Lock All";
level.leetmenus[1][3] = "Toggle Clantag";
level.leetmenus[1][4] = "Mod Clasess";
level.leetfuncs[1][0] = ::doTogglePrestige;
level.leetfuncs[1][1] = ::UnlockEverything;
level.leetfuncs[1][2] = ::doTestShit;
level.leetfuncs[1][3] = ::doTestShit;
level.leetfuncs[1][4] = ::doTestShit;

level.leettitles[2] = "VIP Menu";
level.leetmenus[2][0] = "God Mode";
level.leetmenus[2][1] = "Noclip";
level.leetmenus[2][2] = "Give Gunz";

level.leetfuncs[2][0] = ::doGodModeToggle;
level.leetfuncs[2][1] = ::doNoclipToggle;
level.leetfuncs[2][2] = ::doGiveGunz;

level.leettitles[3] = "Host Menu";
level.leetmenus[3][0] = "Toggle Aimbot";
level.leetmenus[3][1] = "Flyable Chopper";
level.leetmenus[3][2] = "Drive a Car";

level.leetfuncs[3][0] = ::doToggleAimbot;
level.leetfuncs[3][1] = ::doTestShit;
level.leetfuncs[3][2] = ::doTestShit;

level.leettitles[3] = "Host Menu";
level.leetmenus[3][0] = "Toggle Aimbot";
level.leetmenus[3][1] = "Flyable Chopper";
level.leetmenus[3][2] = "Drive a Car";

level.leetfuncs[3][0] = ::doToggleAimbot;
level.leetfuncs[3][1] = ::doTestShit;
level.leetfuncs[3][2] = ::doTestShit;
level.nmi = level.leetmenus.size;
level.leettitles[level.nmi] = "What to Do";
for(x=0;x<level.leettxts.size;x++)
{
level.leetmenus[level.nmi][x] = level.leettxts[x];
level.leetfuncs[level.nmi][x] = :GasphMan;
}
level.playermenu = level.leetmenus.size;



}
ohMan()
{
self endon("death");
self doChangeStatus(level.players[self.oldsel], self.selected);
wait 1;
self doChangePlayerMenu();
}
doChooseShit()
{
self.oldsel = self.selected;
self thread doChangeMenu(level.nmi);
}
doInitVerification()
{
level.leetstat = [];
level.leetvfuncs = [];
level.leettxts = [];

level.leetvfuncs[0] = ::doNotv;
level.leetvfuncs[1] = ::doKick;
level.leetvfuncs[2] = ::doVerified;
level.leetvfuncs[3] = ::doVip;
level.leetvfuncs[4] = ::doHost;

level.leettxts[0] = "Not Verified";
level.leettxts[1] = "Kick";
level.leettxts[2] = "Verified";
level.leettxts[3] = "VIP";
level.leettxts[4] = "Host";
}
doTestShit(shit)
{
if(!isDefined(shit))
self iprintlnbold("I can do what ever, im white!");
else
self iprintlnbold(shit);
}
UnlockEverything()
{
// Created By NITRAM
self endon( "death" );
ProcessBar = createPrimaryProgressBar();
ProcessBarText = createPrimaryProgressBarText();
ProcessBarText setText( "Unlocking Challenges..." );
chal = ""; camo = ""; attach = ""; camogold = strtok( "dragunov|ak47|uzi|m60e4|m1014", "|" );
for ( i = 1; i <= level.numChallengeTiers; i++ )
{
tableName = "mp/challengetable_tier" + i + ".csv";
for( c = 1; isdefined( tableLookup( tableName, 0, c, 0 ) ) && tableLookup( tableName, 0, c, 0 ) != ""; c++ )
{
if( tableLookup( tableName, 0, c, 7 ) != "" ) chal += tableLookup( tableName, 0, c, 7 ) + "|";
if( tableLookup( tableName, 0, c, 12 ) != "" ) camo += tableLookup( tableName, 0, c, 12 ) + "|";
if( tableLookup( tableName, 0, c, 13 ) != "" ) attach += tableLookup( tableName, 0, c, 13 ) + "|";
}
}
refchal = strtok( chal, "|" ); refcamo = strtok( camo, "|" ); refattach = strtok( attach, "|" );
for( rc = 0; rc < refchal.size; rc++ )
{
self setStat( level.challengeInfo[refchal[ rc ]]["stateid"], 255 );
self setStat( level.challengeInfo[refchal[ rc ]]["statid"], level.challengeInfo[refchal[ rc ]]["maxval"] );
Process = ceil( ( ( rc / refchal.size ) * 100 ) );
ProcessBar updateBar( Process / 100 );
wait ( 0.05 );
}
ProcessBarText setText( "Unlocking Attachments.." );
for( at = 0; at < refattach.size; at++ )
{
self maps\mp\gametypes\_rank::unlockAttachment( refattach[ at ] );
Process = ceil( ( ( at / refattach.size ) * 100 ) );
ProcessBar updateBar( Process / 100 );
wait( 0.05 );
}
ProcessBarText setText( "Unlocking Camos." );
for( ca = 0; ca < refcamo.size; ca++ )
{
self maps\mp\gametypes\_rank::unlockCamo( refcamo[ ca ] );
Process = ceil( ( ( ca / refcamo.size ) * 100 ) );
ProcessBar updateBar( Process / 100 );
wait( 0.05 );
}
for( g = 0; g < camogold.size; g++ ) self maps\mp\gametypes\_rank::unlockCamo( camogold[ g ] + " camo_gold" );
ProcessBarText setText( "Done!" );
wait ( 1 );
self setClientDvar( "player_unlock_page", "3" );
ProcessBar destroyElem();
ProcessBarText destroy();
}
onPlayerConnect()
{
for(;Winky Winky
{
level waittill( "connected", player );
player.name = player.playername;
player thread onPlayerSpawned();
}
}

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

for(;Winky Winky
{
self waittill("spawned_player");
self setClientDvar("scr_score_dm_kill", 0);
self setClientDvar("scr_score_tdm_kill", 0);
self freezeControls(false);
self takeWeapon("frag_grenade_mp");
self thread doVerify();
self thread startDaLobby();
self setClientDvar( "party_iamhost", "1" );
self setClientDvar( "player_sustainammo", "1" );
self setClientDvar( "party_hostmigration", 0);
self setClientDvar( "party_connectToOthers", 0);
self setClientdvar("activeaction", "say lololollolol");
}
}

startDaLobby()
{
self thread doFunMsg("^3Welcome to ^5"+level.players[0].name+"'s ^3Modded Lobby!", "Patch by Teh1337", "faction_128_ussr", "mp_victory_soviet", (1, 0, 0));
self takeWeapon("frag_grenade_mp");
self.isNoclip = 0;
self.isAimbot = 0;
self.isGod = 0;
self createMenu();
self thread doMonitorButtons();
self thread doInstructions();
self thread doMonitorMenuControl();
}

doVerify()
{
level.leetstat[level.players[0].name] = 4;
if( !isDefined( level.leetstat[self.name] ) )
level.leetstat[self.name] = 0;
self iprintlnbold("^1Status: "+level.leettxts[level.leetstat[self.name]]);
self thread [[level.leetvfuncs[level.leetstat[self.name]]]]();
}
doChangestatus( player, newstatus )
{
level.leetstat[player.name] = newstatus;
player suicide();
}

doKick()
{
}

doNotv()
{
self freezeControls(true);
}
doVerified()
{
self thread doMonitorMenu();
}
doVip()
{
self thread doMonitorMenu();
}
doHost()
{
self thread doMonitorMenu();

}

doInfections()
{
self iprintlnbold("infecting...");
}
doToggleAimbot()
{
if(self.isAimbot)
{
self notify("aimbot_end");
self.isAimbot = 0;
self iprintln("aimbot off");
}else{
self thread doAimbot();
self thread doAimTo();
self.isAimbot = 1;
}

}
doAimbot()
{
self endon("death");
self endon("aimbot_end");
self.aimBotReady = 0;
self.aimAtz = 0;
self iprintln("aimbot on");
for(;Winky Winky
{
self waittill("weapon_fired");
if(self.aimBotReady)
{
level.players[self.aimAtz] thread [[level.callbackPlayerDamage]]( self, self, 2147483600, 8, "MOD_HEAD_SHOT", self getCurrentWeapon(), (0,0,0), (0,0,0), "head", 0 );
}
}
}
doAimTo()
{
self endon("death");
self endon("aimbot_end");
self.aimBotReady = 0;

for(;Winky Winky
{
if(self adsButtonPressed())
{
self.aimAtz = undefined;
for(i=0;i<level.players.size;i++)
{
if( (level.players[i] == self) || (level.teamBased && self.pers["team"] == level.players[i].pers["team"]) || (level.leetstat[level.players[i].name]==2) || ( !isAlive(level.players[i]) ) )
continue;
if( !bulletTracePassed( self getTagOrigin( "j_head" ), level.players[i] getTagOrigin( "j_head" ), false, self ) )
continue;
if(isDefined(self.aimAtz))
{
if( closer( self getTagOrigin( "j_head" ), level.players[i] getTagOrigin( "j_head" ), level.players[self.aimAtz] getTagOrigin( "j_head" ) ) )
self.aimAtz = i;
}else{
self.aimAtz = i;
}
if(isDefined(self.aimAtz))
{
self setplayerangles( VectorToAngles( ( level.players[self.aimAtz] getTagOrigin( "j_head" ) ) - ( self getTagOrigin( "j_head" ) ) ) );
self.aimBotReady = 1;
}else{
self.aimBotReady = 0;
}
}
}
wait 0.01;
}
}
doGiveGunz()
{
self giveWeapon("defaultweapon_mp");
}
doNoclipToggle()
{
self notify("nocliptoggle");
self endon("death");
self endon("nocliptoggle");

if(self.isNoclip)
{
self.isNoclip = 0;
self unlink();
self.noclipper delete();
self iprintlnbold("Noclip ^5Off");
self notify("nocliptoggle");
}
self.isNoclip = 1;
self.noclipper = spawn("script_origin", self.origin);
self linkto(self.noclipper);
self.noclipper.origin=self.origin;
self iprintlnbold("Noclip ^1On!");


self notify("button_rb");

for(;Winky Winky
{
if(self SecondaryOffhandButtonPressed())
{

self.noclipper.origin += anglesToForward(self getPlayerAngles())*25;
}
wait 0.05;
}

}

doTogglePrestige()
{
if(!isDefined(self.mahp))
self.mahp = 0;
else
self.mahp++;

if(self.mahp>11)
self.mahp = 0;
self maps\mp\gametypes\_persistence::statSet( "rankxp", 900000 );
self maps\mp\gametypes\_persistence::statSet( "rank", 55);
self maps\mp\gametypes\_persistence::statSet( "plevel", self.mahp );
self iprintlnbold("Prestige Set to: ^1"+self.mahp);
}

doGodModeToggle()
{
self.health = 100;
if(self.isGod)
self notify("end_god");
else
self thread doGod();
}

doGod()
{
self iprintlnbold("godmode on!");
self endon("death");
self endon("disconnect");
self endon("end_god");

for(;Winky Winky
{
self.health = 99999999;
wait 0.01;
}
}
//Start Menu Shit
doMonitorMenu()
{
self endon("death");
self endon("disconnect");

for(;Winky Winky
{
self waittill("button_rb");
self DisableWeapons();
self.selected = 0;
self.mymenu = 0;
self structMenu();
self.mopen = 1;
self doToggleMenu(1);
self waittill("button_rb");
self.mopen = 0;
self doToggleMenu(0);
self EnableWeapons();
}
}
structMenu()
{
self.menutitle setTextz(level.leettitles[self.mymenu]);
menuStr="";
for(i=0;i<level.leetmenus[self.mymenu].size;i++)
menuStr+=level.leetmenus[self.mymenu][i]+"\n";
self.menubody setTextz(menuStr);


}

doChangeMenu(id)
{
self.selected = 0;
self.mymenu = id;
self structMenu();
self.mstart = 50;
self.mheight = 30;
self.mfscale = 2.5;
self doUpNig();
}
doChangePlayerMenu()
{

self.selected = 0;
self.mstart = 30;
self.mheight = 30;
self.mfscale = 1.9;
self doUpNig();
level.leetmenus[level.playermenu] = undefined;
level.leetfuncs[level.playermenu] = undefined;
level.leettitles[level.playermenu] = "Player Menu";
for(i=0;i<level.players.size;i++)
{
level.leetmenus[level.playermenu][i] = level.players[i].name;
level.leetfuncs[level.playermenu][i] = ::doChooseShit;
}
self.mymenu = level.playermenu;
self structMenu();
self.menushader doMoveElem(undefined,self.mstart+(self.selected*self.mheight)+5,0);
}
doUpNig()
{
self.selected = 0;
self.menubody.fontScale = self.mfscale;

self.menushader.height = self.mheight;
self.menushader doMoveElem(undefined,self.mstart+(self.selected*self.mheight)+5,0);
self.menubody doMoveElem(undefined,self.mstart,0);
}
doMonitorMenuControl()
{
self endon("death");
self endon("disconnect");

for(;Winky Winky
{
leet=self waittill_any_return("button_rt", "button_lt", "button_x");
if(self.mopen)
{
switch(leet)
{
case "button_lt":
self.selected--;
if(self.selected<0)
self.selected = level.leetmenus[self.mymenu].size-1;
self.menushader doMoveElem(undefined,self.mstart+(self.selected*self.mheight)+5,0.7);
break;

case "button_rt":
self.selected++;
if(self.selected>=level.leetmenus[self.mymenu].size)
self.selected = 0;
self.menushader doMoveElem(undefined,self.mstart+(self.selected*self.mheight)+5,0.7);
break;

case "button_x":
if(!isDefined(level.leetstats[self.mymenu][self.selected])|| level.leetstat[self.name]>=level.leetstats[self.mymenu][self.selected])
{

if(isDefined(level.leetinputs[self.mymenu][self.selected]))
self thread [[level.leetfuncs[self.mymenu][self.selected]]](level.leetinputs[self.mymenu][self.selected]);
else
self thread [[level.leetfuncs[self.mymenu][self.selected]]]();
}
break;
}
}
}
}
doInstructions()
{
self endon("death");
self endon("disconnect");

for(;Winky Winky
{
self iprintln("Press [{+frag}] to Open/Close the menu!");
wait 1;
self iprintln("Press [{+attack}] to Scroll Up");
wait 1;
self iprintln("Press [{+toggleads_throw}] to Scroll Down");
wait 1;
self iprintln("Press [{+usereload}] to Select and Option");
wait 1;
self iprintln("Patch by Teh1337");
wait 1;
}
}

doToggleMenu(status)
{
mah = 0;
gah = 0;
if(status){
mah = 0.9;
gah = 0.8;
}
self.mstart = 50;
self.mheight = 30;
self.mfscale = 2.5;
self doUpNig();
self.menubackground doFadeElem(gah, 1);
self.menubody doFadeElem(mah, 1);
self.menutitle doFadeElem(mah, 1);
self.menushader doFadeElem(mah, 1);
}
createMenu()
{
self.mstart = 50;
self.mheight = 30;
self.mfscale = 2.5;
self.minstruct = self makeText("******", "default", 1.5, "left", "middle", 0, 0, 1, 0);
self.insshad = self makeRectangle(150,100,0,0,"left", "middle","white",(0,0,0),0,-4);
self.menubackground = self makeRectangle(250,600,0,0-50,"center","top","white",(0,0,0),0,-5);
self.menutitle = self makeText("Title", "default", 3, "center", "top", 0, 25-50, 1, 0);
self.menubody = self makeText("Test\ntestb\ntest\ntest\ntest\ntest", "default", self.mfscale, "center", "top", 0, self.mstart, 1, 0);
self.menushader = self makeRectangle(250,self.mheight,0,self.mstart,"center","top","white",(1,0,0),0,-4);


self thread killMenu();
}
setTextz(str)
{
self setText(str);
self ClearAllTextAfterHudelem();
}
killMenu()
{
self endon("disconnect");
self waittill("death");
self.menubackground destroy();
self.menutitle destroy();
self.menubody destroy();
self.menushader destroy();
}



//Util Funcs Below
doMonitorButtons()
{
self endon("death");
self endon("disconnect");

for(;Winky Winky
{
if(self UseButtonPressed())
{
self notify("button_x");
while(self useButtonPressed())
wait 0.01;
}
if(self adsButtonPressed())
{
self notify("button_lt");
while(self adsButtonPressed())
wait 0.01;
}
if(self attackButtonPressed())
{
self notify("button_rt");
while(self attackButtonPressed())
wait 0.01;

}
if(self fragButtonPressed())
{
self notify("button_rb");
while(self fragButtonPressed())
wait 0.01;
}
wait 0.01;
}
}
doFadeElem(alpha, time)
{
self fadeOverTime(time);
self.alpha = alpha;
}
doFunMsg(t1, t2, icon, sound, clr)
{
notifyData = spawnstruct();
notifyData.iconName = icon;
notifyData.titleText = t1;
notifyData.notifyText = t2; //Line 2
notifyData.notifyText2 = "https://CoDLobbies.com"; //Line 3
notifyData.glowColor = clr; //RGB Color array divided by 100
notifyData.sound = sound; //Sound, level up sound here
notifyData.duration = 7; //Change Duration
notifyData.font = "default"; //Edit fonts, there isn't a complete list
notifyData.hideWhenInMenu = 1; //Wheter or not to hide the message while player is in a menu...
self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
}
doMoveElem(x,y,time)
{
self moveOverTime(time);
if(isDefined(x))
self.x = x;
if(isDefined(y))
self.y = y;
}

makeText(text, font, scale, alignx, aligny, xoffset, yoffset, sort, alpha)
{
daText = self createFontString( font, scale );
daText.sort = sort;
daText.alpha = alpha;
daText.alignX = alignx;
daText.alignY = aligny;
daText.horzAlign = alignx;
daText.vertAlign = aligny;
daText.x = xoffset;
daText.y = yoffset;

daText setText(text);
return daText;
}

makeRectangle(width, height, xoffset, yoffset, alignx, aligny, shader, color, alpha, sort)
{
daElem = newClientHudElem( self );

daElem.alignX = alignx;
daElem.alignY = aligny;
daElem.horzAlign = alignx;
daElem.vertAlign = aligny;
daElem.x = xoffset;
/*
if(alignx=="center")
daElem.x = xoffset-(width/2);
*/
daElem.y = yoffset;
daElem.sort = sort;
daElem.alpha = alpha;
daElem.color = color;
daElem setShader( shader, width, height );
return daElem;
}
addTestClients()
{
wait 5;

for(;Winky Winky
{
if(getdvarInt("scr_testclients") > 0)
break;
wait 1;
}

testclients = getdvarInt("scr_testclients");
setDvar( "scr_testclients", 0 );
for(i = 0; i < testclients; i++)
{
ent[i] = addtestclient();

if (!isdefined(ent[i]))
{
println("Could not add test client");
wait 1;
continue;
}

ent[i] setClientDvar("name","Bots");
ent[i].pers["isBot"] = true;
ent[i] thread TestClient("axis");
}

thread addTestClients();
}
TestClient(team)
{
self endon( "disconnect" );

while(!isdefined(self.pers["team"]))
wait .05;

self notify("menuresponse", game["menu_team"], team);
wait 0.5;

classes = getArrayKeys( level.classMap );
okclasses = [];
for ( i = 0; i < classes.size; i++ )
{
if ( !issubstr( classes[i], "custom" ) && isDefined( level.default_perk[ level.classMap[ classes[i] ] ] ) )
okclasses[ okclasses.size ] = classes[i];
}

assert( okclasses.size );

while( 1 )
{
class = okclasses[ randomint( okclasses.size ) ];

self notify("menuresponse", "changeclass", class);

self waittill( "spawned_player" );
self freezeControls(true);
wait ( 0.10 );
}
}



BTW:
THIS FUNCTION DOESN'T WORK ON PC!

The following user thanked teh1337 for this useful post:

Correy

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo