*E@ k.cDiRK ;Q None DebugLogCreateControlSetTextConsoleCommand BDBMapVoteMapVoteLA13vvCoreSystem SetValueUWindowGetPureMapname GetValueSetFontClientMessage FixPrefixBroadcastMessage SetTextColorEngineMakeSelectedVisibleSetNumericOnlyClearSetSelectedItemCloseCreated MapVoteLAvv DeSelectAllOtherMapListBoxItemsFindPlayerIndex SelectMapKeyDownPaint CloseUWindowLoadMapCycleListNotify LoadMapTypes SpectatorAppendAddItemRemovePlayerNameUpdateKickVoteResultsTickWRI ShowWindow DestroyWRIUpdateMapVoteResultsgetSelectedItemUpdatePlayerVotedCleanUpPlayerIDsFocusStartWindowSendReportText FindIndex MatchFilter FocusWindow SetupWindowCompareBrowseWebPageGetMapSequenceExecuteSetting SetupGameMapMapVoteHistory_INISave ItemHeightGetMapPriority isMapInList AddNewPlayer SelectPlayer DrawItemSetMOTD TallyVotes ListClassUpdateOpenWRI GetPrefix GetRandomMapGetMapListNumberAssaultDoubleClickItemOpenVoteWindowAddPageGetServerConfigGetWinningTeamTimer OpenWindowSetKeyLoadExistingKeysFailureSuccess ServerTravel RemovePrefixLoadingSwapUMenu KickPlayer PlayerPawnQuerySetHTMLRemoveMapByIndexAddPlayerNameSetInfoServerAddressGetPlayerScoreSetMapSequence GetAccVote IsCrashedMapbAlwaysRelevantAddMap!CreateMapnameIncludingListnumber getListNumCloseAllVoteWindows MapReport CloseWindowStartActorMutator SetPlayCountOpenIfNecessaryGetPlayerName AnswereQGetQ WindowClassMapVoteHistory4MapVoteHistory3MapVoteHistory2BeginRequestedMapVoteHistory1 MapListTemp RunRport formating HotKeyBoundExecuteMessage CustConfigSetMapTournamentPlayer List2FilterProcessMenuKeyHandleServerEmpty CheckForTie TeamColor TimeMessagesorting ProcessDataBrowseCurrentURI SubmitVoteSubmitKickVote AddKickIPWinTop WinWidth WinHeightWinLeft WindowTitleSaveMapVoteConfig AddKickName CheckKickIPCheckKickPlayerOpenWelcomeWindow SaveAccVotesColor SortMapList ClientClassRemoveOldestMap SetEditablePostBeginPlay PreBeginPlayLoadMapListConfigSaveMapListConfigGetRealMapnameUpdatePrefixes ResetAssault GetMapIndexHandleFailedMap SaveKeyBind AddMapNameStartMutatorsAndSettings ClearList MaxFloatEnableKickWindow RemoveMap GetPlayCount BeforePaintbShowWelcomeWindowBeginModeHandleEndGameFindRemoveTrigger BeginState SendReportFocusOtherWindowGetMostPlayedMapGetLeastPlayedMap RemoteRoleMutatorPostNetBeginPlay HideConsole NetPriority LifeSpan GetItemName SetHistoryLaunchUWindow SetMaxLengthMutate List4Filter List3Filter AddMutatorCloseActiveWindow List1FilterCustomGameConfigCreateRootWindowbList4ObeyRepeatLimitbList3ObeyRepeatLimitbList2ObeyRepeatLimitbList1ObeyRepeatLimitbFixCTFModificationsbLoadScreenShot MsgTimeOutEmptyServerLevelSwitchTimeMinsMapListIfNooneVotedbASbCTFbDOMbDM MutActConfigClearPlayerListClientPlaySound ResetGameASClassbUseExcludeFilterList4PriorityList3PriorityList2PriorityList1Priority MapVoteTitle List4Title List3Title List2Title List1TitlebSortWithPreFix MinMapCountMidGameVotePercentMapVoteHistoryType RepeatLimitScoreBoardDelay bAutoOpen KickPercent SetMultiLineVoteTimeLimit bKickVoteDestroyOnCloseAskQUMenuMapVoteListServerInfoWindowServerInfoLinkPlayerVoteListItemPlayerVoteListBoxPlainVScrollBar MVWelcomeWRIMVWelcomeWindowMVKeyBinderListBoxMVKeyBinderFrameWindowMVKeyBinderClientWindowMessageHelper MapVoteWRIMapVoteTabWindow MapVoteRIMapVoteReportMapVotePageControlMapVoteNavBarMapVoteListBoxMapVoteHistoryMapVoteClientWindowMapStatusListItemMapStatusListBoxKickStatusListItemKickStatusListBoxKeyBinderListItemEmptyServerLevelSwitch ConfigWindow AdminWindowAdminTabWindowGetMap Domination TeamGamePlusUpdateServerTimeout QueryText FailureText LinkClass NumTriesTextAreaClassBrowseHTTPReceivedData UBrowser HTTPErrorIpDrv DesiredWidthPort bByParentIdealPlayerCount WebServerURIDataChild TimeSecondsOwner nextPawn MaxValue MinValueGamePageNextBest Sentinel bBottomGrowBottomClientWindowUBrowserHTTPClientUBrowserMainWindowUBrowserUpdateServerTextAreaTopClientWindow ServerPort ErrorCodePart VSplitter InfoWindowServerAddressOldPlayerName PageControl bGotMOTDbHadInitialQueryMOTD UpdateWindow CloseButton MainWindow GameType MapTitlebAdmin StartTimeTeamsbFoundScore TeamInfo MaxTeamsPickups WeaponPickup bDontRestartNextMapmyList LoopCount PlayerCount TeamIndexAlias ClassStringBeltSndTeamID PlayerName NumPlayers GameClassItemUMenuRaisedButtonUMenuLabelControlUMenuDialogClientWindowUMenuPageControlM RealKeyNameSelectedButton bPolling bInitializedPages MutatorList FirstMapTestMap MapAuthorBotpackDeathMatchPlus ThumbHeightCTFGameLFontsLastManStanding ThumbStartTeamSayMessagePlusSayMessagePlusStringMessagePlusRedSayMessagePlusDeathMessagePlusCriticalStringPlusReal Attacker SavedTime NumDefensesCurrentDefender bDefenseSet bTiePartOne GameCode bAssaultWonrank DefenderIdStatusBarTextFixedAreaClass bSelected ClientAreaDesiredHeight TextAreaVertSB SplitPosaPawnRoot bCreatedRootMouseXMouseY MutateStringPrevtriesEventInstigatorbTyping bShowConsolebLeaveOnscreenbQuickKeyEnable ScreenshotNetMode PawnListbAcceptsFocusIndex EditBoxWidthItems DownSound BlackTexture WhiteTextureNextURL ParentWindowAlign bDisabledFirstChildWindowLastChildWindowPrevSiblingWindowtesten OwnerWindowPPPMsgaMIPbWindowVisible TheWindow TicksPassedbDestroyRequestedOther DeltaTimePrefixMapName ActorClassMapVoteMutator MapListNum MapList1 MapList2 MapList3 MapList4GetPlayerNetworkAddress gPlayerCountNextSwitchCountdownMapVoteResultsKickVoteResults GameTypes OtherClass bGameEndedFindChildWindow bUseMapListpos DrawUpBevel bAutoDetectbCheckOtherGameTieServerInfoURL MapInfoURL ReportText ClipTextDrawStretchedTexture CreateWindowSetAcceptsFocusMapPreFixOverRide PreFixSwap OtherPreFixHasStartWindowbEntryWindows BringToFront bDebugModebRemoveCrashedMapsbReloadMapsOnRequestOnly ActGameClassActGamePrefixSetSize MapListTypeGetPlayerOwnerUWindowListBoxItemUWindowListBoxbIgnoreRDoubleClickbIgnoreMDoubleClickUWindowWindowUWindowButton CustomGamesCustomGamesStateUWindowDialogControlPrefixDictionaryLastMapsCountLastMapListCountXUWindowCheckbox bUpdated blastCheckgAdminChechsumgPlayerChecksumgTitleChecksum bAdminDone LogoTexturebOpenWindowDispatchedbSetupWindowDelayDoneMyCountMyPlayerCount bHasVoted repMapsCountrepMapListCountXrepAdminChechsumTitleChecksumrepPlayerCountGetEntryLevelUWindowRootWindowNewPlayerName LifetimeMaps Location bIsPlayerMapList p_ReportText LocalMessagebHasStartWindowKeyBinderWindow bHotKeyBound GetNextIntTeamTheSoundString bEnabled SoundString dynSound DrawColorUWindowClientWindowUWindowComboControl MutatorsUWindowFramedWindow PrefixesClassesUWindowListControlbLMSbTDM UWindowListUWindowDialogClientWindowUWindowSmallButtonbShowWhoKicksWhoUWindowPageControlPagebEnableEmptyServerLevelSwitchUWindowPageWindowUWindowVSplitterUWindowScrollingDialogClientbUseMsgTimeoutUWindowHSliderControlUWindowEditControlUWindowVScrollbar MapPrefixWindowConsole TextColorDefaultSettings CurrentID bSizable BaseMutatorKeyExcludeFilter CrashedMapsAccName AccVotesTmpNextVirtualPrefixTmpNextRealPrefix PlayerIDList PlayerVotePlayerKickVoteMapStatusTextKickStatusText KickIPListKickPlayerList EndGameTime bMidGameVoteCurrentPlayerCountJoinTickCount MaxPriority TravelMap bAutoGame AutoGame TimeLeftScoreBoardTimeServerTravelTimeAutoGameClassCustomGameClassMapVoteHistoryClassbLevelSwitchPendingServerTravelStringbInitMapsLoadedbMapReloadRequested GamePackage bBunnyshitActualMapPrefixbIgnoreLDoubleClick VoterNum NoVoteCountmwriPID PlayerIndexaWRIValueBestPTextVoter MapIndexMapNum VoteCountLamerFilterMVWRItempShortIPAXCESLSdefaultPrefixseq MVReport ObjectCount MVHistory CustSettingEbSpecsAllowed bManualOpen CustStateZMVWWRIYbAddIfNotFoundWKeyNamej PlayerScoreiPlayerAccVotes ScriptTextWinningMapIndextbForceMapSwitchtopmapRankingPlayersThatVoted TieCount textlinePlayersLeftToVoteSB TempMapNameAMapBMapAMapPreBMapPreRG mapnameXlocked ReturnValueStaticSaveConfigDynamicLoadObjectSetPropertyText modFilterGetPropertyText CurrentMapKeyNo TempList LevelInfo GameInfoPlayerReplicationInfo PreFixChange FilteredMap ignoreCount bIsPureCTFInfo MapCycleListReplicationInfo LevelSummaryCanvasFontrandmap securityLevelActor ActualPrefix TestPrefixPawnPlayerSettingbIsDefaultSettingNetConnectionval1val2WindowListAuthorServerEmptyTimeMinsServerEmptyTimeMapVote SettingsSoundTextureTitleConsoleNewSeqLink NewPlayCountRole ReportTypeSeqNum PlayerID bChecked LastMapIndexMapLowestClassPackage p_ReportType p_MVReportSenderpc SelectedItemHistoryMaxMaps bSendResults Property TextBuffer PlayerItemObjectMapItem CapMapName ItemPointer FunctionH SearchTextWelcomeWindow cbLoadDM cbLoadLMS cbLoadTDM cbLoadAS cbLoadDOM cbLoadCTF cbAutoDetectcbCheckOtherGameTiecbReloadMapsOnRequestOnly cbCustGameRemoteSaveButtonReloadMapsButtonListCrashButtonClearCrashButtonsldVoteTimeLimitlblVoteTimeLimitsldKickPercentlblKickPercenttxtRepeatLimittxtMinMapCountsldMidGameVotePercentcboModetxtServerInfoURLtxtMapInfoURLcboMapVoteHistoryTypelblMidGameVotePercentlblGameTypeSectionlblMiscSectionlblOtherClasslblLimitsLabellblMapPreFixOverRidelblRepeatLimitlblMinMapCountlblAdvancedSectionlblServerInfoURLlblMapInfoURL lblASClass lblActGame lblActPrefix lblCustGamelblTemp cbUseMapList cbAutoOpen cbKickVotecbEntryWindowssldScoreBoardDelaylblScoreBoardDelaycbSortWithPreFix cbDebugModetxtList1TitletxtList2TitletxtList3TitletxtList4TitletxtMapVoteTitletxtList1PrioritytxtList2PrioritytxtList3PrioritytxtList4Priority txtASClasscbRemoveCrashedMapscbUseExcludeFiltergap CustString lblMenuKey cmdMenuKey OldHotKeysldMsgTimeOutlblMsgTimeOut sizefactorbSliderInitedcbUseMsgTimeoutState bSaveNeeded MapListBox1 MapListBox2 MapListBox3 MapListBox4 VoteButton InfoButtonPlayerListBoxKickVoteButton lstMapStatuslstKickStatuscbLoadScreenShotlblStatusTitles lblTitle1 lblTitle2 lblTitle3 lblTitle4 lblTitle lblMaptxt1 lblMaptxt2 lblMaptxt3 lblPriority1 lblPriority2 lblPriority3 lblPriority4 lblMapCounttxtFind SendButton txtMessagelblMode LastVoteTimeSelectionTime MapListwidthPlayerListwidth ListHeightbMapAlreadySetTextColorTitlesTextColorTitleLowSectionStartRightSectionStartq selListBoxlistNumStruct UnrealShare RealPreFix RealMapName StrProperty VirtualMap DictionaryvirtP1P2 TempText FilePathversionStructProperty p_URLStringClassPropertyp_ServerInfoURL p_MapInfoURLServerInfoButtonMapInfoButtonReportButton1ReportButton2 TipsButton AboutButtonStepCurrentMapName ByParent lstKeyList SaveButtonCloseRequestTime lblMessageKeyItemCommandStringObjectProperty MapWindowPrevSelectedMapPrevSelectedPlayerInfoServerAddressInfoServerPort InfoFilePathServerInfoFileFloatProperty BoolProperty IntProperty NewPrefix ByteProperty MapCountPPa? =$:eԝX=$:e              /ڙx/ڙx '-%nL}"#bb/ڙx@"sM@"sM@"sM@"sM@"sM@"sM@"sM@"sM@"sM@"sM/ڙx@"sM/ڙx Mߍ Mߍ Mߍ Mߍ Mߍ Mߍ Mߍ Mߍ/ڙx/ڙx/ڙx? ? t> Y{#U> Y{#Ut? ? ? t> Y{#U> Y{#Utt> Y{#U> Y{#Utt> Y{#Ut{#Uttt> Y{#Ut Mߍ Mߍ Mߍ> YTWs> YTWs> Y> Y Mߍ> Y Mߍ Mߍ Mߍ Mߍ Mߍ Mߍ Mߍ Mߍ Mߍ Mߍ> Y Mߍ Mߍ Mߍ Mߍtt> Y{#U> Y{#U> Y{#U> Y{#U Mߍ> Y{#U Mߍ> Y{#Ut Mߍ Mߍ Mߍ Mߍ Mߍ> Y> Y> YD> Y> Y> Y> Y> Y> Y{#U> Y> Y> Y> Y> Y> Y> Y> Y> Y> Y> Y> Y> Y> Y/ڙx/ڙx/ڙx> Y> Y> Y> Y/ڙx/ڙx/ڙx> Y> Y> YVVtt{#U> Yt{#U> Yt{#U Mߍ Mߍ MߍttԝX> Y{#Utt{#U> Y> Y> Y> Y{#Ut{#U> Y{#Ut{#Ut{#Ut> Y{#UԝX> Y{#U> Y{#U> Y{#U> Y{#U> Y{#U}"#}"#}"#}"#}"#tt{#Ut{#Uttt{#Ut{#Utttt{#Utttt{#U> Y> Yt{#Ut> Y{#Ut{#Utt> Y{#U> Y{#U> Y{#U> Y{#U> Y{#Ut tt> Y{#Utttxxtttxxtt> Y{#Ut -%nYXWVi^]Botpack.Assaultr"2p"3n" osm"U"l]MapVoteLA13.MapVoteHistory1k"3q] Majorityj"T"S"RQd] Welcomec$?b$?a$?`$?h] Assaultg= Deathmatchf]Capture the Flage]OthersPONM_KZ~J]AS-*A]DM-*AiDM-*G]CTF-*F]*y|CpM2~ (?L8r (?L8rm (?L8rK4 (?L8r (?L8rmmK4 (?L8rK4mm (?L8r (?%Cnf (?%Cnfʀ (?%CnfK4 (?%CnfʀʀʀK4 (?%CnfK4ʀʀʀ (?%Cnf (?7X (?7X (?E.G (?E.GIAIAK4 (?E.GIAK4螞K4 (?E.GK4 (?E.GIAK4 (?E.GK4IAIA (?_ڽK4 (?_ڽK4 (?_ڽK4 (?_ڽK4 (?_ڽK4 (?_ڽK4 (?_ڽK4 (?_ڽK4d6o o I(I(?{I(?{I(?{> Y{#UI(?{ {xbBJ ::$R Mߍ{C M2XamM2M2M2M2M2? ? ? ? ? ? ? ? ? ? ? ? ? > Y? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? M2M2M2> Y{#UM2sč韏|.X韏|.X韏|.X韏|.X韏|.X韏|.X韏|[$韏|[$韏|[$韏|.X韏|.X韏|.X韏|.X韏|.X韏|.X韏|.X韏t韏_4韏|[$韏_4韏t韏t韏t韏t韏t韏t韏t韏t韏t韏t韏t韏|.X韏t韏|.X韏|.X韏|.X韏᱘韏᱘韏|.X韏|.X韏᱘韏|.X韏᱘韏|.Xڅ> Y{#UM2M2M2 (?᱘M2 (?᱘M2 (?᱘M2 (?᱘M2 (?᱘M2 (?᱘M2 (?᱘M2 (?᱘M2 (?᱘M2 (?᱘M2 (?᱘M2 (?M2XamM2M2sč韏tM2Xamc1Q`K^e37XM2Xamc1Q`K^e37XM2Xamc1Q`K^e37XM2 (?M2M2sč韏7XÑ? D? l? ? 9 ӑ? 0? ^M? > YR@GI&/sP"2M"N"O"nxHB_ڽd6d6~d6d6d6d6> Y> Yy&.y&.> Y> Yy&.y&.y&.y&.> Yy&.y&.> Yy&.y&.y&.y&..'ld6xxxxxxxo d6xxxxxxxxxxxxxxxxxxxxxK4螋xxxxxx =$@AEXx]vd6y&.d6d6 _RKʀy&.ʀʀ VmRJ韏ˋxxx> Y> Y.'l.'l.'l> Y|.Xڅ> Y|.Xڅ> Y|.Xڅ> Y|.Xڅ> Y|.Xڅ> Y|.Xڅ> Y|[$> Y|[$> Y|.Xڅ> Y|.Xڅ> Y|.Xڅ> Y|[$> Y|.Xڅ> Y|.Xڅ> Yt> Y_4> Yt> Yt> Y|[$> Y_4> Yt> Y|.Xڅ> Y|.Xڅ> Y|.Xڅ> Yt> Yt> Yt> Yt> Yt> Yt> Yt> Yt> Ytttt> Yt> Y|.Xڅ> Y|.Xڅ> Y|.Xڌ|.Xڅ> Y> Y> Y.'l.'l.'l|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڎ᱘|[$᱘|[$᱘|[$᱘|[$᱘|.Xڎ᱘᱘᱘᱘᱘᱘᱘tt᱘᱘᱘|[$|[$|[$|[$|[$᱘|[$|[$|[$|[$|[$᱘|[$|[$|[$|[$|[$᱘|[$|[$|[$|[$|[$᱘|[$ttt᱘ttt᱘᱘|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڵ_4_4_4_4_4_4_4᱘ttt᱘ttt᱘_4_4_4_4_4_4_4|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڝ7XÝ7XÌ|.Xڌ|.Xڌ|.Xڌ|.Xڎ᱘ttttttttttttttttttttttttttt7XÝ7XÝ7XÝ7XÌ|.Xڌ|.Xڌ|.Xڌ|.Xڝ7XÝ7X AD @@r pVtJ\ (?ˑ? |.Xڑ? |.Xڑ? .'lxxx᱘᱘᱘᱘᱘᱘|.Xv?v?v?> Yd6_ڽ_ڽ_ڽ_ڽ> Y_ڽd6> Y{#U> Y_ڽd6> Y> Y> Y_ڽd6> Y{#U> Y_ڽd6> Y> Y> Y_ڽd6> Y{#U> Y_ڽd6> Y> Y> Y_ڽd6> Y{#U> Y_ڽd6> Y> Y%Cnfʀ_ڽ%Cnfʀ_ڽ%Cnfʀ_ڽ%Cnfʀ_ڽ%Cnfʀ> Y> Y%Cnfʀ> Y> Y> Y> YE.GIA> YE.GL8rmL8rm> Y> YE.GIA> Yt> Ytt> Yd6> Y{#Ud6> Yd6> Y.'l.'l> Y> Y> Y> Y%Cnfʀ_ڽ%Cnfʀ_ڽ%Cnfʀ_ڽ%Cnfʀ_ڽ%Cnfʀ> Y> Y> YE.GIA> YE.GL8rmt> Yttt_ڽ_ڽ_ڽ_ڽ_ڽ_ڽ_ڽ_ڽ_ڽ_ڽy&._ڽ_ڽ_ڽy&._ڽ_ڽ_ڽy&._ڽ_ڽ_ڽy&._ڽ_ڽ_ڽK4_ڽK4_ڽK4_ڽK4螝7XÝ7XÝ7XE.GK4E.G7XÅ> Y{#U7XÝ7XÝ7XÝ7XÎ᱘᱘᱘%Cnf%CnfK4L8rL8rK4螎᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڑ? ttt7XÝ7XÝ7XÝ7XÝ7X I  |XyIAy&.IAIA P@`oKMmy&.mm 7G@o  @URI/ڙxU[b N z]w2Xam{n{n{n{noo{n{n{n{nXamXam.'l.'loc1Q`c1Q`c1Q`c1Q`.'lc1Q`c1Q` X]Querying Server...Y]The server did not respond.Z{\["k Y@jxEO*2y&.*2*2 M#@;Mq@;dctL%Cnf~ʀʀʀxxxxxxxxxxo ʀʀʀxxx =$PAEM%nZ]@R@W8!@;Cq@@ @_W4Q@6M@[ @`oju y@"sMU[yx.@@;Da @Qz4E.G~IAIA> Y> Yy&.y&.> Y> Yy&.y&.y&.y&.> Yy&.y&.> Yy&.y&.y&.y&..'lIAIAxxxxxxIAxxxxxxIAxxxxIAxo IAIAxxx E*XEX=$@AEK ^YtVEloGK^e3pK^e3.'lXamXam> YXamXam> Y> YXamXamoo 7XÝ7XÝ7XÝ7XÝ7XÝ7XÝ7XÝ7XÝ7XZ orqNL8r~mmmmxxxxxxxxxxo mmmxxx =$PAE]L@X2 n @k @c] @k}}M @@| MQ~[o"c*2xxxxxxxxxxo *2*2xxx =$PAEB @\@zY {v@ja^@dS ^@g{w P @@X @lMRX@@jZy$FP@s{Nx{n釅mXamXamXamXam_aW" gWi[rONQE DU[/ڙx Mߍ/ڙx Mߍ Mߍ Mߍ Mߍ Mߍ/ڙxqBHLQ Z l i:hH@>t9@@| &UbEZ@BD @t@OzRa@k rt;g/ڙxDDvj @;UoL | @@TA@H*W @l@Gd@fDPi @yA @@UJ` H~E@ACC Z VW@c]@h @Q@{D}| ; ::$CTWs{C > Y> Y> YR@G/T2o .'l.'l/T2.'lTWs.'l/T2.'l.'l.'l? ? K^e3wd-ڄ.'lXam.'lXam> YR@G/T2o ey.'l.'lK^e3/T2? D? l? ? 9 ӑ? 0? ^M? K^e3swP"2M"N"O"YI ba_l@Tqe@f @IosIL aJ@m@C] FWg  @S@pf @H(Y}L@p _ ixm q @CEb@FGHfVKGNW@IL QRSUI@VWXYk[xV @^ @y @h@aci @` @TX2eyMo .'l.'l> YR@G/T2.'ley.'l> YR@G/T2.'l.'l.'lo > YR@G/T2o o  Z~ Q]MapVote Key Bindery r H@O a@ {@N @\eSsč$ c @@h @yH R @@@~@@Hgd@g[_@KnQ} R @gDO Q R S | @U @V @W @@o\W V`Zfw@Cure@iojkm_ nopGJ tu@v@=@Gb}2wd-M> Yo .'l.'l.'lo .'l.'l> YR@G/T2.'lwd-ڄ.'l> YR@G/T2.'l.'l.'lo > YR@G/T2> Yo o  ZQ]Map Vote Welcome Window|q@pwz )::$::${C YQZ> YR@G/T2.'l> YR@G/T2o /T2/T2.'l.'l.'l> YR@G/T2/T2/T2/T2/T2> Y> YR@GtfS{$@wk5Bk~@u@@C @U @J @u T@e@S@D X@J @}cPVU[ډ? G@`@H Y@i @Zsg5e[.. [#Y ?\ ?] ?^ ?_ r *#### -- CreateWindow Failed+([-[~ -' *' b@d e@Y@xf@n @Dk @t@l @m@m @Eh@]@OD_tpmG|T Q @@QX gta @kK f LMNnS@Sx@u @K P@wr t P@h@vM|y @kf } Tsa@{  q@h @w @x T~]@L@@VJl @s ~Ho~ @o @T @Y@Q @@DO @eVIuA@@Jf_ @F@m@] @@K@N}HZ  @^@U IY [ M@  ^ {@cfdc@gs_ @@EJ I @@h w@U@z@JiFC @n[we ~  c@G D| f@ Rl @@~ x MCRQPS ˑ? |[$? |.Xڑ? |[$? |.Xڑ? ? D? l? ? 9 ӑ? 0? ^M? > Ysօ> Ysք.'l.'l᱘|[$> Y> Yss֎᱘ssss֟|[$|[$|[$|[$|[$|[$? ᱘|[$|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڑ? 7XÝ7XÝ7XÝ7X r T s O<{R@_  a  eb  O  m Gd Kf i @j \ @o @g l K@@V  @p  @m ECq  @{v  @P @b+ a ] @h Z@@ @^@p@DvQ8Nz.nrz*#### -- Attempted to open a window on something other than a PlayerPawn+(e.zre*#### -- No Console+(e-re*eL*e-'eCA&' \@A @N @@M G @ZO @@k@|@Q@p@A`@)@@@\  ^  @@X @N@Xb @@e [im` }@V@@WAI{q $:@ˋxxx CBv @@A@z T@z E~ @` @rBB  @j @F @@p@G @@H @@I @@L @@IJ n@@PP h~@Y@d] r@V W @X _@[ H@w|G@@@c e G  @E @uB@AQ@WF@{o @g [r Ut K @{ N[x O@H} M B q@C @Dp@C @C@@ @`S J b @{Q@SS bFFR kI(.'lZ P@T @@WTX \ @] Z L@Y @C @b @c @d @ve @@`g @@hl j m {n @o @q @@vu v fx Z@} YN@/~ pxxxxxxxxxxo > Y[o"c*2[o"c*2.'l[o"cK4螅> Y*2> Y*2[o"c[o"c> Y᱘᱘[o"c*2[o"c[o"c*2[o"c[o"cK4螝7XÝ7XÝ7XÝ7XÎ᱘᱘᱘᱘Z i @@A @D @s dv@k @I @K sM h @ @@eR T \W V _k$ j < 8 X @O@\ )[ w] )^ )_ )` ) )x@P@@O@`b @@`U @F @v [n k j@y ^  @q r~@@@Hc x z @}w @@c@~ A @CAm l @\ @Ek8j Jjl 4 D@Ifg YBc @@j Wn W on ~n -& ^RKU$ -} . !$  @l  7p-(CHC?,?,?,?, TO5m-Oj   w'krj *D-l 0k. @ZO -%zO&-O}O&+O Ut0''twt*zVt,UTMenuzVt,UMenu.wtttrt*.%t-'t4t* @_}G &5|},CTF-BTCTF-BT}~}- J ?x-(J?,?,?,?, \MHo-Mc   e'F-f  rc *0m. iNA  -} m N,@.w@*izm @T,,@@.@* dd j  d e d e  ]p0$'pwp*zVp,UTMenuzVp,UMenu.wppprp*.%p-'p4p* p ^ mW%apB( `K(CJ?%%J?,J4*Y  e'wY*Y4YY*K aP[I%FWp r CW% PW%apB( hz9 0Bz~z=Ez~z=&-LppExecute default Setting:z. Property:B. Value:E!ppExecute Setting:z. Property:B. Value:E!a  BBEb  BppChanged Setting:B. Previous value:a . new value:b   * @GFu%#rF* rD*}G qmj 3UStartMutator:!~ r~*Starting Actor/Mutator FAILED. Could not DynamicLoadObject:! /a0~@Actor already spawned:!0 10@a~r@*Spawning Actor/Mutator FAILED:! S@a/!|H.@ n@@k -} F@:F$@:F$(w*w*.@:F$@:F$&w*w*w.@:F$"w*x%,krx* x.xIxK@:F$!Kw*x%:,rx*rx x.xx@HI @m@B @}-Bf-}.-(.-6-$6-$6-$-` e{ z ?& 6-=,6-=,6-=,AE.-] 6-$ 6-=,6-$ 6-=,6-=,6-=,-` e{ z ?& z.T&96-$6-$6-$A-J.T&y -%(-` ?,epp.T&, - .T, gT }?_AnnouncerMessage:T `.T ]w`*. \` ' S@t~h -^|V, MultiCTFGameMultiCTF detected. Fixing Mapprefix to CTFMCTFMCTFM~ppppNextVirtualPrefix/NextRealPrefix/ActualPrefix:q/X/~zX~ {q~qMapVote: Prefix OK. Mapchange seems to have been successful&{D 9D &}9%:~9;:%:~9,:%99'9#99:'99:&M%M,-6rM R 6RM |~R "{6k M S6k M "}S%:~S;:%:~S,:%mSSmS:SS:&{6o M 96o M }9%:~9;:%:~9,:%99(999:(99:&OM- @ | K I Dppppbrowsing K G :SA ]K G A |  vDe D DCrashed map:Db%tb,{bnjzbnD b3bnDAdded failed map:Dto slotSbb cxuH \c&IcZc&YL ,dc&\L ,dError: GetRandomMap() failed for ListSZ!稨GetRandomMap() configured for ListSZtook the random map:Sccc }znd ybn n}&Z}P| }nH }Z}H  |yO .-i.-..-. |~{c a/!JOppBDBMapVote: Team SO won the round.tO&|%{|&ppBDBMapVote: Setting Team S| as the defending team for the next map.|%.].-(.%...&.-(.|.b% y N ]6N=,6N=,6N=,N N} ~  F{ { -QpMV { ! sT+cT UbcU D@A t s Jw L $87{aw w{*S%S, {S{yS{D ~y.UNRD yyD ypz y}x ww *w 8y\yp[X]yPhyd{PPa-QppLoading Map[S]P-QMap ignored cause no filter matches: y*{aMapList Spawn Failed @u Hc Cu  M@Gt ` t 404 ErrorcwC


Information or Server Unavailable
T Lz" r86pGoing to load gametype:j using maps with Prefix:z. PreFixChange:h |j Botpack.CTFGame-r 'Pure CTF Detected\  bz%R\ |\ n T QR}-^-r ,|Q,CTF-|Q,CTF-BTCTF prevented from loading wrong map:QU ~Q.UNRU QQU Qph Q}z~RTUTORIAL~RINTROBwi *Bi 8Q\Qp[X]QKhQ{KK-QppLoading Map[S]:K-QMap ignored cause no filter matches: QRbzR&n RpT %稨IgnoredST Maps with Prefixzcause mapcount > 1023! e OX7 B| -|'Maplist is reloading...'84a84bbdl  adr *89dMapVoteLA13.MapVoteHistory1  ad%+%+++-NpDetected GameType = V-f(-e(-T(-X(-`(-b(-h(|VF-f'|VBotpack.CTFGame-e'|VBotpack.DeathMatchPlus-T'R|VBotpack.LastManStanding-X'|VBotpack.TeamGamePlus-`'|VBotpack.Domination-b'-h'oV-hwo x-fL-^  ASAS p"ASAS Botpack.Assaulta-e-^  CTFCTF "CTFCTF Botpack.CTFGameaG-T-^  DMDM ?"DMDM Botpack.DeathMatchPlusa-b-^  DOMDOM "DOMDOM Botpack.Dominationa-`-^  DMTDM "DMTDM Botpack.TeamGamePlusa-XP-^  DMLMS }"DMLMS Botpack.LastManStandinga.-h ww*85]w-^ ww] &"w] oaZ-N+%Z+,P-6r+ {6*+ $6*+ -^%|6*+ , MultiCTFGameMultiCTF detected. Fixing Mapprefix to CTFM$CTFMr$*ppMapVote: Error. CustomGameConfig[S+]: Failed to load GameClass:6*+ Hz6R+ ]$]6R+ -^ $$] H"$] 6*+ a+@ azkEliminationP % \%\%q!XYpBDBMapVote: Maps Reloaded. Total Maps = SJ -|MapVote configuration has been changed, Re-Open Voting window for updates.'-|(a -W` p3wd Is ^+Hs U Rvb uhv%Sv,I-6rv {6*v $6*v Iw$*y$-^%|6*v , MultiCTFGameyCTFMz6Rv 6Rv ybI{6Rv yhpppph6Rv ;y;vPrefixDictionary:h E n SQQ D4.-a?((-B 'E  _'Bi.n-6'$6'$6'$'Ln?&MQ?, 6'=,6'=,6'=,'LnQ?&M? 'Bn?Q 'n?Q 'Mn?Q M6'=,6'=,6'=,'LnQ?&M? 'Bn?Q?& 'n?Q 'Mn?Q '%('L?,n.nr'L?,dn.nN  UX`GqStoring Maplist to file...Ta @Tv %TAX&X|X,[X]XTAX,XTAXX^bXbbTAbTu hTbTaStoring Maplist to file finished:S T@[T_9Loading Maplist from file...dl  adr *89dMapVoteLA13.MapVoteHistory1  ad%I&+&a+ @v T+ @A# 8 T\Tp[X]T?-| eTWITI+I&h @u Loading Maplist finished:S a ?@Vr ZZL@]@\:G82 cqGNextVirtualPrefix:qbsz?Restartww*-h83b|}wwXwK-^K|Vw, MultiCTFGameMultiCTF detected. Fixing Mapprefix to CTFMXCTFMNextRealPrefix:Xb_pp.unr?game=o?%?,-6r? {6*? 83.1$6*? qr$*ppMapVote: Error. CustomGameConfig[S?]: Failed to load GameClass:6*? 6R? 6R? -^|6*? , MultiCTFGameMultiCTF detected. Fixing Mapprefix to CTFM$CTFM3{6R? 83.2aq6R? 0|q6R? 83.2bX$-^|6*? , MultiCTFGameXCTFMNextRealPrefix:Xb_pppX}q.unr?game=6*? 83.3aq$|q$83.3bXGNextRealPrefix:Xb_pp.unr?game=6*? ?1z,DMLBotPack.DeathMatchPluszz,LMSLBotPack.LastManStandingpDM,z,TDMLBotPack.TeamGamePluspDM,z,DOMLBotPack.Dominationz,CTFLBotPack.CTFGame:z,ASLFXGNextRealPrefix:Xb_pp.unr?game=L `R j8981/a0 R 6R lR a10 @x{/6{=,6{=,6{=,{? {?& {p q  cO30|Oe'Sze&*xe%}e&S|O}xx'}ze&-}|O}ee'ze&*ze&*xe&}e,~Ox%'ze*'( @^{ lzR T{ ..{ -(Rw *  ie "V"|e,[x]ee,Nze,&:ee}e,e BeK DC;,M.  A ABAMVisual Configf. CAAAf-(C. CApBACAuto DetectB. CA?,;AAC. CA?,;pBAC DME. CA?,;AAC. CA?,;pBAC TDMC. CA?,;AAC. CA?,;pBAC LMSH. CA?,;AAC. CA?,;pBAC CTFG. CA?,;AAC. CA?,;pBAC DOMF. CA?,;AAC. CA?,;CACAssault:k. CA?,; CAk(k Cj% j,jI. CA?, j;AAjG. CA?, j;HCAjG emptyjRI . C A?,;AAC. C A?,;*CACUse Exclude Filtert .  ABHBAt Limitss.  AC*CAs-(sAs4Cs, sVoting Time Limitj. >CC BAjpUs secE.  AC*CAE AEBE&EKick Votes Req.q. >CC BAqpUE %J.  A*C4CAJ?JAJ&JScoreBoard DelayZ . >C*C BAZ pUJ secG.  A>C9CAG?GBG&GMid-Game Voter Req.Q . CC>C BAQ pUG %J. fCCBAJ'JDon't Show LastJAs . CCpBAs maps PlayedK. fCCBAK'KReload Map List whenKAm . fC%CHCAm +maps remain. (Elimiation Mode only)u .  ARCHBAu Misc.D.  AfCCAD2Use the Map Cycle List instead of all mapsD %D$DHC?C.  AzCCAC&Open Voting Window at Game EndC %C$CHC?A.  ACCAA!Enable Player Kick VotingA %A$AHC?d.  ACCAd#Check Sudden Death OverTimed %d$dHC?H. fCfCB?H ModeH\(HBH%MajorityH%EliminationH %ScoreH%Accumulatione . fCCHCAd . fCCHCAl .  ACHBAl AdvancedL.  ACCpAL(L#Welcome Page Web Server URLLRCg .  ACCAg @Example: www.MyServer.com:80/UnrealStuff/WelcomePage.htmN.  ACCpAN(N&Map Information Web Server URLNRCf .  ACCAf .Example: www.MyServer.com:80/MapFiles/I.  ACC?I#Map Vote History Class TypeI\'IRCI#%MapVoteLA13.MapVoteHistory1I#%MapVoteLA13.MapVoteHistory2I#%MapVoteLA13.MapVoteHistory3I#%MapVoteLA13.MapVoteHistory4~.  ACCA~COpen Welcome Window and KeyBinder when player enters server~ %~$~C?{.  AC CA{Sort Maps with PreFix{ %{${B?{-(y.  AC CAyDebug Modey %y$yB?y-(f. *CCBAfList crashed mapsg. CCBAgClear crash ListU. *CC CAURemove crashed mapsU %U$UB?M. C ABAMGame TypesU.  AA>CAU(UMapvote TitleUBP.  A4B>CAP(PList 1 TitlePBQ.  ApB>CAQ(QList 2 TitleQBR.  AB>CAR(RList 3 TitleRBS.  AB>CAS(SList 4 TitleSBV. fC4B CAV(VPriorityVBW. fCpB CAW(WPriorityWBX. fCB CAX(XPriorityXBY. fCB CAY(YPriorityYBV. CC>CAVSaveVV4V-'a. CCCAa#Reload Maps on request onlya %a$aC?b. CC>CAbReload Mapsc. CC>CAcClose jw[dE !-=sE | | $E bf)MUTATE BDBMAPVOTE LISTCRASHEDMAPS g*MUTATE BDBMAPVOTE CLEARCRASHEDMAPS c V?pADMIN SET MapVoteLA13.BDBMapVote bDM TB-@pADMIN SET MapVoteLA13.BDBMapVote bLMS TC-@pADMIN SET MapVoteLA13.BDBMapVote bTDM TE-?pADMIN SET MapVoteLA13.BDBMapVote bAS TF-@pADMIN SET MapVoteLA13.BDBMapVote bDOM TG-@pADMIN SET MapVoteLA13.BDBMapVote bCTF TH-HpADMIN SET MapVoteLA13.BDBMapVote VoteTimeLimit UsFpADMIN SET MapVoteLA13.BDBMapVote KickPercent UEGpADMIN SET MapVoteLA13.BDBMapVote bUseMapList TD-EpADMIN SET MapVoteLA13.BDBMapVote bAutoOpen TC-EpADMIN SET MapVoteLA13.BDBMapVote bKickVote TA-JpADMIN SET MapVoteLA13.BDBMapVote ScoreBoardDelay UJGpADMIN SET MapVoteLA13.BDBMapVote bAutoDetect Tf-NpADMIN SET MapVoteLA13.BDBMapVote bCheckOtherGameTie Td-FpADMIN SET MapVoteLA13.BDBMapVote RepeatLimit J MpADMIN SET MapVoteLA13.BDBMapVote MapVoteHistoryType I HpADMIN SET MapVoteLA13.BDBMapVote ServerInfoURL L EpADMIN SET MapVoteLA13.BDBMapVote MapInfoURL N MpADMIN SET MapVoteLA13.BDBMapVote MidGameVotePercent UG?pADMIN SET MapVoteLA13.BDBMapVote Mode H FpADMIN SET MapVoteLA13.BDBMapVote MinMapCount K IpADMIN SET MapVoteLA13.BDBMapVote bEntryWindows T~-KpADMIN SET MapVoteLA13.BDBMapVote bSortWithPreFix T{-FpADMIN SET MapVoteLA13.BDBMapVote bDebugMode Ty-GpADMIN SET MapVoteLA13.BDBMapVote MapVoteTitle U EpADMIN SET MapVoteLA13.BDBMapVote List1Title P EpADMIN SET MapVoteLA13.BDBMapVote List2Title Q EpADMIN SET MapVoteLA13.BDBMapVote List3Title R EpADMIN SET MapVoteLA13.BDBMapVote List4Title S HpADMIN SET MapVoteLA13.BDBMapVote List1Priority V HpADMIN SET MapVoteLA13.BDBMapVote List2Priority W HpADMIN SET MapVoteLA13.BDBMapVote List3Priority X HpADMIN SET MapVoteLA13.BDBMapVote List4Priority Y  zk }k , k Botpack.AssaultBpADMIN SET MapVoteLA13.BDBMapVote ASClass k NpADMIN SET MapVoteLA13.BDBMapVote bRemoveCrashedMaps TU-TpADMIN SET MapVoteLA13.BDBMapVote bReloadMapsOnRequestOnly Ta-MpADMIN SET MapVoteLA13.BDBMapVote bUseExcludeFilter TI -]%I ],/ ]I-ZpZ1? ZpZ0] ,Mutate BDBMAPVOTE CUSTSETTINGZSettings saved! b$MUTATE BDBMAPVOTE RELOADMAPS -B*B-f-( [CXC-f-( EE-f-( FF-f-( HH-f-( GG-f-( ff-B-(C-(E-(F-(H-(G-( q n$E sjpUs seck EqpUE %k 9JZ pUJ seck hGQ pUG %k q  lF >>zF wIF 4w&PFw,KXw,Fjw,AERROR: GetMapPriority(): Mapname has no Priority attached:F !? ^PL5^ [-ja?(( -M  )  )  )  )  )  )MapVoteWRI: SetupWindow()l%&~%,~%,~%,~%:^a?(YSuper.SetupWindow() = false rm I̬ Jm & hKX1Kl k 6K$6K$6K$K AAC@ KCAHC@ K ABC@ K A\CC@ K ACC@ KCA@C  yob@u0h>/|0,[x]b 0-v'@b 0\-| eb-C %{L 3bL Excluded Map:bl%^,{F T3bF -N=-e -v0b0p0:10%,{G 3bG -d -v0b0p0:20e%b,{H X3bH A-c -v0b0p0:30%,{I 3bI -b -v0b0p0:40i E n(RJo&A%&A,5A%m-`  w * - -X -X '+ uwieii iu%u, {un|iun-QMap found in crashed map list:i'u( zyNY/80N&NhN&h]N\hz],[X]]],z\,[X]\\,]p]&]\p\&\B ]@ \<-n v~]-]]v&v~\-\\v&t]\pNNhhpz]\tB @ pNNhhph.N GE shry.pwy*TxE y3}E ypy.y K\F.78/a0 \!q%\,Clearq{q] q,\,q]qq<\ ,qH%\'ClearH -z {H^ H,\'H^H\ 'H1079 wzn@} ~ . AABA Map Voting Menu Hot KeyZ. CAHB?Z-(Z-'Z-'Z-'U. AB*CAU-(U@@UpBU&UMessage ExpirationU ? )-M 'k. HCB BAkpUU secZ. A\BHCAZ!Change Message ExpirationZ %Z$ZHC?Z- -MJ D?[. DC?J BA[Close[ [-([-(S }S ; :8-xBS S } -x([-( B\SI \%\,\pKEYNAME S\\} \{\V pKEYBINDING \zV MUTATE BDBMAPVOTE VOTEMENUZ \o\\ Eyo)Qcaw*y.awy*wy*wy*Q H}!]o  NQ@K. !$  Y ]o F@_^B]lZzVzVEscape^,p ^,y^,0 ^,9 R^V SZDK 72-a b%%, 2%bzkScore22bzkAccumulation22?d(zkEliminationzkMajority2>2PlayerVote[x]:S2VoteCount[PlayerVote[x]]:U2#G- -S .?b??,d?O 73Mid-Game Map Voting has been initiated !!!!-S 'mul&a?'N%&?%NU%=N&`&3`N)`a``a`mbppppNumPlayer:SPlayerVoted:SbPlayersToVote:SmMaxPriority:UtzkEliminationzkMajority?mt%:&?m>&%<,?m>,%<,?m>,%--Z'%fN]pp ,U, N]F%&%?%74z&& N%zaznWb#W~n.nn~n.%|W anaz,^75a%2-Z2b%%Noone voted, choosing a random map...'aH -Zb76|za *%&%?%Tie: %and &have same score!p a has won.'Op a has won.'j-a'c:a_ D-a?'b%%% wadwg aw<waf zkElimination\ \\  zkAccumulationWa77 TJNR68ppSET Input Y  mutate bdbmapvote votemenu[ Y {opSET Input o Y KMc ER-c  Ud ?UK.QwK*5|d K3'K.K( P[ R|rU* rZ* -[ ? )U! -MZ--[  )DU -MZ- z -M  )  )  )  )  )  ) de W˅70O%8O, .{O|-X(`w`*`-w.`*zO|.`.`(2e -X'OA``K.-XO|OA%OO%O, O |O|O AOAO? 71 ]a @ex.cwx*G|a x3xcx.x kP-B Q ,-j-j'5timer()-w(%gpD??x  pD??v  pD??q   pD??p ]{py p%}p,P Jp&P KJA&0A,&AKA~. iA%P A. gAy A~AK-w'AnJ&K,K,K,KJl JV -w'lJb w. `*.- .. `VD?}}o }S^ }S_ }SO }T-a }T-b }T-O}T-~}X}W}V}UTSRQ?}A?}T-Y?}T-U?m?}h?_?}m?^?} ?}B?}k?}T-\?}T-[?}i?}R?}T-u%g,V}O= V-w' V B-K%& C-K&& E-K,& F-K,& G-K,& H-K,& s  ?^  E  ?_  J  ?O  D--a  C--b  A--O f--~ d--~  a--Z  I --u J  Sm I  h G  ?_ H  m K  S^ U  | P  X Q  W R  V S  U V  UT W  US X  UR Y  UQ k  i U--U N  k ~--\ {--[ y--Y e pClass:\  d Map Prefix:^ b }R, %b , zR&1 @I-'  @I-( {O @GO @I-(X  @G empty @I-'Q  -O.-. k% , {sH&  HW W  HZ zs,&?&!&ss%}s,-r'b -r(. `s-r W H-w'% {L ,,L %2 {J ,'J .  N)pppSJ/SV  Maps loaded.  rpMode: m.  g X.  i W.  j V.  k U.  m |.  GPriority:UT,.  KPriority:US,.  LPriority:UR,.  MPriority:UQ,.  {A wD?}X}W}V}UTSRQ?}sw@ @ w-w'{h. oahkw. `*.. `L  h.K. oL[-'.K. oL~-(.K. oL-(.  o s-w-fw. `*.. `V-( -w-f'a?( -f(a?( EYrJ^@loIe `EzI:E$I:E$(zw*w*. I:E$I:E$& w*w*w.I:E$"w*}w%w,`r}* }.}w>}@I:E$!@w*}w%/w, r}*r} }.}w}IZ [  `@DU bT( gpQ q`h:,/a0 O|VO,SCOFAppppppppSQ $$$SR $$$ST $$$W $$$X 10 hS dx68lwl*l-w.l*.lS P.lllz%o% o, zo|RoA oR%Ro%jo, `zo|o|oA&jo!69& xf@jP b67xwx*x-w.x*.xP PD.xxxD?&D?D u@lg p}66Gunknownuwu*u-w.u*.ug Gpp000Sg ,uuu-G aLz, yk/jqz{64F%oF, eFP-B(kwk*k-ka/!\*.kFP-B'kkNe-BRemoving Player that has left:SFP6-z&p000SFP,F2%FjFPF65 qrB+.N -6$6$6=,PSK J ?& -t'6=,6=,6=,PSK J ?& -t(%(I.N 3zI,[X]6=,6$6$P?,SI,)-t6=,6=,6=, _Iz_,AS-|_,BT-6$6$6$ |_,TDM|_,DM-6$6$@6$ [|_,DOM|_,iAS6$@6$6$@ |_,RA-|_,CTF6$6$@6$@ 6$6$6$P?,SI ubr a:,X.wX*` ,fXb_{fNppNf,_fXb_S{NNN}N&` ,_ b,_%_fXKEYNAMES_}{fJXKEYBINDINGf}~J_ %NppNJ|_NX b{N}Nqi I%bNNNIqi I&bN  V~N1"-O -zO  D h I k N m k-\ -Q -Y -QA  b X O W  V i U g | f  .-Admin is logged in. Sending admin vars...p -T1y0 -Xp1p0 -`p1p0 -fp1p0= -bp1Mp0r -ep1p0(p1p0\ V^ -Z  -W^ P -~ -Nm \_  C -a  -^-b  -p^  u-~  -F h l_ O -[ -n -U -|i F-u -C  m'\w*6m=,6m=,6m=,6m$d6m$d6m$dm mL M  FsKJ . !$  vH urH I K  @M(//================================================================================ // WRI. //================================================================================ class WRI extends ReplicationInfo; var() Class WindowClass; var() int WinLeft; var() int WinTop; var() int WinWidth; var() int WinHeight; var() bool DestroyOnClose; var UWindowWindow TheWindow; var int TicksPassed; var bool bDestroyRequested; replication { reliable if ( Role == ROLE_Authority) OpenWindow, CloseWindow; reliable if ( Role < ROLE_Authority ) DestroyWRI; } event PostBeginPlay () { Super.PostBeginPlay(); OpenIfNecessary(); } simulated event PostNetBeginPlay () { PostBeginPlay(); OpenIfNecessary(); } simulated function OpenIfNecessary () { local PlayerPawn P; if ( Owner != None ) { P=PlayerPawn(Owner); if ( (P != None) && (P.Player != None) && (P.Player.Console != None) ) { OpenWindow(); } } } simulated function bool OpenWindow () { local PlayerPawn P; local WindowConsole C; P=PlayerPawn(Owner); if ( P == None ) { Log("#### -- Attempted to open a window on something other than a PlayerPawn"); DestroyWRI(); return False; } C=WindowConsole(P.Player.Console); if ( C == None ) { Log("#### -- No Console"); DestroyWRI(); return False; } if ( !C.bCreatedRoot || (C.Root == None) ) { C.CreateRootWindow(None); } C.bQuickKeyEnable=True; C.LaunchUWindow(); TicksPassed=1; return True; } simulated function Tick (float DeltaTime) { if ( TicksPassed != 0 ) { if ( TicksPassed++ == 3 ) { SetupWindow(); TicksPassed=0; } } if ( DestroyOnClose && (TheWindow != None) && !TheWindow.bWindowVisible && !bDestroyRequested ) { bDestroyRequested=True; DestroyWRI(); } } simulated function bool SetupWindow () { local WindowConsole C; C=WindowConsole(PlayerPawn(Owner).Player.Console); TheWindow=C.Root.CreateWindow(WindowClass,WinLeft,WinTop,WinWidth,WinHeight); if ( TheWindow == None ) { Log("#### -- CreateWindow Failed"); DestroyWRI(); return False; } if ( C.bShowConsole ) { C.HideConsole(); } TheWindow.bLeaveOnscreen=True; TheWindow.ShowWindow(); return True; } simulated function CloseWindow () { local WindowConsole C; C=WindowConsole(PlayerPawn(Owner).Player.Console); C.bQuickKeyEnable=False; if ( TheWindow != None ) { TheWindow.Close(); } } function DestroyWRI () { Destroy(); } x//================================================================================ // UMenuMapVoteList. //================================================================================ class UMenuMapVoteList extends UWindowListBoxItem; var string MapName; function int Compare (UWindowList t, UWindowList B) { if ( Caps(UMenuMapVoteList(t).MapName) < Caps(UMenuMapVoteList(B).MapName) ) { return -1; } return 1; } BN .]y263/a0 h /h .N 10 [7//================================================================================ // ServerInfoWindow. //================================================================================ class ServerInfoWindow extends UWindowPageWindow; var UWindowVSplitter VSplitter; var ServerInfoLink Link; var UBrowserUpdateServerTextArea TextArea; var localized string QueryText; var localized string FailureText; var Class LinkClass; var Class TextAreaClass; var bool bGotMOTD; var string StatusBarText; var bool bHadInitialQuery; var int tries; var int NumTries; var string WebServer; var string FilePath; var int Port; var string ServerInfoURL; var string MapInfoURL; var string version; function Created () { Super.Created(); version=Left(string(self.Class),InStr(string(self.Class),".")); SetSize(ParentWindow.WinWidth,ParentWindow.WinHeight); VSplitter=UWindowVSplitter(CreateWindow(Class'UWindowVSplitter',0.00,0.00,WinWidth,WinHeight)); TextArea=UBrowserUpdateServerTextArea(CreateControl(TextAreaClass,0.00,0.00,WinWidth,WinHeight,self)); TextArea.SetHTML("


Map Vote LA13



Core developement: BDB (Bruce Bickar)

Enhancements by: Cratos (cratos@gmx.at)

Support: http://forums.utassault.net
"); VSplitter.TopClientWindow=TextArea; VSplitter.bSizable=False; VSplitter.bBottomGrow=False; VSplitter.SplitPos=ParentWindow.WinHeight - 45; VSplitter.BottomClientWindow=VSplitter.CreateWindow(Class'MapVoteNavBar',0.00,0.00,WinWidth,WinHeight,OwnerWindow); SetAcceptsFocus(); } function BrowseWebPage (string p_URLString) { local int P1; local int P2; P1=InStr(p_URLString,"/"); if ( P1 <= 0 ) { Log("Invalid URL"); return; } WebServer=Left(p_URLString,P1); FilePath=Mid(p_URLString,P1); P2=InStr(WebServer,":"); if ( P2 <= 0 ) { Port=80; } else { if ( int(Mid(WebServer,P2 + 1)) < 2 ) { Log("Invalid web server port"); return; } WebServer=Left(WebServer,P2); Port=int(Mid(WebServer,P2 + 1)); } Log("WebServer=" $ WebServer); Log("FilePath=" $ FilePath); Log("Port=" $ string(Port)); Query(); } function Query () { Log("Query()..."); bHadInitialQuery=True; StatusBarText=QueryText; if ( Link != None ) { Link.UpdateWindow=None; Link.Destroy(); } Link=GetEntryLevel().Spawn(LinkClass); Link.UpdateWindow=self; Link.BrowseCurrentURI(WebServer,FilePath,Port); bGotMOTD=False; } function BeforePaint (Canvas C, float X, float Y) { local UBrowserMainWindow W; Super.BeforePaint(C,X,Y); TextArea.SetSize(WinWidth,WinHeight); } function Paint (Canvas C, float X, float Y) { DrawStretchedTexture(C,0.00,0.00,WinWidth,WinHeight,Texture'BlackTexture'); } function SetMOTD (string MOTD) { TextArea.SetHTML(MOTD); } function Failure () { Log("Browse Failure"); Link.UpdateWindow=None; Link.Destroy(); Link=None; tries++; if ( tries < NumTries ) { Query(); return; } StatusBarText=FailureText; tries=0; SetMOTD("


Information Unavailable
"); } function Success () { StatusBarText=""; Link.UpdateWindow=None; Link.Destroy(); Link=None; tries=0; } simulated function SetInfoServerAddress (string p_ServerInfoURL, string p_MapInfoURL) { ServerInfoURL=p_ServerInfoURL; MapInfoURL=p_MapInfoURL; } f//================================================================================ // ServerInfoLink. //================================================================================ class ServerInfoLink extends UBrowserHTTPClient; var config int UpdateServerTimeout; var ServerInfoWindow UpdateWindow; function BrowseCurrentURI (string ServerAddress, string URI, int ServerPort) { Log("browsing " $ ServerAddress $ URI $ ":" $ string(ServerPort)); Browse(ServerAddress,URI,ServerPort,UpdateServerTimeout); } function Failure () { UpdateWindow.Failure(); } function Success () { UpdateWindow.Success(); } function ProcessData (string Data) { UpdateWindow.SetMOTD(Data); } function HTTPError (int ErrorCode) { if ( ErrorCode == 404 ) { Log("404 Error"); UpdateWindow.SetMOTD("


Information or Server Unavailable
"); } else { Failure(); } } function HTTPReceivedData (string Data) { ProcessData(Data); Success(); } ^//================================================================================ // PlayerVoteListItem. //================================================================================ class PlayerVoteListItem extends UWindowListBoxItem; var string PlayerName; var bool bHasVoted; function int Compare (UWindowList t, UWindowList B) { if ( Caps(PlayerVoteListItem(t).PlayerName) < Caps(PlayerVoteListItem(B).PlayerName) ) { return -1; } return 1; } ,V: 6V=,6V=,6V=,6}=,6}$ 6}$ 6U=,6U=,6U$ ,xG,x^D@^,QO,.  AA??^,8. A?A??^86.  B?,?GA??^64. HB?,?GA??^4`.  A?^,. B?,?GA` `Vote`-(J.E EA?,,C?G(?^JJ-}'V. A?,?^, ?GAV {-J -VKickV-'VV-(B.  A?@,A?,?G ABaRank Map name Votes Player name VotesB %B V&.% % A?@HCB&-(&M.L LfC?@CBM-(Mn. A?, C?G An Vn$o. A?,C?G Ao Vo$p. A?,C?G Ap Vp$g.  A?,Ag &g$g }i.  A? A?,Ai &i$i }m. pA?, A?G,Am &m$m Uj. A?,?G A?,Aj &j$j }k.  B?,?G A?,Ak &k$k }G. ?^,?,AG$G VK.  A??^,?,AK$K VL. A?,?G?^,?,AL$L VM.  B?,?G?^,?,AM$M VN. ?O?@BAN %N Vr. ?O,x?@BAr Mode:r %r V]. ?O?@,BA]ScreenShot]$] %] V]- -]. ?O,K?@,-@??,A(B'D,q. ?O,,?@,- BAqSendq-(_. ?O?@,K@??, A_ _Close_-( {://================================================================================ // PlayerVoteListBox. //================================================================================ class PlayerVoteListBox extends UWindowListBox; var Color TeamColor[4]; var bool bDisabled; function Paint (Canvas C, float MouseX, float MouseY) { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,0.00,0.00,WinWidth,WinHeight,Texture'WhiteTexture'); Super.Paint(C,MouseX,MouseY); } function DrawItem (Canvas C, UWindowList Item, float X, float Y, float W, float H) { if ( bDisabled ) { PlayerVoteListItem(Item).bSelected=False; } if ( PlayerVoteListItem(Item).bSelected ) { C.DrawColor.R=0; C.DrawColor.G=0; C.DrawColor.B=128; DrawStretchedTexture(C,X,Y,W,H - 1,Texture'WhiteTexture'); C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; } else { if ( PlayerVoteListItem(Item).bHasVoted ) { C.DrawColor.R=32; C.DrawColor.G=255; C.DrawColor.B=32; } else { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; } DrawStretchedTexture(C,X,Y,W,H - 1,Texture'WhiteTexture'); if ( Left(PlayerVoteListItem(Item).PlayerName,1) == "9" ) { C.DrawColor.R=138; C.DrawColor.G=164; C.DrawColor.B=166; } else { C.DrawColor=TeamColor[int(Left(PlayerVoteListItem(Item).PlayerName,1))]; } } C.Font=Root.Fonts[0]; ClipText(C,X + 2,Y,Left(Mid(PlayerVoteListItem(Item).PlayerName,1),3) $ " - " $ Mid(PlayerVoteListItem(Item).PlayerName,4)); } function KeyDown (int Key, float X, float Y) { local int i; local UWindowListBoxItem ItemPointer; local PlayerPawn P; if ( bDisabled ) { return; } P=GetPlayerOwner(); if(Key == P.EInputKey.IK_MouseWheelDown || Key == P.EInputKey.IK_Down) { if ( (SelectedItem != None) && (SelectedItem.Next != None) ) { SetSelectedItem(UWindowListBoxItem(SelectedItem.Next)); MakeSelectedVisible(); } } if(Key == P.EInputKey.IK_MouseWheelUp || Key == P.EInputKey.IK_Up) { if ( (SelectedItem != None) && (SelectedItem.Prev != None) && (SelectedItem.Sentinel != SelectedItem.Prev) ) { SetSelectedItem(UWindowListBoxItem(SelectedItem.Prev)); MakeSelectedVisible(); } } if(Key == P.EInputKey.IK_PageDown) { if ( SelectedItem != None ) { ItemPointer=SelectedItem; i=0; JL0149: if ( i < 7 ) { if ( ItemPointer.Next == None ) { return; } ItemPointer=UWindowListBoxItem(ItemPointer.Next); i++; goto JL0149; } SetSelectedItem(ItemPointer); MakeSelectedVisible(); } } if(Key == P.EInputKey.IK_PageUp) { if ( SelectedItem != None ) { ItemPointer=SelectedItem; i=0; JL01D2: if ( i < 7 ) { if ( (ItemPointer.Prev == None) || (ItemPointer.Prev == SelectedItem.Sentinel) ) { return; } ItemPointer=UWindowListBoxItem(ItemPointer.Prev); i++; goto JL01D2; } SetSelectedItem(ItemPointer); MakeSelectedVisible(); } } ParentWindow.KeyDown(Key,X,Y); } function SelectPlayer (string PlayerName) { local PlayerVoteListItem PlayerItem; local string PlayerID; if ( bDisabled ) { return; } PlayerID=Left(PlayerName,3); PlayerItem=PlayerVoteListItem(Items); JL002A: if ( PlayerItem != None ) { if ( PlayerID == Right(Left(PlayerItem.PlayerName,4),3) ) { SetSelectedItem(PlayerItem); MakeSelectedVisible(); } else { PlayerItem=PlayerVoteListItem(PlayerItem.Next); goto JL002A; } } } function DoubleClickItem (UWindowListBoxItem i) { if ( bDisabled ) { return; } UWindowDialogClientWindow(ParentWindow).Notify(self,11); } h //================================================================================ // PlainVScrollBar. //================================================================================ class PlainVScrollBar extends UWindowVScrollbar; function Paint (Canvas C, float X, float Y) { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,0.00,0.00,1.00,WinHeight,Texture'WhiteTexture'); DrawStretchedTexture(C,WinWidth - 1,0.00,1.00,WinHeight,Texture'WhiteTexture'); if ( !bDisabled ) { DrawUpBevel(C,0.00,ThumbStart,12.00,ThumbHeight,Texture'WhiteTexture'); } } OG &Qx263/a0 k /k &G 10 i7//================================================================================ // MVWelcomeWRI. //================================================================================ class MVWelcomeWRI extends WRI; var string ServerInfoURL; var string MapInfoURL; var bool bHasStartWindow; replication { reliable if( Role==ROLE_Authority ) ServerInfoURL, MapInfoURL, bHasStartWindow; } simulated function bool SetupWindow () { local int i; local WindowConsole C; if ( Class'BDBMapVote'.Default.bUseMsgTimeout ) { Class'SayMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'CriticalStringPlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'RedSayMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'TeamSayMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'StringMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'DeathMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; } if ( (ServerInfoURL != "") && Class'MapVoteNavBar'.Default.bShowWelcomeWindow ) { if ( Super.SetupWindow() ) { SetTimer(1.00,False); } else { Log("Super.SetupWindow() = false"); } } else { SetTimer(1.00,False); } } simulated function Timer () { local WindowConsole C; local UWindowWindow KeyBinderWindow; local UWindowWindow Child; local bool bHotKeyBound; if ( (ServerInfoURL != "") && Class'MapVoteNavBar'.Default.bShowWelcomeWindow ) { MVWelcomeWindow(TheWindow).bHasStartWindow=bHasStartWindow; ServerInfoWindow(TheWindow.FirstChildWindow).SetInfoServerAddress(ServerInfoURL,MapInfoURL); ServerInfoWindow(TheWindow.FirstChildWindow).BrowseWebPage(ServerInfoURL); } C=WindowConsole(PlayerPawn(Owner).Player.Console); bHotKeyBound=HotKeyBound(); if ( !bHotKeyBound ) { KeyBinderWindow=C.Root.CreateWindow(Class'MVKeyBinderFrameWindow',0.00,0.00,480.00,240.00); MVKeyBinderFrameWindow(KeyBinderWindow).bHasStartWindow=bHasStartWindow; KeyBinderWindow.bLeaveOnscreen=True; KeyBinderWindow.ShowWindow(); } if ( ((ServerInfoURL == "") || !Class'MapVoteNavBar'.Default.bShowWelcomeWindow) && bHotKeyBound ) { if ( bHasStartWindow ) { FocusStartWindow(); } else { C.CloseUWindow(); } } DestroyWRI(); } function GetServerConfig () { ServerInfoURL=Class'BDBMapVote'.Default.ServerInfoURL; MapInfoURL=Class'BDBMapVote'.Default.MapInfoURL; } simulated function FocusStartWindow () { local UWindowWindow Child; local WindowConsole C; Log("FocusStartWindow"); C=WindowConsole(PlayerPawn(Owner).Player.Console); Child=C.Root.LastChildWindow; while ( Child != None ) { if ( (Left(string(Child.Class),6) == "UTMenu") || (Left(string(Child.Class),5) == "UMenu") ) { C.CloseUWindow(); } else { if ( Child.Class != self.Class ) { break; } } Child=Child.PrevSiblingWindow; } if ( Child == None ) { C.CloseUWindow(); } else { Child.bLeaveOnscreen=True; Child.FocusWindow(); Child.ShowWindow(); } } simulated function bool HotKeyBound () { local int i; local string KeyName; local string Alias; for ( i=0; i < 255; i++ ) { KeyName=PlayerPawn(Owner).ConsoleCommand("KEYNAME " $ string(i)); if ( KeyName != "" ) { Alias=PlayerPawn(Owner).ConsoleCommand("KEYBINDING " $ KeyName); if ( Caps(Alias) == "MUTATE BDBMAPVOTE VOTEMENU" ) { return True; } } } return False; } E !QId&9w,*,-(,*d,w8*8-(8*d,w6*6-(6*'d,w4*4-(4*Od& d,E  \F 9ev.cwv*G|F v<vcv.v //================================================================================ // MVWelcomeWindow. //================================================================================ class MVWelcomeWindow extends UWindowFramedWindow; var float StartTime; var bool bHasStartWindow; function Created () { bSizable=False; Super.Created(); StartTime=GetPlayerOwner().Level.TimeSeconds; WinLeft=Root.WinWidth / 2 - WinWidth / 2; WinTop=Root.WinHeight / 2 - WinHeight / 2; } function Close (optional bool bByParent) { local UWindowWindow KeyBinderWindow; Super.Close(bByParent); KeyBinderWindow=Root.FindChildWindow(Class'MVKeyBinderFrameWindow',True); if ( bHasStartWindow && (KeyBinderWindow == None) ) { FocusStartWindow(); } else { WindowConsole(GetPlayerOwner().Player.Console).CloseUWindow(); } } function FocusStartWindow () { local UWindowWindow Child; Child=Root.LastChildWindow; JL0014: if ( Child != None ) { if ( (Left(string(Child.Class),6) == "UTMenu") || (Left(string(Child.Class),5) == "UMenu") ) { WindowConsole(GetPlayerOwner().Player.Console).CloseUWindow(); } else { if ( Child.Class != self.Class ) { goto JL00C1; } } Child=Child.PrevSiblingWindow; goto JL0014; } JL00C1: if ( Child == None ) { WindowConsole(GetPlayerOwner().Player.Console).CloseUWindow(); } else { Child.bLeaveOnscreen=True; Child.FocusWindow(); Child.ShowWindow(); } } function Tick (float DeltaTime) { local UWindowWindow KeyBinderWindow; if ( (StartTime > 0) && (GetPlayerOwner().Level.TimeSeconds > StartTime + 3) ) { StartTime=0.00; FocusWindow(); BringToFront(); ShowWindow(); KeyBinderWindow=Root.FindChildWindow(Class'MVKeyBinderFrameWindow',True); if ( KeyBinderWindow != None ) { KeyBinderWindow.FocusWindow(); KeyBinderWindow.BringToFront(); KeyBinderWindow.ShowWindow(); } } Super.Tick(DeltaTime); } EI-$#w,*,Fw8*8iw6*6w4*4 HX!% Xt t )$X  $ X >,=?,{.,3,[X]-<pMUTATE BDBMAPVOTE MAP .,3=`,& H8=?,{.83,[X]-<pMUTATE BDBMAPVOTE MAP .83=`8, R6$=?,${.63,[X]-<pMUTATE BDBMAPVOTE MAP .63=`6, \4.=?,.{.43,[X]-<pMUTATE BDBMAPVOTE MAP .43=`4, &Bi.&<,%B&,".&<B,8".&<<B,6".&<sB,4".&<=?,<pMUTATE BDBMAPVOTE MAP .&<=` J=?,=pMUTATE BDBMAPVOTE KICK .JT= MJ"A.MlSelect Player:.Ml=?,=pMUTATE BDBMAPVOTE KICK .JT=   $X q{ pSAY    ` =?, w-* {.-3,[X]-{.-34pMUTATE BDBMAPVOTE MAP .-3= 0 _ e ,`,& 8`8, 6`6,  4`4, ? &Bi.&<,%y B&,".&< B,8".&< B,6".&< B,4".&<` V =?,=pMUTATE BDBMAPVOTE KICK .JT= MJ"A.Ml  ~ ${ { pSAY    xq  qB @h<53-O3w *. `B -A  @`//================================================================================ // MVKeyBinderListBox. //================================================================================ class MVKeyBinderListBox extends UWindowListBox; function Paint (Canvas C, float MouseX, float MouseY) { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,0.00,0.00,WinWidth,1.00,Texture'WhiteTexture'); DrawStretchedTexture(C,0.00,0.00,0.00,WinHeight - 1,Texture'WhiteTexture'); Super.Paint(C,MouseX,MouseY); } function DrawItem (Canvas C, UWindowList Item, float X, float Y, float W, float H) { if ( KeyBinderListItem(Item).bSelected ) { C.DrawColor.R=0; C.DrawColor.G=0; C.DrawColor.B=128; DrawStretchedTexture(C,X,Y + 1,W,H - 2,Texture'WhiteTexture'); C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,X,Y + H - 1,W,1.00,Texture'WhiteTexture'); DrawStretchedTexture(C,95.00,Y,1.00,H,Texture'WhiteTexture'); DrawStretchedTexture(C,0.00,Y,1.00,H,Texture'WhiteTexture'); DrawStretchedTexture(C,W,Y,1.00,H,Texture'WhiteTexture'); } else { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,X,Y + H - 1,W,1.00,Texture'WhiteTexture'); DrawStretchedTexture(C,95.00,Y,1.00,H - 1,Texture'WhiteTexture'); DrawStretchedTexture(C,0.00,Y,1.00,H,Texture'WhiteTexture'); DrawStretchedTexture(C,W,Y,1.00,H,Texture'WhiteTexture'); } C.Font=Root.Fonts[0]; ClipText(C,X + 5,Y,KeyBinderListItem(Item).KeyName); ClipText(C,X + 100,Y,KeyBinderListItem(Item).CommandString); } JYiU@i, ?Y&38 ?Y,M6 ?Y,g4 ?Y, `C @DwB61/a0 s 5s @C -D 1062 N@ (zAre`?%$`?&ew-*.-3`@  ksy0 Qy&Cz]- -z'q~y.UNRTqyyqpays.pp.Screenshot z.pp.LevelSummary zy,[X]tYou can NOTuvote for this map.vxPwz*tzuzvzxtDownLoaduRequiredv D//================================================================================ // MVKeyBinderFrameWindow. //================================================================================ class MVKeyBinderFrameWindow extends UWindowFramedWindow; var bool bHasStartWindow; function Created () { bSizable=False; Super.Created(); WinWidth=480.00; WinHeight=200.00; WinLeft=Root.WinWidth / 2 - WinWidth / 2; WinTop=Root.WinHeight / 2 - WinHeight / 2; } function Close (optional bool bByParent) { local UWindowWindow WelcomeWindow; Super.Close(bByParent); WelcomeWindow=Root.FindChildWindow(Class'MVWelcomeWindow',True); if ( WelcomeWindow == None ) { if ( bHasStartWindow ) { FocusStartWindow(); } else { WindowConsole(GetPlayerOwner().Player.Console).CloseUWindow(); } } } function FocusStartWindow () { local UWindowWindow Child; Child=Root.LastChildWindow; JL0014: if ( Child != None ) { if ( (Left(string(Child.Class),6) == "UTMenu") || (Left(string(Child.Class),5) == "UMenu") ) { WindowConsole(GetPlayerOwner().Player.Console).CloseUWindow(); } else { if ( Child.Class != self.Class ) { goto JL00C1; } } Child=Child.PrevSiblingWindow; goto JL0014; } JL00C1: if ( Child == None ) { WindowConsole(GetPlayerOwner().Player.Console).CloseUWindow(); } else { Child.bLeaveOnscreen=True; Child.FocusWindow(); Child.ShowWindow(); } } K{ &5=/--O-w *. &{  WX@z@I YfS@$@ F. q ?, @A ghijk@l@mnobw LPM w v u  ueKG. !$  Us .=&$w *. .s  @pt TM_Q -]]- -]]- -t  ~R A6GY.}wY*a|R Yl|R YlY}Y.Y wl//================================================================================ // MapVoteWRI. //================================================================================ class MapVoteWRI extends WRI; var BDBMapVote MapVoteMutator; var string MapList[1024]; var int MapListNum[1024]; var string MapList1[256]; var string MapList2[256]; var string MapList3[256]; var string MapList4[256]; var int MapCount; var string PlayerName[32]; var int gPlayerCount; var bool bKickVote; var string MapVoteResults[32]; var string KickVoteResults[32]; var string GameTypes; var string OtherClass; var int VoteTimeLimit; var int KickPercent; var bool bUseMapList; var bool bAutoOpen; var int ScoreBoardDelay; var bool bAutoDetect; var bool bCheckOtherGameTie; var string ServerInfoURL; var string MapInfoURL; var string ReportText; var string Mode; var int RepeatLimit; var string MapVoteHistoryType; var int MidGameVotePercent; var int MinMapCount; var string MapPreFixOverRide; var string PreFixSwap; var string OtherPreFix; var string HasStartWindow; var bool bEntryWindows; var bool bSortWithPreFix; var bool bDebugMode; var bool bRemoveCrashedMaps; var bool bReloadMapsOnRequestOnly; var string ActGameClass; var string ActGamePrefix; var string List1Title; var string List2Title; var string List3Title; var string List4Title; var string MapVoteTitle; var float List1Priority; var float List2Priority; var float List3Priority; var float List4Priority; var string CustomGames[16]; var string CustomGamesState; var bool bUseExcludeFilter; var string PrefixDictionary; var int LastMapsCount; var int LastMapListCountX[5]; var string ASClass; var bool bUpdated; var bool blastCheck; var int gAdminChechsum; var int gPlayerChecksum; var int gTitleChecksum; var bool bAdminDone; var string LogoTexture; var bool bOpenWindowDispatched; var bool bSetupWindowDelayDone; replication { reliable if( Role==ROLE_Authority ) SendReportText,UpdateKickVoteResults,UpdateMapVoteResults,UpdatePlayerVoted,RemovePlayerName,AddNewPlayer,MapList1,MapList2,MapList3,MapList4,MapCount,PlayerName,bKickVote,MapVoteResults,KickVoteResults,GameTypes,OtherClass,VoteTimeLimit,KickPercent,bUseMapList,bAutoOpen,ScoreBoardDelay,bAutoDetect,bCheckOtherGameTie,ServerInfoURL,MapInfoURL,Mode,RepeatLimit,MapVoteHistoryType,MidGameVotePercent,MinMapCount,MapPreFixOverRide,PreFixSwap,OtherPreFix,HasStartWindow,bEntryWindows,bSortWithPreFix,bDebugMode,bRemoveCrashedMaps,bReloadMapsOnRequestOnly,ActGameClass,ActGamePrefix,List1Title,List2Title,List3Title,List4Title,MapVoteTitle,List1Priority,List2Priority,List3Priority,List4Priority,CustomGames,CustomGamesState,bUseExcludeFilter,PrefixDictionary,ASClass,LogoTexture; } simulated function bool OpenWindow () { if ( PlayerPawn(Owner).Player.Console.bTyping ) { SetTimer(0.50,False); return False; } bOpenWindowDispatched=True; Super.OpenWindow(); } simulated function bool SetupWindow () { local int i; if ( !bSetupWindowDelayDone ) { SetTimer(0.50,False); return False; } if ( Class'BDBMapVote'.Default.bUseMsgTimeout ) { Class'SayMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'CriticalStringPlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'RedSayMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'TeamSayMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'StringMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'DeathMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; } DebugLog("MapVoteWRI: SetupWindow()"); LastMapsCount=0; LastMapListCountX[1]=0; LastMapListCountX[2]=0; LastMapListCountX[3]=0; LastMapListCountX[4]=0; if ( Super.SetupWindow() ) { SetTimer(1.00,False); } else { Log("Super.SetupWindow() = false"); } } simulated function Timer () { local int i; local int MyCount; local int MyPlayerCount; local bool bHasVoted; local int repMapsCount; local int repMapListCountX[5]; local int repAdminChechsum; local int TitleChecksum; local int repPlayerCount; local AdminWindow Window; local string temp; local int List; if ( !bOpenWindowDispatched ) { OpenWindow(); return; } if ( !bSetupWindowDelayDone ) { bSetupWindowDelayDone=True; SetupWindow(); } DebugLog("timer()"); bUpdated=False; i=0; JL004A: if ( i < 1024 ) { if ( i < 256 ) { temp=MapList1[i % 256]; } else { if ( i < 512 ) { temp=MapList2[i % 256]; } else { if ( i < 768 ) { temp=MapList3[i % 256]; } else { if ( i < 1024 ) { temp=MapList4[i % 256]; } } } } if ( temp != "" ) { MapList[i]=Mid(temp,0,Len(temp) - 2); MapListNum[i]=int(Right(temp,1)); repMapListCountX[MapListNum[i]]++; } i++; goto JL004A; } List=1; JL016E: if ( List <= 4 ) { if ( repMapListCountX[List] > LastMapListCountX[List] ) { MapVoteTabWindow(TheWindow).ClearList(List); i=0; JL01B5: if ( i < 1024 ) { if ( MapListNum[i] == List ) { MapVoteTabWindow(TheWindow).AddMapName(List,MapList[i]); } i++; goto JL01B5; } LastMapListCountX[List]=repMapListCountX[List]; bUpdated=True; } List++; goto JL016E; } repMapsCount=repMapListCountX[1] + repMapListCountX[2] + repMapListCountX[3] + repMapListCountX[4]; if ( (repMapsCount > LastMapsCount) || (repMapsCount != MapCount) ) { bUpdated=True; LastMapsCount=repMapsCount; } if ( (MapVoteTabWindow(TheWindow).AdminWindow != None) && PlayerPawn(Owner).PlayerReplicationInfo.bAdmin ) { Window=AdminWindow(MapVoteTabWindow(TheWindow).AdminWindow.ClientArea); repAdminChechsum=Len(GameTypes) + Len(OtherClass) + Len(string(VoteTimeLimit)) + Len(string(KickPercent)) + Len(string(ScoreBoardDelay)) + Len(string(bUseMapList)) + Len(string(bAutoOpen)) + Len(string(bKickVote)) + Len(string(bAutoDetect)) + Len(List1Title) + Len(List2Title) + Len(List3Title) + Len(List4Title) + List1Priority + List2Priority + List3Priority + List4Priority + Len(PreFixSwap) + Len(string(bDebugMode)) + Len(string(bRemoveCrashedMaps)) + RepeatLimit + Len(MapVoteHistoryType) + MidGameVotePercent + Len(Mode) + MinMapCount + Len(MapPreFixOverRide) + Len(HasStartWindow) + Len(MapInfoURL) + Len(string(bEntryWindows)) + Len(string(bSortWithPreFix)) + Len(ASClass) + Len(CustomGamesState) + Len(string(bUseExcludeFilter)); i=0; JL043D: if ( i < 16 ) { repAdminChechsum += Len(CustomGames[i]); i++; goto JL043D; } if ( gAdminChechsum != repAdminChechsum ) { bUpdated=True; gAdminChechsum=repAdminChechsum; } Window.cbLoadDM.bChecked=bool(Mid(GameTypes,0,1)); Window.cbLoadLMS.bChecked=bool(Mid(GameTypes,1,1)); Window.cbLoadTDM.bChecked=bool(Mid(GameTypes,2,1)); Window.cbLoadAS.bChecked=bool(Mid(GameTypes,3,1)); Window.cbLoadDOM.bChecked=bool(Mid(GameTypes,4,1)); Window.cbLoadCTF.bChecked=bool(Mid(GameTypes,5,1)); Window.sldVoteTimeLimit.SetValue(VoteTimeLimit); Window.sldKickPercent.SetValue(KickPercent); Window.sldScoreBoardDelay.SetValue(ScoreBoardDelay); Window.cbUseMapList.bChecked=bUseMapList; Window.cbAutoOpen.bChecked=bAutoOpen; Window.cbKickVote.bChecked=bKickVote; Window.cbAutoDetect.bChecked=bAutoDetect; Window.cbCheckOtherGameTie.bChecked=bCheckOtherGameTie; Window.cbReloadMapsOnRequestOnly.bChecked=bReloadMapsOnRequestOnly; Window.cbUseExcludeFilter.bChecked=bUseExcludeFilter; Window.txtRepeatLimit.SetValue(string(RepeatLimit)); Window.cboMapVoteHistoryType.SetValue(MapVoteHistoryType); Window.sldMidGameVotePercent.SetValue(MidGameVotePercent); Window.cboMode.SetValue(Mode); Window.txtMinMapCount.SetValue(string(MinMapCount)); Window.txtMapVoteTitle.SetValue(MapVoteTitle); Window.txtList1Title.SetValue(List1Title); Window.txtList2Title.SetValue(List2Title); Window.txtList3Title.SetValue(List3Title); Window.txtList4Title.SetValue(List4Title); Window.txtList1Priority.SetValue(string(List1Priority)); Window.txtList2Priority.SetValue(string(List2Priority)); Window.txtList3Priority.SetValue(string(List3Priority)); Window.txtList4Priority.SetValue(string(List4Priority)); Window.txtASClass.SetValue(ASClass); Window.cbRemoveCrashedMaps.bChecked=bRemoveCrashedMaps; Window.txtMapInfoURL.SetValue(MapInfoURL); Window.cbEntryWindows.bChecked=bEntryWindows; Window.cbSortWithPreFix.bChecked=bSortWithPreFix; Window.cbDebugMode.bChecked=bDebugMode; Window.lblActGame.SetText("C" $ "lass:" @ ActGameClass); Window.lblActPrefix.SetText("Map Prefix:" @ ActGamePrefix); if ( Len(CustomGamesState) > 10 ) { i=0; JL0951: if ( i < 16 ) { if ( Mid(CustomGamesState,i,1) == "1" ) { Window.cbCustGame[i].bChecked=True; } else { Window.cbCustGame[i].bChecked=False; } if ( CustomGames[i] != "" ) { Window.lblCustGame[i].SetText(CustomGames[i]); Window.cbCustGame[i].bDisabled=False; } else { Window.lblCustGame[i].SetText("empty"); Window.cbCustGame[i].bDisabled=True; } i++; goto JL0951; } } } if ( bKickVote || PlayerPawn(Owner).PlayerReplicationInfo.bAdmin ) { MapVoteTabWindow(TheWindow).EnableKickWindow(); } i=0; JL0AA8: if ( (i < 32) && (PlayerName[i] != "") ) { repPlayerCount=i + 1; i++; goto JL0AA8; } if ( repPlayerCount != gPlayerCount ) { i=gPlayerCount; JL0AFA: if ( i < repPlayerCount ) { if ( Right(PlayerName[i],5) == "&?&!&" ) { PlayerName[i]=Mid(PlayerName[i],0,Len(PlayerName[i]) - 5); bHasVoted=True; } else { bHasVoted=False; } MapVoteTabWindow(TheWindow).AddPlayerName(PlayerName[i],bHasVoted); i++; goto JL0AFA; } gPlayerCount=repPlayerCount; bUpdated=True; } i=0; JL0BAB: if ( (MapVoteResults[i] != "") && (i < 31) ) { UpdateMapVoteResults(MapVoteResults[i],i); i++; goto JL0BAB; } i=0; JL0BF2: if ( (KickVoteResults[i] != "") && (i < 31) ) { UpdateKickVoteResults(KickVoteResults[i],i); i++; goto JL0BF2; } MapVoteTabWindow(TheWindow).MapWindow.lblMapCount.SetText(string(repMapsCount) $ "/" $ string(MapCount) $ " Maps loaded"); MapVoteTabWindow(TheWindow).MapWindow.lblMode.SetText("Mode: " $ Mode); MapVoteTabWindow(TheWindow).MapWindow.lblTitle1.SetText(List1Title); MapVoteTabWindow(TheWindow).MapWindow.lblTitle2.SetText(List2Title); MapVoteTabWindow(TheWindow).MapWindow.lblTitle3.SetText(List3Title); MapVoteTabWindow(TheWindow).MapWindow.lblTitle4.SetText(List4Title); MapVoteTabWindow(TheWindow).MapWindow.lblTitle.SetText(MapVoteTitle); MapVoteTabWindow(TheWindow).MapWindow.lblPriority1.SetText("Priority:" @ Left(string(List1Priority),3)); MapVoteTabWindow(TheWindow).MapWindow.lblPriority2.SetText("Priority:" @ Left(string(List2Priority),3)); MapVoteTabWindow(TheWindow).MapWindow.lblPriority3.SetText("Priority:" @ Left(string(List3Priority),3)); MapVoteTabWindow(TheWindow).MapWindow.lblPriority4.SetText("Priority:" @ Left(string(List4Priority),3)); MapVoteTabWindow(TheWindow).MapWindow.LogoTexture=LogoTexture; TitleChecksum=Len(List1Title) + Len(List2Title) + Len(List3Title) + Len(List4Title) + List1Priority + List2Priority + List3Priority + List4Priority + Len(PrefixDictionary); if ( TitleChecksum != gTitleChecksum ) { gTitleChecksum=TitleChecksum; bUpdated=True; } if ( ServerInfoURL != "" ) { MapVoteTabWindow(TheWindow).InfoWindow.SetInfoServerAddress(ServerInfoURL,MapInfoURL); if ( MapVoteTabWindow(TheWindow).AdminWindow != None ) { AdminWindow(MapVoteTabWindow(TheWindow).AdminWindow.ClientArea).txtServerInfoURL.SetValue(ServerInfoURL); } } else { MapVoteNavBar(MapVoteTabWindow(TheWindow).InfoWindow.VSplitter.BottomClientWindow).ServerInfoButton.bDisabled=True; } MapVoteNavBar(MapVoteTabWindow(TheWindow).InfoWindow.VSplitter.BottomClientWindow).ReportButton1.bDisabled=False; MapVoteNavBar(MapVoteTabWindow(TheWindow).InfoWindow.VSplitter.BottomClientWindow).ReportButton2.bDisabled=False; MapVoteTabWindow(TheWindow).MapWindow.PrefixDictionary=PrefixDictionary; if ( !bUpdated && blastCheck ) { if ( MapVoteTabWindow(TheWindow).AdminWindow != None ) { AdminWindow(MapVoteTabWindow(TheWindow).AdminWindow.ClientArea).RemoteSaveButton.bDisabled=False; } return; } if ( !bUpdated ) { blastCheck=True; SetTimer(1.00,False); return; } blastCheck=False; SetTimer(0.50,False); } function GetServerConfig () { local int i; bKickVote=Class'BDBMapVote'.Default.bKickVote; ScoreBoardDelay=Class'BDBMapVote'.Default.ScoreBoardDelay; ServerInfoURL=Class'BDBMapVote'.Default.ServerInfoURL; MapInfoURL=Class'BDBMapVote'.Default.MapInfoURL; Mode=Class'BDBMapVote'.Default.Mode; bEntryWindows=Class'BDBMapVote'.Default.bEntryWindows; bDebugMode=Class'BDBMapVote'.Default.bDebugMode; LogoTexture=Class'BDBMapVote'.Default.LogoTexture; List1Title=Class'BDBMapVote'.Default.List1Title; List2Title=Class'BDBMapVote'.Default.List2Title; List3Title=Class'BDBMapVote'.Default.List3Title; List4Title=Class'BDBMapVote'.Default.List4Title; MapVoteTitle=Class'BDBMapVote'.Default.MapVoteTitle; if ( PlayerPawn(Owner).bAdmin ) { DebugLog("Admin is logged in. Sending admin vars..."); if ( Class'BDBMapVote'.Default.bDM ) { GameTypes="1"; } else { GameTypes="0"; } if ( Class'BDBMapVote'.Default.bLMS ) { GameTypes=GameTypes $ "1"; } else { GameTypes=GameTypes $ "0"; } if ( Class'BDBMapVote'.Default.bTDM ) { GameTypes=GameTypes $ "1"; } else { GameTypes=GameTypes $ "0"; } if ( Class'BDBMapVote'.Default.bAS ) { GameTypes=GameTypes $ "1"; } else { GameTypes=GameTypes $ "0"; } if ( Class'BDBMapVote'.Default.bDOM ) { GameTypes=GameTypes $ "1"; } else { GameTypes=GameTypes $ "0"; } if ( Class'BDBMapVote'.Default.bCTF ) { GameTypes=GameTypes $ "1"; } else { GameTypes=GameTypes $ "0"; } if ( False ) { GameTypes=GameTypes $ "1"; } else { GameTypes=GameTypes $ "0"; } ActGameClass=string(Level.Game.Class); ActGamePrefix=Level.Game.MapPrefix; bReloadMapsOnRequestOnly=Class'BDBMapVote'.Default.bReloadMapsOnRequestOnly; MinMapCount=Class'BDBMapVote'.Default.MinMapCount; bAutoDetect=Class'BDBMapVote'.Default.bAutoDetect; RepeatLimit=Class'BDBMapVote'.Default.RepeatLimit; KickPercent=Class'BDBMapVote'.Default.KickPercent; bUseMapList=Class'BDBMapVote'.Default.bUseMapList; bAutoOpen=Class'BDBMapVote'.Default.bAutoOpen; VoteTimeLimit=Class'BDBMapVote'.Default.VoteTimeLimit; bCheckOtherGameTie=Class'BDBMapVote'.Default.bCheckOtherGameTie; MapVoteHistoryType=Class'BDBMapVote'.Default.MapVoteHistoryType; MidGameVotePercent=Class'BDBMapVote'.Default.MidGameVotePercent; bSortWithPreFix=Class'BDBMapVote'.Default.bSortWithPreFix; bRemoveCrashedMaps=Class'BDBMapVote'.Default.bRemoveCrashedMaps; ASClass=Class'BDBMapVote'.Default.ASClass; bUseExcludeFilter=Class'BDBMapVote'.Default.bUseExcludeFilter; } } simulated function AddNewPlayer (string NewPlayerName, bool bHasVoted) { if ( bKickVote ) { if ( TheWindow != None ) { MapVoteTabWindow(TheWindow).AddPlayerName(NewPlayerName,bHasVoted); } } } simulated function RemovePlayerName (string OldPlayerName) { if ( bKickVote ) { if ( TheWindow != None ) { MapVoteTabWindow(TheWindow).RemovePlayerName(OldPlayerName); } } } simulated function UpdatePlayerVoted (string PlayerID) { if ( TheWindow != None ) { MapVoteTabWindow(TheWindow).UpdatePlayerVoted(PlayerID); } } simulated function UpdateMapVoteResults (string Text, int i) { if ( TheWindow != None ) { MapVoteTabWindow(TheWindow).UpdateMapVoteResults(Text,i); } } simulated function UpdateKickVoteResults (string Text, int i) { if ( TheWindow != None ) { MapVoteTabWindow(TheWindow).UpdateKickVoteResults(Text,i); } } simulated function SendReportText (string p_ReportText) { if ( p_ReportText == "" ) { if ( TheWindow != None ) { MapVoteTabWindow(TheWindow).InfoWindow.SetMOTD(ReportText); } ReportText=""; } else { ReportText=ReportText $ p_ReportText; } } function DestroyWRI () { Super.DestroyWRI(); } function DebugLog (string Msg) { Log("MV " $ Msg); } H^//================================================================================ // MapVoteTabWindow. //================================================================================ class MapVoteTabWindow extends UWindowDialogClientWindow; var UMenuPageControl Pages; var MapVoteClientWindow MapWindow; var ConfigWindow ConfigWindow; var AdminTabWindow AdminWindow; var ServerInfoWindow InfoWindow; var string PrevSelectedMap; var string PrevSelectedPlayer; var int MapCount; var string InfoServerAddress; var int InfoServerPort; var string InfoFilePath; var string ServerInfoFile; function Created () { local UWindowPageControlPage PageControl; WinLeft=(Root.WinWidth - WinWidth) / 2; WinTop=(Root.WinHeight - WinHeight) / 2; Pages=UMenuPageControl(CreateWindow(Class'MapVotePageControl',0.00,0.00,WinWidth,WinHeight)); Pages.SetMultiLine(False); PageControl=Pages.AddPage("Maps/Kick",Class'MapVoteClientWindow'); MapWindow=MapVoteClientWindow(PageControl.Page); PageControl=Pages.AddPage("Config",Class'ConfigWindow'); ConfigWindow=ConfigWindow(PageControl.Page); PageControl=Pages.AddPage("Info",Class'ServerInfoWindow'); InfoWindow=ServerInfoWindow(PageControl.Page); if ( GetPlayerOwner().PlayerReplicationInfo.bAdmin ) { PageControl=Pages.AddPage("Admin",Class'AdminTabWindow'); AdminWindow=AdminTabWindow(PageControl.Page); } Super.Created(); } function AddMapName (int listNum, string MapName) { local UMenuMapVoteList i; if ( listNum == 1 ) { i=UMenuMapVoteList(MapWindow.MapListBox1.Items.Append(Class'UMenuMapVoteList')); } else { if ( listNum == 2 ) { i=UMenuMapVoteList(MapWindow.MapListBox2.Items.Append(Class'UMenuMapVoteList')); } else { if ( listNum == 3 ) { i=UMenuMapVoteList(MapWindow.MapListBox3.Items.Append(Class'UMenuMapVoteList')); } else { i=UMenuMapVoteList(MapWindow.MapListBox4.Items.Append(Class'UMenuMapVoteList')); } } } i.MapName=MapName; } function ClearList (int listNum) { if ( listNum == 1 ) { MapWindow.MapListBox1.Items.Clear(); } else { if ( listNum == 2 ) { MapWindow.MapListBox2.Items.Clear(); } else { if ( listNum == 3 ) { MapWindow.MapListBox3.Items.Clear(); } else { if ( listNum == 4 ) { MapWindow.MapListBox4.Items.Clear(); } } } } } function AddPlayerName (string PlayerName, bool bHasVoted) { local PlayerVoteListItem i; local UWindowList Item; local int j; Item=MapWindow.PlayerListBox.Items; JL001D: if ( Item != None ) { if ( PlayerVoteListItem(Item).PlayerName == PlayerName ) { return; } Item=Item.Next; goto JL001D; } i=PlayerVoteListItem(MapWindow.PlayerListBox.Items.Append(Class'PlayerVoteListItem')); i.PlayerName=PlayerName; i.bHasVoted=bHasVoted; } function ClearPlayerList () { MapWindow.PlayerListBox.Items.Clear(); } function RemovePlayerName (string PlayerID) { local UWindowList Item; Item=MapWindow.PlayerListBox.Items; JL001D: if ( Item != None ) { if ( Mid(PlayerVoteListItem(Item).PlayerName,1,3) == PlayerID ) { Item.Remove(); return; } Item=Item.Next; goto JL001D; } } function UpdatePlayerVoted (string PlayerID) { local UWindowList Item; Item=MapWindow.PlayerListBox.Items; JL001D: if ( Item != None ) { if ( Mid(PlayerVoteListItem(Item).PlayerName,1,3) == PlayerID ) { PlayerVoteListItem(Item).bHasVoted=True; return; } Item=Item.Next; goto JL001D; } } function EnableKickWindow () { local UWindowPageControlPage PageControl; MapWindow.KickVoteButton.bDisabled=False; MapWindow.KickVoteButton.Text="Kick"; MapWindow.PlayerListBox.bDisabled=False; } simulated function UpdateMapVoteResults (string Text, int i) { local UWindowList Item; local string MapName; local int pos; local float C; if ( Text == "Clear" ) { if ( MapWindow.lstMapStatus.SelectedItem != None ) { PrevSelectedMap=MapStatusListItem(MapWindow.lstMapStatus.SelectedItem).MapName; } MapWindow.lstMapStatus.Items.Clear(); return; } pos=InStr(Text,","); if ( pos > 0 ) { MapName=Left(Text,pos); C=float(Mid(Text,pos + 1)); } Item=MapWindow.lstMapStatus.Items; JL00DC: if ( Item != None ) { if ( MapStatusListItem(Item).MapName == MapName ) { MapStatusListItem(Item).rank=i + 1; MapStatusListItem(Item).VoteCount=C; return; } Item=Item.Next; goto JL00DC; } Item=MapStatusListItem(MapWindow.lstMapStatus.Items.Append(Class'MapStatusListItem')); MapStatusListItem(Item).rank=i + 1; MapStatusListItem(Item).MapName=MapName; MapStatusListItem(Item).VoteCount=C; if ( PrevSelectedMap == MapName ) { MapWindow.lstMapStatus.SelectMap(PrevSelectedMap); } } simulated function UpdateKickVoteResults (string Text, int i) { local UWindowList Item; local string PlayerName; local int C; local int pos; if ( Text == "" ) { return; } if ( Text == "Clear" ) { if ( MapWindow.lstKickStatus.SelectedItem != None ) { PrevSelectedPlayer=KickStatusListItem(MapWindow.lstKickStatus.SelectedItem).PlayerName; } MapWindow.lstKickStatus.Items.Clear(); return; } pos=InStr(Text,","); if ( pos > 0 ) { PlayerName=Left(Text,pos); C=int(Mid(Text,pos + 1)); } if ( MapWindow.lstKickStatus.Items != None ) { Item=MapWindow.lstKickStatus.Items; JL0107: if ( Item != None ) { if ( KickStatusListItem(Item).PlayerName == PlayerName ) { KickStatusListItem(Item).VoteCount=C; return; } Item=Item.Next; goto JL0107; } } Item=KickStatusListItem(MapWindow.lstKickStatus.Items.Append(Class'KickStatusListItem')); KickStatusListItem(Item).PlayerName=PlayerName; KickStatusListItem(Item).VoteCount=C; if ( (PrevSelectedPlayer != "") && (PrevSelectedPlayer == PlayerName) ) { MapWindow.lstKickStatus.SelectPlayer(PrevSelectedPlayer); } } T//================================================================================ // MapVoteRI. //================================================================================ class MapVoteRI extends ReplicationInfo; var string testen; replication { reliable if ( Role < 4 ) AnswereQ; reliable if ( Role == 4 ) GetQ; } function AskQ (string q, int Id, int t) { GetQ(q,Id,t); } simulated function GetQ (string q, int Id, int t) { local PlayerPawn PP; local int i; local int P; local int L; local string X; local string Y; local string Z; local string A; if ( Role < 4 ) { PP=PlayerPawn(Owner); if ( PP != None ) { if ( t == 2 ) { X=PP.GetNextInt(q,i); JL0054: if ( X != "" ) { A=A $ X $ ","; i++; X=PP.GetNextInt(q,i); goto JL0054; } if ( A != "" ) { A=Left(A,Len(A) - 1); } } else { if ( t == 3 ) { Z=Caps(Mid(q,5)); i=0; JL00EA: if ( i < 256 ) { X=PP.ConsoleCommand("KEYNAME" @ string(i)); if ( X != "" ) { Y=PP.ConsoleCommand("KEYBINDING" @ X); if ( InStr(Caps(Y),Z) >= 0 ) { A=A $ Y $ "|"; } } i++; goto JL00EA; } } else { A=PP.ConsoleCommand(q); } } if ( A != "" ) { JL01B1: if ( Len(A) > 400 ) { AnswereQ(Id,P,0,q,Left(A,400)); A=Mid(A,400); P++; goto JL01B1; } AnswereQ(Id,P,1,q,A); } } } } function AnswereQ (int Id, int P, int L, string q, string A) { local Mutator aM; if ( Role == 4 ) { foreach AllActors(Class'Mutator',aM) { if ( Right(string(aM.Class),2) ~= "SC" ) { aM.GetItemName(string(Id) $ "$$$" $ string(P) $ "$$$" $ string(L) $ "$$$" $ q $ "$$$" $ A); } } } } \rp ,>+)w *. ,p n  B{|z \%\,M.pKEYNAME S\{M] .pKEYBINDING Mz] MUTATE BDBMAPVOTE VOTEMENU'\( @ABYE.x-6A$6A$6A$AG[?&TH?, 6A=,6A=,6A=,AG[H?&T? A[?H AB[?H 6A=,6A=,6A=,AG[H?&T? A%(AG?,[pp.xl, - .xl,AG?,}[S.xX  |a 'C?+)w *. 'a Y  Af6f=,6f=,6f=,f? f??& fB??& f?&? fk l   F. q ?, @A Cz0X3 ;FocusStartWindows..zswz*zVz,UTMenuzVz,UMenuswzzzX rz*s9z-'z4z* ZNO_ *m I g  N  zcD :,:, D JtYQZ=$:e=$:e> Y> Y> Y> Y> YfSsZ (5Z X V Z X V  Gr"6r=,6r=,6r=,r? r?&? -r@A  L A` V~V.L. g.m g^


Map Vote LA13



Core developement: BDB (Bruce Bickar)

Enhancements by: Cratos (cratos@gmx.at)

Support: http://forums.utassault.net
LgL-(L-(L?,-LL$ K Jm7.]~m/,]%Invalid URL vm]dm]|~v:v|%a,PJv|&,Invalid web server port vv|aJv|&pWebServer=vpFilePath=dpPort=Sa] "S//================================================================================ // MapVoteReport. //================================================================================ class MapVoteReport extends Info; var string ReportText; var int X; var MapVoteWRI MVWRI; var bool bSendResults; var MapVoteHistory History; function RunRport (string ReportType, PlayerPawn Sender, Class MapVoteHistoryClass) { foreach AllActors(Class'MapVoteWRI',MVWRI) { if ( Sender == MVWRI.Owner ) break; } if ( MVWRI == None ) { Log("Failed to find MVWRI"); Destroy(); return; } MVWRI.SendReportText("


Please Wait.....
"); MVWRI.SendReportText(""); History=Spawn(MapVoteHistoryClass); if ( History == None ) { Log("Failed to spawn MapVoteHistory"); Destroy(); return; } History.MapReport(ReportType,self); } function Tick (float DeltaTime) { if ( bSendResults ) { if ( MVWRI == None ) { History.Destroy(); Destroy(); return; } if ( X > Len(ReportText) ) { MVWRI.SendReportText(""); bSendResults=False; History.Destroy(); Destroy(); } else { MVWRI.SendReportText(Mid(ReportText,X,250)); X=X + 250; if ( X < Len(ReportText) ) { MVWRI.SendReportText(Mid(ReportText,X,250)); X=X + 250; } } } } K]KQuery()...-h 'hr Hwi*ic*iaiao iciIvda-j ( O^ n]n 0^ Z X g RM('-t%rR*Faa ad}DR1-t(FaaR1Dd,dd,d}DR1Dd,dd, D[ z,/a0 R,+r\ R,10UrR*Failed to find MVWRIa Rf1


Please Wait.....
R1Fa] rF*Failed to spawn MapVoteHistorya F k[  JBng'zn ##[V#%&Bn&.&&!&#& -j(S&S#znSBS!&S.-j'S!S!tSBn -jc#cSc&BcBc&.c.c&!c!cSc!c&!cSBnS.&S!&# Se-j##Bn#.&#!&  PW c &W   ^ 1?XDz^ 9w *. o CllVlpl^  XUV Ch] g ^V  FvP2{m K-I.w -f -G . amg .  7mv..-s|5-snv eCpC.en-l -G n-'n*zm K-I-st-G 0v+ YTm Browse Failureic*iai*`S`f ] hq `%C


Information Unavailable
 [U~ 4hic*iai*`% \U a } U ~ T  z V+@z  pvv

Map Report nzOSEQp2zOPCp1p

p          0zOSEQpSequence  \zOPCpPlayCount p Map Name
p          p------------ -------------------------------
H& d|Lh52: OpenVoteWindow()U|a/!#|- -_  `-a /a0 | r|| 53: WRI already Spawned --> return0 10"a | | r"*#### -- PostLogin :: Fail:: Could not spawn WRI "n "TP"SK"RF"QA"V (%B(("x (("v (("q (("p ((E|-q(%1(,-6r( qpq1qpq0{6R( ("Oppp6*(  (6R( )'("O6*( (c"Rq"sh54c%Z!wZ* w.Z*Z-Za/!#E, :.Z,E%E:.Zgp000S.Z,.Z'2%c"spppSEg.Z&?&!& c"sppSEg.ZZZ~M%r{M] M,M"LM]M(M"Ls%-z55{s^ s,s"Js^s"J"N56 f//================================================================================ // MapVotePageControl. //================================================================================ class MapVotePageControl extends UMenuPageControl; function KeyDown (int Key, float X, float Y) { Super.KeyDown(Key,X,Y); ParentWindow.KeyDown(Key,X,Y); } CSN 8]3@ 2N %@ %1@ ! j1EQ 1 z1, BDBMAPVOTE42z1, ,VOTEMENU43?,:%-/L''&Please wait 15 seconds to vote z1, ,REPORT201g%/a0 DP(g10g%TSorry, The server can only run one report at a time, please try again later. Pa DwP*Pz1,dFailed to spawn MVReport Qa/!#-+Spectators are not allowed to vote. z1, ,MAP4471, -7 7pServer Admin has force a map switch to 7'c:7j Vc(J7 z1, ,KICK45Q1,xJQ,,-ppBDBMapVote: Admin () kicked player:Q[xQ-zKxKickvote is disabled fz1, , RELOADMAPS46d-47q!X!w Yz1, ,LISTCRASHEDMAPS46aY-Mapvote: Crashed Maps:>%%>, {>npS>:>n>Y>% Mapvote: No maps crashedz1, ,CLEARCRASHEDMAPS46a->%>, >n>b"Crashed Maps List Cleared!Hz1, ,STATUS49#pTotal Map Count is Sg%/a0 S bg10+pActive MapVoteWRI count is Sgg%/a0 DPg10.pActive MapVoteReport count is Sgg%/a0 P g10/pActive MapVoteHistory count is Sg z1, ,SETSEQ50W-71,o~7 o&Syntax Error TJ7o&77oPadPc7TP<PaSequence changed !<You must be a server admin to perform this fuction !  z1, ,SETPC51 -71,o~7  o&Syntax Error TJ7o&77oPadPn7TP<PaPlayCount changed ! <You must be a server admin to perform this fuction !  z1, , CUSTSETTING45b -o1,,new Custsetting:o>% >, zo>&1-6r> ' -6r> (>g b  @Cy[9%[. ??lB A[Server Infov. pB?lB AvMap Info~. B? C A~Report 1: Map Vote Ranking~-'. C? C AReport 2: Map Vote Sequence-'@. C?B A@About. C?B AMapVote TipsD. D?B ADClose hO !*J.O P P $O d[J7J}  vhb#H~h.H%hhH{hJ#7ppJ~ h.htm ~#MUTATE BDBMAPVOTE REPORT PC Z$MUTATE BDBMAPVOTE REPORT SEQ J97www.planetunreal.com:80/BDBUnreal/MapVoteTips.htm @Jg^



Map Vote LA13



Core developement: BDB (Bruce Bickar)

Enhancements by: Cratos (cratos@gmx.at)

Support: http://forums.utassault.net
 DI   qa^f(Mm39[-M 40a%^a, aPaja&tj?DPDKDFAMaxPriority:Uth-h Ca VCp U Cr $F Sr$*Pa$ ASClass fixedFBotpack.Assaultb-M '41 o1//================================================================================ // MapVoteNavBar. //================================================================================ class MapVoteNavBar extends UMenuDialogClientWindow; var UWindowSmallButton ServerInfoButton; var UWindowSmallButton MapInfoButton; var UWindowSmallButton ReportButton1; var UWindowSmallButton ReportButton2; var UWindowSmallButton TipsButton; var UWindowSmallButton AboutButton; var UWindowSmallButton CloseButton; var bool bShowWelcomeWindow; function Created () { Super.Created(); ServerInfoButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',1.00,1.00,59.00,10.00)); ServerInfoButton.Text="Server Info"; MapInfoButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',60.00,1.00,59.00,10.00)); MapInfoButton.Text="Map Info"; ReportButton1=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',120.00,1.00,139.00,10.00)); ReportButton1.Text="Report 1: Map Vote Ranking"; ReportButton1.bDisabled=True; ReportButton2=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',260.00,1.00,139.00,10.00)); ReportButton2.Text="Report 2: Map Vote Sequence"; ReportButton2.bDisabled=True; AboutButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',400.00,1.00,39.00,10.00)); AboutButton.Text="About"; TipsButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',440.00,1.00,69.00,10.00)); TipsButton.Text="MapVote Tips"; CloseButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',570.00,1.00,80.00,10.00)); CloseButton.Text="Close"; } function Notify (UWindowDialogControl C, byte E) { local string CurrentMapName; local int pos; local ServerInfoWindow MainWindow; MainWindow=ServerInfoWindow(ParentWindow.ParentWindow); Super.Notify(C,E); switch (E) { case 2: switch (C) { case ServerInfoButton: MainWindow.BrowseWebPage(MainWindow.ServerInfoURL); break; case MapInfoButton: CurrentMapName=GetPlayerOwner().GetURLMap(); pos=InStr(CurrentMapName,"."); if ( pos > 0 ) { CurrentMapName=Left(CurrentMapName,pos); } if ( CurrentMapName != "" ) { MainWindow.BrowseWebPage(MainWindow.MapInfoURL $ CurrentMapName $ ".htm"); } break; case ReportButton1: GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE REPORT PC"); break; case ReportButton2: GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE REPORT SEQ"); break; case TipsButton: MainWindow.BrowseWebPage("www.planetunreal.com:80/BDBUnreal/MapVoteTips.htm"); break; case AboutButton: MainWindow.TextArea.SetHTML("


Map Vote LA13



Core developement: BDB (Bruce Bickar)

Enhancements by: Cratos (cratos@gmx.at)

Support: http://forums.utassault.net
"); break; case CloseButton: Root.CloseActiveWindow(); break; default: } break; default: } } function Close (bool ByParent) { Class'MapVoteNavBar'.Default.bShowWelcomeWindow=False; Super.Close(ByParent); } FPN//================================================================================ // MapVoteListBox. //================================================================================ class MapVoteListBox extends UWindowListBox; function Paint (Canvas C, float MouseX, float MouseY) { if ( Items.Next != None ) { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; } else { C.DrawColor.R=100; C.DrawColor.G=100; C.DrawColor.B=100; } DrawStretchedTexture(C,0.00,0.00,WinWidth,WinHeight,Texture'WhiteTexture'); Super.Paint(C,MouseX,MouseY); } function DrawItem (Canvas C, UWindowList Item, float X, float Y, float W, float H) { local string MapName; local string CapMapName; local bool bSelected; if ( UMenuMapVoteList(Item).bSelected ) { C.DrawColor.R=0; C.DrawColor.G=0; C.DrawColor.B=255; DrawStretchedTexture(C,X,Y,W,H - 1,Texture'WhiteTexture'); bSelected=True; } else { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,X,Y,W,H - 1,Texture'WhiteTexture'); bSelected=False; } C.Font=Root.Fonts[0]; MapName=UMenuMapVoteList(Item).MapName; if ( Left(MapName,3) == "[X]" ) { C.DrawColor.R=255; C.DrawColor.G=0; C.DrawColor.B=0; ClipText(C,X + 2,Y,Mid(MapName,3)); } else { if ( bSelected ) { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; } else { CapMapName=Caps(MapName); if ( (Left(CapMapName,3) == "AS-") || (Left(CapMapName,3) ~= "BT-") ) { C.DrawColor.R=0; C.DrawColor.G=0; C.DrawColor.B=128; } else { if ( (Left(CapMapName,3) ~= "TDM") || (Left(CapMapName,3) ~= "DM-") ) { C.DrawColor.R=0; C.DrawColor.G=64; C.DrawColor.B=0; } else { if ( (Left(CapMapName,3) ~= "DOM") || (Left(CapMapName,3) ~= "iAS") ) { C.DrawColor.R=64; C.DrawColor.G=0; C.DrawColor.B=64; } else { if ( (Left(CapMapName,3) ~= "RA-") || (Left(CapMapName,3) ~= "CTF") ) { C.DrawColor.R=0; C.DrawColor.G=64; C.DrawColor.B=64; } else { C.DrawColor.R=0; C.DrawColor.G=0; C.DrawColor.B=0; } } } } } ClipText(C,X + 2,Y,MapName); } } function KeyDown (int Key, float X, float Y) { local int i; local UWindowListBoxItem ItemPointer; local UMenuMapVoteList MapItem; local PlayerPawn P; P=GetPlayerOwner(); if(Key == P.EInputKey.IK_MouseWheelDown || Key == P.EInputKey.IK_Down) { if ( (SelectedItem != None) && (SelectedItem.Next != None) ) { SetSelectedItem(UWindowListBoxItem(SelectedItem.Next)); MakeSelectedVisible(); } } if(Key == P.EInputKey.IK_MouseWheelUp || Key == P.EInputKey.IK_Up) { if ( (SelectedItem != None) && (SelectedItem.Prev != None) && (SelectedItem.Sentinel != SelectedItem.Prev) ) { SetSelectedItem(UWindowListBoxItem(SelectedItem.Prev)); MakeSelectedVisible(); } } if(Key == P.EInputKey.IK_PageDown) { if ( SelectedItem != None ) { ItemPointer=SelectedItem; i=0; JL013E: if ( i < 7 ) { if ( ItemPointer.Next == None ) { return; } ItemPointer=UWindowListBoxItem(ItemPointer.Next); i++; goto JL013E; } SetSelectedItem(ItemPointer); MakeSelectedVisible(); } } if(Key == P.EInputKey.IK_PageUp) { if ( SelectedItem != None ) { ItemPointer=SelectedItem; i=0; JL01C7: if ( i < 7 ) { if ( (ItemPointer.Prev == None) || (ItemPointer.Prev == SelectedItem.Sentinel) ) { return; } ItemPointer=UWindowListBoxItem(ItemPointer.Prev); i++; goto JL01C7; } SetSelectedItem(ItemPointer); MakeSelectedVisible(); } } ParentWindow.KeyDown(Key,X,Y); } function SelectMap (string MapName) { local UMenuMapVoteList MapItem; MapItem=UMenuMapVoteList(Items); JL0010: if ( MapItem != None ) { if ( MapName ~= MapItem.MapName ) { SetSelectedItem(MapItem); MakeSelectedVisible(); } else { MapItem=UMenuMapVoteList(MapItem.Next); goto JL0010; } } } function bool isMapInList (string MapName) { local UMenuMapVoteList MapItem; MapItem=UMenuMapVoteList(Items); JL0010: if ( MapItem != None ) { if ( MapName ~= MapItem.MapName ) { return True; } MapItem=UMenuMapVoteList(MapItem.Next); goto JL0010; } return False; } function DoubleClickItem (UWindowListBoxItem i) { UWindowDialogClientWindow(ParentWindow).Notify(self,11); } function Find (string SearchText) { local int i; local UWindowListBoxItem ItemPointer; local UMenuMapVoteList MapItem; MapItem=UMenuMapVoteList(Items); JL0010: if ( MapItem != None ) { if ( Caps(SearchText) <= Caps(Left(MapItem.MapName,Len(SearchText))) ) { SetSelectedItem(MapItem); MakeSelectedVisible(); } else { MapItem=UMenuMapVoteList(MapItem.Next); goto JL0010; } } } iP X  K-I(-P  g(;{y&y,*#,dw,d5w#Hwp          zOSEQpSH!Y&Y,}SH!p YbzOPCpSH.Y&bY,}SH.p Y'ppHB
Hprq*a qDq-t'q!y xLUKKc37aL zL(F%TF, JzF~L'F'38a( Td//================================================================================ // MapVoteHistory_INI. //================================================================================ class MapVoteHistory_INI extends MapVoteHistory; var() config string M[512]; var() config int P[512]; var() config int S[512]; var() config int LastMapIndex; var MapVoteReport MVReport; var string ReportType; var int A; var int B; var string ReportText; function AddMap (string MapName) { local int X; local int Y; local bool bFound; if ( MapName == "" ) { return; } if ( LastMapIndex >= 512 ) { RemoveOldestMap(); } if ( LastMapIndex == 0 ) { M[1]=MapName; P[1]=1; S[1]=1; LastMapIndex=1; return; } bFound=False; X=1; JL0065: if ( X <= LastMapIndex ) { if ( MapName == M[X] ) { S[X]=1; P[X]++; bFound=True; } else { if ( S[X] > -1 ) { S[X]++; } } if ( (Caps(M[X]) > Caps(MapName)) && !bFound ) { Y=LastMapIndex; JL0101: if ( Y >= X ) { M[Y + 1]=M[Y]; P[Y + 1]=P[Y]; S[Y + 1]=S[Y]; if ( (Y != X) && (S[Y] > -1) ) { S[Y + 1]++; } Y--; goto JL0101; } M[X]=MapName; P[X]=1; S[X]=1; LastMapIndex++; return; } X++; goto JL0065; } if ( !bFound ) { LastMapIndex++; M[LastMapIndex]=MapName; P[LastMapIndex]=1; S[LastMapIndex]=1; } return; } function int GetMapSequence (string MapName) { local int Index; Index=FindIndex(MapName); if ( Index == 0 ) { return 513; } else { return S[Index]; } } function SetMapSequence (string MapName, int NewSeq) { local int Index; Index=FindIndex(MapName); if ( Index > 0 ) { S[Index]=NewSeq; } } function int GetPlayCount (string MapName) { local int Index; Index=FindIndex(MapName); if ( Index == 0 ) { return 0; } else { return P[Index]; } } function SetPlayCount (string MapName, int NewPlayCount) { local int Index; Index=FindIndex(MapName); if ( Index > 0 ) { P[Index]=NewPlayCount; } } function Save () { SaveConfig(); } function RemoveOldestMap () { local int X; local int Lowest; Lowest=1; X=2; JL000F: if ( X <= LastMapIndex ) { if ( S[X] < S[Lowest] ) { Lowest=X; } X++; goto JL000F; } RemoveMapByIndex(Lowest); } function RemoveMap (string MapName) { local int Index; Index=FindIndex(MapName); if ( Index > 0 ) { RemoveMapByIndex(Index); } } function RemoveMapByIndex (int Index) { local int X; X=Index; JL000B: if ( X < LastMapIndex ) { M[X]=M[X + 1]; P[X]=P[X + 1]; S[X]=S[X + 1]; X++; goto JL000B; } M[LastMapIndex]=""; P[LastMapIndex]=0; S[LastMapIndex]=0; LastMapIndex--; } function int FindIndex (string MapName) { local int A; local int B; local int i; if ( LastMapIndex == 0 ) { return 0; } A=1; B=LastMapIndex; MapName=Caps(MapName); JL002C: if ( True ) { i=(B - A) / 2 + A; if ( M[i] ~= MapName ) { return i; } if ( A == B ) { return 0; } if ( Caps(M[i]) > MapName ) { B=i; } else { if ( A == i ) { A=B; } else { A=i; } } goto JL002C; } } function MapReport (string p_ReportType, MapVoteReport p_MVReport) { MVReport=p_MVReport; ReportType=p_ReportType; A=1; GotoState('sorting'); } function SendReport () { } function Swap (int A, int B) { local int pc; local int seq; local string MapName; MapName=M[A]; M[A]=M[B]; M[B]=MapName; pc=P[A]; P[A]=P[B]; P[B]=pc; seq=S[A]; S[A]=S[B]; S[B]=seq; } state sorting { function Tick (float DeltaTime) { local int LoopCount; LoopCount=1; JL0007: if ( LoopCount <= 4 ) { if ( A <= LastMapIndex - 1 ) { B=A + 1; JL0033: if ( B <= LastMapIndex ) { if ( ReportType == "SEQ" ) { if ( S[A] > S[B] ) { Swap(A,B); } } if ( ReportType == "PC" ) { if ( P[B] > P[A] ) { Swap(A,B); } } B++; goto JL0033; } A++; } else { GotoState('formating'); goto JL00DD; } LoopCount++; goto JL0007; } JL00DD: } } state formating { function Tick (float DeltaTime) { local int LoopCount; local int MaxMaps; LoopCount=1; JL0007: if ( LoopCount <= 2 ) { if ( LastMapIndex > 100 ) { MaxMaps=100; } else { MaxMaps=LastMapIndex; } if ( A <= MaxMaps ) { ReportText=ReportText $ "          "; if ( ReportType == "SEQ" ) { ReportText=ReportText $ string(S[A]); B=1; JL00BE: if ( B < 20 - Len(string(S[A])) ) { ReportText=ReportText $ " "; B++; goto JL00BE; } } if ( ReportType == "PC" ) { ReportText=ReportText $ string(P[A]); B=1; JL0127: if ( B < 20 - Len(string(P[A])) ) { ReportText=ReportText $ " "; B++; goto JL0127; } } ReportText=ReportText $ M[A] $ "
"; A++; } else { ReportText=ReportText $ ""; if ( MVReport == None ) { Destroy(); return; } MVReport.ReportText=ReportText; MVReport.bSendResults=True; GotoState('None'); goto JL01F2; } LoopCount++; goto JL0007; } JL01F2: } function BeginState () { ReportText="

Map Report "; if ( ReportType == "SEQ" ) { ReportText=ReportText $ "2"; } if ( ReportType == "PC" ) { ReportText=ReportText $ "1"; } ReportText=ReportText $ "

"; ReportText=ReportText $ "          "; if ( ReportType == "SEQ" ) { ReportText=ReportText $ "Sequence  "; } if ( ReportType == "PC" ) { ReportText=ReportText $ "PlayCount "; } ReportText=ReportText $ " Map Name
"; ReportText=ReportText $ "          "; ReportText=ReportText $ "------------ -------------------------------
"; A=1; } } K//================================================================================ // MapVoteHistory4. //================================================================================ class MapVoteHistory4 extends MapVoteHistory_INI Config(MapVoteHistory4); P_{gstu]&ȋgtQ S6}=,6}=,6}=,6S$6S$6S$~.[ [ AACB~-(~i. WCBHBAiSet/Savei i-(i-(S.  ACC BSS ,S }S-(S @DbT+I37bzb(Q~b:SQNbQ^Nb@%@, z@yN'@e38( vM .aj.~wj*hzM Q jr~ j~j.j }|}jK//================================================================================ // MapVoteHistory3. //================================================================================ class MapVoteHistory3 extends MapVoteHistory_INI Config(MapVoteHistory3); y@SE"@%}@,{.~ $ kpKEYNAME S@{rk@Q ks{kapKEYBINDING k{N aszaMUTATE BDBMAPVOTE VOTEMENU~ {~O S'pYour MapVote Hot Key is k-T '@-T S.Press/Select a Desired MapVote Hot Key g~u@SlguK//================================================================================ // MapVoteHistory2. //================================================================================ class MapVoteHistory2 extends MapVoteHistory_INI Config(MapVoteHistory2); @BFeSHo35ae ze c%bc,Xzc~c~e c'36a U !gr ?U ] ] :$U 4if7 =  GfLF35fzf r~f:Srifr^ife%e,zeyeyi ee36 X\ [ CPlayerkicked:S\ [ _w_*_-_\ .r._*w.._*p_ has been kicked.'Y ._LY S[ ,Y-zW p000S_,&p000W ,/a0 rr_rrlra10_a __834 @EJf{V OR.~rMUTATE BDBMAPVOTE VOTEMENU @IL R T%pppSET Input L  b .~N b  z( }&},H#&YH&Y#|zOSEQ|H!Y!YHYzOPCY.H.YHYY3Hq!{} +KF 6F$6F$6F$F FK J 6F=,6F=,6F=,F A ACPA 6F$6F$6F$F%(FpA0AKeyboard KeyFB0AConsole CommandsFB A?PA  gAvOB͸gvhLG2 @ K//================================================================================ // MapVoteHistory1. //================================================================================ class MapVoteHistory1 extends MapVoteHistory_INI Config(MapVoteHistory1); gRxS/#gxv cH cj/B 2H -B %B !@  L //================================================================================ // MapVoteHistory. //================================================================================ class MapVoteHistory extends Info; function AddMap (string MapName) { } function RemoveMap (string MapName) { } function int GetMapSequence (string MapName) { } function int GetPlayCount (string MapName) { } function SetMapSequence (string MapName, int NewSeq) { } function SetPlayCount (string MapName, int NewPlayCount) { } function Save () { } function MapReport (string ReportType, MapVoteReport MVReport) { } function string GetMap (int SeqNum) { } function string GetLeastPlayedMap () { } function string GetMostPlayedMap () { } l//================================================================================ // MapVoteClientWindow. //================================================================================ class MapVoteClientWindow extends UWindowPageWindow; var MapVoteListBox MapListBox1; var MapVoteListBox MapListBox2; var MapVoteListBox MapListBox3; var MapVoteListBox MapListBox4; var UWindowSmallButton CloseButton; var UWindowSmallButton VoteButton; var UWindowSmallButton InfoButton; var PlayerVoteListBox PlayerListBox; var UWindowSmallButton KickVoteButton; var MapStatusListBox lstMapStatus; var KickStatusListBox lstKickStatus; var UWindowCheckbox cbLoadScreenShot; var UMenuLabelControl lblStatusTitles; var UMenuLabelControl lblTitle1; var UMenuLabelControl lblTitle2; var UMenuLabelControl lblTitle3; var UMenuLabelControl lblTitle4; var UMenuLabelControl lblTitle; var UMenuLabelControl lblMaptxt1; var UMenuLabelControl lblMaptxt2; var UMenuLabelControl lblMaptxt3; var UMenuLabelControl lblPriority1; var UMenuLabelControl lblPriority2; var UMenuLabelControl lblPriority3; var UMenuLabelControl lblPriority4; var UMenuLabelControl lblMapCount; var UWindowEditControl txtFind; var UWindowSmallButton SendButton; var UWindowEditControl txtMessage; var UMenuLabelControl lblMode; var bool bKickVote; var Texture Screenshot; var string MapTitle; var string MapAuthor; var string IdealPlayerCount; var float LastVoteTime; var float SelectionTime; var string LogoTexture; var int MapListwidth; var int PlayerListwidth; var int ListHeight; var bool bMapAlreadySet; var string PrefixDictionary; function Created () { local Color TextColor; local Color TextColorTitles; local Color TextColorTitle; local int LowSectionStart; local int RightSectionStart; Super.Created(); TextColor.R=255; TextColor.G=255; TextColor.B=255; TextColorTitles.R=255; TextColorTitles.G=10; TextColorTitles.B=10; TextColorTitle.R=255; TextColorTitle.G=255; TextColorTitle.B=10; MapListwidth=120; PlayerListwidth=120; ListHeight=324; LowSectionStart=ListHeight + 81; RightSectionStart=400; MapListBox1=MapVoteListBox(CreateControl(Class'MapVoteListBox',10.00,26.00,MapListwidth,ListHeight)); MapListBox1.Items.Clear(); MapListBox2=MapVoteListBox(CreateControl(Class'MapVoteListBox',20.00 + MapListwidth,26.00,MapListwidth,ListHeight)); MapListBox2.Items.Clear(); MapListBox3=MapVoteListBox(CreateControl(Class'MapVoteListBox',40.00 + 2 * MapListwidth + PlayerListwidth,26.00,MapListwidth,ListHeight)); MapListBox3.Items.Clear(); MapListBox4=MapVoteListBox(CreateControl(Class'MapVoteListBox',50.00 + 3 * MapListwidth + PlayerListwidth,26.00,MapListwidth,ListHeight)); MapListBox4.Items.Clear(); VoteButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',10.00,ListHeight + 46,40.00 + 4 * MapListwidth + PlayerListwidth,21.00)); VoteButton.DownSound=Sound'BeltSnd'; VoteButton.Text="Vote"; VoteButton.bDisabled=False; PlayerListBox=PlayerVoteListBox(CreateControl(Class'PlayerVoteListBox',30.00 + 2 * MapListwidth,172.00,PlayerListwidth,-168.00 + ListHeight)); PlayerListBox.Items.Clear(); PlayerListBox.bDisabled=True; KickVoteButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',30.00 + 2 * MapListwidth,ListHeight + 11,PlayerListwidth,18.00)); KickVoteButton.DownSound=Sound'BeltSnd'; if ( bKickVote || GetPlayerOwner().PlayerReplicationInfo.bAdmin ) { KickVoteButton.Text="Kick"; KickVoteButton.bDisabled=True; } else { KickVoteButton.Text=""; KickVoteButton.bDisabled=False; } lblStatusTitles=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',10.00,LowSectionStart - 15,30.00 + 2 * MapListwidth + PlayerListwidth,10.00)); lblStatusTitles.SetText("Rank Map name Votes Player name Votes"); lblStatusTitles.SetFont(0); lblStatusTitles.SetTextColor(TextColor); lstMapStatus=MapStatusListBox(CreateControl(Class'MapStatusListBox',10.00,LowSectionStart,200.00,90.00)); lstMapStatus.bAcceptsFocus=False; lstMapStatus.Items.Clear(); lstKickStatus=KickStatusListBox(CreateControl(Class'KickStatusListBox',230.00,LowSectionStart,150.00,90.00)); lstKickStatus.bAcceptsFocus=False; lstKickStatus.Items.Clear(); lblMaptxt1=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',30.00 + 2 * MapListwidth,140.00,PlayerListwidth,10.00)); lblMaptxt1.SetTextColor(TextColor); lblMaptxt1.Align=TA_Center; lblMaptxt2=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',30.00 + 2 * MapListwidth,149.00,PlayerListwidth,10.00)); lblMaptxt2.SetTextColor(TextColor); lblMaptxt2.Align=TA_Center; lblMaptxt3=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',30.00 + 2 * MapListwidth,158.00,PlayerListwidth,10.00)); lblMaptxt3.SetTextColor(TextColor); lblMaptxt3.Align=TA_Center; lblTitle1=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',0.00,10.00,MapListwidth + 20,20.00)); lblTitle1.SetFont(1); lblTitle1.Align=TA_Center; lblTitle1.SetTextColor(TextColorTitles); lblTitle2=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',10.00 + MapListwidth,10.00,MapListwidth + 20,20.00)); lblTitle2.SetFont(1); lblTitle2.Align=TA_Center; lblTitle2.SetTextColor(TextColorTitles); lblTitle=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',15.00 + 2 * MapListwidth,10.00,PlayerListwidth + 30,20.00)); lblTitle.SetFont(1); lblTitle.Align=TA_Center; lblTitle.SetTextColor(TextColorTitle); lblTitle3=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',30.00 + 2 * MapListwidth + PlayerListwidth,10.00,MapListwidth + 20,20.00)); lblTitle3.SetFont(1); lblTitle3.Align=TA_Center; lblTitle3.SetTextColor(TextColorTitles); lblTitle4=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',40.00 + 3 * MapListwidth + PlayerListwidth,10.00,MapListwidth + 20,20.00)); lblTitle4.SetFont(1); lblTitle4.Align=TA_Center; lblTitle4.SetTextColor(TextColorTitles); lblPriority1=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',0.00,ListHeight + 30,MapListwidth + 20,20.00)); lblPriority1.Align=TA_Center; lblPriority1.SetTextColor(TextColor); lblPriority2=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',10.00 + MapListwidth,ListHeight + 30,MapListwidth + 20,20.00)); lblPriority2.Align=TA_Center; lblPriority2.SetTextColor(TextColor); lblPriority3=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',30.00 + 2 * MapListwidth + PlayerListwidth,ListHeight + 30,MapListwidth + 20,20.00)); lblPriority3.Align=TA_Center; lblPriority3.SetTextColor(TextColor); lblPriority4=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',40.00 + 3 * MapListwidth + PlayerListwidth,ListHeight + 30,MapListwidth + 20,20.00)); lblPriority4.Align=TA_Center; lblPriority4.SetTextColor(TextColor); lblMapCount=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',RightSectionStart,LowSectionStart,110.00,20.00)); lblMapCount.SetFont(0); lblMapCount.SetTextColor(TextColor); lblMode=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',RightSectionStart + 120,LowSectionStart,100.00,20.00)); lblMode.SetText("Mode:"); lblMode.SetFont(0); lblMode.SetTextColor(TextColor); cbLoadScreenShot=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',RightSectionStart,LowSectionStart + 20,70.00,20.00)); cbLoadScreenShot.SetText("ScreenShot"); cbLoadScreenShot.Align=TA_Right; cbLoadScreenShot.SetFont(0); cbLoadScreenShot.SetTextColor(TextColor); cbLoadScreenShot.bChecked=Class'BDBMapVote'.Default.bLoadScreenShot; txtMessage=UWindowEditControl(CreateControl(Class'UWindowEditControl',RightSectionStart - 75 - MapListwidth,LowSectionStart + 45,2.00 * MapListwidth + 150,20.00)); txtMessage.SetNumericOnly(False); txtMessage.SetHistory(True); txtMessage.SetMaxLength(150); SendButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',RightSectionStart + 2 * MapListwidth - 30,LowSectionStart + 45,40.00,20.00)); SendButton.Text="Send"; SendButton.bDisabled=False; CloseButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',RightSectionStart,LowSectionStart + 75,2.00 * MapListwidth + 10,20.00)); CloseButton.DownSound=Sound'WeaponPickup'; CloseButton.Text="Close"; CloseButton.bDisabled=False; } function DeSelectAllOtherMapListBoxItems (MapVoteListBox selListBox, int listNum) { if ( listNum != 1 ) { if ( MapListBox1.SelectedItem != None ) { MapListBox1.SelectedItem.bSelected=False; } MapListBox1.SelectedItem=None; } if ( listNum != 2 ) { if ( MapListBox2.SelectedItem != None ) { MapListBox2.SelectedItem.bSelected=False; } MapListBox2.SelectedItem=None; } if ( listNum != 3 ) { if ( MapListBox3.SelectedItem != None ) { MapListBox3.SelectedItem.bSelected=False; } MapListBox3.SelectedItem=None; } if ( listNum != 4 ) { if ( MapListBox4.SelectedItem != None ) { MapListBox4.SelectedItem.bSelected=False; } MapListBox4.SelectedItem=None; } if ( (listNum >= 1) && (listNum <= 4) ) { selListBox.MakeSelectedVisible(); } } function UWindowListBoxItem getSelectedItem () { if ( MapListBox1.SelectedItem != None ) { return MapListBox1.SelectedItem; } if ( MapListBox2.SelectedItem != None ) { return MapListBox2.SelectedItem; } if ( MapListBox3.SelectedItem != None ) { return MapListBox3.SelectedItem; } if ( MapListBox4.SelectedItem != None ) { return MapListBox4.SelectedItem; } } function Notify (UWindowDialogControl C, byte E) { local int listNum; Super.Notify(C,E); switch (E) { case 1: switch (C) { default: } break; case 11: switch (C) { case MapListBox1: if ( GetPlayerOwner().Level.TimeSeconds > LastVoteTime + 5 ) { if ( (Left(UMenuMapVoteList(MapListBox1.SelectedItem).MapName,3) != "[X]") || GetPlayerOwner().PlayerReplicationInfo.bAdmin ) { GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE MAP " $ UMenuMapVoteList(MapListBox1.SelectedItem).MapName); LastVoteTime=GetPlayerOwner().Level.TimeSeconds; } } SelectionTime=GetPlayerOwner().Level.TimeSeconds; DeSelectAllOtherMapListBoxItems(MapListBox1,1); break; case MapListBox2: if ( GetPlayerOwner().Level.TimeSeconds > LastVoteTime + 5 ) { if ( (Left(UMenuMapVoteList(MapListBox2.SelectedItem).MapName,3) != "[X]") || GetPlayerOwner().PlayerReplicationInfo.bAdmin ) { GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE MAP " $ UMenuMapVoteList(MapListBox2.SelectedItem).MapName); LastVoteTime=GetPlayerOwner().Level.TimeSeconds; } } SelectionTime=GetPlayerOwner().Level.TimeSeconds; DeSelectAllOtherMapListBoxItems(MapListBox2,2); break; case MapListBox3: if ( GetPlayerOwner().Level.TimeSeconds > LastVoteTime + 5 ) { if ( (Left(UMenuMapVoteList(MapListBox3.SelectedItem).MapName,3) != "[X]") || GetPlayerOwner().PlayerReplicationInfo.bAdmin ) { GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE MAP " $ UMenuMapVoteList(MapListBox3.SelectedItem).MapName); LastVoteTime=GetPlayerOwner().Level.TimeSeconds; } } SelectionTime=GetPlayerOwner().Level.TimeSeconds; DeSelectAllOtherMapListBoxItems(MapListBox3,3); break; case MapListBox4: if ( GetPlayerOwner().Level.TimeSeconds > LastVoteTime + 5 ) { if ( (Left(UMenuMapVoteList(MapListBox4.SelectedItem).MapName,3) != "[X]") || GetPlayerOwner().PlayerReplicationInfo.bAdmin ) { GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE MAP " $ UMenuMapVoteList(MapListBox4.SelectedItem).MapName); LastVoteTime=GetPlayerOwner().Level.TimeSeconds; } } SelectionTime=GetPlayerOwner().Level.TimeSeconds; DeSelectAllOtherMapListBoxItems(MapListBox4,4); break; case lstMapStatus: listNum=getListNum(MapStatusListItem(lstMapStatus.SelectedItem).MapName); DeSelectAllOtherMapListBoxItems(MapListBox1,0); if ( listNum == 1 ) { MapListBox1.SelectMap(MapStatusListItem(lstMapStatus.SelectedItem).MapName); } if ( listNum == 2 ) { MapListBox2.SelectMap(MapStatusListItem(lstMapStatus.SelectedItem).MapName); } if ( listNum == 3 ) { MapListBox3.SelectMap(MapStatusListItem(lstMapStatus.SelectedItem).MapName); } if ( listNum == 4 ) { MapListBox4.SelectMap(MapStatusListItem(lstMapStatus.SelectedItem).MapName); } if ( GetPlayerOwner().Level.TimeSeconds > LastVoteTime + 5 ) { GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE MAP " $ MapStatusListItem(lstMapStatus.SelectedItem).MapName); LastVoteTime=GetPlayerOwner().Level.TimeSeconds; } SelectionTime=GetPlayerOwner().Level.TimeSeconds; break; case PlayerListBox: if ( GetPlayerOwner().Level.TimeSeconds > LastVoteTime + 5 ) { GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE KICK " $ PlayerVoteListItem(PlayerListBox.SelectedItem).PlayerName); LastVoteTime=GetPlayerOwner().Level.TimeSeconds; } break; case lstKickStatus: PlayerListBox.SelectPlayer(KickStatusListItem(lstKickStatus.SelectedItem).PlayerName); Log("Select Player:" @ KickStatusListItem(lstKickStatus.SelectedItem).PlayerName); if ( GetPlayerOwner().Level.TimeSeconds > LastVoteTime + 5 ) { GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE KICK " $ PlayerVoteListItem(PlayerListBox.SelectedItem).PlayerName); LastVoteTime=GetPlayerOwner().Level.TimeSeconds; } break; default: } break; case 2: switch (C) { case SendButton: if ( txtMessage.GetValue() != "" ) { GetPlayerOwner().ConsoleCommand("SAY " $ txtMessage.GetValue()); txtMessage.SetValue(""); } break; case VoteButton: if ( GetPlayerOwner().Level.TimeSeconds > LastVoteTime + 5 ) { if ( getSelectedItem() != None ) { if ( (Left(UMenuMapVoteList(getSelectedItem()).MapName,3) != "[X]") || GetPlayerOwner().PlayerReplicationInfo.bAdmin ) { if ( UMenuMapVoteList(getSelectedItem()).MapName != "" ) { GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE MAP " $ UMenuMapVoteList(getSelectedItem()).MapName); } LastVoteTime=GetPlayerOwner().Level.TimeSeconds; } } } break; case CloseButton: ParentWindow.ParentWindow.Close(); break; case MapListBox1: SelectionTime=GetPlayerOwner().Level.TimeSeconds; DeSelectAllOtherMapListBoxItems(MapListBox1,1); break; case MapListBox2: SelectionTime=GetPlayerOwner().Level.TimeSeconds; DeSelectAllOtherMapListBoxItems(MapListBox2,2); break; case MapListBox3: SelectionTime=GetPlayerOwner().Level.TimeSeconds; DeSelectAllOtherMapListBoxItems(MapListBox3,3); break; case MapListBox4: SelectionTime=GetPlayerOwner().Level.TimeSeconds; DeSelectAllOtherMapListBoxItems(MapListBox4,4); break; case lstMapStatus: listNum=getListNum(MapStatusListItem(lstMapStatus.SelectedItem).MapName); DeSelectAllOtherMapListBoxItems(MapListBox1,0); if ( listNum == 1 ) { MapListBox1.SelectMap(MapStatusListItem(lstMapStatus.SelectedItem).MapName); } if ( listNum == 2 ) { MapListBox2.SelectMap(MapStatusListItem(lstMapStatus.SelectedItem).MapName); } if ( listNum == 3 ) { MapListBox3.SelectMap(MapStatusListItem(lstMapStatus.SelectedItem).MapName); } if ( listNum == 4 ) { MapListBox4.SelectMap(MapStatusListItem(lstMapStatus.SelectedItem).MapName); } SelectionTime=GetPlayerOwner().Level.TimeSeconds; break; case KickVoteButton: if ( GetPlayerOwner().Level.TimeSeconds > LastVoteTime + 5 ) { GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE KICK " $ PlayerVoteListItem(PlayerListBox.SelectedItem).PlayerName); LastVoteTime=GetPlayerOwner().Level.TimeSeconds; } break; case lstKickStatus: PlayerListBox.SelectPlayer(KickStatusListItem(lstKickStatus.SelectedItem).PlayerName); break; default: } break; case 7: if ( txtMessage.GetValue() != "" ) { GetPlayerOwner().ConsoleCommand("SAY " $ txtMessage.GetValue()); txtMessage.SetValue(""); txtMessage.FocusOtherWindow(SendButton); } break; default: } } function int getListNum (string MapName) { if ( MapListBox1.isMapInList(MapName) ) { return 1; } if ( MapListBox2.isMapInList(MapName) ) { return 2; } if ( MapListBox3.isMapInList(MapName) ) { return 3; } if ( MapListBox4.isMapInList(MapName) ) { return 4; } } function Tick (float DeltaTime) { if ( (SelectionTime != 0) && (GetPlayerOwner().Level.TimeSeconds > SelectionTime + 1) ) { if ( getSelectedItem() != None ) { SetMap(UMenuMapVoteList(getSelectedItem()).MapName); SelectionTime=0.00; } } Super.Tick(DeltaTime); } function SetMap (string MapName) { local int i; local int pos; local string Prefix; local string RealPreFix; local LevelSummary L; local string RealMapName; if ( !cbLoadScreenShot.bChecked ) { return; } bMapAlreadySet=True; i=InStr(Caps(MapName),".UNR"); if ( i != -1 ) { MapName=Left(MapName,i); } RealMapName=GetRealMapname(MapName); Screenshot=Texture(DynamicLoadObject(RealMapName $ ".Screenshot",Class'Texture')); L=LevelSummary(DynamicLoadObject(RealMapName $ ".LevelSummary",Class'LevelSummary')); if ( Left(MapName,3) == "[X]" ) { MapTitle="You can NOT"; MapAuthor="vote for this map."; IdealPlayerCount=""; } else { if ( L != None ) { MapTitle=L.Title; MapAuthor=L.Author; IdealPlayerCount=L.IdealPlayerCount; } else { MapTitle="DownLoad"; MapAuthor="Required"; IdealPlayerCount=""; } } } function string GetRealMapname (string VirtualMap) { local string MapName; local string Dictionary; local string virt; local string Real; Dictionary="TDM;DM;LMS;DM;" $ PrefixDictionary; if ( Left(VirtualMap,3) ~= "[X]" ) { VirtualMap=Mid(VirtualMap,3); } MapName=VirtualMap; JL004A: if ( Dictionary != "" ) { virt=Left(Dictionary,InStr(Dictionary,";")); Dictionary=Mid(Dictionary,InStr(Dictionary,";") + 1); Real=Left(Dictionary,InStr(Dictionary,";")); Dictionary=Mid(Dictionary,InStr(Dictionary,";") + 1); if ( (Left(VirtualMap,4) != "CTF-") && (Left(VirtualMap,Len(virt) + 1) ~= (virt $ "-")) ) { MapName=Real $ Mid(VirtualMap,Len(virt)); return MapName; } goto JL004A; } return MapName; } function Paint (Canvas C, float MouseX, float MouseY) { local int i; local int P1; local int P2; local int pos; local string TempText; local string textline; local float X; local float Y; local float W; local float H; Super.Paint(C,MouseX,MouseY); DrawStretchedTexture(C,0.00,0.00,WinWidth,WinHeight,Texture'BlackTexture'); if ( !bMapAlreadySet && (LogoTexture != "") && (Screenshot == None) ) { Screenshot=Texture(DynamicLoadObject(LogoTexture,Class'Texture')); bMapAlreadySet=True; } if ( Screenshot != None ) { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,30.00 + 2 * MapListwidth,27.00,PlayerListwidth,110.00,Screenshot); } if ( MapTitle != "" ) { lblMaptxt1.SetText(MapTitle); } else { lblMaptxt1.SetText(""); } if ( MapAuthor != "" ) { lblMaptxt2.SetText(MapAuthor); } else { lblMaptxt2.SetText(""); } if ( IdealPlayerCount != "" ) { lblMaptxt3.SetText(IdealPlayerCount @ "Players"); } else { lblMaptxt3.SetText(""); } } function KeyDown (int Key, float X, float Y) { ParentWindow.KeyDown(Key,X,Y); } function Close (optional bool bByParent) { local int W; local int Mode; if ( Class'BDBMapVote'.Default.bLoadScreenShot != cbLoadScreenShot.bChecked ) { Class'BDBMapVote'.Default.bLoadScreenShot=cbLoadScreenShot.bChecked; Class'BDBMapVote'.StaticSaveConfig(); } Super.Close(bByParent); } ]@vdK^9}30-a +xa/!# 8-z /g.x'xg d( gjd( |w|*|-|dr..|*.|-.x8Sorry, You can Not kick the Server or the Admin. gjd(pppBDBMapVote: .x has placed a Kick Vote against |s-i pp.x has placed a Kick Vote against |'pA Kick Vote has been placed against |'||D%D,  DjDjGDC%D%_D, UDGCGCDD#?CG??,d?C 31[CPpCPC2%CG%CjCPD%]D, SDG%a ^pppDP,SDGDa ^F32 Z[@\]@@la?,?,l. R lq(alMMaps/Kick  . aalMConfig S I .S aalMInfo o.a-alMAdmin s`.sa a//================================================================================ // MapStatusListItem. //================================================================================ class MapStatusListItem extends UWindowListBoxItem; var int rank; var string MapName; var float VoteCount; function int Compare (UWindowList t, UWindowList B) { if ( Caps(MapStatusListItem(t).MapName) < Caps(MapStatusListItem(B).MapName) ) { return -1; } return 1; } ^A g-?A &C. , $ A ,C. 8 $ A ,C. 6 $ C. 4 $ C3G  a^F ApMV F  F%//================================================================================ // MapStatusListBox. //================================================================================ class MapStatusListBox extends UWindowListBox; function Created () { Super.Created(); VertSB.Close(); VertSB=UWindowVScrollbar(CreateWindow(Class'PlainVScrollBar',WinWidth - 12,0.00,12.00,WinHeight)); } function Paint (Canvas C, float MouseX, float MouseY) { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,0.00,0.00,WinWidth,1.00,Texture'WhiteTexture'); DrawStretchedTexture(C,0.00,0.00,1.00,WinHeight - 1,Texture'WhiteTexture'); DrawStretchedTexture(C,20.00,0.00,1.00,WinHeight - 1,Texture'WhiteTexture'); DrawStretchedTexture(C,160.00,0.00,1.00,WinHeight - 1,Texture'WhiteTexture'); DrawStretchedTexture(C,0.00,WinHeight - 1,WinWidth,1.00,Texture'WhiteTexture'); Super.Paint(C,MouseX,MouseY); } function DrawItem (Canvas C, UWindowList Item, float X, float Y, float W, float H) { if ( MapStatusListItem(Item).bSelected ) { C.DrawColor.R=0; C.DrawColor.G=0; C.DrawColor.B=128; DrawStretchedTexture(C,X,Y + 1,W,H - 2,Texture'WhiteTexture'); C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,X,Y + H - 1,W,1.00,Texture'WhiteTexture'); DrawStretchedTexture(C,20.00,Y,1.00,H,Texture'WhiteTexture'); DrawStretchedTexture(C,0.00,Y,1.00,H,Texture'WhiteTexture'); DrawStretchedTexture(C,160.00,Y,1.00,H,Texture'WhiteTexture'); } else { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,X,Y + H - 1,W,1.00,Texture'WhiteTexture'); } C.Font=Root.Fonts[0]; ClipText(C,X + 5,Y,string(MapStatusListItem(Item).rank)); ClipText(C,X + 25,Y,MapStatusListItem(Item).MapName); ClipText(C,X + 165,Y,Left(string(MapStatusListItem(Item).VoteCount),3)); } function SelectMap (string MapName) { local MapStatusListItem MapItem; MapItem=MapStatusListItem(Items); JL0010: if ( MapItem != None ) { if ( MapName ~= MapItem.MapName ) { SetSelectedItem(MapItem); MakeSelectedVisible(); } else { MapItem=MapStatusListItem(MapItem.Next); goto JL0010; } } } function DoubleClickItem (UWindowListBoxItem i) { UWindowDialogClientWindow(ParentWindow).Notify(self,11); } `_iB/_& ,__, 8_, 6_, 4 gdh `] D J^wD*Gz.DTh  DDC . J $ C Th C -] -E  X@noYc oBoBpBpBc f o.o.p.p.f e o!o!p!p!e  Nyrv10-pD2(a/!J4.-bDefenseSet false, Ending game normally.(First half end)(5.-'mulD a?'( N//================================================================================ // MapListTemp. //================================================================================ class MapListTemp extends Info Config(MapListTemp); var config string PrefixDictionary; var config int MapCount; var config string M[1024]; f[oQ # J lD &v tp Jrwp*[z.pT&,D pt pp qw  ]//================================================================================ // KickStatusListItem. //================================================================================ class KickStatusListItem extends UWindowListBoxItem; var string PlayerName; var int VoteCount; function int Compare (UWindowList t, UWindowList B) { if ( Caps(KickStatusListItem(t).PlayerName) < Caps(KickStatusListItem(B).PlayerName) ) { return -1; } return 1; } mA . {q Jywq*bz.qT&,A .q-] ' qq U JB kG &qC OB H&q!G E$//================================================================================ // KickStatusListBox. //================================================================================ class KickStatusListBox extends UWindowListBox; function Created () { Super.Created(); VertSB.Close(); VertSB=UWindowVScrollbar(CreateWindow(Class'PlainVScrollBar',WinWidth - 12,0.00,12.00,WinHeight)); } function Paint (Canvas C, float MouseX, float MouseY) { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,0.00,0.00,WinWidth,1.00,Texture'WhiteTexture'); DrawStretchedTexture(C,0.00,0.00,1.00,WinHeight - 1,Texture'WhiteTexture'); DrawStretchedTexture(C,120.00,0.00,1.00,WinHeight - 1,Texture'WhiteTexture'); DrawStretchedTexture(C,0.00,WinHeight - 1,WinWidth,1.00,Texture'WhiteTexture'); Super.Paint(C,MouseX,MouseY); } function DrawItem (Canvas C, UWindowList Item, float X, float Y, float W, float H) { if ( KickStatusListItem(Item).bSelected ) { C.DrawColor.R=0; C.DrawColor.G=0; C.DrawColor.B=128; DrawStretchedTexture(C,X,Y + 1,W,H - 2,Texture'WhiteTexture'); C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,X,Y + H - 1,W,1.00,Texture'WhiteTexture'); DrawStretchedTexture(C,0.00,Y,1.00,H,Texture'WhiteTexture'); DrawStretchedTexture(C,120.00,Y,1.00,H,Texture'WhiteTexture'); } else { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,X,Y + H - 1,W,1.00,Texture'WhiteTexture'); } C.Font=Root.Fonts[0]; ClipText(C,X + 5,Y,Left(KickStatusListItem(Item).PlayerName,3) $ " - " $ Mid(KickStatusListItem(Item).PlayerName,3)); ClipText(C,X + 125,Y,string(KickStatusListItem(Item).VoteCount)); } function SelectPlayer (string PlayerName) { local KickStatusListItem PlayerItem; PlayerItem=KickStatusListItem(Items); JL0010: if ( PlayerItem != None ) { if ( (PlayerName ~= PlayerItem.PlayerName) || (PlayerName ~= PlayerItem.PlayerName) ) { SetSelectedItem(PlayerItem); MakeSelectedVisible(); } else { PlayerItem=KickStatusListItem(PlayerItem.Next); goto JL0010; } } } function DoubleClickItem (UWindowListBoxItem i) { UWindowDialogClientWindow(ParentWindow).Notify(self,11); } ptkCT V-( VKick J-}( s\,^|z\ClearYw &*. &< & Y~\,Y%Z\YH L\Y&u &Rwu*;z.u<Z.uY i &.u[ H  uuu. & $ .uY i &.u<Z.u[ H zZ &  @tJ"328pp.l has voted for  tS-a ila/!# ~zt,[X] t t/W.l'W adta% W2a NW2%d p000S.l,.d W2azkAccumulation29pppp.l has placed SdW votes for t'FzkScorepppp.l has placed UbW votes for t'pp.l voted for t'D( W//================================================================================ // KeyBinderListItem. //================================================================================ class KeyBinderListItem extends UWindowListBoxItem; var string KeyName; var string CommandString; function int Compare (UWindowList t, UWindowList B) { if ( Caps(KeyBinderListItem(t).KeyName) < Caps(KeyBinderListItem(B).KeyName) ) { return -1; } return 1; } ziiC Z% ippq-Wb#S~i.ii~i.HandleServerEmpty(): Currentmap:iDesired List:SZB&Bj  B|j iZIB BpServer is empty forSU Minutes. Actual Map is:i. Switching to a random map in ListSZV:H( uE'zE zECleargw M*c. Ml M R~E,R%UERJ JER&aw M*W MawW*Jz.WlU.WX J  WWW. M $ .WlU.WX J {c zcU M Ac v //================================================================================ // EmptyServerLevelSwitch. //================================================================================ class EmptyServerLevelSwitch extends Info; var int ServerEmptyTimeMins; var int ServerEmptyTime; var BDBMapVote MapVote; simulated function PreBeginPlay () { Super.PreBeginPlay(); ServerEmptyTime=0; SetTimer(60.00,False); } event Timer () { if ( Level.Game.NumPlayers == 0 ) { if ( ++ServerEmptyTime >= ServerEmptyTimeMins ) { MapVote.HandleServerEmpty(); ServerEmptyTime=0; return; } } else { ServerEmptyTime=0; } SetTimer(60.00,False); } WAID1,25)a/!J(Ha/!U(\-F 5%\5,R-6r5 {6*5 $6*5 &r$*ppMapVote: Error. CustomGameConfig[S5]: Failed to load GameClass:6*5 RR|$(5Za/!V265%-5.#rA*<A5.A5.55%5.A5<A5.'5427W`wW*IW->r}*1W}}WWWWwW*W- w}W1W}'WWt( {WR//================================================================================ // ConfigWindow. //================================================================================ class ConfigWindow extends UWindowPageWindow; var string RealKeyName[255]; var UMenuLabelControl lblMenuKey; var UMenuRaisedButton cmdMenuKey; var UWindowSmallButton CloseButton; var bool bPolling; var UMenuRaisedButton SelectedButton; var string OldHotKey; var UWindowHSliderControl sldMsgTimeOut; var UMenuLabelControl lblMsgTimeOut; var int sizefactor; var bool bSliderInited; var UWindowCheckbox cbUseMsgTimeout; function Created () { local Color C; Super.Created(); lblMenuKey=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',20.00,23.00,120.00,20.00)); lblMenuKey.SetText("Map Voting Menu Hot Key"); cmdMenuKey=UMenuRaisedButton(CreateControl(Class'UMenuRaisedButton',145.00,20.00,50.00,1.00)); cmdMenuKey.bAcceptsFocus=False; cmdMenuKey.bIgnoreLDoubleClick=True; cmdMenuKey.bIgnoreMDoubleClick=True; cmdMenuKey.bIgnoreRDoubleClick=True; sldMsgTimeOut=UWindowHSliderControl(CreateControl(Class'UWindowHSliderControl',20.00,80.00,170.00,20.00)); sldMsgTimeOut.bAcceptsFocus=False; sldMsgTimeOut.MinValue=3.00; sldMsgTimeOut.MaxValue=60.00; sldMsgTimeOut.Step=1; sldMsgTimeOut.SetText("Message Expiration"); sldMsgTimeOut.SetValue(Class'BDBMapVote'.Default.MsgTimeOut); bSliderInited=True; lblMsgTimeOut=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',200.00,80.00,40.00,20.00)); lblMsgTimeOut.SetText(string(sldMsgTimeOut.Value) $ " sec"); cbUseMsgTimeout=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',20.00,55.00,200.00,20.00)); cbUseMsgTimeout.SetText("Change Message Expiration"); cbUseMsgTimeout.SetFont(0); cbUseMsgTimeout.Align=TA_Right; cbUseMsgTimeout.SetSize(200.00,1.00); cbUseMsgTimeout.bChecked=Class'BDBMapVote'.Default.bUseMsgTimeout; sizefactor=WinHeight - 415; CloseButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',570.00,385.00 + sizefactor,80.00,20.00)); CloseButton.Text="Close"; CloseButton.DownSound=Sound'WeaponPickup'; CloseButton.bDisabled=False; CloseButton.bAcceptsFocus=False; SetAcceptsFocus(); LoadExistingKeys(); } function KeyDown (int Key, float X, float Y) { if ( bPolling ) { ProcessMenuKey(Key,RealKeyName[Key]); bPolling=False; SelectedButton.bDisabled=False; } } function LoadExistingKeys () { local int i; local string KeyName; local string Alias; i=0; JL0007: if ( i < 255 ) { KeyName=GetPlayerOwner().ConsoleCommand("KEYNAME " $ string(i)); RealKeyName[i]=KeyName; if ( KeyName != "" ) { Alias=GetPlayerOwner().ConsoleCommand("KEYBINDING " $ KeyName); if ( Caps(Alias) == "MUTATE BDBMAPVOTE VOTEMENU" ) { cmdMenuKey.SetText(KeyName); OldHotKey=KeyName; } } i++; goto JL0007; } } function Notify (UWindowDialogControl C, byte E) { Super.Notify(C,E); switch (E) { case 2: if ( UMenuRaisedButton(C) != None ) { SelectedButton=UMenuRaisedButton(C); if ( SelectedButton != None ) { bPolling=True; SelectedButton.bDisabled=True; } } switch (C) { case CloseButton: ParentWindow.ParentWindow.Close(); break; default: } break; case 1: switch (C) { case sldMsgTimeOut: if ( !bSliderInited ) { return; } if ( sldMsgTimeOut != None ) { lblMsgTimeOut.SetText(string(sldMsgTimeOut.Value) $ " sec"); } break; default: } break; default: } } function ProcessMenuKey (int KeyNo, string KeyName) { if ( (KeyName == "") || (KeyName == "Escape") || (KeyNo >= 112) && (KeyNo <= 121) || (KeyNo >= 48) && (KeyNo <= 57) ) { return; } SetKey(KeyNo,KeyName); } function SetKey (int KeyNo, string KeyName) { GetPlayerOwner().ConsoleCommand("SET Input " $ KeyName $ " mutate bdbmapvote votemenu"); SelectedButton.SetText(KeyName); if ( OldHotKey != "" ) { GetPlayerOwner().ConsoleCommand("SET Input " $ OldHotKey); } } function Close (optional bool bByParent) { SaveMapVoteConfig(); Super.Close(bByParent); } function SaveMapVoteConfig () { local bool bSaveNeeded; if ( (sldMsgTimeOut == None) || (cbUseMsgTimeout == None) ) { return; } bSaveNeeded=(Class'BDBMapVote'.Default.MsgTimeOut != sldMsgTimeOut.Value) || (Class'BDBMapVote'.Default.bUseMsgTimeout != cbUseMsgTimeout.bChecked); if ( bSaveNeeded ) { Class'BDBMapVote'.Default.MsgTimeOut=sldMsgTimeOut.Value; Class'BDBMapVote'.Default.bUseMsgTimeout=cbUseMsgTimeout.bChecked; Class'BDBMapVote'.StaticSaveConfig(); } if ( Class'BDBMapVote'.Default.bUseMsgTimeout ) { Class'SayMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'CriticalStringPlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'RedSayMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'TeamSayMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'StringMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'DeathMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; } } @T| muK/L 2| !L %%-L . r~ 6 a95s.~ r.} r& ^mL5" -M  )  )  )  )  )  ){m K-I^a?(Super.SetupWindow() = false a?( iQ (E 7-` -` '0-W_7q!Xuddd16bdCurrentPlayerCount decreased:Sd/%D(Fdfu,]u%15u 16u%w*a/!\w*ddIr*-a/!\17 pppnew Player , .-z18'T.19ap has been refused access to the server (1).'a U.19bp has been refused access to the server (2).'a a/!#Q, ":.,Q%"Q:.l p000S.,M ppSQl .20k .'k 2&@M (@M '-Q a/!#21Va/!J.-22 -23-pL.((V.24 MW2|  #%%i&C#WW'gCi,ih|gBWgyiC%tgBWCgigiCig, lz 6 _95s.z l.x l& YSy _F [y r[#[B[&B[.[&.[![&![ #B#.%#!%# L b//================================================================================ // BDBMapVote. //================================================================================ class BDBMapVote extends Mutator Config(MapVoteLAvv); struct CustConfig { var bool bEnabled; var string GameClass; var string NewPrefix; var string Mutators; var string Settings; }; struct MutActConfig { var string Prefixes; var string Classes; }; var() config bool bAutoDetect; var() config bool bDM; var() config bool bLMS; var() config bool bTDM; var() config bool bDOM; var() config bool bCTF; var() config bool bAS; var() config bool bSortWithPreFix; var() config string ASClass; var() config int VoteTimeLimit; var() config int KickPercent; var() config bool bUseMapList; var() config int ScoreBoardDelay; var() config bool bAutoOpen; var() config bool bKickVote; var() config bool bShowWhoKicksWho; var() config bool bCheckOtherGameTie; var() config int RepeatLimit; var() config int MapListIfNooneVoted; var() config string MapVoteHistoryType; var() config string ServerInfoURL; var() config string MapInfoURL; var() config int MidGameVotePercent; var() config string Mode; var() config int MinMapCount; var() config bool bRemoveCrashedMaps; var() config bool bEntryWindows; var() config bool bDebugMode; var() config bool bEnableEmptyServerLevelSwitch; var() config int EmptyServerLevelSwitchTimeMins; var() config int MsgTimeOut; var() config bool bLoadScreenShot; var() config bool bUseMsgTimeout; var() config bool bReloadMapsOnRequestOnly; var() config bool bFixCTFModifications; var() config string MapVoteTitle; var() config string LogoTexture; var() config float List1Priority; var() config float List2Priority; var() config float List3Priority; var() config float List4Priority; var() config string List1Title; var() config string List2Title; var() config string List3Title; var() config string List4Title; var() config bool bList1ObeyRepeatLimit; var() config bool bList2ObeyRepeatLimit; var() config bool bList3ObeyRepeatLimit; var() config bool bList4ObeyRepeatLimit; var() config bool bUseExcludeFilter; var() config CustConfig CustomGameConfig[16]; var() config string DefaultSettings; var() config string List1Filter[201]; var() config string List2Filter[201]; var() config string List3Filter[201]; var() config string List4Filter[201]; var() config string ExcludeFilter[501]; var() config string CrashedMaps[32]; var() config string AccName[32]; var() config int AccVotes[32]; var() config string TmpNextVirtualPrefix; var() config string TmpNextRealPrefix; var bool bInitialized; var string MapList[1024]; var int PlayerIDList[32]; var int PlayerVote[32]; var int MapCount; var int PlayerKickVote[32]; var string MapStatusText[32]; var string KickStatusText[32]; var string KickIPList[32]; var string KickPlayerList[32]; var float EndGameTime; var bool bMidGameVote; var int CurrentID; var int CurrentPlayerCount; var int JoinTickCount; var float MaxPriority; var string TravelMap; var bool bAutoGame; var string AutoGame; var string PrefixDictionary; var int TimeLeft; var int ScoreBoardTime; var int ServerTravelTime; var Class AutoGameClass; var Class CustomGameClass; var Class MapVoteHistoryClass; var bool bLevelSwitchPending; var string ServerTravelString; var bool bInitMapsLoaded; var bool bMapReloadRequested; var MapVoteHistory History; var int pos; var int i; var string GamePackage; var string NewPrefix; var bool bBunnyshit; var string ActualMapPrefix; function bool HandleEndGame () { local Pawn aPawn; DebugLog("1"); Super.HandleEndGame(); if ( !bAutoOpen || CheckForTie() ) { DebugLog("2"); return False; } if ( Level.Game.IsA('Assault') ) { DebugLog("4"); if ( !Assault(Level.Game).bDefenseSet ) { DebugLog("bDefenseSet false, Ending game normally.(First half end)"); return False; } } DebugLog("5"); DeathMatchPlus(Level.Game).bDontRestart=True; TimeLeft=VoteTimeLimit; ScoreBoardTime=ScoreBoardDelay; SetTimer(1.00,True); return False; } function HandleServerEmpty () { local string CurrentMap; local string TestMap; local int i; local int Map; if ( MapListIfNooneVoted == 0 ) { return; } CurrentMap=TmpNextVirtualPrefix $ "-" $ RemovePrefix(GetURLMap()); if ( InStr(CurrentMap,".") > -1 ) { CurrentMap=Left(CurrentMap,InStr(CurrentMap,".")); } DebugLog("HandleServerEmpty(): Currentmap:" @ CurrentMap @ "Desired List:" @ string(MapListIfNooneVoted)); for ( i=1; i<=MapCount; i++ ) { TestMap=GetPureMapname(MapList[i]); if ( TestMap ~= CurrentMap ) { if ( MapListIfNooneVoted == GetMapListNumber(MapList[i]) ) return; } } Log("Server is empty for" @ string(EmptyServerLevelSwitchTimeMins) @ "Minutes. Actual Map is:" @ CurrentMap $ ". Switching to a random map in List" @ string(MapListIfNooneVoted)); Level.ServerTravel(SetupGameMap(MapList[GetRandomMap()]),False); } event Timer () { local Pawn aPawn; local int VoterNum; local int NoVoteCount; local int MapNum; local MapVoteWRI A; local Pawn P; local int i; local MapVoteWRI mwri; foreach AllActors(Class'MapVoteWRI',mwri) { i++; } if ( bLevelSwitchPending ) { DebugLog("6"); if ( Level.TimeSeconds > ServerTravelTime + 4 ) { DebugLog("NextURL = " $ Level.NextURL); DebugLog("NextSwitchCountdown = " $ string(Level.NextSwitchCountdown)); if ( Level.NextURL == "" ) { DebugLog("7"); if ( Level.NextSwitchCountdown < 0 ) { Log("Map change Failed, bad or missing map file. TravelMap:" @ TravelMap); if ( bRemoveCrashedMaps ) { HandleFailedMap(TravelMap); } MapNum=GetRandomMap(); ServerTravelString=SetupGameMap(MapList[MapNum]); Level.ServerTravel(ServerTravelString,False); } else { Level.ServerTravel(ServerTravelString,False); } } } return; } if ( ScoreBoardTime > 0 ) { DebugLog("8"); ScoreBoardTime--; if ( ScoreBoardTime == 0 ) { DebugLog("9"); EndGameTime=Level.TimeSeconds; for ( aPawn=Level.PawnList; aPawn != None; aPawn=aPawn.nextPawn ) { if ( (PlayerPawn(aPawn) != None) && aPawn.bIsPlayer ) { VoterNum=FindPlayerIndex(PlayerPawn(aPawn).PlayerReplicationInfo.PlayerID,True); if ( VoterNum > -1 ) { if ( PlayerVote[VoterNum] == 0 ) { OpenVoteWindow(PlayerPawn(aPawn),False,False); } } } } BroadcastMessage(string(TimeLeft) $ " seconds left to vote.",True); } return; } TimeLeft--; if ( TimeLeft == 60 ) { DebugLog("10"); BroadcastMessage("1 Minute left to vote.",True); for ( P=Level.PawnList; P != None; P=P.nextPawn ) { if ( P.IsA('TournamentPlayer') ) { TournamentPlayer(P).TimeMessage(12); } } } if ( TimeLeft == 10 ) { DebugLog("11"); BroadcastMessage("10 seconds left to vote.",True); } if ( (TimeLeft < 11) && (TimeLeft > 0) ) { for ( P=Level.PawnList; P != None; P=P.nextPawn ) { if ( P.IsA('TournamentPlayer') ) { TournamentPlayer(P).TimeMessage(TimeLeft); } } } CleanUpPlayerIDs(); if ( (TimeLeft % 20 == 0) && (TimeLeft > 0) ) { DebugLog("12"); NoVoteCount=0; aPawn=Level.PawnList; JL042D: if ( aPawn != None ) { if ( aPawn.bIsPlayer && (PlayerPawn(aPawn) != None) ) { VoterNum=FindPlayerIndex(PlayerPawn(aPawn).PlayerReplicationInfo.PlayerID,True); if ( VoterNum > -1 ) { if ( PlayerVote[VoterNum] == 0 ) { NoVoteCount++; } } } aPawn=aPawn.nextPawn; goto JL042D; } if ( NoVoteCount == 0 ) { DebugLog("13"); TallyVotes(True); } } if ( TimeLeft == 0 ) { DebugLog("14"); TallyVotes(True); } } function Tick (float DeltaTime) { local string PlayerName; local string PID; local int TeamID; local Pawn Other; local int PlayerIndex; local WRI aWRI; Super.Tick(DeltaTime); if ( !bInitMapsLoaded ) { bInitMapsLoaded=True; if ( bReloadMapsOnRequestOnly ) { LoadMapListConfig(); } else { GotoState('Loading'); } } if ( Level.Game.NumPlayers > CurrentPlayerCount ) { CurrentPlayerCount=Level.Game.NumPlayers; } if ( Level.Game.NumPlayers < CurrentPlayerCount ) { DebugLog("16b"); CurrentPlayerCount=Level.Game.NumPlayers; DebugLog("CurrentPlayerCount decreased:" @ string(CurrentPlayerCount)); CleanUpPlayerIDs(); if ( Level.Game.NumPlayers > 0 ) { TallyVotes(False); UpdateOpenWRI(); } } if ( Level.Game.CurrentID > CurrentID ) { if ( JoinTickCount < 20 ) { if ( JoinTickCount == 0 ) { DebugLog("15"); } JoinTickCount++; return; } DebugLog("16"); JoinTickCount=0; Other=Level.PawnList; JL018B: if ( Other != None ) { if ( Other.IsA('PlayerPawn') && (Other.PlayerReplicationInfo != None) && (Other.PlayerReplicationInfo.PlayerID == CurrentID) ) { goto JL01FD; } Other=Other.nextPawn; goto JL018B; } JL01FD: CurrentID++; if ( (Other == None) || !Other.bIsPlayer || !Other.IsA('PlayerPawn') ) { DebugLog("17"); return; } DebugLog("new Player " $ Other.PlayerReplicationInfo.PlayerName $ ", " $ PlayerPawn(Other).GetPlayerNetworkAddress()); if ( bKickVote ) { DebugLog("18"); if ( CheckKickIP(PlayerPawn(Other).GetPlayerNetworkAddress()) ) { DebugLog("19a"); BroadcastMessage(Other.PlayerReplicationInfo.PlayerName $ " has been refused access to the server (1).",True); Other.Destroy(); return; } if ( CheckKickPlayer(PlayerPawn(Other).PlayerReplicationInfo.PlayerName) ) { DebugLog("19b"); BroadcastMessage(Other.PlayerReplicationInfo.PlayerName $ " has been refused access to the server (2).",True); Other.Destroy(); return; } if ( Other.IsA('Spectator') ) { TeamID=9; } else { if ( PlayerPawn(Other).PlayerReplicationInfo.Team == 255 ) { TeamID=0; } else { TeamID=PlayerPawn(Other).PlayerReplicationInfo.Team; } } PID=Right("000" $ string(PlayerPawn(Other).PlayerReplicationInfo.PlayerID),3); PlayerName=string(TeamID) $ PID $ PlayerPawn(Other).PlayerReplicationInfo.PlayerName; DebugLog("20"); PlayerIndex=FindPlayerIndex(PlayerPawn(Other).PlayerReplicationInfo.PlayerID,True); if ( PlayerVote[PlayerIndex] < 1 ) { AddNewPlayer(PlayerName,False); } else { AddNewPlayer(PlayerName,True); } } if ( bEntryWindows && !Other.IsA('Spectator') ) { DebugLog("21"); if ( Level.Game.IsA('Assault') && Assault(Level.Game).bDefenseSet ) { DebugLog("22"); return; } if ( Level.Game.bGameEnded ) { DebugLog("23"); if ( bAutoOpen ) { OpenVoteWindow(PlayerPawn(Other),False,False); } } else { OpenWelcomeWindow(PlayerPawn(Other)); } } DebugLog("24"); } } function bool CheckForTie () { local TeamInfo Best; local int i; local Pawn P; local Pawn BestP; local PlayerPawn Player; DebugLog("25"); if ( Level.Game.IsA('Assault') ) { return False; } if ( Level.Game.IsA('Domination') ) { return False; } if ( !bCheckOtherGameTie ) { i=0; JL005A: if ( i < 16 ) { if ( CustomGameConfig[i].bEnabled && (CustomGameConfig[i].GameClass != "") ) { CustomGameClass=Class(DynamicLoadObject(CustomGameConfig[i].GameClass,Class'Class')); if ( CustomGameClass == None ) { Log("MapVote: Error. CustomGameConfig[" $ string(i) $ "]: Failed to load GameClass:" @ CustomGameConfig[i].GameClass); } else { if ( CustomGameClass.Default.MapPrefix ~= Level.Game.MapPrefix ) { return False; } } } i++; goto JL005A; } } if ( Level.Game.IsA('TeamGamePlus') ) { DebugLog("26"); i=0; JL018A: if ( i < TeamGamePlus(Level.Game).MaxTeams ) { if ( (Best == None) || (Best.Score < TeamGamePlus(Level.Game).Teams[i].Score) ) { Best=TeamGamePlus(Level.Game).Teams[i]; } i++; goto JL018A; } i=0; JL0234: if ( i < TeamGamePlus(Level.Game).MaxTeams ) { if ( (Best.TeamIndex != i) && (Best.Score == TeamGamePlus(Level.Game).Teams[i].Score) ) { return True; } i++; goto JL0234; } } else { DebugLog("27"); P=Level.PawnList; JL02DF: if ( P != None ) { if ( P.bIsPlayer && ((BestP == None) || (P.PlayerReplicationInfo.Score > BestP.PlayerReplicationInfo.Score)) ) { BestP=P; } P=P.nextPawn; goto JL02DF; } P=Level.PawnList; JL0374: if ( P != None ) { if ( P.bIsPlayer && (BestP != P) && (P.PlayerReplicationInfo.Score == BestP.PlayerReplicationInfo.Score) ) { return True; } P=P.nextPawn; goto JL0374; } } return False; } function SubmitVote (string MapName, Actor Voter) { local int PlayerIndex; local int X; local int MapIndex; local string PID; DebugLog("28"); Log(PlayerPawn(Voter).PlayerReplicationInfo.PlayerName $ " has voted for " $ GetPureMapname(MapName)); if ( bLevelSwitchPending ) { return; } if ( Voter.IsA('Spectator') ) { return; } if ( Left(MapName,3) == "[X]" ) { return; } MapName=GetPureMapname(MapName); CleanUpPlayerIDs(); PlayerIndex=FindPlayerIndex(PlayerPawn(Voter).PlayerReplicationInfo.PlayerID,True); if ( PlayerIndex == -1 ) { return; } MapIndex=GetMapIndex(MapName); if ( MapIndex == 0 ) { return; } if ( PlayerVote[PlayerIndex] == MapIndex ) { return; } if ( PlayerVote[PlayerIndex] <= 0 ) { PID=Right("000" $ string(PlayerPawn(Voter).PlayerReplicationInfo.PlayerID),3); UpdatePlayerVoted(PID); } PlayerVote[PlayerIndex]=MapIndex; if ( Mode == "Accumulation" ) { DebugLog("29"); BroadcastMessage(PlayerPawn(Voter).PlayerReplicationInfo.PlayerName $ " has placed " $ string(GetAccVote(PlayerIndex)) $ " votes for " $ MapName,True); } else { if ( Mode == "Score" ) { BroadcastMessage(PlayerPawn(Voter).PlayerReplicationInfo.PlayerName $ " has placed " $ string(GetPlayerScore(PlayerIndex)) $ " votes for " $ MapName,True); } else { BroadcastMessage(PlayerPawn(Voter).PlayerReplicationInfo.PlayerName $ " voted for " $ MapName,True); } } TallyVotes(False); } function SubmitKickVote (int PlayerID, Actor Voter) { local Pawn aPawn; local int VoterNum; local int X; local int Y; local int VoteCount[32]; local int Lamer; DebugLog("30"); if ( bLevelSwitchPending ) { return; } if ( Voter.IsA('Spectator') ) { return; } if ( !bKickVote ) { return; } CleanUpPlayerIDs(); VoterNum=FindPlayerIndex(PlayerPawn(Voter).PlayerReplicationInfo.PlayerID,True); if ( VoterNum == -1 ) { return; } if ( FindPlayerIndex(PlayerID,False) == -1 ) { return; } if ( PlayerKickVote[VoterNum] == FindPlayerIndex(PlayerID,False) ) { return; } aPawn=Level.PawnList; JL00C2: if ( aPawn != None ) { if ( aPawn.bIsPlayer && (aPawn.PlayerReplicationInfo.PlayerID == PlayerID) ) { if ( (NetConnection(PlayerPawn(aPawn).Player) == None) || PlayerPawn(aPawn).bAdmin ) { PlayerPawn(Voter).ClientMessage("Sorry, You can Not kick the Server or the Admin."); return; } else { PlayerKickVote[VoterNum]=FindPlayerIndex(PlayerID,False); Log("BDBMapVote: " $ PlayerPawn(Voter).PlayerReplicationInfo.PlayerName $ " has placed a Kick Vote against " $ aPawn.PlayerReplicationInfo.PlayerName); if ( bShowWhoKicksWho ) { BroadcastMessage(PlayerPawn(Voter).PlayerReplicationInfo.PlayerName $ " has placed a Kick Vote against " $ aPawn.PlayerReplicationInfo.PlayerName,True); } else { BroadcastMessage("A Kick Vote has been placed against " $ aPawn.PlayerReplicationInfo.PlayerName,True); } } } aPawn=aPawn.nextPawn; goto JL00C2; } X=0; JL02D7: if ( X < 32 ) { if ( PlayerKickVote[X] != -1 ) { VoteCount[PlayerKickVote[X]]++; } X++; goto JL02D7; } Lamer=0; X=0; JL0323: if ( X < 32 ) { if ( VoteCount[X] > VoteCount[Lamer] ) { Lamer=X; } X++; goto JL0323; } if( (float(VoteCount[Lamer])/float(Level.Game.NumPlayers))*100 >= KickPercent) { DebugLog("31"); KickPlayer(PlayerIDList[Lamer],GetPlayerName(PlayerIDList[Lamer])); PlayerVote[Lamer]=0; VoteCount[Lamer]=0; PlayerKickVote[Lamer]=-1; PlayerIDList[Lamer]=-1; } X=0; JL0404: if ( X < 32 ) { if ( VoteCount[X] > 0 ) { KickStatusText[Y++ ]=GetPlayerName(PlayerIDList[X]) $ "," $ string(VoteCount[X]); } X++; goto JL0404; } KickStatusText[Y]=""; UpdateOpenWRI(); DebugLog("32"); } function KickPlayer (int PlayerID, string PlayerName) { local Pawn aPawn; local string IP; local string PID; local MapVoteWRI MVWRI; DebugLog("Playerkicked:" @ string(PlayerID) @ PlayerName); aPawn=Level.PawnList; JL0038: if ( aPawn != None ) { if ( aPawn.bIsPlayer && (aPawn.PlayerReplicationInfo.PlayerID == PlayerID) && ((PlayerPawn(aPawn) == None) || (NetConnection(PlayerPawn(aPawn).Player) != None)) ) { BroadcastMessage(aPawn.PlayerReplicationInfo.PlayerName $ " has been kicked.",True); IP=PlayerPawn(aPawn).GetPlayerNetworkAddress(); AddKickIP(IP); AddKickName(Mid(PlayerName,4)); if ( bKickVote ) { PID=Right("000" $ string(aPawn.PlayerReplicationInfo.PlayerID),3); RemovePlayerName(Right("000" $ PID,3)); } foreach AllActors(Class'MapVoteWRI',MVWRI) { if ( aPawn == MVWRI.Owner ) { MVWRI.CloseWindow(); MVWRI.Destroy(); } else { } } aPawn.Destroy(); return; } aPawn=aPawn.nextPawn; goto JL0038; } DebugLog("34"); } function AddKickIP (string IP) { local int i; local int P; local string ShortIP; DebugLog("35" @ IP); if ( IP == "" ) { return; } P=InStr(IP,":"); if ( P > -1 ) { ShortIP=Left(IP,P); } else { ShortIP=IP; } i=0; JL0065: if ( i < 31 ) { if ( KickIPList[i] == "" ) { KickIPList[i]=ShortIP; return; } i++; goto JL0065; } DebugLog("36"); } function AddKickName (string PlayerName) { local int i; local int P; local string ShortIP; DebugLog("35a" @ PlayerName); if ( PlayerName == "" ) { return; } i=0; JL0027: if ( i < 31 ) { if ( KickPlayerList[i] == "" ) { KickPlayerList[i]=PlayerName; return; } i++; goto JL0027; } DebugLog("36a"); } function bool CheckKickIP (string IP) { local int i; local int P; local string ShortIP; DebugLog("37" @ IP); if ( IP == "" ) { return False; } P=InStr(IP,":"); if ( P > -1 ) { ShortIP=Left(IP,P); } else { ShortIP=IP; } i=0; JL0065: if ( i < 32 ) { if ( KickIPList[i] == ShortIP ) { return True; } i++; goto JL0065; } DebugLog("38"); return False; } function bool CheckKickPlayer (string PlayerName) { local int i; local int P; DebugLog("37a" @ PlayerName); if ( PlayerName == "" ) { return False; } i=0; JL0027: if ( i < 32 ) { if ( KickPlayerList[i] == PlayerName ) { return True; } i++; goto JL0027; } DebugLog("38a"); return False; } simulated function PreBeginPlay () { local int X; local MapVoteWRI MVWRI; local EmptyServerLevelSwitch ESLS; local string defaultPrefix; DebugLog("39"); if ( !bInitialized ) { DebugLog("40"); X=0; JL0026: if ( X < 32 ) { PlayerIDList[X]=-1; PlayerKickVote[X]=-1; X++; goto JL0026; } MaxPriority=MaxFloat(Max(Max(List1Priority,List2Priority),List3Priority),List4Priority); DebugLog("MaxPriority:" @ string(MaxPriority)); StartMutatorsAndSettings(); if ( bEnableEmptyServerLevelSwitch ) { ESLS=Level.Spawn(Class'EmptyServerLevelSwitch'); ESLS.ServerEmptyTimeMins=EmptyServerLevelSwitchTimeMins; ESLS.MapVote=self; } CustomGameClass=Class(DynamicLoadObject(ASClass,Class'Class')); if ( CustomGameClass == None ) { if ( !ClassIsChildOf(CustomGameClass,Class'Assault') ) { DebugLog("ASClass fixed"); ASClass="Botpack.Assault"; } SaveConfig(); } bInitialized=True; } DebugLog("41"); Super.PreBeginPlay(); } function Mutate (string MutateString, PlayerPawn Sender) { local string MapName; local string PlayerName; local int PlayerID; local int pos; local int seq; local MapVoteReport MVReport; local int ObjectCount; local MapVoteWRI MVWRI; local MapVoteHistory MVHistory; local int i; local string CustSetting; Super.Mutate(MutateString,Sender); if ( Left(Caps(MutateString),10) == "BDBMAPVOTE" ) { DebugLog("42"); if ( Mid(Caps(MutateString),11,8) == "VOTEMENU" ) { DebugLog("43"); if ( (Level.TimeSeconds > 15) || (Level.NetMode == 0) || Sender.bAdmin ) { CleanUpPlayerIDs(); OpenVoteWindow(Sender,True,True); } else { Sender.ClientMessage("Please wait 15 seconds to vote"); } return; } if ( Mid(Caps(MutateString),11,6) == "REPORT" ) { DebugLog("201"); ObjectCount=0; foreach AllActors(Class'MapVoteReport',MVReport) { ObjectCount++; } if ( ObjectCount > 0 ) { Sender.ClientMessage("Sorry, The server can only run one report at a time, please try again later."); return; } MVReport=Spawn(Class'MapVoteReport'); if ( MVReport != None ) { MVReport.RunRport(Caps(Mid(MutateString,18)),Sender,MapVoteHistoryClass); } else { Log("Failed to spawn MVReport"); } return; } if ( Sender.IsA('Spectator') && !Sender.bAdmin ) { Sender.ClientMessage("Spectators are not allowed to vote."); return; } if ( Mid(Caps(MutateString),11,3) == "MAP" ) { DebugLog("44"); MapName=Mid(MutateString,15); if ( Sender.bAdmin ) { MapName=GetPureMapname(MapName); BroadcastMessage("Server Admin has force a map switch to " $ MapName,True); ServerTravelString=SetupGameMap(MapName); CloseAllVoteWindows(); Level.ServerTravel(ServerTravelString,False); } else { SubmitVote(MapName,Sender); } return; } if ( Mid(Caps(MutateString),11,4) == "KICK" ) { DebugLog("45"); PlayerName=Mid(MutateString,16); PlayerID=int(Mid(Left(PlayerName,4),2)); if ( Sender.bAdmin ) { Log("BDBMapVote: Admin (" $ Sender.PlayerReplicationInfo.PlayerName $ ") kicked player:" @ PlayerName); KickPlayer(PlayerID,PlayerName); } else { if ( bKickVote ) { SubmitKickVote(PlayerID,Sender); } else { Sender.ClientMessage("Kickvote is disabled"); } } return; } if ( Mid(Caps(MutateString),11,10) == "RELOADMAPS" ) { DebugLog("46"); if ( Sender.bAdmin ) { DebugLog("47"); GotoState('Loading','BeginRequested'); } return; } if ( Mid(Caps(MutateString),11,15) == "LISTCRASHEDMAPS" ) { DebugLog("46a"); if ( Sender.bAdmin ) { Sender.ClientMessage("Mapvote: Crashed Maps:"); i=0; JL04D5: if ( (i < 32) && (CrashedMaps[i] != "") ) { Sender.ClientMessage(string(i) $ ":" @ CrashedMaps[i]); i++; goto JL04D5; } if ( i == 0 ) { Sender.ClientMessage("Mapvote: No maps crashed"); } } } if ( Mid(Caps(MutateString),11,16) == "CLEARCRASHEDMAPS" ) { DebugLog("46a"); if ( Sender.bAdmin ) { i=0; JL05A2: if ( i < 32 ) { CrashedMaps[i]=""; i++; goto JL05A2; } SaveConfig(); Sender.ClientMessage("Crashed Maps List Cleared!"); } } if ( Mid(Caps(MutateString),11,6) == "STATUS" ) { DebugLog("49"); Sender.ClientMessage("Total Map Count is " $ string(MapCount)); ObjectCount=0; foreach AllActors(Class'MapVoteWRI',MVWRI) { ObjectCount++; } Sender.ClientMessage("Active MapVoteWRI count is " $ string(ObjectCount)); ObjectCount=0; foreach AllActors(Class'MapVoteReport',MVReport) { ObjectCount++; } Sender.ClientMessage("Active MapVoteReport count is " $ string(ObjectCount)); ObjectCount=0; foreach AllActors(Class'MapVoteHistory',MVHistory) { ObjectCount++; } Sender.ClientMessage("Active MapVoteHistory count is " $ string(ObjectCount)); return; } if ( Mid(Caps(MutateString),11,6) == "SETSEQ" ) { DebugLog("50"); if ( Sender.bAdmin ) { MapName=Mid(MutateString,18); pos=InStr(MapName," "); if ( pos < 1 ) { Sender.ClientMessage("Syntax Error"); return; } seq=int(Mid(MapName,pos + 1)); MapName=Left(MapName,pos); MVHistory=Spawn(MapVoteHistoryClass); MVHistory.SetMapSequence(MapName,seq); MVHistory.Save(); MVHistory.Destroy(); Sender.ClientMessage("Sequence changed !"); } else { Sender.ClientMessage("You must be a server admin to perform this fuction !"); } return; } if ( Mid(Caps(MutateString),11,5) == "SETPC" ) { DebugLog("51"); if ( Sender.bAdmin ) { MapName=Mid(MutateString,17); pos=InStr(MapName," "); if ( pos < 1 ) { Sender.ClientMessage("Syntax Error"); return; } seq=int(Mid(MapName,pos + 1)); MapName=Left(MapName,pos); MVHistory=Spawn(MapVoteHistoryClass); MVHistory.SetPlayCount(MapName,seq); MVHistory.Save(); MVHistory.Destroy(); Sender.ClientMessage("PlayCount changed !"); } else { Sender.ClientMessage("You must be a server admin to perform this fuction !"); } return; } if ( Mid(Caps(MutateString),11,11) == "CUSTSETTING" ) { DebugLog("45b"); if ( Sender.bAdmin ) { CustSetting=Mid(MutateString,23,16); DebugLog("new Custsetting:" @ CustSetting); i=0; JL0A68: if ( i < 16 ) { if ( Mid(CustSetting,i,1) == "1" ) { CustomGameConfig[i].bEnabled=True; } else { CustomGameConfig[i].bEnabled=False; } i++; goto JL0A68; } SaveConfig(); } return; } } } function OpenVoteWindow (PlayerPawn Sender, bool bSpecsAllowed, bool bManualOpen) { local MapVoteWRI MVWRI; local int X; local int PlayerCount; local int Y; local int i; local Pawn P; local MapVoteWRI A; local int TeamID; local string PID; local string CustState; DebugLog("52: OpenVoteWindow()"); if ( Sender.IsA('Spectator') && !Sender.bAdmin && !bSpecsAllowed ) { return; } if ( bLevelSwitchPending ) { return; } foreach AllActors(Class'MapVoteWRI',A) { if ( Sender == A.Owner ) { DebugLog("53: WRI already Spawned --> return"); return; } } MVWRI=Spawn(Class'MapVoteWRI',Sender,,Sender.Location); if ( MVWRI == None ) { Log("#### -- PostLogin :: Fail:: Could not spawn WRI"); return; } MVWRI.MapVoteMutator=self; MVWRI.List1Priority=List1Priority; MVWRI.List2Priority=List2Priority; MVWRI.List3Priority=List3Priority; MVWRI.List4Priority=List4Priority; MVWRI.MapCount=MapCount; i=0; JL0194: if ( i < 256 ) { MVWRI.MapList1[i]=MapList[i]; MVWRI.MapList2[i]=MapList[i + 256]; MVWRI.MapList3[i]=MapList[i + 512]; MVWRI.MapList4[i]=MapList[i + 768]; i++; goto JL0194; } if ( Sender.bAdmin ) { CustState=""; i=0; JL0263: if ( i < 16 ) { if ( CustomGameConfig[i].bEnabled ) { CustState=CustState $ "1"; } else { CustState=CustState $ "0"; } if ( CustomGameConfig[i].NewPrefix != "" ) { MVWRI.CustomGames[i]=CustomGameConfig[i].GameClass $ " (" $ CustomGameConfig[i].NewPrefix $ ")"; } else { MVWRI.CustomGames[i]=CustomGameConfig[i].GameClass; } i++; goto JL0263; } MVWRI.CustomGamesState=CustState; } MVWRI.PrefixDictionary=PrefixDictionary; DebugLog("54"); PlayerCount=0; P=Level.PawnList; JL037E: if ( P != None ) { if ( (PlayerPawn(P) != None) && P.bIsPlayer ) { if ( P.IsA('Spectator') ) { TeamID=9; } else { if ( PlayerPawn(P).PlayerReplicationInfo.Team == 255 ) { TeamID=0; } else { TeamID=PlayerPawn(P).PlayerReplicationInfo.Team; } } PID=Right("000" $ string(PlayerPawn(P).PlayerReplicationInfo.PlayerID),3); if ( PlayerVote[FindPlayerIndex(PlayerPawn(P).PlayerReplicationInfo.PlayerID,True)] > 0 ) { MVWRI.PlayerName[PlayerCount++ ]=string(TeamID) $ PID $ PlayerPawn(P).PlayerReplicationInfo.PlayerName $ "&?&!&"; } else { MVWRI.PlayerName[PlayerCount++ ]=string(TeamID) $ PID $ PlayerPawn(P).PlayerReplicationInfo.PlayerName; } } P=P.nextPawn; goto JL037E; } X=0; JL0528: if ( (MapStatusText[X] != "") && (X < 31) ) { MVWRI.MapVoteResults[X]=MapStatusText[X]; X++; goto JL0528; } MVWRI.MapVoteResults[X]=""; Y=0; if ( bKickVote ) { DebugLog("55"); JL05A3: if ( (KickStatusText[Y] != "") && (Y < 31) ) { MVWRI.KickVoteResults[Y]=KickStatusText[Y++ ]; goto JL05A3; } MVWRI.KickVoteResults[Y]=""; } MVWRI.GetServerConfig(); DebugLog("56"); } function OpenWelcomeWindow (PlayerPawn Sender) { local MVWelcomeWRI MVWWRI; local MVWelcomeWRI A; DebugLog("57"); if ( Sender.IsA('Spectator') ) { return; } foreach AllActors(Class'MVWelcomeWRI',A) { if ( Sender == A.Owner ) { return; } } MVWWRI=Spawn(Class'MVWelcomeWRI',Sender,,Sender.Location); if ( MVWWRI == None ) { Log("#### -- PostLogin :: Fail:: Could not spawn MVWelcomeWRI"); return; } MVWWRI.GetServerConfig(); DebugLog("58"); } function int FindPlayerIndex (int PlayerID, bool bAddIfNotFound) { local int X; DebugLog("59"); X=0; JL0011: if ( X < 32 ) { if ( PlayerIDList[X] == PlayerID ) { return X; } X++; goto JL0011; } if ( bAddIfNotFound ) { DebugLog("59b"); X=0; JL005D: if ( X < 32 ) { if ( PlayerIDList[X] == -1 ) { PlayerIDList[X]=PlayerID; return X; } X++; goto JL005D; } } Log("Mapvote: Could not find PlayerIndex. Already left?"); DebugLog("60"); return -1; } function AddNewPlayer (string NewPlayerName, bool bHasVoted) { local MapVoteWRI MVWRI; local Pawn P; DebugLog("61"); foreach AllActors(Class'MapVoteWRI',MVWRI) { MVWRI.AddNewPlayer(NewPlayerName,bHasVoted); } DebugLog("62"); } function RemovePlayerName (string OldPlayerName) { local MapVoteWRI MVWRI; local Pawn P; DebugLog("63"); foreach AllActors(Class'MapVoteWRI',MVWRI) { MVWRI.RemovePlayerName(OldPlayerName); } } function UpdatePlayerVoted (string PlayerID) { local MapVoteWRI MVWRI; local Pawn P; DebugLog("63"); foreach AllActors(Class'MapVoteWRI',MVWRI) { MVWRI.UpdatePlayerVoted(PlayerID); } } function CleanUpPlayerIDs () { local Pawn aPawn; local int X; local bool bFound; DebugLog("64"); X=0; JL0011: if ( X < 32 ) { if ( PlayerIDList[X] > -1 ) { bFound=False; aPawn=Level.PawnList; JL004E: if ( aPawn != None ) { if ( aPawn.bIsPlayer && aPawn.IsA('PlayerPawn') && (PlayerPawn(aPawn).PlayerReplicationInfo.PlayerID == PlayerIDList[X]) ) { bFound=True; } else { aPawn=aPawn.nextPawn; goto JL004E; } } if ( !bFound ) { DebugLog("Removing Player that has left:" @ string(PlayerIDList[X])); if ( bKickVote ) { RemovePlayerName(Right("000" $ string(PlayerIDList[X]),3)); } PlayerVote[X]=0; PlayerKickVote[X]=-1; PlayerIDList[X]=-1; } } X++; goto JL0011; } DebugLog("65"); } function string GetPlayerName (int PlayerID) { local Pawn aPawn; local string PlayerName; DebugLog("66"); PlayerName="unknown"; aPawn=Level.PawnList; JL002D: if ( aPawn != None ) { if ( aPawn.bIsPlayer && (PlayerPawn(aPawn) != None) ) { if ( PlayerPawn(aPawn).PlayerReplicationInfo.PlayerID == PlayerID ) { PlayerName=Right("000" $ string(PlayerID),3) $ aPawn.PlayerReplicationInfo.PlayerName; } else { aPawn=aPawn.nextPawn; goto JL002D; } } } return PlayerName; } function float GetPlayerScore (int PlayerIndex) { local Pawn aPawn; local float PlayerScore; DebugLog("67"); aPawn=Level.PawnList; JL001E: if ( aPawn != None ) { if ( aPawn.bIsPlayer && (PlayerPawn(aPawn) != None) ) { if ( PlayerPawn(aPawn).PlayerReplicationInfo.PlayerID == PlayerIDList[PlayerIndex] ) { PlayerScore=PlayerPawn(aPawn).PlayerReplicationInfo.Score; } else { aPawn=aPawn.nextPawn; goto JL001E; } } } if ( PlayerScore < 1 ) { PlayerScore=1.00; } return PlayerScore; } function int GetAccVote (int PlayerIndex) { local Pawn aPawn; local int X; local int PlayerAccVotes; local string PlayerName; DebugLog("68"); aPawn=Level.PawnList; JL001E: if ( aPawn != None ) { if ( aPawn.bIsPlayer && (PlayerPawn(aPawn) != None) ) { if ( PlayerPawn(aPawn).PlayerReplicationInfo.PlayerID == PlayerIDList[PlayerIndex] ) { PlayerName=PlayerPawn(aPawn).PlayerReplicationInfo.PlayerName; } else { aPawn=aPawn.nextPawn; goto JL001E; } } } if ( PlayerName == "" ) { return 0; } X=0; JL00CA: if ( X < 32 ) { if ( AccName[X] == PlayerName ) { PlayerAccVotes=AccVotes[X]; } else { X++; goto JL00CA; } } if ( PlayerAccVotes > 0 ) { return PlayerAccVotes; } X=0; JL0121: if ( X < 32 ) { if ( AccName[X] == "" ) { AccName[X]=PlayerName; AccVotes[X]=1; } else { X++; goto JL0121; } } DebugLog("69"); return 1; } function SaveAccVotes (int WinningMapIndex) { local Pawn aPawn; local int X; local bool bFound; DebugLog("70"); X=0; JL0011: if ( X < 32 ) { if ( AccName[X] != "" ) { bFound=False; aPawn=Level.PawnList; JL004B: if ( aPawn != None ) { if ( aPawn.bIsPlayer && (PlayerPawn(aPawn) != None) ) { if ( AccName[X] == PlayerPawn(aPawn).PlayerReplicationInfo.PlayerName ) { if ( PlayerVote[FindPlayerIndex(PlayerPawn(aPawn).PlayerReplicationInfo.PlayerID,False)] != WinningMapIndex ) { bFound=True; AccVotes[X]++; } } else { aPawn=aPawn.nextPawn; goto JL004B; } } } if ( !bFound ) { AccName[X]=""; AccVotes[X]=0; } } X++; goto JL0011; } X=0; JL013F: if ( X < 32 ) { Class'BDBMapVote'.Default.AccName[X]=AccName[X]; Class'BDBMapVote'.Default.AccVotes[X]=AccVotes[X]; X++; goto JL013F; } Class'BDBMapVote'.StaticSaveConfig(); DebugLog("71"); } function TallyVotes (bool bForceMapSwitch) { local string MapName; local Actor A; local int Index; local int X; local int Y; local int topmap; local float VoteCount[1024]; local int Ranking[32]; local int PlayersThatVoted; local int TieCount; local string GameType; local string CurrentMap; local int i; local int textline; local MapVoteHistory History; local int PlayersLeftToVote; DebugLog("72"); if ( bLevelSwitchPending ) { return; } PlayersThatVoted=0; X=0; JL0023: if ( X < 32 ) { if ( PlayerVote[X] != 0 ) { PlayersThatVoted++; if ( Mode == "Score" ) { VoteCount[PlayerVote[X]]=VoteCount[PlayerVote[X]] + GetPlayerScore(X); } if ( Mode == "Accumulation" ) { VoteCount[PlayerVote[X]]=VoteCount[PlayerVote[X]] + GetAccVote(X); } if ( (Mode == "Elimination") || (Mode == "Majority") ) { VoteCount[PlayerVote[X]] += GetMapPriority(MapList[PlayerVote[X]]); } DebugLog("PlayerVote[x]:" @ string(PlayerVote[X])); DebugLog("VoteCount[PlayerVote[x]]:" @ string(VoteCount[PlayerVote[X]])); } X++; goto JL0023; } if(!Level.Game.bGameEnded && !bMidGameVote && (float(PlayersThatVoted) / float(Level.Game.NumPlayers)) * 100 >= MidGameVotePercent) { DebugLog("73"); BroadcastMessage("Mid-Game Map Voting has been initiated !!!!"); bMidGameVote=True; TimeLeft=VoteTimeLimit; ScoreBoardTime=1; SetTimer(1.00,True); } Index=0; X=1; JL0257: if ( X <= MapCount ) { if ( VoteCount[X] > 0 ) { Ranking[Index++ ]=X; } X++; goto JL0257; } X=0; JL029C: if ( X < Index - 1 ) { Y=X + 1; JL02BC: if ( Y < Index ) { if ( VoteCount[Ranking[X]] < VoteCount[Ranking[Y]] ) { topmap=Ranking[X]; Ranking[X]=Ranking[Y]; Ranking[Y]=topmap; } Y++; goto JL02BC; } X++; goto JL029C; } PlayersLeftToVote=Level.Game.NumPlayers - PlayersThatVoted; DebugLog("NumPlayer:" $ string(Level.Game.NumPlayers) @ "PlayerVoted:" $ string(PlayersThatVoted) @ "PlayersToVote:" $ string(PlayersLeftToVote) @ "MaxPriority:" $ string(MaxPriority)); if ( (Mode == "Elimination") || (Mode == "Majority") ) { if ( (PlayersLeftToVote * MaxPriority < VoteCount[Ranking[0]]) && (VoteCount[Ranking[1]] + PlayersLeftToVote * GetMapPriority(MapList[Ranking[1]]) < VoteCount[Ranking[0]]) && (VoteCount[Ranking[2]] + PlayersLeftToVote * GetMapPriority(MapList[Ranking[2]]) < VoteCount[Ranking[0]]) && (VoteCount[Ranking[3]] + PlayersLeftToVote * GetMapPriority(MapList[Ranking[3]]) < VoteCount[Ranking[0]]) && Level.Game.bGameEnded ) { bForceMapSwitch=True; } } X=0; JL050F: if ( X < Index ) { MapStatusText[X]=GetPureMapname(MapList[Ranking[X]]) $ "," $ Left(string(VoteCount[Ranking[X]]),3); X++; goto JL050F; } MapStatusText[Index]=""; UpdateOpenWRI(); if ( (VoteCount[Ranking[0]] == VoteCount[Ranking[1]]) && (VoteCount[Ranking[0]] != 0) ) { DebugLog("74"); TieCount=1; X=1; JL05C9: if ( X < Index ) { if ( VoteCount[Ranking[0]] == VoteCount[Ranking[X]] ) { TieCount++; } X++; goto JL05C9; } topmap=Ranking[Rand(TieCount)]; CurrentMap=RemovePrefix(GetURLMap()); if ( InStr(CurrentMap,".") > -1 ) { CurrentMap=Left(CurrentMap,InStr(CurrentMap,".")); } X=0; JL0660: if ( RemovePrefix(GetPureMapname(MapList[topmap])) ~= CurrentMap ) { topmap=Ranking[Rand(TieCount)]; X++; if ( X > 20 ) { goto JL06AD; } goto JL0660; } JL06AD: } else { DebugLog("75"); topmap=Ranking[0]; } if ( bForceMapSwitch ) { if ( (PlayersThatVoted == 0) || (Level.Game.NumPlayers == 0) ) { BroadcastMessage("Noone voted, choosing a random map...",True); topmap=GetRandomMap(); } } if ( bForceMapSwitch || (Level.Game.NumPlayers == PlayersThatVoted) ) { DebugLog("76"); if ( MapList[topmap] == "" ) { return; } if ( (VoteCount[Ranking[0]] == VoteCount[Ranking[1]]) && (VoteCount[Ranking[0]] != 0) ) { BroadcastMessage("Tie:" @ GetPureMapname(MapList[Ranking[0]]) @ "and" @ GetPureMapname(MapList[Ranking[1]]) @ "have same score!"); BroadcastMessage(GetPureMapname(MapList[topmap]) $ " has won.",True); } else { BroadcastMessage(GetPureMapname(MapList[topmap]) $ " has won.",True); } CloseAllVoteWindows(); bLevelSwitchPending=True; ServerTravelString=SetupGameMap(MapList[topmap]); ServerTravelTime=Level.TimeSeconds; if ( !Level.Game.bGameEnded ) { SetTimer(1.00,True); } if ( (PlayersThatVoted == 0) || (Level.Game.NumPlayers == 0) ) { goto JL0927; } History=Spawn(MapVoteHistoryClass); History.AddMap(GetPureMapname(MapList[topmap])); History.Save(); History.Destroy(); JL0927: if ( Mode == "Elimination" ) { RepeatLimit++; Class'BDBMapVote'.Default.RepeatLimit=RepeatLimit; Class'BDBMapVote'.StaticSaveConfig(); } if ( Mode == "Accumulation" ) { SaveAccVotes(topmap); } } DebugLog("77"); } function UpdateOpenWRI () { local MapVoteWRI MVWRI; local int X; local int Y; DebugLog("78"); foreach AllActors(Class'MapVoteWRI',MVWRI) { X=0; MVWRI.UpdateMapVoteResults("Clear",X); JL003C: if ( (MapStatusText[X] != "") && (X < 31) ) { MVWRI.UpdateMapVoteResults(MapStatusText[X],X); X++; goto JL003C; } MVWRI.UpdateMapVoteResults("",X); Y=0; MVWRI.UpdateKickVoteResults("Clear",Y); if ( bKickVote ) { JL00C6: if ( (KickStatusText[Y] != "") && (Y < 31) ) { MVWRI.UpdateKickVoteResults(KickStatusText[Y],Y++ ); goto JL00C6; } } MVWRI.UpdateKickVoteResults("",Y); } DebugLog("79"); } function SortMapList () { local int A; local int B; local int pos; local string TempMapName; local string AMap; local string BMap; local string AMapPre; local string BMapPre; DebugLog("80"); A=1; JL0011: if ( A < MapCount ) { B=A + 1; JL002E: if ( B <= MapCount ) { AMap=Caps(MapList[A]); BMap=Caps(MapList[B]); if ( Left(AMap,3) == "[X]" ) { AMap=Mid(AMap,3); } if ( Left(BMap,3) == "[X]" ) { BMap=Mid(BMap,3); } AMap=Right(AMap,1) $ AMap; BMap=Right(BMap,1) $ BMap; AMapPre=AMap; BMapPre=BMap; if ( !bSortWithPreFix ) { pos=InStr(AMap,"-"); AMap=Mid(AMap,pos + 1); pos=InStr(BMap,"-"); BMap=Mid(BMap,pos + 1); } if ( AMap > BMap ) { TempMapName=MapList[A]; MapList[A]=MapList[B]; MapList[B]=TempMapName; } else { if ( AMap == BMap ) { if ( AMapPre > BMapPre ) { TempMapName=MapList[A]; MapList[A]=MapList[B]; MapList[B]=TempMapName; } } } B++; goto JL002E; } A++; goto JL0011; } } function bool IsCrashedMap (string MapName) { local int j; MapName=GetPureMapname(MapName); j=0; JL0018: if ( (j < 32) && (CrashedMaps[j] != "") ) { if ( MapName ~= CrashedMaps[j] ) { if ( bDebugMode ) { DebugLog("Map found in crashed map list:" @ MapName); } return True; } j++; goto JL0018; } return False; } function string CreateMapnameIncludingListnumber (string mapnameX) { local string MapName; local bool locked; local int j; if ( Left(mapnameX,3) ~= "[x]" ) { MapName=GetPureMapname(mapnameX); locked=True; } else { MapName=GetPureMapname(mapnameX); } if ( bRemoveCrashedMaps && IsCrashedMap(MapName) ) { return ""; } if ( bUseExcludeFilter ) { j=0; JL006C: if ( (j < 501) && (ExcludeFilter[j] != "") ) { if ( MatchFilter(MapName,ExcludeFilter[j]) ) { DebugLog("Excluded Map:" @ MapName); return ""; } j++; goto JL006C; } } j=0; JL00D5: if ( (j < 201) && (List1Filter[j] != "") ) { if ( MatchFilter(MapName,List1Filter[j]) || bAutoDetect ) { if ( !bList1ObeyRepeatLimit && locked ) { mapnameX=MapName; } mapnameX=mapnameX $ ":1"; return mapnameX; } j++; goto JL00D5; } j=0; JL0162: if ( (j < 201) && (List2Filter[j] != "") ) { if ( MatchFilter(MapName,List2Filter[j]) ) { if ( !bList2ObeyRepeatLimit && locked ) { mapnameX=MapName; } mapnameX=mapnameX $ ":2"; return mapnameX; } j++; goto JL0162; } j=0; JL01E4: if ( (j < 201) && (List3Filter[j] != "") ) { if ( MatchFilter(MapName,List3Filter[j]) ) { if ( !bList3ObeyRepeatLimit && locked ) { mapnameX=MapName; } mapnameX=mapnameX $ ":3"; return mapnameX; } j++; goto JL01E4; } j=0; JL0266: if ( (j < 201) && (List4Filter[j] != "") ) { if ( MatchFilter(MapName,List4Filter[j]) ) { if ( !bList4ObeyRepeatLimit && locked ) { mapnameX=MapName; } mapnameX=mapnameX $ ":4"; return mapnameX; } j++; goto JL0266; } return ""; } function int GetMapListNumber (string MapName) { return int(Right(MapName,1)); } function float GetMapPriority (string MapName) { local int MapListNum; if ( MapName == "" ) { return 0.00; } MapListNum=GetMapListNumber(MapName); if ( MapListNum == 1 ) { return List1Priority; } if ( MapListNum == 2 ) { return List2Priority; } if ( MapListNum == 3 ) { return List3Priority; } if ( MapListNum == 4 ) { return List4Priority; } Log("ERROR: GetMapPriority(): Mapname has no Priority attached:" @ MapName,'MapVoteLAvv'); return 1.00; } function string GetPureMapname (string MapName) { if ( Left(MapName,3) ~= "[x]" ) { MapName=Mid(MapName,3); } if ( Left(Right(MapName,2),1) == ":" ) { MapName=Left(MapName,Len(MapName) - 2); } return MapName; } function bool MatchFilter (string Map, string Filter) { local string modFilter; if ( Map ~= Filter ) { return True; } if ( Right(Filter,1) == "*" ) { modFilter=Mid(Filter,0,Len(Filter) - 1); if ( Left(Map,Len(modFilter)) ~= modFilter ) { return True; } } if ( Right(Filter,1) == "-" ) { if ( Left(Map,Len(Filter)) ~= Filter ) { return True; } } if ( (Right(Filter,1) == "*") && (Left(Filter,1) == "*") ) { modFilter=Mid(Filter,1,Len(Filter) - 2); if ( InStr(Caps(Map),Caps(modFilter)) >= 0 ) { return True; } } if ( Filter == "*" ) { return True; } return False; } function CloseAllVoteWindows () { local MapVoteWRI MVWRI; DebugLog("81"); foreach AllActors(Class'MapVoteWRI',MVWRI) { MVWRI.CloseWindow(); MVWRI.Destroy(); } } function string SetupGameMap (string MapName) { local string GameType; local MapList myList; local string MutatorList; local int i; DebugLog("82"); MapName=GetPureMapname(MapName); ResetAssault(); TmpNextVirtualPrefix=FixPrefix(GetPrefix(MapName)); DebugLog("NextVirtualPrefix:" @ TmpNextVirtualPrefix); SaveConfig(); if ( MapName == "" ) { return "?Restart"; } if ( (AutoGameClass != None) && bAutoGame ) { DebugLog("83b"); if ( Left(Caps(MapName),Len(FixPrefix(AutoGameClass.Default.MapPrefix))) ~= FixPrefix(AutoGameClass.Default.MapPrefix) ) { TmpNextRealPrefix=FixPrefix(AutoGameClass.Default.MapPrefix); if ( bFixCTFModifications ) { if ( Right(string(AutoGameClass),12) ~= "MultiCTFGame" ) { DebugLog("MultiCTF detected. Fixing Mapprefix to CTFM"); TmpNextRealPrefix="CTFM"; } } DebugLog("NextRealPrefix:" @ TmpNextRealPrefix); SaveConfig(); TravelMap=MapName; return MapName $ ".unr?game=" $ AutoGame; } } i=0; JL0199: if ( i < 16 ) { if ( CustomGameConfig[i].bEnabled && (CustomGameConfig[i].GameClass != "") ) { DebugLog("83.1"); CustomGameClass=Class(DynamicLoadObject(CustomGameConfig[i].GameClass,Class'Class')); if ( CustomGameClass == None ) { Log("MapVote: Error. CustomGameConfig[" $ string(i) $ "]: Failed to load GameClass:" @ CustomGameConfig[i].GameClass); } else { CustomGameConfig[i].NewPrefix=FixPrefix(CustomGameConfig[i].NewPrefix); if ( bFixCTFModifications ) { if ( Right(CustomGameConfig[i].GameClass,12) ~= "MultiCTFGame" ) { DebugLog("MultiCTF detected. Fixing Mapprefix to CTFM"); CustomGameClass.Default.MapPrefix="CTFM"; } } if ( CustomGameConfig[i].NewPrefix != "" ) { DebugLog("83.2a"); DebugLog(TmpNextVirtualPrefix @ CustomGameConfig[i].NewPrefix); if ( TmpNextVirtualPrefix ~= CustomGameConfig[i].NewPrefix ) { DebugLog("83.2b"); TmpNextRealPrefix=FixPrefix(CustomGameClass.Default.MapPrefix); if ( bFixCTFModifications ) { if ( Right(CustomGameConfig[i].GameClass,12) ~= "MultiCTFGame" ) { TmpNextRealPrefix="CTFM"; } } DebugLog("NextRealPrefix:" @ TmpNextRealPrefix); SaveConfig(); TravelMap=MapName; return TmpNextRealPrefix $ Mid(MapName,Len(TmpNextVirtualPrefix)) $ ".unr?game=" $ CustomGameConfig[i].GameClass; } } else { DebugLog("83.3a"); DebugLog(TmpNextVirtualPrefix @ FixPrefix(CustomGameClass.Default.MapPrefix)); if ( TmpNextVirtualPrefix ~= FixPrefix(CustomGameClass.Default.MapPrefix) ) { DebugLog("83.3b"); TmpNextRealPrefix=FixPrefix(GetPrefix(MapName)); DebugLog("NextRealPrefix:" @ TmpNextRealPrefix); SaveConfig(); TravelMap=MapName; return MapName $ ".unr?game=" $ CustomGameConfig[i].GameClass; } } } } i++; goto JL0199; } if ( Left(Caps(MapName),2) == "DM" ) { GameType="BotPack.DeathMatchPlus"; } if ( Left(Caps(MapName),3) == "LMS" ) { GameType="BotPack.LastManStanding"; MapName="DM" $ Mid(MapName,3); } if ( Left(Caps(MapName),3) == "TDM" ) { GameType="BotPack.TeamGamePlus"; MapName="DM" $ Mid(MapName,3); } if ( Left(Caps(MapName),3) == "DOM" ) { GameType="BotPack.Domination"; } if ( Left(Caps(MapName),3) == "CTF" ) { GameType="BotPack.CTFGame"; } if ( Left(Caps(MapName),2) == "AS" ) { GameType=ASClass; } TmpNextRealPrefix=GetPrefix(MapName); DebugLog("NextRealPrefix:" @ TmpNextRealPrefix); SaveConfig(); TravelMap=MapName; return MapName $ ".unr?game=" $ GameType; } function LoadMapListConfig () { local MapListTemp TempList; local string MapName; local int j; DebugLog("Loading Maplist from file..."); MapVoteHistoryClass=Class(DynamicLoadObject(MapVoteHistoryType,Class'Class')); History=Spawn(MapVoteHistoryClass); if ( History == None ) { DebugLog("89"); MapVoteHistoryClass=Class(DynamicLoadObject("MapVoteLA13.MapVoteHistory1",Class'Class')); History=Spawn(MapVoteHistoryClass); } MapList[0]=""; j=1; i=1; JL00BB: if ( i <= Class'MapListTemp'.Default.MapCount ) { MapName=Class'MapListTemp'.Default.M[i]; if ( History.GetMapSequence(GetPureMapname(MapName)) <= RepeatLimit ) { MapName="[X]" $ MapName; } if ( bRemoveCrashedMaps && IsCrashedMap(MapName) ) { goto JL0157; } MapList[j]=MapName; j++; JL0157: i++; goto JL00BB; } MapCount=j - 1; PrefixDictionary=Class'MapListTemp'.Default.PrefixDictionary; DebugLog("Loading Maplist finished:" @ string(MapCount)); History.Destroy(); } function SaveMapListConfig () { local int i; local int j; local MapListTemp List; DebugLog("Storing Maplist to file..."); List=Spawn(Class'MapListTemp'); List.MapCount=MapCount; List.M[0]=""; i=1; JL005E: if ( i <= MapCount ) { if ( Left(MapList[i],3) ~= "[X]" ) { List.M[i]=Mid(MapList[i],3); } else { List.M[i]=MapList[i]; } i++; goto JL005E; } j=i; JL00E2: if ( j < 1024 ) { List.M[j]=""; j++; goto JL00E2; } List.PrefixDictionary=PrefixDictionary; List.SaveConfig(); List.Destroy(); DebugLog("Storing Maplist to file finished:" @ string(MapCount)); } function UpdatePrefixes () { local int i; local string defaultPrefix; PrefixDictionary=""; i=0; JL000F: if ( i < 16 ) { if ( CustomGameConfig[i].bEnabled && (CustomGameConfig[i].GameClass != "") ) { CustomGameClass=Class(DynamicLoadObject(CustomGameConfig[i].GameClass,Class'Class')); if ( CustomGameClass != None ) { defaultPrefix=FixPrefix(CustomGameClass.Default.MapPrefix); if ( bFixCTFModifications && (Right(CustomGameConfig[i].GameClass,12) ~= "MultiCTFGame") ) { defaultPrefix="CTFM"; } if ( CustomGameConfig[i].NewPrefix == "" ) { CustomGameConfig[i].NewPrefix=defaultPrefix; SaveConfig(); } if ( CustomGameConfig[i].NewPrefix != defaultPrefix ) { PrefixDictionary=PrefixDictionary $ CustomGameConfig[i].NewPrefix $ ";" $ defaultPrefix $ ";"; } } } i++; goto JL000F; } DebugLog("PrefixDictionary:" @ PrefixDictionary); } state Loading { BeginRequested: bMapReloadRequested=True; BroadcastMessage("Maplist is reloading...",True); DebugLog("84a"); Begin: DebugLog("84b"); UpdatePrefixes(); MapVoteHistoryClass=Class(DynamicLoadObject(MapVoteHistoryType,Class'Class')); History=Spawn(MapVoteHistoryClass); if ( History == None ) { DebugLog("89"); MapVoteHistoryClass=Class(DynamicLoadObject("MapVoteLA13.MapVoteHistory1",Class'Class')); History=Spawn(MapVoteHistoryClass); } MapCount=0; for ( i=0; i<1024; i++ ) { MapList[i]=""; } if ( bAutoDetect ) { Log("Detected GameType = " $ string(Level.Game.Class)); bAS=False; bCTF=False; bDM=False; bLMS=False; bTDM=False; bDOM=False; bAutoGame=False; if ( string(Level.Game.Class) ~= ASClass ) { bAS=True; } else if ( string(Level.Game.Class) ~= "Botpack.CTFGame" ) { bCTF=True; } else if ( string(Level.Game.Class) ~= "Botpack.DeathMatchPlus" ) { bDM=True; } else if ( string(Level.Game.Class) ~= "Botpack.LastManStanding" ) { bLMS=True; } else if ( string(Level.Game.Class) ~= "Botpack.TeamGamePlus" ) { bTDM=True; } else if ( string(Level.Game.Class) ~= "Botpack.Domination" ) { bDOM=True; } else { bAutoGame=True; AutoGame=string(Level.Game.Class); } } if ( bAutoGame ) { AutoGameClass=Class(DynamicLoadObject(AutoGame,Class'Class')); } if ( bAS ) { if ( bUseMapList ) { LoadMapCycleList(Class'Assault'.Default.MapListType,"AS","AS",History); } else { LoadMapTypes("AS","AS",History,"Botpack.Assault"); } Sleep(0.00); } if ( bCTF ) { if ( bUseMapList ) { LoadMapCycleList(Class'CTFGame'.Default.MapListType,"CTF","CTF",History); } else { LoadMapTypes("CTF","CTF",History,"Botpack.CTFGame"); } Sleep(0.00); } if ( bDM ) { if ( bUseMapList ) { LoadMapCycleList(Class'DeathMatchPlus'.Default.MapListType,"DM","DM",History); } else { LoadMapTypes("DM","DM",History,"Botpack.DeathMatchPlus"); } Sleep(0.00); } if ( bDOM ) { if ( bUseMapList ) { LoadMapCycleList(Class'Domination'.Default.MapListType,"DOM","DOM",History); } else { LoadMapTypes("DOM","DOM",History,"Botpack.Domination"); } Sleep(0.00); } if ( bTDM ) { if ( bUseMapList ) { LoadMapCycleList(Class'TeamGamePlus'.Default.MapListType,"DM","TDM",History); } else { LoadMapTypes("DM","TDM",History,"Botpack.TeamGamePlus"); } Sleep(0.00); } if ( bLMS ) { if ( bUseMapList ) { LoadMapCycleList(Class'LastManStanding'.Default.MapListType,"DM","LMS",History); } else { LoadMapTypes("DM","LMS",History,"Botpack.LastManStanding"); } Sleep(0.00); } if ( bAutoGame && (AutoGameClass != None) ) { DebugLog("85"); NewPrefix=FixPrefix(AutoGameClass.Default.MapPrefix); if ( bUseMapList ) { LoadMapCycleList(AutoGameClass.Default.MapListType,FixPrefix(AutoGameClass.Default.MapPrefix),NewPrefix,History); } else { LoadMapTypes(FixPrefix(AutoGameClass.Default.MapPrefix),NewPrefix,History,AutoGame); } Sleep(0.00); } if ( !bAutoDetect ) { for ( i=0;i < 16;i++ ) { if ( CustomGameConfig[i].bEnabled && (CustomGameConfig[i].GameClass != "") ) { CustomGameClass=Class(DynamicLoadObject(CustomGameConfig[i].GameClass,Class'Class')); if ( bFixCTFModifications && (Right(CustomGameConfig[i].GameClass,12) ~= "MultiCTFGame") ) { DebugLog("MultiCTF detected. Fixing Mapprefix to CTFM"); CustomGameClass.Default.MapPrefix="CTFM"; } if ( CustomGameClass == None ) { Log("MapVote: Error. CustomGameConfig[" $ string(i) $ "]: Failed to load GameClass:" @ CustomGameConfig[i].GameClass); } else { if ( CustomGameConfig[i].NewPrefix == "" ) { NewPrefix=FixPrefix(CustomGameClass.Default.MapPrefix); } else { NewPrefix=FixPrefix(CustomGameConfig[i].NewPrefix); } if ( bUseMapList ) { LoadMapCycleList(CustomGameClass.Default.MapListType,FixPrefix(CustomGameClass.Default.MapPrefix),NewPrefix,History); } else { LoadMapTypes(FixPrefix(CustomGameClass.Default.MapPrefix),NewPrefix,History,CustomGameConfig[i].GameClass); } } Sleep(0.00); } } } History.Destroy(); if ( Mode == "Elimination" ) { if ( (MapCount < MinMapCount) || (MapCount == 0) && (RepeatLimit > 0) ) { RepeatLimit=0; GotoState('Loading'); } } SortMapList(); Log("BDBMapVote: Maps Reloaded. Total Maps = " $ string(MapCount)); if ( bMapReloadRequested ) { BroadcastMessage("MapVote configuration has been changed, Re-Open Voting window for updates.",True); } bMapReloadRequested=False; if ( bReloadMapsOnRequestOnly ) { SaveMapListConfig(); } } function LoadMapTypes (string Prefix, string PreFixChange, MapVoteHistory History, string GameClass) { local string FirstMap; local string NextMap; local string MapName; local string TestMap; local string FilteredMap; local int Z; local int ignoreCount; local bool bIsPureCTF; DebugLog("86"); DebugLog("Going to load gametype:" @ GameClass @ "using maps with Prefix:" @ Prefix $ ". PreFixChange:" @ PreFixChange); if ( GameClass ~= "Botpack.CTFGame" ) { bIsPureCTF=True; DebugLog("Pure CTF Detected"); } FirstMap=Level.GetMapName(Prefix,"",0); NextMap=FirstMap; while ( !(FirstMap~=TestMap) ) { if ( MapCount >= 1023 ) { ignoreCount++; } else { MapName=NextMap; if ( bFixCTFModifications && bIsPureCTF && ( !(Left(MapName,4) ~= "CTF-") || (Left(MapName,6) ~= "CTF-BT")) ) { DebugLog("CTF prevented from loading wrong map:" @ MapName); } else { Z=InStr(Caps(MapName),".UNR"); if ( Z != -1 ) { MapName=Left(MapName,Z); } MapName=PreFixChange $ Mid(MapName,Len(Prefix)); if ( (InStr(Caps(NextMap),"TUTORIAL") == -1) && (InStr(Caps(NextMap),"INTRO") == -1) ) { if ( History != None ) { if ( History.GetMapSequence(MapName) <= RepeatLimit ) { MapName="[X]" $ MapName; } } FilteredMap=CreateMapnameIncludingListnumber(MapName); if ( FilteredMap != "" ) { MapCount++; MapList[MapCount]=FilteredMap; if ( bDebugMode ) { DebugLog("Loading Map[" $ string(MapCount) $ "]:" @ FilteredMap); } } else { if ( bDebugMode ) { DebugLog("Map ignored cause no filter matches:" @ GetPureMapname(MapName)); } } } } } NextMap=Level.GetMapName(Prefix,NextMap,1); TestMap=NextMap; } if ( ignoreCount > 0 ) { Log("Ignored" @ string(ignoreCount) @ "Maps with Prefix" @ Prefix @ "cause mapcount > 1023",'MapVoteLAvv'); } } function LoadMapCycleList (Class MapListType, string Prefix, string PreFixChange, MapVoteHistory History) { local MapList MapCycleList; local string MapName; local string FilteredMap; local int X; local int Z; DebugLog("87"); MapCycleList=Spawn(MapListType); if ( MapCycleList != None ) { X=0; JL002A: if ( (X < 32) && (MapCycleList.Maps[X] != "") ) { MapName=MapCycleList.Maps[X++ ]; Z=InStr(Caps(MapName),".UNR"); if ( Z != -1 ) { MapName=Left(MapName,Z); } MapName=PreFixChange $ Mid(MapName,Len(Prefix)); if ( History != None ) { if ( History.GetMapSequence(MapName) <= RepeatLimit ) { MapName="[X]" $ MapName; } } FilteredMap=CreateMapnameIncludingListnumber(MapName); if ( FilteredMap != "" ) { MapCount++; MapList[MapCount]=FilteredMap; if ( bDebugMode ) { DebugLog("Loading Map[" $ string(MapCount) $ "]" @ FilteredMap); } } else { if ( bDebugMode ) { DebugLog("Map ignored cause no filter matches:" @ GetPureMapname(MapName)); } } goto JL002A; } MapCycleList.Destroy(); } else { Log("MapList Spawn Failed"); } } function DebugLog (string Msg) { if ( bDebugMode ) { Log("MV " $ Msg,'MapVoteLAvv'); } } function int ResetAssault () { local int CurrentDefender; if ( Level.Game.IsA('Assault') ) { if ( GetWinningTeam() != -1 ) { Log("BDBMapVote: Team " $ string(GetWinningTeam()) $ " won the round."); if ( GetWinningTeam() == 1 ) { CurrentDefender=0; } else { CurrentDefender=1; } Log("BDBMapVote: Setting Team " $ string(CurrentDefender) $ " as the defending team for the next map."); } else { CurrentDefender=0; } Assault(Level.Game).ResetGame(); Assault(Level.Game).bDefenseSet=False; Assault(Level.Game).NumDefenses=0; Assault(Level.Game).SavedTime=0.00; Assault(Level.Game).GameCode=""; Assault(Level.Game).Part=1; Assault(Level.Game).bTiePartOne=False; Assault(Level.Game).CurrentDefender=CurrentDefender; Assault(Level.Game).SaveConfig(); } return 0; } function int GetWinningTeam () { if ( Assault(Level.Game).bDefenseSet ) { if ( Assault(Level.Game).bAssaultWon ) { return Assault(Level.Game).Attacker.TeamIndex; } else { if ( !Assault(Level.Game).bTiePartOne ) { return Assault(Level.Game).Defender.TeamIndex; } else { return -1; } } } else { return -1; } } function int GetMapIndex (string MapName) { local int X; local int MapIndex; MapName=GetPureMapname(MapName); X=1; JL0018: if ( X <= MapCount ) { if ( GetPureMapname(MapList[X]) ~= MapName ) { MapIndex=X; } else { X++; goto JL0018; } } return MapIndex; } function int GetRandomMap () { local int randmap; local int security; JL0000: if ( (randmap < 1) || (GetMapListNumber(MapList[randmap]) != MapListIfNooneVoted) ) { randmap=Rand(MapCount) + 1; if ( ++security > 100 ) { randmap=Rand(MapCount) + 1; } else { goto JL0000; } } if ( security > 100 ) { Log("Error: GetRandomMap() failed for List" @ string(MapListIfNooneVoted),'MapVoteLAvv'); } Log("GetRandomMap() configured for List" @ string(MapListIfNooneVoted) @ "took the random map:" @ string(randmap) @ MapList[randmap]); return randmap; } function HandleFailedMap (string MapName) { local int i; MapName=GetPureMapname(MapName); DebugLog("Crashed map:" @ MapName); i=0; JL0033: if ( (i < 31) && (CrashedMaps[i] != "") ) { if ( CrashedMaps[i] == MapName ) { return; } i++; goto JL0033; } CrashedMaps[i]=MapName; DebugLog("Added failed map:" @ MapName @ "to slot" @ string(i)); SaveConfig(); StaticSaveConfig(); } function StartMutatorsAndSettings () { local string ActualPrefix; local string TestPrefix; local string Prefixes; local string Mutators; local string Settings; local int i; local int pos; if ( bFixCTFModifications ) { if ( Right(string(Level.Game.Class),12) ~= "MultiCTFGame" ) { DebugLog("MultiCTF detected. Fixing Mapprefix to CTFM"); Level.Game.Default.MapPrefix="CTFM"; Level.Game.MapPrefix="CTFM"; } } ActualPrefix=FixPrefix(Level.Game.MapPrefix); DebugLog("NextVirtualPrefix/NextRealPrefix/ActualPrefix:" @ TmpNextVirtualPrefix $ "/" $ TmpNextRealPrefix $ "/" $ ActualPrefix); if ( (TmpNextRealPrefix == ActualPrefix) && (TmpNextVirtualPrefix != "") ) { ActualPrefix=TmpNextVirtualPrefix; DebugLog("MapVote: Prefix OK. Mapchange seems to have been successful"); } if ( DefaultSettings != "" ) { Settings=DefaultSettings; JL01A1: if ( Len(Settings) > 0 ) { pos=InStr(Settings,";"); if ( pos < 0 ) { pos=InStr(Settings,","); } if ( pos < 0 ) { ExecuteSetting(Settings,True); Settings=""; } else { ExecuteSetting(Left(Settings,pos),True); Settings=Mid(Settings,pos + 1); } goto JL01A1; } } i=0; JL022D: if ( i < 16 ) { if ( CustomGameConfig[i].bEnabled ) { TestPrefix=CustomGameConfig[i].NewPrefix; if ( ActualPrefix ~= TestPrefix ) { if ( CustomGameConfig[i].Mutators != "" ) { Mutators=CustomGameConfig[i].Mutators; JL029F: if ( Len(Mutators) > 0 ) { pos=InStr(Mutators,";"); if ( pos < 0 ) { pos=InStr(Mutators,","); } if ( pos < 0 ) { StartActorMutator(Mutators); Mutators=""; } else { StartActorMutator(Left(Mutators,pos)); Mutators=Mid(Mutators,pos + 1); } goto JL029F; } } if ( CustomGameConfig[i].Settings != "" ) { Settings=CustomGameConfig[i].Settings; JL034F: if ( Len(Settings) > 0 ) { pos=InStr(Settings,";"); if ( pos < 0 ) { pos=InStr(Settings,","); } if ( pos < 0 ) { ExecuteSetting(Settings,False); Settings=""; } else { ExecuteSetting(Left(Settings,pos),False); Settings=Mid(Settings,pos + 1); } goto JL034F; } } } } i++; goto JL022D; } } function StartActorMutator (string ClassString) { local Actor A; local Class ActorClass; Log("StartMutator:" @ ClassString,'MapVoteLAvv'); ActorClass=Class(DynamicLoadObject(ClassString,Class'Class')); if ( ActorClass == None ) { Log("Starting Actor/Mutator FAILED. Could not DynamicLoadObject:" @ ClassString,'MapVoteLAvv'); return; } foreach AllActors(ActorClass,A) { Log("Actor already spawned:" @ ClassString,'MapVoteLAvv'); return; } A=Spawn(ActorClass); if ( A == None ) { Log("Spawning Actor/Mutator FAILED:" @ ClassString,'MapVoteLAvv'); return; } if ( A.IsA('Mutator') ) { Level.Game.BaseMutator.AddMutator(Mutator(A)); } } function ExecuteSetting (string Setting, bool bIsDefaultSetting) { local string Property; local string Value; local string Prev; local string Next; Property=Left(Setting,InStr(Setting,"=")); Value=Mid(Setting,InStr(Setting,"=") + 1); if ( bIsDefaultSetting ) { Log("Execute default Setting:" @ Setting $ ". Property:" @ Property $ ". Value:" @ Value,'MapVoteLAvv'); } else { Log("Execute Setting:" @ Setting $ ". Property:" @ Property $ ". Value:" @ Value,'MapVoteLAvv'); } Prev=Level.Game.GetPropertyText(Property); Level.Game.SetPropertyText(Property,Value); Next=Level.Game.GetPropertyText(Property); DebugLog("Changed Setting:" @ Property $ ". Previous value:" @ Prev $ ". new value:" @ Next); } function float MaxFloat (float val1, float val2) { if ( val1 > val2 ) { return val1; } else { return val2; } } function string GetPrefix (string MapName) { if ( Left(MapName,6) ~= "CTF-BT" ) { return "CTF-BT"; } return Caps(Left(MapName,InStr(MapName,"-"))); } function string FixPrefix (string Prefix) { if ( Right(Prefix,1) == "-" ) { return Left(Prefix,Len(Prefix) - 1); } else { return Prefix; } } function string RemovePrefix (string MapName) { return Mid(MapName,InStr(MapName,"-") + 1); } {IP/a0 { w 10s-a6q?_ ,pNextURL = pNextSwitchCountdown = Uqz7\?%Map change Failed, bad or missing map file. TravelMap:_!-|e_m Hc:m  Vc(q Vc( l%8ll%9Q IkwI*Tw.I*I-t.I'TtTt2%L.I((IIpSm seconds left to vote.' m0m,<101 Minute left to vote.'j0wj*ja/!@.jF, jjgm, 1110 seconds left to vote.'m,  m%jwj*ja/!@.j Fmjj/?m?,?% m%12c %IwI*I-w.I*t.I'tt2%c II-c %13D'm%14D' Y u 6 k95s.u <.t <& EZv l )K 2v 'K %_K  j Dp n/{2p -{%{.o  F//================================================================================ // AdminWindow. //================================================================================ class AdminWindow extends UWindowPageWindow; var UWindowCheckbox cbLoadDM; var UWindowCheckbox cbLoadLMS; var UWindowCheckbox cbLoadTDM; var UWindowCheckbox cbLoadAS; var UWindowCheckbox cbLoadDOM; var UWindowCheckbox cbLoadCTF; var UWindowCheckbox cbAutoDetect; var UWindowCheckbox cbCheckOtherGameTie; var UWindowCheckbox cbReloadMapsOnRequestOnly; var UWindowCheckbox cbCustGame[16]; var UWindowSmallButton RemoteSaveButton; var UWindowSmallButton ReloadMapsButton; var UWindowSmallButton CloseButton; var UWindowSmallButton ListCrashButton; var UWindowSmallButton ClearCrashButton; var UWindowHSliderControl sldVoteTimeLimit; var UMenuLabelControl lblVoteTimeLimit; var UWindowHSliderControl sldKickPercent; var UMenuLabelControl lblKickPercent; var UWindowEditControl txtRepeatLimit; var UWindowEditControl txtMinMapCount; var UWindowHSliderControl sldMidGameVotePercent; var UWindowComboControl cboMode; var UWindowEditControl txtServerInfoURL; var UWindowEditControl txtMapInfoURL; var UWindowComboControl cboMapVoteHistoryType; var UMenuLabelControl lblMidGameVotePercent; var UMenuLabelControl lblGameTypeSection; var UMenuLabelControl lblMiscSection; var UMenuLabelControl lblOtherClass; var UMenuLabelControl lblLimitsLabel; var UMenuLabelControl lblMapPreFixOverRide; var UMenuLabelControl lblRepeatLimit; var UMenuLabelControl lblMinMapCount; var UMenuLabelControl lblAdvancedSection; var UMenuLabelControl lblServerInfoURL; var UMenuLabelControl lblMapInfoURL; var UMenuLabelControl lblASClass; var UMenuLabelControl lblActGame; var UMenuLabelControl lblActPrefix; var UMenuLabelControl lblCustGame[16]; var UMenuLabelControl lblTemp; var UWindowCheckbox cbUseMapList; var UWindowCheckbox cbAutoOpen; var UWindowCheckbox cbKickVote; var UWindowCheckbox cbEntryWindows; var UWindowHSliderControl sldScoreBoardDelay; var UMenuLabelControl lblScoreBoardDelay; var UWindowCheckbox cbSortWithPreFix; var UWindowCheckbox cbDebugMode; var UWindowEditControl txtList1Title; var UWindowEditControl txtList2Title; var UWindowEditControl txtList3Title; var UWindowEditControl txtList4Title; var UWindowEditControl txtMapVoteTitle; var UWindowEditControl txtList1Priority; var UWindowEditControl txtList2Priority; var UWindowEditControl txtList3Priority; var UWindowEditControl txtList4Priority; var UWindowEditControl txtASClass; var UWindowCheckbox cbRemoveCrashedMaps; var UWindowCheckbox cbUseExcludeFilter; function Created () { local Color C; local int i; local int gap; Super.Created(); DesiredWidth=600.00; DesiredHeight=500.00; gap=14; lblGameTypeSection=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',10.00,10.00,90.00,20.00)); lblGameTypeSection.SetText("Visual Config"); cbAutoDetect=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',420.00,30.00,20.00,20.00)); cbAutoDetect.bAcceptsFocus=False; lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',440.00,30.00,60.00,20.00)); lblTemp.SetText("Auto Detect"); cbLoadDM=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',420.00,25.00 + 2 * gap,20.00,20.00)); lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',440.00,25.00 + 2 * gap,60.00,20.00)); lblTemp.SetText("DM"); cbLoadTDM=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',420.00,25.00 + 3 * gap,20.00,20.00)); lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',440.00,25.00 + 3 * gap,60.00,20.00)); lblTemp.SetText("TDM"); cbLoadLMS=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',420.00,25.00 + 4 * gap,20.00,20.00)); lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',440.00,25.00 + 4 * gap,60.00,20.00)); lblTemp.SetText("LMS"); cbLoadCTF=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',420.00,25.00 + 5 * gap,20.00,20.00)); lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',440.00,25.00 + 5 * gap,60.00,20.00)); lblTemp.SetText("CTF"); cbLoadDOM=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',420.00,25.00 + 6 * gap,20.00,20.00)); lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',440.00,25.00 + 6 * gap,60.00,20.00)); lblTemp.SetText("DOM"); cbLoadAS=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',420.00,25.00 + 7 * gap,20.00,20.00)); lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',440.00,25.00 + 7 * gap,130.00,20.00)); lblTemp.SetText("Assault:"); txtASClass=UWindowEditControl(CreateControl(Class'UWindowEditControl',480.00,24.00 + 7 * gap,140.00,20.00)); txtASClass.SetNumericOnly(False); txtASClass.EditBoxWidth=140.00; i=0; JL0452: if ( i < 16 ) { cbCustGame[i]=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',420.00,20.00 + (9 + i) * gap,20.00,20.00)); lblCustGame[i]=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',440.00,20.00 + (9 + i) * gap,200.00,20.00)); lblCustGame[i].SetText("empty"); i++; goto JL0452; } cbUseExcludeFilter=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',420.00,10.00 + 26 * gap,20.00,20.00)); lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',440.00,10.00 + 26 * gap,170.00,20.00)); lblTemp.SetText("Use Exclude Filter"); lblLimitsLabel=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',10.00,110.00,50.00,20.00)); lblLimitsLabel.SetText("Limits"); sldVoteTimeLimit=UWindowHSliderControl(CreateControl(Class'UWindowHSliderControl',10.00,130.00,170.00,20.00)); sldVoteTimeLimit.bAcceptsFocus=False; sldVoteTimeLimit.MinValue=20.00; sldVoteTimeLimit.MaxValue=180.00; sldVoteTimeLimit.Step=10; sldVoteTimeLimit.SetText("Voting Time Limit"); lblVoteTimeLimit=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',190.00,130.00,40.00,20.00)); lblVoteTimeLimit.SetText(string(sldVoteTimeLimit.Value) $ " sec"); sldKickPercent=UWindowHSliderControl(CreateControl(Class'UWindowHSliderControl',10.00,150.00,170.00,20.00)); sldKickPercent.MinValue=10.00; sldKickPercent.MaxValue=100.00; sldKickPercent.Step=1; sldKickPercent.SetText("Kick Votes Req."); lblKickPercent=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',190.00,150.00,40.00,20.00)); lblKickPercent.SetText(string(sldKickPercent.Value) $ " %"); sldScoreBoardDelay=UWindowHSliderControl(CreateControl(Class'UWindowHSliderControl',10.00,170.00,180.00,20.00)); sldScoreBoardDelay.MinValue=1.00; sldScoreBoardDelay.MaxValue=30.00; sldScoreBoardDelay.Step=1; sldScoreBoardDelay.SetText("ScoreBoard Delay"); lblScoreBoardDelay=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',190.00,170.00,40.00,20.00)); lblScoreBoardDelay.SetText(string(sldScoreBoardDelay.Value) $ " sec"); sldMidGameVotePercent=UWindowHSliderControl(CreateControl(Class'UWindowHSliderControl',10.00,190.00,185.00,20.00)); sldMidGameVotePercent.MinValue=1.00; sldMidGameVotePercent.MaxValue=100.00; sldMidGameVotePercent.Step=1; sldMidGameVotePercent.SetText("Mid-Game Voter Req."); lblMidGameVotePercent=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',195.00,190.00,40.00,20.00)); lblMidGameVotePercent.SetText(string(sldMidGameVotePercent.Value) $ " %"); txtRepeatLimit=UWindowEditControl(CreateControl(Class'UWindowEditControl',230.00,130.00,95.00,20.00)); txtRepeatLimit.SetNumericOnly(True); txtRepeatLimit.SetText("Don't Show Last"); txtRepeatLimit.EditBoxWidth=20.00; lblRepeatLimit=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',330.00,130.00,60.00,20.00)); lblRepeatLimit.SetText("maps Played"); txtMinMapCount=UWindowEditControl(CreateControl(Class'UWindowEditControl',230.00,150.00,120.00,20.00)); txtMinMapCount.SetNumericOnly(True); txtMinMapCount.SetText("Reload Map List when"); txtMinMapCount.EditBoxWidth=20.00; lblMinMapCount=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',230.00,165.00,200.00,20.00)); lblMinMapCount.SetText("maps remain. (Elimiation Mode only)"); lblMiscSection=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',10.00,210.00,50.00,20.00)); lblMiscSection.SetText("Misc."); cbUseMapList=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',10.00,230.00,300.00,20.00)); cbUseMapList.SetText("Use the Map Cycle List instead of all maps"); cbUseMapList.SetFont(0); cbUseMapList.Align=TA_Right; cbUseMapList.SetSize(200.00,1.00); cbAutoOpen=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',10.00,250.00,300.00,20.00)); cbAutoOpen.SetText("Open Voting Window at Game End"); cbAutoOpen.SetFont(0); cbAutoOpen.Align=TA_Right; cbAutoOpen.SetSize(200.00,1.00); cbKickVote=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',10.00,270.00,300.00,20.00)); cbKickVote.SetText("Enable Player Kick Voting"); cbKickVote.SetFont(0); cbKickVote.Align=TA_Right; cbKickVote.SetSize(200.00,1.00); cbCheckOtherGameTie=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',10.00,290.00,300.00,20.00)); cbCheckOtherGameTie.SetText("Check Sudden Death OverTime"); cbCheckOtherGameTie.SetFont(0); cbCheckOtherGameTie.Align=TA_Right; cbCheckOtherGameTie.SetSize(200.00,1.00); cboMode=UWindowComboControl(CreateControl(Class'UWindowComboControl',230.00,230.00,120.00,1.00)); cboMode.SetText("Mode"); cboMode.SetEditable(False); cboMode.EditBoxWidth=90.00; cboMode.AddItem("Majority"); cboMode.AddItem("Elimination"); cboMode.AddItem("Score"); cboMode.AddItem("Accumulation"); lblActGame=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',230.00,260.00,200.00,20.00)); lblActPrefix=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',230.00,280.00,200.00,20.00)); lblAdvancedSection=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',10.00,310.00,50.00,20.00)); lblAdvancedSection.SetText("Advanced"); txtServerInfoURL=UWindowEditControl(CreateControl(Class'UWindowEditControl',10.00,330.00,370.00,15.00)); txtServerInfoURL.SetNumericOnly(False); txtServerInfoURL.SetText("Welcome Page Web Server URL"); txtServerInfoURL.EditBoxWidth=210.00; lblServerInfoURL=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',10.00,345.00,400.00,20.00)); lblServerInfoURL.SetText("Example: www.MyServer.com:80/UnrealStuff/WelcomePage.htm"); txtMapInfoURL=UWindowEditControl(CreateControl(Class'UWindowEditControl',10.00,365.00,370.00,15.00)); txtMapInfoURL.SetNumericOnly(False); txtMapInfoURL.SetText("Map Information Web Server URL"); txtMapInfoURL.EditBoxWidth=210.00; lblMapInfoURL=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',10.00,380.00,400.00,20.00)); lblMapInfoURL.SetText("Example: www.MyServer.com:80/MapFiles/"); cboMapVoteHistoryType=UWindowComboControl(CreateControl(Class'UWindowComboControl',10.00,395.00,370.00,1.00)); cboMapVoteHistoryType.SetText("Map Vote History Class Type"); cboMapVoteHistoryType.SetEditable(True); cboMapVoteHistoryType.EditBoxWidth=210.00; cboMapVoteHistoryType.AddItem("MapVoteLA13.MapVoteHistory1"); cboMapVoteHistoryType.AddItem("MapVoteLA13.MapVoteHistory2"); cboMapVoteHistoryType.AddItem("MapVoteLA13.MapVoteHistory3"); cboMapVoteHistoryType.AddItem("MapVoteLA13.MapVoteHistory4"); cbEntryWindows=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',10.00,420.00,320.00,20.00)); cbEntryWindows.SetText("Open Welcome Window and KeyBinder when player enters server"); cbEntryWindows.SetFont(0); cbEntryWindows.Align=TA_Right; cbEntryWindows.SetSize(320.00,1.00); cbSortWithPreFix=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',10.00,445.00,140.00,20.00)); cbSortWithPreFix.SetText("Sort Maps with PreFix"); cbSortWithPreFix.SetFont(0); cbSortWithPreFix.Align=TA_Right; cbSortWithPreFix.SetSize(120.00,1.00); cbSortWithPreFix.bAcceptsFocus=False; cbDebugMode=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',10.00,470.00,140.00,20.00)); cbDebugMode.SetText("Debug Mode"); cbDebugMode.SetFont(0); cbDebugMode.Align=TA_Right; cbDebugMode.SetSize(80.00,1.00); cbDebugMode.bAcceptsFocus=False; ListCrashButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',170.00,470.00,100.00,20.00)); ListCrashButton.Text="List crashed maps"; ClearCrashButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',280.00,470.00,100.00,20.00)); ClearCrashButton.Text="Clear crash List"; cbRemoveCrashedMaps=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',170.00,450.00,140.00,20.00)); cbRemoveCrashedMaps.SetText("Remove crashed maps"); cbRemoveCrashedMaps.SetFont(0); cbRemoveCrashedMaps.Align=TA_Right; cbRemoveCrashedMaps.SetSize(120.00,1.00); lblGameTypeSection=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',420.00,10.00,120.00,20.00)); lblGameTypeSection.SetText("Game Types"); txtMapVoteTitle=UWindowEditControl(CreateControl(Class'UWindowEditControl',10.00,30.00,190.00,20.00)); txtMapVoteTitle.SetNumericOnly(False); txtMapVoteTitle.SetText("Mapvote Title"); txtMapVoteTitle.EditBoxWidth=120.00; txtList1Title=UWindowEditControl(CreateControl(Class'UWindowEditControl',10.00,45.00,190.00,20.00)); txtList1Title.SetNumericOnly(False); txtList1Title.SetText("List 1 Title"); txtList1Title.EditBoxWidth=120.00; txtList2Title=UWindowEditControl(CreateControl(Class'UWindowEditControl',10.00,60.00,190.00,20.00)); txtList2Title.SetNumericOnly(False); txtList2Title.SetText("List 2 Title"); txtList2Title.EditBoxWidth=120.00; txtList3Title=UWindowEditControl(CreateControl(Class'UWindowEditControl',10.00,75.00,190.00,20.00)); txtList3Title.SetNumericOnly(False); txtList3Title.SetText("List 3 Title"); txtList3Title.EditBoxWidth=120.00; txtList4Title=UWindowEditControl(CreateControl(Class'UWindowEditControl',10.00,90.00,190.00,20.00)); txtList4Title.SetNumericOnly(False); txtList4Title.SetText("List 4 Title"); txtList4Title.EditBoxWidth=120.00; txtList1Priority=UWindowEditControl(CreateControl(Class'UWindowEditControl',230.00,45.00,160.00,20.00)); txtList1Priority.SetNumericOnly(False); txtList1Priority.SetText("Priority"); txtList1Priority.EditBoxWidth=120.00; txtList2Priority=UWindowEditControl(CreateControl(Class'UWindowEditControl',230.00,60.00,160.00,20.00)); txtList2Priority.SetNumericOnly(False); txtList2Priority.SetText("Priority"); txtList2Priority.EditBoxWidth=120.00; txtList3Priority=UWindowEditControl(CreateControl(Class'UWindowEditControl',230.00,75.00,160.00,20.00)); txtList3Priority.SetNumericOnly(False); txtList3Priority.SetText("Priority"); txtList3Priority.EditBoxWidth=120.00; txtList4Priority=UWindowEditControl(CreateControl(Class'UWindowEditControl',230.00,90.00,160.00,20.00)); txtList4Priority.SetNumericOnly(False); txtList4Priority.SetText("Priority"); txtList4Priority.EditBoxWidth=120.00; RemoteSaveButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',425.00,400.00,190.00,20.00)); RemoteSaveButton.Text="Save"; RemoteSaveButton.SetAcceptsFocus(); RemoteSaveButton.FocusWindow(); RemoteSaveButton.bDisabled=True; cbReloadMapsOnRequestOnly=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',425.00,430.00,300.00,20.00)); cbReloadMapsOnRequestOnly.SetText("Reload Maps on request only"); cbReloadMapsOnRequestOnly.SetFont(0); cbReloadMapsOnRequestOnly.Align=TA_Right; cbReloadMapsOnRequestOnly.SetSize(150.00,1.00); ReloadMapsButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',425.00,450.00,190.00,20.00)); ReloadMapsButton.Text="Reload Maps"; CloseButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',425.00,475.00,190.00,20.00)); CloseButton.Text="Close"; } function Notify (UWindowDialogControl C, byte E) { local int i; local string CustString; Super.Notify(C,E); switch (E) { case 2: switch (C) { case ListCrashButton: GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE LISTCRASHEDMAPS"); break; case ClearCrashButton: GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE CLEARCRASHEDMAPS"); break; case CloseButton: ParentWindow.ParentWindow.ParentWindow.Close(); break; case RemoteSaveButton: GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bDM " $ string(cbLoadDM.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bLMS " $ string(cbLoadLMS.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bTDM " $ string(cbLoadTDM.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bAS " $ string(cbLoadAS.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bDOM " $ string(cbLoadDOM.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bCTF " $ string(cbLoadCTF.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote VoteTimeLimit " $ string(sldVoteTimeLimit.Value)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote KickPercent " $ string(sldKickPercent.Value)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bUseMapList " $ string(cbUseMapList.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bAutoOpen " $ string(cbAutoOpen.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bKickVote " $ string(cbKickVote.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote ScoreBoardDelay " $ string(sldScoreBoardDelay.Value)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bAutoDetect " $ string(cbAutoDetect.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bCheckOtherGameTie " $ string(cbCheckOtherGameTie.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote RepeatLimit " $ txtRepeatLimit.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote MapVoteHistoryType " $ cboMapVoteHistoryType.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote ServerInfoURL " $ txtServerInfoURL.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote MapInfoURL " $ txtMapInfoURL.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote MidGameVotePercent " $ string(sldMidGameVotePercent.Value)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote Mode " $ cboMode.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote MinMapCount " $ txtMinMapCount.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bEntryWindows " $ string(cbEntryWindows.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bSortWithPreFix " $ string(cbSortWithPreFix.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bDebugMode " $ string(cbDebugMode.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote MapVoteTitle " $ txtMapVoteTitle.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote List1Title " $ txtList1Title.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote List2Title " $ txtList2Title.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote List3Title " $ txtList3Title.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote List4Title " $ txtList4Title.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote List1Priority " $ txtList1Priority.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote List2Priority " $ txtList2Priority.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote List3Priority " $ txtList3Priority.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote List4Priority " $ txtList4Priority.GetValue()); if ( (txtASClass.GetValue() == "") || (Len(txtASClass.GetValue()) < 10) ) { txtASClass.SetValue("Botpack.Assault"); } GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote ASClass " $ txtASClass.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bRemoveCrashedMaps " $ string(cbRemoveCrashedMaps.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bReloadMapsOnRequestOnly " $ string(cbReloadMapsOnRequestOnly.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bUseExcludeFilter " $ string(cbUseExcludeFilter.bChecked)); i=0; JL0CFC: if ( i < 16 ) { if ( cbCustGame[i].bChecked ) { CustString=CustString $ "1"; } else { CustString=CustString $ "0"; } i++; goto JL0CFC; } GetPlayerOwner().ConsoleCommand("Mutate BDBMAPVOTE CUSTSETTING" @ CustString); GetPlayerOwner().ClientMessage("Settings saved!"); break; case ReloadMapsButton: GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE RELOADMAPS"); ParentWindow.ParentWindow.ParentWindow.Close(); break; case cbLoadDM: if ( cbLoadDM.bChecked ) { cbAutoDetect.bChecked=False; } break; case cbLoadLMS: if ( cbLoadLMS.bChecked ) { cbAutoDetect.bChecked=False; } break; case cbLoadTDM: if ( cbLoadTDM.bChecked ) { cbAutoDetect.bChecked=False; } break; case cbLoadAS: if ( cbLoadAS.bChecked ) { cbAutoDetect.bChecked=False; } break; case cbLoadCTF: if ( cbLoadCTF.bChecked ) { cbAutoDetect.bChecked=False; } break; case cbLoadDOM: if ( cbLoadDOM.bChecked ) { cbAutoDetect.bChecked=False; } break; case cbAutoDetect: if ( cbAutoDetect.bChecked ) { cbLoadDM.bChecked=False; cbLoadLMS.bChecked=False; cbLoadTDM.bChecked=False; cbLoadAS.bChecked=False; cbLoadCTF.bChecked=False; cbLoadDOM.bChecked=False; } break; default: } break; case 1: switch (C) { case sldVoteTimeLimit: lblVoteTimeLimit.SetText(string(sldVoteTimeLimit.Value) $ " sec"); break; case sldKickPercent: lblKickPercent.SetText(string(sldKickPercent.Value) $ " %"); break; case sldScoreBoardDelay: lblScoreBoardDelay.SetText(string(sldScoreBoardDelay.Value) $ " sec"); break; case sldMidGameVotePercent: lblMidGameVotePercent.SetText(string(sldMidGameVotePercent.Value) $ " %"); break; default: } break; default: } } function Paint (Canvas C, float MouseX, float MouseY) { Super.Paint(C,MouseX,MouseY); C.DrawColor.R=0; C.DrawColor.G=0; C.DrawColor.B=0; DrawStretchedTexture(C,10.00,20.00,380.00,2.00,Texture'WhiteTexture'); DrawStretchedTexture(C,420.00,20.00,200.00,2.00,Texture'WhiteTexture'); DrawStretchedTexture(C,10.00,120.00,380.00,2.00,Texture'WhiteTexture'); DrawStretchedTexture(C,10.00,220.00,380.00,2.00,Texture'WhiteTexture'); DrawStretchedTexture(C,10.00,320.00,380.00,2.00,Texture'WhiteTexture'); DrawStretchedTexture(C,405.00,20.00,2.00,490.00,Texture'WhiteTexture'); } jTs 6 `95s.s T.r T& a^B[[H&B,NB#DB!H!HBB_H b//================================================================================ // AdminTabWindow. //================================================================================ class AdminTabWindow extends UWindowScrollingDialogClient; function Created () { ClientClass=Class'AdminWindow'; FixedAreaClass=None; Super.Created(); } 3q 6 D95s.q 3.g 3& V T<qb C]!_ ]W W $`w.]*[.]`w[*-x'[-'] [  $] U-M  wU*kpUU sec   T T T S lS \S _ S | S FS c T ZS n S tS ` S bS d S s S S S v S n| r [ XS d T oS e d gS ih YS ES eS cS mS D| Y | oS hEO | e S pd WS JE gS qS `HW HV HP S ^ | dDjDOS GDNS [S w S dj S | iS mHj| q_ ]_ pS j_ c T \ | kEkFN S O| RFIS VDa | w d \ | `| lS OS aS |d EJDcF^ELT _| G Ead V| Wd eS od EKS ]S gS m HK S h S dEJS kS j S cS iS j S MS xj fd Xd | o S xS yS |S {d !d (| tS wS l S Zd S zS HDmFs DNS E d 6S pd B| eE\d [ T QDnHTS vDNd | Rd d Kd !S @| s| ud EBd ELd Y| Od (d P| pd Ed | n| LS o | m| LS D DMDPD xRFXd Md E_ hDcECd ^S [ EuS z d ^DGFPS uS US G E]S rd Sd _ d rh KD x[E fd _d n_ Jd | ld ]S wd F_ ed u`d u^d u_  d Bd d }j ZEtH_EZ d vEkd ] | pEj_ F d PDbj JDPDqDvEu| v| G| yDME[Ek| ~EHZD_ DEEF|FtFAE}SESF@EvxJ]CMU{Ba(bHc CC  fvjsKj]Rc&G{wjKx} GJT)U} iyjwM a n  nMj{W  e P  rU JKIZZ J  t/o Aw~O zM} [A  hI tOjA g  kZ wO  Ej QP  _Q lLi{ y do rC  @S Mr_ ZC  g q  to Aq O\o [X  iV v B} N t ZC  h s  u} B r  OC  \O ie  u} A N  NC  [C  hy\t~o Pe ^P jn  xzxEo } Q  Km  XQe w sGrBNst z g0m  vn  B~ O} [rG hn  u] BSj O?r]qk} yP  FqR~|`S  \R  i R  vQC O  Q I  ^} j}  wR Di  Sn `t  n[a  {I HqWq e] rM  }  L$n  Yi f| s`n  @v Li Z`gC  uP Bc P} ^ikxJyQCc Q>v _ L n?V  |~  IJZ  Uh  aElmx Y,n  g| t} B@ PU ^o l}zC  Hm  TL  au  ne  {j G\ U~ a^o o x  }`JC  X\}  eSn  r n  m K { XN f/b  sQ@AN K  \{E in  v} Co P;l^P  J`  WC  db p$Q~2o Ly ZO gk  tn  ArV N]Z} i*Qvf Du Q(Q^X ls zW Gz U?T bT p`~w LS Y]  gR tQ Bq Pq ]g  j}  ww CG PB ]H jn  w b D?W  P[`  \` iT v>y  C{|[ Pc kr y_  G0rTu_  bU o~}  |j IG WQ d0C  qR~p MC  [p  go to  B0n  O C  \q h m  u@  B,QOd ]Sk} zm  GP  Tz  ao m}  {\n  G\e  TFa  `C  ma  za  Gx  To aW oEk }s IC  V_ c{ qh ~i L} Zj gk ul Cm Qq _z m{ {~ Il W dsrY AZ O[ ]\ k} y] F^ T_ b` pa ~Sh LSF[@  iA  vB  CJ  P }  ]S  j0X  wT  DEZ  Qv]bo SNat  p>w }z  K@  Xje N  s `  ~L` Z` g@  tS[A[  \A  iY  u@ A^  Mq  Y| ek rA An  Mt  ZZ gm t@e Bn  N P  [U h\ uZ  B~n  O~e  \/} hA ua  Bn  O  \o inws F`UadbscBeQf`goh~Q Mf  ZSgfC  uo B a  P F] u kn  yu FC  SG  `C  mu z } GK  U ~ b  p @ ~N  L A Y B g C u D C K Q M _ ^m I | n I e V}Bbd dS} rSs)NNd  \b hKo vKp DC  Rr_C  mC  z`Gc  U^ bO oR  }A  IIUg  cHpB Q MQ  Zg  g \ tO @n  LY Y] fPvs } ia vO C} Po  ]c  jC  w{5zDZ  ~b Je  WX d  qN  ~W KV X[  eSr} AM NTZU iqvQEL  SQ  `s mj  |o  II  VH  cO p Z }~`Kq Y L  fm sa Ar N~[$] iC  u{x B | O\`](B  ka  wC  D E QE _Ko kwK w F D G R H ` I n| |/n  I] Voc/}  rr  ?U LC ZA  gJo tN} B[} OKm \}C  jc  w[b  DaW QX _c lA  yW Ff  S}  `v m^  zI G^T} ca| or ~i  K`Xv  fS^  rSC  ~@ KqX/K g_sKn BD PN  ]C  j S  w { DdP} _D  lKq yKr G` U,M bp nKF}\  Ka X*] eO q0q ~0}  Kb X] e}@  rl  #tKc Yq f$D  so @~  Na[ @  jb vM C`O H  ^ik^zR IjVkeXtY Bs OF]t k] xt Eu Slal  pw |Sk Jl Xme} tSi  Ao Ny [q iR v\  Br Oo \[  jSh vV CqPb ^V  jV vQB~  Qb ^Z  jb wC C{  Qo ]} kPxo  Fd  Ro  _b lb x ] D{  Qn]@ lA yj  GQh Th  |{  IIVF eg  rF ~V Jg  Xl d@ qr}pLn  [Nhow\  FN SM aK oJ }f  KZ X_ fr\ sI @H Nm \rC  iDuCDi  SG _E mC {BIZ XAfM u{+!Bo  cw pSf ~RKSg ZU  hz tT  @p Mn Z{QJgR qg ~e  KS WSl  d qq  ~Sm  JT Wk dj q^ ~u  Kw XW eT rY ~w  J{y W @  cbop  ~cJ}Y Yde0{  t0G  AW Nq [Q g{  t|  AwP N*N  Z9j g0H ug  BBj O%P ]N  i} u q B@  N{v[B  QOj ^Jw l@q z@I G`N  Tam a[} oe  {  Gm TS bT ow |y I{V| e_ rs ~f  KJ XA eG rF /e  L/  Yx fi s/`o Mw [>f iu] vF  CM Po \}  j^  vn  Cu Pw ]] jN  ww DN RO  ^U  k}  x{  E} Q^  ]r  iX  vTC] RC  _m l _  y ^  Ff  Si `J  m} zG GP UG cP qG } MC  Z P g b u G B]  P} ]P jG x { FH  SN  `U  mV zN  H@ Us b} n} {QHU WT c@  pw }} J>x  Wu  dE  pFf}j cl  qk  }D Jo V}  dC  qn  }L  JW WR eo sx  Ag  Nc  ZM gN tO AP N[ [e hC uf BB OT \U i\u|C  EZQ|c  aY nX {rN  Htd Tp}  apn  mpw zbU GbT T`~  aU@ n^T z^U G@|Sg OQ{ \K@ hKH tOH AO@ NEY [F} iB@ v5X  C5H P s ]5G  j2T v2U C9N  Oh \(_  i#H v#q C$_  P#s ]kj<H#X  d#m  q{s~n  M}  Z{P g{M t{N A{O N{t [} g{ td A} MF  Zd gP th Bf On\U zT F} S`KnT }U J~Vh j{ vh BcNfl| |EEIf  Ws d{W pT }U JZVme[C]R8aY ~lKzicU wn  C}  Pg]{ zy  Gd T] ad nW/{EK6jC  `Z  m%my%ifZ  O@[%0x[Z  SGK_Z  jwpvwkfEA{Qj4Lw0x@^0xw([hPcC9af3+G} rcu:~msxESk} ~} J\WZ  fEB\rc}fN^ thp Ax q{IP~etNZ  BHtOZ  Cd^PZ  nOfzZ  `cQmEn~2l{T(^{U(F} nz {D HZ  VF b Fp{H,vv} b{`|o"q kL \XhjvH  R{^*^bbHE QTj[B^~`y\Z  Ub a_^pk NUZZiZ  ~^ K:SXjGk_ rZ  ~[MK3TXZ  l{lWx aOlQpo \Z  jZ  w!q7D>zuZ  o^5e{I&`}F{ Cc OC  ]Z  jh`w{(qWZ  HeQUZ  fYyssilFyU M  N C  [ H hS uo  tSFAC  Gn  T}  aSSBm{oho {}&W m } K-K {]&x } ^ SBwk Dmb Z  O SRL\ a  h Z  u S*B ?Ul SRbA WPc C  s ] PT0\ a p ~ ~  K v X j} f $Z  s J@ jJ  J UL  V Us c Tq !M  O qR\ don (Z  ] 0s j !Z  w buC *Z  x pyE z~ /~\ 9q Z J g Bf u rv[ Nn Q h 4C  g %K-t u+a o L {E 4X(X E 4Cp .>s E 4f7q {E 4qW E 4iH Bq q 1C  ~  D$J EE 4F;N E 4s T &>G Oq E E 4t7R KF %]Q wE 4Jn -yx HZ  q  !~"~ @B| +Z  ~ [E 4kJ ieu @KZ NZ  e  (mq y^ G| %E 4OC &E 4THSZ  [TVh>x~{ vn  C}  PC  ]E 4Vj>Sv@gu[vE 4VQl  gq sSq@>!MqL^~[{\{  W>fYc{  |>RZH(|bO ^>Sjgv[}G,XZ  DE 4VQgx[gv cd6Gb^5ui Z  ^Z  k({w2nr6G`Z  g_Dt Z  xZ  DE 4nQPc"6Eb"El9g"j n<`"Z  \"E 4Rh"m z%6GH%C  O%[Z\%Z  v%3E 4mB%6Do%V < s%S!TS%Z  g%