(adsbygoogle = window.adsbygoogle || []).push({});
This allows you to ban people in your lobby, and they will stay banned even if you change maps or go to pregame.
Also useful if you are still stuck using crappy menu systems that overflow and kick you back to pregame at random
add this to init()
level.banList = [];
for ( b = 0; getDvar( "banned" + b ) != ""; b++ ) level.banList[level.banList.size] = getDvar( "banned" + b );
add this to onPlayerConnect()
foreach ( banned in level.banList )
{
array = strTok( banned, "," );
guid = array[0]; name = array[1];
if ( ( player.guid == guid || player.name == name ) && !player isHost() ) kick( player getEntityNumber() );
}
add these anywhere, they don't need to be threaded
//ban function
banPlayer( player )
{
setDvarIfUninitialized( "banned" + level.banList.size, 0 );
setDvar( "banned" + level.banList.size, player.guid + "," + player.name );
level.banList[level.banList.size] = player.guid + "," + player.name;
if( !player isHost() ) kick( player getEntityNumber() );
}
//unban function
unbanPlayer( banString )
{
array = strTok( banString, "," );
bguid = array[0]; bname = array[1];
banlist = [];
for ( b = 0; getDvar( "banned" + b ) != ""; b++ )
{
banlist[banlist.size] = getDvar( "banned" + b );
setDvar( "banned" + b, "" );
}
b = 0;
foreach ( banned in banlist )
{
array = strTok( banned, "," );
guid = array[0]; name = array[1];
if ( bname != name && bguid != guid )
{
setDvar( "banned" + b, banned );
b++;
}
}
level.banList = [];
for ( b = 0; getDvar( "banned" + b ) != ""; b++ ) level.banList[level.banList.size] = getDvar( "banned" + b );
}
example usage as below:
//banmenu demo ( requires my button & checkCombo functions )
unbanMenu()
{
self endon( "disconnect" );
d = self createFontString("default",2);
d setPoint("TOPCENTER");
i = 0;
for(;
{
d setText( "Press [{+usereload}][{+usereload}][{weapnext}] to use Ban system / Prone to Unban" );
self waittill( "buttonPress" );
if ( !checkCombo("X,X,Y") ) continue;
self freezeControlsWrapper(1);
if( self getStance() == "prone" ) list = "Unban";
else list = "Ban";
for(;
{
if ( list == "Ban" )
{
if( i > level.players.size-1 ) i = 0;
else if( i < 0 ) i = level.players.size-1;
d setText( level.players.name + " | Press [{+gostand}] to Ban, [{+melee}] or [{+stance}] to exit" );
}
if( list == "Unban" )
{
if( i > level.banList.size-1) i = 0;
else if( i < 0 ) i = level.banList.size-1;
if( !level.banList.size )
{
d setText( "banList is empty!" );
wait .5;
self freezeControlsWrapper(0);
break;
}
d setText( level.banList + " | Press [{+gostand}] to Unban, [{+melee}] or [{+stance}] to exit" );
}
self waittill( "buttonPress", b );
if( b == "Left" ) i--;
if( b == "Right" ) i++;
if( b == "A" )
{
if ( list == "Ban" ) level.player thread banPlayer( level.players );
else level.player thread unbanPlayer( level.banList );
wait .1;
}
if( b == "B" || b == "RS" )
{
self freezeControlsWrapper(0);
break;
}
}
}
}
credits to se7