etqw-sdk/base/guis/game/limbo/tabpages/admin.include

854 lines
31 KiB
Plaintext
Raw Normal View History

2008-05-29 00:00:00 +00:00
#define ADM_PLAYERS 1
#define ADM_SERVER 2
#define IN_GAME_BOTS
$template _admin_check_init( cvar, CheckedCommand, UncheckedCommand )
properties {
float activating = false;
}
events {
onActivate {
activating = true;
checked = toFloat( sdnet.queryServerInfo( FS_CURRENT, -1, #cvar, "0" ) );
activating = false;
}
onPropertyChanged "player.serverInfoChanged" {
activating = true;
checked = toFloat( sdnet.queryServerInfo( FS_CURRENT, -1, #cvar, "0" ) );
activating = false;
}
onNamedEvent "checkChanged" {
if ( activating ) {
return;
}
activating = true;
if ( checked ) {
gui.consoleCommand( CheckedCommand + _newline );
} else {
gui.consoleCommand( UncheckedCommand + _newline );
}
activating = false;
}
}
$endtemplate
$template _admin_check_init_not( cvar, CheckedCommand, UncheckedCommand )
properties {
float activating = false;
}
events {
onActivate {
activating = true;
checked = toFloat( sdnet.queryServerInfo( FS_CURRENT, -1, #cvar, "0" ) ) == 0;
activating = false;
}
onPropertyChanged "player.serverInfoChanged" {
activating = true;
checked = toFloat( sdnet.queryServerInfo( FS_CURRENT, -1, #cvar, "0" ) ) == 0;
activating = false;
}
onNamedEvent "checkChanged" {
if ( activating ) {
return;
}
activating = true;
if ( checked ) {
gui.consoleCommand( CheckedCommand + _newline );
} else {
gui.consoleCommand( UncheckedCommand + _newline );
}
activating = false;
}
}
$endtemplate
$template _admin_check_synced( cvar, CheckedCommand, UncheckedCommand )
properties {
float activating = false;
}
events {
onActivate {
activating = true;
checked = gui.getCVarBool( #cvar );
activating = false;
}
onCVarChanged #cvar {
activating = true;
checked = gui.getCVarBool( #cvar );
activating = false;
}
onNamedEvent "checkChanged" {
if ( activating ) {
return;
}
activating = true;
if ( checked ) {
gui.consoleCommand( CheckedCommand + _newline );
} else {
gui.consoleCommand( UncheckedCommand + _newline );
}
activating = false;
}
}
$endtemplate
_tab_page( Admin, localize( "guis/limbo/admin" ), gameInfo, GI_ADMIN, _to_right_of( tabpVote ), 0 )
_label_literal( CurrentUserGroup, localizeArgs( "guis/admin/currentgroup", admin.userGroup ), $evalfloat( PADDING * 2 ), PADDING, _fill_to_right_of( tabpAdminContent ), 12, COLOR_WHITE )
properties {
vec2 textAlignment = TA_LEFT, TA_VCENTER;
}
_end_label
_label_localized( CurrentCommandStatus, localize( "blank" ), _right( tabpAdminContent ), PADDING, 100, 12, COLOR_WHITE )
properties {
vec2 textAlignment = TA_RIGHT, TA_VCENTER;
}
events {
onPropertyChanged "admin.commandStateTime" {
if( admin.commandState == CS_NOCOMMAND ) {
localizedText = localize( "blank" );
return;
}
if( admin.commandState == CS_SUCCESS ) {
localizedText = localize( "guis/admin/commandsuccess" );
timeline.default.resetTime( 0 );
timeline.default.active = true;
gui.playSound( "accept" );
return;
}
if( admin.commandState == CS_FAILED ) {
localizedText = localize( "guis/admin/commandfailure" );
timeline.default.resetTime( 0 );
timeline.default.active = true;
gui.playSound( "interaction" );
return;
}
}
}
timeline {
onTime 0 {
foreColor.a = transition( 1, 0, 5000, "0.2,1" );
}
}
_end_label
windowDef btnAdminLogin {
properties {
rect rect = PADDING, _bottom( tabpAdminContent ), _fill_to_right_of( tabpAdminContent ), $evalfloat( BUTTON_HEIGHT * 2 );
handle localizedText = localize( "guis/admin/login" );
color gradColor = COLOR_BLACK;
color foreColor = COLOR_TEXT;
float allowEvents = admin.isSuperUser == false && admin.canLogin == true;
}
_fadable
events {
onPropertyChanged "allowEvents" {
if( allowEvents ) {
foreColor.a = 1;
} else {
foreColor.a = 0.25;
}
}
onKeyDown "mouse1" {
gui.playSound( "system/button/click" );
_show_input( AdminLogin )
}
onCreate {
gradColor.a = 0;
}
onPreDraw {
drawCachedMaterial( gui.wndFillMaterial, absoluteRect, COLOR_RESPAWN_FILL );
drawCachedMaterial( gui.btnGradMaterial, absoluteRect, gradColor );
drawCachedMaterial( gui.wndLineMaterial, absoluteRect, COLOR_RESPAWN_LINE );
drawLocalizedText( localizedText, absoluteRect, foreColor, 12, DTF_CENTER | DTF_VCENTER | DTF_SINGLELINE );
gui.scriptPushFloat( false );
}
onMouseEnter {
gradColor = transition( gradColor, COLOR_ACTIVE_RESPAWN_FILL, ACTIVATE_TRANSITION_TIME );
foreColor.a = transition( foreColor.a, 1, ACTIVATE_TRANSITION_TIME );
gui.playSound( "boop" );
}
onMouseExit {
gradColor = transition( gradColor, COLOR_RESPAWN_FILL, ACTIVATE_TRANSITION_TIME );
foreColor.a = transition( foreColor.a, 0.75, ACTIVATE_TRANSITION_TIME );
}
}
_end_button
_tab_container( Admin, ADM_PLAYERS, PADDING, _to_bottom_of( lblCurrentUserGroup ) + 3, _fill_to_right_of( tabpAdminContent ), _fill_to_top_of( btnAdminLogin ) )
_tab_page( Admin_Players, localize( "guis/admin/players" ), Admin, ADM_PLAYERS, 2, 0 )
windowDef lytAdmin_Players {
type layoutVertical;
properties {
float flags = VLF_DRAW_REVERSED;
rect rect = 0, 0, gui.tabpAdmin_PlayersContent.rect.w, gui.tabpAdmin_PlayersContent.rect.h;
}
windowDef lytAdmin_PlayerH {
type layoutStatic;
properties {
vec4 margins = 0, 0, 0, 0;
rect rect = 0, 0, gui.lytAdmin_Players.rect.w - ( $evalfloat( 2 * PADDING ) + 3 ), $evalfloat( BUTTON_HEIGHT * 11 );
}
_list( Players, 0, 0, gui.lytAdmin_PlayerH.rect.w * 0.65, gui.lytAdmin_PlayerH.rect.h )
properties {
float fontSize = 12;
float flags = immediate( flags ) | LF_COLUMN_SORT | LF_NO_NULL_SELECTION | LF_SHOW_HEADINGS & ~LF_AUTO_SCROLL_TO_SELECTION;
float columnFontSize = 12;
string selectedPlayerName = "";
wstring lastSelection;
wstring toolTipText = localizeArgs( "guis/admin/rightclicktoadmin" );
vec2 selection;
}
_list_draw_column_sort( "default" )
events {
onCreate {
insertColumn( toWStr( "<loc = 'guis/mainmenu/player'><width = 75%><flags customdraw>" ), 0, 0 );
insertColumn( toWStr( "<loc = 'guis/admin/group'><width = 25%><flags customdraw>" ), 0, 1 );
}
onSelectItem {
if ( currentSelection >= 0 && currentSelection < numItems ) {
selectedPlayerName = toStr( getItemText( currentSelection, 0 ) );
}
else {
selectedPlayerName = "";
}
}
onKeyDown "mouse2" {
selection = getItemAtPoint( gui.cursorPos.x, gui.cursorPos.y );
currentSelection = selection.x;
if( currentSelection != -1 ) {
gui.mnuAdmin_PlayerCommands.postNamedEvent( "showMenu" );
}
}
}
timeline {
onTime 1000 {
if( isVisible() ) {
lastSelection = toWStr( selectedPlayerName );
storeVisualState();
fillFromEnumerator( "playerAdminList" );
currentSelection = findItem( lastSelection, 0 );
restoreVisualState();
}
timeline.default.resetTime( 0 );
}
}
_end_list
windowDef lytPlayers_MoveToGroup {
type layoutVertical;
properties {
rect rect = _to_right_of( lstPlayers ) + 3, 0, ( gui.lytAdmin_PlayerH.rect.w * 0.35 ) - 3, gui.lytAdmin_PlayerH.rect.h;
vec4 margins = 0, 0, 0, 0;
}
_list( UserGroup, 0, 0, 100, gui.lytPlayers_MoveToGroup.rect.h - ( $evalfloat( 4 * PADDING ) + gui.lytPlayers_MoveToGroup.spacing.y ) )
properties {
float flags = immediate( flags ) | LF_COLUMN_SORT | LF_SHOW_HEADINGS | LF_NO_NULL_SELECTION;
string selectedGroupName = "";
}
_list_draw_column_sort( "default" )
events {
onCreate {
insertColumn( toWStr( "<loc = 'guis/admin/usergroups'><width = 100%><flags customdraw>" ), 0, 1 );
}
onSelectItem {
selectedGroupName = toStr( getItemText( currentSelection, 0 ) );
}
onDoubleClick "mouse1" {
gui.btnPlayers_MoveToGroup.postNamedEvent( "onAction" );
}
}
timeline {
onTime 1000 {
if( visible ) {
storeVisualState();
fillFromEnumerator( "userGroupList" );
currentSelection = findItem( toWStr( selectedGroupName ), 0 );
restoreVisualState();
}
timeline.default.resetTime( 0 );
}
}
_end_list
// ==============================================================================
// Move to User Group
// ==============================================================================
_button( Players_MoveToGroup, 0, 0, BUTTON_WIDTH, BUTTON_HEIGHT )
properties {
handle localizedText = localize( "guis/admin/movetogroup" );
float allowAction = gui.lstPlayers.currentSelection != -1 && gui.lstUserGroup.currentSelection != -1;
}
_button_disable_if( "allowAction", allowAction == false )
_button_action(
gui.consoleCommand( "admin changeUserGroup " + _quote + gui.lstPlayers.selectedPlayerName + _quote + " " + _quote + gui.lstUserGroup.selectedGroupName + _quote + _newline );
gui.lstPlayers.timeline.default.resetTime( 1000 );
)
_end_button
}
}
_group_box( BotCommands, 0, 0, _fill_to_right_of( tabpAdmin_PlayersContent ), $evalfloat( ( BUTTON_HEIGHT ) * 11 + PADDING + 4 ) )
properties {
float visible = admin.canAddBot;
}
windowDef lytPlayComp {
type layoutVertical;
properties {
float flags = VLF_DRAW_REVERSED | OF_FIXED_LAYOUT;
float visible = admin.canAdjustBots;
vec4 margins = 0, 0, 0, 0;
rect rect = PADDING, _to_bottom_of( lytAddBots ) + 3, 300, 100;
}
#include <guis/common/bots.include>
}
windowDef lytAddBots {
type layoutStatic;
properties {
rect rect = 0, PADDING, 100, BUTTON_HEIGHT;
}
_dropdown( PlayCompBotTeam, localize( "blank" ), $evalfloat( 8 + PADDING ), 0, 0, 150, $evalfloat( BUTTON_HEIGHT * 6 ), "right" )
properties {
float index;
float flags = immediate( flags ) | WF_AUTO_SIZE_HEIGHT;
float initialized = false;
}
events {
onNamedEvent "onShow" {
if( gui.lblPlayCompBotTeamValue.allowEvents ) {
gui.lblPlayCompBotTeamValue.colorMultiplier.a = 1;
} else {
gui.lblPlayCompBotTeamValue.colorMultiplier.a = 0.5;
}
}
onPropertyChanged "gui.lblPlayCompBotTeamValue.allowEvents" {
if( gui.lblPlayCompBotTeamValue.allowEvents ) {
gui.lblPlayCompBotTeamValue.colorMultiplier.a = 1;
} else {
gui.lblPlayCompBotTeamValue.colorMultiplier.a = 0.5;
}
}
onCreate {
gui.lblPlayCompBotTeamValue.allowEvents = gui.btnPlayComp_AddBot.allowAction;
gui.icoPlayCompBotTeam.allowEvents = gui.btnPlayComp_AddBot.allowAction;
insertColumn( toWStr( "<width = 100%><flags customdraw>" ), 0, 0 ); // name
insertColumn( gui.blankWStr, 0, 1 ); // type
index = insertItem( toWStr( "<loc = 'game/gdf'>" ), -1, 0 );
setItemText( toWStr( "gdf" ), index, 1 );
index = insertItem( toWStr( "<loc = 'game/strogg'>" ), -1, 0 );
setItemText( toWStr( "strogg" ), index, 1 );
index = insertItem( toWStr( "<loc = 'guis/mainmenu/random'>" ), -1, 0 );
setItemText( gui.blankWStr, index, 1 );
currentSelection = immediate( index );
}
}
_end_dropdown
//_button( PlayComp_AddBot, _to_right_of( lytPlayCompBotTeam) + 3, 0, BUTTON_WIDTH, BUTTON_HEIGHT )
_button( PlayComp_AddBot, _to_right_of( lblPlayCompBotTeamValue ) + 24, 0, 138, BUTTON_HEIGHT )
_button_action( gui.consoleCommand( "admin addbot " + toStr( _get_current_list_text( PlayCompBotTeam, 1 ) ) +_newline ); )
_button_disable_if( "allowAction", allowAction != true )
properties {
handle localizedText = localize( "guis/mainmenu/addbot" );
float allowAction = gui.getCVarInt( "bot_minClients" ) == -1;
}
events {
onCVarChanged "bot_minClients" {
allowAction = gui.getCVarInt( "bot_minClients" ) == -1;
}
}
_end_button
}
_end_group_box
}
events {
onNamedEvent "onMuteLocal" {
gui.mutePlayer( gui.lstPlayers.selectedPlayerName, true );
}
onNamedEvent "onUnmuteLocal" {
gui.mutePlayer( gui.lstPlayers.selectedPlayerName, false );
}
onNamedEvent "onMuteQuickChat" {
gui.mutePlayerQuickChat( gui.lstPlayers.selectedPlayerName, true );
}
onNamedEvent "onUnmuteQuickchat" {
gui.mutePlayerQuickChat( gui.lstPlayers.selectedPlayerName, false );
}
onNamedEvent "onMakeSpec" {
gui.consoleCommand( "admin setTeam " + _quote + gui.lstPlayers.selectedPlayerName + _quote + " spectator" + _newline );
}
onNamedEvent "onMakeGDF" {
gui.consoleCommand( "admin setTeam " + _quote + gui.lstPlayers.selectedPlayerName + _quote + " gdf" + _newline );
}
onNamedEvent "onMakeStrogg" {
gui.consoleCommand( "admin setTeam " + _quote + gui.lstPlayers.selectedPlayerName + _quote + " strogg" + _newline );
}
onNamedEvent "onKick" {
gui.consoleCommand( "admin kick " + _quote + gui.lstPlayers.selectedPlayerName + _quote + _newline );
gui.lstPlayers.timeline.default.resetTime( 1000 );
}
onNamedEvent "onBan" {
gui.consoleCommand( "admin ban " + _quote + gui.lstPlayers.selectedPlayerName + _quote + _newline );
gui.lstPlayers.timeline.default.resetTime( 1000 );
}
onNamedEvent "onWarn" {
gui.consoleCommand( "admin warn " + _quote + gui.lstPlayers.selectedPlayerName + _quote + _newline );
}
onNamedEvent "onPlayerMute" {
gui.consoleCommand( "admin playerMute " + _quote + gui.lstPlayers.selectedPlayerName + _quote + " on" + _newline );
}
onNamedEvent "onPlayerUnmute" {
gui.consoleCommand( "admin playerMute " + _quote + gui.lstPlayers.selectedPlayerName + _quote + " off" + _newline );
}
onNamedEvent "onPlayerVoiPMute" {
gui.consoleCommand( "admin playerVOIPMute " + _quote + gui.lstPlayers.selectedPlayerName + _quote + " on" + _newline );
}
onNamedEvent "onPlayerVoiPUnmute" {
gui.consoleCommand( "admin playerVOIPMute " + _quote + gui.lstPlayers.selectedPlayerName + _quote + " off" + _newline );
}
}
_end_tab_page
_tab_page( Admin_Server, localize( "guis/admin/server" ), Admin, ADM_SERVER, _to_right_of( tabpAdmin_Players ), 0 )
_list( Configs, PADDING, _to_bottom_of( grpAdmin_ServerCommands ) + PADDING, gui.grpAdmin_ServerCommands.rect.w, $evalfloat( 16 * 5 ) )
properties {
float fontSize = 12;
float flags = immediate( flags ) | LF_SHOW_HEADINGS | LF_NO_NULL_SELECTION;
float columnFontSize = 12;
string selectedConfigName = "";
float lastSelection;
}
events {
onCreate {
insertColumn( toWStr( "<loc = 'guis/admin/configs'><width = 100%><flags customdraw>" ), 0, 0 );// configs
}
onSelectItem {
if ( currentSelection != -1 ) {
selectedConfigName = toStr( getItemText( currentSelection, 0 ) );
} else {
selectedConfigName = "";
}
}
}
timeline {
onTime 1000 {
if( visible ) {
storeVisualState();
lastSelection = findItem( toWStr( selectedConfigName ), 0 );
fillFromEnumerator( "serverConfigList" );
currentSelection = immediate( lastSelection );
restoreVisualState();
}
timeline.default.resetTime( 0 );
}
}
_end_list
// ==============================================================================
// Exec Config
// ==============================================================================
_button( Server_ExecConfig, _to_right_of( lstConfigs ) - rect.w, _to_bottom_of( lstConfigs ) + 3, BUTTON_WIDTH, BUTTON_HEIGHT )
properties {
handle localizedText = localize( "guis/admin/execconfig" );
float allowAction = gui.lstConfigs.currentSelection != -1 && admin.canExecConfig;
}
_button_disable_if( "allowAction", allowAction == false )
_button_action(
gui.consoleCommand( "admin execConfig " + _quote + gui.lstConfigs.selectedConfigName +_quote + _newline );
)
events {
onQueryTooltip {
toolTipText = localizeArgs( "guis/mainmenu/tooltips/admin/execconfig" );
}
}
_end_button
_group_box_vertical( Admin_ServerCommands, PADDING, PADDING, 200, $evalfloat( BUTTON_HEIGHT * 14 ) )
properties {
float flags = VLF_DRAW_REVERSED;
vec2 spacing = 3, 3;
}
_edit( TimeLimit, 100, 0, 100, BUTTON_HEIGHT )
_draw_left_edit_label( localize( "guis/mainmenu/timelimit" ), COLOR_TEXT, 100 )
properties {
float maxTextLength = 6;
float flags = immediate( flags ) | EF_INTEGERS_ONLY | EF_ALLOW_DECIMAL;
float allowEvents = admin.canSetTimelimit;
}
events {
onNamedEvent "onShow" {
editText = sdnet.queryServerInfo( FS_CURRENT, -1, "si_timeLimit", "20" );
}
onPropertyChanged "player.serverInfoChanged" {
editText = sdnet.queryServerInfo( FS_CURRENT, -1, "si_timeLimit", "20" );
}
onGainFocus {
flags = immediate( flags ) | WF_CAPTURE_KEYS;
}
onLoseFocus {
flags = immediate( flags ) & ~WF_CAPTURE_KEYS;
}
onAccept {
if( toFloat( editText ) > 100 ) {
editText = "100";
}
gui.consoleCommand( "admin setTimeLimit " + editText + _newline );
//gui.playSound( "system/button/click" );
gui.focusedWindow = "";
}
onCancel {
gui.focusedWindow = "";
}
}
_end_edit
// ==============================================================================
// Character Advancement
// ==============================================================================
_check( Server_CharacterAdvancement, localize( "guis/admin/disableproficiency" ), 0, 0, BUTTON_WIDTH )
_admin_check_init( si_noProficiency, "admin disableProficiency on", "admin disableProficiency off" )
_button_disable_if( "admin.canDisableProficiency", admin.canDisableProficiency == false )
events {
onQueryTooltip {
toolTipText = localizeArgs( "guis/mainmenu/tooltips/admin/disableprof" );
}
}
_end_check
// ==============================================================================
// Team Damage
// ==============================================================================
_check( Server_DisableTeamDamage, localize( "guis/admin/teamdamage" ), 0, 0, BUTTON_WIDTH )
_admin_check_init( si_teamDamage, "admin setTeamDamage on", "admin setTeamDamage off" )
_button_disable_if( "admin.canSetTeamDamage", admin.canSetTeamDamage == false )
events {
onQueryTooltip {
toolTipText = localizeArgs( "guis/mainmenu/tooltips/admin/teamdamage" );
}
}
_end_check
// ==============================================================================
// Force Team Balance
// ==============================================================================
_check( Server_ForceTeamBalance, localize( "guis/admin/forceteambalance" ), 0, 0, BUTTON_WIDTH )
_admin_check_init( si_teamForceBalance, "admin setTeamBalance on", "admin setTeamBalance off" )
_button_disable_if( "admin.canSetTeamBalance", admin.canSetTeamBalance == false )
events {
onQueryTooltip {
toolTipText = localizeArgs( "guis/mainmenu/tooltips/admin/teambalance" );
}
}
_end_check
// ==============================================================================
// Global Text Mute
// ==============================================================================
_check( Server_MuteChatText, localize( "guis/admin/muteglobalchat" ), 0, 0, BUTTON_WIDTH )
_admin_check_init( si_disableGlobalChat, "admin globalMute on", "admin globalMute off" )
_button_disable_if( "admin.canGlobalMute", admin.canGlobalMute == false )
events {
onQueryTooltip {
toolTipText = localizeArgs( "guis/mainmenu/tooltips/admin/globaltextmute" );
}
}
_end_check
// ==============================================================================
// Mute Global voice
// ==============================================================================
_check( Server_MuteGlobalVoice, localize( "guis/admin/muteglobalvoice" ), 0, 0, BUTTON_WIDTH )
_admin_check_synced( g_disableGlobalAudio, "admin globalVOIPMute on", "admin globalVOIPMute off" )
_button_disable_if( "admin.canGlobalMuteVoip", admin.canGlobalMuteVoip == false )
events {
onQueryTooltip {
toolTipText = localizeArgs( "guis/admin/muteglobalvoice" );
}
}
_end_check
// ==============================================================================
// Restart Map
// ==============================================================================
_button( Server_RestartMap, 0, 0, BUTTON_WIDTH, BUTTON_HEIGHT )
properties {
handle localizedText = localize( "guis/admin/restartmap" );
float allowAction = admin.canRestartMap;
}
_button_disable_if( "allowAction", allowAction == false )
_button_action(
gui.consoleCommand( "admin restartMap" + _newline );
)
events {
onQueryTooltip {
toolTipText = localizeArgs( "guis/mainmenu/tooltips/admin/restartmap" );
}
}
_end_button
// ==============================================================================
// Restart Campaign
// ==============================================================================
_button( Server_RestartCampaign, 0, 0, BUTTON_WIDTH, BUTTON_HEIGHT )
properties {
handle localizedText = localize( "guis/admin/restartcampaign" );
float allowAction = admin.canRestartCampaign;
}
_button_disable_if( "allowAction", allowAction == false )
_button_action(
gui.consoleCommand( "admin restartCampaign" + _newline );
)
events {
onQueryTooltip {
toolTipText = localizeArgs( "guis/mainmenu/tooltips/admin/restartcampaign" );
}
}
_end_button
// ==============================================================================
// Start Match
// ==============================================================================
_button( Server_StartMatch, 0, 0, BUTTON_WIDTH, BUTTON_HEIGHT )
properties {
handle localizedText = localize( "guis/admin/startmatch" );
float allowAction = admin.canStartMatch;
}
_button_disable_if( "allowAction", allowAction == false )
_button_action(
gui.consoleCommand( "admin startMatch" + _newline );
)
events {
onQueryTooltip {
toolTipText = localizeArgs( "guis/mainmenu/tooltips/admin/startmatch" );
}
}
_end_button
// ==============================================================================
// Kick all bots
// ==============================================================================
_button( Server_KickAllBots, 0, 0, BUTTON_WIDTH, BUTTON_HEIGHT )
properties {
handle localizedText = localize( "guis/admin/kickallbots" );
float allowAction = admin.canKick;
}
_button_disable_if( "allowAction", allowAction == false )
_button_action(
if( admin.isSuperUser ) {
gui.setCVarInt( "bot_minClients", -1 );
}
gui.consoleCommand( "admin kickAllBots" + _newline );
)
events {
onQueryTooltip {
toolTipText = localizeArgs( "guis/mainmenu/tooltips/admin/kickbots" );
}
}
_end_button
// ==============================================================================
// Shuffle XP
// ==============================================================================
_button( Server_ShuffleXP, 0, 0, BUTTON_WIDTH, BUTTON_HEIGHT )
properties {
handle localizedText = localize( "guis/admin/shufflexp" );
float allowAction = admin.canShuffleTeams;
}
_button_disable_if( "allowAction", allowAction == false )
_button_action(
gui.consoleCommand( "admin shuffleTeams xp" + _newline );
)
events {
onQueryTooltip {
toolTipText = localizeArgs( "guis/mainmenu/tooltips/admin/shufflexp" );
}
}
_end_button
// ==============================================================================
// Shuffle Random
// ==============================================================================
_button( Server_ShuffleRandom, 0, 0, BUTTON_WIDTH, BUTTON_HEIGHT )
properties {
handle localizedText = localize( "guis/admin/shufflerandom" );
float allowAction = admin.canShuffleTeams;
}
_button_disable_if( "allowAction", allowAction == false )
_button_action(
gui.consoleCommand( "admin shuffleTeams random" + _newline );
)
events {
onQueryTooltip {
toolTipText = localizeArgs( "guis/mainmenu/tooltips/admin/shufflerand" );
}
}
_end_button
_end_group_box_vertical
// ==============================================================================
// Change Map
// ==============================================================================
_list( Maps, _to_right_of( grpAdmin_ServerCommands ) + 3, _to_bottom_of( lblMapSourceValue ) + 6, gui.lblMapSourceValue.absoluteRect.w, $evalfloat( BUTTON_HEIGHT * 7 ) )
_list_draw_column_sort( "default" )
properties {
float flags = immediate( flags ) | LF_COLUMN_SORT | LF_NO_NULL_SELECTION;
}
events {
onCreate {
insertColumn( toWStr( "<width = 100%><flags customdraw>" ), 0, 0 ); //Name
insertColumn( gui.blankWStr, 0, 1 ); // DefName
insertColumn( gui.blankWStr, 0, 2 ); // Mat
}
}
_end_list
_dropdown( MapSource, localize( "guis/mainmenu/gametype" ), _to_right_of( grpAdmin_ServerCommands ) + 3, PADDING, _fill_to_right_of( tabpAdmin_ServerContent ), 0, $evalfloat( BUTTON_HEIGHT * 4 ), "below" )
properties {
float flags = immediate( flags ) | WF_AUTO_SIZE_HEIGHT;
float index;
}
events {
onCreate {
insertColumn( toWStr( "<width = 100%>" ), rect.w, 0 ); // Pretty Name
insertColumn( gui.blankWStr, 0, 1 ); // Value
insertColumn( gui.blankWStr, 0, 2 ); // Maplist
insertColumn( gui.blankWStr, 0, 3 ); // Action
// Campaign
index = insertItem( toWStr( "<loc = 'game/gametype/campaign'>" ), 0, 0 );
setItemText( toWStr( "sdGameRulesCampaign" ), index, 1 );
setItemText( toWStr( "campaignList" ), index, 2 );
setItemText( toWStr( "setCampaign" ), index, 3 );
// Objective
index = insertItem( toWStr( "<loc = 'game/gametype/objective'>" ), 1, 0 );
setItemText( toWStr( "sdGameRulesObjective" ), index, 1 );
setItemText( toWStr( "mapList" ), index, 2 );
setItemText( toWStr( "setObjectiveMap" ), index, 3 );
// Stopwatch
index = insertItem( toWStr( "<loc = 'game/gametype/stopwatch'>" ), 2, 0 );
setItemText( toWStr( "sdGameRulesStopWatch" ), index, 1 );
setItemText( toWStr( "mapList" ), index, 2 );
setItemText( toWStr( "setStopWatchMap" ), index, 3 );
}
onNamedEvent "onShow" {
index = findItem( toWStr( gui.getCVar( "si_rules" ) ), 1 );
if( index != -1 ) {
currentSelection = immediate( index );
} else {
currentSelection = 0;
}
postOptionalNamedEvent( "onSelected" );
}
onNamedEvent "onSelected" {
callSuper();
if( currentSelection < 0 ) {
return;
}
gui.lstMaps.fillFromEnumerator( toStr( getItemText( currentSelection, 2 ) ) );
gui.lstMaps.activeColumn = 0;
gui.lstMaps.sort();
gui.lstMaps.currentSelection = 0;
gui.btnServer_ChangeMap.postNamedEvent( "OnSourceChanged" );
}
}
_end_dropdown
_group_box( MapPreviewImage, _right( tabpAdmin_ServerContent ), _to_bottom_of( btnServer_ChangeMap ) + 3, 128, rect.width * 1 / 1.777 )
properties {
rect previewRect = absoluteRect.x + PADDING, absoluteRect.y + PADDING, absoluteRect.width - $evalfloat( 2 * PADDING ), absoluteRect.height - $evalfloat( 2 * PADDING );
handle previewMaterial = floatToHandle( -1 );
}
events {
onPostDraw {
if( isValidHandle( previewMaterial ) ) {
drawCachedMaterial( previewMaterial, previewRect, COLOR_WHITE );
}
}
onPropertyChanged "gui.lstMaps.currentSelection" {
if( gui.lstMaps.currentSelection < 0 || gui.lstMapSource.currentSelection < 0 ) {
previewMaterial = floatToHandle( -1 );
return;
}
if( wcompare( _get_current_list_text( MapSource, 1 ), toWStr( "sdGameRulesCampaign" ) ) ) {
rect.height = rect.width * 1.0f / ( 1.3333 );
previewMaterial = gui.campaignPreview;
gui.uploadLevelShot( toStr( _get_current_list_text( Maps, 2 ) ), CAMPAIGNSHOT );
} else {
rect.height = rect.width * 1.0f / ( 1.7777 );
previewMaterial = gui.levelPreview;
gui.uploadLevelShot( toStr( _get_current_list_text( Maps, 2 ) ), LEVELSHOT );
}
}
}
_end_group_box
_button( Server_ChangeMap, gui.lstMaps.rect.x + gui.lstMaps.rect.w - rect.w, _to_bottom_of( lstMaps ) + 3, gui.grpMapPreviewImage.rect.w, BUTTON_HEIGHT )
properties {
handle localizedText = localize( "guis/admin/changemap" );
float allowAction = gui.lstMaps.currentSelection != -1 && admin.canChangeMap;
string action = "changeMap";
}
_button_disable_if( "allowAction", allowAction == false )
_button_action(
gui.consoleCommand( "admin " + action + " " + _quote + toStr( _get_current_list_text( Maps, 1 ) ) + _quote + _newline );
)
events {
onNamedEvent "OnSourceChanged" {
if( gui.lstMapSource.numItems == 0 ) {
return;
}
if( wcompare( _get_current_list_text( MapSource, 2 ), toWStr( "campaignList" ) ) ) {
allowAction = gui.lstMaps.currentSelection != -1 && admin.canChangeCampaign;
localizedText = localize( "guis/admin/changecampaign" );
} else {
allowAction = gui.lstMaps.currentSelection != -1 && admin.canChangeMap;
localizedText = localize( "guis/admin/changemap" );
}
action = toStr( _get_current_list_text( MapSource, 3 ) );
}
onQueryTooltip {
toolTipText = localizeArgs( "guis/mainmenu/tooltips/admin/changemap" );
}
}
_end_button
_end_tab_page
_end_tab_container
_end_tab_page_content
properties {
float visible = player.serverIsRepeater == false;
}
_end_tab_page_button