*E@ {5vqAl None DebugLogCreateControlSetTextConsoleCommand BDBMapVote MapVoteLA13tCoreSystem SetValueUWindowGetPureMapname GetValueSetFontClientMessage FixPrefixBroadcastMessage SetTextColorEngineMakeSelectedVisibleSetSelectedItemClearSetNumericOnlyCloseCreated MapVoteLA SelectMapFindPlayerIndex DeSelectAllOtherMapListBoxItemsKeyDownPaint CloseUWindowLoadMapCycleListNotify LoadMapTypesAddItemAppend SpectatorUpdateKickVoteResults DestroyWRIUpdateMapVoteResults ShowWindowRemovePlayerNamegetSelectedItemTickWRIFocusStartWindowSendReportTextCleanUpPlayerIDs FindIndex FocusWindow MatchFilterUpdatePlayerVoted AddNewPlayerCompare SelectPlayerGetMapSequence SetupWindow SetupGameMapBrowseWebPage DrawItemMapVoteHistory_INIGetMapPriority ItemHeightExecuteSettingSave ListClass isMapInList TallyVotesSetMOTDUpdateOpenWRIAssault OpenWindow GetPrefixGetServerConfigAddPageOpenVoteWindowGetMapListNumberTimer GetRandomMapSetKey RemovePrefix ServerTravelLoadExistingKeysFailureSuccessGetWinningTeamDoubleClickItemLoadingSwapUMenu KickPlayerQuerySetHTMLRemoveMapByIndex AnswereQGetPlayerScore GetAccVote IsCrashedMap!CreateMapnameIncludingListnumberSetInfoServerAddressCloseAllVoteWindowsbAlwaysRelevant MapReport SetPlayCount getListNumStartActorMutator PlayerPawnAddPlayerNameSetMapSequence CloseWindowAddMapGetPlayerNameOpenIfNecessary WindowClassMapVoteHistory2MapVoteHistory1 MapListTempMapVoteHistory4 HotKeyBoundMapVoteHistory3BeginRequested RunRport formatingGetQExecuteMessage CustConfigSetMapTournamentPlayer List2FilterProcessMenuKeyHandleServerEmpty CheckForTie TeamColor TimeMessagesorting ProcessDataBrowseCurrentURI SubmitVoteSubmitKickVote AddKickIPWinTop WinWidth WinHeightWinLeft WindowTitle AddKickName CheckKickIPCheckKickPlayerOpenWelcomeWindow SaveAccVotes SortMapListRemoveOldestMapColor ClientClassPostBeginPlay SetEditable PreBeginPlayLoadMapListConfigSaveMapListConfigUpdatePrefixes ResetAssault GetMapIndexGetRealMapnameHandleFailedMapSaveMapVoteConfig SaveKeyBind AddMapNameStartMutatorsAndSettings ClearList MaxFloatEnableKickWindow RemoveMap GetPlayCount BeforePaintbShowWelcomeWindowBeginModeHandleEndGameFindRemoveTrigger BeginState SendReportFocusOtherWindowGetMostPlayedMapGetLeastPlayedMap RemoteRoleMutatorPostNetBeginPlay HideConsole NetPriority LifeSpan GetItemName SetHistoryLaunchUWindow SetMaxLengthMutate List4Filter List3Filter AddMutatorCloseActiveWindow List1FilterCustomGameConfigCreateRootWindowbList4ObeyRepeatLimitbList3ObeyRepeatLimitbList2ObeyRepeatLimitbList1ObeyRepeatLimitbFixCTFModificationsbLoadScreenShot MsgTimeOutEmptyServerLevelSwitchTimeMinsMapListIfNooneVotedbASbCTFbDOMbDM MutActConfigClearPlayerListClientPlaySoundAskQ ResetGameASClassbUseExcludeFilterList4PriorityList3PriorityList2PriorityList1Priority MapVoteTitle List4Title List3Title List2Title List1TitlebSortWithPreFix MinMapCountMidGameVotePercentMapVoteHistoryType RepeatLimitScoreBoardDelay bAutoOpen SetMultiLine KickPercentVoteTimeLimit bKickVoteDestroyOnClose ConfigWindow MapVoteWRIKeyBinderListItemServerInfoLinkMapVoteClientWindowMapVotePageControlMessageHelperPlainVScrollBarMapVoteListBoxPlayerVoteListBoxKickStatusListBox MapVoteRIUMenuMapVoteListKickStatusListItemMapVoteReportMapStatusListBoxMapVoteTabWindowServerInfoWindowMVKeyBinderFrameWindowMVWelcomeWindowMVKeyBinderListBoxMapVoteHistoryMVKeyBinderClientWindowMapStatusListItem MVWelcomeWRIPlayerVoteListItemMapVoteNavBarEmptyServerLevelSwitch AdminWindowAdminTabWindowGetMap Domination TeamGamePlusUpdateServerTimeout QueryText FailureText LinkClass NumTriesTextAreaClassBrowseHTTPReceivedData HTTPErrorIpDrv UBrowser DesiredWidthIdealPlayerCount bByParentChild TimeSecondsOwner nextPawn MaxValue MinValueGamePageNextBest Sentinel bBottomGrowBottomClientWindowUBrowserHTTPClientUBrowserMainWindowUBrowserUpdateServerTextAreaTopClientWindowData ServerPort ErrorCodePortPart 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 Defender WebServerURIIdStatusBarTextFixedAreaClass ClientAreaDesiredHeight TextAreaVertSB bSelected SplitPosRoot bCreatedRootaPawnMouseXMouseY bShowConsolebLeaveOnscreenbQuickKeyEnable ScreenshotNetMode MutateStringPrev PawnListbAcceptsFocus EditBoxWidthItems DownSound BlackTexturetries WhiteTextureNextURLEventInstigator ParentWindowAlignbTyping bDisabledFirstChildWindowIndexLastChildWindowPrevSiblingWindowP OwnerWindow TheWindow TicksPassedbDestroyRequestedMsgIPOther DeltaTimePrefixServerInfoURL MapInfoURLbHasStartWindowKeyBinderWindow bHotKeyBoundMapName ActorClassGetPlayerNetworkAddressMapVoteMutator MapListNum MapList1 MapList2GetEntryLevel MapList4 MapCount gPlayerCountbWindowVisibleMapVoteResultsKickVoteResults GameTypes OtherClassNextSwitchCountdown bGameEnded bUseMapListFindChildWindowpos bAutoDetectbCheckOtherGameTie ReportText DrawUpBevel ClipTextDrawStretchedTexture CreateWindowMapPreFixOverRide PreFixSwap OtherPreFixHasStartWindowbEntryWindowsSetAcceptsFocus bDebugModebRemoveCrashedMapsbReloadMapsOnRequestOnly ActGameClassActGamePrefix BringToFrontSetSize MapListTypeGetPlayerOwnerUWindowListBoxItemUWindowListBoxbIgnoreRDoubleClickbIgnoreMDoubleClickUWindowWindow CustomGamesCustomGamesStateUWindowButtonPrefixDictionaryLastMapsCountLastMapListCountXUWindowDialogControl bUpdated blastCheckgAdminChechsumgPlayerChecksumgTitleChecksum bAdminDone LogoTexturebOpenWindowDispatchedbSetupWindowDelayDoneMyCountMyPlayerCount bHasVoted repMapsCountrepMapListCountXrepAdminChechsumTitleChecksumrepPlayerCountUWindowCheckboxNewPlayerName LifetimeMaps Location bIsPlayerMapList p_ReportText LocalMessagetestenUWindowRootWindow GetNextIntPPTeamaMTheSoundString 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 TextBufferMapItemObject PlayerItem ItemPointer CapMapName FunctionH SearchTextWelcomeWindow cbLoadDM cbLoadLMS cbLoadTDM cbLoadAS cbLoadDOM cbLoadCTF cbAutoDetectcbCheckOtherGameTiecbReloadMapsOnRequestOnly cbCustGameRemoteSaveButtonReloadMapsButtonListCrashButtonClearCrashButtonsldVoteTimeLimitlblVoteTimeLimitsldKickPercentlblKickPercenttxtRepeatLimittxtMinMapCountsldMidGameVotePercentcboModetxtServerInfoURLtxtMapInfoURLcboMapVoteHistoryTypelblMidGameVotePercentlblGameTypeSectionlblMiscSectionlblOtherClasslblLimitsLabellblMapPreFixOverRidelblRepeatLimitlblMinMapCountlblAdvancedSectionlblServerInfoURLlblMapInfoURL lblASClass lblActGame lblActPrefix lblCustGamelblTemp cbUseMapList cbAutoOpen cbKickVotecbEntryWindowssldScoreBoardDelaylblScoreBoardDelaycbSortWithPreFix cbDebugModetxtList1TitletxtList2TitletxtList3TitletxtList4TitletxtMapVoteTitletxtList1PrioritytxtList2PrioritytxtList3PrioritytxtList4Priority txtASClasscbRemoveCrashedMapscbUseExcludeFiltergap CustString FilePathversionState p_URLStringP1P2qp_ServerInfoURL p_MapInfoURL MapListBox1 MapListBox2 MapListBox3 MapListBox4 VoteButton InfoButtonPlayerListBoxKickVoteButton lstMapStatuslstKickStatuscbLoadScreenShotlblStatusTitles lblTitle1 lblTitle2 lblTitle3 lblTitle4 lblTitle lblMaptxt1 lblMaptxt2 lblMaptxt3 lblPriority1 lblPriority2 lblPriority3 lblPriority4 lblMapCounttxtFind SendButton txtMessagelblMode LastVoteTimeSelectionTime MapListwidthPlayerListwidth ListHeightbMapAlreadySetTextColorTitlesTextColorTitleLowSectionStartRightSectionStartStruct selListBoxlistNum UnrealShare StrProperty RealPreFix RealMapNameStructProperty VirtualMap Dictionaryvirt TempText lblMenuKey cmdMenuKey OldHotKeysldMsgTimeOutlblMsgTimeOut sizefactorbSliderInitedcbUseMsgTimeoutClassProperty bSaveNeededServerInfoButtonMapInfoButtonReportButton1ReportButton2 TipsButton AboutButtonStepCurrentMapName ByParent lstKeyList SaveButtonCloseRequestTime lblMessageKeyItemCommandStringObjectProperty MapWindowPrevSelectedMapPrevSelectedPlayerInfoServerAddressInfoServerPort InfoFilePathServerInfoFileFloatProperty BoolProperty IntProperty NewPrefix ByteProperty MapList3cdaһם=$: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ߍ> YaWs> YaWs> 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> YA> 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> YY3kY3ktt{#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 -%nYXWVj_]Botpack.Assaults"2r"3o" ptn"U"m]MapVoteLA13.MapVoteHistory1l"3q] Majorityk"T"S"RQe] Welcomed$?c$?b$?a$?i] Assaulth= Deathmatchg]Capture the Flagf]OthersPONM`KZ~J]AS-*A]DM-*AiDM-*G]CTF-*F]*R|FpM2~ (?P8r (?P8rm (?P8rK4 (?P8r (?P8rmmK4 (?P8rK4mm (?P8r (?&Cnf (?&Cnfʀ (?&CnfK4 (?&CnfʀʀʀK4 (?&CnfK4ʀʀʀ (?&Cnf (?7X (?7X (?G.G (?G.GIAIAK4 (?G.GIAK4螞K4 (?G.GK4 (?G.GIAK4 (?G.GK4IAIA (?_ڽK4 (?_ڽK4 (?_ڽK4 (?_ڽK4 (?_ڽK4 (?_ڽK4 (?_ڽK4 (?_ڽK4d6o o I(I(?{I(?{I(?{> Y{#UI(?{ FFUwJ ::$R MߍFC M2XamM2M2M2M2M2һםһםһםһםһםһםһםһםһםһםһםһםһם> YһםһםһםһםһםһםһםһםһםһםһםһםһםһםһםһםһםһםһםһםһםM2M2M2> Y{#UM2tč韏|.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 (?M2XamM2M2tč韏tM2Xamc1Q`O^e37XM2Xamc1Q`O^e37XM2Xamc1Q`O^e37XM2 (?M2M2tč韏7XÑһםDһםlһםһם9 ӑһם0һם^Mһם> YR@GI&/rP"2M"N"O"WR~B_ڽd6d6~d6d6d6d6> Y> Yy&.y&.> Y> Yy&.y&.y&.y&.> Yy&.y&.> Yy&.y&.y&.y&..'ld6xxxxxxxo d6xxxxxxxxxxxxxxxxxxxxxK4螋xxxxxx ?$@ABsrWBd6y&.d6d6 xLMʀ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 } @@A gayz\ (?ˑһם|.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> YG.GIA> YG.GP8rmP8rm> Y> YG.GIA> Yt> Ytt> Yd6> Y{#Ud6> Yd6> Y.'l.'l> Y> Y> Y> Y&Cnfʀ_ڽ&Cnfʀ_ڽ&Cnfʀ_ڽ&Cnfʀ_ڽ&Cnfʀ> Y> Y> YG.GIA> YG.GP8rmt> Yttt_ڽ_ڽ_ڽ_ڽ_ڽ_ڽ_ڽ_ڽ_ڽ_ڽy&._ڽ_ڽ_ڽy&._ڽ_ڽ_ڽy&._ڽ_ڽ_ڽy&._ڽ_ڽ_ڽK4_ڽK4_ڽK4_ڽK4螝7XÝ7XÝ7XG.GK4G.G7XÅ> Y{#U7XÝ7XÝ7XÝ7XÎ᱘᱘᱘&Cnf&CnfK4P8rP8rK4螎᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘᱘|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڑһםttt7XÝ7XÝ7XÝ7XÝ7X s  EOIAy&.IAIA K@^sRCmy&.mm F<@V  @j|K/ڙxU[A s SVG2XamqnqnqnqnooqnqnqnqnXamXam.'l.'loc1Q`c1Q`c1Q`c1Q`.'lc1Q`c1Q` X]Querying Server...Y]The server did not respond.Zq\["i x@kL]x*2y&.*2*2 {%@=JkN&E@=A|E&Cnf~ʀʀʀxxxxxxxxxxo ʀʀʀxxx ?$PABnZ^@Q@@9@\!@= @@U@7U@]W5I @Q@\w/@@=u u@"sMU[u_i c YXbg4G.G~IAIA> Y> Yy&.y&.> Y> Yy&.y&.y&.y&.> Yy&.y&.> Yy&.y&.y&.y&..'lIAIAxxxxxxIAxxxxxxIAxxxxIAxo IAIAxxx E*YEY?$@AB]@X0 SGcNPCoPO^e3pO^e3.'lXamXam> YXamXam> Y> YXamXamoo 7XÝ7XÝ7XÝ7XÝ7XÝ7XÝ7XÝ7XÝ7XZ oct@P8r~mmmmxxxxxxxxxxo mmmxxx ?$PABe @n @AA @K m~o] y b@lK @@v@_HJao"c*2xxxxxxxxxxo *2*2xxx ?$PAB| @A@J@P @MQlqqT @@Jv pgR\R_yqn釅mXamXamXamXama`W" j@^@@Lp#yVI~as~@QD AU[/ڙx Mߍ/ڙx Mߍ Mߍ Mߍ Mߍ Mߍ/ڙxFOm@V ` iJ\BB ]fH@d$E@4}i@v b[  @@6@>G Oh;gT@@*GE@I @@k @@PY=m/ڙxAAJh @]@o~J wbp @Rq U@M @wd |qC  x`cL O @h@R@UV@b@Wv@AZt[\_^DGN @F}gN ; ::$CaWsFC > Y> Y> YR@G/T2o .'l.'l/T2.'laWs.'l/T2.'l.'l.'lһםһםO^e3@d-ڄ.'lXam.'lXam> YR@G/T2o Yy.'l.'lO^e3/T2һםDһםlһםһם9 ӑһם0һם^MһםO^e3r@P"2M"N"O"YA@f@LC}uep i\ @V@t @qS @O Nj O@sC ([` @W u x pM G@b @s @HMO]@PQRg~@h@M@ W[UcH2YyMo .'l.'l> YR@G/T2.'lYy.'l> YR@G/T2.'l.'l.'lo > YR@G/T2o o  Z| Q]MapVote Key BindertI]M_` d^ efghijkct  @J @d@m @t ] @[eStč$ b @@@@h @rH R @@@Jr Rdy@g@@{XIHY W@I @lAP R S T T  @V @W @X @@^_`agbn@zvsjtf@km_ nYve rs@t@=@_ @a L ou n|}gMSV[I2@d-M> Yo .'l.'l.'lo .'l.'l> YR@G/T2.'l@d-ڄ.'l> YR@G/T2.'l.'l.'lo > YR@G/T2> Yo o  ZQ]Map Vote Welcome WindowQ8k~@Os -::$::$FC YQZ> YR@G/T2.'l> YR@G/T2o /T2/T2.'l.'l.'l> YR@G/T2/T2/T2/T2/T2> Y> YR@GufS{$@d@Z  @g @l O @S @[T@U  @ U@X@[@J`QY3kU[ډһםc@]@z`@E @Jb@d e@zx @@Dv s o@b@~[@wvBl@N@T[@vxhuX @nP eV @asABQAgI sD@Y@L EC@J Q` a @N\Kif9e^.. ^#p ?n ?l ?i ?h r *#### -- CreateWindow Failed'(^-^~ -' )' e@_ka @ @^yEh z  r@i D v a f jam q x M@Rj@@j IX@xU@]   Hf\  RX @@IML @F@w @z@ @ZK@P@Lx aYS@FKh@gDCM@N@@L_P d\V @e|}@e@@D @@H@ C @|@@rA^vPtˑһם|[$һם|.Xڑһם|[$һם|.XڑһםһםDһםlһםһם9 ӑһם0һם^Mһם> Ysօ> Ysք.'l.'l᱘|[$> Y> Yss֎᱘ssss֟|[$|[$|[$|[$|[$|[$һם᱘|[$|.Xڌ|.Xڌ|.Xڌ|.Xڌ|.Xڑһם7XÝ7XÝ7XÝ7X y^ @U @cg hr D G@:f m U@t @wDO@U @N XQ  @k @W  sc  @m [v@} @d  N f @@@i @j S @l @wo ^@]DO}p $:@ˋxxx MK@C{u@E@@{ @\@B q@@F T@E @@O @@I J KG @K @j@M w@Q @c@`@Y )@P\ E@v|@wBb @@De mh tkH8Nu.nru*#### -- Attempted to open a window on something other than a PlayerPawn'(R.urR*#### -- No Console'(R-rR*RL*R-'RC}&' HGk @h b@AG@c' a l @q @@ao@F|  @e  @w  @ @B @@WC 0@@D 0@@F 0@@s @G 0@@l@@E  @J @I @T dH  @y @N  @@Q R NaI@}b@r@l[ Z @@wY@` zC@Y @^PB@XQ@^P@{o @r@G @y @C Pu @z @~ qw { @v@B @ @AY pG@F G H ^ @{@L Eg$ M A 8 P Gh O Q S Km MPW Om @[ @e @\ W8j Y @Z @] Xl 4 ^o }@S_ @@d qu@ -g -h -k i -l -m @n -@@}w @@w t @x @{ @@|@h~dL{B kI(.'lZ D kF I H {L@C @X @P @@Q@@nm`qB[ @@Z g @@{b  @_ @c @i ` @l @r @e Al @l @@Mk B@m @@n @o @p @~ @r Xt@ T`M A@[_@`@oNL/| pxxxxxxxxxxo > Yao"c*2ao"c*2.'lao"cK4螅> Y*2> Y*2ao"cao"c> Y᱘᱘ao"c*2ao"cao"c*2ao"cao"cK4螝7XÝ7XÝ7XÝ7XÎ᱘᱘᱘᱘Z ~ H@CBOZEUF@HZW@j Y LT q QGTn shrG.pwG*Txn G2}n GpG.G XSW. !$  K ?x-(K?,?,?,?, UJHo-Jj   Y'F-l  rj *.m. OZICUO.QwO*5|IO2'O.O( Vu.$'uwu*zVu,UTMenuzVu,UMenu.wuuuru*.%u-'u2u) ]F@eF.cwF*G|FF2FcF.F YC,CK?%%K?,K2)Z  Y'wZ*Z2ZZ)C KbDe `KzD:K$D:K$(zw*w*. D:K$D:K$& w*w*w.D:K$"w*pC%C,`rp* p.pC>p@D:K$!@w*pC%/C, rp*rp p.pCpD @ U W  7p-(CHC?,?,?,?, _t 5m-t @   @'kr@ *D-W .k. } d<+.A -6$6$6=,WNL T ?& -i'6=,6=,6=,WNL T ?& -i(%(N.A 2zN,[X]6=,6$6$W?,NN,)-i6=,6=,6=, WNzW,AS-|W,BT-6$6$6$ |W,TDM|W,DM-6$6$@6$ [|W,DOM|W,iAS6$@6$6$@ |W,RA-|W,CTF6$6$@6$@ 6$6$6$W?,NN `x.''xwx*zVx,UTMenuzVx,UMenu.wxxxrx*.%x-'x2x) z'\w*6z=,6z=,6z=,6z$d6z$d6z$dz zq r   * hfWU$ - . !$  mj 7  - x j ,B.wB*izx BT,,BB.B* g A jHQ D4.-a?((-w 'g  [in9^ [-oa?(( -N  )  )  )  )  )  )MapVoteWRI: SetupWindow()Q %&D%,D%,D%,D%:[a?(YSuper.SetupWindow() = false c  @p@k - ~:~$:~$(w*w*.:~$:~$&w*w*w.:~$"w*A%A,kr* .AIK:~$!Kw*A%:A,r*r .Ad e  or+<f-.@-(.@-6+$6+$6+$+|xj k ?& 6+=,6+=,6+=,AE.@-A 6+$ 6+=,6+$ 6+=,6+=,6+=,+|xj k ?& z.@T&96+$6+$6+$A+J.@T&U +%(+|?,xpp.@T&, - .@T, kN-w H ,-o-o'9timer()-t(%ggD??P  gD??N  gD??H   gD??E ]{gY g%}g,bJg&bHJ@&0@,&@H@D. i@%b@. g@Y @D@H-t'@nK&H,H,H,HKQ  Ks-t'Q Kb w. X*.- .. XxD?}}V }Se}Sh}S\ }T-i}T-D}T-a}T-c }Y}X}W}VUTSR?}b ?}T-m?}T-f?U ?}N?@?}T??}] ?}c ?}O?}T-r?}T-q?}M ?}I?}T-Z %g,x}P=f x-t'f x L-K%& M-K&& O-K,& P-K,& Q-K,& R-K,& z  ?e F  ?h G  ?\  Y--i [--D \--a g--c  Q--d  U--z  }--Z  X  SU  M  N I  ?@ J  T [  S g  T  b  Y d  X e  W f  V h  UU i  UT j  US k  UR c  M  h--f ]  O _--r v--q w--m W pClass:|  Y Map Prefix:e b }I, %b , zI&1 @W-'  @W-( {P @PP @W-(X  @P empty @W-'Q  -a.-. k% , {xU&  Upp UZ zx,&?&!&xx%}x,-W'b -W(. lx-W pU-t'% {` ,(` %2 {a ,&a .  A)pppSK/Ss Maps loaded.  ppMode: T.  _ Y.  ` X.  a W.  g V.  j T .  YPriority:UU,.  KPriority:UT,.  DPriority:US,.  BPriority:UR,.  l} xD?}Y}X}W}VUTSR?}W xU U x-t'{N. ZdNOw. X*.. X\  N.O. ZHy-'.O. ZH|-(.O. ZH}-(.  @ W -t-J w. X*.. XW-( -t-J 'a?( -J (a?( U M ]6M=,6M=,6M=,M MY Z  uv_WG. !$  Ww[ 76GE.}wE*a|[ Ee|[ EeE}E.E yA<YE._-6A$6A$6A$AJI?&`L?, 6A=,6A=,6A=,AJIL?&`? AI?L ABI?L 6A=,6A=,6A=,AJIL?&`? A%(AJ?,Ipp._e, - ._e,AJ?,}IS._P  q}J1"-a -|\   N D O E T j-r -V -m -`}  P Y X X [ W g V l T  O  .-Admin is logged in. Sending admin vars...p -X1y0 -[p1p0 -]p1p0 -ep1p0= -`p1Mp0r -bp1p0(p1p0| Ve -z  -] T -c  -WU  Th } -i -\-D -qe b -d  -C N m@ O -q -x -f -M  u-Z  -~  za6a=,6a=,6a=,a? a??& aB??& a?&? aG H   F. p ?, @A ~{WJ . !$  A@ 9e|.cw|*G|@ |:|c|.| x| 5h<53-a3w *. l| -{  u *5=/--a-w *. *u  B.<i.\-6.$6.$6.$.z[?&[ s?, 6.=,6.=,6.=,.z[s?&[ ? .A[?s .[?s . C[?s 6.=,6.=,6.=,.z[s?&[ ? .%(.z?,[S.\H .z?,[.\:.z?,[U.\I , DY 6Y=,6Y=,6Y=,Y? Y??& YA??& Y C??& Y?&? Yv w  y  F. p ?, @A ~ @q 4=&$w *. 4q  Fo (>+)w *. (o m  J'<i.n-6'$6'$6'$'H{?&IX?, 6'=,6'=,6'=,'H{X?&I? 'B{?X '{?X 'I{?X M6'=,6'=,6'=,'H{X?&I? 'B{?X?& '{?X 'I{?X '%('H?,{.nr'H?,d{.n]  Ga &C?+)w *. &a _  u/6u=,6u=,6u=,u? u?& uj k  W S (5S Q M S Q M  Mt"6t=,6t=,6t=,t? t?&? -t@A  RP,'-d%rR*Eaa ay}DR/-d(EaaR/Dy,yy,y}DR/Dy,yy, DX z,/a0 R,+rY R,10UrR*Failed to find MVWRIa Rf/


Please Wait.....
R/EaZ rE*Failed to spawn MapVoteHistorya E gX  I{ /?XDz{ 9w *. Z ESSVSpS{  s S'@s  TD ApMV D  Xvv

Map Report nzQSEQp2zQPCp1p

p          0zQSEQpSequence  \zQPCpPlayCount p Map Name
p          p------------ -------------------------------
H& nW,;{n&n,*%,dj,d5j%Hjp          zQSEQpSH!]&],}SH!p ]bzQPCpSH/]&b],}SH/p ]'ppH?
HprE*a EDE-d'q!n \V{zZ, z&z,H%&]H&]%|zQSEQ|H!]!YH]zQPC]/H/YH]]3Hq!{z ^[G2 @_pYQ p?p?q?q?Q S p/p/q/q/S R p!p!q!q!R  `w  K c gG &E@ Q H&q!G ]| ]|| { w  fik1|  %%%f&C%kk'dCf,fh|d?kdyfC%td?kCdfdfCfd, LeK DC;,h.  A ABAhVisual Configg. CAAAg-(E. CApBAEAuto DetectL. CA?,;AAE. CA?,;pBAE DMO. CA?,;AAE. CA?,;pBAE TDMM. CA?,;AAE. CA?,;pBAE LMSR. CA?,;AAE. CA?,;pBAE CTFQ. CA?,;AAE. CA?,;pBAE DOMP. CA?,;AAE. CA?,;CAEAssault:c. CA?,; CAc(c Cd% d,dW. CA?, d;AAdP. CA?, d;HCAdP emptydR}. C A?,;AAE. C A?,;*CAEUse Exclude Filtery .  ABHBAy Limitsz.  AC*CAz-(zAz4Cz, zVoting Time LimitV. >CC BAVpUz secF.  AC*CAF AFBF&FKick Votes Req.V . >CC BAV pUF %G.  A*C4CAG?GAG&GScoreBoard Delay` . >C*C BA` pUG secI.  A>C9CAI?IBI&IMid-Game Voter Req.B . CC>C BAB pUI %X. fCCBAX'XDon't Show LastXA~ . CCpBA~ maps Played[. fCCBA['[Reload Map List when[AB . fC%CHCAB +maps remain. (Elimiation Mode only)v .  ARCHBAv Misc.Y.  AfCCAY2Use the Map Cycle List instead of all mapsY %Y$YHC?[.  AzCCA[&Open Voting Window at Game End[ %[$[HC?\.  ACCA\!Enable Player Kick Voting\ %\$\HC?Q.  ACCAQ#Check Sudden Death OverTimeQ %Q$QHC?J. fCfCB?J ModeJ\(JBJ#MajorityJ#EliminationJ #ScoreJ#AccumulationW . fCCHCAY . fCCHCAF .  ACHBAF Advanced\.  ACCpA\(\#Welcome Page Web Server URL\RCI .  ACCAI @Example: www.MyServer.com:80/UnrealStuff/WelcomePage.htm].  ACCpA](]&Map Information Web Server URL]RCJ .  ACCAJ .Example: www.MyServer.com:80/MapFiles/M.  ACC?M#Map Vote History Class TypeM\'MRCM##MapVoteLA13.MapVoteHistory1M##MapVoteLA13.MapVoteHistory2M##MapVoteLA13.MapVoteHistory3M##MapVoteLA13.MapVoteHistory4_.  ACCA_COpen Welcome Window and KeyBinder when player enters server_ %_$_C?v.  AC CAvSort Maps with PreFixv %v$vB?v-(w.  AC CAwDebug Modew %w$wB?w-(I. *CCBAIList crashed mapsM. CCBAMClear crash Listh. *CC CAhRemove crashed mapsh %h$hB?h. C ABAhGame Typesg.  AA>CAg(gMapvote TitlegBb.  A4B>CAb(bList 1 TitlebBd.  ApB>CAd(dList 2 TitledBe.  AB>CAe(eList 3 TitleeBf.  AB>CAf(fList 4 TitlefBh. fC4B CAh(hPriorityhBi. fCpB CAi(iPriorityiBj. fCB CAj(jPriorityjBk. fCB CAk(kPrioritykBW. CC>CAWSaveWW2W-'U. CCCAU#Reload Maps on request onlyU %U$UC?A. CC>CAAReload MapsH. CC>CAHClose dnnfwz n%n,w.pKEYNAME Sn{w^ .pKEYBINDING wz^ MUTATE BDBMAPVOTE VOTEMENU'n( d@ !-=s@ g g $@ bI)MUTATE BDBMAPVOTE LISTCRASHEDMAPS M*MUTATE BDBMAPVOTE CLEARCRASHEDMAPS H W?pADMIN SET MapVoteLA13.BDBMapVote bDM TL-@pADMIN SET MapVoteLA13.BDBMapVote bLMS TM-@pADMIN SET MapVoteLA13.BDBMapVote bTDM TO-?pADMIN SET MapVoteLA13.BDBMapVote bAS TP-@pADMIN SET MapVoteLA13.BDBMapVote bDOM TQ-@pADMIN SET MapVoteLA13.BDBMapVote bCTF TR-HpADMIN SET MapVoteLA13.BDBMapVote VoteTimeLimit UzFpADMIN SET MapVoteLA13.BDBMapVote KickPercent UFGpADMIN SET MapVoteLA13.BDBMapVote bUseMapList TY-EpADMIN SET MapVoteLA13.BDBMapVote bAutoOpen T[-EpADMIN SET MapVoteLA13.BDBMapVote bKickVote T\-JpADMIN SET MapVoteLA13.BDBMapVote ScoreBoardDelay UGGpADMIN SET MapVoteLA13.BDBMapVote bAutoDetect Tg-NpADMIN SET MapVoteLA13.BDBMapVote bCheckOtherGameTie TQ-FpADMIN SET MapVoteLA13.BDBMapVote RepeatLimit X MpADMIN SET MapVoteLA13.BDBMapVote MapVoteHistoryType M HpADMIN SET MapVoteLA13.BDBMapVote ServerInfoURL \ EpADMIN SET MapVoteLA13.BDBMapVote MapInfoURL ] MpADMIN SET MapVoteLA13.BDBMapVote MidGameVotePercent UI?pADMIN SET MapVoteLA13.BDBMapVote Mode J FpADMIN SET MapVoteLA13.BDBMapVote MinMapCount [ IpADMIN SET MapVoteLA13.BDBMapVote bEntryWindows T_-KpADMIN SET MapVoteLA13.BDBMapVote bSortWithPreFix Tv-FpADMIN SET MapVoteLA13.BDBMapVote bDebugMode Tw-GpADMIN SET MapVoteLA13.BDBMapVote MapVoteTitle g EpADMIN SET MapVoteLA13.BDBMapVote List1Title b EpADMIN SET MapVoteLA13.BDBMapVote List2Title d EpADMIN SET MapVoteLA13.BDBMapVote List3Title e EpADMIN SET MapVoteLA13.BDBMapVote List4Title f HpADMIN SET MapVoteLA13.BDBMapVote List1Priority h HpADMIN SET MapVoteLA13.BDBMapVote List2Priority i HpADMIN SET MapVoteLA13.BDBMapVote List3Priority j HpADMIN SET MapVoteLA13.BDBMapVote List4Priority k  zc }c , c Botpack.AssaultBpADMIN SET MapVoteLA13.BDBMapVote ASClass c NpADMIN SET MapVoteLA13.BDBMapVote bRemoveCrashedMaps Th-TpADMIN SET MapVoteLA13.BDBMapVote bReloadMapsOnRequestOnly TU-MpADMIN SET MapVoteLA13.BDBMapVote bUseExcludeFilter T}-P%I P,/ PW-[p[1? [p[0P ,Mutate BDBMAPVOTE CUSTSETTING[Settings saved! A$MUTATE BDBMAPVOTE RELOADMAPS -L*L-g-( [MXM-g-( OO-g-( PP-g-( RR-g-( QQ-g-( gg-L-(M-(O-(P-(R-(Q-( q n$@ zVpUz seck FV pUF %k 9G` pUG seck hIB pUI %k q  jv ^F Pv rP%P?P&?P/P&/P!P&!P %?%/%%!%% \ ls l )G 1s 'G %^G  am| a:,l.wl*[ ,clmi{cIppIc,iclmiS{III}I&[ ,V m,i%iclKEYNAMESi}{cflKEYBINDINGc}~fV %IppIf|iIl m{I}I_\ u%mIIIu_\ u&mI  oBX[R&B,NB%DB!R!RBB^R hDX1DOq 6D$6D$6D$D AAC@ DCAHC@ D ABC@ D A\CC@ D ACC@ DCA@C  qt.X3 ;FocusStartWindowL..tLwt*zVt,UTMenuzVt,UMenuLwtttX rt*L9t-'t2t) L pAqb M tp h/{1p -{%{/o  YJO_ *l D t  E  X N S ur muK/X 1r !X %%-X / P wx mj/C 1x -C %C !u  yW x} 8]3y1} %y%1y! ] ?no'zn #%XV%%&?n&/&&!&%& -p(V&V%znV?V!&V/-p'V!V!tV?n -pm%mVm&?m?m&/m/m&!m!mVm!m&!mV?nV/&V!&% Ve-p%%?n%/&%!&  ckE _`h:,/a0 }|V},SC}FAppppppppSE $$$SF $$$SG $$$H $$$^ 10 @~{y0 @A}z, @K @T( AH AJ V~V.H. q.~ q]



Map Vote LA13



Core developement: BDB (Bruce Bickar)

Enhancements by: Cratos (cratos@gmx.at)

Support: http://forums.utassault.net
HqH-(H-(H?,-HH$ O C{;.X~{/,X%Invalid URL {{XU{X\~{:v\%S,PJ{\&,Invalid web server port {{\SJ{\&pWebServer={pFilePath=UpPort=SS\ B@F@D\KQuery()...-C 'pt Hwi*iu*iaiaz iuiI{US-B ( HN n]n 0N O Q q J@IR c &R   L@QNT Eh] q ]T  RTm Browse Failureiu*iai*GSGI \ py G%E


Information Unavailable
 TU~ 4piu*iai*G% UU d J U I [  S@@]yN2{l O-C.@ -l -l. dlt .  ;ly..-N w5-N Iy YCpC.YI-W -lI-'I)zl O-C-N t-l.y' Z[[l\9" -N  )  )  )  )  )  ){l O-C[a?(Super.SetupWindow() = false a?( @LaNNumPlayers: SServer empty for: SA%Ap r CA% A%apB( p ] mA%apB( @[o nzR To ..o -(Rw *  gn Q >n ~n -& @^l\ -%z\&-\}\&+\ g h,RJo&}%&},9}%m-g  w * - -P -P '' @unvI 5|v,CTF-BTCTF-BTv~v- od j y d e d e  q{@ S{~{=V{~{=&-` ppExecute default Setting:{. Property:S. Value:V!ppExecute Setting:{. Property:S. Value:V!a  SSVb  SppChanged Setting:S. Previous value:a . new value:b  b c u%#rc * rd *}b  xjm UStartMutator:!J rJ*Starting Actor/Mutator FAILED. Could not DynamicLoadObject:! /a0J@Actor already spawned:!0 10@aJr@*Spawning Actor/Mutator FAILED:! S@a/!|H.@ pU }?_AnnouncerMessage:U c.U ]wc*. \c ' ouZq)Qcaw*Z.awZ*wZ*wZ*H v}![q  p [q _@z~h -M|V, MultiCTFGameMultiCTF detected. Fixing Mapprefix to CTFMCTFMCTFM~ppppNextVirtualPrefix/NextRealPrefix/ActualPrefix:s/^/~z^~ {s~sMapVote: Prefix OK. Mapchange seems to have been successful&{ 6 &}6%4~6;4%4~6,4%@6'6#@64'664&U%U,-6hU R 6QU |~R "{6e U _6e U "}_%4~_;4%4~_,4%j__j_4__4&{6f U 66f U }6%4~6;4%4~6,4%@6(6@64(664&OU- f N I Dppppbrowsing N K :SG ]N K G f  |Ed E ECrashed map:EG%tG,{GljzGlE G3GlEAdded failed map:Eto slotSGb L~{O }\L&MLEL&YL ,dL&\L ,dError: GetRandomMap() failed for ListSE!稨GetRandomMap() configured for ListSEtook the random map:SLLL }@jb Vbj j}&Z}P| }jH }Z}H  EV .-i.-..-. 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; } } yT+uT |,S: 6S=,6S=,6S=,6A=,6A$ 6A$ 6q=,6q=,6q$ ,xF,xXDBX,QF,.  AA??X,9. A?A??X95.  B?,?FA??X57. HB?,?FA??X7^.  A?X,. B?,?FA^ ^Vote^-(L.G GA?,,C?F(?XLL-'S. A?,?X, ?FAS {-e -SKickS-'SS-(].  A?B,A?,?F A]aRank Map name Votes Player name Votes] %] S$.& & A?BHCB$-($N.P PfC?BCBN-(Nk. A?, C?F Ak Sk$m. A?,C?F Am Sm$n. A?,C?F An Sn$_.  A?,A_ &_$_ A`.  A? A?,A` &`$` Aj. pA?, A?F,Aj &j$j qa. A?,?F A?,Aa &a$a Ag.  B?,?F A?,Ag &g$g AY. ?X,?,AY$Y SK.  A??X,?,AK$K SD. A?,?F?X,?,AD$D SB.  B?,?F?X,?,AB$B SA. ?F?BBAA %A Sp. ?F,x?BBAp Mode:p %p SN. ?F?B,BANScreenShotN$N %N SN- -^v. ?F,K?B,-@??,Av(vB'vD,o. ?F,,?B,- BAoSendo-(]. ?F?B,K@??, A] ]Close]-( GCa a/!GVppBDBMapVote: Team SV won the round.tV&|%{|&ppBDBMapVote: Setting Team S| as the defending team for the next map.|%.^.-(.%...&.-(.|.b% l//================================================================================ // 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); } Qr ~ -`pMV r ! K//================================================================================ // MapVoteHistory2. //================================================================================ class MapVoteHistory2 extends MapVoteHistory_INI Config(MapVoteHistory2); mHsIB͸msDs !QI}&9w,*,-(,*},w9*9-(9*},w5*5-(5*'},w7*7-(7*O}& },s  BUbuU 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; } JN+$#w,*,Fw9*9iw5*5w7*7 Mi!% is s )$i  $ i >,=?,{.,2,[X]-<pMUTATE BDBMAPVOTE MAP .,2=\,& H9=?,{.92,[X]-<pMUTATE BDBMAPVOTE MAP .92=\9, R5$=?,${.52,[X]-<pMUTATE BDBMAPVOTE MAP .52=\5, \7.=?,.{.72,[X]-<pMUTATE BDBMAPVOTE MAP .72=\7, $Ki.$:,%K&,".$:K,9".$:<K,5".$:sK,7".$:=?,<pMUTATE BDBMAPVOTE MAP .$:=\ L=?,=pMUTATE BDBMAPVOTE KICK .LT= NL"7.NeSelect Player:.Ne=?,=pMUTATE BDBMAPVOTE KICK .LT=   $i o{v pSAY v v  ^ =?, w+* {.+2,[X]-{.+24pMUTATE BDBMAPVOTE MAP .+2= 0 ] e ,\,& 9\9, 5\5,  7\7, ? $Ki.$:,%y K&,".$: K,9".$: K,5".$: K,7".$:\ S =?,=pMUTATE BDBMAPVOTE KICK .LT= NL"7.Ne  ~ ${ {v pSAY v v v xo  Kz Hu Ez  Wy O 87{ay w{*o%o, {o{ro{v~r.UNRvrrvrpt r}x ww *w 8rTrp[X]rjcrd{jja-`ppLoading Map[S]j-`Map ignored cause no filter matches: r*{aMapList Spawn Failed 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(); } OViU@i, CV&39 CV,M5 CV,g7 CV, P} _ } 404 ErroruwE


Information or Server Unavailable
T S~ ,zAre\?%$\?&ew+*.+2\~  Zz" xr86pGoing to load gametype:j using maps with Prefix:z. PreFixChange:h |j Botpack.CTFGame-r 'Pure CTF DetectedS  bz%OS |S n D RO}-M-r ,|R,CTF-|R,CTF-BTCTF prevented from loading wrong map:RE ~R.UNRE RRE Rph R}z~OTUTORIAL~OINTROBwi *Bi 8RTRp[X]R^cR{^^-`ppLoading Map[S]:^-`Map ignored cause no filter matches: RObzO&n OpD %稨IgnoredSD Maps with Prefixzcause mapcount > 1023! Vu&CzN- -o'_ ~u.UNRT_ uu_ a cuq.pa .Screenshot v.pa .LevelSummary zu,[X]rYou can NOTsvote for this map.txPwv*rvsvtvxrDownLoadsRequiredt K//================================================================================ // MapVoteHistory1. //================================================================================ class MapVoteHistory1 extends MapVoteHistory_INI Config(MapVoteHistory1); cX: #| -z'Maplist is reloading...'84a84b`km  akr *89kMapVoteLA13.MapVoteHistory1  ak%-%----WpDetected GameType = V-e(-b(-X(-[(-](-`(-h(|Vu-e'|VBotpack.CTFGame-b'|VBotpack.DeathMatchPlus-X'R|VBotpack.LastManStanding-['|VBotpack.TeamGamePlus-]'|VBotpack.Domination-`'-h'tV-hwt x-eL-\  ASAS p"ASAS Botpack.Assaulta-b-\  CTFCTF "CTFCTF Botpack.CTFGameaG-X-\  DMDM ?"DMDM Botpack.DeathMatchPlusa-`-\  DOMDOM "DOMDOM Botpack.Dominationa-]-\  DMTDM "DMTDM Botpack.TeamGamePlusa-[P-\  DMLMS }"DMLMS Botpack.LastManStandinga.-h ww*85bw-\ wwb &"wb taZ-W-%Z-,P-6h- {6*- #6*- -M%|6*- , MultiCTFGameMultiCTF detected. Fixing Mapprefix to CTFM#CTFMr#*ppMapVote: Error. CustomGameConfig[S-]: Failed to load GameClass:6*- Hz6Q- b#b6Q- -\ ##b H"#b 6*- a-@ azjEliminationT % T%T%q!XWpBDBMapVote: Maps Reloaded. Total Maps = SJ -zMapVote configuration has been changed, Re-Open Voting window for updates.'-z(a -]_ p3yd \]@v@mYt^/#mtT ^+H U XTcFdpTDM;DM;LMS;DM;@ ?|T,[X]TT,HT{dJd~d;dd~d;&g d~d;dd~d;&{T,CTF-|T}J&pJ-Hpg T}JHJH 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); } H@ey` uNy%Sy,I-6hy {6*y #6*y Iw#*y#-M%|6*y , MultiCTFGameyCTFMz6Qy 6Qy ybI{6Qy yNppppN6Qy ;y;yPrefixDictionary:N f//================================================================================ // MapVotePageControl. //================================================================================ class MapVotePageControl extends UMenuPageControl; function KeyDown (int Key, float X, float Y) { Super.KeyDown(Key,X,Y); ParentWindow.KeyDown(Key,X,Y); } hZ_(qStoring Maplist to file...^a @^q %^GZ&Z|Z,[X]Z^GZ,Z^GZZ^bZbb^Gb^u N^b^aStoring Maplist to file finished:S U@`x(IxC D x -o {l rq*q.l -o'wq*6x=,6x=,6x=,xA?,A?FBq&{rk r7kZ{sm skm{tntPlayersn }f^Loading Maplist from file...km  akr *89kMapVoteLA13.MapVoteHistory1  ak%M&-&a- @q U- @G# 8 UTUp[X]U?- bUWMUM-M&N @u Loading Maplist finished:S a A wZB@lmnop@q@rstgE LPM E F I  jz@V@uJ TM_Q -^N- -^N- -J  @|~:J82 asINextVirtualPrefix:sbsz?Restartww*-h83b|}ww^wK-MK|Vw, MultiCTFGameMultiCTF detected. Fixing Mapprefix to CTFM^CTFMNextRealPrefix:^bTpp.unr?game=tB%B,-6hB {6*B 83.1#6*B qr#*ppMapVote: Error. CustomGameConfig[SB]: Failed to load GameClass:6*B 6QB 6QB -M|6*B , MultiCTFGameMultiCTF detected. Fixing Mapprefix to CTFM#CTFM3{6QB 83.2as6QB 0|s6QB 83.2b^#-M|6*B , MultiCTFGame^CTFMNextRealPrefix:^bTppp^}s.unr?game=6*B 83.3as#|s#83.3b^INextRealPrefix:^bTpp.unr?game=6*B B1z,DMVBotPack.DeathMatchPluszz,LMSVBotPack.LastManStandingpDM,z,TDMVBotPack.TeamGamePluspDM,z,DOMVBotPack.Dominationz,CTFVBotPack.CTFGame:z,ASVu^INextRealPrefix:^bTpp.unr?game=V CR e;981/a0 R 6R nR a10 N//================================================================================ // MapListTemp. //================================================================================ class MapListTemp extends Info Config(MapListTemp); var config string PrefixDictionary; var config int MapCount; var config string M[1024]; E //================================================================================ // MessageHelper. //================================================================================ class MessageHelper extends ReplicationInfo; var string TheSoundString; replication { reliable if ( Role == 4 ) ExecuteMessage; } event Trigger (Actor Other, Pawn EventInstigator) { if ( (Other == None) && (EventInstigator == None) ) { ExecuteMessage(TheSoundString); } } simulated function ExecuteMessage (string SoundString) { local Sound dynSound; Log("AnnouncerMessage:" @ SoundString); dynSound=Sound(DynamicLoadObject(SoundString,Class'Sound')); if ( dynSound != None ) { PlayerPawn(Owner).ClientPlaySound(dynSound,,True); } } x@r|  :,@B@pVYQZ> YfS@$@FZ3|Zc'Szc&*xc%}c&S|Z}xx'}zc&-}|Z}cc'zc&*zc&*xc&}c,~Zx%'zc*'( 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'); } } @Hj V"|j,[x]jj,Nzj,&:jj}j,j wRF >!zF wMF 4w&QFw,PXw,Kjw,FERROR: GetMapPriority(): Mapname has no Priority attached:F !? k Jl . AABAl Map Voting Menu Hot Keyw. CAHB?w-(w-'w-'w-'U. AB*CAU-(U@@UpBU&UMessage ExpirationU ? )-o 'K . HCB BAK pUU sec]. A\BHCA]!Change Message Expiration] %]$]HC?]- -Nm D?s. DC?m BAsCloses s-(s-(S Iq ; :8-O Bq q k -O (w-( NKxSI x%x,opKEYNAME Sxxk o{ot pKEYBINDING ozt MUTATE BDBMAPVOTE VOTEMENUw oL ox 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); XK M JK & Oy!_ yu u $`w.y*w.y`ww*-O 'w-'y s  $y U-o  wU*K pUU sec   mQvT]&ȋmv`@S{B]lZz|z|Escape{,p {,y{,0 {,9 P{| PN//================================================================================ // 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; } } } ]3c&/|3,[x]` 3-v'@` 3\- b`-~ %,{G 3`G Excluded Map:`l%[,0{B Q3`B -W:-m -v3`3p3:13%,0{C 3`C -n -v3`3p3:23b%_,0{D U3`D >-o -v3`3p3:33%,0{F 3`F -p -v3`3p3:43f VZP68ppSET Input z  mutate bdbmapvote votemenuw z {L pSET Input L  z GYL Ee-L  _mblqm mG%G, {Gl|mGl-`Map found in crashed map list:m'G( \A e|rU* r]* -A ? )U! -N]--A  )DU -N]- z -N  )  )  )  )  )  ) `VW280V&V}V&}[Vb}z[,[X][[,zb,[X]bb,[p[&[bpb&b| [{ b<-x w~[-[[w&w~b-bbw&t[bvVV}}vz[bt| { vVV}}v}.V jjF .78/a0 j!e%j(Cleare{ep e,j(epee<j (eg%j&Clearg -| {gm g,j&gmgj &g1079 |{://================================================================================ // 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); } 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); } ao@Pf@y9%y. ??lB AyServer Infoh. pB?lB AhMap Info|. B? C A|Report 1: Map Vote Ranking|-'}. C? C A}Report 2: Map Vote Sequence}-'e. C?B AeAboutg. C?B AgMapVote Tips\. D?B A\Close hZ !*Z.Z \ \ $Z dyZ;ZJ  hvb#O~v.O%vvO{vZ#;ppZI v.htm |#MUTATE BDBMAPVOTE REPORT PC Z}$MUTATE BDBMAPVOTE REPORT SEQ gZ9;www.planetunreal.com:80/BDBUnreal/MapVoteTips.htm eZq]



Map Vote LA13



Core developement: BDB (Bruce Bickar)

Enhancements by: Cratos (cratos@gmx.at)

Support: http://forums.utassault.net
 \I   kZDN 72-J s%%, 0%szjScore00`zjAccumulation00?a(zjEliminationzjMajority0>0PlayerVote[x]:S0VoteCount[PlayerVote[x]]:U0#G- -M .?s??,d?O 73Mid-Game Map Voting has been initiated !!!!-M 'hb l&a?'P%&?%PU%=P&^&3^P)^_^^_^nsppppNumPlayer:SPlayerVoted:SsPlayersToVote:SnMaxPriority:UuzjEliminationzjMajority?nu%:&?n>&%<,?n>,%<,?n>,%--Z'%fPppp ,U, PpF%&%?%74~&& P%~_~oQb#W~o.oo~o.%|Q _o_~,^75_%2-Z2s%%Noone voted, choosing a random map...'_O -Zs76|z_ *%&%?%Tie: %and &have same score!p _ has won.'Op _ has won.'e-J'H:__ D-a?'s%%% |ak|o _|A|af zjEliminationT TT  zjAccumulationV_77 pQ V 70J%8J, .{Jk-X(nwn*n-w.n*zJk.n.n(0Q -X'JInnK.-XJkJI%JJ%J, J kJkJ IJIJ? 71 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); } } } } rlzA :,:, n JtYQZ=$:e=$:e> Y> Y> Y> Y> YfSiS X  O-C(-S  tR ax68rwr*r-w.r*.rR KL.rrrzL%o% o, zokLRoI oR%Ro%jo, `zokokLoI&jo!69& bx//================================================================================ // 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; } ]//================================================================================ // 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; } xV `67bwb*b-w.b*.bV KO.bbbO?&O?O K//================================================================================ // MapVoteHistory3. //================================================================================ class MapVoteHistory3 extends MapVoteHistory_INI Config(MapVoteHistory3); ] E6R=,6R=,6R=,6E$6E$6E$|.a a AACB|-(|~. WCBHBA~Set/Save~ ~-(~-(B.  ACC BBB ,B RB-(S i@z^ p~66Gunknowniwi*i-w.i*.i^ Gpp000S^ ,iii-G v\ .aK.|wK*hz\ ] Kr| K|K.K Ce0mY{{64L%oL, eLK-B(ewe*e-ea/!k*.eLK-B'eeNe-BRemoving Player that has left:SLK6-|*p000SLK,L0%LkLKL65 |}Kmux~SlmxySE"%},U.| $ SpKEYNAME SUrS] Ss{S~pKEYBINDING SU] ~sz~MUTATE BDBMAPVOTE VOTEMENU| U|W B'pYour MapVote Hot Key is S-` '-` B.Press/Select a Desired MapVote Hot Key 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; } } } } 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); } F^ 4`z263/a0 _ /_ 4^ 10 f !gr ?f h h :$f 4~f7 =  L_ *Ty263/a0 c /c *_ 10 @EJf{V OP.|rMUTATE BDBMAPVOTE VOTEMENU @If P T%pppSET Input f  l .|] l  Pa 5GxB61/a0 i 5i 5a -` 1062 ~KC 6C$6C$6C$C Ci k 6C=,6C=,6C=,C A ACPA 6C$6C$6C$C%(CpA0AKeyboard KeyCB0AConsole CommandsCB A?PA  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(); } Qm !v59~%B~, 8~Km ~~-h 59b~%~, ~K~Km ~~]Mapvote: Could not find PlayerIndex. Already left?60 W_Ut57 _a/!% /a0 av LKr_v 0 10ka a_ _ rk*#### -- PostLogin :: Fail:: Could not spawn MVWelcomeWRI kJ58 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); } } [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; } "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(); } } //================================================================================ // 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); } X@Li52: OpenVoteWindow()U@a/!%@- -u  `-J /a0 y r@y 53: WRI already Spawned --> return0 10"a @ @ r"*#### -- PostLogin :: Fail:: Could not spawn WRI "A "UQ"TP"SK"RF"s(%B(("P (("N (("H (("E ((E@-r(%1(,-6h( rpr1rpr0{6Q( ("Pppp6*(  (6Q( )'("P6*( (c"Ir"W N54c%Z!wZ* w.Z*Z-Za/!%F, :.Z,F%F:.Zgp000S.Z,.Z'0%c"xpppSFg.Z&?&!& c"xppSFg.ZZZ~J%r{Jp J,J"`JpJ(J"`y%-|55{ym y,y"aymy"a"J56 e1ER 1 z1, BDBMAPVOTE42z1, ,VOTEMENU43?,:%-0L''&Please wait 15 seconds to vote z1, ,REPORT48l%/a0 AQ'l10l%TSorry, The server can only run one report at a time, please try again later. Qa AwQ*Qz1,kFailed to spawn MVReport Pa/!%-+Spectators are not allowed to vote. z1, ,MAP44<1, -< <pServer Admin has force a map switch to <'H:<e RH(J< z1, ,KICK45Q1,CJQ,,-ppBDBMapVote: Admin () kicked player:Q[CQ-|KCKickvote is disabled ez1, , RELOADMAPS46c-47q!X!y Xz1, ,LISTCRASHEDMAPS46aX-Mapvote: Crashed Maps:>%$>, {>lpS>:>l>X>% Mapvote: No maps crashedz1, ,CLEARCRASHEDMAPS46a->%>, >l>b"Crashed Maps List Cleared!Gz1, ,STATUS49#pTotal Map Count is Sl%/a0 v al10+pActive MapVoteWRI count is Sll%/a0 AQl10.pActive MapVoteReport count is Sll%/a0 ` l10/pActive MapVoteHistory count is Sl z1, ,SETSEQ50V-<1,f~< f&Syntax Error TJ<f&<<f`ak`m<T`A`aSequence changed !<You must be a server admin to perform this fuction !  z1, ,SETPC51 -<1,f~<  f&Syntax Error TJ<f&<<f`ak`h<T`A`aPlayCount changed ! <You must be a server admin to perform this fuction !  z1, , CUSTSETTING45b -w1,,new Custsetting:w>% >, zw>&1-6h> ' -6h> (>f b  Z[@\]@@Vp?,?,V. B Vq(pVKMaps/Kick  . ppVKConfig ts .tppVKInfo Z.p-pVKAdmin tX.tp `//================================================================================ // 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); } ^Sg-?S&A. , $ S,A. 9 $ S,A. 5 $ A. 7 $ A2x  @Tq//================================================================================ // BDBMapVote. //================================================================================ class BDBMapVote extends Mutator Config(MapVoteLA); 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[48]; var() config string List2Filter[48]; var() config string List3Filter[48]; var() config string List4Filter[48]; var() config string ExcludeFilter[16]; 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; DebugLog("MapListIfNooneVoted currently set to:" @ MapListIfNooneVoted); if ( MapListIfNooneVoted == 0 ) { DebugLog("MapListIfNooneVoted set to 0 selecting random list"); MapListIfNooneVoted = RandRange(1.0,4.0); DebugLog("Maplist to be used:" @ MapListIfNooneVoted); } 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("48"); 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 < 16) && (ExcludeFilter[j] != "") ) { if ( MatchFilter(MapName,ExcludeFilter[j]) ) { DebugLog("Excluded Map:" @ MapName); return ""; } j++; goto JL006C; } } j=0; JL00D5: if ( (j < 48) && (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 < 48) && (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 < 48) && (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 < 48) && (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,'MapVoteLA'); 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",'MapVoteLA'); } } 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,'MapVoteLA'); } } 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),'MapVoteLA'); } 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,'MapVoteLA'); ActorClass=Class(DynamicLoadObject(ClassString,Class'Class')); if ( ActorClass == None ) { Log("Starting Actor/Mutator FAILED. Could not DynamicLoadObject:" @ ClassString,'MapVoteLA'); return; } foreach AllActors(ActorClass,A) { Log("Actor already spawned:" @ ClassString,'MapVoteLA'); return; } A=Spawn(ActorClass); if ( A == None ) { Log("Spawning Actor/Mutator FAILED:" @ ClassString,'MapVoteLA'); 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,'MapVoteLA'); } else { Log("Execute Setting:" @ Setting $ ". Property:" @ Property $ ". Value:" @ Value,'MapVoteLA'); } 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); } `HiB/H& ,_H, 9H, 5H, 7 ib]iNm39[-K 40b%^b, bKbkb&uj?DQDPDKFMaxPriority:Uuh-N Ta YTp X Tr #u Sr#*Pa# ASClass fixeduBotpack.Assaultb-K '41 dO l] D L^wD*Gz.DTO  DD[. L $ [TO [-A -y  FqYTN|Lc37aY zY(F%TF, JzFLY'F'38a( 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 () { } f[oQ # L lz *v t_ Lrw_*[z._T&,z _t __ @I 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); } aT} 6 `95s.} T.~ T& i@WIro10-qD2(a/!G4.-bDefenseSet false, Ending game normally.(First half end)(5.-'hb l a?'( NZ //================================================================================ // 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 () { Log("NumPlayers: " @ Level.Game.NumPlayers); Log("Server empty for: " @ ServerEmptyTime); if ( Level.Game.NumPlayers == 0 ) { if ( ++ServerEmptyTime >= ServerEmptyTimeMins ) { MapVote.HandleServerEmpty(); ServerEmptyTime=0; return; } } else { ServerEmptyTime=0; } SetTimer(60.00,False); } TqJ%428pp.] has voted for  qS-J i]a/!% ~zq,[X] q q0^.]'^ abqa% ^0a N^0%d p000S.],4d ^0azjAccumulation29pppp.] has placed Sa^ votes for q'FzjScorepppp.] has placed U`^ votes for q'pp.] voted for q'D( H A6 k95s.A:.B:& GoC6MapListIfNooneVoted currently set to:SEE%MapListIfNooneVoted set to 0 selecting random listEDd ?@Maplist to be used:SEopps-Qb#~o.oo~o.HandleServerEmpty(): Currentmap:oDesired List:SEB&Bh  B|h oEMB BFpServer is empty forSX Minutes. Actual Map is:o. Switching to a random map in ListSER:O( eD6 _95s.De.Ee& C\SD-25)a/!G(Ha/!U(\-C 8%\8,R-6h8 {6*8 #6*8 &r#*ppMapVote: Error. CustomGameConfig[S8]: Failed to load GameClass:6*8 RR|#(8Za/!V268%-8.#rC*<C8.C8.88%8.C8<C8.'8427W`wW*IW->r~*1W~~WWWWwW*W- w~W1W~'WWt( 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'); } 2G6 D95s.G2.H2& FPMN/a0 LM10s-J6q?_ ,pNextURL = pNextSwitchCountdown = Uqz7\?%Map change Failed, bad or missing map file. TravelMap:T!-dTm OH:m  RH(q RH( l%8ll%9w MkwM*Tw.M*M-c.M'TcTc0%L.M((MMpSh seconds left to vote.' h0h,<101 Minute left to vote.'f0wf*fa/!@.fF, ffgh, 1110 seconds left to vote.'h,  h%fwf*fa/!@.f Fhff0?h?,?% h%12^ %MwM*M-w.M*c.M'cc0%^ MM-^ %13D'h%14D' b//================================================================================ // AdminTabWindow. //================================================================================ class AdminTabWindow extends UWindowScrollingDialogClient; function Created () { ClientClass=Class'AdminWindow'; FixedAreaClass=None; Super.Created(); } YK,H K7-b -b '0-]^7q!Xuddd16bdCurrentPlayerCount decreased:Sd0%D(Fdfz,]z%15z 16z%w*a/!kw*ddIr*-a/!k17 pppnew Player , .-|18'S.19ap has been refused access to the server (1).'a T.19bp has been refused access to the server (2).'a a/!%Q, ":.,Q%"Q:.k p000S.,Y ppSQk .20i .'i 0&5Y (5Y '-V a/!%21Va/!G.-22 -23-qL.((U.24 rN6 a95s.Nr.T r& fT T T S mS kS [ S | S FS c T ZS n S FS ` S `S d S s S S S v S n| r W YS d T mS e d hS j^ YS ES eS cS mS D| Y | kS iEO | e S td XS GE dS qS `HW HV HP S ^ | `DfDOS PDNS [S w S dk S | gS pHh| m[ [[ pS j[ c T Z | gEjFN S N| QFHS VDa | w d \ | ]| hS MS _S |F\EHd D_EKT a| G E^d W| \d fS od EOS ]S gS m HK S ^ S bEHS kS k S aS iS j S LS tk gd Yd | o S vS wS zS yd !d ,| rS uS l S Zd S xS HDiFs DLS E d 6S nd <| aEWd [ T ODjHSS rDLd | Qd d Wd !S @| o| qd E@d EOd _| Nd ,d N| ld @d | n| KS i | m| JS D DMDPD xPFVd Qd E[ eD_EAd ]S W EuS z d ]DNFNS sS US G EXS pd Qd _ d r^ JD xYE bd ed n[ Id | kd [S sd E[ cd u_d u^d u[  d Bd d }k ZEpHZEZ d vEld ] | pEk[ F d VDbk JDPDoDtEu| v| E| uDLEVEj| |EHiD}[ BECFzFtFE}QERF~EIxJZFMRFwa(_~c @C  cBjpMjZRc&DqgKu} DzT)R} fOjtL ^n  kCjx O  bW  oU |LHKZWo qJ  G~LvJ}~ XA  eG qxj~g  hZ tO  Bj NQ \ x kP  yEiFo oC  }S JA] Wo d p  rC  o Lo Z f[ r~ ~X  J8R W r  c8C  p s }C  K q  X~ ee  r~ ~ M  KC  Xc eu\qo M}C  [o gn  uP B P  Px]m  Um  bn  n~ { v GSV y dPrs@seAG XW~ eDrr[ @4f Mn  [oh Q  vSCoQR  _ N  lP  y} EI  R~ ^J|kS  gi  t``  A[ No[n iM  wI Dq SR `t  o}  |SIn  Wb dyJrQ~ || IeVe d K qP e McC  Zv g}  u|v B^Qn  _b k~  yDlEDU  qh  ~o JU Xx eU s{A| O} ]OY  kn  w@ D z R^`n  nL  zj G w  Un b8C  om  {c  He  Uo aeC  o}  |P I4j  Ve~ c8\ qu  }o JSXb fC  tn  @R Mk  ZAV gSs~ Az Ny [=lhST`  bo ~ }SJK  Xu eqC rW X M[[n  jo wF Et RP  _o lw y^FDS T|y  bg  ow |a  IDV  V:C  bB n}  {n  Ho U<p  bQ oq |WR Il Vo bo  p/]  }`_  Jp W}F er rR@Q OE ]R jS x d F _  TT a` oFN[ |G Wn  dC  qS}m  K}  Xc dC  rj @  MRZm  h~ u@  Bm  OP  \z  i4Duo Co Qt  _4d lgo {}  In  U/x  b_  oJY  ||w HGj VW bC  pa }C  Ks X:~ e_  r_  T  L{ YS  fz  sh @i Nl \j ik wl Em S@  aJ  nh~ {hHq Vz dHvr|h{ v~ D R}  `^ m^ ztGY V[  dZ q[ \ M] [^ i_ w` Ea SyaB  pN  }`  IA  VMc@  re  S[K_ fY  sB ^  Kcq  WWx cQk pE >n  K8t  X1X e1m rA  @n  MP  ZU gZ  tZ A@c Nn  Z  gn  tA Ae  No Z~ h_  unBs Qa`boc~dMf\gkhziI| Xf  el  q D} t K | Y } g ~ un  Cu PG  ]C  jC  w  DK  Ru _ @ l A zN  H B U C c J q L  YM G \ l i c vX~ BXqO4e^C  mo zd Ha  VOo cOp qb C  MIBZC  \C  inv^Dc  R-N_A  m`~ yoF`a  UI bo  ohA  |yHzWC  fZ sR  U KqXE gS~ sS @Y MQHZQ  ba o^|b JWg  W^dX r e  W LR YN  eV r[ [  LB YOo gQg  u~ BR O~ \C  iQn  vK CDT Oj  ]~ jL  wI  DQ  QR ^C kOm xH  Fc  SZ `r nL  {a HC  U H b G pOo ~ F Js XC  gc tY  A|M1[ E i[ w  C}  PB  ]O i[ wr Dy Qr  ^m k/a  yn  Fk  S D `4o n9z{'x u { Bo  PW ]JkKzeA  HU U\  bsoa~^  MrZPi[  x| D{S`aT p} }H IjV^eGt~  CoP,~ ^v  k}  wo DT Rj  ^n  kTxW FkSlbs qK N  KpXo ga u[ BDNt \C  jb wD  Du Qm_R nc {d HD  UY  bp og  ~w K@ YK f[ rH  C LODZb hR ul  B  No [B h2Xut COr P}  ^Oq kOn yO G>~ S[ ` { mm y^F R  TI ap nl  {o Gvh To |Q{  I@  UD bl oV  {l G@  Sd  _o  lo  xo E@ SA _l mWh  yW{  F~ Sl `D lg  xv D4g Q4e  __l} {4f Gg  Tr `~j  mWj zeGnVy eqsl B[ N`[  jow{  F\  RXC  _V lX]  zs FSSTbA\ qAC  ~`{ JWf  VWZ cW] q4d ~4c K4h  YWk f4i  s}v@w vWi  COw OW ]w  iC vQZ Dj RE _@  mU  yT  Er RG _o m q zl  FH RT `y mz zI G9w U>e  aJ mK {9G I<q  V}  b9} nl {s Hn  T8u  aw nk {2W H^ UM bT pN |o J[ Xw e|d sN  @j MK [/\ g/m tj @.{  N.|  [o hHJvw @j N  \e  i{  uN  A$~ N#o  [@  h@G uB  B'!Ozp@q m L| ZN  gm sbAM Pc\{k` zs Fg  S^`J nA {G HFUF dx qI~z My Zg g  sF  @DM[ \Ci~ xr  DX  Qe  ^y k{  x{ EC  QL ^^  kG  xH Eu RW _O  k[ xN  EU  R}  _ ^  ldxw Gw Tk b_  o| |^  I{ Vf  bf  oJ  |~ IU V~ b~ oX |H  Il VG  c~ oY |ZIH Ym  f~ s\@U  PV ]Ak@ yA Ft SH _o lq ym  F[ Sh  `glAJhg o E n  Sm` }  ~o KmYB wn  CMP8_L  |W IR Wo  elqoOm  lC  y/y  Ec  RU _0vk0f y t FqW Su `O lN yT FU SM _C  lP xc  ErRN  aGt mJX yQf  G~ TT `U mQx yQgFPv V@ bG nTx {Vw G_v S~ _~l{f@gT fgU suw @un  MT ZU gu}  syd ~ Ld Yf eh re { LF  Y_  fu  sP GEM_  [|x  hi uT BU Oh [w hZuN  D~ Q@ ^G k[x]Gn  V}  c@  pg }~  JT W[ dU qf }P JO WN dM qT ~U KvWd fx  sj @E  N~ [@ hN  uN  BL|OG KP Yn  g}  t G A P Ow ]G jP x~ FG SP a~ od |w I]  VC  cG pT ~C  Kb XsifC  OW-\pIkyZ  dCVq.xG],[\_ wJEx Om\iIz r<e .xdh\4+DC  oGW6|G7zrg HTlZ  @[9eL\qGS@Z  SC  `G<[lNT0GGn[~ IPW-V CP7rPP<qBJn sPEaPKfC  q&W-~C  k&]w5AT*NP mZ  k b^x @Z  V Vfb 4E 4bRH qT(j EZ  R  D$_ aQc E 4xt 2l IE 4V^ ms[t KO qU(Z E 4bB +yd MZ  ]  !|"j qH,f  FR qE 4qX iiI q_|r SZ  n  ,mz "q g GX ^E 4V_ Xhu XR ] Xx j X\  w mt[D q^*_ czI E 4xC `Z  {`bHBE 4qj_y[hb T Qc^^tZR}i ggC  tgk  Agl  NgR [gb  hgM  ugn  Bg}  Og  \ge  i 0u}Sei^ t}Z  A ^Ni_ ly  xyq E:dQeGu@E 4Y|E 4P UZ  e|wr3TipE 4s }Z  p a|Z  ]>zj4 do  c4FpZ  vn  B}  O4SB[E 4_d]E 4V|M&R4!Txmv[LZ  g4BwtE 4[Nkc]F4PLca  oZ  |4*IbQs4ebDWyfFy_M  XGE 4F;ePE 4P$kC  {F Hm U~ cOMpO!\ }DnYVPGE 4_WZ  vApCO3saofZ  UE 4CbE 4he`uME 4VB|HXZ  `pym|xf0~^n  \}  iC  vmx[C|Sv^E 4^T&E 4Q%ro C4>Po N|!M[*>ho f{  s|fY{  X|PZd5I~Z  G|STE 4X(gWUJVE 4S^`E 4f7sy  YE 4OeE 4JtLy~ER"wG I@ VA cB pC }qIaE 4kzgEeq  jj vE 4}DibA ]lc l\O o k Z  w TiD E 4W m A  D [3P *oC Z  r |E 4T< 4sS SVF l  \ k[h C (qQ o B RqO E 4l@ L^l [{J R E!&AQ!E 4t7R!C  F!E 4iS!W  |!X  I!KEV!OE 4z1[! n  U"6Gb"Y  i"rhv"Z  ^"Z  j"E 4e w"J@\"6E\"w  a"S n" Z  {"CyG"Q  @"6GL"Z  S"Dq `"Z  Q"E 4R]"6Do%` s%NcA%Z  d%4E 4mp%,y]%6GV%m ]%C  k%Z  x%