Áƒ*žEŠ@ kºóó±.cÎDiRK« ù;Qž ŠNone DebugLogCreateControlSetTextConsoleCommand BDBMapVoteMapVoteLA13vvCoreSystem SetValueUWindowGetPureMapname GetValueSetFontClientMessage FixPrefixBroadcastMessage SetTextColorEngineMakeSelectedVisibleSetNumericOnlyClearSetSelectedItemCloseCreated MapVoteLAvv DeSelectAllOtherMapListBoxItemsFindPlayerIndex SelectMapKeyDownPaint CloseUWindowLoadMapCycleListNotify LoadMapTypes SpectatorAppendAddItemRemovePlayerNameUpdateKickVoteResultsTickWRI ShowWindow DestroyWRIUpdateMapVoteResultsgetSelectedItemUpdatePlayerVotedCleanUpPlayerIDsFocusStartWindowSendReportText FindIndex MatchFilter FocusWindow SetupWindowCompareBrowseWebPageGetMapSequenceExecuteSetting SetupGameMapMapVoteHistory_INISave ItemHeightGetMapPriority isMapInList AddNewPlayer SelectPlayer DrawItemSetMOTD TallyVotes ListClassUpdateOpenWRI GetPrefix GetRandomMapGetMapListNumberAssaultDoubleClickItemOpenVoteWindowAddPageGetServerConfigGetWinningTeamTimer OpenWindowSetKeyLoadExistingKeysFailureSuccess ServerTravel RemovePrefixLoadingSwapUMenu KickPlayer PlayerPawnQuerySetHTMLRemoveMapByIndexAddPlayerNameSetInfoServerAddressGetPlayerScoreSetMapSequence GetAccVote IsCrashedMapbAlwaysRelevantAddMap!CreateMapnameIncludingListnumber getListNumCloseAllVoteWindows MapReport CloseWindowStartActorMutator SetPlayCountOpenIfNecessaryGetPlayerName AnswereQGetQ WindowClassMapVoteHistory4MapVoteHistory3MapVoteHistory2BeginRequestedMapVoteHistory1 MapListTemp RunRport formating HotKeyBoundExecuteMessage CustConfigSetMapTournamentPlayer List2FilterProcessMenuKeyHandleServerEmpty CheckForTie TeamColor TimeMessagesorting ProcessDataBrowseCurrentURI SubmitVoteSubmitKickVote AddKickIPWinTop WinWidth WinHeightWinLeft WindowTitleSaveMapVoteConfig AddKickName CheckKickIPCheckKickPlayerOpenWelcomeWindow SaveAccVotesColor SortMapList ClientClassRemoveOldestMap SetEditablePostBeginPlay PreBeginPlayLoadMapListConfigSaveMapListConfigGetRealMapnameUpdatePrefixes ResetAssault GetMapIndexHandleFailedMap SaveKeyBind AddMapNameStartMutatorsAndSettings ClearList MaxFloatEnableKickWindow RemoveMap GetPlayCount BeforePaintbShowWelcomeWindowBeginModeHandleEndGameFindRemoveTrigger BeginState SendReportFocusOtherWindowGetMostPlayedMapGetLeastPlayedMap RemoteRoleMutatorPostNetBeginPlay HideConsole NetPriority LifeSpan GetItemName SetHistoryLaunchUWindow SetMaxLengthMutate List4Filter List3Filter AddMutatorCloseActiveWindow List1FilterCustomGameConfigCreateRootWindowbList4ObeyRepeatLimitbList3ObeyRepeatLimitbList2ObeyRepeatLimitbList1ObeyRepeatLimitbFixCTFModificationsbLoadScreenShot MsgTimeOutEmptyServerLevelSwitchTimeMinsMapListIfNooneVotedbASbCTFbDOMbDM MutActConfigClearPlayerListClientPlaySound ResetGameASClassbUseExcludeFilterList4PriorityList3PriorityList2PriorityList1Priority MapVoteTitle List4Title List3Title List2Title List1TitlebSortWithPreFix MinMapCountMidGameVotePercentMapVoteHistoryType RepeatLimitScoreBoardDelay bAutoOpen KickPercent SetMultiLineVoteTimeLimit bKickVoteDestroyOnCloseAskQUMenuMapVoteListServerInfoWindowServerInfoLinkPlayerVoteListItemPlayerVoteListBoxPlainVScrollBar MVWelcomeWRIMVWelcomeWindowMVKeyBinderListBoxMVKeyBinderFrameWindowMVKeyBinderClientWindowMessageHelper MapVoteWRIMapVoteTabWindow MapVoteRIMapVoteReportMapVotePageControlMapVoteNavBarMapVoteListBoxMapVoteHistoryMapVoteClientWindowMapStatusListItemMapStatusListBoxKickStatusListItemKickStatusListBoxKeyBinderListItemEmptyServerLevelSwitch ConfigWindow AdminWindowAdminTabWindowGetMap Domination TeamGamePlusUpdateServerTimeout QueryText FailureText LinkClass NumTriesTextAreaClassBrowseHTTPReceivedData UBrowser HTTPErrorIpDrv DesiredWidthPort bByParentIdealPlayerCount WebServerURIDataChild TimeSecondsOwner nextPawn MaxValue MinValueGamePageNextBest Sentinel bBottomGrowBottomClientWindowUBrowserHTTPClientUBrowserMainWindowUBrowserUpdateServerTextAreaTopClientWindow ServerPort ErrorCodePart VSplitter InfoWindowServerAddressOldPlayerName PageControl bGotMOTDbHadInitialQueryMOTD UpdateWindow CloseButton MainWindow GameType MapTitlebAdmin StartTimeTeamsbFoundScore TeamInfo MaxTeamsPickups WeaponPickup bDontRestartNextMapmyList LoopCount PlayerCount TeamIndexAlias ClassStringBeltSndTeamID PlayerName NumPlayers GameClassItemUMenuRaisedButtonUMenuLabelControlUMenuDialogClientWindowUMenuPageControlM RealKeyNameSelectedButton bPolling bInitializedPages MutatorList FirstMapTestMap MapAuthorBotpackDeathMatchPlus ThumbHeightCTFGameLFontsLastManStanding ThumbStartTeamSayMessagePlusSayMessagePlusStringMessagePlusRedSayMessagePlusDeathMessagePlusCriticalStringPlusReal Attacker SavedTime NumDefensesCurrentDefender bDefenseSet bTiePartOne GameCode bAssaultWonrank DefenderIdStatusBarTextFixedAreaClass bSelected ClientAreaDesiredHeight TextAreaVertSB SplitPosaPawnRoot bCreatedRootMouseXMouseY MutateStringPrevtriesEventInstigatorbTyping bShowConsolebLeaveOnscreenbQuickKeyEnable ScreenshotNetMode PawnListbAcceptsFocusIndex EditBoxWidthItems DownSound BlackTexture WhiteTextureNextURL ParentWindowAlign bDisabledFirstChildWindowLastChildWindowPrevSiblingWindowtesten OwnerWindowPPPMsgaMIPbWindowVisible TheWindow TicksPassedbDestroyRequestedOther DeltaTimePrefixMapName ActorClassMapVoteMutator MapListNum MapList1 MapList2 MapList3 MapList4GetPlayerNetworkAddress gPlayerCountNextSwitchCountdownMapVoteResultsKickVoteResults GameTypes OtherClass bGameEndedFindChildWindow bUseMapListpos DrawUpBevel bAutoDetectbCheckOtherGameTieServerInfoURL MapInfoURL ReportText ClipTextDrawStretchedTexture CreateWindowSetAcceptsFocusMapPreFixOverRide PreFixSwap OtherPreFixHasStartWindowbEntryWindows BringToFront bDebugModebRemoveCrashedMapsbReloadMapsOnRequestOnly ActGameClassActGamePrefixSetSize MapListTypeGetPlayerOwnerUWindowListBoxItemUWindowListBoxbIgnoreRDoubleClickbIgnoreMDoubleClickUWindowWindowUWindowButton CustomGamesCustomGamesStateUWindowDialogControlPrefixDictionaryLastMapsCountLastMapListCountXUWindowCheckbox bUpdated blastCheckgAdminChechsumgPlayerChecksumgTitleChecksum bAdminDone LogoTexturebOpenWindowDispatchedbSetupWindowDelayDoneMyCountMyPlayerCount bHasVoted repMapsCountrepMapListCountXrepAdminChechsumTitleChecksumrepPlayerCountGetEntryLevelUWindowRootWindowNewPlayerName LifetimeMaps Location bIsPlayerMapList p_ReportText LocalMessagebHasStartWindowKeyBinderWindow bHotKeyBound GetNextIntTeamTheSoundString bEnabled SoundString dynSound DrawColorUWindowClientWindowUWindowComboControl MutatorsUWindowFramedWindow PrefixesClassesUWindowListControlbLMSbTDM UWindowListUWindowDialogClientWindowUWindowSmallButtonbShowWhoKicksWhoUWindowPageControlPagebEnableEmptyServerLevelSwitchUWindowPageWindowUWindowVSplitterUWindowScrollingDialogClientbUseMsgTimeoutUWindowHSliderControlUWindowEditControlUWindowVScrollbar MapPrefixWindowConsole TextColorDefaultSettings CurrentID bSizable BaseMutatorKeyExcludeFilter CrashedMapsAccName AccVotesTmpNextVirtualPrefixTmpNextRealPrefix PlayerIDList PlayerVotePlayerKickVoteMapStatusTextKickStatusText KickIPListKickPlayerList EndGameTime bMidGameVoteCurrentPlayerCountJoinTickCount MaxPriority TravelMap bAutoGame AutoGame TimeLeftScoreBoardTimeServerTravelTimeAutoGameClassCustomGameClassMapVoteHistoryClassbLevelSwitchPendingServerTravelStringbInitMapsLoadedbMapReloadRequested GamePackage bBunnyshitActualMapPrefixbIgnoreLDoubleClick VoterNum NoVoteCountmwriPID PlayerIndexaWRIValueBestPTextVoter MapIndexMapNum VoteCountLamerFilterMVWRItempShortIPAXCESLSdefaultPrefixseq MVReport ObjectCount MVHistory CustSettingEbSpecsAllowed bManualOpen CustStateZMVWWRIYbAddIfNotFoundWKeyNamej PlayerScoreiPlayerAccVotes ScriptTextWinningMapIndextbForceMapSwitchtopmapRankingPlayersThatVoted TieCount textlinePlayersLeftToVoteSB TempMapNameAMapBMapAMapPreBMapPreRG mapnameXlocked ReturnValueStaticSaveConfigDynamicLoadObjectSetPropertyText modFilterGetPropertyText CurrentMapKeyNo TempList LevelInfo GameInfoPlayerReplicationInfo PreFixChange FilteredMap ignoreCount bIsPureCTFInfo MapCycleListReplicationInfo LevelSummaryCanvasFontrandmap securityLevelActor ActualPrefix TestPrefixPawnPlayerSettingbIsDefaultSettingNetConnectionval1val2WindowListAuthorServerEmptyTimeMinsServerEmptyTimeMapVote SettingsSoundTextureTitleConsoleNewSeqLink NewPlayCountRole ReportTypeSeqNum PlayerID bChecked LastMapIndexMapLowestClassPackage p_ReportType p_MVReportSenderpc SelectedItemHistoryMaxMaps bSendResults Property TextBuffer PlayerItemObjectMapItem CapMapName ItemPointer FunctionH SearchTextWelcomeWindow cbLoadDM cbLoadLMS cbLoadTDM cbLoadAS cbLoadDOM cbLoadCTF cbAutoDetectcbCheckOtherGameTiecbReloadMapsOnRequestOnly cbCustGameRemoteSaveButtonReloadMapsButtonListCrashButtonClearCrashButtonsldVoteTimeLimitlblVoteTimeLimitsldKickPercentlblKickPercenttxtRepeatLimittxtMinMapCountsldMidGameVotePercentcboModetxtServerInfoURLtxtMapInfoURLcboMapVoteHistoryTypelblMidGameVotePercentlblGameTypeSectionlblMiscSectionlblOtherClasslblLimitsLabellblMapPreFixOverRidelblRepeatLimitlblMinMapCountlblAdvancedSectionlblServerInfoURLlblMapInfoURL lblASClass lblActGame lblActPrefix lblCustGamelblTemp cbUseMapList cbAutoOpen cbKickVotecbEntryWindowssldScoreBoardDelaylblScoreBoardDelaycbSortWithPreFix cbDebugModetxtList1TitletxtList2TitletxtList3TitletxtList4TitletxtMapVoteTitletxtList1PrioritytxtList2PrioritytxtList3PrioritytxtList4Priority txtASClasscbRemoveCrashedMapscbUseExcludeFiltergap CustString lblMenuKey cmdMenuKey OldHotKeysldMsgTimeOutlblMsgTimeOut sizefactorbSliderInitedcbUseMsgTimeoutState bSaveNeeded MapListBox1 MapListBox2 MapListBox3 MapListBox4 VoteButton InfoButtonPlayerListBoxKickVoteButton lstMapStatuslstKickStatuscbLoadScreenShotlblStatusTitles lblTitle1 lblTitle2 lblTitle3 lblTitle4 lblTitle lblMaptxt1 lblMaptxt2 lblMaptxt3 lblPriority1 lblPriority2 lblPriority3 lblPriority4 lblMapCounttxtFind SendButton txtMessagelblMode LastVoteTimeSelectionTime MapListwidthPlayerListwidth ListHeightbMapAlreadySetTextColorTitlesTextColorTitleLowSectionStartRightSectionStartq selListBoxlistNumStruct UnrealShare RealPreFix RealMapName StrProperty VirtualMap DictionaryvirtP1P2 TempText FilePathversionStructProperty p_URLStringClassPropertyp_ServerInfoURL p_MapInfoURLServerInfoButtonMapInfoButtonReportButton1ReportButton2 TipsButton AboutButtonStepCurrentMapName ByParent lstKeyList SaveButtonCloseRequestTime lblMessageKeyItemCommandStringObjectProperty MapWindowPrevSelectedMapPrevSelectedPlayerInfoServerAddressInfoServerPort InfoFilePathServerInfoFileFloatProperty BoolProperty IntProperty NewPrefix ByteProperty MapCountÐPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿa?Ý –Ð=$:e‰Ž�”–©Ù«‰Ž�”–©Ù«‰Ž�”–©Ù«�œÔ�X‰Ž�”–©Ù«Ð=$:e‰Ž�”–©Ù«‰Ž�”–©Ù«‰Ž�”–©Ù«‰Ž�”–©Ù«‰Ž�”¨—¬ž ‰Ž�”¨—¬ž ‰Ž�”¨—¬ž Îôªª‘‰Ž�”¨—¬ž ‰Ž�”¨—¬ž Îôªª‘‰Ž�”–©Ù«‰Ž�”¨—¬ž ‰Ž�”¨—¬ž ‰Ž�”¨—¬ž ‰Ž�”¨—¬ž ‰Ž�”¨—¬ž ‰Ž�”¨—¬ž ‰Ž�”¨—¬ž ‰Ž�”¨—¬ž ‰Ž�”¨—¬ž ë˜ë˜/Ú™x똉Ž�”/Ú™x‰Ž�”‰Ž�”–©Ù«‰Ž�”–©Ù«‰Ž�”–©Ù«‰Ž�”–©Ù«‰Ž�”–©Ù«‰Ž�”–©Ù«‰Ž�”–©Ù«‰Ž�”–©Ù«‘¨—¬ž ‘ú©€'‘Ã-¤%n‘÷ïÙL�‘È}"›#‘öbb·³‘–©Ù«‘–©Ù«‘–©Ù«‘–©Ù«‘–©Ù«‘–©Ù«‘–©Ù«‘–©Ù«‘–©Ù«/Ú™x‘–©Ù«@"sáM@"sáM@"sáM@"sáM@"sáM@"sáM@"sáM@"sáM‘@"sáM‘@"sáM/Ú™x‘@"sáM/Ú™x‘–©Ù«‘–©Ù«‘–©Ù«‘–©Ù«‘–©Ù«‘–©Ù«‘–©Ù« Mß� Mß� Mß� Mß� Mß� Mß� Mß� Mß�‰Ž�”–©Ù«‰Ž�”–©Ù«‰Ž�”–©Ù«‰Ž�”–©Ù«‰Ž�”–©Ù«‰Ž�”–©Ù«‰Ž�”–©Ù«‰Ž�”‰Ž�”–©Ù«‰Ž�”–©Ù«/Ú™x/Ú™x/Ú™x‘?Ý –‘?Ý –‰Ž�”’žtÈ…> £Y˜{#U¿…> £Y˜{#U¿’žtÈ‘?Ý –‘?Ý –‘?Ý –‰Ž�”’žtÈ…> £Y˜{#U¿…> £Y˜{#U¿’žtȉŽ�”’žtÈ…> £Y˜{#U¿…> £Y˜{#U¿’žtȉŽ�”’žtÈ…> £Y˜{#U¿’žtȘ{#U¿’žtȉŽ�”’žtÈ’žtÈ…> £Y˜{#U¿’žtÈ Mß� Mß� Mß�…> £YTŠWüs…> £YTŠWüs…> £Y…> £Y Mß�…> £Y Mß� Mß� Mß� Mß� Mß� Mß� Mß� Mß� Mß� Mß�…> £Y Mß� Mß� Mß� Mß�‰Ž�”’žtÈ’žtÈ…> £Y˜{#U¿…> £Y˜{#U¿…> £Y˜{#U¿…> £Y˜{#U¿ Mß�…> £Y˜{#U¿ Mß�…> £Y˜{#U¿’žtÈ Mß� Mß� Mß� Mß� Mß�‰Ž�”‰Ž�”…> £Y…> £Y…> £YDžõÚ…> £Y…> £Y…> £Y…> £Y‰Ž�”…> £Y…> £Y˜{#U¿…> £Y…> £Y…> £Y…> £Y…> £Y…> £Y…> £Y…> £Y…> £Y…> £Y…> £Y…> £Y…> £Y…> £Y/Ú™x/Ú™x/Ú™x…> £Y…> £Y…> £Y…> £Y/Ú™x/Ú™x/Ú™x…> £Y…> £Y…> £Y‰Ž�”Vªê‰Vªê‰‰Ž�”’žtÈ’žtȘ{#U¿…> £Y’žtȘ{#U¿…> £Y’žtȘ{#U¿ Mß� Mß� Mß�’žtÈ’žtÈ�œÔ�X…> £Y˜{#U¿‰Ž�”’žtÈ’žtȘ{#U¿…> £Y…> £Y…> £Y…> £Y˜{#U¿’žtȘ{#U¿…> £Y˜{#U¿’žtȘ{#U¿’žtȘ{#U¿’žtȉŽ�”–©Ù«…> £Y˜{#U¿�œÔ�X…> £Y˜{#U¿…> £Y˜{#U¿…> £Y˜{#U¿…> £Y˜{#U¿…> £Y˜{#U¿‰Ž�”–©Ù«‰Ž�”–©Ù«‘–©Ù«‰Ž�”–©Ù«‰Ž�”–©Ù«‰Ž�”È}"›#Îôªª‘‰Ž�”È}"›#Îôªª‘‰Ž�”È}"›#‰Ž�”È}"›#Îôªª‘Îôªª‘‰Ž�”È}"›#Îôªª‘‰Ž�”’žtÈ’žtȘ{#U¿’žtȘ{#U¿’žtȉŽ�”’žtÈ’žtȘ{#U¿’žtȘ{#U¿’žtȉŽ�”–©Ù«‰Ž�”–©Ù«‰Ž�”–©Ù«‰Ž�”–©Ù«‰Ž�”–©Ù«‰Ž�”–©Ù«‰Ž�”’žtÈ’žtÈ’žtȘ{#U¿’žtÈ’žtÈ’žtÈ’žtȘ{#U¿…> £Y…> £Y’žtȘ{#U¿’žtÈ…> £Y˜{#U¿’žtȘ{#U¿’žtÈ’žtÈ…> £Y˜{#U¿…> £Y˜{#U¿…> £Y˜{#U¿…> £Y˜{#U¿…> £Y˜{#U¿’žtȉŽ�”–©Ù«‰Ž�”¨—¬ž ‰Ž�”–©Ù«‰Ž�”‰Ž�”‰Ž�”‰Ž�”‰Ž�”‰Ž�”‰Ž�”‰Ž�”‰Ž�”’žtÈ’žtÈ…> £Y˜{#U¿’žtȉŽ�”’žtÈ’žtÈÒÒxxœ’žtȉŽ�”’žtÈ’žtÈÒÒxxœ’žtȉŽ�”’žtÈ…> £Y˜{#U¿’žtȉŽ�”‰Ž�”–©Ù«‰Ž�”¨—¬ž ‰Ž�”Ã-¤%n�YÓXÓWÓVÓiÓ^]Botpack.Assaultr"2p"3n" oÓsÓm"U"l]MapVoteLA13.MapVoteHistory1k"3q] Majorityj"T"S"RÓQÓd] Welcomec$€?b$€?a$€?`$€?h] Assaultg= Deathmatchf]Capture the Flage]OthersPÓOÓNÓMÓ_ÓKZ~J]AS-*A]DM-*AÝiDM-*G]CTF-*F]*·y|CÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpMË2�·ÚãÌ~ (?„»L8r«“ (?„»L8r«“ŠÜm (?„»L8r«“žK4èž (?„»L8r«“ (?„»L8r«“ŠÜmŠÜmžK4èž (?„»L8r«“žK4螊ÜmŠÜm (?„»L8r«“ (?„»%Cnöf (?„»%CnöfŸÊ€ (?„»%CnöfžK4èž (?„»%CnöfŸÊ€ŸÊ€ŸÊ€žK4èž (?„»%CnöfžK4螟ʀŸÊ€ŸÊ€ (?„»%Cnöf (?„»�×7Xà (?„»�×7Xà (?„»E.GÆò (?„»E.GÆòIA¤­IA¤­žK4èž (?„»E.GÆòIA¤­žK4èžžK4èž (?„»E.GÆòžK4èž (?„»E.GÆòIA¤­žK4èž (?„»E.GÆòžK4èžIA¤­IA¤­ (?„»_·Ú½žK4èž (?„»_·Ú½žK4èž (?„»_·Ú½žK4èž (?„»_·Ú½žK4èž (?„»_·Ú½žK4èž (?„»_·Ú½žK4èž (?„»_·Ú½žK4èž (?„»_·Ú½žK4èždà·6³o û³o ûäIÄ(›äIÄ(›à?{äIÄ(›à?{äIÄ(›à?{…> £Y˜{#U¿äIÄ(›à?{ �{xbBJ� š:â:$ÿÿÿÿÿÿÿÿÿÿR Mß�{C÷ ¿MË2�XØamMË2�MË2�MË2�MË2�MË2�‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –…> £Y‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –‰Ž�”–©Ù«‰Ž�”–©Ù«‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –‘?Ý –MË2�MË2�MË2�…> £Y˜{#U¿MË2�sÄ�­Æ²éŸ�Œ|.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˜{#U¿MË2�MË2�MË2� (?„»Ž�᱘MË2� (?„»Ž�᱘MË2� (?„»Ž�᱘MË2� (?„»Ž�᱘MË2� (?„»Ž�᱘MË2� (?„»Ž�᱘MË2� (?„»Ž�᱘MË2� (?„»Ž�᱘MË2� (?„»Ž�᱘MË2� (?„»Ž�᱘MË2� (?„»Ž�᱘MË2� (?„»MË2�XØamMË2�MË2�sÄ�­Æ²éŸ�“tµðMË2�XØam¿c1Q`K^e3�×7XÃMË2�XØam¿c1Q`K^e3�×7XÃMË2�XØam¿c1Q`K^e3�×7XÃMË2� (?„»MË2�MË2�sÄ�­Æ²éŸ��×7XÑ?Ý –‘ñÕD“‘?Ý –‘ólï‘?Ý –‘ü�¬Åû‘?Ý –‘ø9Û Ó‘?Ý –‘ò0¸ ‘?Ý –‘ô^¦M‘?Ý –…> £Y¶R@G¢øIò&/�sP"2M"N"—O"šnxHÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿB_·Ú½š¤dà·6dà·6·ÚãÌ~dà·6dà·6dà·6dà·6…> £Y…> £Y£yŸ&.£yŸ&.…> £Y…> £Y£yŸ&.£yŸ&.£yŸ&.£yŸ&.…> £Y£yŸ&.£yŸ&.…> £Y£yŸ&.£yŸ&.£yŸ&.£yŸ&.„.ü'ldà·6‹x�‹x�‹x�‹x�‹x�‹x�‹x�³o ûdà·6‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�žK4èž‹x�‹x�‹x�‹x�‹x�‹x� �=$@AEX£x]vÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿdà·6£yŸ&.dà·6dà·6 �£_RKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÊ€£yŸ&.ŸÊ€ŸÊ€ �éVmRÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJ²éŸ�éôŒÇË‹x�‹x�‹x�…> £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Ú…> £Y“tµð…> £Yµ_ã‰4…> £Y“tµð…> £Y“tµð…> £YŸ|ë[$…> £Yµ_ã‰4…> £Y“tµð…> £YŒ|.XÚ…> £YŒ|.XÚ…> £YŒ|.XÚ…> £Y“tµð…> £Y“tµð…> £Y“tµð…> £Y“tµð…> £Y“tµð…> £Y“tµð…> £Y“tµð…> £Y“tµð…> £Y“tµð“tµð“tµð“tµð…> £Y“tµð…> £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ÚŽ�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘“tµð“tµðŽ�᱘Ž�᱘Ž�᱘Ÿ|ë[$Ÿ|ë[$Ÿ|ë[$Ÿ|ë[$Ÿ|ë[$Ž�᱘Ÿ|ë[$Ÿ|ë[$Ÿ|ë[$Ÿ|ë[$Ÿ|ë[$Ž�᱘Ÿ|ë[$Ÿ|ë[$Ÿ|ë[$Ÿ|ë[$Ÿ|ë[$Ž�᱘Ÿ|ë[$Ÿ|ë[$Ÿ|ë[$Ÿ|ë[$Ÿ|ë[$Ž�᱘Ÿ|ë[$“tµð“tµð“tµðŽ�᱘“tµð“tµð“tµðŽ�᱘Ž�᱘Œ|.XÚŒ|.XÚŒ|.XÚŒ|.XÚŒ|.XÚŒ|.XÚŒ|.XÚŒ|.XÚŒ|.XÚŒ|.XÚŒ|.XÚŒ|.XÚŒ|.XÚŒ|.XÚŒ|.XÚŒ|.XÚµ_ã‰4µ_ã‰4µ_ã‰4µ_ã‰4µ_ã‰4µ_ã‰4µ_ã‰4Ž�᱘“tµð“tµð“tµðŽ�᱘“tµð“tµð“tµðŽ�᱘µ_ã‰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ÚŽ�᱘“tµð“tµð“tµð“tµð“tµð“tµð“tµð“tµð“tµð“tµð“tµð“tµð“tµð“tµð“tµð“tµð“tµð“tµð“tµð“tµð“tµð“tµð“tµð“tµð“tµð“tµð“tµð�×7XÃ�×7XÃ�×7XÃ�×7XÃŒ|.XÚŒ|.XÚŒ|.XÚŒ|.XÚ�×7XÃ�×7Xà �A„D @@r péVtJÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ (?„»éôŒÇË‘?Ý –Œ|.XÚ‘?Ý –Œ|.XÚ‘?Ý –„.ü'l‹x�‹x�‹x�Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Œ|.XÚávÅ?ïávÅ?ïávÅ?ï…> £Y‰Ž�”dà·6_·Ú½_·Ú½_·Ú½_·Ú½…> £Y‰Ž�”_·Ú½dà·6…> £Y˜{#U¿…> £Y_·Ú½dà·6…> £Y‰Ž�”…> £Y‰Ž�”…> £Y‰Ž�”_·Ú½dà·6…> £Y˜{#U¿…> £Y_·Ú½dà·6…> £Y‰Ž�”…> £Y‰Ž�”…> £Y‰Ž�”_·Ú½dà·6…> £Y˜{#U¿…> £Y_·Ú½dà·6…> £Y‰Ž�”…> £Y‰Ž�”…> £Y‰Ž�”_·Ú½dà·6…> £Y˜{#U¿…> £Y_·Ú½dà·6…> £Y‰Ž�”…> £Y‰Ž�”%CnöfŸÊ€_·Ú½%CnöfŸÊ€_·Ú½%CnöfŸÊ€_·Ú½%CnöfŸÊ€_·Ú½%CnöfŸÊ€…> £Y‰Ž�”…> £Y%CnöfŸÊ€…> £Y‰Ž�”…> £Y‰Ž�”…> £Y‰Ž�”…> £YE.GÆòIA¤­…> £Y‰Ž�”E.GÆòL8r«“ŠÜmL8r«“ŠÜm…> £Y‰Ž�”…> £YE.GÆòIA¤­…> £Y‰Ž�”“tµð…> £Y“tµð“tµð…> £Y‰Ž�”dà·6…> £Y˜{#U¿dà·6…> £Ydà·6…> £Y‰Ž�”„.ü'l„.ü'l…> £Y‰Ž�”…> £Y‰Ž�”…> £Y‰Ž�”…> £Y‰Ž�”%CnöfŸÊ€_·Ú½%CnöfŸÊ€_·Ú½%CnöfŸÊ€_·Ú½%CnöfŸÊ€_·Ú½%CnöfŸÊ€…> £Y‰Ž�”…> £Y‰Ž�”…> £YE.GÆòIA¤­…> £Y‰Ž�”E.GÆòL8r«“ŠÜm“tµð…> £Y“tµð“tµð“tµð_·Ú½_·Ú½_·Ú½_·Ú½_·Ú½_·Ú½_·Ú½_·Ú½_·Ú½_·Ú½£yŸ&._·Ú½_·Ú½_·Ú½£yŸ&._·Ú½_·Ú½_·Ú½£yŸ&._·Ú½_·Ú½_·Ú½£yŸ&._·Ú½_·Ú½_·Ú½žK4èž_·Ú½žK4èž_·Ú½žK4èž_·Ú½žK4èž�×7XÃ�×7XÃ�×7XÃE.GÆòžK4èžE.GÆò�×7XÃ…> £Y˜{#U¿�×7XÃ�×7XÃ�×7XÃ�×7XÃŽ�᱘Ž�᱘Ž�᱘%Cnöf%CnöfžK4èžL8r«“L8r«“žK4螎�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Œ|.XÚŒ|.XÚŒ|.XÚŒ|.XÚŒ|.XÚ‘?Ý –“tµð“tµð“tµð�×7XÃ�×7XÃ�×7XÃ�×7XÃ�×7Xà �I  £|XyÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿIA¤­£yŸ&.IA¤­IA¤­ �P@`£oKMÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÜm£yŸ&.ŠÜmŠÜm �7€…G@o  @êURIÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ/Ú™xêU[¥Ú�b N €‹éz]wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2XØaméôŒÇË{®n{®n{®n{®nìoÐÁ÷ìoÐÁ÷{®n{®n‰Ž�”{®n{®nXØamXØam„.ü'l„.ü'lìoÐÁ÷¿c1Q`¿c1Q`¿c1Q`¿c1Q`„.ü'l¿c1Q`¿c1Q` �X]Querying Server...Y]The server did not respond.Z{\ì["k ’Y€@j£xEOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ×*2’£yŸ&.×*2’×*2’ �M#@;Mq@;d‘–šctLÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%Cnöfš¤·ÚãÌ~ŸÊ€ŸÊ€ŸÊ€‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�³o ûŸÊ€ŸÊ€ŸÊ€‹x�‹x�‹x�Ü£½þË �=$PAEM%n€‹Z]@R@W8€‹!@;C€‹q€@€@ @_W4Q@6M@[ @`oêju yÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@"sáMêU[¥Ú�yx€‹.@@;DŽa š@Qzÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ4E.GÆòš¤·ÚãÌ~IA¤­IA¤­…> £Y…> £Y£yŸ&.£yŸ&.…> £Y…> £Y£yŸ&.£yŸ&.£yŸ&.£yŸ&.…> £Y£yŸ&.£yŸ&.…> £Y£yŸ&.£yŸ&.£yŸ&.£yŸ&.„.ü'lIA¤­IA¤­‹x�‹x�‹x�‹x�‹x�‹x�IA¤­‹x�‹x�‹x�‹x�‹x�‹x�IA¤­‹x�‹x�‹x�‹x�IA¤­‹x�³o ûIA¤­IA¤­‹x�‹x�‹x� �E*XÿEªXÿ=$@AEK €‹^Yt’VEèloGÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿK^e3è±²�p‘K^e3„.ü'lXØamXØam…> £YXØamXØam…> £Y…> £YXØamXØamìoÐÁ÷³o û�×7XÃ�×7XÃ�×7XÃ�×7XÃ�×7XÃ�×7XÃ�×7XÃ�×7XÃ�×7XÃZ �oÓšrqNÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿL8r«“š¤·ÚãÌ~ŠÜmŠÜmŠÜmŠÜm‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�³o ûŠÜmŠÜmŠÜm‹x�‹x�‹x�Ü£½þË �=$PAE]L@X2 n @k @c] @kŸ}•}’M @@| ’šMQ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[¦o"cš¤×*2’‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�³o û×*2’×*2’‹x�‹x�‹x� �=$PAEB @\@zY ’{v@ja‘^€@dŒS ^@g{w ’P @@X @lM€R„X@@jŸ„Zžy$‘–F£P@s„Ë{Nxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{®nË釅mXØamXØamXØamXØam_a�W" g’W£i[r“OêNQEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ DžõÚêU[¥Ú/Ú™x Mß�/Ú™x Mß� Mß� Mß� Mß� Mß�/Ú™x�qŸBHŸLµQ µZ Ÿl €‹i¿:hH@>€t9@@| €‹&�UžbE€ŒZ@BŒD @t@O’àzRa€@k €‹rt;ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿgá³§/Ú™xDžõÚDžõÚ�vj @;U“o’L €‹| @@TA@H*W @l€@G’d@fD’PŒi @yŒA @@U•JŒ` €žH€~ŒE@AŒCŒ……C Z €VW@c]€@h @Q@Ž{D}| ; š:â:$ÿÿÿÿÿÿÿÿÿÿCTŠWüs{C÷ ¿…> £Y…> £Y…> £Y¶R@G¢ª/Tã2³o û„.ü'l„.ü'lª/Tã2„.ü'lTŠWüs„.ü'lª/Tã2„.ü'l„.ü'l„.ü'l‘?Ý –‘?Ý –‘K^e3w©d-Ú„.ü'lXØam„.ü'lXØam…> £Y¶R@G¢ª/Tã2³o ûe¯‹Œy„.ü'l„.ü'l‘K^e3ª/Tã2‘?Ý –‘ñÕD“‘?Ý –‘ólï‘?Ý –‘ü�¬Åû‘?Ý –‘ø9Û Ó‘?Ý –‘ò0¸ ‘?Ý –‘ô^¦M‘?Ý –‘K^e3�swP"2M"N"•O"YI Œb�a_…l@T€qe@f @IosIŒL aŒªJ@m@C] F’W€�g  @S€@p€f €@H€‹(Y€€}L€@p €‹_ €…ixm q @CŒEŒb€@FŒGŒHŒfŒVŒK“G“N“W@I“L Q“R“S“U“I@V“W“X“Y“k“[Ïx�V @^ @y @h@aci €@` @€ßTXÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2e¯‹ŒyßüM»ï³o û„.ü'l„.ü'l…> £Y¶R@G¢ª/Tã2„.ü'le¯‹Œy„.ü'l…> £Y¶R@G¢ª/Tã2„.ü'l„.ü'l„.ü'l³o û…> £Y¶R@G¢ª/Tã2³o û³o û �Z~ Q]MapVote Key Bindery €‹r ìH@O �a@ ä{@žžN @æ\eSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿsÄ�­ÆæÑ$ �c @@h €@yëH R @@€@~�@@Hgd@g[€€_@Kn€Q€} €‹R @gDO Q R S | @U @V @W @„@oÏ\W €¦V€`�Z�fw€@Cure€@iŽojŽkŽmŽ_ nŽoŽpŽGŽ�J ŽtÁu@v@=@ßGb}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2w©d-ÚßüM»ï…> £Y‰Ž�”³o û„.ü'l„.ü'l„.ü'l³o û„.ü'l„.ü'l…> £Y¶R@G¢ª/Tã2„.ü'lw©d-Ú„.ü'l…> £Y¶R@G¢ª/Tã2„.ü'l„.ü'l„.ü'l³o û…> £Y¶R@G¢ª/Tã2…> £Y‰Ž�”³o û³o û �ZQ]Map Vote Welcome Window|€�q€@páùwz )Ïš:â:$–:â:$ÿÿÿÿÿÿÿÿÿÿ{C÷ ¿ùYQ²Z…> £Y¶R@G¢ª/Tã2„.ü'l…> £Y¶R@G¢ª/Tã2³o ûª/Tã2ª/Tã2„.ü'l„.ü'l„.ü'l…> £Y¶R@G¢ª/Tã2ª/Tã2ª/Tã2ª/Tã2ª/Tã2…> £Y…> £Y¶R@G¢�tÓfS{$@w’��k5ÎBkž~€@u@@CŽ @U @J @u ŽT@e€@S@D X@J @ê}cPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿVªê‰êU[¥Ú‰Ž�”–©Ù«?Ý –�G€@`@H Y@ªi €@Zsg5e�Ù[.ª.…ÂÊ× [Î#îY ?\ ?] ?^ ?_ ”r *ç#### -- CreateWindow Failed+(µ[-æ[~ -Æ' *' €b@d e@Y@x€f@n @Dk @t€@l @m@m @E„h@]@ODª_tpmG€ž…|T Q @•‘�@QX gŽt€ža @kKŽ f LŽMŽNŽnŽS€@S€x@u @K €P@•wr t €¦P€@h@v�M|y @k€…f } Tsa@{ € q@h @w @x T~]€@L€ž@@VJl @s ~�Ho~ @o @T @Y€@Q @@�D�O @eVI�u€A@@Jf_ @F@m€@] @@ÐK@N}•H€Z  €@^@U I€Y [ M@  ^ å{@c�f�dc€@g�s�_ @@EŽJ ŽI @@h w€@U@z@JŽiFC @nª[we… ~  c@G €D| €¦f€@ ŒRl @@~ x MŽéCRQÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPS ¢æ±éôŒÇË‘?Ý –Ÿ|ë[$‘?Ý –Œ|.XÚ‘?Ý –Ÿ|ë[$‘?Ý –Œ|.XÚ‘?Ý –‘?Ý –‘ñÕD“‘?Ý –‘ólï‘?Ý –‘ü�¬Åû‘?Ý –‘ø9Û Ó‘?Ý –‘ò0¸ ‘?Ý –‘ô^¦M‘?Ý –…> £Y϶ŒsÖ…> £Y϶ŒsÖ„.ü'l„.ü'lŽ�᱘Ÿ|ë[$…> £Y…> £Y϶ŒsÖ϶ŒsÖŽ�᱘϶ŒsÖ϶ŒsÖ϶ŒsÖ϶ŒsÖŸ|ë[$Ÿ|ë[$Ÿ|ë[$Ÿ|ë[$Ÿ|ë[$Ÿ|ë[$‘?Ý –Ž�᱘Ÿ|ë[$Œ|.XÚŒ|.XÚŒ|.XÚŒ|.XÚŒ|.XÚ‘?Ý –�×7XÃ�×7XÃ�×7XÃ�×7Xà �r T s O<{ŽR@_  a  e€b  O  m GŽd ŽKŽf Ži €@j €\ €@o @g Žl ŽK@@V  @p  @m ŽEŽCŽq  @{€v  @P @b+„û a  ª]€ ÿ@h ZŽ@€@ @^@p@DvQ8Nz.…Ânrz*ç#### -- Attempted to open a window on something other than a PlayerPawn+(e.ªzÊ×¹re*ç#### -- No Console+(ó„�e-ñreÎ*eL*e-ù'eCA&' Â\@A €@N @@M G €@ZO @@k@|@Q@p@A€`€@)@@€€@\  ^  @@X @N@X€b @@„e €[€i€m` €„}@V€@@WÜAI{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿq $œ:@Ü£½þË‹x�‹x�‹x� �CB€v @@A@z €T@€z €E~ @` @rBB  @j @F @@p€@G É@@H É@@I É@@L É@@I€J €nõ@@P€žP €¦h€~ÿ@Y€@d] €¦€r@V €W @X €_€@[ €H€€@w|G€@@@c e G  @E €@u€B@AQ@WF@{€o €@g €ž[€žr €žU€žt €žK €@{ N€ž[€x €žO€@H€ž} €žM €B €q€@C €@€Dp€@C €€@C€@@ €@`S €J €b €@{€Q€@S€S äbFFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿR k�—‡äIÄ(›„.ü'lZ �P€@T €@€@W€‹T€€X €\ €@] €…€‘Z €‹L€@Y €@C @b @c @d @ve @@`g @@hl €€j ‘ì€m ‘{n €@o €@q €@€@v�€u €v €f€x €Z€€@} €€èYN@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ/~ Ž‚çè±²�p‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�‹x�³o û…> £Y[¦o"c×*2’[¦o"c×*2’„.ü'l[¦o"cžK4èž…> £Y×*2’…> £Y×*2’[¦o"c[¦o"c…> £Y‰Ž�”Ž�᱘Ž�᱘[¦o"c×*2’[¦o"c[¦o"c×*2’[¦o"c[¦o"cžK4èž�×7XÃ�×7XÃ�×7XÃ�×7XÃŽ�᱘Ž�᱘Ž�᱘Ž�᱘Z �i @@€€A €@D €@s €d€v€@k €@I €@K €s€M €€h €@ @@e€R €T €\€W €V _k$€ j < 8 X €@O€@\ )‘„[ €w€] )^ )_ )` ) )x€@P@@�O€@`€b @@`€žU @F @v [n €k €j€@y ^  @q €€r~€@€€@@HcÜ x €‘ëz €@}•w €@€@c@~ €€A @CAmž l @\ @Ek8j €’Jjl 4 D€�@I€€fg Y€B€c �@€@j �Wn W¶ on ’~n -& Ð^RK�U$ -} .·¹ !$  €£€@Ïl  7p-ñ(Ï´ðC²HC篬ƴ?,¬´?,毬Ʋ?,¬²?, ÕTO5mÕ-Oj Æ ê w'krj *D-l 0k.ª™Ê× €@ZO¬ Ë-%zêO&-€O“}O&+O Ut0'‰'tÆãÁwt*Š„z€Vt¸,UTMenuz€Vt¸,UMenu.ª™Êתªwt¸¸Áttàört*.ª™Ê×%t-Æ't4t* €@_}G£ &5|€},CTF-BTCTF-BTë€}~}- €ÏJ ?x-ñ(ÏJ™”±ç¯¬Æ´?,¬´?,毬Ʋ?,¬²?, Õ\MHoÕ-Mc Æ ê e'F‚-f  rc *0m.ª™Ê× iNA‡® ‡ -} m €N,@.°…w@*izm ê€@T,,@…@.@¼* dd j™ ª ±d e d e  ]p0$•'pÆãÁwp*Š„z€Vp¸,UTMenuz€Vp¸,UMenu.ª™Êתªwp¸¸Áppàörp*.ª™Ê×%p-Æ'p4p* óp ^ móW%apB( Û`K(C²¥‚±J?%%±™”±®J?,J4Á*YÆ ê e'¥wY*Y4YÁY*ÛK ÜaPË[Iš”¢Ô%F™£Wp r CW% PW%apB( hz9‰ 0“B€z~z=Ez’~z=&Ž-Lç¨p¨p¨Execute default Setting:z. Property:B. Value:E!×ç¨p¨p¨Execute Setting:z. Property:B. Value:E!a ”¢ üB”¢×BEb ”¢ üB¨p¨p¨Changed Setting:B. Previous value:a . new value:b  ÄÑ Ý*Ä €@ÌGFu„%#‚rF* rD*}G qmj 3Uç¨StartMutator:!~�Ë ‘�r~*ç¨Starting Actor/Mutator FAILED. Could not DynamicLoadObject:! /a0~@Êç¨Actor already spawned:!0 10@a~r@*ç¨Spawning Actor/Mutator FAILED:! S@a/!|”¢âH.Ð@ ×n@@µk -} F™…„š@:F$íš@:F$(…‚w¡*w¡¼*.£¡¼„š@:F$ìš@:F$&‚‚w¡*w¡Ú*w¡Ó¡Ú.£¡ÚŸš@:F$"Ÿw¡*x¡%Ž–,krx¼* x.£x¼¥IxKš@:F$!Kw¡*x¡%:–,„rxÚ*rxÚ¡Ó x.£xÚ¥Òx¹@HI €@m€@B @€Ä}-Bf¶-}.-Þ(è.-Þ6­-›$6¬-›$6®-›$€§-` e{ ¯z ?& ©6­-›=,ÿ6¬-›=,ÿ6®-›=,ÿAE.-] 6­-›$ 6¬-›=,ÿ6®-›$ Š6­-›=,ÿ6¬-›=,ÿ6®-›=,ÿ§-` e{ ¯z ?& ©z€.T&96­-›$Š6¬-›$¤6®-›$¦A-›J€.T&y -ð%Æ(÷Ù-®` ?,epp€.T&, - .T, gT }?_ç¨AnnouncerMessage:T `.åËT å]w`*.… \` ' ÂS@t~h ÷à§-^§|êV”¢¸, MultiCTFGameMultiCTF detected. Fixing Mapprefix to CTFM”¢¾CTFM”¢¾CTFM~”¢¾pppp¨NextVirtualPrefix/NextRealPrefix/ActualPrefix:q/X/~Š‚zX~ {q~qMapVote: Prefix OK. Mapchange seems to have been successful&{D 9D &—}9%:~9;Ù–:%:~9,û–:%99'9#9€9:'99’:&¡M%Þ–M,Ô-6rM R 6RM Ô|~R "{6k M S6k M "—}S%:~S;×–:%:~S,ø–:%mSSm€S:SS’:&ŸÔ{6o M 96o M Ô—}9%:~9;‡–:%:~9,©–:%99(9Ñ9€9:(99’:&O¥M- @ | K I �Dçppppbrowsing K G :SA ]K G A |  vDeæ æôÃD D¨Crashed map:Db%t‚–b,{bnjzbnD ¥b3bnD¨¨¨Added failed map:Dto slotSbbÇ c€xuHÏ  ò\„–c&›IcZc’§&Y—£L ,dc’§&\ž—L ,dç¨Error: GetRandomMap() failed for ListSZ!稨¨¨GetRandomMap() configured for ListSZtook the random map:Sccc }€zndº yñbn n}&Z˜}P| }nH }Z¥}H  €|yO£ ØïŽ.¨”¢-Öi.¨”¢-ì.¨”¢è麴�.¨”¢-î.¨”¢ãéºÿÿÿÿÃÿÿÿÿ |€~{c… ¢ìîꔢa/!JÏ›OÿÿÿÿçppBDBMapVote: Team SO won the round.tšO&|%{|&çppBDBMapVote: Setting Team S| as the defending team for the next map.Ö|%.¨”¢].¨”¢-Ö(.¨”¢ò%.¨”¢ê.¨”¢ë.¨”¢í&.¨”¢-î(.¨”¢ï|.¨”¢b% Ýy N ]€6­N›=,ÿ6¬N›=,ÿ6®N›=,ÿ§N´² ©ÝN} ~  F{ { ì-QçpMV { ! sT+cT UbcU D€@A t Ž€s ŽJw L $èÒ87{aw ¸w{*S%©‚–S, {S{Ãy¥S{ÃD ~ëy.UNR¥›D ÿÿÿÿy€yD ypz y}x ûww *û˜w 8y\yp[X]yPhyd{P¥Pa-Q¨ppLoading Map[S]P¦¦-Q¨Map ignored cause no filter matches: y*{aÐçMapList Spawn Failed @u H¨c Cu  M€@ÊGt ` ò§Ÿšt ”ç404 ErrorcwC


Information or Server Unavailable
¥T Lz" —àr86¨p¨¨¨Going to load gametype:j using maps with Prefix:z. PreFixChange:h ¨|j Botpack.CTFGame-r 'Pure CTF Detected\ ” bz%R\ �|\ n ÷™ÿ¥T îQR}‚‚-^-r ,„�|€Q,CTF-|€Q,CTF-BT¨CTF prevented from loading wrong map:QîU ~ëQ.UNR³›U ÿÿÿÿQ€QU Qph Q}z~ëRTUTORIALÿÿÿÿš~ëRINTROÿÿÿÿBwi *B˜i 8Q\Qp[X]QKhQ¬{K¥K©-Q¨ppLoading Map[S]:Kîî-Q¨Map ignored cause no filter matches: QR”bzR&n RÍp—T %稨¨¨IgnoredST Maps with Prefixzcause mapcount > 1023! e ŽOX7 BÌ| -|'Maplist is reloading...'84a84bbdËl ‘ adÃr *89dËMapVoteLA13.MapVoteHistory1 ‘ ad%+%ø–++¥+Ñò-NçpDetected GameType = V”¢¸-f(-e(-T(-X(-`(-b(-h(˜|V”¢¸F-f'òÑ|V”¢¸Botpack.CTFGame-e'ò|V”¢¸Botpack.DeathMatchPlus-T'òR|V”¢¸Botpack.LastManStanding-X'ò�|V”¢¸Botpack.TeamGamePlus-`'òÌ|V”¢¸Botpack.Domination-b'ò-h'oV”¢¸-hw–Ëo ‘x-fL-^  ¨íASAS p"ASAS Botpack.AssaultaÞ-e°-^  úíCTFCTF Ö"CTFCTF Botpack.CTFGameaG-T-^  ÃíDMDM ?"DMDM Botpack.DeathMatchPlusa°-b-^  ÷íDOMDOM ¨"DOMDOM Botpack.Dominationa-`ç-^  ÈíDMTDM "DMTDM Botpack.TeamGamePlusa…-XP-^  öíDMLMS }"DMLMS Botpack.LastManStandinga.‚-h ww*85]w¾ý-^ wíw¾] &"w¾] oaZ�-N+%Z–+,P‚-6r+ {6*+ $–Ë6*+ ‘‚-^%|ê6*+ , MultiCTFGameMultiCTF detected. Fixing Mapprefix to CTFM$¾CTFM†r$*ç¨ppMapVote: Error. CustomGameConfig[S+]: Failed to load GameClass:6*+ Hºz6R+ ]$¾Ö]6R+ -^ $í$¾] H"$¾] 6*+ a¥+@ a´zkElimination´„–P ‚š% —\%\%q!XYçpBDBMapVote: Maps Reloaded. Total Maps = SJ -|MapVote configuration has been changed, Re-Open Voting window for updates.'-|(a -W` p3wÿÿÿÿÿÿÿÿÿÿd €ËIs ^+ÿHs U Rvb ¶Èuhv%S–v,I‚-6rv {6*v $–Ë6*v ‘Iw$*y$¾Ñ‚-^%|ê6*v , MultiCTFGameyCTFMz6Rv 6Rv ybI{6Rv yhpppph6Rv ;y;¥v¨PrefixDictionary:h E n SQQ D4.…ÂÊ×-éa?((-B 'E  ÂÿÿÄ_'B�Èi.n-Þ6­'›$6¬'›$6®'›$€§'L®n?&M¯Q?, ©6­'›=,ÿ6¬'›=,ÿ6®'›=,ÿ§'L¯®nQ?&M€? ©§'¾Bn€?Q ©§'n€?Q ©§'Mn€?Q ©M6­'›=,ÿ6¬'›=,ÿ6®'›=,ÿ§'L¯®nQ?&M€? ©§'¾Bn€?¯Q?& ©§'n€?Q ©§'Mn€?Q ©'ð%Æ(÷Ù'®L?,n.nrÙ'®L?,dn.nN  UX`ñGÆqStoring Maplist to file...Ta @Tv %TAX&טX­|€X,[X]XTAX,ÍXTAX¥X^bX–bbTA¥bâTu hTbTa¨Storing Maplist to file finished:S €T@[T_Ç9ºLoading Maplist from file...dËl ‘ ad£r *89dËMapVoteLA13.MapVoteHistory1 ‘ ad%I&+&a˜+ @v T+ @A#˜ 8 T\Tp[X]T?‚-| eTWIT¥I¥+»“I&h @u ¨Loading Maplist finished:S a ?@Vër ZZL€@]@\:G³³”82 cqG¨NextVirtualPrefix:qbsz?Restart’‚ww*-h83b’|€ë}w¾w¾Xw¾K-^K|êVw, MultiCTFGameMultiCTF detected. Fixing Mapprefix to CTFMXCTFM¨NextRealPrefix:Xb_pp.unr?game=o?%ÿ–?,õ‚-6r? {6*? 83.1$–Ë6*? ‘qr$*ç¨ppMapVote: Error. CustomGameConfig[S?]: Failed to load GameClass:6*? õ6R? 6R? -^|ê6*? , MultiCTFGameMultiCTF detected. Fixing Mapprefix to CTFM$¾CTFM3{6R? 83.2a¨q6R? 0|q6R? 83.2bX$¾Î-^Î|ê6*? , MultiCTFGameXCTFM¨NextRealPrefix:Xb_pppX}q.unr?game=6*? õ83.3a¨q$¾õ|q$¾83.3bXG¨NextRealPrefix:Xb_pp.unr?game=6*? ¥?™1z€ë,DMLBotPack.DeathMatchPluszz€ë,LMSLBotPack.LastManStandingpDM,Àz€ë,TDMLBotPack.TeamGamePluspDM,ïz€ë,DOMLBotPack.Dominationz€ë,CTFLBotPack.CTFGame:z€ë,ASLFXG¨NextRealPrefix:Xb_pp.unr?game=L `R j8«²981/a0 R 6R lR a10 @x€Ý{/¨6­{›=,ÿ6¬{›=,ÿ6®{›=,ÿ§{´€? ©§{¯²?& ©Ý{p q  cO30°ã|Oe'Szêe&*xe%“}e&S|€O}xx'}zêe&-}|€O}ee'Ђzêe&*z€e&*xe&“}e,Й~ëOëx%'ßze*'( €@^{ lzR T{ .ª.…ÂÊ×{ -ù(Rw *  Âie "¯V"|€e,[x]ee,Nz€êe,&:e€e“}e,e ÑBeK¶ ÑÜDåúC;,M.Ž Ž A A´B AMVisual Configf.Œ ŒÒCðA A Af-Ø(C.Ž ŽÜCðApB ACAuto DetectB.Œ ŒÒC®ÈA?�,; A AC.Ž ŽÜC®ÈA?�,;pB AC DME.Œ ŒÒC®ÈA?�,; A AC.Ž ŽÜC®ÈA?�,;pB AC TDMC.Œ ŒÒC®ÈA?�,; A AC.Ž ŽÜC®ÈA?�,;pB AC LMSH.Œ ŒÒC®ÈA?�,; A AC.Ž ŽÜC®ÈA?�,;pB AC CTFG.Œ ŒÒC®ÈA?�,; A AC.Ž ŽÜC®ÈA?�,;pB AC DOMF.Œ ŒÒC®ÈA?�,; A AC.Ž ŽÜC®ÈA?�,;C ACAssault:k.“ “ðC®ÀA?�,; C Ak(kÓ Cj% –j,jI.Œ ŒÒC® A?�’, j; A AjG.Ž ŽÜC® A?�’, j;HC AjG empty¥jRI .Œ ŒÒC® A?�,; A AC.Ž ŽÜC® A?�,;*C ACUse Exclude Filtert .Ž Ž AÜBHB At Limitss.Ÿ Ÿ AC*C As-Ø(sÉ Asþ4Csÿ, sVoting Time Limitj.Ž Ž>CC B AjpUsÉ secE.Ÿ Ÿ AC*C AEÉ AEþÈBEÿ&EKick Votes Req.q.Ž Ž>CC B AqpUEÉ %J.Ÿ Ÿ A*C4C AJÉ€?JþðAJÿ&JScoreBoard DelayZ .Ž Ž>C*C B AZ pUJÉ secG.Ÿ Ÿ A>C9C AGÉ€?GþÈBGÿ&GMid-Game Voter Req.Q .Ž ŽCC>C B AQ pUGÉ %J.“ “fCC¾B AJ'JDon't Show LastJÓ As .Ž Ž¥CCpB As maps PlayedK.“ “fCCðB AK'KReload Map List whenKÓ Am .Ž ŽfC%CHC Am +maps remain. (Elimiation Mode only)u .Ž Ž ARCHB Au Misc.D.Œ Œ AfC–C AD2Use the Map Cycle List instead of all mapsD %D»$DÛHC€?C.Œ Œ AzC–C AC&Open Voting Window at Game EndC %C»$CÛHC€?A.Œ Œ A‡C–C AA!Enable Player Kick VotingA %A»$AÛHC€?d.Œ Œ A‘C–C Ad#Check Sudden Death OverTimed %d»$dÛHC€?H.µ µfCfCðB€?H ModeH\(Hí´BH%MajorityH%EliminationH %ScoreH%Accumulatione .Ž ŽfC‚CHC Ad .Ž ŽfCŒCHC Al .Ž Ž A›CHB Al AdvancedL.“ “ A¥C¹CpAL(L#Welcome Page Web Server URLLÓRCg .Ž Ž A€¬CÈC Ag @Example: www.MyServer.com:80/UnrealStuff/WelcomePage.htmN.“ “ A€¶C¹CpAN(N&Map Information Web Server URLNÓRCf .Ž Ž A¾CÈC Af .Example: www.MyServer.com:80/MapFiles/I.µ µ A€ÅC¹C€?I#Map Vote History Class TypeI\'IíRCI#%MapVoteLA13.MapVoteHistory1I#%MapVoteLA13.MapVoteHistory2I#%MapVoteLA13.MapVoteHistory3I#%MapVoteLA13.MapVoteHistory4~.Œ Œ AÒC C A~COpen Welcome Window and KeyBinder when player enters server~ %~»$~Û C€?{.Œ Œ A€ÞC C A{Sort Maps with PreFix{ %{»${ÛðB€?{-Ø(y.Œ Œ AëC C AyDebug Modey %y»$yÛ B€?y-Ø(f.� �*CëCÈB AfÀList crashed mapsg.� �ŒCëCÈB AgÀClear crash ListU.Œ Œ*CáC C AURemove crashed mapsU %U»$UÛðB€?M.Ž ŽÒC AðB AMGame TypesU.“ “ AðA>C AU(UMapvote TitleUÓðBP.“ “ A4B>C AP(PList 1 TitlePÓðBQ.“ “ ApB>C AQ(QList 2 TitleQÓðBR.“ “ A–B>C AR(RList 3 TitleRÓðBS.“ “ A´B>C AS(SList 4 TitleSÓðBV.“ “fC4B C AV(VPriorityVÓðBW.“ “fCpB C AW(WPriorityWÓðBX.“ “fC–B C AX(XPriorityXÓðBY.“ “fC´B C AY(YPriorityYÓðBV.� �€ÔCÈC>C AVÀSaveVÙV4V-Ã'a.Œ Œ€ÔC×C–C Aa#Reload Maps on request onlya %a»$aÛC€?b.� �€ÔCáC>C AbÀReload Mapsc.� �€ÔC€íC>C AcÀClose j•w€[€õdE !-ú=sõE | | œ$E bf™)MUTATE BDBMAPVOTE LISTCRASHEDMAPS™ ¢g™*MUTATE BDBMAPVOTE CLEARCRASHEDMAPS™ Îc¹¹¹™ ¤ V™?pADMIN SET MapVoteLA13.BDBMapVote bDM TB-¤™@pADMIN SET MapVoteLA13.BDBMapVote bLMS TC-¤™@pADMIN SET MapVoteLA13.BDBMapVote bTDM TE-¤™?pADMIN SET MapVoteLA13.BDBMapVote bAS TF-¤™@pADMIN SET MapVoteLA13.BDBMapVote bDOM TG-¤™@pADMIN SET MapVoteLA13.BDBMapVote bCTF TH-¤™HpADMIN SET MapVoteLA13.BDBMapVote VoteTimeLimit UsÉ™FpADMIN SET MapVoteLA13.BDBMapVote KickPercent UEÉ™GpADMIN SET MapVoteLA13.BDBMapVote bUseMapList TD-¤™EpADMIN SET MapVoteLA13.BDBMapVote bAutoOpen TC-¤™EpADMIN SET MapVoteLA13.BDBMapVote bKickVote TA-¤™JpADMIN SET MapVoteLA13.BDBMapVote ScoreBoardDelay UJÉ™GpADMIN SET MapVoteLA13.BDBMapVote bAutoDetect Tf-¤™NpADMIN SET MapVoteLA13.BDBMapVote bCheckOtherGameTie Td-¤™FpADMIN SET MapVoteLA13.BDBMapVote RepeatLimit J ™MpADMIN SET MapVoteLA13.BDBMapVote MapVoteHistoryType I ™HpADMIN SET MapVoteLA13.BDBMapVote ServerInfoURL L ™EpADMIN SET MapVoteLA13.BDBMapVote MapInfoURL N ™MpADMIN SET MapVoteLA13.BDBMapVote MidGameVotePercent UGÉ™?pADMIN SET MapVoteLA13.BDBMapVote Mode H ™FpADMIN SET MapVoteLA13.BDBMapVote MinMapCount K ™IpADMIN SET MapVoteLA13.BDBMapVote bEntryWindows T~-¤™KpADMIN SET MapVoteLA13.BDBMapVote bSortWithPreFix T{-¤™FpADMIN SET MapVoteLA13.BDBMapVote bDebugMode Ty-¤™GpADMIN SET MapVoteLA13.BDBMapVote MapVoteTitle U ™EpADMIN SET MapVoteLA13.BDBMapVote List1Title P ™EpADMIN SET MapVoteLA13.BDBMapVote List2Title Q ™EpADMIN SET MapVoteLA13.BDBMapVote List3Title R ™EpADMIN SET MapVoteLA13.BDBMapVote List4Title S ™HpADMIN SET MapVoteLA13.BDBMapVote List1Priority V ™HpADMIN SET MapVoteLA13.BDBMapVote List2Priority W ™HpADMIN SET MapVoteLA13.BDBMapVote List3Priority X ™HpADMIN SET MapVoteLA13.BDBMapVote List4Priority Y ” „zk –}k , k Botpack.Assault™BpADMIN SET MapVoteLA13.BDBMapVote ASClass k ™NpADMIN SET MapVoteLA13.BDBMapVote bRemoveCrashedMaps TU-¤™TpADMIN SET MapVoteLA13.BDBMapVote bReloadMapsOnRequestOnly Ta-¤™MpADMIN SET MapVoteLA13.BDBMapVote bUseExcludeFilter TI -¤]%I –],/ ]I-¤ZpZ1? ZpZ0¥]ø ™,¨Mutate BDBMAPVOTE CUSTSETTINGZ™Settings saved!™ ÿ b™$MUTATE BDBMAPVOTE RELOADMAPS¹¹¹™ -B*B-¤f-¤(™ [CXC-¤f-¤(™ ‰E†E-¤f-¤(™ ·F´F-¤f-¤(™ åHâH-¤f-¤(™ GG-¤f-¤(™ –f“f-¤B-¤(C-¤(E-¤(F-¤(H-¤(G-¤(™ ÿÿq n$E ÙsjpUsÉ seck EqpUEÉ %k 9JZ pUJÉ seck hGQ pUGÉ %k ÿÿq ÿÿ lF >è>­¼zF wIF 4šw&PFšw,KXšw,Fjšw,Aç¨ERROR: GetMapPriority(): Mapname has no Priority attached:F !€? €^PL5^Ü [�-ja?((Ö -M ñÇ ) óÇ ) üÇ ) øÇ ) òÇ ) ôÇ )MapVoteWRI: SetupWindow()l%&~%,~%,~%,~%:^a€?(YçSuper.SetupWindow() = false rm Iá̬ Jêm & ïhKÄïX1ïKl k 6­K›$6¬K›$6®K›$§K A A¾C@ ©§KÒC AHC@ ©§K AðB¾C@ ©§K A\C¾C@ ©§K A C¾C@ ©§K€ÊC A@õC © €y£ob€@u0h‚>¦é/|€0,[x]b 0-v'@b 0\‚-| ebÑ-C %Ñ‚–õ{L Ç3bL ¨Excluded Map:b¥l%^‚–,É{F T„3bF -N=‚�-e -v0b0p0:10¥Ø%à‚–,É{G Ö3bG ¿‚�-d -v0b0p0:20¥e%b‚–,É{H X3bH A‚�-c -v0b0p0:30¥ç%ä‚–,É{I Ú3bI Â�-b -v0b0p0:40¥i öE n(RJo&›A%&š¥A,5A%m‚‚‚-`  w *� -ó �-X -X '+ u€wiei‰¤“i iu%�‚–u, {un…|iunƒ-Q¨Map found in crashed map list:i'¥u( z€yNY/« ô80N&ò–Nh’N&è˜h]ëN\ëh…z€],[X]]],§z€\,[X]\\,]pê]&]\pê\&\B ]@ \<�-n v~]-]]’v&v~\-\\’v&‡t]\pNNhhpÞÞz]\ÞtB @ pNNhhp¥h.¥N GE sÓhry.°pwy*TxëE ë€y3}E ypy.y¼ K\Fš�.78/a0 \!q%\,Clearq…‚{q] –q,\,q]q¥q<\ ,qH%\'ClearH -z ‚{H^ –H,\'H^¥HÆ\ 'H1079 wzn@Ñ} ~˜Ñ .Ž Ž A¸AðB A Map Voting Menu Hot KeyZ.Ï ÏC AHB€?Z-Ø(Z-Ô'Z-Ö'Z-Ù'U.Ÿ Ÿ A B*C AU-Ø(UÉ@@UþpBUÿ&UMessage ExpirationU ? )-M 'k.Ž ŽHC B B AkpUUÉ secZ.Œ Œ A\BHC AZ!Change Message ExpirationZ %Z»$ZÛHC€?Z-¤ -MJ D¯²?Ÿ[.� �€D®€ÀC?J  B A[ÀClose[Å è[-Ã([-Ø(ÙS •ß}S ; :8-xBS S } -x([-Ã( €£B€€\SIë Õ\%Ó–\,ÿ\™pKEYNAME S\\} \É{\V ™pKEYBINDING \ÉzëV MUTATE BDBMAPVOTE VOTEMENUZ \o\¥\ Eyo)QcawÂ*y.…Âa‚‚wy*wyÊ*wyÊ×*Q ÐH}!â]o  N�ÐQ@Kʧ.·¹ !$  ÆY ]‡Æo F@Î_^BŠ]lZ„„„zVzVEscape‚™^,p ˜^,y‚™^,0 ˜^,9 R^V SZDK ‹• 72-a b%%‹–, �›2%¥bˆzkScore2®2bÑzkAccumulation2®2?d(„zkEliminationzkMajority¸2>2¨PlayerVote[x]:S2¨VoteCount[PlayerVote[x]]:U2¥#G‚‚�”¢-Ø �-S .³«¬?b?”¢Ô?,d?O 73Mid-Game Map Voting has been initiated !!!!-S 'mul&a€?'N%&“˜‰±?%¥N¥U%=–“N&`’&3–`N)°`a``a¥`º¥šm“”¢Ôbp¨p¨p¨pNumPlayer:S”¢ÔPlayerVoted:SbPlayersToVote:SmMaxPriority:Ut„zkEliminationzkMajority‚‚‚‚°«?mt%:°®&«?m>&%<°®,«?m>,%<°®,«?m>,%”¢-Ø-Z'%f–N]pp ,€U,¥ N]F®‚´%&µ%?%74z&& –N´%¥z¥Ça§znWb#W—~n.ÿÿÿÿn€n~n.%«|W ana§z¥¨—,«^Å75a%2-Z2„šb%š”¢Ô%Noone voted, choosing a random map...'aH‰ „-Zš”¢Ôb76|za *‚´%&µ%?%¨¨¨¨Tie: %and &have same score!p a has won.'Op a has won.'j-a'c:a_ D”±¯�”¢-Øa€?'Ü„šb%š”¢Ô%% wadwg aw<waf zkElimination¥\ \\ lj zkAccumulationWa77 T€JNR“6‰™8ppSET Input Y  mutate bdbmapvote votemenu[ Y ‡{o™pSET Input o Y €K€ûMc �ERû-c  Ud ?º–UK.°QwK*5|d K3'K.K¼( P[ R¥¹|„rU* rZ* -[ „µ? )UÉ!ó -MZ-¤º-[  )DUÉ -MZ-¤ Çz -M ñÇ ) óÇ ) üÇ ) øÇ ) òÇ ) ôÇ ) de WË…°70O%8–O, .{O|-X(`”Ìw`*‚`-Õw.…`*ñzO|.…`¥½î›.…`¥Ä(2e -X'¥OA``ÍK.�-XO|OA%¥OO%•–O, O |O|O €AOA¥O? Ç71 ]a §@ex.°cwx*G|a x3xcx.x¼ ÜkP‰¾�-B Q ,�-j-j'5timer()-w(%g–†–pD­??x  ³–pD­??v  à–pD­??q   –pD­??p ]{py p%“}p,P Jêp&¥P K¥JA&0˜A,&—AKA~. iA%–ýšP A. gAy ¥µA~AK-w'¥AnJ’’’&K,K,K,KŽ„—Jl ›JV -w'lJb ‚w. `*.…Â¥-å .. `áVD®®®®®®®®®®®®®®®®®®®®?’’’’’’’’’’’’}}o }S^ }S_ }SO }T-a }T-b }T-O}T-~}X}W}V}UTSRQ?}A?}T-Y?}T-U?m?}h?_?}m?^?} ?}B?}k?}T-\?}T-[?}i?}R?}T-u%g–,¡V}O¥=‰› V-w' V B-¤K%& C-¤K&& E-¤K,& F-¤K,& G-¤K,& H-¤K,& s  ?^  E  ?_  J  ?O  D-¤-a  C-¤-b  A-¤-O f-¤-~ d-¤-~  a-¤-Z  I -¤-u J  Sm I  h G  ?_ H  m K  S^ U  | P  X Q  W R  V S  U V  UT W  US X  UR Y  UQ k  i U-¤-U N  k ~-¤-\ {-¤-[ y-¤-Y e ¨pClass:\  d ¨Map Prefix:^ b —}R, %b –,• zR&1 @I-¤'µ  @I-¤( {O @GO @I-Ã(X  @G empty @I-Ã'¥Q ¡ „-O.…Â¥-å. k%à ‚–, {sH’&¥¨ ¤ ›HW W ‘ –HZ zês,&?&!&ss%“}s,-r'b -r(. `s-r¥ú W H-w'%ë ‚{L –,,L¥« %2 ‚{J –,'J¥ò .  N)pppSJ/SV  Maps loaded.  rpMode: m.  g X.  i W.  j V.  k U.  m |.  G¨Priority:€UT,.  K¨Priority:€US,.  L¨Priority:€UR,.  M¨Priority:€UQ,.  {A wD®®®®®?’’’}X}W}V}UTSRQ?}s›w@ @ w-w'—{h. oahk”w. `*.. `áL  hÖ.K. oLÔ[-Ã'.K. oLÔ~-Ã(.K. oLÔ-Ã(.  o sÝ‚�-w-fÛw. `*.. `áV-Ã( û�-w-f'a€?( -f(a?( EYrJ�^€@l€×oIe‘ `E™z„šI:E$íšI:E$(z‚w¡*w¡¼*.£¡¼ „šI:E$ìšI:E$& ‚‚w¡*w¡Ú*w¡Ó¡Ú.£¡Ú”šI:E$"”w¡*}¡w%ƒ–w,`r}¼* }.£}¼¥w>}@šI:E$!@w¡*}¡w%/–w, „r}Ú*r}Ú¡Ó }.£}Ú¥wÇ}¹IZ [  €`€@€DU bT(­ g€pQ q`h�‹š:â,/a0 ÐOЉ|êVO¸,SCOFAppppppppSQ $$$SR $$$ST $$$W $$$X 10 ÂhS dÌ‚x68l”̵wl*µ‚l-Õw.…l*žš.…l¥ÄS P.…l¥½µllÍÃz%o% –o, ÿzo|RoA ¥oÊ—R%Ro%j–o, `zo|o|oA&j¥o!69& x€f€@jP b®ÎÔ67x”̵wx*µ‚x-Õw.…x*žš.…x¥ÄP PD.…x¥ÀµxxḬ́D?&D€?D u€@lg p•¸}Ô66Gunknownu”ÌÌwu*Ì‚u-Õw.…u*µš.…u¥Äg Gpêp000Sg ,u¥½ÌuuÍ-G aLz,Û yk/jqz{64F%o–F, e—FPÿÿÿÿ-B(k”ÌÑwk*º‚‚k-Õka/!\*š.…k¥ÄFP-B'ÑkkÍNe�-B¨Removing Player that has left:SFP6-z&êp000SFP,F2%FjÿÿÿÿFPÿÿÿÿ¥F65 ’q“ÄrBñ+�.N -Þ6­›$6¬›$6®›=,ÿ§PSK ¯J ?& ©-t'6­›=,ÿ6¬›=,ÿ6®›=,ÿ§PSK ¯J ?& ©-t(ð%Æ(÷I.N 3¶z€I,[X]6­›=,ÿ6¬›$6®›$Ù®P?,SI,)-t6­›=,ÿ6¬›=,ÿ6®›=,ÿ _ëI�„z€_,AS-|€_,BT-6­›$6¬›$6®›$€ î„|€_,TDM|€_,DM-6­›$6¬›$@6®›$ [„|€_,DOM|€_,iAS6­›$@6¬›$6®›$@ È„|€_,RA-|€_,CTF6­›$6¬›$@6®›$@ 6­›$6¬›$6®›$Ù®P?,SI ubr a–:â,X.…ÂwX*Åš` ,fXûb_Ÿ{fNppNf,¥_fXûb_SÂ{NN€N“}N&¤Šš` ,_ ëb,_%‡–_fX¨KEYNAMES_}{fJX¨KEYBINDINGf}™~ëJ_ %NppNJ|¥_é¤NX b{Nÿ—}N�qi I%b€N�NN�¥I°qi I&bN  V~Nˆþ1"-O -zO  D h I k N m k-\ -Q -Y -QA  b X O W  V i U g | f  .…Â-ÒAdmin is logged in. Sending admin vars...p -T1y0ž -Xp1®p0Ó -`p1ãp0 -fp1p0= -bp1Mp0r -ep1‚p0™(p1©p0\ V”¢¸^ ”¢¾-Z  -W^ P -~ -Nm \_  C -a  -^-b  -p^  u-~  -F h l_ O -[ -n -U -|i F-u -C  Ým'Ù\w°¼*6­m›=,ÿ6¬m›=,ÿ6®m›=,ÿž6­m›$d6¬m›$d6®m›$d§m´² ©ÝmL M  €£ÐFsKJ .·¹ !$  vH uˆrH I K  @M(//================================================================================ // WRI. //================================================================================ class WRI extends ReplicationInfo; var() Class WindowClass; var() int WinLeft; var() int WinTop; var() int WinWidth; var() int WinHeight; var() bool DestroyOnClose; var UWindowWindow TheWindow; var int TicksPassed; var bool bDestroyRequested; replication { reliable if ( Role == ROLE_Authority) OpenWindow, CloseWindow; reliable if ( Role < ROLE_Authority ) DestroyWRI; } event PostBeginPlay () { Super.PostBeginPlay(); OpenIfNecessary(); } simulated event PostNetBeginPlay () { PostBeginPlay(); OpenIfNecessary(); } simulated function OpenIfNecessary () { local PlayerPawn P; if ( Owner != None ) { P=PlayerPawn(Owner); if ( (P != None) && (P.Player != None) && (P.Player.Console != None) ) { OpenWindow(); } } } simulated function bool OpenWindow () { local PlayerPawn P; local WindowConsole C; P=PlayerPawn(Owner); if ( P == None ) { Log("#### -- Attempted to open a window on something other than a PlayerPawn"); DestroyWRI(); return False; } C=WindowConsole(P.Player.Console); if ( C == None ) { Log("#### -- No Console"); DestroyWRI(); return False; } if ( !C.bCreatedRoot || (C.Root == None) ) { C.CreateRootWindow(None); } C.bQuickKeyEnable=True; C.LaunchUWindow(); TicksPassed=1; return True; } simulated function Tick (float DeltaTime) { if ( TicksPassed != 0 ) { if ( TicksPassed++ == 3 ) { SetupWindow(); TicksPassed=0; } } if ( DestroyOnClose && (TheWindow != None) && !TheWindow.bWindowVisible && !bDestroyRequested ) { bDestroyRequested=True; DestroyWRI(); } } simulated function bool SetupWindow () { local WindowConsole C; C=WindowConsole(PlayerPawn(Owner).Player.Console); TheWindow=C.Root.CreateWindow(WindowClass,WinLeft,WinTop,WinWidth,WinHeight); if ( TheWindow == None ) { Log("#### -- CreateWindow Failed"); DestroyWRI(); return False; } if ( C.bShowConsole ) { C.HideConsole(); } TheWindow.bLeaveOnscreen=True; TheWindow.ShowWindow(); return True; } simulated function CloseWindow () { local WindowConsole C; C=WindowConsole(PlayerPawn(Owner).Player.Console); C.bQuickKeyEnable=False; if ( TheWindow != None ) { TheWindow.Close(); } } function DestroyWRI () { Destroy(); } x//================================================================================ // UMenuMapVoteList. //================================================================================ class UMenuMapVoteList extends UWindowListBoxItem; var string MapName; function int Compare (UWindowList t, UWindowList B) { if ( Caps(UMenuMapVoteList(t).MapName) < Caps(UMenuMapVoteList(B).MapName) ) { return -1; } return 1; } BN .]¤y263/a0 h /h .N 10 [7//================================================================================ // ServerInfoWindow. //================================================================================ class ServerInfoWindow extends UWindowPageWindow; var UWindowVSplitter VSplitter; var ServerInfoLink Link; var UBrowserUpdateServerTextArea TextArea; var localized string QueryText; var localized string FailureText; var Class LinkClass; var Class TextAreaClass; var bool bGotMOTD; var string StatusBarText; var bool bHadInitialQuery; var int tries; var int NumTries; var string WebServer; var string FilePath; var int Port; var string ServerInfoURL; var string MapInfoURL; var string version; function Created () { Super.Created(); version=Left(string(self.Class),InStr(string(self.Class),".")); SetSize(ParentWindow.WinWidth,ParentWindow.WinHeight); VSplitter=UWindowVSplitter(CreateWindow(Class'UWindowVSplitter',0.00,0.00,WinWidth,WinHeight)); TextArea=UBrowserUpdateServerTextArea(CreateControl(TextAreaClass,0.00,0.00,WinWidth,WinHeight,self)); TextArea.SetHTML("


Map Vote LA13



Core developement: BDB (Bruce Bickar)

Enhancements by: Cratos (cratos@gmx.at)

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


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


Information or Server Unavailable
"); } else { Failure(); } } function HTTPReceivedData (string Data) { ProcessData(Data); Success(); } ^//================================================================================ // PlayerVoteListItem. //================================================================================ class PlayerVoteListItem extends UWindowListBoxItem; var string PlayerName; var bool bHasVoted; function int Compare (UWindowList t, UWindowList B) { if ( Caps(PlayerVoteListItem(t).PlayerName) < Caps(PlayerVoteListItem(B).PlayerName) ) { return -1; } return 1; } ’Ñ,V:Ÿ Ñ6­V=,ÿ6¬V=,ÿ6®V=,ÿ6­}=,ÿ6¬}$ 6®}$ 6­U=,ÿ6¬U=,ÿ6®U$ ,xG,x^D@’^,QO�,.  AÐA??^,°8. ® A?ÐA??^8°6. ®® B?�,?GÐA??^6°4. ®®HB?�,?GÐA??^4°`.� � A?’^,.®® B?�,?G¨A`Å ÿ`ÀVote`-Ã(J.E E®ðA?�,,C?G®(Ã?^J°J-}'V.� �®ðA?�,?’^, ?G�AVÅ ÿ{„-J ™¥-åVÀKickV-Ã'�VÀV-Ã(B.Ž Ž A?“@,®®ðA?�,?G ABaRank Map name Votes Player name VotesB %B V&.% % A?@HC´B&-Ø(&°M.L LfC?@C´BM-Ø(M°n.Ž Ž®ðA?�, C?G An Vn»$o.Ž Ž®ðA?�,C?G Ao Vo»$p.Ž Ž®ðA?�,C?G Ap Vp»$g.Ž Ž A?’, Ag &g»$g }i.Ž Ž® A? A?’, Ai &i»$i }m.Ž Ž®pA?�, A?’G, Am &m»$m Uj.Ž Ž®®ðA?�,?G A?’, Aj &j»$j }k.Ž Ž®® B?�,?G A?’, Ak &k»$k }G.Ž Ž?’^,?’, AG»$G VK.Ž Ž® A??’^,?’, AK»$K VL.Ž Ž®®ðA?�,?G?’^,?’, AL»$L VM.Ž Ž®® B?�,?G?’^,?’, AM»$M VN.Ž Ž?O?@ÜB AN %N Vr.Ž Ž?’O,x?@ÈB Ar Mode:r %r V].Œ Œ?O?’@,ŒB A]ScreenShot]»$] %] V]-¤ -].“ “?““O,K?’@,-®«@??,– A(B'D,–q.� �?“’O�,,?’@,- B AqÀSendq-Ã(_.� �?O?’@,K®«@??,  A_Å è_ÀClose_-Ã( {://================================================================================ // PlayerVoteListBox. //================================================================================ class PlayerVoteListBox extends UWindowListBox; var Color TeamColor[4]; var bool bDisabled; function Paint (Canvas C, float MouseX, float MouseY) { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,0.00,0.00,WinWidth,WinHeight,Texture'WhiteTexture'); Super.Paint(C,MouseX,MouseY); } function DrawItem (Canvas C, UWindowList Item, float X, float Y, float W, float H) { if ( bDisabled ) { PlayerVoteListItem(Item).bSelected=False; } if ( PlayerVoteListItem(Item).bSelected ) { C.DrawColor.R=0; C.DrawColor.G=0; C.DrawColor.B=128; DrawStretchedTexture(C,X,Y,W,H - 1,Texture'WhiteTexture'); C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; } else { if ( PlayerVoteListItem(Item).bHasVoted ) { C.DrawColor.R=32; C.DrawColor.G=255; C.DrawColor.B=32; } else { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; } DrawStretchedTexture(C,X,Y,W,H - 1,Texture'WhiteTexture'); if ( Left(PlayerVoteListItem(Item).PlayerName,1) == "9" ) { C.DrawColor.R=138; C.DrawColor.G=164; C.DrawColor.B=166; } else { C.DrawColor=TeamColor[int(Left(PlayerVoteListItem(Item).PlayerName,1))]; } } C.Font=Root.Fonts[0]; ClipText(C,X + 2,Y,Left(Mid(PlayerVoteListItem(Item).PlayerName,1),3) $ " - " $ Mid(PlayerVoteListItem(Item).PlayerName,4)); } function KeyDown (int Key, float X, float Y) { local int i; local UWindowListBoxItem ItemPointer; local PlayerPawn P; if ( bDisabled ) { return; } P=GetPlayerOwner(); if(Key == P.EInputKey.IK_MouseWheelDown || Key == P.EInputKey.IK_Down) { if ( (SelectedItem != None) && (SelectedItem.Next != None) ) { SetSelectedItem(UWindowListBoxItem(SelectedItem.Next)); MakeSelectedVisible(); } } if(Key == P.EInputKey.IK_MouseWheelUp || Key == P.EInputKey.IK_Up) { if ( (SelectedItem != None) && (SelectedItem.Prev != None) && (SelectedItem.Sentinel != SelectedItem.Prev) ) { SetSelectedItem(UWindowListBoxItem(SelectedItem.Prev)); MakeSelectedVisible(); } } if(Key == P.EInputKey.IK_PageDown) { if ( SelectedItem != None ) { ItemPointer=SelectedItem; i=0; JL0149: if ( i < 7 ) { if ( ItemPointer.Next == None ) { return; } ItemPointer=UWindowListBoxItem(ItemPointer.Next); i++; goto JL0149; } SetSelectedItem(ItemPointer); MakeSelectedVisible(); } } if(Key == P.EInputKey.IK_PageUp) { if ( SelectedItem != None ) { ItemPointer=SelectedItem; i=0; JL01D2: if ( i < 7 ) { if ( (ItemPointer.Prev == None) || (ItemPointer.Prev == SelectedItem.Sentinel) ) { return; } ItemPointer=UWindowListBoxItem(ItemPointer.Prev); i++; goto JL01D2; } SetSelectedItem(ItemPointer); MakeSelectedVisible(); } } ParentWindow.KeyDown(Key,X,Y); } function SelectPlayer (string PlayerName) { local PlayerVoteListItem PlayerItem; local string PlayerID; if ( bDisabled ) { return; } PlayerID=Left(PlayerName,3); PlayerItem=PlayerVoteListItem(Items); JL002A: if ( PlayerItem != None ) { if ( PlayerID == Right(Left(PlayerItem.PlayerName,4),3) ) { SetSelectedItem(PlayerItem); MakeSelectedVisible(); } else { PlayerItem=PlayerVoteListItem(PlayerItem.Next); goto JL002A; } } } function DoubleClickItem (UWindowListBoxItem i) { if ( bDisabled ) { return; } UWindowDialogClientWindow(ParentWindow).Notify(self,11); } h //================================================================================ // PlainVScrollBar. //================================================================================ class PlainVScrollBar extends UWindowVScrollbar; function Paint (Canvas C, float X, float Y) { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,0.00,0.00,1.00,WinHeight,Texture'WhiteTexture'); DrawStretchedTexture(C,WinWidth - 1,0.00,1.00,WinHeight,Texture'WhiteTexture'); if ( !bDisabled ) { DrawUpBevel(C,0.00,ThumbStart,12.00,ThumbHeight,Texture'WhiteTexture'); } } OG &QÑx263/a0 k /k &G 10 ’i7//================================================================================ // MVWelcomeWRI. //================================================================================ class MVWelcomeWRI extends WRI; var string ServerInfoURL; var string MapInfoURL; var bool bHasStartWindow; replication { reliable if( Role==ROLE_Authority ) ServerInfoURL, MapInfoURL, bHasStartWindow; } simulated function bool SetupWindow () { local int i; local WindowConsole C; if ( Class'BDBMapVote'.Default.bUseMsgTimeout ) { Class'SayMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'CriticalStringPlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'RedSayMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'TeamSayMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'StringMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'DeathMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; } if ( (ServerInfoURL != "") && Class'MapVoteNavBar'.Default.bShowWelcomeWindow ) { if ( Super.SetupWindow() ) { SetTimer(1.00,False); } else { Log("Super.SetupWindow() = false"); } } else { SetTimer(1.00,False); } } simulated function Timer () { local WindowConsole C; local UWindowWindow KeyBinderWindow; local UWindowWindow Child; local bool bHotKeyBound; if ( (ServerInfoURL != "") && Class'MapVoteNavBar'.Default.bShowWelcomeWindow ) { MVWelcomeWindow(TheWindow).bHasStartWindow=bHasStartWindow; ServerInfoWindow(TheWindow.FirstChildWindow).SetInfoServerAddress(ServerInfoURL,MapInfoURL); ServerInfoWindow(TheWindow.FirstChildWindow).BrowseWebPage(ServerInfoURL); } C=WindowConsole(PlayerPawn(Owner).Player.Console); bHotKeyBound=HotKeyBound(); if ( !bHotKeyBound ) { KeyBinderWindow=C.Root.CreateWindow(Class'MVKeyBinderFrameWindow',0.00,0.00,480.00,240.00); MVKeyBinderFrameWindow(KeyBinderWindow).bHasStartWindow=bHasStartWindow; KeyBinderWindow.bLeaveOnscreen=True; KeyBinderWindow.ShowWindow(); } if ( ((ServerInfoURL == "") || !Class'MapVoteNavBar'.Default.bShowWelcomeWindow) && bHotKeyBound ) { if ( bHasStartWindow ) { FocusStartWindow(); } else { C.CloseUWindow(); } } DestroyWRI(); } function GetServerConfig () { ServerInfoURL=Class'BDBMapVote'.Default.ServerInfoURL; MapInfoURL=Class'BDBMapVote'.Default.MapInfoURL; } simulated function FocusStartWindow () { local UWindowWindow Child; local WindowConsole C; Log("FocusStartWindow"); C=WindowConsole(PlayerPawn(Owner).Player.Console); Child=C.Root.LastChildWindow; while ( Child != None ) { if ( (Left(string(Child.Class),6) == "UTMenu") || (Left(string(Child.Class),5) == "UMenu") ) { C.CloseUWindow(); } else { if ( Child.Class != self.Class ) { break; } } Child=Child.PrevSiblingWindow; } if ( Child == None ) { C.CloseUWindow(); } else { Child.bLeaveOnscreen=True; Child.FocusWindow(); Child.ShowWindow(); } } simulated function bool HotKeyBound () { local int i; local string KeyName; local string Alias; for ( i=0; i < 255; i++ ) { KeyName=PlayerPawn(Owner).ConsoleCommand("KEYNAME " $ string(i)); if ( KeyName != "" ) { Alias=PlayerPawn(Owner).ConsoleCommand("KEYBINDING " $ KeyName); if ( Caps(Alias) == "MUTATE BDBMAPVOTE VOTEMENU" ) { return True; } } } return False; } E ±!QI›d&9w,¡*,¡-Þ(,¡*“›d,ƒw8¡*8¡-Þ(8¡*Ý›d,Íw6¡*6¡-Þ(6¡*'›d,w4¡*4¡-Þ(4¡*O‚™d& ˜d,E  \F 9Íev.°cwv*G|F v<vcv.v¼ //================================================================================ // MVWelcomeWindow. //================================================================================ class MVWelcomeWindow extends UWindowFramedWindow; var float StartTime; var bool bHasStartWindow; function Created () { bSizable=False; Super.Created(); StartTime=GetPlayerOwner().Level.TimeSeconds; WinLeft=Root.WinWidth / 2 - WinWidth / 2; WinTop=Root.WinHeight / 2 - WinHeight / 2; } function Close (optional bool bByParent) { local UWindowWindow KeyBinderWindow; Super.Close(bByParent); KeyBinderWindow=Root.FindChildWindow(Class'MVKeyBinderFrameWindow',True); if ( bHasStartWindow && (KeyBinderWindow == None) ) { FocusStartWindow(); } else { WindowConsole(GetPlayerOwner().Player.Console).CloseUWindow(); } } function FocusStartWindow () { local UWindowWindow Child; Child=Root.LastChildWindow; JL0014: if ( Child != None ) { if ( (Left(string(Child.Class),6) == "UTMenu") || (Left(string(Child.Class),5) == "UMenu") ) { WindowConsole(GetPlayerOwner().Player.Console).CloseUWindow(); } else { if ( Child.Class != self.Class ) { goto JL00C1; } } Child=Child.PrevSiblingWindow; goto JL0014; } JL00C1: if ( Child == None ) { WindowConsole(GetPlayerOwner().Player.Console).CloseUWindow(); } else { Child.bLeaveOnscreen=True; Child.FocusWindow(); Child.ShowWindow(); } } function Tick (float DeltaTime) { local UWindowWindow KeyBinderWindow; if ( (StartTime > 0) && (GetPlayerOwner().Level.TimeSeconds > StartTime + 3) ) { StartTime=0.00; FocusWindow(); BringToFront(); ShowWindow(); KeyBinderWindow=Root.FindChildWindow(Class'MVKeyBinderFrameWindow',True); if ( KeyBinderWindow != None ) { KeyBinderWindow.FocusWindow(); KeyBinderWindow.BringToFront(); KeyBinderWindow.ShowWindow(); } } Super.Tick(DeltaTime); } EI-Ù$Ž#w,¡*,¡Fw8¡*8¡iw6¡*6¡Œw4¡*4¡ €£õHX!ïÆ%ƒ õXt t )$X ÿÿ� ±$ X >,±™”±®=?,„{€.,¡3,[X]™¥-å™<pMUTATE BDBMAPVOTE MAP .,¡3=™”±`™”±,&® H8±™”±®=?,„{€.8¡3,[X]™¥-å™<pMUTATE BDBMAPVOTE MAP .8¡3=™”±`™”±8,® R6$±™”±®=?,$„{€.6¡3,[X]™¥-å™<pMUTATE BDBMAPVOTE MAP .6¡3=™”±`™”±6,® \4.±™”±®=?,.„{€.4¡3,[X]™¥-å™<pMUTATE BDBMAPVOTE MAP .4¡3=™”±`™”±4,® &Bi.&¡<,%ΚB&,".&¡<šB,8".&¡<<šB,6".&¡<sšB,4".&¡<ÿ±™”±®=?,™<pMUTATE BDBMAPVOTE MAP .&¡<=™”±`™”±® ¸Jµ±™”±®=?,™=pMUTATE BDBMAPVOTE KICK .J¡T=™”±® «MJ"A.M¡lç¨Select Player:.M¡l¨±™”±®=?,™=pMUTATE BDBMAPVOTE KICK .J¡T=™”±® ÿÿ�  $X q{ ™pSAY    ` ±™”±®=?, w-* „{€.-3,[X]™¥-åì{.-3™4pMUTATE BDBMAPVOTE MAP .-3=™”± 0 _¹¹ e ,`™”±,& › 8`™”±8, Ñ 6`™”±6,  4`™”±4, ? &Bi.&¡<,%y šB&,".&¡<° šB,8".&¡<ç šB,6".&¡< šB,4".&¡<`™”± × VÔ ±™”±®=?,™=pMUTATE BDBMAPVOTE KICK .J¡T=™”± MJ"A.M¡l ÿÿ� ~ ${ { ™pSAY    xq� ÿÿ qB @Øh<53-O3w *. `B -A  €@`//================================================================================ // MVKeyBinderListBox. //================================================================================ class MVKeyBinderListBox extends UWindowListBox; function Paint (Canvas C, float MouseX, float MouseY) { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,0.00,0.00,WinWidth,1.00,Texture'WhiteTexture'); DrawStretchedTexture(C,0.00,0.00,0.00,WinHeight - 1,Texture'WhiteTexture'); Super.Paint(C,MouseX,MouseY); } function DrawItem (Canvas C, UWindowList Item, float X, float Y, float W, float H) { if ( KeyBinderListItem(Item).bSelected ) { C.DrawColor.R=0; C.DrawColor.G=0; C.DrawColor.B=128; DrawStretchedTexture(C,X,Y + 1,W,H - 2,Texture'WhiteTexture'); C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,X,Y + H - 1,W,1.00,Texture'WhiteTexture'); DrawStretchedTexture(C,95.00,Y,1.00,H,Texture'WhiteTexture'); DrawStretchedTexture(C,0.00,Y,1.00,H,Texture'WhiteTexture'); DrawStretchedTexture(C,W,Y,1.00,H,Texture'WhiteTexture'); } else { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,X,Y + H - 1,W,1.00,Texture'WhiteTexture'); DrawStretchedTexture(C,95.00,Y,1.00,H - 1,Texture'WhiteTexture'); DrawStretchedTexture(C,0.00,Y,1.00,H,Texture'WhiteTexture'); DrawStretchedTexture(C,W,Y,1.00,H,Texture'WhiteTexture'); } C.Font=Root.Fonts[0]; ClipText(C,X + 5,Y,KeyBinderListItem(Item).KeyName); ClipText(C,X + 100,Y,KeyBinderListItem(Item).CommandString); } JYiµU@i, ?Y&38 ?Y,M6 ?Y,g4 ?Y, `C @DâwB61/a0 s 5s @C -D 1062 €ÛN@ (ÉzAre‚µ`?%$±™”±®`?&ew-*.-3`Û@  ksy0 QyÝ&Cz�]-¤ -z'q~ëy.UNRT›qÿÿÿÿy€yqpays.ÁËpp.Screenshot Áz.áËpp.LevelSummary áz€y,[X]tYou can NOTuvote for this map.vxPwz*tzÚuzÍvzÉxtDownLoaduRequiredv D//================================================================================ // MVKeyBinderFrameWindow. //================================================================================ class MVKeyBinderFrameWindow extends UWindowFramedWindow; var bool bHasStartWindow; function Created () { bSizable=False; Super.Created(); WinWidth=480.00; WinHeight=200.00; WinLeft=Root.WinWidth / 2 - WinWidth / 2; WinTop=Root.WinHeight / 2 - WinHeight / 2; } function Close (optional bool bByParent) { local UWindowWindow WelcomeWindow; Super.Close(bByParent); WelcomeWindow=Root.FindChildWindow(Class'MVWelcomeWindow',True); if ( WelcomeWindow == None ) { if ( bHasStartWindow ) { FocusStartWindow(); } else { WindowConsole(GetPlayerOwner().Player.Console).CloseUWindow(); } } } function FocusStartWindow () { local UWindowWindow Child; Child=Root.LastChildWindow; JL0014: if ( Child != None ) { if ( (Left(string(Child.Class),6) == "UTMenu") || (Left(string(Child.Class),5) == "UMenu") ) { WindowConsole(GetPlayerOwner().Player.Console).CloseUWindow(); } else { if ( Child.Class != self.Class ) { goto JL00C1; } } Child=Child.PrevSiblingWindow; goto JL0014; } JL00C1: if ( Child == None ) { WindowConsole(GetPlayerOwner().Player.Console).CloseUWindow(); } else { Child.bLeaveOnscreen=True; Child.FocusWindow(); Child.ShowWindow(); } } K{ &ã5=/--O-w *. &{  ÂWX@z@I £Y�fS@$@Í FÍÚÚ.Üî q ¯´?, @A² €£ghijk@l@mnoßbw LPM ¹w v u  ÐueKGÅ.·¹ !$  Us .î÷=&$w *. .s  €@ûpt TÆM_Qó -]]-¤ -]]-¤ Çû-t  ~R A6GY.°}wY*a„|R Yl|R YlY}Y.Y¼ wl„//================================================================================ // MapVoteWRI. //================================================================================ class MapVoteWRI extends WRI; var BDBMapVote MapVoteMutator; var string MapList[1024]; var int MapListNum[1024]; var string MapList1[256]; var string MapList2[256]; var string MapList3[256]; var string MapList4[256]; var int MapCount; var string PlayerName[32]; var int gPlayerCount; var bool bKickVote; var string MapVoteResults[32]; var string KickVoteResults[32]; var string GameTypes; var string OtherClass; var int VoteTimeLimit; var int KickPercent; var bool bUseMapList; var bool bAutoOpen; var int ScoreBoardDelay; var bool bAutoDetect; var bool bCheckOtherGameTie; var string ServerInfoURL; var string MapInfoURL; var string ReportText; var string Mode; var int RepeatLimit; var string MapVoteHistoryType; var int MidGameVotePercent; var int MinMapCount; var string MapPreFixOverRide; var string PreFixSwap; var string OtherPreFix; var string HasStartWindow; var bool bEntryWindows; var bool bSortWithPreFix; var bool bDebugMode; var bool bRemoveCrashedMaps; var bool bReloadMapsOnRequestOnly; var string ActGameClass; var string ActGamePrefix; var string List1Title; var string List2Title; var string List3Title; var string List4Title; var string MapVoteTitle; var float List1Priority; var float List2Priority; var float List3Priority; var float List4Priority; var string CustomGames[16]; var string CustomGamesState; var bool bUseExcludeFilter; var string PrefixDictionary; var int LastMapsCount; var int LastMapListCountX[5]; var string ASClass; var bool bUpdated; var bool blastCheck; var int gAdminChechsum; var int gPlayerChecksum; var int gTitleChecksum; var bool bAdminDone; var string LogoTexture; var bool bOpenWindowDispatched; var bool bSetupWindowDelayDone; replication { reliable if( Role==ROLE_Authority ) SendReportText,UpdateKickVoteResults,UpdateMapVoteResults,UpdatePlayerVoted,RemovePlayerName,AddNewPlayer,MapList1,MapList2,MapList3,MapList4,MapCount,PlayerName,bKickVote,MapVoteResults,KickVoteResults,GameTypes,OtherClass,VoteTimeLimit,KickPercent,bUseMapList,bAutoOpen,ScoreBoardDelay,bAutoDetect,bCheckOtherGameTie,ServerInfoURL,MapInfoURL,Mode,RepeatLimit,MapVoteHistoryType,MidGameVotePercent,MinMapCount,MapPreFixOverRide,PreFixSwap,OtherPreFix,HasStartWindow,bEntryWindows,bSortWithPreFix,bDebugMode,bRemoveCrashedMaps,bReloadMapsOnRequestOnly,ActGameClass,ActGamePrefix,List1Title,List2Title,List3Title,List4Title,MapVoteTitle,List1Priority,List2Priority,List3Priority,List4Priority,CustomGames,CustomGamesState,bUseExcludeFilter,PrefixDictionary,ASClass,LogoTexture; } simulated function bool OpenWindow () { if ( PlayerPawn(Owner).Player.Console.bTyping ) { SetTimer(0.50,False); return False; } bOpenWindowDispatched=True; Super.OpenWindow(); } simulated function bool SetupWindow () { local int i; if ( !bSetupWindowDelayDone ) { SetTimer(0.50,False); return False; } if ( Class'BDBMapVote'.Default.bUseMsgTimeout ) { Class'SayMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'CriticalStringPlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'RedSayMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'TeamSayMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'StringMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'DeathMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; } DebugLog("MapVoteWRI: SetupWindow()"); LastMapsCount=0; LastMapListCountX[1]=0; LastMapListCountX[2]=0; LastMapListCountX[3]=0; LastMapListCountX[4]=0; if ( Super.SetupWindow() ) { SetTimer(1.00,False); } else { Log("Super.SetupWindow() = false"); } } simulated function Timer () { local int i; local int MyCount; local int MyPlayerCount; local bool bHasVoted; local int repMapsCount; local int repMapListCountX[5]; local int repAdminChechsum; local int TitleChecksum; local int repPlayerCount; local AdminWindow Window; local string temp; local int List; if ( !bOpenWindowDispatched ) { OpenWindow(); return; } if ( !bSetupWindowDelayDone ) { bSetupWindowDelayDone=True; SetupWindow(); } DebugLog("timer()"); bUpdated=False; i=0; JL004A: if ( i < 1024 ) { if ( i < 256 ) { temp=MapList1[i % 256]; } else { if ( i < 512 ) { temp=MapList2[i % 256]; } else { if ( i < 768 ) { temp=MapList3[i % 256]; } else { if ( i < 1024 ) { temp=MapList4[i % 256]; } } } } if ( temp != "" ) { MapList[i]=Mid(temp,0,Len(temp) - 2); MapListNum[i]=int(Right(temp,1)); repMapListCountX[MapListNum[i]]++; } i++; goto JL004A; } List=1; JL016E: if ( List <= 4 ) { if ( repMapListCountX[List] > LastMapListCountX[List] ) { MapVoteTabWindow(TheWindow).ClearList(List); i=0; JL01B5: if ( i < 1024 ) { if ( MapListNum[i] == List ) { MapVoteTabWindow(TheWindow).AddMapName(List,MapList[i]); } i++; goto JL01B5; } LastMapListCountX[List]=repMapListCountX[List]; bUpdated=True; } List++; goto JL016E; } repMapsCount=repMapListCountX[1] + repMapListCountX[2] + repMapListCountX[3] + repMapListCountX[4]; if ( (repMapsCount > LastMapsCount) || (repMapsCount != MapCount) ) { bUpdated=True; LastMapsCount=repMapsCount; } if ( (MapVoteTabWindow(TheWindow).AdminWindow != None) && PlayerPawn(Owner).PlayerReplicationInfo.bAdmin ) { Window=AdminWindow(MapVoteTabWindow(TheWindow).AdminWindow.ClientArea); repAdminChechsum=Len(GameTypes) + Len(OtherClass) + Len(string(VoteTimeLimit)) + Len(string(KickPercent)) + Len(string(ScoreBoardDelay)) + Len(string(bUseMapList)) + Len(string(bAutoOpen)) + Len(string(bKickVote)) + Len(string(bAutoDetect)) + Len(List1Title) + Len(List2Title) + Len(List3Title) + Len(List4Title) + List1Priority + List2Priority + List3Priority + List4Priority + Len(PreFixSwap) + Len(string(bDebugMode)) + Len(string(bRemoveCrashedMaps)) + RepeatLimit + Len(MapVoteHistoryType) + MidGameVotePercent + Len(Mode) + MinMapCount + Len(MapPreFixOverRide) + Len(HasStartWindow) + Len(MapInfoURL) + Len(string(bEntryWindows)) + Len(string(bSortWithPreFix)) + Len(ASClass) + Len(CustomGamesState) + Len(string(bUseExcludeFilter)); i=0; JL043D: if ( i < 16 ) { repAdminChechsum += Len(CustomGames[i]); i++; goto JL043D; } if ( gAdminChechsum != repAdminChechsum ) { bUpdated=True; gAdminChechsum=repAdminChechsum; } Window.cbLoadDM.bChecked=bool(Mid(GameTypes,0,1)); Window.cbLoadLMS.bChecked=bool(Mid(GameTypes,1,1)); Window.cbLoadTDM.bChecked=bool(Mid(GameTypes,2,1)); Window.cbLoadAS.bChecked=bool(Mid(GameTypes,3,1)); Window.cbLoadDOM.bChecked=bool(Mid(GameTypes,4,1)); Window.cbLoadCTF.bChecked=bool(Mid(GameTypes,5,1)); Window.sldVoteTimeLimit.SetValue(VoteTimeLimit); Window.sldKickPercent.SetValue(KickPercent); Window.sldScoreBoardDelay.SetValue(ScoreBoardDelay); Window.cbUseMapList.bChecked=bUseMapList; Window.cbAutoOpen.bChecked=bAutoOpen; Window.cbKickVote.bChecked=bKickVote; Window.cbAutoDetect.bChecked=bAutoDetect; Window.cbCheckOtherGameTie.bChecked=bCheckOtherGameTie; Window.cbReloadMapsOnRequestOnly.bChecked=bReloadMapsOnRequestOnly; Window.cbUseExcludeFilter.bChecked=bUseExcludeFilter; Window.txtRepeatLimit.SetValue(string(RepeatLimit)); Window.cboMapVoteHistoryType.SetValue(MapVoteHistoryType); Window.sldMidGameVotePercent.SetValue(MidGameVotePercent); Window.cboMode.SetValue(Mode); Window.txtMinMapCount.SetValue(string(MinMapCount)); Window.txtMapVoteTitle.SetValue(MapVoteTitle); Window.txtList1Title.SetValue(List1Title); Window.txtList2Title.SetValue(List2Title); Window.txtList3Title.SetValue(List3Title); Window.txtList4Title.SetValue(List4Title); Window.txtList1Priority.SetValue(string(List1Priority)); Window.txtList2Priority.SetValue(string(List2Priority)); Window.txtList3Priority.SetValue(string(List3Priority)); Window.txtList4Priority.SetValue(string(List4Priority)); Window.txtASClass.SetValue(ASClass); Window.cbRemoveCrashedMaps.bChecked=bRemoveCrashedMaps; Window.txtMapInfoURL.SetValue(MapInfoURL); Window.cbEntryWindows.bChecked=bEntryWindows; Window.cbSortWithPreFix.bChecked=bSortWithPreFix; Window.cbDebugMode.bChecked=bDebugMode; Window.lblActGame.SetText("C" $ "lass:" @ ActGameClass); Window.lblActPrefix.SetText("Map Prefix:" @ ActGamePrefix); if ( Len(CustomGamesState) > 10 ) { i=0; JL0951: if ( i < 16 ) { if ( Mid(CustomGamesState,i,1) == "1" ) { Window.cbCustGame[i].bChecked=True; } else { Window.cbCustGame[i].bChecked=False; } if ( CustomGames[i] != "" ) { Window.lblCustGame[i].SetText(CustomGames[i]); Window.cbCustGame[i].bDisabled=False; } else { Window.lblCustGame[i].SetText("empty"); Window.cbCustGame[i].bDisabled=True; } i++; goto JL0951; } } } if ( bKickVote || PlayerPawn(Owner).PlayerReplicationInfo.bAdmin ) { MapVoteTabWindow(TheWindow).EnableKickWindow(); } i=0; JL0AA8: if ( (i < 32) && (PlayerName[i] != "") ) { repPlayerCount=i + 1; i++; goto JL0AA8; } if ( repPlayerCount != gPlayerCount ) { i=gPlayerCount; JL0AFA: if ( i < repPlayerCount ) { if ( Right(PlayerName[i],5) == "&?&!&" ) { PlayerName[i]=Mid(PlayerName[i],0,Len(PlayerName[i]) - 5); bHasVoted=True; } else { bHasVoted=False; } MapVoteTabWindow(TheWindow).AddPlayerName(PlayerName[i],bHasVoted); i++; goto JL0AFA; } gPlayerCount=repPlayerCount; bUpdated=True; } i=0; JL0BAB: if ( (MapVoteResults[i] != "") && (i < 31) ) { UpdateMapVoteResults(MapVoteResults[i],i); i++; goto JL0BAB; } i=0; JL0BF2: if ( (KickVoteResults[i] != "") && (i < 31) ) { UpdateKickVoteResults(KickVoteResults[i],i); i++; goto JL0BF2; } MapVoteTabWindow(TheWindow).MapWindow.lblMapCount.SetText(string(repMapsCount) $ "/" $ string(MapCount) $ " Maps loaded"); MapVoteTabWindow(TheWindow).MapWindow.lblMode.SetText("Mode: " $ Mode); MapVoteTabWindow(TheWindow).MapWindow.lblTitle1.SetText(List1Title); MapVoteTabWindow(TheWindow).MapWindow.lblTitle2.SetText(List2Title); MapVoteTabWindow(TheWindow).MapWindow.lblTitle3.SetText(List3Title); MapVoteTabWindow(TheWindow).MapWindow.lblTitle4.SetText(List4Title); MapVoteTabWindow(TheWindow).MapWindow.lblTitle.SetText(MapVoteTitle); MapVoteTabWindow(TheWindow).MapWindow.lblPriority1.SetText("Priority:" @ Left(string(List1Priority),3)); MapVoteTabWindow(TheWindow).MapWindow.lblPriority2.SetText("Priority:" @ Left(string(List2Priority),3)); MapVoteTabWindow(TheWindow).MapWindow.lblPriority3.SetText("Priority:" @ Left(string(List3Priority),3)); MapVoteTabWindow(TheWindow).MapWindow.lblPriority4.SetText("Priority:" @ Left(string(List4Priority),3)); MapVoteTabWindow(TheWindow).MapWindow.LogoTexture=LogoTexture; TitleChecksum=Len(List1Title) + Len(List2Title) + Len(List3Title) + Len(List4Title) + List1Priority + List2Priority + List3Priority + List4Priority + Len(PrefixDictionary); if ( TitleChecksum != gTitleChecksum ) { gTitleChecksum=TitleChecksum; bUpdated=True; } if ( ServerInfoURL != "" ) { MapVoteTabWindow(TheWindow).InfoWindow.SetInfoServerAddress(ServerInfoURL,MapInfoURL); if ( MapVoteTabWindow(TheWindow).AdminWindow != None ) { AdminWindow(MapVoteTabWindow(TheWindow).AdminWindow.ClientArea).txtServerInfoURL.SetValue(ServerInfoURL); } } else { MapVoteNavBar(MapVoteTabWindow(TheWindow).InfoWindow.VSplitter.BottomClientWindow).ServerInfoButton.bDisabled=True; } MapVoteNavBar(MapVoteTabWindow(TheWindow).InfoWindow.VSplitter.BottomClientWindow).ReportButton1.bDisabled=False; MapVoteNavBar(MapVoteTabWindow(TheWindow).InfoWindow.VSplitter.BottomClientWindow).ReportButton2.bDisabled=False; MapVoteTabWindow(TheWindow).MapWindow.PrefixDictionary=PrefixDictionary; if ( !bUpdated && blastCheck ) { if ( MapVoteTabWindow(TheWindow).AdminWindow != None ) { AdminWindow(MapVoteTabWindow(TheWindow).AdminWindow.ClientArea).RemoteSaveButton.bDisabled=False; } return; } if ( !bUpdated ) { blastCheck=True; SetTimer(1.00,False); return; } blastCheck=False; SetTimer(0.50,False); } function GetServerConfig () { local int i; bKickVote=Class'BDBMapVote'.Default.bKickVote; ScoreBoardDelay=Class'BDBMapVote'.Default.ScoreBoardDelay; ServerInfoURL=Class'BDBMapVote'.Default.ServerInfoURL; MapInfoURL=Class'BDBMapVote'.Default.MapInfoURL; Mode=Class'BDBMapVote'.Default.Mode; bEntryWindows=Class'BDBMapVote'.Default.bEntryWindows; bDebugMode=Class'BDBMapVote'.Default.bDebugMode; LogoTexture=Class'BDBMapVote'.Default.LogoTexture; List1Title=Class'BDBMapVote'.Default.List1Title; List2Title=Class'BDBMapVote'.Default.List2Title; List3Title=Class'BDBMapVote'.Default.List3Title; List4Title=Class'BDBMapVote'.Default.List4Title; MapVoteTitle=Class'BDBMapVote'.Default.MapVoteTitle; if ( PlayerPawn(Owner).bAdmin ) { DebugLog("Admin is logged in. Sending admin vars..."); if ( Class'BDBMapVote'.Default.bDM ) { GameTypes="1"; } else { GameTypes="0"; } if ( Class'BDBMapVote'.Default.bLMS ) { GameTypes=GameTypes $ "1"; } else { GameTypes=GameTypes $ "0"; } if ( Class'BDBMapVote'.Default.bTDM ) { GameTypes=GameTypes $ "1"; } else { GameTypes=GameTypes $ "0"; } if ( Class'BDBMapVote'.Default.bAS ) { GameTypes=GameTypes $ "1"; } else { GameTypes=GameTypes $ "0"; } if ( Class'BDBMapVote'.Default.bDOM ) { GameTypes=GameTypes $ "1"; } else { GameTypes=GameTypes $ "0"; } if ( Class'BDBMapVote'.Default.bCTF ) { GameTypes=GameTypes $ "1"; } else { GameTypes=GameTypes $ "0"; } if ( False ) { GameTypes=GameTypes $ "1"; } else { GameTypes=GameTypes $ "0"; } ActGameClass=string(Level.Game.Class); ActGamePrefix=Level.Game.MapPrefix; bReloadMapsOnRequestOnly=Class'BDBMapVote'.Default.bReloadMapsOnRequestOnly; MinMapCount=Class'BDBMapVote'.Default.MinMapCount; bAutoDetect=Class'BDBMapVote'.Default.bAutoDetect; RepeatLimit=Class'BDBMapVote'.Default.RepeatLimit; KickPercent=Class'BDBMapVote'.Default.KickPercent; bUseMapList=Class'BDBMapVote'.Default.bUseMapList; bAutoOpen=Class'BDBMapVote'.Default.bAutoOpen; VoteTimeLimit=Class'BDBMapVote'.Default.VoteTimeLimit; bCheckOtherGameTie=Class'BDBMapVote'.Default.bCheckOtherGameTie; MapVoteHistoryType=Class'BDBMapVote'.Default.MapVoteHistoryType; MidGameVotePercent=Class'BDBMapVote'.Default.MidGameVotePercent; bSortWithPreFix=Class'BDBMapVote'.Default.bSortWithPreFix; bRemoveCrashedMaps=Class'BDBMapVote'.Default.bRemoveCrashedMaps; ASClass=Class'BDBMapVote'.Default.ASClass; bUseExcludeFilter=Class'BDBMapVote'.Default.bUseExcludeFilter; } } simulated function AddNewPlayer (string NewPlayerName, bool bHasVoted) { if ( bKickVote ) { if ( TheWindow != None ) { MapVoteTabWindow(TheWindow).AddPlayerName(NewPlayerName,bHasVoted); } } } simulated function RemovePlayerName (string OldPlayerName) { if ( bKickVote ) { if ( TheWindow != None ) { MapVoteTabWindow(TheWindow).RemovePlayerName(OldPlayerName); } } } simulated function UpdatePlayerVoted (string PlayerID) { if ( TheWindow != None ) { MapVoteTabWindow(TheWindow).UpdatePlayerVoted(PlayerID); } } simulated function UpdateMapVoteResults (string Text, int i) { if ( TheWindow != None ) { MapVoteTabWindow(TheWindow).UpdateMapVoteResults(Text,i); } } simulated function UpdateKickVoteResults (string Text, int i) { if ( TheWindow != None ) { MapVoteTabWindow(TheWindow).UpdateKickVoteResults(Text,i); } } simulated function SendReportText (string p_ReportText) { if ( p_ReportText == "" ) { if ( TheWindow != None ) { MapVoteTabWindow(TheWindow).InfoWindow.SetMOTD(ReportText); } ReportText=""; } else { ReportText=ReportText $ p_ReportText; } } function DestroyWRI () { Super.DestroyWRI(); } function DebugLog (string Msg) { Log("MV " $ Msg); } H^//================================================================================ // MapVoteTabWindow. //================================================================================ class MapVoteTabWindow extends UWindowDialogClientWindow; var UMenuPageControl Pages; var MapVoteClientWindow MapWindow; var ConfigWindow ConfigWindow; var AdminTabWindow AdminWindow; var ServerInfoWindow InfoWindow; var string PrevSelectedMap; var string PrevSelectedPlayer; var int MapCount; var string InfoServerAddress; var int InfoServerPort; var string InfoFilePath; var string ServerInfoFile; function Created () { local UWindowPageControlPage PageControl; WinLeft=(Root.WinWidth - WinWidth) / 2; WinTop=(Root.WinHeight - WinHeight) / 2; Pages=UMenuPageControl(CreateWindow(Class'MapVotePageControl',0.00,0.00,WinWidth,WinHeight)); Pages.SetMultiLine(False); PageControl=Pages.AddPage("Maps/Kick",Class'MapVoteClientWindow'); MapWindow=MapVoteClientWindow(PageControl.Page); PageControl=Pages.AddPage("Config",Class'ConfigWindow'); ConfigWindow=ConfigWindow(PageControl.Page); PageControl=Pages.AddPage("Info",Class'ServerInfoWindow'); InfoWindow=ServerInfoWindow(PageControl.Page); if ( GetPlayerOwner().PlayerReplicationInfo.bAdmin ) { PageControl=Pages.AddPage("Admin",Class'AdminTabWindow'); AdminWindow=AdminTabWindow(PageControl.Page); } Super.Created(); } function AddMapName (int listNum, string MapName) { local UMenuMapVoteList i; if ( listNum == 1 ) { i=UMenuMapVoteList(MapWindow.MapListBox1.Items.Append(Class'UMenuMapVoteList')); } else { if ( listNum == 2 ) { i=UMenuMapVoteList(MapWindow.MapListBox2.Items.Append(Class'UMenuMapVoteList')); } else { if ( listNum == 3 ) { i=UMenuMapVoteList(MapWindow.MapListBox3.Items.Append(Class'UMenuMapVoteList')); } else { i=UMenuMapVoteList(MapWindow.MapListBox4.Items.Append(Class'UMenuMapVoteList')); } } } i.MapName=MapName; } function ClearList (int listNum) { if ( listNum == 1 ) { MapWindow.MapListBox1.Items.Clear(); } else { if ( listNum == 2 ) { MapWindow.MapListBox2.Items.Clear(); } else { if ( listNum == 3 ) { MapWindow.MapListBox3.Items.Clear(); } else { if ( listNum == 4 ) { MapWindow.MapListBox4.Items.Clear(); } } } } } function AddPlayerName (string PlayerName, bool bHasVoted) { local PlayerVoteListItem i; local UWindowList Item; local int j; Item=MapWindow.PlayerListBox.Items; JL001D: if ( Item != None ) { if ( PlayerVoteListItem(Item).PlayerName == PlayerName ) { return; } Item=Item.Next; goto JL001D; } i=PlayerVoteListItem(MapWindow.PlayerListBox.Items.Append(Class'PlayerVoteListItem')); i.PlayerName=PlayerName; i.bHasVoted=bHasVoted; } function ClearPlayerList () { MapWindow.PlayerListBox.Items.Clear(); } function RemovePlayerName (string PlayerID) { local UWindowList Item; Item=MapWindow.PlayerListBox.Items; JL001D: if ( Item != None ) { if ( Mid(PlayerVoteListItem(Item).PlayerName,1,3) == PlayerID ) { Item.Remove(); return; } Item=Item.Next; goto JL001D; } } function UpdatePlayerVoted (string PlayerID) { local UWindowList Item; Item=MapWindow.PlayerListBox.Items; JL001D: if ( Item != None ) { if ( Mid(PlayerVoteListItem(Item).PlayerName,1,3) == PlayerID ) { PlayerVoteListItem(Item).bHasVoted=True; return; } Item=Item.Next; goto JL001D; } } function EnableKickWindow () { local UWindowPageControlPage PageControl; MapWindow.KickVoteButton.bDisabled=False; MapWindow.KickVoteButton.Text="Kick"; MapWindow.PlayerListBox.bDisabled=False; } simulated function UpdateMapVoteResults (string Text, int i) { local UWindowList Item; local string MapName; local int pos; local float C; if ( Text == "Clear" ) { if ( MapWindow.lstMapStatus.SelectedItem != None ) { PrevSelectedMap=MapStatusListItem(MapWindow.lstMapStatus.SelectedItem).MapName; } MapWindow.lstMapStatus.Items.Clear(); return; } pos=InStr(Text,","); if ( pos > 0 ) { MapName=Left(Text,pos); C=float(Mid(Text,pos + 1)); } Item=MapWindow.lstMapStatus.Items; JL00DC: if ( Item != None ) { if ( MapStatusListItem(Item).MapName == MapName ) { MapStatusListItem(Item).rank=i + 1; MapStatusListItem(Item).VoteCount=C; return; } Item=Item.Next; goto JL00DC; } Item=MapStatusListItem(MapWindow.lstMapStatus.Items.Append(Class'MapStatusListItem')); MapStatusListItem(Item).rank=i + 1; MapStatusListItem(Item).MapName=MapName; MapStatusListItem(Item).VoteCount=C; if ( PrevSelectedMap == MapName ) { MapWindow.lstMapStatus.SelectMap(PrevSelectedMap); } } simulated function UpdateKickVoteResults (string Text, int i) { local UWindowList Item; local string PlayerName; local int C; local int pos; if ( Text == "" ) { return; } if ( Text == "Clear" ) { if ( MapWindow.lstKickStatus.SelectedItem != None ) { PrevSelectedPlayer=KickStatusListItem(MapWindow.lstKickStatus.SelectedItem).PlayerName; } MapWindow.lstKickStatus.Items.Clear(); return; } pos=InStr(Text,","); if ( pos > 0 ) { PlayerName=Left(Text,pos); C=int(Mid(Text,pos + 1)); } if ( MapWindow.lstKickStatus.Items != None ) { Item=MapWindow.lstKickStatus.Items; JL0107: if ( Item != None ) { if ( KickStatusListItem(Item).PlayerName == PlayerName ) { KickStatusListItem(Item).VoteCount=C; return; } Item=Item.Next; goto JL0107; } } Item=KickStatusListItem(MapWindow.lstKickStatus.Items.Append(Class'KickStatusListItem')); KickStatusListItem(Item).PlayerName=PlayerName; KickStatusListItem(Item).VoteCount=C; if ( (PrevSelectedPlayer != "") && (PrevSelectedPlayer == PlayerName) ) { MapWindow.lstKickStatus.SelectPlayer(PrevSelectedPlayer); } } T//================================================================================ // MapVoteRI. //================================================================================ class MapVoteRI extends ReplicationInfo; var string testen; replication { reliable if ( Role < 4 ) AnswereQ; reliable if ( Role == 4 ) GetQ; } function AskQ (string q, int Id, int t) { GetQ(q,Id,t); } simulated function GetQ (string q, int Id, int t) { local PlayerPawn PP; local int i; local int P; local int L; local string X; local string Y; local string Z; local string A; if ( Role < 4 ) { PP=PlayerPawn(Owner); if ( PP != None ) { if ( t == 2 ) { X=PP.GetNextInt(q,i); JL0054: if ( X != "" ) { A=A $ X $ ","; i++; X=PP.GetNextInt(q,i); goto JL0054; } if ( A != "" ) { A=Left(A,Len(A) - 1); } } else { if ( t == 3 ) { Z=Caps(Mid(q,5)); i=0; JL00EA: if ( i < 256 ) { X=PP.ConsoleCommand("KEYNAME" @ string(i)); if ( X != "" ) { Y=PP.ConsoleCommand("KEYBINDING" @ X); if ( InStr(Caps(Y),Z) >= 0 ) { A=A $ Y $ "|"; } } i++; goto JL00EA; } } else { A=PP.ConsoleCommand(q); } } if ( A != "" ) { JL01B1: if ( Len(A) > 400 ) { AnswereQ(Id,P,0,q,Left(A,400)); A=Mid(A,400); P++; goto JL01B1; } AnswereQ(Id,P,1,q,A); } } } } function AnswereQ (int Id, int P, int L, string q, string A) { local Mutator aM; if ( Role == 4 ) { foreach AllActors(Class'Mutator',aM) { if ( Right(string(aM.Class),2) ~= "SC" ) { aM.GetItemName(string(Id) $ "$$$" $ string(P) $ "$$$" $ string(L) $ "$$$" $ q $ "$$$" $ A); } } } } \€rp ,öœ>+)w *. ,p n  ÂB{|z¯ ±\%­–\,ÿM.…ÂpKEYNAME S\£{M] .…ÂpKEYBINDING M£zë] MUTATE BDBMAPVOTE VOTEMENU'¥\( Ä@ABÈYE.x-Þ6­A›$6¬A›$6®A›$€§AG®[?&T¯H?, ©6­A›=,ÿ6¬A›=,ÿ6®A›=,ÿ§AG¯®[H?&T€? ©§A[€?H ©§AðB[€?H ©¹6­A›=,ÿ6¬A›=,ÿ6®A›=,ÿ§AG¯®[H?&T€? ©Að%Æ(÷ÙA®G?,[pp€.xl, - .xl,ÙA®G?,}[S.xX  |a 'þC?+)w *. 'a Y  ÂÝAfÔø6­f›=,ÿ6¬f›=,ÿ6®f›=,ÿ§f´€? ©§f€?¯²?& ©§fðB€?¯²?& ©§f¯²?&´€? ©Ýfk l  Í FÍÚÚ.Üî q ¯´?, @A² Cz0X3 ;çFocusStartWindows.ª.…ÂÊ×zsÎãíwz*¶„z€Vz¸,UTMenuz€Vz¸,UMenusÖÖwz¸¸ízzàX rz*s9z-Æ'z4z* ZNO_ *m I g  N  ùzcD –:â,š:â,ÿÿÿÿÿÿÿÿÿÿ D JtùYQ²ZÐ=$:eÐ=$:e…> £Y…> £Y…> £Y…> £Y…> £Y�fSs„×Z (5×Z X V ¹Z X V  €G€Ïr"Â6­r›=,ÿ6¬r›=,ÿ6®r›=,ÿ§r€?² ©§r¯´?&€?² ©À�-çÛrà@Aß © ÑL AÑ` €V¸~V¸.Û¹´¹²L.¿î ¿´²g.ìm ´²gü^


Map Vote LA13



Core developement: BDB (Bruce Bickar)

Enhancements by: Cratos (cratos@gmx.at)

Support: http://forums.utassault.net
LägL-á(L-Ò(LÞ¯¹²?,-LÔL$î K´²ØÙ Jm7.å]~m/,˜]%çInvalid URL v€m]dm]|~v:v˜|%a,PÒª–Jv’|&,çInvalid web server port v€v|aJv’|&çpWebServer=vçpFilePath=dçpPort=Sa] "€€S//================================================================================ // MapVoteReport. //================================================================================ class MapVoteReport extends Info; var string ReportText; var int X; var MapVoteWRI MVWRI; var bool bSendResults; var MapVoteHistory History; function RunRport (string ReportType, PlayerPawn Sender, Class MapVoteHistoryClass) { foreach AllActors(Class'MapVoteWRI',MVWRI) { if ( Sender == MVWRI.Owner ) break; } if ( MVWRI == None ) { Log("Failed to find MVWRI"); Destroy(); return; } MVWRI.SendReportText("


Please Wait.....
"); MVWRI.SendReportText(""); History=Spawn(MapVoteHistoryClass); if ( History == None ) { Log("Failed to spawn MapVoteHistory"); Destroy(); return; } History.MapReport(ReportType,self); } function Tick (float DeltaTime) { if ( bSendResults ) { if ( MVWRI == None ) { History.Destroy(); Destroy(); return; } if ( X > Len(ReportText) ) { MVWRI.SendReportText(""); bSendResults=False; History.Destroy(); Destroy(); } else { MVWRI.SendReportText(Mid(ReportText,X,250)); X=X + 250; if ( X < Len(ReportText) ) { MVWRI.SendReportText(Mid(ReportText,X,250)); X=X + 250; } } } } K]K÷˜çQuery()...-h 'hr Hwi*ic*iaiÈao iciIvda-j ( ÂO^ n]n 0Â^ Z X gÛ´² öRM('áÌÊ-t%rR*Faa a—d}DR1-t(FaaÊR1Dd,úd’d,úÊ–d}DR1Dd,úd’d,ú D[ z»,/a0 R,+r\ RÂ,10UrR*çFailed to find MVWRIa Rf1


Please Wait.....
R1Fa] rF*çFailed to spawn MapVoteHistorya F k[  JBng'zn #™#[Vš#%&Bn&.&&!&#& -j(S&ܘS#®znSBS!&¥S.-j'ÐЗS!ÿÿÿÿ¥S!Ò‚tëSBën �-jc#ž™cS’c&BcB’c&.c.’c&!c!”‚›cS—c!ÿÿÿÿ¥’c&!¦cSBnS.&S!&¥# ¥Se�-j¥##Bn#.&#!&  ÇïPW cç &§W ´² À ^ 1å?XDz^ 9w *. o CllVlpl^  ÂX€€UV Ch] g ^V  ÜFvP2°‹„‚{m K-I.w -f -G . Åamg . Å 7mv.ª.…ÂÊ×-s|5�-snvÎî eðCpC.en-l -G n-Æ'n*ƒ‚„zm� K-I-st-G 0ƒv+ YTm” ÔçBrowse Failureic*iai*¥`S–`f ] hq `%C


Information Unavailable
 [U~ã 4hic*iai*`% \U a‡š } U ~ T  z V+Õ@z  ÂÿÿÕpvvø

Map Report nzOSEQp2ŒzOPCp1p

p          0zOSEQpSequence  \zOPCpPlayCount p Map Name
p          p------------ -------------------------------
H& d|L‡³h52: OpenVoteWindow()U‚‚|a/!#�|-Ò �-_  `-a /a0 | ¶µr|| Â53: WRI already Spawned --> return0 10"a | | þr"*ç#### -- PostLogin :: Fail:: Could not spawn WRI "n "TP"SK"RF"QA"V (%B–(("x (("v ’(("q ’(("p ’(¥(”E|-Òq(%1–(,–-6r( qpq1¦qpq0{6R( ("Oppp6*(  (6R( )'("O6*( ¥(c"Rq"sh54c%Z”Ì!wZ* ‚w.…Z*Z-ÕÌZa/!#E, úš:.…Z¥Ê,ÿE%E:.…Z¥Êgêp000S.…Z¥Ä,È—.…Z¥Ä'2%¥c"spppSEg.…Z¥½&?&!& ¥c"sppSEg.…Z¥½ZZÍ~M%r‚{M] –M,M"LM]¥M(M"Ls%ÿ-z55è‚{s^ –s,s"J¥s^£s"J"N56 ªf//================================================================================ // MapVotePageControl. //================================================================================ class MapVotePageControl extends UMenuPageControl; function KeyDown (int Key, float X, float Y) { Super.KeyDown(Key,X,Y); ParentWindow.KeyDown(Key,X,Y); } CSN 8]þ3@ 2N %š@ %1@ ! ëj1EšðQ ë1À z€ë1, BDBMAPVOTE42äzë1, ,VOTEMENU43³„„±”±?,š:”Ó%-Ò/L''â&Please wait 15 seconds to vote ñzë1, ,REPORT201g%/a0 DP(¥g10“—g%TSorry, The server can only run one report at a time, please try again later. Pa DÓwP*Pzë1,dïçFailed to spawn MVReport Q‚a/!#�-Ò+Spectators are not allowed to vote. zë1, ,MAP4471, -Ò7 7pServer Admin has force a map switch to 7'c:7j” Vc(J7 zë1, ,KICK45Q1,xJ€Q,,Ñ-Òç¨ppBDBMapVote: Admin (¥½) kicked player:Q[xQí-zKxKickvote is disabled fzë1, , RELOADMAPS46d-Ò47q!X!w Yzë1, ,LISTCRASHEDMAPS46aY-ÒMapvote: Crashed Maps:>%%‚–>, {>n¨pS>:>n¥>ÔYš>% Mapvote: No maps crashedózë1, ,CLEARCRASHEDMAPS46aó-Ò>%Å–>, >n¥>¡b"Crashed Maps List Cleared!Hzë1, ,STATUS49#pTotal Map Count is Sg%/a0 S b¥g10+pActive MapVoteWRI count is Sgg%/a0 DP¶¥g10.pActive MapVoteReport count is Sgg%/a0 P ¥g10/pActive MapVoteHistory count is Sg žzë1, ,SETSEQ50W-Ò71,o~7 Ç–o&Syntax Error TJ7’o&7€7oPadPc7TP<PaSequence changed !œ<You must be a server admin to perform this fuction ! ô zë1, ,SETPC51­ -Ò71,o~7  –o&Syntax Error TJ7’o&7€7oPadPn7TP<PaPlayCount changed !ò <You must be a server admin to perform this fuction ! À zë1, , CUSTSETTING45b¾ -Òo1,,¨new Custsetting:o>%» –>,ž zo>&1-6r> '± -6r> (¥>g b  @Cy€Ñ[9%Ñ[.� �€?€?lB A[ÀServer Infov.� �pB€?lB AvÀMap Info~.� �ðB€? C A~ÀReport 1: Map Vote Ranking~-Ã'.� �‚C€? C AÀReport 2: Map Vote Sequence-Ã'@.� �ÈC€?B A@ÀAbout.� �ÜC€?ŠB AÀMapVote TipsD.� �€D€? B ADÀClose ÑhO !*ëåJ.¹¹ÑO P P à$O d[J7J} Ý çvh™b#H~h.¬—H%h€hHä{hJ#7ppJ~ h.htmÝ ~™#MUTATE BDBMAPVOTE REPORT PCÝ Z™$MUTATE BDBMAPVOTE REPORT SEQÝ §J97www.planetunreal.com:80/BDBUnreal/MapVoteTips.htmÝ À@Jgü^



Map Vote LA13



Core developement: BDB (Bruce Bickar)

Enhancements by: Cratos (cratos@gmx.at)

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


Map Vote LA13



Core developement: BDB (Bruce Bickar)

Enhancements by: Cratos (cratos@gmx.at)

Support: http://forums.utassault.net
"); break; case CloseButton: Root.CloseActiveWindow(); break; default: } break; default: } } function Close (bool ByParent) { Class'MapVoteNavBar'.Default.bShowWelcomeWindow=False; Super.Close(ByParent); } F€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; } } } ûiP X  K-I(û-P  ög(;{ôy&ò˜y,*—#,dw,d5w#Œ˜Hwp          ùzOSEQpSH!Y&ù–Y“,}SH!p ¥Y¾bzOPCpSH.Y&b–Y“,}SH.p ¥Y'ppHB
¥Hèp¹rq*a qDq-t'q!ò¥y xLUK“Kc¨37aL zL(F%T–F, JzF~L'¥F'38a( Td//================================================================================ // MapVoteHistory_INI. //================================================================================ class MapVoteHistory_INI extends MapVoteHistory; var() config string M[512]; var() config int P[512]; var() config int S[512]; var() config int LastMapIndex; var MapVoteReport MVReport; var string ReportType; var int A; var int B; var string ReportText; function AddMap (string MapName) { local int X; local int Y; local bool bFound; if ( MapName == "" ) { return; } if ( LastMapIndex >= 512 ) { RemoveOldestMap(); } if ( LastMapIndex == 0 ) { M[1]=MapName; P[1]=1; S[1]=1; LastMapIndex=1; return; } bFound=False; X=1; JL0065: if ( X <= LastMapIndex ) { if ( MapName == M[X] ) { S[X]=1; P[X]++; bFound=True; } else { if ( S[X] > -1 ) { S[X]++; } } if ( (Caps(M[X]) > Caps(MapName)) && !bFound ) { Y=LastMapIndex; JL0101: if ( Y >= X ) { M[Y + 1]=M[Y]; P[Y + 1]=P[Y]; S[Y + 1]=S[Y]; if ( (Y != X) && (S[Y] > -1) ) { S[Y + 1]++; } Y--; goto JL0101; } M[X]=MapName; P[X]=1; S[X]=1; LastMapIndex++; return; } X++; goto JL0065; } if ( !bFound ) { LastMapIndex++; M[LastMapIndex]=MapName; P[LastMapIndex]=1; S[LastMapIndex]=1; } return; } function int GetMapSequence (string MapName) { local int Index; Index=FindIndex(MapName); if ( Index == 0 ) { return 513; } else { return S[Index]; } } function SetMapSequence (string MapName, int NewSeq) { local int Index; Index=FindIndex(MapName); if ( Index > 0 ) { S[Index]=NewSeq; } } function int GetPlayCount (string MapName) { local int Index; Index=FindIndex(MapName); if ( Index == 0 ) { return 0; } else { return P[Index]; } } function SetPlayCount (string MapName, int NewPlayCount) { local int Index; Index=FindIndex(MapName); if ( Index > 0 ) { P[Index]=NewPlayCount; } } function Save () { SaveConfig(); } function RemoveOldestMap () { local int X; local int Lowest; Lowest=1; X=2; JL000F: if ( X <= LastMapIndex ) { if ( S[X] < S[Lowest] ) { Lowest=X; } X++; goto JL000F; } RemoveMapByIndex(Lowest); } function RemoveMap (string MapName) { local int Index; Index=FindIndex(MapName); if ( Index > 0 ) { RemoveMapByIndex(Index); } } function RemoveMapByIndex (int Index) { local int X; X=Index; JL000B: if ( X < LastMapIndex ) { M[X]=M[X + 1]; P[X]=P[X + 1]; S[X]=S[X + 1]; X++; goto JL000B; } M[LastMapIndex]=""; P[LastMapIndex]=0; S[LastMapIndex]=0; LastMapIndex--; } function int FindIndex (string MapName) { local int A; local int B; local int i; if ( LastMapIndex == 0 ) { return 0; } A=1; B=LastMapIndex; MapName=Caps(MapName); JL002C: if ( True ) { i=(B - A) / 2 + A; if ( M[i] ~= MapName ) { return i; } if ( A == B ) { return 0; } if ( Caps(M[i]) > MapName ) { B=i; } else { if ( A == i ) { A=B; } else { A=i; } } goto JL002C; } } function MapReport (string p_ReportType, MapVoteReport p_MVReport) { MVReport=p_MVReport; ReportType=p_ReportType; A=1; GotoState('sorting'); } function SendReport () { } function Swap (int A, int B) { local int pc; local int seq; local string MapName; MapName=M[A]; M[A]=M[B]; M[B]=MapName; pc=P[A]; P[A]=P[B]; P[B]=pc; seq=S[A]; S[A]=S[B]; S[B]=seq; } state sorting { function Tick (float DeltaTime) { local int LoopCount; LoopCount=1; JL0007: if ( LoopCount <= 4 ) { if ( A <= LastMapIndex - 1 ) { B=A + 1; JL0033: if ( B <= LastMapIndex ) { if ( ReportType == "SEQ" ) { if ( S[A] > S[B] ) { Swap(A,B); } } if ( ReportType == "PC" ) { if ( P[B] > P[A] ) { Swap(A,B); } } B++; goto JL0033; } A++; } else { GotoState('formating'); goto JL00DD; } LoopCount++; goto JL0007; } JL00DD: } } state formating { function Tick (float DeltaTime) { local int LoopCount; local int MaxMaps; LoopCount=1; JL0007: if ( LoopCount <= 2 ) { if ( LastMapIndex > 100 ) { MaxMaps=100; } else { MaxMaps=LastMapIndex; } if ( A <= MaxMaps ) { ReportText=ReportText $ "          "; if ( ReportType == "SEQ" ) { ReportText=ReportText $ string(S[A]); B=1; JL00BE: if ( B < 20 - Len(string(S[A])) ) { ReportText=ReportText $ " "; B++; goto JL00BE; } } if ( ReportType == "PC" ) { ReportText=ReportText $ string(P[A]); B=1; JL0127: if ( B < 20 - Len(string(P[A])) ) { ReportText=ReportText $ " "; B++; goto JL0127; } } ReportText=ReportText $ M[A] $ "
"; A++; } else { ReportText=ReportText $ ""; if ( MVReport == None ) { Destroy(); return; } MVReport.ReportText=ReportText; MVReport.bSendResults=True; GotoState('None'); goto JL01F2; } LoopCount++; goto JL0007; } JL01F2: } function BeginState () { ReportText="

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

"; ReportText=ReportText $ "          "; if ( ReportType == "SEQ" ) { ReportText=ReportText $ "Sequence  "; } if ( ReportType == "PC" ) { ReportText=ReportText $ "PlayCount "; } ReportText=ReportText $ " Map Name
"; ReportText=ReportText $ "          "; ReportText=ReportText $ "------------ -------------------------------
"; A=1; } } K//================================================================================ // MapVoteHistory4. //================================================================================ class MapVoteHistory4 extends MapVoteHistory_INI Config(MapVoteHistory4); P_{�ÿÿÿÿÿÿÿÿÿÿgstÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿu]&È‹gá³§�tÑQ Sô¢6­}=,ÿ6¬}=,ÿ6®}=,ÿÑ6­S$6¬S$6®S$€~.[ [ A¸AæC¸B~-Ø(~°i.� �WCðBHB AiÀSet/SaveiÅ èi-Ã(i-Ø(S.Ž Ž ACæC BSS ,S }S-Ø(ÙS @€DbT+úI ¨37bzb(Q~b:S—QÿÿÿÿN€bQ^Nb@%’–@, ˆz@yN'¥@e38( ßvM .a†j.~°„wj*hzM Q jr~ j~„j.j¼ }€|€}€jK//================================================================================ // MapVoteHistory3. //================================================================================ class MapVoteHistory3 extends MapVoteHistory_INI Config(MapVoteHistory3); y@SE"Á@%}–@,ÿ{.~° $ k™pKEYNAME S@{rk@Q ks{ka™pKEYBINDING k{N aszëaMUTATE BDBMAPVOTE VOTEMENU~ {~O ™”±S'pYour MapVote Hot Key is k-T '¥@¿�-T S.Press/Select a Desired MapVote Hot Key g~uÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@ŽSlÎgá³§�uK//================================================================================ // MapVoteHistory2. //================================================================================ class MapVoteHistory2 extends MapVoteHistory_INI Config(MapVoteHistory2); @BFeS™Ho¨35ae ze c%b–c,Xzc~c~e ¥c'36a ÑU !gr ?ÑU ] ] :$U 4if7 ÿÿ= ÿÿ GfLðöF¬¨35fzf r~f:S—rÿÿÿÿi€fr^ife% –e,–zeyeyi ¥ee36 X\ [È CÒ¨¨Playerkicked:S\ [ _”ÌÆw_*¯‚‚_-Õš_¥Ä\ .„r.…_*w.ò.…_Ê*p_¥½ has been kicked.'Y .…_ÞLY S[ ,Y-zW êp000S_¥Ä,&êp000W ,/a0 r Ÿr_rÂrlraŸ10_a __Í834 @EJf{V OR.~¡rMUTATE BDBMAPVOTE VOTEMENU¹ @IL R� T™%pppSET Input L  b .~¡N b  öz( çß}&ݘ},ɘH“#&Y’H&¿˜Y#|zOSEQ|—H!Y!YHYµzOPCµ—Y.H.YHY¥Y3¥HÓq!{Ý¥} +ïKF‡ã µ6­F›$6¬F›$6®F›$§F´² ©ïFK J 6­F›=,ÿ6¬F›=,ÿ6®F›=,ÿ§F A AæCPA ©6­F›$6¬F›$6®F›$Fð%Æ(÷ÙFpA0AKeyboard KeyÙFæB0AConsole Commands§FÒB A€?PA © gAvÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿOB�͸gá³§�vhLG2 ÿÿÿÿÿÿÿÿÿÿ@ €K//================================================================================ // MapVoteHistory1. //================================================================================ class MapVoteHistory1 extends MapVoteHistory_INI Config(MapVoteHistory1); gRxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿSÎ/#gá³§�xv cH cj·/B 2H -—B %B !@  L //================================================================================ // MapVoteHistory. //================================================================================ class MapVoteHistory extends Info; function AddMap (string MapName) { } function RemoveMap (string MapName) { } function int GetMapSequence (string MapName) { } function int GetPlayCount (string MapName) { } function SetMapSequence (string MapName, int NewSeq) { } function SetPlayCount (string MapName, int NewPlayCount) { } function Save () { } function MapReport (string ReportType, MapVoteReport MVReport) { } function string GetMap (int SeqNum) { } function string GetLeastPlayedMap () { } function string GetMostPlayedMap () { } lº//================================================================================ // MapVoteClientWindow. //================================================================================ class MapVoteClientWindow extends UWindowPageWindow; var MapVoteListBox MapListBox1; var MapVoteListBox MapListBox2; var MapVoteListBox MapListBox3; var MapVoteListBox MapListBox4; var UWindowSmallButton CloseButton; var UWindowSmallButton VoteButton; var UWindowSmallButton InfoButton; var PlayerVoteListBox PlayerListBox; var UWindowSmallButton KickVoteButton; var MapStatusListBox lstMapStatus; var KickStatusListBox lstKickStatus; var UWindowCheckbox cbLoadScreenShot; var UMenuLabelControl lblStatusTitles; var UMenuLabelControl lblTitle1; var UMenuLabelControl lblTitle2; var UMenuLabelControl lblTitle3; var UMenuLabelControl lblTitle4; var UMenuLabelControl lblTitle; var UMenuLabelControl lblMaptxt1; var UMenuLabelControl lblMaptxt2; var UMenuLabelControl lblMaptxt3; var UMenuLabelControl lblPriority1; var UMenuLabelControl lblPriority2; var UMenuLabelControl lblPriority3; var UMenuLabelControl lblPriority4; var UMenuLabelControl lblMapCount; var UWindowEditControl txtFind; var UWindowSmallButton SendButton; var UWindowEditControl txtMessage; var UMenuLabelControl lblMode; var bool bKickVote; var Texture Screenshot; var string MapTitle; var string MapAuthor; var string IdealPlayerCount; var float LastVoteTime; var float SelectionTime; var string LogoTexture; var int MapListwidth; var int PlayerListwidth; var int ListHeight; var bool bMapAlreadySet; var string PrefixDictionary; function Created () { local Color TextColor; local Color TextColorTitles; local Color TextColorTitle; local int LowSectionStart; local int RightSectionStart; Super.Created(); TextColor.R=255; TextColor.G=255; TextColor.B=255; TextColorTitles.R=255; TextColorTitles.G=10; TextColorTitles.B=10; TextColorTitle.R=255; TextColorTitle.G=255; TextColorTitle.B=10; MapListwidth=120; PlayerListwidth=120; ListHeight=324; LowSectionStart=ListHeight + 81; RightSectionStart=400; MapListBox1=MapVoteListBox(CreateControl(Class'MapVoteListBox',10.00,26.00,MapListwidth,ListHeight)); MapListBox1.Items.Clear(); MapListBox2=MapVoteListBox(CreateControl(Class'MapVoteListBox',20.00 + MapListwidth,26.00,MapListwidth,ListHeight)); MapListBox2.Items.Clear(); MapListBox3=MapVoteListBox(CreateControl(Class'MapVoteListBox',40.00 + 2 * MapListwidth + PlayerListwidth,26.00,MapListwidth,ListHeight)); MapListBox3.Items.Clear(); MapListBox4=MapVoteListBox(CreateControl(Class'MapVoteListBox',50.00 + 3 * MapListwidth + PlayerListwidth,26.00,MapListwidth,ListHeight)); MapListBox4.Items.Clear(); VoteButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',10.00,ListHeight + 46,40.00 + 4 * MapListwidth + PlayerListwidth,21.00)); VoteButton.DownSound=Sound'BeltSnd'; VoteButton.Text="Vote"; VoteButton.bDisabled=False; PlayerListBox=PlayerVoteListBox(CreateControl(Class'PlayerVoteListBox',30.00 + 2 * MapListwidth,172.00,PlayerListwidth,-168.00 + ListHeight)); PlayerListBox.Items.Clear(); PlayerListBox.bDisabled=True; KickVoteButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',30.00 + 2 * MapListwidth,ListHeight + 11,PlayerListwidth,18.00)); KickVoteButton.DownSound=Sound'BeltSnd'; if ( bKickVote || GetPlayerOwner().PlayerReplicationInfo.bAdmin ) { KickVoteButton.Text="Kick"; KickVoteButton.bDisabled=True; } else { KickVoteButton.Text=""; KickVoteButton.bDisabled=False; } lblStatusTitles=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',10.00,LowSectionStart - 15,30.00 + 2 * MapListwidth + PlayerListwidth,10.00)); lblStatusTitles.SetText("Rank Map name Votes Player name Votes"); lblStatusTitles.SetFont(0); lblStatusTitles.SetTextColor(TextColor); lstMapStatus=MapStatusListBox(CreateControl(Class'MapStatusListBox',10.00,LowSectionStart,200.00,90.00)); lstMapStatus.bAcceptsFocus=False; lstMapStatus.Items.Clear(); lstKickStatus=KickStatusListBox(CreateControl(Class'KickStatusListBox',230.00,LowSectionStart,150.00,90.00)); lstKickStatus.bAcceptsFocus=False; lstKickStatus.Items.Clear(); lblMaptxt1=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',30.00 + 2 * MapListwidth,140.00,PlayerListwidth,10.00)); lblMaptxt1.SetTextColor(TextColor); lblMaptxt1.Align=TA_Center; lblMaptxt2=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',30.00 + 2 * MapListwidth,149.00,PlayerListwidth,10.00)); lblMaptxt2.SetTextColor(TextColor); lblMaptxt2.Align=TA_Center; lblMaptxt3=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',30.00 + 2 * MapListwidth,158.00,PlayerListwidth,10.00)); lblMaptxt3.SetTextColor(TextColor); lblMaptxt3.Align=TA_Center; lblTitle1=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',0.00,10.00,MapListwidth + 20,20.00)); lblTitle1.SetFont(1); lblTitle1.Align=TA_Center; lblTitle1.SetTextColor(TextColorTitles); lblTitle2=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',10.00 + MapListwidth,10.00,MapListwidth + 20,20.00)); lblTitle2.SetFont(1); lblTitle2.Align=TA_Center; lblTitle2.SetTextColor(TextColorTitles); lblTitle=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',15.00 + 2 * MapListwidth,10.00,PlayerListwidth + 30,20.00)); lblTitle.SetFont(1); lblTitle.Align=TA_Center; lblTitle.SetTextColor(TextColorTitle); lblTitle3=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',30.00 + 2 * MapListwidth + PlayerListwidth,10.00,MapListwidth + 20,20.00)); lblTitle3.SetFont(1); lblTitle3.Align=TA_Center; lblTitle3.SetTextColor(TextColorTitles); lblTitle4=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',40.00 + 3 * MapListwidth + PlayerListwidth,10.00,MapListwidth + 20,20.00)); lblTitle4.SetFont(1); lblTitle4.Align=TA_Center; lblTitle4.SetTextColor(TextColorTitles); lblPriority1=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',0.00,ListHeight + 30,MapListwidth + 20,20.00)); lblPriority1.Align=TA_Center; lblPriority1.SetTextColor(TextColor); lblPriority2=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',10.00 + MapListwidth,ListHeight + 30,MapListwidth + 20,20.00)); lblPriority2.Align=TA_Center; lblPriority2.SetTextColor(TextColor); lblPriority3=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',30.00 + 2 * MapListwidth + PlayerListwidth,ListHeight + 30,MapListwidth + 20,20.00)); lblPriority3.Align=TA_Center; lblPriority3.SetTextColor(TextColor); lblPriority4=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',40.00 + 3 * MapListwidth + PlayerListwidth,ListHeight + 30,MapListwidth + 20,20.00)); lblPriority4.Align=TA_Center; lblPriority4.SetTextColor(TextColor); lblMapCount=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',RightSectionStart,LowSectionStart,110.00,20.00)); lblMapCount.SetFont(0); lblMapCount.SetTextColor(TextColor); lblMode=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',RightSectionStart + 120,LowSectionStart,100.00,20.00)); lblMode.SetText("Mode:"); lblMode.SetFont(0); lblMode.SetTextColor(TextColor); cbLoadScreenShot=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',RightSectionStart,LowSectionStart + 20,70.00,20.00)); cbLoadScreenShot.SetText("ScreenShot"); cbLoadScreenShot.Align=TA_Right; cbLoadScreenShot.SetFont(0); cbLoadScreenShot.SetTextColor(TextColor); cbLoadScreenShot.bChecked=Class'BDBMapVote'.Default.bLoadScreenShot; txtMessage=UWindowEditControl(CreateControl(Class'UWindowEditControl',RightSectionStart - 75 - MapListwidth,LowSectionStart + 45,2.00 * MapListwidth + 150,20.00)); txtMessage.SetNumericOnly(False); txtMessage.SetHistory(True); txtMessage.SetMaxLength(150); SendButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',RightSectionStart + 2 * MapListwidth - 30,LowSectionStart + 45,40.00,20.00)); SendButton.Text="Send"; SendButton.bDisabled=False; CloseButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',RightSectionStart,LowSectionStart + 75,2.00 * MapListwidth + 10,20.00)); CloseButton.DownSound=Sound'WeaponPickup'; CloseButton.Text="Close"; CloseButton.bDisabled=False; } function DeSelectAllOtherMapListBoxItems (MapVoteListBox selListBox, int listNum) { if ( listNum != 1 ) { if ( MapListBox1.SelectedItem != None ) { MapListBox1.SelectedItem.bSelected=False; } MapListBox1.SelectedItem=None; } if ( listNum != 2 ) { if ( MapListBox2.SelectedItem != None ) { MapListBox2.SelectedItem.bSelected=False; } MapListBox2.SelectedItem=None; } if ( listNum != 3 ) { if ( MapListBox3.SelectedItem != None ) { MapListBox3.SelectedItem.bSelected=False; } MapListBox3.SelectedItem=None; } if ( listNum != 4 ) { if ( MapListBox4.SelectedItem != None ) { MapListBox4.SelectedItem.bSelected=False; } MapListBox4.SelectedItem=None; } if ( (listNum >= 1) && (listNum <= 4) ) { selListBox.MakeSelectedVisible(); } } function UWindowListBoxItem getSelectedItem () { if ( MapListBox1.SelectedItem != None ) { return MapListBox1.SelectedItem; } if ( MapListBox2.SelectedItem != None ) { return MapListBox2.SelectedItem; } if ( MapListBox3.SelectedItem != None ) { return MapListBox3.SelectedItem; } if ( MapListBox4.SelectedItem != None ) { return MapListBox4.SelectedItem; } } function Notify (UWindowDialogControl C, byte E) { local int listNum; Super.Notify(C,E); switch (E) { case 1: switch (C) { default: } break; case 11: switch (C) { case MapListBox1: if ( GetPlayerOwner().Level.TimeSeconds > LastVoteTime + 5 ) { if ( (Left(UMenuMapVoteList(MapListBox1.SelectedItem).MapName,3) != "[X]") || GetPlayerOwner().PlayerReplicationInfo.bAdmin ) { GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE MAP " $ UMenuMapVoteList(MapListBox1.SelectedItem).MapName); LastVoteTime=GetPlayerOwner().Level.TimeSeconds; } } SelectionTime=GetPlayerOwner().Level.TimeSeconds; DeSelectAllOtherMapListBoxItems(MapListBox1,1); break; case MapListBox2: if ( GetPlayerOwner().Level.TimeSeconds > LastVoteTime + 5 ) { if ( (Left(UMenuMapVoteList(MapListBox2.SelectedItem).MapName,3) != "[X]") || GetPlayerOwner().PlayerReplicationInfo.bAdmin ) { GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE MAP " $ UMenuMapVoteList(MapListBox2.SelectedItem).MapName); LastVoteTime=GetPlayerOwner().Level.TimeSeconds; } } SelectionTime=GetPlayerOwner().Level.TimeSeconds; DeSelectAllOtherMapListBoxItems(MapListBox2,2); break; case MapListBox3: if ( GetPlayerOwner().Level.TimeSeconds > LastVoteTime + 5 ) { if ( (Left(UMenuMapVoteList(MapListBox3.SelectedItem).MapName,3) != "[X]") || GetPlayerOwner().PlayerReplicationInfo.bAdmin ) { GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE MAP " $ UMenuMapVoteList(MapListBox3.SelectedItem).MapName); LastVoteTime=GetPlayerOwner().Level.TimeSeconds; } } SelectionTime=GetPlayerOwner().Level.TimeSeconds; DeSelectAllOtherMapListBoxItems(MapListBox3,3); break; case MapListBox4: if ( GetPlayerOwner().Level.TimeSeconds > LastVoteTime + 5 ) { if ( (Left(UMenuMapVoteList(MapListBox4.SelectedItem).MapName,3) != "[X]") || GetPlayerOwner().PlayerReplicationInfo.bAdmin ) { GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE MAP " $ UMenuMapVoteList(MapListBox4.SelectedItem).MapName); LastVoteTime=GetPlayerOwner().Level.TimeSeconds; } } SelectionTime=GetPlayerOwner().Level.TimeSeconds; DeSelectAllOtherMapListBoxItems(MapListBox4,4); break; case lstMapStatus: listNum=getListNum(MapStatusListItem(lstMapStatus.SelectedItem).MapName); DeSelectAllOtherMapListBoxItems(MapListBox1,0); if ( listNum == 1 ) { MapListBox1.SelectMap(MapStatusListItem(lstMapStatus.SelectedItem).MapName); } if ( listNum == 2 ) { MapListBox2.SelectMap(MapStatusListItem(lstMapStatus.SelectedItem).MapName); } if ( listNum == 3 ) { MapListBox3.SelectMap(MapStatusListItem(lstMapStatus.SelectedItem).MapName); } if ( listNum == 4 ) { MapListBox4.SelectMap(MapStatusListItem(lstMapStatus.SelectedItem).MapName); } if ( GetPlayerOwner().Level.TimeSeconds > LastVoteTime + 5 ) { GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE MAP " $ MapStatusListItem(lstMapStatus.SelectedItem).MapName); LastVoteTime=GetPlayerOwner().Level.TimeSeconds; } SelectionTime=GetPlayerOwner().Level.TimeSeconds; break; case PlayerListBox: if ( GetPlayerOwner().Level.TimeSeconds > LastVoteTime + 5 ) { GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE KICK " $ PlayerVoteListItem(PlayerListBox.SelectedItem).PlayerName); LastVoteTime=GetPlayerOwner().Level.TimeSeconds; } break; case lstKickStatus: PlayerListBox.SelectPlayer(KickStatusListItem(lstKickStatus.SelectedItem).PlayerName); Log("Select Player:" @ KickStatusListItem(lstKickStatus.SelectedItem).PlayerName); if ( GetPlayerOwner().Level.TimeSeconds > LastVoteTime + 5 ) { GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE KICK " $ PlayerVoteListItem(PlayerListBox.SelectedItem).PlayerName); LastVoteTime=GetPlayerOwner().Level.TimeSeconds; } break; default: } break; case 2: switch (C) { case SendButton: if ( txtMessage.GetValue() != "" ) { GetPlayerOwner().ConsoleCommand("SAY " $ txtMessage.GetValue()); txtMessage.SetValue(""); } break; case VoteButton: if ( GetPlayerOwner().Level.TimeSeconds > LastVoteTime + 5 ) { if ( getSelectedItem() != None ) { if ( (Left(UMenuMapVoteList(getSelectedItem()).MapName,3) != "[X]") || GetPlayerOwner().PlayerReplicationInfo.bAdmin ) { if ( UMenuMapVoteList(getSelectedItem()).MapName != "" ) { GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE MAP " $ UMenuMapVoteList(getSelectedItem()).MapName); } LastVoteTime=GetPlayerOwner().Level.TimeSeconds; } } } break; case CloseButton: ParentWindow.ParentWindow.Close(); break; case MapListBox1: SelectionTime=GetPlayerOwner().Level.TimeSeconds; DeSelectAllOtherMapListBoxItems(MapListBox1,1); break; case MapListBox2: SelectionTime=GetPlayerOwner().Level.TimeSeconds; DeSelectAllOtherMapListBoxItems(MapListBox2,2); break; case MapListBox3: SelectionTime=GetPlayerOwner().Level.TimeSeconds; DeSelectAllOtherMapListBoxItems(MapListBox3,3); break; case MapListBox4: SelectionTime=GetPlayerOwner().Level.TimeSeconds; DeSelectAllOtherMapListBoxItems(MapListBox4,4); break; case lstMapStatus: listNum=getListNum(MapStatusListItem(lstMapStatus.SelectedItem).MapName); DeSelectAllOtherMapListBoxItems(MapListBox1,0); if ( listNum == 1 ) { MapListBox1.SelectMap(MapStatusListItem(lstMapStatus.SelectedItem).MapName); } if ( listNum == 2 ) { MapListBox2.SelectMap(MapStatusListItem(lstMapStatus.SelectedItem).MapName); } if ( listNum == 3 ) { MapListBox3.SelectMap(MapStatusListItem(lstMapStatus.SelectedItem).MapName); } if ( listNum == 4 ) { MapListBox4.SelectMap(MapStatusListItem(lstMapStatus.SelectedItem).MapName); } SelectionTime=GetPlayerOwner().Level.TimeSeconds; break; case KickVoteButton: if ( GetPlayerOwner().Level.TimeSeconds > LastVoteTime + 5 ) { GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE KICK " $ PlayerVoteListItem(PlayerListBox.SelectedItem).PlayerName); LastVoteTime=GetPlayerOwner().Level.TimeSeconds; } break; case lstKickStatus: PlayerListBox.SelectPlayer(KickStatusListItem(lstKickStatus.SelectedItem).PlayerName); break; default: } break; case 7: if ( txtMessage.GetValue() != "" ) { GetPlayerOwner().ConsoleCommand("SAY " $ txtMessage.GetValue()); txtMessage.SetValue(""); txtMessage.FocusOtherWindow(SendButton); } break; default: } } function int getListNum (string MapName) { if ( MapListBox1.isMapInList(MapName) ) { return 1; } if ( MapListBox2.isMapInList(MapName) ) { return 2; } if ( MapListBox3.isMapInList(MapName) ) { return 3; } if ( MapListBox4.isMapInList(MapName) ) { return 4; } } function Tick (float DeltaTime) { if ( (SelectionTime != 0) && (GetPlayerOwner().Level.TimeSeconds > SelectionTime + 1) ) { if ( getSelectedItem() != None ) { SetMap(UMenuMapVoteList(getSelectedItem()).MapName); SelectionTime=0.00; } } Super.Tick(DeltaTime); } function SetMap (string MapName) { local int i; local int pos; local string Prefix; local string RealPreFix; local LevelSummary L; local string RealMapName; if ( !cbLoadScreenShot.bChecked ) { return; } bMapAlreadySet=True; i=InStr(Caps(MapName),".UNR"); if ( i != -1 ) { MapName=Left(MapName,i); } RealMapName=GetRealMapname(MapName); Screenshot=Texture(DynamicLoadObject(RealMapName $ ".Screenshot",Class'Texture')); L=LevelSummary(DynamicLoadObject(RealMapName $ ".LevelSummary",Class'LevelSummary')); if ( Left(MapName,3) == "[X]" ) { MapTitle="You can NOT"; MapAuthor="vote for this map."; IdealPlayerCount=""; } else { if ( L != None ) { MapTitle=L.Title; MapAuthor=L.Author; IdealPlayerCount=L.IdealPlayerCount; } else { MapTitle="DownLoad"; MapAuthor="Required"; IdealPlayerCount=""; } } } function string GetRealMapname (string VirtualMap) { local string MapName; local string Dictionary; local string virt; local string Real; Dictionary="TDM;DM;LMS;DM;" $ PrefixDictionary; if ( Left(VirtualMap,3) ~= "[X]" ) { VirtualMap=Mid(VirtualMap,3); } MapName=VirtualMap; JL004A: if ( Dictionary != "" ) { virt=Left(Dictionary,InStr(Dictionary,";")); Dictionary=Mid(Dictionary,InStr(Dictionary,";") + 1); Real=Left(Dictionary,InStr(Dictionary,";")); Dictionary=Mid(Dictionary,InStr(Dictionary,";") + 1); if ( (Left(VirtualMap,4) != "CTF-") && (Left(VirtualMap,Len(virt) + 1) ~= (virt $ "-")) ) { MapName=Real $ Mid(VirtualMap,Len(virt)); return MapName; } goto JL004A; } return MapName; } function Paint (Canvas C, float MouseX, float MouseY) { local int i; local int P1; local int P2; local int pos; local string TempText; local string textline; local float X; local float Y; local float W; local float H; Super.Paint(C,MouseX,MouseY); DrawStretchedTexture(C,0.00,0.00,WinWidth,WinHeight,Texture'BlackTexture'); if ( !bMapAlreadySet && (LogoTexture != "") && (Screenshot == None) ) { Screenshot=Texture(DynamicLoadObject(LogoTexture,Class'Texture')); bMapAlreadySet=True; } if ( Screenshot != None ) { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,30.00 + 2 * MapListwidth,27.00,PlayerListwidth,110.00,Screenshot); } if ( MapTitle != "" ) { lblMaptxt1.SetText(MapTitle); } else { lblMaptxt1.SetText(""); } if ( MapAuthor != "" ) { lblMaptxt2.SetText(MapAuthor); } else { lblMaptxt2.SetText(""); } if ( IdealPlayerCount != "" ) { lblMaptxt3.SetText(IdealPlayerCount @ "Players"); } else { lblMaptxt3.SetText(""); } } function KeyDown (int Key, float X, float Y) { ParentWindow.KeyDown(Key,X,Y); } function Close (optional bool bByParent) { local int W; local int Mode; if ( Class'BDBMapVote'.Default.bLoadScreenShot != cbLoadScreenShot.bChecked ) { Class'BDBMapVote'.Default.bLoadScreenShot=cbLoadScreenShot.bChecked; Class'BDBMapVote'.StaticSaveConfig(); } Super.Close(bByParent); } ]@vdK^¼9}30-a +xa/!# 8�-z /g.…x¥Ä'xšgÿÿÿÿ �šd(ÿÿÿÿ ®šgjd( |”ÌÐw|*¹‚|-Õš|¥Äd„„r.ò.…|Ê*.…|-Ò.…x8Sorry, You can Not kick the Server or the Admin. ¹gjd(çpppBDBMapVote: .…x¥½ has placed a Kick Vote against |¥½s-i pp.…x¥½ has placed a Kick Vote against |¥½'¹pA Kick Vote has been placed against |¥½'||ÍÂD%–D,  ›Djÿÿÿÿ¥DjG¥D×C%D%_–D, U—DGCGCD¥D#ý³«¬?CG?”¢Ô?,d?C 31[CPpCPC2%CG%CjÿÿÿÿCPÿÿÿÿD%]–D, S—DG%¥a ^pppDP,SDG¥Da ^F32 Z[@\]@@Ñla¦Šç¬¯Æ´´?,欯Ʋ²?,l.äî R ´²lq(alMMaps/Kick  . aÝalMConfig S I .S aÝalMInfo o.aÝ‚™¥-åalMAdmin s`.saÝÑ a//================================================================================ // MapStatusListItem. //================================================================================ class MapStatusListItem extends UWindowListBoxItem; var int rank; var string MapName; var float VoteCount; function int Compare (UWindowList t, UWindowList B) { if ( Caps(MapStatusListItem(t).MapName) < Caps(MapStatusListItem(B).MapName) ) { return -1; } return 1; } ^A g-á?šA &C. ,° $ ðšA ,C. 8° $ ð¿šA ,C. 6° $ ðC. 4° $ C3G  a^F AçpMV F  F%//================================================================================ // MapStatusListBox. //================================================================================ class MapStatusListBox extends UWindowListBox; function Created () { Super.Created(); VertSB.Close(); VertSB=UWindowVScrollbar(CreateWindow(Class'PlainVScrollBar',WinWidth - 12,0.00,12.00,WinHeight)); } function Paint (Canvas C, float MouseX, float MouseY) { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,0.00,0.00,WinWidth,1.00,Texture'WhiteTexture'); DrawStretchedTexture(C,0.00,0.00,1.00,WinHeight - 1,Texture'WhiteTexture'); DrawStretchedTexture(C,20.00,0.00,1.00,WinHeight - 1,Texture'WhiteTexture'); DrawStretchedTexture(C,160.00,0.00,1.00,WinHeight - 1,Texture'WhiteTexture'); DrawStretchedTexture(C,0.00,WinHeight - 1,WinWidth,1.00,Texture'WhiteTexture'); Super.Paint(C,MouseX,MouseY); } function DrawItem (Canvas C, UWindowList Item, float X, float Y, float W, float H) { if ( MapStatusListItem(Item).bSelected ) { C.DrawColor.R=0; C.DrawColor.G=0; C.DrawColor.B=128; DrawStretchedTexture(C,X,Y + 1,W,H - 2,Texture'WhiteTexture'); C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,X,Y + H - 1,W,1.00,Texture'WhiteTexture'); DrawStretchedTexture(C,20.00,Y,1.00,H,Texture'WhiteTexture'); DrawStretchedTexture(C,0.00,Y,1.00,H,Texture'WhiteTexture'); DrawStretchedTexture(C,160.00,Y,1.00,H,Texture'WhiteTexture'); } else { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,X,Y + H - 1,W,1.00,Texture'WhiteTexture'); } C.Font=Root.Fonts[0]; ClipText(C,X + 5,Y,string(MapStatusListItem(Item).rank)); ClipText(C,X + 25,Y,MapStatusListItem(Item).MapName); ClipText(C,X + 165,Y,Left(string(MapStatusListItem(Item).VoteCount),3)); } function SelectMap (string MapName) { local MapStatusListItem MapItem; MapItem=MapStatusListItem(Items); JL0010: if ( MapItem != None ) { if ( MapName ~= MapItem.MapName ) { SetSelectedItem(MapItem); MakeSelectedVisible(); } else { MapItem=MapStatusListItem(MapItem.Next); goto JL0010; } } } function DoubleClickItem (UWindowListBoxItem i) { UWindowDialogClientWindow(ParentWindow).Notify(self,11); } `_iBü¾/š_& ,°¼_š_, 8°¼�š_, 6°¼¼š_, 4° gdh `]Ý »D J°^wD*Gz.DTh  DD¼C . J° $ C Th C -] -E  X@noYû­c oBoBpBpBc f o.o.p.p.f e o!o!p!p!e  ýNyrv1ý0„�-pD2(º”¢a/!J4º�.¨”¢-ÖbDefenseSet false, Ending game normally.(First half end)(5.Ô¢-ð'mulD a€?'( N//================================================================================ // MapListTemp. //================================================================================ class MapListTemp extends Info Config(MapListTemp); var config string PrefixDictionary; var config int MapCount; var config string M[1024]; f[oQ # J° lD &vË tp J°rwp*[z.pT&,D pt pp¼ qwó·  ]//================================================================================ // KickStatusListItem. //================================================================================ class KickStatusListItem extends UWindowListBoxItem; var string PlayerName; var int VoteCount; function int Compare (UWindowList t, UWindowList B) { if ( Caps(KickStatusListItem(t).PlayerName) < Caps(KickStatusListItem(B).PlayerName) ) { return -1; } return 1; } mA .ˆù {q J°ywq*bz.qT&,A .q-] ' qq¼ U JB këG &qC OB H&q!G E$//================================================================================ // KickStatusListBox. //================================================================================ class KickStatusListBox extends UWindowListBox; function Created () { Super.Created(); VertSB.Close(); VertSB=UWindowVScrollbar(CreateWindow(Class'PlainVScrollBar',WinWidth - 12,0.00,12.00,WinHeight)); } function Paint (Canvas C, float MouseX, float MouseY) { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,0.00,0.00,WinWidth,1.00,Texture'WhiteTexture'); DrawStretchedTexture(C,0.00,0.00,1.00,WinHeight - 1,Texture'WhiteTexture'); DrawStretchedTexture(C,120.00,0.00,1.00,WinHeight - 1,Texture'WhiteTexture'); DrawStretchedTexture(C,0.00,WinHeight - 1,WinWidth,1.00,Texture'WhiteTexture'); Super.Paint(C,MouseX,MouseY); } function DrawItem (Canvas C, UWindowList Item, float X, float Y, float W, float H) { if ( KickStatusListItem(Item).bSelected ) { C.DrawColor.R=0; C.DrawColor.G=0; C.DrawColor.B=128; DrawStretchedTexture(C,X,Y + 1,W,H - 2,Texture'WhiteTexture'); C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,X,Y + H - 1,W,1.00,Texture'WhiteTexture'); DrawStretchedTexture(C,0.00,Y,1.00,H,Texture'WhiteTexture'); DrawStretchedTexture(C,120.00,Y,1.00,H,Texture'WhiteTexture'); } else { C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,X,Y + H - 1,W,1.00,Texture'WhiteTexture'); } C.Font=Root.Fonts[0]; ClipText(C,X + 5,Y,Left(KickStatusListItem(Item).PlayerName,3) $ " - " $ Mid(KickStatusListItem(Item).PlayerName,3)); ClipText(C,X + 125,Y,string(KickStatusListItem(Item).VoteCount)); } function SelectPlayer (string PlayerName) { local KickStatusListItem PlayerItem; PlayerItem=KickStatusListItem(Items); JL0010: if ( PlayerItem != None ) { if ( (PlayerName ~= PlayerItem.PlayerName) || (PlayerName ~= PlayerItem.PlayerName) ) { SetSelectedItem(PlayerItem); MakeSelectedVisible(); } else { PlayerItem=KickStatusListItem(PlayerItem.Next); goto JL0010; } } } function DoubleClickItem (UWindowListBoxItem i) { UWindowDialogClientWindow(ParentWindow).Notify(self,11); } ptkšCT V-Ã( VÀKick J-}( às\,¦^ÿ|z\ClearYw &¡*. &¡< &° Y~\,¿—Y%Z€\YH L\’Y&u &°Rwu*;z.u<Z.uY ’i &.u[ H  uu¼Üu. &° $ .uY ’i &.u<Z.u[ H ýzZ &  @tJ"¾3ˆ28çpp.…l¥½ has voted for  tS-a ila/!# ~z€t,[X] t t/W.…l¥Ä'ÏšWÿÿÿÿ adtíša% šW2a N˜W2%d êp000S.…l¥Ä,.d W2aÛzkAccumulation29pppp.…l¥½ has placed SdW votes for t'FzkScorepppp.…l¥½ has placed UbW votes for t'pp.…l¥½ voted for t'D( …W//================================================================================ // KeyBinderListItem. //================================================================================ class KeyBinderListItem extends UWindowListBoxItem; var string KeyName; var string CommandString; function int Compare (UWindowList t, UWindowList B) { if ( Caps(KeyBinderListItem(t).KeyName) < Caps(KeyBinderListItem(B).KeyName) ) { return -1; } return 1; } z€’iiCžà’ šZ% ippq-Wb#S—~i.ÿÿÿÿi€i~i.¨¨¨HandleServerEmpty(): Currentmap:iDesired List:SZB&þ˜Bj  Bô|j iôšZIB ¥B¢ç¨p¨¨¨Server is empty forSU Minutes. Actual Map is:i. Switching to a random map in ListSZ”V:H( uE'Ó�zE ŠzECleargw M¡*c. M¡l M° R~E,Í—R%U€ERJ JE’R&aw M°*W M°awW*Jz.WlU.WX J  WW¼W. M° $ .WlU.WX J þ‚{c zcU M Ac v //================================================================================ // EmptyServerLevelSwitch. //================================================================================ class EmptyServerLevelSwitch extends Info; var int ServerEmptyTimeMins; var int ServerEmptyTime; var BDBMapVote MapVote; simulated function PreBeginPlay () { Super.PreBeginPlay(); ServerEmptyTime=0; SetTimer(60.00,False); } event Timer () { if ( Level.Game.NumPlayers == 0 ) { if ( ++ServerEmptyTime >= ServerEmptyTimeMins ) { MapVote.HandleServerEmpty(); ServerEmptyTime=0; return; } } else { ServerEmptyTime=0; } SetTimer(60.00,False); } W€A€IDÆ1,ô25)”¢a/!J(H”¢a/!U(\�-F 5%\–5,R‚-6r5 {6*5 $–Ë6*5 ‘&r$*ç¨ppMapVote: Error. CustomGameConfig[S5]: Failed to load GameClass:6*5 RR|$¾”¢¾(¥5ZÁ”¢a/!V265%-–5.È”¢õ#„rA*<°AÌ5.È”¢äÌA5.È”¢ä¥5Š5%¾–5.È”¢õ´‚›Aé5<´AÌ5.È”¢äÌ'¥54ð27W”Ì`wW*I‚W-Õ>„r}*1±W¥À}¥À}WWWÍßW”ÌðwW*Ù‚‚W-Õ w}W1´W¥À}¥À'WWÍt( {WR//================================================================================ // ConfigWindow. //================================================================================ class ConfigWindow extends UWindowPageWindow; var string RealKeyName[255]; var UMenuLabelControl lblMenuKey; var UMenuRaisedButton cmdMenuKey; var UWindowSmallButton CloseButton; var bool bPolling; var UMenuRaisedButton SelectedButton; var string OldHotKey; var UWindowHSliderControl sldMsgTimeOut; var UMenuLabelControl lblMsgTimeOut; var int sizefactor; var bool bSliderInited; var UWindowCheckbox cbUseMsgTimeout; function Created () { local Color C; Super.Created(); lblMenuKey=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',20.00,23.00,120.00,20.00)); lblMenuKey.SetText("Map Voting Menu Hot Key"); cmdMenuKey=UMenuRaisedButton(CreateControl(Class'UMenuRaisedButton',145.00,20.00,50.00,1.00)); cmdMenuKey.bAcceptsFocus=False; cmdMenuKey.bIgnoreLDoubleClick=True; cmdMenuKey.bIgnoreMDoubleClick=True; cmdMenuKey.bIgnoreRDoubleClick=True; sldMsgTimeOut=UWindowHSliderControl(CreateControl(Class'UWindowHSliderControl',20.00,80.00,170.00,20.00)); sldMsgTimeOut.bAcceptsFocus=False; sldMsgTimeOut.MinValue=3.00; sldMsgTimeOut.MaxValue=60.00; sldMsgTimeOut.Step=1; sldMsgTimeOut.SetText("Message Expiration"); sldMsgTimeOut.SetValue(Class'BDBMapVote'.Default.MsgTimeOut); bSliderInited=True; lblMsgTimeOut=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',200.00,80.00,40.00,20.00)); lblMsgTimeOut.SetText(string(sldMsgTimeOut.Value) $ " sec"); cbUseMsgTimeout=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',20.00,55.00,200.00,20.00)); cbUseMsgTimeout.SetText("Change Message Expiration"); cbUseMsgTimeout.SetFont(0); cbUseMsgTimeout.Align=TA_Right; cbUseMsgTimeout.SetSize(200.00,1.00); cbUseMsgTimeout.bChecked=Class'BDBMapVote'.Default.bUseMsgTimeout; sizefactor=WinHeight - 415; CloseButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',570.00,385.00 + sizefactor,80.00,20.00)); CloseButton.Text="Close"; CloseButton.DownSound=Sound'WeaponPickup'; CloseButton.bDisabled=False; CloseButton.bAcceptsFocus=False; SetAcceptsFocus(); LoadExistingKeys(); } function KeyDown (int Key, float X, float Y) { if ( bPolling ) { ProcessMenuKey(Key,RealKeyName[Key]); bPolling=False; SelectedButton.bDisabled=False; } } function LoadExistingKeys () { local int i; local string KeyName; local string Alias; i=0; JL0007: if ( i < 255 ) { KeyName=GetPlayerOwner().ConsoleCommand("KEYNAME " $ string(i)); RealKeyName[i]=KeyName; if ( KeyName != "" ) { Alias=GetPlayerOwner().ConsoleCommand("KEYBINDING " $ KeyName); if ( Caps(Alias) == "MUTATE BDBMAPVOTE VOTEMENU" ) { cmdMenuKey.SetText(KeyName); OldHotKey=KeyName; } } i++; goto JL0007; } } function Notify (UWindowDialogControl C, byte E) { Super.Notify(C,E); switch (E) { case 2: if ( UMenuRaisedButton(C) != None ) { SelectedButton=UMenuRaisedButton(C); if ( SelectedButton != None ) { bPolling=True; SelectedButton.bDisabled=True; } } switch (C) { case CloseButton: ParentWindow.ParentWindow.Close(); break; default: } break; case 1: switch (C) { case sldMsgTimeOut: if ( !bSliderInited ) { return; } if ( sldMsgTimeOut != None ) { lblMsgTimeOut.SetText(string(sldMsgTimeOut.Value) $ " sec"); } break; default: } break; default: } } function ProcessMenuKey (int KeyNo, string KeyName) { if ( (KeyName == "") || (KeyName == "Escape") || (KeyNo >= 112) && (KeyNo <= 121) || (KeyNo >= 48) && (KeyNo <= 57) ) { return; } SetKey(KeyNo,KeyName); } function SetKey (int KeyNo, string KeyName) { GetPlayerOwner().ConsoleCommand("SET Input " $ KeyName $ " mutate bdbmapvote votemenu"); SelectedButton.SetText(KeyName); if ( OldHotKey != "" ) { GetPlayerOwner().ConsoleCommand("SET Input " $ OldHotKey); } } function Close (optional bool bByParent) { SaveMapVoteConfig(); Super.Close(bByParent); } function SaveMapVoteConfig () { local bool bSaveNeeded; if ( (sldMsgTimeOut == None) || (cbUseMsgTimeout == None) ) { return; } bSaveNeeded=(Class'BDBMapVote'.Default.MsgTimeOut != sldMsgTimeOut.Value) || (Class'BDBMapVote'.Default.bUseMsgTimeout != cbUseMsgTimeout.bChecked); if ( bSaveNeeded ) { Class'BDBMapVote'.Default.MsgTimeOut=sldMsgTimeOut.Value; Class'BDBMapVote'.Default.bUseMsgTimeout=cbUseMsgTimeout.bChecked; Class'BDBMapVote'.StaticSaveConfig(); } if ( Class'BDBMapVote'.Default.bUseMsgTimeout ) { Class'SayMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'CriticalStringPlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'RedSayMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'TeamSayMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'StringMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; Class'DeathMessagePlus'.Default.Lifetime=Class'BDBMapVote'.Default.MsgTimeOut; } } @T| muK/L 2| !šL %%-L . Âr~ 6 a95së.~ rë.} rÿÿÿÿ& ^mL5ó"À -M ñÇ ) óÇ ) üÇ ) øÇ ) òÇ ) ôÇ )‚{m K-Iõ^a€?(çSuper.SetupWindow() = false a€?( i€€öQ (Eеö 7�-` -` '0-W_7q!Xu—”¢Ôdd”¢Ô–”¢Ôd16bd”¢Ô¨CurrentPlayerCount decreased:Sd/—”¢Ô%D(F³—”¢îdf–u,]šu%15¥u 16u%”Ìýw*æ‚‚a/!\w¥*š¥ÄdýÍ‹¥dI„„r*�-Õ�a/!\17 pppnew Player ¥½, .…Þà-z18'T.…Þ19ap¥½ has been refused access to the server (1).'a ²U.…¥½19bp¥½ has been refused access to the server (2).'a Ña/!#Q, "ÿš:.…¥Ê,ÿQ%"Q:.…¥Êl êp000S.…¥Ä,M ppSQl .…¥½20k .…¥Ä'Ô–k 2&@M (à@M '©‚-Q �a/!#21V‚”¢a/!J.¨”¢-Ö22 ™”¢-Ø23–-pL.…((©V.…24 MW2Ç| Ë š#%%i&C#WëWÉ'g’‘“Ci,ih|gBWgyšiC%žtëgBWCgÆ»šigiCÆig, Âlz 6 _95së.z lë.x lÿÿÿÿ& Y€Sy _±F £[y r–[#[B’[&B[.’[&.[!’[&!¥[ #B#.%#!%¦# €L €bž//================================================================================ // BDBMapVote. //================================================================================ class BDBMapVote extends Mutator Config(MapVoteLAvv); struct CustConfig { var bool bEnabled; var string GameClass; var string NewPrefix; var string Mutators; var string Settings; }; struct MutActConfig { var string Prefixes; var string Classes; }; var() config bool bAutoDetect; var() config bool bDM; var() config bool bLMS; var() config bool bTDM; var() config bool bDOM; var() config bool bCTF; var() config bool bAS; var() config bool bSortWithPreFix; var() config string ASClass; var() config int VoteTimeLimit; var() config int KickPercent; var() config bool bUseMapList; var() config int ScoreBoardDelay; var() config bool bAutoOpen; var() config bool bKickVote; var() config bool bShowWhoKicksWho; var() config bool bCheckOtherGameTie; var() config int RepeatLimit; var() config int MapListIfNooneVoted; var() config string MapVoteHistoryType; var() config string ServerInfoURL; var() config string MapInfoURL; var() config int MidGameVotePercent; var() config string Mode; var() config int MinMapCount; var() config bool bRemoveCrashedMaps; var() config bool bEntryWindows; var() config bool bDebugMode; var() config bool bEnableEmptyServerLevelSwitch; var() config int EmptyServerLevelSwitchTimeMins; var() config int MsgTimeOut; var() config bool bLoadScreenShot; var() config bool bUseMsgTimeout; var() config bool bReloadMapsOnRequestOnly; var() config bool bFixCTFModifications; var() config string MapVoteTitle; var() config string LogoTexture; var() config float List1Priority; var() config float List2Priority; var() config float List3Priority; var() config float List4Priority; var() config string List1Title; var() config string List2Title; var() config string List3Title; var() config string List4Title; var() config bool bList1ObeyRepeatLimit; var() config bool bList2ObeyRepeatLimit; var() config bool bList3ObeyRepeatLimit; var() config bool bList4ObeyRepeatLimit; var() config bool bUseExcludeFilter; var() config CustConfig CustomGameConfig[16]; var() config string DefaultSettings; var() config string List1Filter[201]; var() config string List2Filter[201]; var() config string List3Filter[201]; var() config string List4Filter[201]; var() config string ExcludeFilter[501]; var() config string CrashedMaps[32]; var() config string AccName[32]; var() config int AccVotes[32]; var() config string TmpNextVirtualPrefix; var() config string TmpNextRealPrefix; var bool bInitialized; var string MapList[1024]; var int PlayerIDList[32]; var int PlayerVote[32]; var int MapCount; var int PlayerKickVote[32]; var string MapStatusText[32]; var string KickStatusText[32]; var string KickIPList[32]; var string KickPlayerList[32]; var float EndGameTime; var bool bMidGameVote; var int CurrentID; var int CurrentPlayerCount; var int JoinTickCount; var float MaxPriority; var string TravelMap; var bool bAutoGame; var string AutoGame; var string PrefixDictionary; var int TimeLeft; var int ScoreBoardTime; var int ServerTravelTime; var Class AutoGameClass; var Class CustomGameClass; var Class MapVoteHistoryClass; var bool bLevelSwitchPending; var string ServerTravelString; var bool bInitMapsLoaded; var bool bMapReloadRequested; var MapVoteHistory History; var int pos; var int i; var string GamePackage; var string NewPrefix; var bool bBunnyshit; var string ActualMapPrefix; function bool HandleEndGame () { local Pawn aPawn; DebugLog("1"); Super.HandleEndGame(); if ( !bAutoOpen || CheckForTie() ) { DebugLog("2"); return False; } if ( Level.Game.IsA('Assault') ) { DebugLog("4"); if ( !Assault(Level.Game).bDefenseSet ) { DebugLog("bDefenseSet false, Ending game normally.(First half end)"); return False; } } DebugLog("5"); DeathMatchPlus(Level.Game).bDontRestart=True; TimeLeft=VoteTimeLimit; ScoreBoardTime=ScoreBoardDelay; SetTimer(1.00,True); return False; } function HandleServerEmpty () { local string CurrentMap; local string TestMap; local int i; local int Map; if ( MapListIfNooneVoted == 0 ) { return; } CurrentMap=TmpNextVirtualPrefix $ "-" $ RemovePrefix(GetURLMap()); if ( InStr(CurrentMap,".") > -1 ) { CurrentMap=Left(CurrentMap,InStr(CurrentMap,".")); } DebugLog("HandleServerEmpty(): Currentmap:" @ CurrentMap @ "Desired List:" @ string(MapListIfNooneVoted)); for ( i=1; i<=MapCount; i++ ) { TestMap=GetPureMapname(MapList[i]); if ( TestMap ~= CurrentMap ) { if ( MapListIfNooneVoted == GetMapListNumber(MapList[i]) ) return; } } Log("Server is empty for" @ string(EmptyServerLevelSwitchTimeMins) @ "Minutes. Actual Map is:" @ CurrentMap $ ". Switching to a random map in List" @ string(MapListIfNooneVoted)); Level.ServerTravel(SetupGameMap(MapList[GetRandomMap()]),False); } event Timer () { local Pawn aPawn; local int VoterNum; local int NoVoteCount; local int MapNum; local MapVoteWRI A; local Pawn P; local int i; local MapVoteWRI mwri; foreach AllActors(Class'MapVoteWRI',mwri) { i++; } if ( bLevelSwitchPending ) { DebugLog("6"); if ( Level.TimeSeconds > ServerTravelTime + 4 ) { DebugLog("NextURL = " $ Level.NextURL); DebugLog("NextSwitchCountdown = " $ string(Level.NextSwitchCountdown)); if ( Level.NextURL == "" ) { DebugLog("7"); if ( Level.NextSwitchCountdown < 0 ) { Log("Map change Failed, bad or missing map file. TravelMap:" @ TravelMap); if ( bRemoveCrashedMaps ) { HandleFailedMap(TravelMap); } MapNum=GetRandomMap(); ServerTravelString=SetupGameMap(MapList[MapNum]); Level.ServerTravel(ServerTravelString,False); } else { Level.ServerTravel(ServerTravelString,False); } } } return; } if ( ScoreBoardTime > 0 ) { DebugLog("8"); ScoreBoardTime--; if ( ScoreBoardTime == 0 ) { DebugLog("9"); EndGameTime=Level.TimeSeconds; for ( aPawn=Level.PawnList; aPawn != None; aPawn=aPawn.nextPawn ) { if ( (PlayerPawn(aPawn) != None) && aPawn.bIsPlayer ) { VoterNum=FindPlayerIndex(PlayerPawn(aPawn).PlayerReplicationInfo.PlayerID,True); if ( VoterNum > -1 ) { if ( PlayerVote[VoterNum] == 0 ) { OpenVoteWindow(PlayerPawn(aPawn),False,False); } } } } BroadcastMessage(string(TimeLeft) $ " seconds left to vote.",True); } return; } TimeLeft--; if ( TimeLeft == 60 ) { DebugLog("10"); BroadcastMessage("1 Minute left to vote.",True); for ( P=Level.PawnList; P != None; P=P.nextPawn ) { if ( P.IsA('TournamentPlayer') ) { TournamentPlayer(P).TimeMessage(12); } } } if ( TimeLeft == 10 ) { DebugLog("11"); BroadcastMessage("10 seconds left to vote.",True); } if ( (TimeLeft < 11) && (TimeLeft > 0) ) { for ( P=Level.PawnList; P != None; P=P.nextPawn ) { if ( P.IsA('TournamentPlayer') ) { TournamentPlayer(P).TimeMessage(TimeLeft); } } } CleanUpPlayerIDs(); if ( (TimeLeft % 20 == 0) && (TimeLeft > 0) ) { DebugLog("12"); NoVoteCount=0; aPawn=Level.PawnList; JL042D: if ( aPawn != None ) { if ( aPawn.bIsPlayer && (PlayerPawn(aPawn) != None) ) { VoterNum=FindPlayerIndex(PlayerPawn(aPawn).PlayerReplicationInfo.PlayerID,True); if ( VoterNum > -1 ) { if ( PlayerVote[VoterNum] == 0 ) { NoVoteCount++; } } } aPawn=aPawn.nextPawn; goto JL042D; } if ( NoVoteCount == 0 ) { DebugLog("13"); TallyVotes(True); } } if ( TimeLeft == 0 ) { DebugLog("14"); TallyVotes(True); } } function Tick (float DeltaTime) { local string PlayerName; local string PID; local int TeamID; local Pawn Other; local int PlayerIndex; local WRI aWRI; Super.Tick(DeltaTime); if ( !bInitMapsLoaded ) { bInitMapsLoaded=True; if ( bReloadMapsOnRequestOnly ) { LoadMapListConfig(); } else { GotoState('Loading'); } } if ( Level.Game.NumPlayers > CurrentPlayerCount ) { CurrentPlayerCount=Level.Game.NumPlayers; } if ( Level.Game.NumPlayers < CurrentPlayerCount ) { DebugLog("16b"); CurrentPlayerCount=Level.Game.NumPlayers; DebugLog("CurrentPlayerCount decreased:" @ string(CurrentPlayerCount)); CleanUpPlayerIDs(); if ( Level.Game.NumPlayers > 0 ) { TallyVotes(False); UpdateOpenWRI(); } } if ( Level.Game.CurrentID > CurrentID ) { if ( JoinTickCount < 20 ) { if ( JoinTickCount == 0 ) { DebugLog("15"); } JoinTickCount++; return; } DebugLog("16"); JoinTickCount=0; Other=Level.PawnList; JL018B: if ( Other != None ) { if ( Other.IsA('PlayerPawn') && (Other.PlayerReplicationInfo != None) && (Other.PlayerReplicationInfo.PlayerID == CurrentID) ) { goto JL01FD; } Other=Other.nextPawn; goto JL018B; } JL01FD: CurrentID++; if ( (Other == None) || !Other.bIsPlayer || !Other.IsA('PlayerPawn') ) { DebugLog("17"); return; } DebugLog("new Player " $ Other.PlayerReplicationInfo.PlayerName $ ", " $ PlayerPawn(Other).GetPlayerNetworkAddress()); if ( bKickVote ) { DebugLog("18"); if ( CheckKickIP(PlayerPawn(Other).GetPlayerNetworkAddress()) ) { DebugLog("19a"); BroadcastMessage(Other.PlayerReplicationInfo.PlayerName $ " has been refused access to the server (1).",True); Other.Destroy(); return; } if ( CheckKickPlayer(PlayerPawn(Other).PlayerReplicationInfo.PlayerName) ) { DebugLog("19b"); BroadcastMessage(Other.PlayerReplicationInfo.PlayerName $ " has been refused access to the server (2).",True); Other.Destroy(); return; } if ( Other.IsA('Spectator') ) { TeamID=9; } else { if ( PlayerPawn(Other).PlayerReplicationInfo.Team == 255 ) { TeamID=0; } else { TeamID=PlayerPawn(Other).PlayerReplicationInfo.Team; } } PID=Right("000" $ string(PlayerPawn(Other).PlayerReplicationInfo.PlayerID),3); PlayerName=string(TeamID) $ PID $ PlayerPawn(Other).PlayerReplicationInfo.PlayerName; DebugLog("20"); PlayerIndex=FindPlayerIndex(PlayerPawn(Other).PlayerReplicationInfo.PlayerID,True); if ( PlayerVote[PlayerIndex] < 1 ) { AddNewPlayer(PlayerName,False); } else { AddNewPlayer(PlayerName,True); } } if ( bEntryWindows && !Other.IsA('Spectator') ) { DebugLog("21"); if ( Level.Game.IsA('Assault') && Assault(Level.Game).bDefenseSet ) { DebugLog("22"); return; } if ( Level.Game.bGameEnded ) { DebugLog("23"); if ( bAutoOpen ) { OpenVoteWindow(PlayerPawn(Other),False,False); } } else { OpenWelcomeWindow(PlayerPawn(Other)); } } DebugLog("24"); } } function bool CheckForTie () { local TeamInfo Best; local int i; local Pawn P; local Pawn BestP; local PlayerPawn Player; DebugLog("25"); if ( Level.Game.IsA('Assault') ) { return False; } if ( Level.Game.IsA('Domination') ) { return False; } if ( !bCheckOtherGameTie ) { i=0; JL005A: if ( i < 16 ) { if ( CustomGameConfig[i].bEnabled && (CustomGameConfig[i].GameClass != "") ) { CustomGameClass=Class(DynamicLoadObject(CustomGameConfig[i].GameClass,Class'Class')); if ( CustomGameClass == None ) { Log("MapVote: Error. CustomGameConfig[" $ string(i) $ "]: Failed to load GameClass:" @ CustomGameConfig[i].GameClass); } else { if ( CustomGameClass.Default.MapPrefix ~= Level.Game.MapPrefix ) { return False; } } } i++; goto JL005A; } } if ( Level.Game.IsA('TeamGamePlus') ) { DebugLog("26"); i=0; JL018A: if ( i < TeamGamePlus(Level.Game).MaxTeams ) { if ( (Best == None) || (Best.Score < TeamGamePlus(Level.Game).Teams[i].Score) ) { Best=TeamGamePlus(Level.Game).Teams[i]; } i++; goto JL018A; } i=0; JL0234: if ( i < TeamGamePlus(Level.Game).MaxTeams ) { if ( (Best.TeamIndex != i) && (Best.Score == TeamGamePlus(Level.Game).Teams[i].Score) ) { return True; } i++; goto JL0234; } } else { DebugLog("27"); P=Level.PawnList; JL02DF: if ( P != None ) { if ( P.bIsPlayer && ((BestP == None) || (P.PlayerReplicationInfo.Score > BestP.PlayerReplicationInfo.Score)) ) { BestP=P; } P=P.nextPawn; goto JL02DF; } P=Level.PawnList; JL0374: if ( P != None ) { if ( P.bIsPlayer && (BestP != P) && (P.PlayerReplicationInfo.Score == BestP.PlayerReplicationInfo.Score) ) { return True; } P=P.nextPawn; goto JL0374; } } return False; } function SubmitVote (string MapName, Actor Voter) { local int PlayerIndex; local int X; local int MapIndex; local string PID; DebugLog("28"); Log(PlayerPawn(Voter).PlayerReplicationInfo.PlayerName $ " has voted for " $ GetPureMapname(MapName)); if ( bLevelSwitchPending ) { return; } if ( Voter.IsA('Spectator') ) { return; } if ( Left(MapName,3) == "[X]" ) { return; } MapName=GetPureMapname(MapName); CleanUpPlayerIDs(); PlayerIndex=FindPlayerIndex(PlayerPawn(Voter).PlayerReplicationInfo.PlayerID,True); if ( PlayerIndex == -1 ) { return; } MapIndex=GetMapIndex(MapName); if ( MapIndex == 0 ) { return; } if ( PlayerVote[PlayerIndex] == MapIndex ) { return; } if ( PlayerVote[PlayerIndex] <= 0 ) { PID=Right("000" $ string(PlayerPawn(Voter).PlayerReplicationInfo.PlayerID),3); UpdatePlayerVoted(PID); } PlayerVote[PlayerIndex]=MapIndex; if ( Mode == "Accumulation" ) { DebugLog("29"); BroadcastMessage(PlayerPawn(Voter).PlayerReplicationInfo.PlayerName $ " has placed " $ string(GetAccVote(PlayerIndex)) $ " votes for " $ MapName,True); } else { if ( Mode == "Score" ) { BroadcastMessage(PlayerPawn(Voter).PlayerReplicationInfo.PlayerName $ " has placed " $ string(GetPlayerScore(PlayerIndex)) $ " votes for " $ MapName,True); } else { BroadcastMessage(PlayerPawn(Voter).PlayerReplicationInfo.PlayerName $ " voted for " $ MapName,True); } } TallyVotes(False); } function SubmitKickVote (int PlayerID, Actor Voter) { local Pawn aPawn; local int VoterNum; local int X; local int Y; local int VoteCount[32]; local int Lamer; DebugLog("30"); if ( bLevelSwitchPending ) { return; } if ( Voter.IsA('Spectator') ) { return; } if ( !bKickVote ) { return; } CleanUpPlayerIDs(); VoterNum=FindPlayerIndex(PlayerPawn(Voter).PlayerReplicationInfo.PlayerID,True); if ( VoterNum == -1 ) { return; } if ( FindPlayerIndex(PlayerID,False) == -1 ) { return; } if ( PlayerKickVote[VoterNum] == FindPlayerIndex(PlayerID,False) ) { return; } aPawn=Level.PawnList; JL00C2: if ( aPawn != None ) { if ( aPawn.bIsPlayer && (aPawn.PlayerReplicationInfo.PlayerID == PlayerID) ) { if ( (NetConnection(PlayerPawn(aPawn).Player) == None) || PlayerPawn(aPawn).bAdmin ) { PlayerPawn(Voter).ClientMessage("Sorry, You can Not kick the Server or the Admin."); return; } else { PlayerKickVote[VoterNum]=FindPlayerIndex(PlayerID,False); Log("BDBMapVote: " $ PlayerPawn(Voter).PlayerReplicationInfo.PlayerName $ " has placed a Kick Vote against " $ aPawn.PlayerReplicationInfo.PlayerName); if ( bShowWhoKicksWho ) { BroadcastMessage(PlayerPawn(Voter).PlayerReplicationInfo.PlayerName $ " has placed a Kick Vote against " $ aPawn.PlayerReplicationInfo.PlayerName,True); } else { BroadcastMessage("A Kick Vote has been placed against " $ aPawn.PlayerReplicationInfo.PlayerName,True); } } } aPawn=aPawn.nextPawn; goto JL00C2; } X=0; JL02D7: if ( X < 32 ) { if ( PlayerKickVote[X] != -1 ) { VoteCount[PlayerKickVote[X]]++; } X++; goto JL02D7; } Lamer=0; X=0; JL0323: if ( X < 32 ) { if ( VoteCount[X] > VoteCount[Lamer] ) { Lamer=X; } X++; goto JL0323; } if( (float(VoteCount[Lamer])/float(Level.Game.NumPlayers))*100 >= KickPercent) { DebugLog("31"); KickPlayer(PlayerIDList[Lamer],GetPlayerName(PlayerIDList[Lamer])); PlayerVote[Lamer]=0; VoteCount[Lamer]=0; PlayerKickVote[Lamer]=-1; PlayerIDList[Lamer]=-1; } X=0; JL0404: if ( X < 32 ) { if ( VoteCount[X] > 0 ) { KickStatusText[Y++ ]=GetPlayerName(PlayerIDList[X]) $ "," $ string(VoteCount[X]); } X++; goto JL0404; } KickStatusText[Y]=""; UpdateOpenWRI(); DebugLog("32"); } function KickPlayer (int PlayerID, string PlayerName) { local Pawn aPawn; local string IP; local string PID; local MapVoteWRI MVWRI; DebugLog("Playerkicked:" @ string(PlayerID) @ PlayerName); aPawn=Level.PawnList; JL0038: if ( aPawn != None ) { if ( aPawn.bIsPlayer && (aPawn.PlayerReplicationInfo.PlayerID == PlayerID) && ((PlayerPawn(aPawn) == None) || (NetConnection(PlayerPawn(aPawn).Player) != None)) ) { BroadcastMessage(aPawn.PlayerReplicationInfo.PlayerName $ " has been kicked.",True); IP=PlayerPawn(aPawn).GetPlayerNetworkAddress(); AddKickIP(IP); AddKickName(Mid(PlayerName,4)); if ( bKickVote ) { PID=Right("000" $ string(aPawn.PlayerReplicationInfo.PlayerID),3); RemovePlayerName(Right("000" $ PID,3)); } foreach AllActors(Class'MapVoteWRI',MVWRI) { if ( aPawn == MVWRI.Owner ) { MVWRI.CloseWindow(); MVWRI.Destroy(); } else { } } aPawn.Destroy(); return; } aPawn=aPawn.nextPawn; goto JL0038; } DebugLog("34"); } function AddKickIP (string IP) { local int i; local int P; local string ShortIP; DebugLog("35" @ IP); if ( IP == "" ) { return; } P=InStr(IP,":"); if ( P > -1 ) { ShortIP=Left(IP,P); } else { ShortIP=IP; } i=0; JL0065: if ( i < 31 ) { if ( KickIPList[i] == "" ) { KickIPList[i]=ShortIP; return; } i++; goto JL0065; } DebugLog("36"); } function AddKickName (string PlayerName) { local int i; local int P; local string ShortIP; DebugLog("35a" @ PlayerName); if ( PlayerName == "" ) { return; } i=0; JL0027: if ( i < 31 ) { if ( KickPlayerList[i] == "" ) { KickPlayerList[i]=PlayerName; return; } i++; goto JL0027; } DebugLog("36a"); } function bool CheckKickIP (string IP) { local int i; local int P; local string ShortIP; DebugLog("37" @ IP); if ( IP == "" ) { return False; } P=InStr(IP,":"); if ( P > -1 ) { ShortIP=Left(IP,P); } else { ShortIP=IP; } i=0; JL0065: if ( i < 32 ) { if ( KickIPList[i] == ShortIP ) { return True; } i++; goto JL0065; } DebugLog("38"); return False; } function bool CheckKickPlayer (string PlayerName) { local int i; local int P; DebugLog("37a" @ PlayerName); if ( PlayerName == "" ) { return False; } i=0; JL0027: if ( i < 32 ) { if ( KickPlayerList[i] == PlayerName ) { return True; } i++; goto JL0027; } DebugLog("38a"); return False; } simulated function PreBeginPlay () { local int X; local MapVoteWRI MVWRI; local EmptyServerLevelSwitch ESLS; local string defaultPrefix; DebugLog("39"); if ( !bInitialized ) { DebugLog("40"); X=0; JL0026: if ( X < 32 ) { PlayerIDList[X]=-1; PlayerKickVote[X]=-1; X++; goto JL0026; } MaxPriority=MaxFloat(Max(Max(List1Priority,List2Priority),List3Priority),List4Priority); DebugLog("MaxPriority:" @ string(MaxPriority)); StartMutatorsAndSettings(); if ( bEnableEmptyServerLevelSwitch ) { ESLS=Level.Spawn(Class'EmptyServerLevelSwitch'); ESLS.ServerEmptyTimeMins=EmptyServerLevelSwitchTimeMins; ESLS.MapVote=self; } CustomGameClass=Class(DynamicLoadObject(ASClass,Class'Class')); if ( CustomGameClass == None ) { if ( !ClassIsChildOf(CustomGameClass,Class'Assault') ) { DebugLog("ASClass fixed"); ASClass="Botpack.Assault"; } SaveConfig(); } bInitialized=True; } DebugLog("41"); Super.PreBeginPlay(); } function Mutate (string MutateString, PlayerPawn Sender) { local string MapName; local string PlayerName; local int PlayerID; local int pos; local int seq; local MapVoteReport MVReport; local int ObjectCount; local MapVoteWRI MVWRI; local MapVoteHistory MVHistory; local int i; local string CustSetting; Super.Mutate(MutateString,Sender); if ( Left(Caps(MutateString),10) == "BDBMAPVOTE" ) { DebugLog("42"); if ( Mid(Caps(MutateString),11,8) == "VOTEMENU" ) { DebugLog("43"); if ( (Level.TimeSeconds > 15) || (Level.NetMode == 0) || Sender.bAdmin ) { CleanUpPlayerIDs(); OpenVoteWindow(Sender,True,True); } else { Sender.ClientMessage("Please wait 15 seconds to vote"); } return; } if ( Mid(Caps(MutateString),11,6) == "REPORT" ) { DebugLog("201"); ObjectCount=0; foreach AllActors(Class'MapVoteReport',MVReport) { ObjectCount++; } if ( ObjectCount > 0 ) { Sender.ClientMessage("Sorry, The server can only run one report at a time, please try again later."); return; } MVReport=Spawn(Class'MapVoteReport'); if ( MVReport != None ) { MVReport.RunRport(Caps(Mid(MutateString,18)),Sender,MapVoteHistoryClass); } else { Log("Failed to spawn MVReport"); } return; } if ( Sender.IsA('Spectator') && !Sender.bAdmin ) { Sender.ClientMessage("Spectators are not allowed to vote."); return; } if ( Mid(Caps(MutateString),11,3) == "MAP" ) { DebugLog("44"); MapName=Mid(MutateString,15); if ( Sender.bAdmin ) { MapName=GetPureMapname(MapName); BroadcastMessage("Server Admin has force a map switch to " $ MapName,True); ServerTravelString=SetupGameMap(MapName); CloseAllVoteWindows(); Level.ServerTravel(ServerTravelString,False); } else { SubmitVote(MapName,Sender); } return; } if ( Mid(Caps(MutateString),11,4) == "KICK" ) { DebugLog("45"); PlayerName=Mid(MutateString,16); PlayerID=int(Mid(Left(PlayerName,4),2)); if ( Sender.bAdmin ) { Log("BDBMapVote: Admin (" $ Sender.PlayerReplicationInfo.PlayerName $ ") kicked player:" @ PlayerName); KickPlayer(PlayerID,PlayerName); } else { if ( bKickVote ) { SubmitKickVote(PlayerID,Sender); } else { Sender.ClientMessage("Kickvote is disabled"); } } return; } if ( Mid(Caps(MutateString),11,10) == "RELOADMAPS" ) { DebugLog("46"); if ( Sender.bAdmin ) { DebugLog("47"); GotoState('Loading','BeginRequested'); } return; } if ( Mid(Caps(MutateString),11,15) == "LISTCRASHEDMAPS" ) { DebugLog("46a"); if ( Sender.bAdmin ) { Sender.ClientMessage("Mapvote: Crashed Maps:"); i=0; JL04D5: if ( (i < 32) && (CrashedMaps[i] != "") ) { Sender.ClientMessage(string(i) $ ":" @ CrashedMaps[i]); i++; goto JL04D5; } if ( i == 0 ) { Sender.ClientMessage("Mapvote: No maps crashed"); } } } if ( Mid(Caps(MutateString),11,16) == "CLEARCRASHEDMAPS" ) { DebugLog("46a"); if ( Sender.bAdmin ) { i=0; JL05A2: if ( i < 32 ) { CrashedMaps[i]=""; i++; goto JL05A2; } SaveConfig(); Sender.ClientMessage("Crashed Maps List Cleared!"); } } if ( Mid(Caps(MutateString),11,6) == "STATUS" ) { DebugLog("49"); Sender.ClientMessage("Total Map Count is " $ string(MapCount)); ObjectCount=0; foreach AllActors(Class'MapVoteWRI',MVWRI) { ObjectCount++; } Sender.ClientMessage("Active MapVoteWRI count is " $ string(ObjectCount)); ObjectCount=0; foreach AllActors(Class'MapVoteReport',MVReport) { ObjectCount++; } Sender.ClientMessage("Active MapVoteReport count is " $ string(ObjectCount)); ObjectCount=0; foreach AllActors(Class'MapVoteHistory',MVHistory) { ObjectCount++; } Sender.ClientMessage("Active MapVoteHistory count is " $ string(ObjectCount)); return; } if ( Mid(Caps(MutateString),11,6) == "SETSEQ" ) { DebugLog("50"); if ( Sender.bAdmin ) { MapName=Mid(MutateString,18); pos=InStr(MapName," "); if ( pos < 1 ) { Sender.ClientMessage("Syntax Error"); return; } seq=int(Mid(MapName,pos + 1)); MapName=Left(MapName,pos); MVHistory=Spawn(MapVoteHistoryClass); MVHistory.SetMapSequence(MapName,seq); MVHistory.Save(); MVHistory.Destroy(); Sender.ClientMessage("Sequence changed !"); } else { Sender.ClientMessage("You must be a server admin to perform this fuction !"); } return; } if ( Mid(Caps(MutateString),11,5) == "SETPC" ) { DebugLog("51"); if ( Sender.bAdmin ) { MapName=Mid(MutateString,17); pos=InStr(MapName," "); if ( pos < 1 ) { Sender.ClientMessage("Syntax Error"); return; } seq=int(Mid(MapName,pos + 1)); MapName=Left(MapName,pos); MVHistory=Spawn(MapVoteHistoryClass); MVHistory.SetPlayCount(MapName,seq); MVHistory.Save(); MVHistory.Destroy(); Sender.ClientMessage("PlayCount changed !"); } else { Sender.ClientMessage("You must be a server admin to perform this fuction !"); } return; } if ( Mid(Caps(MutateString),11,11) == "CUSTSETTING" ) { DebugLog("45b"); if ( Sender.bAdmin ) { CustSetting=Mid(MutateString,23,16); DebugLog("new Custsetting:" @ CustSetting); i=0; JL0A68: if ( i < 16 ) { if ( Mid(CustSetting,i,1) == "1" ) { CustomGameConfig[i].bEnabled=True; } else { CustomGameConfig[i].bEnabled=False; } i++; goto JL0A68; } SaveConfig(); } return; } } } function OpenVoteWindow (PlayerPawn Sender, bool bSpecsAllowed, bool bManualOpen) { local MapVoteWRI MVWRI; local int X; local int PlayerCount; local int Y; local int i; local Pawn P; local MapVoteWRI A; local int TeamID; local string PID; local string CustState; DebugLog("52: OpenVoteWindow()"); if ( Sender.IsA('Spectator') && !Sender.bAdmin && !bSpecsAllowed ) { return; } if ( bLevelSwitchPending ) { return; } foreach AllActors(Class'MapVoteWRI',A) { if ( Sender == A.Owner ) { DebugLog("53: WRI already Spawned --> return"); return; } } MVWRI=Spawn(Class'MapVoteWRI',Sender,,Sender.Location); if ( MVWRI == None ) { Log("#### -- PostLogin :: Fail:: Could not spawn WRI"); return; } MVWRI.MapVoteMutator=self; MVWRI.List1Priority=List1Priority; MVWRI.List2Priority=List2Priority; MVWRI.List3Priority=List3Priority; MVWRI.List4Priority=List4Priority; MVWRI.MapCount=MapCount; i=0; JL0194: if ( i < 256 ) { MVWRI.MapList1[i]=MapList[i]; MVWRI.MapList2[i]=MapList[i + 256]; MVWRI.MapList3[i]=MapList[i + 512]; MVWRI.MapList4[i]=MapList[i + 768]; i++; goto JL0194; } if ( Sender.bAdmin ) { CustState=""; i=0; JL0263: if ( i < 16 ) { if ( CustomGameConfig[i].bEnabled ) { CustState=CustState $ "1"; } else { CustState=CustState $ "0"; } if ( CustomGameConfig[i].NewPrefix != "" ) { MVWRI.CustomGames[i]=CustomGameConfig[i].GameClass $ " (" $ CustomGameConfig[i].NewPrefix $ ")"; } else { MVWRI.CustomGames[i]=CustomGameConfig[i].GameClass; } i++; goto JL0263; } MVWRI.CustomGamesState=CustState; } MVWRI.PrefixDictionary=PrefixDictionary; DebugLog("54"); PlayerCount=0; P=Level.PawnList; JL037E: if ( P != None ) { if ( (PlayerPawn(P) != None) && P.bIsPlayer ) { if ( P.IsA('Spectator') ) { TeamID=9; } else { if ( PlayerPawn(P).PlayerReplicationInfo.Team == 255 ) { TeamID=0; } else { TeamID=PlayerPawn(P).PlayerReplicationInfo.Team; } } PID=Right("000" $ string(PlayerPawn(P).PlayerReplicationInfo.PlayerID),3); if ( PlayerVote[FindPlayerIndex(PlayerPawn(P).PlayerReplicationInfo.PlayerID,True)] > 0 ) { MVWRI.PlayerName[PlayerCount++ ]=string(TeamID) $ PID $ PlayerPawn(P).PlayerReplicationInfo.PlayerName $ "&?&!&"; } else { MVWRI.PlayerName[PlayerCount++ ]=string(TeamID) $ PID $ PlayerPawn(P).PlayerReplicationInfo.PlayerName; } } P=P.nextPawn; goto JL037E; } X=0; JL0528: if ( (MapStatusText[X] != "") && (X < 31) ) { MVWRI.MapVoteResults[X]=MapStatusText[X]; X++; goto JL0528; } MVWRI.MapVoteResults[X]=""; Y=0; if ( bKickVote ) { DebugLog("55"); JL05A3: if ( (KickStatusText[Y] != "") && (Y < 31) ) { MVWRI.KickVoteResults[Y]=KickStatusText[Y++ ]; goto JL05A3; } MVWRI.KickVoteResults[Y]=""; } MVWRI.GetServerConfig(); DebugLog("56"); } function OpenWelcomeWindow (PlayerPawn Sender) { local MVWelcomeWRI MVWWRI; local MVWelcomeWRI A; DebugLog("57"); if ( Sender.IsA('Spectator') ) { return; } foreach AllActors(Class'MVWelcomeWRI',A) { if ( Sender == A.Owner ) { return; } } MVWWRI=Spawn(Class'MVWelcomeWRI',Sender,,Sender.Location); if ( MVWWRI == None ) { Log("#### -- PostLogin :: Fail:: Could not spawn MVWelcomeWRI"); return; } MVWWRI.GetServerConfig(); DebugLog("58"); } function int FindPlayerIndex (int PlayerID, bool bAddIfNotFound) { local int X; DebugLog("59"); X=0; JL0011: if ( X < 32 ) { if ( PlayerIDList[X] == PlayerID ) { return X; } X++; goto JL0011; } if ( bAddIfNotFound ) { DebugLog("59b"); X=0; JL005D: if ( X < 32 ) { if ( PlayerIDList[X] == -1 ) { PlayerIDList[X]=PlayerID; return X; } X++; goto JL005D; } } Log("Mapvote: Could not find PlayerIndex. Already left?"); DebugLog("60"); return -1; } function AddNewPlayer (string NewPlayerName, bool bHasVoted) { local MapVoteWRI MVWRI; local Pawn P; DebugLog("61"); foreach AllActors(Class'MapVoteWRI',MVWRI) { MVWRI.AddNewPlayer(NewPlayerName,bHasVoted); } DebugLog("62"); } function RemovePlayerName (string OldPlayerName) { local MapVoteWRI MVWRI; local Pawn P; DebugLog("63"); foreach AllActors(Class'MapVoteWRI',MVWRI) { MVWRI.RemovePlayerName(OldPlayerName); } } function UpdatePlayerVoted (string PlayerID) { local MapVoteWRI MVWRI; local Pawn P; DebugLog("63"); foreach AllActors(Class'MapVoteWRI',MVWRI) { MVWRI.UpdatePlayerVoted(PlayerID); } } function CleanUpPlayerIDs () { local Pawn aPawn; local int X; local bool bFound; DebugLog("64"); X=0; JL0011: if ( X < 32 ) { if ( PlayerIDList[X] > -1 ) { bFound=False; aPawn=Level.PawnList; JL004E: if ( aPawn != None ) { if ( aPawn.bIsPlayer && aPawn.IsA('PlayerPawn') && (PlayerPawn(aPawn).PlayerReplicationInfo.PlayerID == PlayerIDList[X]) ) { bFound=True; } else { aPawn=aPawn.nextPawn; goto JL004E; } } if ( !bFound ) { DebugLog("Removing Player that has left:" @ string(PlayerIDList[X])); if ( bKickVote ) { RemovePlayerName(Right("000" $ string(PlayerIDList[X]),3)); } PlayerVote[X]=0; PlayerKickVote[X]=-1; PlayerIDList[X]=-1; } } X++; goto JL0011; } DebugLog("65"); } function string GetPlayerName (int PlayerID) { local Pawn aPawn; local string PlayerName; DebugLog("66"); PlayerName="unknown"; aPawn=Level.PawnList; JL002D: if ( aPawn != None ) { if ( aPawn.bIsPlayer && (PlayerPawn(aPawn) != None) ) { if ( PlayerPawn(aPawn).PlayerReplicationInfo.PlayerID == PlayerID ) { PlayerName=Right("000" $ string(PlayerID),3) $ aPawn.PlayerReplicationInfo.PlayerName; } else { aPawn=aPawn.nextPawn; goto JL002D; } } } return PlayerName; } function float GetPlayerScore (int PlayerIndex) { local Pawn aPawn; local float PlayerScore; DebugLog("67"); aPawn=Level.PawnList; JL001E: if ( aPawn != None ) { if ( aPawn.bIsPlayer && (PlayerPawn(aPawn) != None) ) { if ( PlayerPawn(aPawn).PlayerReplicationInfo.PlayerID == PlayerIDList[PlayerIndex] ) { PlayerScore=PlayerPawn(aPawn).PlayerReplicationInfo.Score; } else { aPawn=aPawn.nextPawn; goto JL001E; } } } if ( PlayerScore < 1 ) { PlayerScore=1.00; } return PlayerScore; } function int GetAccVote (int PlayerIndex) { local Pawn aPawn; local int X; local int PlayerAccVotes; local string PlayerName; DebugLog("68"); aPawn=Level.PawnList; JL001E: if ( aPawn != None ) { if ( aPawn.bIsPlayer && (PlayerPawn(aPawn) != None) ) { if ( PlayerPawn(aPawn).PlayerReplicationInfo.PlayerID == PlayerIDList[PlayerIndex] ) { PlayerName=PlayerPawn(aPawn).PlayerReplicationInfo.PlayerName; } else { aPawn=aPawn.nextPawn; goto JL001E; } } } if ( PlayerName == "" ) { return 0; } X=0; JL00CA: if ( X < 32 ) { if ( AccName[X] == PlayerName ) { PlayerAccVotes=AccVotes[X]; } else { X++; goto JL00CA; } } if ( PlayerAccVotes > 0 ) { return PlayerAccVotes; } X=0; JL0121: if ( X < 32 ) { if ( AccName[X] == "" ) { AccName[X]=PlayerName; AccVotes[X]=1; } else { X++; goto JL0121; } } DebugLog("69"); return 1; } function SaveAccVotes (int WinningMapIndex) { local Pawn aPawn; local int X; local bool bFound; DebugLog("70"); X=0; JL0011: if ( X < 32 ) { if ( AccName[X] != "" ) { bFound=False; aPawn=Level.PawnList; JL004B: if ( aPawn != None ) { if ( aPawn.bIsPlayer && (PlayerPawn(aPawn) != None) ) { if ( AccName[X] == PlayerPawn(aPawn).PlayerReplicationInfo.PlayerName ) { if ( PlayerVote[FindPlayerIndex(PlayerPawn(aPawn).PlayerReplicationInfo.PlayerID,False)] != WinningMapIndex ) { bFound=True; AccVotes[X]++; } } else { aPawn=aPawn.nextPawn; goto JL004B; } } } if ( !bFound ) { AccName[X]=""; AccVotes[X]=0; } } X++; goto JL0011; } X=0; JL013F: if ( X < 32 ) { Class'BDBMapVote'.Default.AccName[X]=AccName[X]; Class'BDBMapVote'.Default.AccVotes[X]=AccVotes[X]; X++; goto JL013F; } Class'BDBMapVote'.StaticSaveConfig(); DebugLog("71"); } function TallyVotes (bool bForceMapSwitch) { local string MapName; local Actor A; local int Index; local int X; local int Y; local int topmap; local float VoteCount[1024]; local int Ranking[32]; local int PlayersThatVoted; local int TieCount; local string GameType; local string CurrentMap; local int i; local int textline; local MapVoteHistory History; local int PlayersLeftToVote; DebugLog("72"); if ( bLevelSwitchPending ) { return; } PlayersThatVoted=0; X=0; JL0023: if ( X < 32 ) { if ( PlayerVote[X] != 0 ) { PlayersThatVoted++; if ( Mode == "Score" ) { VoteCount[PlayerVote[X]]=VoteCount[PlayerVote[X]] + GetPlayerScore(X); } if ( Mode == "Accumulation" ) { VoteCount[PlayerVote[X]]=VoteCount[PlayerVote[X]] + GetAccVote(X); } if ( (Mode == "Elimination") || (Mode == "Majority") ) { VoteCount[PlayerVote[X]] += GetMapPriority(MapList[PlayerVote[X]]); } DebugLog("PlayerVote[x]:" @ string(PlayerVote[X])); DebugLog("VoteCount[PlayerVote[x]]:" @ string(VoteCount[PlayerVote[X]])); } X++; goto JL0023; } if(!Level.Game.bGameEnded && !bMidGameVote && (float(PlayersThatVoted) / float(Level.Game.NumPlayers)) * 100 >= MidGameVotePercent) { DebugLog("73"); BroadcastMessage("Mid-Game Map Voting has been initiated !!!!"); bMidGameVote=True; TimeLeft=VoteTimeLimit; ScoreBoardTime=1; SetTimer(1.00,True); } Index=0; X=1; JL0257: if ( X <= MapCount ) { if ( VoteCount[X] > 0 ) { Ranking[Index++ ]=X; } X++; goto JL0257; } X=0; JL029C: if ( X < Index - 1 ) { Y=X + 1; JL02BC: if ( Y < Index ) { if ( VoteCount[Ranking[X]] < VoteCount[Ranking[Y]] ) { topmap=Ranking[X]; Ranking[X]=Ranking[Y]; Ranking[Y]=topmap; } Y++; goto JL02BC; } X++; goto JL029C; } PlayersLeftToVote=Level.Game.NumPlayers - PlayersThatVoted; DebugLog("NumPlayer:" $ string(Level.Game.NumPlayers) @ "PlayerVoted:" $ string(PlayersThatVoted) @ "PlayersToVote:" $ string(PlayersLeftToVote) @ "MaxPriority:" $ string(MaxPriority)); if ( (Mode == "Elimination") || (Mode == "Majority") ) { if ( (PlayersLeftToVote * MaxPriority < VoteCount[Ranking[0]]) && (VoteCount[Ranking[1]] + PlayersLeftToVote * GetMapPriority(MapList[Ranking[1]]) < VoteCount[Ranking[0]]) && (VoteCount[Ranking[2]] + PlayersLeftToVote * GetMapPriority(MapList[Ranking[2]]) < VoteCount[Ranking[0]]) && (VoteCount[Ranking[3]] + PlayersLeftToVote * GetMapPriority(MapList[Ranking[3]]) < VoteCount[Ranking[0]]) && Level.Game.bGameEnded ) { bForceMapSwitch=True; } } X=0; JL050F: if ( X < Index ) { MapStatusText[X]=GetPureMapname(MapList[Ranking[X]]) $ "," $ Left(string(VoteCount[Ranking[X]]),3); X++; goto JL050F; } MapStatusText[Index]=""; UpdateOpenWRI(); if ( (VoteCount[Ranking[0]] == VoteCount[Ranking[1]]) && (VoteCount[Ranking[0]] != 0) ) { DebugLog("74"); TieCount=1; X=1; JL05C9: if ( X < Index ) { if ( VoteCount[Ranking[0]] == VoteCount[Ranking[X]] ) { TieCount++; } X++; goto JL05C9; } topmap=Ranking[Rand(TieCount)]; CurrentMap=RemovePrefix(GetURLMap()); if ( InStr(CurrentMap,".") > -1 ) { CurrentMap=Left(CurrentMap,InStr(CurrentMap,".")); } X=0; JL0660: if ( RemovePrefix(GetPureMapname(MapList[topmap])) ~= CurrentMap ) { topmap=Ranking[Rand(TieCount)]; X++; if ( X > 20 ) { goto JL06AD; } goto JL0660; } JL06AD: } else { DebugLog("75"); topmap=Ranking[0]; } if ( bForceMapSwitch ) { if ( (PlayersThatVoted == 0) || (Level.Game.NumPlayers == 0) ) { BroadcastMessage("Noone voted, choosing a random map...",True); topmap=GetRandomMap(); } } if ( bForceMapSwitch || (Level.Game.NumPlayers == PlayersThatVoted) ) { DebugLog("76"); if ( MapList[topmap] == "" ) { return; } if ( (VoteCount[Ranking[0]] == VoteCount[Ranking[1]]) && (VoteCount[Ranking[0]] != 0) ) { BroadcastMessage("Tie:" @ GetPureMapname(MapList[Ranking[0]]) @ "and" @ GetPureMapname(MapList[Ranking[1]]) @ "have same score!"); BroadcastMessage(GetPureMapname(MapList[topmap]) $ " has won.",True); } else { BroadcastMessage(GetPureMapname(MapList[topmap]) $ " has won.",True); } CloseAllVoteWindows(); bLevelSwitchPending=True; ServerTravelString=SetupGameMap(MapList[topmap]); ServerTravelTime=Level.TimeSeconds; if ( !Level.Game.bGameEnded ) { SetTimer(1.00,True); } if ( (PlayersThatVoted == 0) || (Level.Game.NumPlayers == 0) ) { goto JL0927; } History=Spawn(MapVoteHistoryClass); History.AddMap(GetPureMapname(MapList[topmap])); History.Save(); History.Destroy(); JL0927: if ( Mode == "Elimination" ) { RepeatLimit++; Class'BDBMapVote'.Default.RepeatLimit=RepeatLimit; Class'BDBMapVote'.StaticSaveConfig(); } if ( Mode == "Accumulation" ) { SaveAccVotes(topmap); } } DebugLog("77"); } function UpdateOpenWRI () { local MapVoteWRI MVWRI; local int X; local int Y; DebugLog("78"); foreach AllActors(Class'MapVoteWRI',MVWRI) { X=0; MVWRI.UpdateMapVoteResults("Clear",X); JL003C: if ( (MapStatusText[X] != "") && (X < 31) ) { MVWRI.UpdateMapVoteResults(MapStatusText[X],X); X++; goto JL003C; } MVWRI.UpdateMapVoteResults("",X); Y=0; MVWRI.UpdateKickVoteResults("Clear",Y); if ( bKickVote ) { JL00C6: if ( (KickStatusText[Y] != "") && (Y < 31) ) { MVWRI.UpdateKickVoteResults(KickStatusText[Y],Y++ ); goto JL00C6; } } MVWRI.UpdateKickVoteResults("",Y); } DebugLog("79"); } function SortMapList () { local int A; local int B; local int pos; local string TempMapName; local string AMap; local string BMap; local string AMapPre; local string BMapPre; DebugLog("80"); A=1; JL0011: if ( A < MapCount ) { B=A + 1; JL002E: if ( B <= MapCount ) { AMap=Caps(MapList[A]); BMap=Caps(MapList[B]); if ( Left(AMap,3) == "[X]" ) { AMap=Mid(AMap,3); } if ( Left(BMap,3) == "[X]" ) { BMap=Mid(BMap,3); } AMap=Right(AMap,1) $ AMap; BMap=Right(BMap,1) $ BMap; AMapPre=AMap; BMapPre=BMap; if ( !bSortWithPreFix ) { pos=InStr(AMap,"-"); AMap=Mid(AMap,pos + 1); pos=InStr(BMap,"-"); BMap=Mid(BMap,pos + 1); } if ( AMap > BMap ) { TempMapName=MapList[A]; MapList[A]=MapList[B]; MapList[B]=TempMapName; } else { if ( AMap == BMap ) { if ( AMapPre > BMapPre ) { TempMapName=MapList[A]; MapList[A]=MapList[B]; MapList[B]=TempMapName; } } } B++; goto JL002E; } A++; goto JL0011; } } function bool IsCrashedMap (string MapName) { local int j; MapName=GetPureMapname(MapName); j=0; JL0018: if ( (j < 32) && (CrashedMaps[j] != "") ) { if ( MapName ~= CrashedMaps[j] ) { if ( bDebugMode ) { DebugLog("Map found in crashed map list:" @ MapName); } return True; } j++; goto JL0018; } return False; } function string CreateMapnameIncludingListnumber (string mapnameX) { local string MapName; local bool locked; local int j; if ( Left(mapnameX,3) ~= "[x]" ) { MapName=GetPureMapname(mapnameX); locked=True; } else { MapName=GetPureMapname(mapnameX); } if ( bRemoveCrashedMaps && IsCrashedMap(MapName) ) { return ""; } if ( bUseExcludeFilter ) { j=0; JL006C: if ( (j < 501) && (ExcludeFilter[j] != "") ) { if ( MatchFilter(MapName,ExcludeFilter[j]) ) { DebugLog("Excluded Map:" @ MapName); return ""; } j++; goto JL006C; } } j=0; JL00D5: if ( (j < 201) && (List1Filter[j] != "") ) { if ( MatchFilter(MapName,List1Filter[j]) || bAutoDetect ) { if ( !bList1ObeyRepeatLimit && locked ) { mapnameX=MapName; } mapnameX=mapnameX $ ":1"; return mapnameX; } j++; goto JL00D5; } j=0; JL0162: if ( (j < 201) && (List2Filter[j] != "") ) { if ( MatchFilter(MapName,List2Filter[j]) ) { if ( !bList2ObeyRepeatLimit && locked ) { mapnameX=MapName; } mapnameX=mapnameX $ ":2"; return mapnameX; } j++; goto JL0162; } j=0; JL01E4: if ( (j < 201) && (List3Filter[j] != "") ) { if ( MatchFilter(MapName,List3Filter[j]) ) { if ( !bList3ObeyRepeatLimit && locked ) { mapnameX=MapName; } mapnameX=mapnameX $ ":3"; return mapnameX; } j++; goto JL01E4; } j=0; JL0266: if ( (j < 201) && (List4Filter[j] != "") ) { if ( MatchFilter(MapName,List4Filter[j]) ) { if ( !bList4ObeyRepeatLimit && locked ) { mapnameX=MapName; } mapnameX=mapnameX $ ":4"; return mapnameX; } j++; goto JL0266; } return ""; } function int GetMapListNumber (string MapName) { return int(Right(MapName,1)); } function float GetMapPriority (string MapName) { local int MapListNum; if ( MapName == "" ) { return 0.00; } MapListNum=GetMapListNumber(MapName); if ( MapListNum == 1 ) { return List1Priority; } if ( MapListNum == 2 ) { return List2Priority; } if ( MapListNum == 3 ) { return List3Priority; } if ( MapListNum == 4 ) { return List4Priority; } Log("ERROR: GetMapPriority(): Mapname has no Priority attached:" @ MapName,'MapVoteLAvv'); return 1.00; } function string GetPureMapname (string MapName) { if ( Left(MapName,3) ~= "[x]" ) { MapName=Mid(MapName,3); } if ( Left(Right(MapName,2),1) == ":" ) { MapName=Left(MapName,Len(MapName) - 2); } return MapName; } function bool MatchFilter (string Map, string Filter) { local string modFilter; if ( Map ~= Filter ) { return True; } if ( Right(Filter,1) == "*" ) { modFilter=Mid(Filter,0,Len(Filter) - 1); if ( Left(Map,Len(modFilter)) ~= modFilter ) { return True; } } if ( Right(Filter,1) == "-" ) { if ( Left(Map,Len(Filter)) ~= Filter ) { return True; } } if ( (Right(Filter,1) == "*") && (Left(Filter,1) == "*") ) { modFilter=Mid(Filter,1,Len(Filter) - 2); if ( InStr(Caps(Map),Caps(modFilter)) >= 0 ) { return True; } } if ( Filter == "*" ) { return True; } return False; } function CloseAllVoteWindows () { local MapVoteWRI MVWRI; DebugLog("81"); foreach AllActors(Class'MapVoteWRI',MVWRI) { MVWRI.CloseWindow(); MVWRI.Destroy(); } } function string SetupGameMap (string MapName) { local string GameType; local MapList myList; local string MutatorList; local int i; DebugLog("82"); MapName=GetPureMapname(MapName); ResetAssault(); TmpNextVirtualPrefix=FixPrefix(GetPrefix(MapName)); DebugLog("NextVirtualPrefix:" @ TmpNextVirtualPrefix); SaveConfig(); if ( MapName == "" ) { return "?Restart"; } if ( (AutoGameClass != None) && bAutoGame ) { DebugLog("83b"); if ( Left(Caps(MapName),Len(FixPrefix(AutoGameClass.Default.MapPrefix))) ~= FixPrefix(AutoGameClass.Default.MapPrefix) ) { TmpNextRealPrefix=FixPrefix(AutoGameClass.Default.MapPrefix); if ( bFixCTFModifications ) { if ( Right(string(AutoGameClass),12) ~= "MultiCTFGame" ) { DebugLog("MultiCTF detected. Fixing Mapprefix to CTFM"); TmpNextRealPrefix="CTFM"; } } DebugLog("NextRealPrefix:" @ TmpNextRealPrefix); SaveConfig(); TravelMap=MapName; return MapName $ ".unr?game=" $ AutoGame; } } i=0; JL0199: if ( i < 16 ) { if ( CustomGameConfig[i].bEnabled && (CustomGameConfig[i].GameClass != "") ) { DebugLog("83.1"); CustomGameClass=Class(DynamicLoadObject(CustomGameConfig[i].GameClass,Class'Class')); if ( CustomGameClass == None ) { Log("MapVote: Error. CustomGameConfig[" $ string(i) $ "]: Failed to load GameClass:" @ CustomGameConfig[i].GameClass); } else { CustomGameConfig[i].NewPrefix=FixPrefix(CustomGameConfig[i].NewPrefix); if ( bFixCTFModifications ) { if ( Right(CustomGameConfig[i].GameClass,12) ~= "MultiCTFGame" ) { DebugLog("MultiCTF detected. Fixing Mapprefix to CTFM"); CustomGameClass.Default.MapPrefix="CTFM"; } } if ( CustomGameConfig[i].NewPrefix != "" ) { DebugLog("83.2a"); DebugLog(TmpNextVirtualPrefix @ CustomGameConfig[i].NewPrefix); if ( TmpNextVirtualPrefix ~= CustomGameConfig[i].NewPrefix ) { DebugLog("83.2b"); TmpNextRealPrefix=FixPrefix(CustomGameClass.Default.MapPrefix); if ( bFixCTFModifications ) { if ( Right(CustomGameConfig[i].GameClass,12) ~= "MultiCTFGame" ) { TmpNextRealPrefix="CTFM"; } } DebugLog("NextRealPrefix:" @ TmpNextRealPrefix); SaveConfig(); TravelMap=MapName; return TmpNextRealPrefix $ Mid(MapName,Len(TmpNextVirtualPrefix)) $ ".unr?game=" $ CustomGameConfig[i].GameClass; } } else { DebugLog("83.3a"); DebugLog(TmpNextVirtualPrefix @ FixPrefix(CustomGameClass.Default.MapPrefix)); if ( TmpNextVirtualPrefix ~= FixPrefix(CustomGameClass.Default.MapPrefix) ) { DebugLog("83.3b"); TmpNextRealPrefix=FixPrefix(GetPrefix(MapName)); DebugLog("NextRealPrefix:" @ TmpNextRealPrefix); SaveConfig(); TravelMap=MapName; return MapName $ ".unr?game=" $ CustomGameConfig[i].GameClass; } } } } i++; goto JL0199; } if ( Left(Caps(MapName),2) == "DM" ) { GameType="BotPack.DeathMatchPlus"; } if ( Left(Caps(MapName),3) == "LMS" ) { GameType="BotPack.LastManStanding"; MapName="DM" $ Mid(MapName,3); } if ( Left(Caps(MapName),3) == "TDM" ) { GameType="BotPack.TeamGamePlus"; MapName="DM" $ Mid(MapName,3); } if ( Left(Caps(MapName),3) == "DOM" ) { GameType="BotPack.Domination"; } if ( Left(Caps(MapName),3) == "CTF" ) { GameType="BotPack.CTFGame"; } if ( Left(Caps(MapName),2) == "AS" ) { GameType=ASClass; } TmpNextRealPrefix=GetPrefix(MapName); DebugLog("NextRealPrefix:" @ TmpNextRealPrefix); SaveConfig(); TravelMap=MapName; return MapName $ ".unr?game=" $ GameType; } function LoadMapListConfig () { local MapListTemp TempList; local string MapName; local int j; DebugLog("Loading Maplist from file..."); MapVoteHistoryClass=Class(DynamicLoadObject(MapVoteHistoryType,Class'Class')); History=Spawn(MapVoteHistoryClass); if ( History == None ) { DebugLog("89"); MapVoteHistoryClass=Class(DynamicLoadObject("MapVoteLA13.MapVoteHistory1",Class'Class')); History=Spawn(MapVoteHistoryClass); } MapList[0]=""; j=1; i=1; JL00BB: if ( i <= Class'MapListTemp'.Default.MapCount ) { MapName=Class'MapListTemp'.Default.M[i]; if ( History.GetMapSequence(GetPureMapname(MapName)) <= RepeatLimit ) { MapName="[X]" $ MapName; } if ( bRemoveCrashedMaps && IsCrashedMap(MapName) ) { goto JL0157; } MapList[j]=MapName; j++; JL0157: i++; goto JL00BB; } MapCount=j - 1; PrefixDictionary=Class'MapListTemp'.Default.PrefixDictionary; DebugLog("Loading Maplist finished:" @ string(MapCount)); History.Destroy(); } function SaveMapListConfig () { local int i; local int j; local MapListTemp List; DebugLog("Storing Maplist to file..."); List=Spawn(Class'MapListTemp'); List.MapCount=MapCount; List.M[0]=""; i=1; JL005E: if ( i <= MapCount ) { if ( Left(MapList[i],3) ~= "[X]" ) { List.M[i]=Mid(MapList[i],3); } else { List.M[i]=MapList[i]; } i++; goto JL005E; } j=i; JL00E2: if ( j < 1024 ) { List.M[j]=""; j++; goto JL00E2; } List.PrefixDictionary=PrefixDictionary; List.SaveConfig(); List.Destroy(); DebugLog("Storing Maplist to file finished:" @ string(MapCount)); } function UpdatePrefixes () { local int i; local string defaultPrefix; PrefixDictionary=""; i=0; JL000F: if ( i < 16 ) { if ( CustomGameConfig[i].bEnabled && (CustomGameConfig[i].GameClass != "") ) { CustomGameClass=Class(DynamicLoadObject(CustomGameConfig[i].GameClass,Class'Class')); if ( CustomGameClass != None ) { defaultPrefix=FixPrefix(CustomGameClass.Default.MapPrefix); if ( bFixCTFModifications && (Right(CustomGameConfig[i].GameClass,12) ~= "MultiCTFGame") ) { defaultPrefix="CTFM"; } if ( CustomGameConfig[i].NewPrefix == "" ) { CustomGameConfig[i].NewPrefix=defaultPrefix; SaveConfig(); } if ( CustomGameConfig[i].NewPrefix != defaultPrefix ) { PrefixDictionary=PrefixDictionary $ CustomGameConfig[i].NewPrefix $ ";" $ defaultPrefix $ ";"; } } } i++; goto JL000F; } DebugLog("PrefixDictionary:" @ PrefixDictionary); } state Loading { BeginRequested: bMapReloadRequested=True; BroadcastMessage("Maplist is reloading...",True); DebugLog("84a"); Begin: DebugLog("84b"); UpdatePrefixes(); MapVoteHistoryClass=Class(DynamicLoadObject(MapVoteHistoryType,Class'Class')); History=Spawn(MapVoteHistoryClass); if ( History == None ) { DebugLog("89"); MapVoteHistoryClass=Class(DynamicLoadObject("MapVoteLA13.MapVoteHistory1",Class'Class')); History=Spawn(MapVoteHistoryClass); } MapCount=0; for ( i=0; i<1024; i++ ) { MapList[i]=""; } if ( bAutoDetect ) { Log("Detected GameType = " $ string(Level.Game.Class)); bAS=False; bCTF=False; bDM=False; bLMS=False; bTDM=False; bDOM=False; bAutoGame=False; if ( string(Level.Game.Class) ~= ASClass ) { bAS=True; } else if ( string(Level.Game.Class) ~= "Botpack.CTFGame" ) { bCTF=True; } else if ( string(Level.Game.Class) ~= "Botpack.DeathMatchPlus" ) { bDM=True; } else if ( string(Level.Game.Class) ~= "Botpack.LastManStanding" ) { bLMS=True; } else if ( string(Level.Game.Class) ~= "Botpack.TeamGamePlus" ) { bTDM=True; } else if ( string(Level.Game.Class) ~= "Botpack.Domination" ) { bDOM=True; } else { bAutoGame=True; AutoGame=string(Level.Game.Class); } } if ( bAutoGame ) { AutoGameClass=Class(DynamicLoadObject(AutoGame,Class'Class')); } if ( bAS ) { if ( bUseMapList ) { LoadMapCycleList(Class'Assault'.Default.MapListType,"AS","AS",History); } else { LoadMapTypes("AS","AS",History,"Botpack.Assault"); } Sleep(0.00); } if ( bCTF ) { if ( bUseMapList ) { LoadMapCycleList(Class'CTFGame'.Default.MapListType,"CTF","CTF",History); } else { LoadMapTypes("CTF","CTF",History,"Botpack.CTFGame"); } Sleep(0.00); } if ( bDM ) { if ( bUseMapList ) { LoadMapCycleList(Class'DeathMatchPlus'.Default.MapListType,"DM","DM",History); } else { LoadMapTypes("DM","DM",History,"Botpack.DeathMatchPlus"); } Sleep(0.00); } if ( bDOM ) { if ( bUseMapList ) { LoadMapCycleList(Class'Domination'.Default.MapListType,"DOM","DOM",History); } else { LoadMapTypes("DOM","DOM",History,"Botpack.Domination"); } Sleep(0.00); } if ( bTDM ) { if ( bUseMapList ) { LoadMapCycleList(Class'TeamGamePlus'.Default.MapListType,"DM","TDM",History); } else { LoadMapTypes("DM","TDM",History,"Botpack.TeamGamePlus"); } Sleep(0.00); } if ( bLMS ) { if ( bUseMapList ) { LoadMapCycleList(Class'LastManStanding'.Default.MapListType,"DM","LMS",History); } else { LoadMapTypes("DM","LMS",History,"Botpack.LastManStanding"); } Sleep(0.00); } if ( bAutoGame && (AutoGameClass != None) ) { DebugLog("85"); NewPrefix=FixPrefix(AutoGameClass.Default.MapPrefix); if ( bUseMapList ) { LoadMapCycleList(AutoGameClass.Default.MapListType,FixPrefix(AutoGameClass.Default.MapPrefix),NewPrefix,History); } else { LoadMapTypes(FixPrefix(AutoGameClass.Default.MapPrefix),NewPrefix,History,AutoGame); } Sleep(0.00); } if ( !bAutoDetect ) { for ( i=0;i < 16;i++ ) { if ( CustomGameConfig[i].bEnabled && (CustomGameConfig[i].GameClass != "") ) { CustomGameClass=Class(DynamicLoadObject(CustomGameConfig[i].GameClass,Class'Class')); if ( bFixCTFModifications && (Right(CustomGameConfig[i].GameClass,12) ~= "MultiCTFGame") ) { DebugLog("MultiCTF detected. Fixing Mapprefix to CTFM"); CustomGameClass.Default.MapPrefix="CTFM"; } if ( CustomGameClass == None ) { Log("MapVote: Error. CustomGameConfig[" $ string(i) $ "]: Failed to load GameClass:" @ CustomGameConfig[i].GameClass); } else { if ( CustomGameConfig[i].NewPrefix == "" ) { NewPrefix=FixPrefix(CustomGameClass.Default.MapPrefix); } else { NewPrefix=FixPrefix(CustomGameConfig[i].NewPrefix); } if ( bUseMapList ) { LoadMapCycleList(CustomGameClass.Default.MapListType,FixPrefix(CustomGameClass.Default.MapPrefix),NewPrefix,History); } else { LoadMapTypes(FixPrefix(CustomGameClass.Default.MapPrefix),NewPrefix,History,CustomGameConfig[i].GameClass); } } Sleep(0.00); } } } History.Destroy(); if ( Mode == "Elimination" ) { if ( (MapCount < MinMapCount) || (MapCount == 0) && (RepeatLimit > 0) ) { RepeatLimit=0; GotoState('Loading'); } } SortMapList(); Log("BDBMapVote: Maps Reloaded. Total Maps = " $ string(MapCount)); if ( bMapReloadRequested ) { BroadcastMessage("MapVote configuration has been changed, Re-Open Voting window for updates.",True); } bMapReloadRequested=False; if ( bReloadMapsOnRequestOnly ) { SaveMapListConfig(); } } function LoadMapTypes (string Prefix, string PreFixChange, MapVoteHistory History, string GameClass) { local string FirstMap; local string NextMap; local string MapName; local string TestMap; local string FilteredMap; local int Z; local int ignoreCount; local bool bIsPureCTF; DebugLog("86"); DebugLog("Going to load gametype:" @ GameClass @ "using maps with Prefix:" @ Prefix $ ". PreFixChange:" @ PreFixChange); if ( GameClass ~= "Botpack.CTFGame" ) { bIsPureCTF=True; DebugLog("Pure CTF Detected"); } FirstMap=Level.GetMapName(Prefix,"",0); NextMap=FirstMap; while ( !(FirstMap~=TestMap) ) { if ( MapCount >= 1023 ) { ignoreCount++; } else { MapName=NextMap; if ( bFixCTFModifications && bIsPureCTF && ( !(Left(MapName,4) ~= "CTF-") || (Left(MapName,6) ~= "CTF-BT")) ) { DebugLog("CTF prevented from loading wrong map:" @ MapName); } else { Z=InStr(Caps(MapName),".UNR"); if ( Z != -1 ) { MapName=Left(MapName,Z); } MapName=PreFixChange $ Mid(MapName,Len(Prefix)); if ( (InStr(Caps(NextMap),"TUTORIAL") == -1) && (InStr(Caps(NextMap),"INTRO") == -1) ) { if ( History != None ) { if ( History.GetMapSequence(MapName) <= RepeatLimit ) { MapName="[X]" $ MapName; } } FilteredMap=CreateMapnameIncludingListnumber(MapName); if ( FilteredMap != "" ) { MapCount++; MapList[MapCount]=FilteredMap; if ( bDebugMode ) { DebugLog("Loading Map[" $ string(MapCount) $ "]:" @ FilteredMap); } } else { if ( bDebugMode ) { DebugLog("Map ignored cause no filter matches:" @ GetPureMapname(MapName)); } } } } } NextMap=Level.GetMapName(Prefix,NextMap,1); TestMap=NextMap; } if ( ignoreCount > 0 ) { Log("Ignored" @ string(ignoreCount) @ "Maps with Prefix" @ Prefix @ "cause mapcount > 1023",'MapVoteLAvv'); } } function LoadMapCycleList (Class MapListType, string Prefix, string PreFixChange, MapVoteHistory History) { local MapList MapCycleList; local string MapName; local string FilteredMap; local int X; local int Z; DebugLog("87"); MapCycleList=Spawn(MapListType); if ( MapCycleList != None ) { X=0; JL002A: if ( (X < 32) && (MapCycleList.Maps[X] != "") ) { MapName=MapCycleList.Maps[X++ ]; Z=InStr(Caps(MapName),".UNR"); if ( Z != -1 ) { MapName=Left(MapName,Z); } MapName=PreFixChange $ Mid(MapName,Len(Prefix)); if ( History != None ) { if ( History.GetMapSequence(MapName) <= RepeatLimit ) { MapName="[X]" $ MapName; } } FilteredMap=CreateMapnameIncludingListnumber(MapName); if ( FilteredMap != "" ) { MapCount++; MapList[MapCount]=FilteredMap; if ( bDebugMode ) { DebugLog("Loading Map[" $ string(MapCount) $ "]" @ FilteredMap); } } else { if ( bDebugMode ) { DebugLog("Map ignored cause no filter matches:" @ GetPureMapname(MapName)); } } goto JL002A; } MapCycleList.Destroy(); } else { Log("MapList Spawn Failed"); } } function DebugLog (string Msg) { if ( bDebugMode ) { Log("MV " $ Msg,'MapVoteLAvv'); } } function int ResetAssault () { local int CurrentDefender; if ( Level.Game.IsA('Assault') ) { if ( GetWinningTeam() != -1 ) { Log("BDBMapVote: Team " $ string(GetWinningTeam()) $ " won the round."); if ( GetWinningTeam() == 1 ) { CurrentDefender=0; } else { CurrentDefender=1; } Log("BDBMapVote: Setting Team " $ string(CurrentDefender) $ " as the defending team for the next map."); } else { CurrentDefender=0; } Assault(Level.Game).ResetGame(); Assault(Level.Game).bDefenseSet=False; Assault(Level.Game).NumDefenses=0; Assault(Level.Game).SavedTime=0.00; Assault(Level.Game).GameCode=""; Assault(Level.Game).Part=1; Assault(Level.Game).bTiePartOne=False; Assault(Level.Game).CurrentDefender=CurrentDefender; Assault(Level.Game).SaveConfig(); } return 0; } function int GetWinningTeam () { if ( Assault(Level.Game).bDefenseSet ) { if ( Assault(Level.Game).bAssaultWon ) { return Assault(Level.Game).Attacker.TeamIndex; } else { if ( !Assault(Level.Game).bTiePartOne ) { return Assault(Level.Game).Defender.TeamIndex; } else { return -1; } } } else { return -1; } } function int GetMapIndex (string MapName) { local int X; local int MapIndex; MapName=GetPureMapname(MapName); X=1; JL0018: if ( X <= MapCount ) { if ( GetPureMapname(MapList[X]) ~= MapName ) { MapIndex=X; } else { X++; goto JL0018; } } return MapIndex; } function int GetRandomMap () { local int randmap; local int security; JL0000: if ( (randmap < 1) || (GetMapListNumber(MapList[randmap]) != MapListIfNooneVoted) ) { randmap=Rand(MapCount) + 1; if ( ++security > 100 ) { randmap=Rand(MapCount) + 1; } else { goto JL0000; } } if ( security > 100 ) { Log("Error: GetRandomMap() failed for List" @ string(MapListIfNooneVoted),'MapVoteLAvv'); } Log("GetRandomMap() configured for List" @ string(MapListIfNooneVoted) @ "took the random map:" @ string(randmap) @ MapList[randmap]); return randmap; } function HandleFailedMap (string MapName) { local int i; MapName=GetPureMapname(MapName); DebugLog("Crashed map:" @ MapName); i=0; JL0033: if ( (i < 31) && (CrashedMaps[i] != "") ) { if ( CrashedMaps[i] == MapName ) { return; } i++; goto JL0033; } CrashedMaps[i]=MapName; DebugLog("Added failed map:" @ MapName @ "to slot" @ string(i)); SaveConfig(); StaticSaveConfig(); } function StartMutatorsAndSettings () { local string ActualPrefix; local string TestPrefix; local string Prefixes; local string Mutators; local string Settings; local int i; local int pos; if ( bFixCTFModifications ) { if ( Right(string(Level.Game.Class),12) ~= "MultiCTFGame" ) { DebugLog("MultiCTF detected. Fixing Mapprefix to CTFM"); Level.Game.Default.MapPrefix="CTFM"; Level.Game.MapPrefix="CTFM"; } } ActualPrefix=FixPrefix(Level.Game.MapPrefix); DebugLog("NextVirtualPrefix/NextRealPrefix/ActualPrefix:" @ TmpNextVirtualPrefix $ "/" $ TmpNextRealPrefix $ "/" $ ActualPrefix); if ( (TmpNextRealPrefix == ActualPrefix) && (TmpNextVirtualPrefix != "") ) { ActualPrefix=TmpNextVirtualPrefix; DebugLog("MapVote: Prefix OK. Mapchange seems to have been successful"); } if ( DefaultSettings != "" ) { Settings=DefaultSettings; JL01A1: if ( Len(Settings) > 0 ) { pos=InStr(Settings,";"); if ( pos < 0 ) { pos=InStr(Settings,","); } if ( pos < 0 ) { ExecuteSetting(Settings,True); Settings=""; } else { ExecuteSetting(Left(Settings,pos),True); Settings=Mid(Settings,pos + 1); } goto JL01A1; } } i=0; JL022D: if ( i < 16 ) { if ( CustomGameConfig[i].bEnabled ) { TestPrefix=CustomGameConfig[i].NewPrefix; if ( ActualPrefix ~= TestPrefix ) { if ( CustomGameConfig[i].Mutators != "" ) { Mutators=CustomGameConfig[i].Mutators; JL029F: if ( Len(Mutators) > 0 ) { pos=InStr(Mutators,";"); if ( pos < 0 ) { pos=InStr(Mutators,","); } if ( pos < 0 ) { StartActorMutator(Mutators); Mutators=""; } else { StartActorMutator(Left(Mutators,pos)); Mutators=Mid(Mutators,pos + 1); } goto JL029F; } } if ( CustomGameConfig[i].Settings != "" ) { Settings=CustomGameConfig[i].Settings; JL034F: if ( Len(Settings) > 0 ) { pos=InStr(Settings,";"); if ( pos < 0 ) { pos=InStr(Settings,","); } if ( pos < 0 ) { ExecuteSetting(Settings,False); Settings=""; } else { ExecuteSetting(Left(Settings,pos),False); Settings=Mid(Settings,pos + 1); } goto JL034F; } } } } i++; goto JL022D; } } function StartActorMutator (string ClassString) { local Actor A; local Class ActorClass; Log("StartMutator:" @ ClassString,'MapVoteLAvv'); ActorClass=Class(DynamicLoadObject(ClassString,Class'Class')); if ( ActorClass == None ) { Log("Starting Actor/Mutator FAILED. Could not DynamicLoadObject:" @ ClassString,'MapVoteLAvv'); return; } foreach AllActors(ActorClass,A) { Log("Actor already spawned:" @ ClassString,'MapVoteLAvv'); return; } A=Spawn(ActorClass); if ( A == None ) { Log("Spawning Actor/Mutator FAILED:" @ ClassString,'MapVoteLAvv'); return; } if ( A.IsA('Mutator') ) { Level.Game.BaseMutator.AddMutator(Mutator(A)); } } function ExecuteSetting (string Setting, bool bIsDefaultSetting) { local string Property; local string Value; local string Prev; local string Next; Property=Left(Setting,InStr(Setting,"=")); Value=Mid(Setting,InStr(Setting,"=") + 1); if ( bIsDefaultSetting ) { Log("Execute default Setting:" @ Setting $ ". Property:" @ Property $ ". Value:" @ Value,'MapVoteLAvv'); } else { Log("Execute Setting:" @ Setting $ ". Property:" @ Property $ ". Value:" @ Value,'MapVoteLAvv'); } Prev=Level.Game.GetPropertyText(Property); Level.Game.SetPropertyText(Property,Value); Next=Level.Game.GetPropertyText(Property); DebugLog("Changed Setting:" @ Property $ ". Previous value:" @ Prev $ ". new value:" @ Next); } function float MaxFloat (float val1, float val2) { if ( val1 > val2 ) { return val1; } else { return val2; } } function string GetPrefix (string MapName) { if ( Left(MapName,6) ~= "CTF-BT" ) { return "CTF-BT"; } return Caps(Left(MapName,InStr(MapName,"-"))); } function string FixPrefix (string Prefix) { if ( Right(Prefix,1) == "-" ) { return Left(Prefix,Len(Prefix) - 1); } else { return Prefix; } } function string RemovePrefix (string MapName) { return Mid(MapName,InStr(MapName,"-") + 1); } Ü{IPÁ¨ý/a0 { ¥w 10s-a6q±”±?’_ ,pNextURL = ”ìpNextSwitchCountdown = U”ôqz”ì7\°”ô?%ç¨Map change Failed, bad or missing map file. TravelMap:_!-|e_m Hc:m ” Vc(q” Vc( ”—l%8¦l’šl%9Q ”±I”ÌkwI*T‚w.…I*I-Õt.…I¥Ä'T—tÿÿÿÿTšt2%L.…I((IIÍÊpSm seconds left to vote.' ¦m0šm,<101 Minute left to vote.'j”Ì0wj*ja/!@.ÒjF, jjÍägšm, 1110 seconds left to vote.'ã‚–m,  —m%j”Ìãwj*Ìja/!@.Òj FmjjÍ”/ß‚´­?m?,?% —m%12c %I”ÌÃwI*¬‚I-Õw.…I*t.…I¥Ä'¬—tÿÿÿÿ¬št2%¥c IIÍ-ßšc %13D'ûšm%14D' ÂY u 6 k95së.u <ë.t <ÿÿÿÿ& EZv l¦³ )K 2v '—K %_K  j Dp n‚/{2p -—{%{.o  €Fì//================================================================================ // AdminWindow. //================================================================================ class AdminWindow extends UWindowPageWindow; var UWindowCheckbox cbLoadDM; var UWindowCheckbox cbLoadLMS; var UWindowCheckbox cbLoadTDM; var UWindowCheckbox cbLoadAS; var UWindowCheckbox cbLoadDOM; var UWindowCheckbox cbLoadCTF; var UWindowCheckbox cbAutoDetect; var UWindowCheckbox cbCheckOtherGameTie; var UWindowCheckbox cbReloadMapsOnRequestOnly; var UWindowCheckbox cbCustGame[16]; var UWindowSmallButton RemoteSaveButton; var UWindowSmallButton ReloadMapsButton; var UWindowSmallButton CloseButton; var UWindowSmallButton ListCrashButton; var UWindowSmallButton ClearCrashButton; var UWindowHSliderControl sldVoteTimeLimit; var UMenuLabelControl lblVoteTimeLimit; var UWindowHSliderControl sldKickPercent; var UMenuLabelControl lblKickPercent; var UWindowEditControl txtRepeatLimit; var UWindowEditControl txtMinMapCount; var UWindowHSliderControl sldMidGameVotePercent; var UWindowComboControl cboMode; var UWindowEditControl txtServerInfoURL; var UWindowEditControl txtMapInfoURL; var UWindowComboControl cboMapVoteHistoryType; var UMenuLabelControl lblMidGameVotePercent; var UMenuLabelControl lblGameTypeSection; var UMenuLabelControl lblMiscSection; var UMenuLabelControl lblOtherClass; var UMenuLabelControl lblLimitsLabel; var UMenuLabelControl lblMapPreFixOverRide; var UMenuLabelControl lblRepeatLimit; var UMenuLabelControl lblMinMapCount; var UMenuLabelControl lblAdvancedSection; var UMenuLabelControl lblServerInfoURL; var UMenuLabelControl lblMapInfoURL; var UMenuLabelControl lblASClass; var UMenuLabelControl lblActGame; var UMenuLabelControl lblActPrefix; var UMenuLabelControl lblCustGame[16]; var UMenuLabelControl lblTemp; var UWindowCheckbox cbUseMapList; var UWindowCheckbox cbAutoOpen; var UWindowCheckbox cbKickVote; var UWindowCheckbox cbEntryWindows; var UWindowHSliderControl sldScoreBoardDelay; var UMenuLabelControl lblScoreBoardDelay; var UWindowCheckbox cbSortWithPreFix; var UWindowCheckbox cbDebugMode; var UWindowEditControl txtList1Title; var UWindowEditControl txtList2Title; var UWindowEditControl txtList3Title; var UWindowEditControl txtList4Title; var UWindowEditControl txtMapVoteTitle; var UWindowEditControl txtList1Priority; var UWindowEditControl txtList2Priority; var UWindowEditControl txtList3Priority; var UWindowEditControl txtList4Priority; var UWindowEditControl txtASClass; var UWindowCheckbox cbRemoveCrashedMaps; var UWindowCheckbox cbUseExcludeFilter; function Created () { local Color C; local int i; local int gap; Super.Created(); DesiredWidth=600.00; DesiredHeight=500.00; gap=14; lblGameTypeSection=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',10.00,10.00,90.00,20.00)); lblGameTypeSection.SetText("Visual Config"); cbAutoDetect=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',420.00,30.00,20.00,20.00)); cbAutoDetect.bAcceptsFocus=False; lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',440.00,30.00,60.00,20.00)); lblTemp.SetText("Auto Detect"); cbLoadDM=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',420.00,25.00 + 2 * gap,20.00,20.00)); lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',440.00,25.00 + 2 * gap,60.00,20.00)); lblTemp.SetText("DM"); cbLoadTDM=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',420.00,25.00 + 3 * gap,20.00,20.00)); lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',440.00,25.00 + 3 * gap,60.00,20.00)); lblTemp.SetText("TDM"); cbLoadLMS=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',420.00,25.00 + 4 * gap,20.00,20.00)); lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',440.00,25.00 + 4 * gap,60.00,20.00)); lblTemp.SetText("LMS"); cbLoadCTF=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',420.00,25.00 + 5 * gap,20.00,20.00)); lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',440.00,25.00 + 5 * gap,60.00,20.00)); lblTemp.SetText("CTF"); cbLoadDOM=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',420.00,25.00 + 6 * gap,20.00,20.00)); lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',440.00,25.00 + 6 * gap,60.00,20.00)); lblTemp.SetText("DOM"); cbLoadAS=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',420.00,25.00 + 7 * gap,20.00,20.00)); lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',440.00,25.00 + 7 * gap,130.00,20.00)); lblTemp.SetText("Assault:"); txtASClass=UWindowEditControl(CreateControl(Class'UWindowEditControl',480.00,24.00 + 7 * gap,140.00,20.00)); txtASClass.SetNumericOnly(False); txtASClass.EditBoxWidth=140.00; i=0; JL0452: if ( i < 16 ) { cbCustGame[i]=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',420.00,20.00 + (9 + i) * gap,20.00,20.00)); lblCustGame[i]=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',440.00,20.00 + (9 + i) * gap,200.00,20.00)); lblCustGame[i].SetText("empty"); i++; goto JL0452; } cbUseExcludeFilter=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',420.00,10.00 + 26 * gap,20.00,20.00)); lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',440.00,10.00 + 26 * gap,170.00,20.00)); lblTemp.SetText("Use Exclude Filter"); lblLimitsLabel=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',10.00,110.00,50.00,20.00)); lblLimitsLabel.SetText("Limits"); sldVoteTimeLimit=UWindowHSliderControl(CreateControl(Class'UWindowHSliderControl',10.00,130.00,170.00,20.00)); sldVoteTimeLimit.bAcceptsFocus=False; sldVoteTimeLimit.MinValue=20.00; sldVoteTimeLimit.MaxValue=180.00; sldVoteTimeLimit.Step=10; sldVoteTimeLimit.SetText("Voting Time Limit"); lblVoteTimeLimit=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',190.00,130.00,40.00,20.00)); lblVoteTimeLimit.SetText(string(sldVoteTimeLimit.Value) $ " sec"); sldKickPercent=UWindowHSliderControl(CreateControl(Class'UWindowHSliderControl',10.00,150.00,170.00,20.00)); sldKickPercent.MinValue=10.00; sldKickPercent.MaxValue=100.00; sldKickPercent.Step=1; sldKickPercent.SetText("Kick Votes Req."); lblKickPercent=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',190.00,150.00,40.00,20.00)); lblKickPercent.SetText(string(sldKickPercent.Value) $ " %"); sldScoreBoardDelay=UWindowHSliderControl(CreateControl(Class'UWindowHSliderControl',10.00,170.00,180.00,20.00)); sldScoreBoardDelay.MinValue=1.00; sldScoreBoardDelay.MaxValue=30.00; sldScoreBoardDelay.Step=1; sldScoreBoardDelay.SetText("ScoreBoard Delay"); lblScoreBoardDelay=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',190.00,170.00,40.00,20.00)); lblScoreBoardDelay.SetText(string(sldScoreBoardDelay.Value) $ " sec"); sldMidGameVotePercent=UWindowHSliderControl(CreateControl(Class'UWindowHSliderControl',10.00,190.00,185.00,20.00)); sldMidGameVotePercent.MinValue=1.00; sldMidGameVotePercent.MaxValue=100.00; sldMidGameVotePercent.Step=1; sldMidGameVotePercent.SetText("Mid-Game Voter Req."); lblMidGameVotePercent=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',195.00,190.00,40.00,20.00)); lblMidGameVotePercent.SetText(string(sldMidGameVotePercent.Value) $ " %"); txtRepeatLimit=UWindowEditControl(CreateControl(Class'UWindowEditControl',230.00,130.00,95.00,20.00)); txtRepeatLimit.SetNumericOnly(True); txtRepeatLimit.SetText("Don't Show Last"); txtRepeatLimit.EditBoxWidth=20.00; lblRepeatLimit=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',330.00,130.00,60.00,20.00)); lblRepeatLimit.SetText("maps Played"); txtMinMapCount=UWindowEditControl(CreateControl(Class'UWindowEditControl',230.00,150.00,120.00,20.00)); txtMinMapCount.SetNumericOnly(True); txtMinMapCount.SetText("Reload Map List when"); txtMinMapCount.EditBoxWidth=20.00; lblMinMapCount=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',230.00,165.00,200.00,20.00)); lblMinMapCount.SetText("maps remain. (Elimiation Mode only)"); lblMiscSection=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',10.00,210.00,50.00,20.00)); lblMiscSection.SetText("Misc."); cbUseMapList=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',10.00,230.00,300.00,20.00)); cbUseMapList.SetText("Use the Map Cycle List instead of all maps"); cbUseMapList.SetFont(0); cbUseMapList.Align=TA_Right; cbUseMapList.SetSize(200.00,1.00); cbAutoOpen=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',10.00,250.00,300.00,20.00)); cbAutoOpen.SetText("Open Voting Window at Game End"); cbAutoOpen.SetFont(0); cbAutoOpen.Align=TA_Right; cbAutoOpen.SetSize(200.00,1.00); cbKickVote=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',10.00,270.00,300.00,20.00)); cbKickVote.SetText("Enable Player Kick Voting"); cbKickVote.SetFont(0); cbKickVote.Align=TA_Right; cbKickVote.SetSize(200.00,1.00); cbCheckOtherGameTie=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',10.00,290.00,300.00,20.00)); cbCheckOtherGameTie.SetText("Check Sudden Death OverTime"); cbCheckOtherGameTie.SetFont(0); cbCheckOtherGameTie.Align=TA_Right; cbCheckOtherGameTie.SetSize(200.00,1.00); cboMode=UWindowComboControl(CreateControl(Class'UWindowComboControl',230.00,230.00,120.00,1.00)); cboMode.SetText("Mode"); cboMode.SetEditable(False); cboMode.EditBoxWidth=90.00; cboMode.AddItem("Majority"); cboMode.AddItem("Elimination"); cboMode.AddItem("Score"); cboMode.AddItem("Accumulation"); lblActGame=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',230.00,260.00,200.00,20.00)); lblActPrefix=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',230.00,280.00,200.00,20.00)); lblAdvancedSection=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',10.00,310.00,50.00,20.00)); lblAdvancedSection.SetText("Advanced"); txtServerInfoURL=UWindowEditControl(CreateControl(Class'UWindowEditControl',10.00,330.00,370.00,15.00)); txtServerInfoURL.SetNumericOnly(False); txtServerInfoURL.SetText("Welcome Page Web Server URL"); txtServerInfoURL.EditBoxWidth=210.00; lblServerInfoURL=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',10.00,345.00,400.00,20.00)); lblServerInfoURL.SetText("Example: www.MyServer.com:80/UnrealStuff/WelcomePage.htm"); txtMapInfoURL=UWindowEditControl(CreateControl(Class'UWindowEditControl',10.00,365.00,370.00,15.00)); txtMapInfoURL.SetNumericOnly(False); txtMapInfoURL.SetText("Map Information Web Server URL"); txtMapInfoURL.EditBoxWidth=210.00; lblMapInfoURL=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',10.00,380.00,400.00,20.00)); lblMapInfoURL.SetText("Example: www.MyServer.com:80/MapFiles/"); cboMapVoteHistoryType=UWindowComboControl(CreateControl(Class'UWindowComboControl',10.00,395.00,370.00,1.00)); cboMapVoteHistoryType.SetText("Map Vote History Class Type"); cboMapVoteHistoryType.SetEditable(True); cboMapVoteHistoryType.EditBoxWidth=210.00; cboMapVoteHistoryType.AddItem("MapVoteLA13.MapVoteHistory1"); cboMapVoteHistoryType.AddItem("MapVoteLA13.MapVoteHistory2"); cboMapVoteHistoryType.AddItem("MapVoteLA13.MapVoteHistory3"); cboMapVoteHistoryType.AddItem("MapVoteLA13.MapVoteHistory4"); cbEntryWindows=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',10.00,420.00,320.00,20.00)); cbEntryWindows.SetText("Open Welcome Window and KeyBinder when player enters server"); cbEntryWindows.SetFont(0); cbEntryWindows.Align=TA_Right; cbEntryWindows.SetSize(320.00,1.00); cbSortWithPreFix=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',10.00,445.00,140.00,20.00)); cbSortWithPreFix.SetText("Sort Maps with PreFix"); cbSortWithPreFix.SetFont(0); cbSortWithPreFix.Align=TA_Right; cbSortWithPreFix.SetSize(120.00,1.00); cbSortWithPreFix.bAcceptsFocus=False; cbDebugMode=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',10.00,470.00,140.00,20.00)); cbDebugMode.SetText("Debug Mode"); cbDebugMode.SetFont(0); cbDebugMode.Align=TA_Right; cbDebugMode.SetSize(80.00,1.00); cbDebugMode.bAcceptsFocus=False; ListCrashButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',170.00,470.00,100.00,20.00)); ListCrashButton.Text="List crashed maps"; ClearCrashButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',280.00,470.00,100.00,20.00)); ClearCrashButton.Text="Clear crash List"; cbRemoveCrashedMaps=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',170.00,450.00,140.00,20.00)); cbRemoveCrashedMaps.SetText("Remove crashed maps"); cbRemoveCrashedMaps.SetFont(0); cbRemoveCrashedMaps.Align=TA_Right; cbRemoveCrashedMaps.SetSize(120.00,1.00); lblGameTypeSection=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',420.00,10.00,120.00,20.00)); lblGameTypeSection.SetText("Game Types"); txtMapVoteTitle=UWindowEditControl(CreateControl(Class'UWindowEditControl',10.00,30.00,190.00,20.00)); txtMapVoteTitle.SetNumericOnly(False); txtMapVoteTitle.SetText("Mapvote Title"); txtMapVoteTitle.EditBoxWidth=120.00; txtList1Title=UWindowEditControl(CreateControl(Class'UWindowEditControl',10.00,45.00,190.00,20.00)); txtList1Title.SetNumericOnly(False); txtList1Title.SetText("List 1 Title"); txtList1Title.EditBoxWidth=120.00; txtList2Title=UWindowEditControl(CreateControl(Class'UWindowEditControl',10.00,60.00,190.00,20.00)); txtList2Title.SetNumericOnly(False); txtList2Title.SetText("List 2 Title"); txtList2Title.EditBoxWidth=120.00; txtList3Title=UWindowEditControl(CreateControl(Class'UWindowEditControl',10.00,75.00,190.00,20.00)); txtList3Title.SetNumericOnly(False); txtList3Title.SetText("List 3 Title"); txtList3Title.EditBoxWidth=120.00; txtList4Title=UWindowEditControl(CreateControl(Class'UWindowEditControl',10.00,90.00,190.00,20.00)); txtList4Title.SetNumericOnly(False); txtList4Title.SetText("List 4 Title"); txtList4Title.EditBoxWidth=120.00; txtList1Priority=UWindowEditControl(CreateControl(Class'UWindowEditControl',230.00,45.00,160.00,20.00)); txtList1Priority.SetNumericOnly(False); txtList1Priority.SetText("Priority"); txtList1Priority.EditBoxWidth=120.00; txtList2Priority=UWindowEditControl(CreateControl(Class'UWindowEditControl',230.00,60.00,160.00,20.00)); txtList2Priority.SetNumericOnly(False); txtList2Priority.SetText("Priority"); txtList2Priority.EditBoxWidth=120.00; txtList3Priority=UWindowEditControl(CreateControl(Class'UWindowEditControl',230.00,75.00,160.00,20.00)); txtList3Priority.SetNumericOnly(False); txtList3Priority.SetText("Priority"); txtList3Priority.EditBoxWidth=120.00; txtList4Priority=UWindowEditControl(CreateControl(Class'UWindowEditControl',230.00,90.00,160.00,20.00)); txtList4Priority.SetNumericOnly(False); txtList4Priority.SetText("Priority"); txtList4Priority.EditBoxWidth=120.00; RemoteSaveButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',425.00,400.00,190.00,20.00)); RemoteSaveButton.Text="Save"; RemoteSaveButton.SetAcceptsFocus(); RemoteSaveButton.FocusWindow(); RemoteSaveButton.bDisabled=True; cbReloadMapsOnRequestOnly=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',425.00,430.00,300.00,20.00)); cbReloadMapsOnRequestOnly.SetText("Reload Maps on request only"); cbReloadMapsOnRequestOnly.SetFont(0); cbReloadMapsOnRequestOnly.Align=TA_Right; cbReloadMapsOnRequestOnly.SetSize(150.00,1.00); ReloadMapsButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',425.00,450.00,190.00,20.00)); ReloadMapsButton.Text="Reload Maps"; CloseButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',425.00,475.00,190.00,20.00)); CloseButton.Text="Close"; } function Notify (UWindowDialogControl C, byte E) { local int i; local string CustString; Super.Notify(C,E); switch (E) { case 2: switch (C) { case ListCrashButton: GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE LISTCRASHEDMAPS"); break; case ClearCrashButton: GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE CLEARCRASHEDMAPS"); break; case CloseButton: ParentWindow.ParentWindow.ParentWindow.Close(); break; case RemoteSaveButton: GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bDM " $ string(cbLoadDM.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bLMS " $ string(cbLoadLMS.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bTDM " $ string(cbLoadTDM.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bAS " $ string(cbLoadAS.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bDOM " $ string(cbLoadDOM.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bCTF " $ string(cbLoadCTF.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote VoteTimeLimit " $ string(sldVoteTimeLimit.Value)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote KickPercent " $ string(sldKickPercent.Value)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bUseMapList " $ string(cbUseMapList.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bAutoOpen " $ string(cbAutoOpen.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bKickVote " $ string(cbKickVote.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote ScoreBoardDelay " $ string(sldScoreBoardDelay.Value)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bAutoDetect " $ string(cbAutoDetect.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bCheckOtherGameTie " $ string(cbCheckOtherGameTie.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote RepeatLimit " $ txtRepeatLimit.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote MapVoteHistoryType " $ cboMapVoteHistoryType.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote ServerInfoURL " $ txtServerInfoURL.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote MapInfoURL " $ txtMapInfoURL.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote MidGameVotePercent " $ string(sldMidGameVotePercent.Value)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote Mode " $ cboMode.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote MinMapCount " $ txtMinMapCount.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bEntryWindows " $ string(cbEntryWindows.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bSortWithPreFix " $ string(cbSortWithPreFix.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bDebugMode " $ string(cbDebugMode.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote MapVoteTitle " $ txtMapVoteTitle.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote List1Title " $ txtList1Title.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote List2Title " $ txtList2Title.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote List3Title " $ txtList3Title.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote List4Title " $ txtList4Title.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote List1Priority " $ txtList1Priority.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote List2Priority " $ txtList2Priority.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote List3Priority " $ txtList3Priority.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote List4Priority " $ txtList4Priority.GetValue()); if ( (txtASClass.GetValue() == "") || (Len(txtASClass.GetValue()) < 10) ) { txtASClass.SetValue("Botpack.Assault"); } GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote ASClass " $ txtASClass.GetValue()); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bRemoveCrashedMaps " $ string(cbRemoveCrashedMaps.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bReloadMapsOnRequestOnly " $ string(cbReloadMapsOnRequestOnly.bChecked)); GetPlayerOwner().ConsoleCommand("ADMIN SET MapVoteLA13.BDBMapVote bUseExcludeFilter " $ string(cbUseExcludeFilter.bChecked)); i=0; JL0CFC: if ( i < 16 ) { if ( cbCustGame[i].bChecked ) { CustString=CustString $ "1"; } else { CustString=CustString $ "0"; } i++; goto JL0CFC; } GetPlayerOwner().ConsoleCommand("Mutate BDBMAPVOTE CUSTSETTING" @ CustString); GetPlayerOwner().ClientMessage("Settings saved!"); break; case ReloadMapsButton: GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE RELOADMAPS"); ParentWindow.ParentWindow.ParentWindow.Close(); break; case cbLoadDM: if ( cbLoadDM.bChecked ) { cbAutoDetect.bChecked=False; } break; case cbLoadLMS: if ( cbLoadLMS.bChecked ) { cbAutoDetect.bChecked=False; } break; case cbLoadTDM: if ( cbLoadTDM.bChecked ) { cbAutoDetect.bChecked=False; } break; case cbLoadAS: if ( cbLoadAS.bChecked ) { cbAutoDetect.bChecked=False; } break; case cbLoadCTF: if ( cbLoadCTF.bChecked ) { cbAutoDetect.bChecked=False; } break; case cbLoadDOM: if ( cbLoadDOM.bChecked ) { cbAutoDetect.bChecked=False; } break; case cbAutoDetect: if ( cbAutoDetect.bChecked ) { cbLoadDM.bChecked=False; cbLoadLMS.bChecked=False; cbLoadTDM.bChecked=False; cbLoadAS.bChecked=False; cbLoadCTF.bChecked=False; cbLoadDOM.bChecked=False; } break; default: } break; case 1: switch (C) { case sldVoteTimeLimit: lblVoteTimeLimit.SetText(string(sldVoteTimeLimit.Value) $ " sec"); break; case sldKickPercent: lblKickPercent.SetText(string(sldKickPercent.Value) $ " %"); break; case sldScoreBoardDelay: lblScoreBoardDelay.SetText(string(sldScoreBoardDelay.Value) $ " sec"); break; case sldMidGameVotePercent: lblMidGameVotePercent.SetText(string(sldMidGameVotePercent.Value) $ " %"); break; default: } break; default: } } function Paint (Canvas C, float MouseX, float MouseY) { Super.Paint(C,MouseX,MouseY); C.DrawColor.R=0; C.DrawColor.G=0; C.DrawColor.B=0; DrawStretchedTexture(C,10.00,20.00,380.00,2.00,Texture'WhiteTexture'); DrawStretchedTexture(C,420.00,20.00,200.00,2.00,Texture'WhiteTexture'); DrawStretchedTexture(C,10.00,120.00,380.00,2.00,Texture'WhiteTexture'); DrawStretchedTexture(C,10.00,220.00,380.00,2.00,Texture'WhiteTexture'); DrawStretchedTexture(C,10.00,320.00,380.00,2.00,Texture'WhiteTexture'); DrawStretchedTexture(C,405.00,20.00,2.00,490.00,Texture'WhiteTexture'); } jÂTs 6 `95së.s Të.r Tÿÿÿÿ& a^B[“Ë[H&B,N˜B#D–B!H!HB¥B_H €b//================================================================================ // AdminTabWindow. //================================================================================ class AdminTabWindow extends UWindowScrollingDialogClient; function Created () { ClientClass=Class'AdminWindow'; FixedAreaClass=None; Super.Created(); } Â3q 6 D95së.q 3ë.g 3ÿÿÿÿ& V T<‹qb õC]!_¨ ðõ]W W �$`w.Ï]*[.Ï]`w[*-x'[-Ã'] Š[¹¹� ÿÿî ë$] åU±�-M  âwU*kpUUÉ secè ÿÿî ÿÿ €T T T S þÿÿÿlS ýÿÿÿ\S ÿÿÿÿ_ S ÿÿÿÿ| S ÿÿÿÿFS ýÿÿÿc T ZS ýÿÿÿn S þÿÿÿtS ÿÿÿÿ` S öÿÿÿbS ÿÿÿÿd S ýÿÿÿs S ÿÿÿÿS S ýÿÿÿv S þÿÿÿn| ðÿÿÿr [ óÿÿÿXS ýÿÿÿd T oS ýÿÿÿe d üÿÿÿgS þÿÿÿih õÿÿÿYS ÿÿÿÿES þÿÿÿeS þÿÿÿcS þÿÿÿmS ÿÿÿÿD| æÿÿÿY | ÷ÿÿÿoS þÿÿÿhEôÿÿÿO | îÿÿÿe S þÿÿÿpd üÿÿÿWS éÿÿÿJE þÿÿÿgS þÿÿÿqS þÿÿÿ`HëÿÿÿW HëÿÿÿV HëÿÿÿP S ÿÿÿÿ^ | ÕÿÿÿdD÷ÿÿÿjDüÿÿÿOS þÿÿÿGDüÿÿÿNS þÿÿÿ[S ýÿÿÿw S þÿÿÿdj óÿÿÿS | üÿÿÿiS þÿÿÿmHÚÿÿÿj| âÿÿÿq_ èÿÿÿ]_ êÿÿÿpS þÿÿÿj_ Úÿÿÿc T \ | ðÿÿÿkEÆÿÿÿkFèÿÿÿN S ýÿÿÿO| üÿÿÿRF»ÿÿÿIS éÿÿÿVDáÿÿÿa | ûÿÿÿw d óÿÿÿ\ | ÷ÿÿÿ`| îÿÿÿlS ¿ÿÿÿOS öÿÿÿaS ýÿÿÿ|d üÿÿÿEûÿÿÿJDíÿÿÿcFêÿÿÿ^EîÿÿÿLT _| ÊÿÿÿG Eüÿÿÿad üÿÿÿV| âÿÿÿWd üÿÿÿeS þÿÿÿod æÿÿÿEÝÿÿÿKS þÿÿÿ]S þÿÿÿgS ýÿÿÿm HðÿÿÿK S ÿÿÿÿh S öÿÿÿdEèÿÿÿJS þÿÿÿkS ÿÿÿÿj S öÿÿÿcS þÿÿÿiS ýÿÿÿj S ýÿÿÿMS ªÿÿÿxj êÿÿÿfd üÿÿÿXd Éÿÿÿ| õÿÿÿo S éÿÿÿxS éÿÿÿyS éÿÿÿ|S éÿÿÿ{d Éÿÿÿ!d ðÿÿÿ(| ÍÿÿÿtS éÿÿÿwS ýÿÿÿl S þÿÿÿZd †ÿÿÿS éÿÿÿzS ÿÿÿÿHDáÿÿÿmFáÿÿÿs DèÿÿÿNS ýÿÿÿE d âÿÿÿ6S éÿÿÿpd ÕÿÿÿB| ÆÿÿÿeEüÿÿÿ\d óÿÿÿ[ T ¿ÿÿÿQDáÿÿÿnHèÿÿÿTS ªÿÿÿvD²ÿÿÿNd æÿÿÿ| ÖÿÿÿRd ¡ÿÿÿd æÿÿÿKd ˜ÿÿÿ!S éÿÿÿ@| âÿÿÿs| Áÿÿÿud üÿÿÿEØÿÿÿBd ÚÿÿÿEêÿÿÿLd üÿÿÿY| æÿÿÿOd üÿÿÿ(d ðÿÿÿP|  ÿÿÿpd ûÿÿÿEd üÿÿÿ| üÿÿÿn| šÿÿÿLS ÿÿÿÿo | üÿÿÿm| ¸ÿÿÿLS ýÿÿÿD DüÿÿÿMDüÿÿÿPD xÿÿÿRF²ÿÿÿXd üÿÿÿMd °ÿÿÿE_ ÷ÿÿÿhDËÿÿÿcEØÿÿÿCd °ÿÿÿ^S ÿÿÿÿ[ E¡ÿÿÿuS ýÿÿÿz d ðÿÿÿ^D÷ÿÿÿGF¸ÿÿÿPS éÿÿÿuS éÿÿÿUS ýÿÿÿG EÖÿÿÿ]S éÿÿÿrd ðÿÿÿSd óÿÿÿ_ d °ÿÿÿrh ðÿÿÿKD xÿÿÿ[E þÿÿÿfd üÿÿÿ_d üÿÿÿn_ •ÿÿÿJd šÿÿÿ| üÿÿÿld ðÿÿÿ]S ªÿÿÿwd üÿÿÿF_ Ÿÿÿÿed uÿÿÿ`d uÿÿÿ^d ðÿÿÿu_ Ÿÿÿÿ d üÿÿÿBd ¤ÿÿÿd ðÿÿÿ}j šÿÿÿZEÁÿÿÿtH÷ÿÿÿ_EüÿÿÿZ d óÿÿÿvEüÿÿÿkd óÿÿÿ] | üÿÿÿpEüÿÿÿj_ ŸÿÿÿF d üÿÿÿPDÉÿÿÿbj šÿÿÿJDÁÿÿÿPD¤ÿÿÿqD¤ÿÿÿvEÁÿÿÿu| êÿÿÿv| ØÿÿÿG| ÁÿÿÿyDÉÿÿÿMEÖÿÿÿ[E¤ÿÿÿk| Øÿÿÿ~EHÿÿÿZDØÿÿÿ_ ØÿÿÿDEØÿÿÿEFØÿÿÿ|FêÿÿÿtFØÿÿÿAE}ÿÿÿSEÖÿÿÿSFØÿÿÿ@EüÿÿÿvÐxJ]ó·CMU¾{Ba(bÏšHc CøˆC  f‚£vjs‚£Kj]„éRc&G†‡{wj¬ãKx¬‡} G­éJT)U­‡} iÖ£yjwÖ†M a؈ n  nØ£Mj{؇¤W  eÚˆ P  rÚ†§U Ú†JKÛêIZZÛˆ J  t܇/o AÝéw~O݇ zMã†Û} [ãˆòA  hãˆI tã£OjAä  g  kå‡Z w刧O  E懠j Q戧P  _æçQ læšLi{æ‡ y dë‡Ño r눠C  @ìˆS Mì†r_ ZìˆC  gì‡ q  t쇮o A툧q Oí‡\o [í†òX  i톤V víˆ Bî†} Nî‡ t ZîˆC  hî‡ s  u} Bï‡ r  OC  \O iïˆäe  uï†} Að  N  Nðˆ¤C  [ðˆÛC  hðêy\tð‡~o Pò†§e ^ò‡P jòˆØn  xòšzxEó‡Îo }ûˆ Q  Küˆ§m  Xü‡Qeü‡ w süèGrBýšNst�‡ z g††0m  v†ˆn  B‡ˆ~ O‡†Ê} [‡†rG h‡ˆ“n  u‡†] Bˆ‡Sj Oˆã?r]ˆ‡qkˆ†} yˆˆ§P  F‰‡ qR‰š~|`‰†÷S  \�†÷R  i�ˆ R  v�‡ÇQCŽ  O  QŽˆ I  ^ކò} jŽˆ“}  wŽçR D�†ài  S�‡n `�ˆ¤t  n�†[a  {�‡I H�‡qW�†q e�†] r�ˆM  � Ñ}  L‘ˆ$n  Y‘‡ i f‘†| s‘ˆ`n  @’‡v L’‡˜i Z’‡õ`g’ˆÏC  u’çP B“‡©c P“†Æ} ^“‡‚ik“ËxJy“‡ØQC–‡c Q–‡>v _–‡ L n–ˆ?V  |–ˆ~  I—ˆJZ  U—ˆØh  a—êElm—‡x Yšˆ,n  gš‡| tš‡} B›‡@ P›‡U ^›‡ío l›‡}z›ˆ±C  Hœˆ÷m  Tœ†§L  aœ‡¤u  nœ Ñe  {œ‡„j G�†±\ U�‡Ò~ a�‡^o o�‡ x  }�‡ü`JžˆÒC  Xž \}  ež‡Sn  ržˆ n  žˆm KŸ‡ { XŸœN fŸ†/b  sŸ‡Q@ ‡ÞAN ˆ K  \ ‡{E i ˆ„n  v †ã} C¡‡€o P¡;l^¡ˆ÷P  J£†û`  W£ˆäC  d£‡b p£‡$Q~£‡2o L¤†y Z¤ˆ¤O g¤†k  t¤ˆùn  A¥œrV N¥†]Z¥†ö} i¥‡*Qv¥†f D¦œu Q¦‡(Q^¦‡X l¦œs z¦‡W G§†z U§ã?T b§‡T p§‡®`~§ˆ©w L¨‡S Y¨†¤]  g¨‡R t¨‡Q B©‡q P©‡©q ]©ˆØg  j©ˆù}  w©ˆw Cª‡©G PªˆB ]ª†ÛH jªˆ n  wªˆ b D«ˆ?W  P«†[`  \«œ` i«†ÊT v«‡>y  C¬{|[ P¬‡c k·‡r y·ˆö_  G¸‡0rT¸‡u_  b¸ˆU o¸ ~}  |¸‡ùj I¹†G W¹œQ d¹ˆ0C  q¹‡R~¹‡p Mºˆ´C  [ºˆ¶p  gº‡o tº‡…o  B»†0n  O»ˆ C  \»†q h»ˆ m  u»ˆ@  B¼‡,QO¼‡öd ]¼†ÔSk¼†“} z¼ˆèm  G½ˆèP  T½† z  a½‡‰o m½ˆ }  {½ \n  G¾ \e  T¾‡Fa  `¾ˆC  m¾‡a  z¾‡øa  G¿†¤x  T¿‡ßo a¿‡ W o¿œEk }¿ˆs IÀˆ©C  VÀ‡ž_ cÀˆ{ qÀ‡h ~À‡i LÁ†´} ZÁ‡j gÁ‡k uÁ‡l C‡m Q‡q _‡z m‡{ {‡~ IÜl WÇ dÜsrÇY AćZ Oć[ ]ć\ kĆÕ} yć] FŇ^ TŇ_ bŇ` pŇa ~ŇSh LƇSF[Ɔ@  iƆA  vƆB  CdžJ  PLj }  ]ÇœS  jdž0X  wdžT  DȈEZ  QÈßv]ȇbo S͇Na͆©t  p͇>w }͇¹z  KΆ¿@  X·jeΈ N  sΆ `  ·~Lχí` Zχð` gφ@  tÏæS[AЈ[  \шõA  iÑœòY  uшé@ AÒ†à^  MÒ†Ïq  YÒ†Ê| eÒ‡Æk rÒˆ¼A AÓˆ¸n  MÓ†±t  ZÓ†¨Z gÓ‡¨m tÓ†@e BÔˆn  NÔˆ P  [Ô†„U hÔˆ \ uÔ‡„Z  BÕ ~n  OÕ ~e  \Õ†/} hÕˆA uÕ‡a  BÖ Ñn  OÖ Ñ  \Ö‡½o iÖ†nwÖ‡¤s F× `U× ad× bs× cB؆eQ؆f`؆go؆h~؇¢Q MÙ†èf  ZÙ‡SgfÙˆC  uÙ‡o BÚˆ a  PÚ‡ F]Ú‡ u kÚˆªn  yÚ†¸u FÛˆÄC  SÛˆG  `ÛˆÆC  mÛ†Æu zÛ‡ } GÜœK  U܇ ~ b܇  p܇ @ ~܈N  L݇ A Y݇ B g݇ C u݇ D CÞ‡ K QÞ‡ M _Þ‡ ^mÞ† I |Þ† n I߆ e Vßß}Bb߇Ød då†S} rå‡Ssåù)NN戋d  \ë‡b hë‡Ko vë‡Kp D숿C  Rì‡r_ìˆûC  mì‡àC  zì‡æ`Gí†üc  Uí†^ bí‡O oíˆR  }íˆÕA  Iî†IUî†Êg  cî†Hpî‡B îœQ Mï†àQ  Zï†Æg  gïˆ \ tïˆüO @ðˆÆn  LðœY Yð†ü] fðêPvsð† } iòœa vòˆõO Có†õ} Pó‡žo  ]ó†õc  jóˆèC  wó�{5zDôˆäZ  ~öœb J÷ˆöe  W÷œX d÷†  q÷ˆØN  ~÷œW KøœV XøˆØ[  eø†Srø†õ} Aùœ“M Nù†TZù†U iù†qvù‡šQEú†L  Sú†÷Q  `ú‡§s mú‡Çj  |ú‡‚o  Iû I  VûˆH  cûˆ÷O pû‡ Z }û‡~`Kü‡q Yüˆ L  fü‡¿m süœa Aýã¶r Nýç¨~[ý†$] iýˆ¸C  uýˆ{x Bþ‡ | Oþ‡\`]þ (B  kþ†¤a  wþˆ±C  Dÿ‡ E QÿˆE _ÿœKo kÿ wK wÿ‡ F D€‡ G R€‡ H `€‡ I n€†—| |€ /n  I�†¤] V�†oc� /}  r�ˆ¤r  �ã?U L‚ˆC Z‚ˆ–A  g‚‡Jo t‚†N} Bƒ†[} Oƒ‡Km \ƒˆ}C  jƒˆ‹c  wƒ†[b  D„‡aW Q„ˆX _„ˆc l„ˆÒA  y„ˆ W F…†f  S… ®}  `…œv m…† ^  z…†I G††^T†œ} c†‡a| o†ˆr ~††‹i  K‡‡Ñ`X‡†¤v  f‡†S^  r‡ˆSC  ~‡œ@ Kˆ†qXˆœ/K gˆœ_sˆ‡Kn B‰ˆD P‰ˆ¤N  ]‰†C  j‰œ S  w‰† { DІdPІš} _ІD  lЇKq yЇKr G‹ ` U‹œ,M b‹‡ªp n‹‡KF}‹ \  KŒ a XŒ†*] eŒˆ©O qŒˆ0q ~Œ†0}  K� b X�†±] e�†}@  r�†¸l  �‡#tKŽ c YŽˆ¸q fŽˆ$D  sŽã¶o @� ~  N�œa[�† @  j�œb v�œM C�œ`O�œ H  ^�œik�œ^z�œR I‘ˆjV‘ˆke‘‡¯Xt‘†¿Y B’‡s O’‡F]’ˆt k’†Ä] x’‡t E“‡u S“†la“†Æl  p“‡w |“‡Sk J”†l X”ˆme”†¸} t”†Si  A•œo N•‡y [•ˆÆq i•œšR v•œ„\  B–ˆr O–‡šo \–ˆ°[  j–œSh v–ˆ°V C—‡…qP—ˆb ^—œV  j—ˆÌV v—œQB˜†~  Q˜ˆ£b ^˜ˆàZ  j˜ˆÔb w˜‡æC C™ˆÆ{  Q™‡èo ]™†é} k™œÔPx™ õo  Fš‡d  Ršˆüo  _šˆb lšˆb xš† ] D›†{  Q›ˆn]›ˆ@ l›‡A y›‡Üj  GœéQh TœˆÊh  |¨ˆÊ{  I©ˆIV©ˆF e©ˆg  r©ˆF ~©‡V Jª g  Xª†Êl dªœ@ qªˆr}ªˆpL« ®n  [«œNh«œow«ˆ\  F¬‡N S¬‡M a¬‡K o¬‡J }¬†Êf  K­‡ÊZ X­†Ê_ f­†r\ s­‡I @®‡H N®†Êm \®†rC  i®†Du®†CD¯œÊi  S¯‡G _¯‡E m¯‡C {¯†BI°‡ÆZ X°†Af°†M u°�{+!B±‡âo  c±ýèw p±†Sf ~±œRK²‡Sg Z²†÷U  h²ˆ³z t²†÷T  @³ˆp M³ˆn Z³�{QJg³œR q·†³g ~·ˆ¸e  K¸†S W¸ˆSl  d¸†³ q¸ˆ¶q  ~¸œSm  J¹†T W¹ˆk d¹ˆj q¹œ^ ~¹†±u  Kºˆÿw Xº†¯W eºˆT rº†Y ~ºýw  J»œ{y W»† @  c»œbo»œp  ~»†cJ¼†}Y Y¼†de¼†0{  t¼ˆ0G  A½†¤W N½†¤q [½‡�Q g½ Ÿ{  t½ Ÿ|  A¾œwP N¾ˆ*N  Z¾‡9j g¾ˆ0H u¾‡•g  B¿‡Bj O¿œ%P ]¿†žN  i¿†�} u¿† q BÀˆ–@  NÀÜ{v[À‡–B  Q‡Oj ^ÂýJw l†@q zˆ@I GÈ`N  TÇam aÆ[} oà®e  {à®  Gć m TĆS bĆT oĈw |Ĉy Iņ{VÅœ| eÅœ_ rņs ~ņøf  KƆJ XƆA eƆG rƆF Æ /e  LÇ /  Ydžx fÇœi sLJ/`LJ©o MÈý©w [Ȇ>f iȆu] vÈœF  CÉœ¿M PɇÅo \É †}  jɆÇ^  vÉ †n  CʆÇu Pʈ†w ]ʆÇ] jʈÇN  wÊýÅw Dˆ–N RˈO  ^ËœU  kˈØ}  xˆË{  Ĕè} Q̆ö^  ]̈èr  ïèX  v̆ÔTC͆æ] R͈õC  _͆ûm l͈ _  y͆ ^  FΈf  SΜi `ΈJ  mΆ} z·G GχP UχG cχP qχG φ} MЈC  ZЇ P gЈ b uЇ G Bч]  Pц} ]чP jчG xÑ  { FÒˆÔH  SÒ†ðN  `Ò†ñU  mÒ‡ñV zÒ†íN  HÓœæ@ UÓ†âs bÓ†à} nÓ†Ô} {Ó‡QHÔ ÎU WÔ ÎT cÔ†Ë@  pÔˆ¹w }Ô†£} JÕ >x  WÕœ¯u  dÕ E  pÕäFf}Õ‡¤j c׆�l  q׆�k  }׆™D J؇•o VØ �}  d؈C  qØ �n  }؆’L  JÙ‡’W WÙç’R eÙ‡�o sÙœ x  AÚ†g  NÚ†c  ZÚœM gÚœN tÚœO AÛœP NÛˆ[ [Û†e hÛœC uÛ†f BÜœB OÜ €T \Ü €U iÜç\u܈|C  EÝçZQ݆|c  a݆Y n݆X {݆rN  HÞœtd TÞ p}  aÞ pn  mÞˆpw zÞ bU Gß bT Tßœ`~  a߆U@ nß ^T zß ^U Gàè@|Sà†g Oè Q{ \èœK@ hè†KH tè†OH AéœO@ Né‡EY [é†F} ié†B@ vé†5X  Cêˆ5H Pêœ s ]êˆ5G  jê 2T vê 2U Cë†9N  Oë†h \ëˆ(_  iëˆ#H vëˆ#q Cìˆ$_  Pìˆ#s ]ì�kjì�<Hí†#X  dí†#m  qíç{s~í n  Mî }  Zîˆ{P gîˆ{M tîˆ{N Aïˆ{O Nïœ{t [ï†} gï†{ tïœd Að†} MðˆF  Zð†d gð‡P tðœh Bñœf Oñ�n\ñ íU zñ íT Fò†ì} Sò‡`ò†Knò ßT }ò ßU Jóð~Vó†Îh jóˆÉ{ vó†Çh Bô�cNôçÆflô†Æ| |ôãEEIõ†Æf  Wõ†¾s dõˆ{W põ ½T }õ ½U Jö†ZVö�meö†[C÷†]R÷�8a÷‡§Y ~÷�lKø‡§ziø†cU wø ©n  Cù ©}  Pù�g]ù ¢{ zùœ¤y  Gúœ�d Tú†ž] aúœ•d nú�W/{ú�ÐEK6jû‡‘C  `ü†—Z  mü�Ï%myü�Õ%ifþ†�Z  O€�@[€�%0x[�†šZ  S…�GK_… ŸZ  j†�Ïwpv†�Õwkfˆ�EA{QŠ�j4LŒ�w0x@��ó–^0x��Ûw([h‘�Ü–PcC”�9af•�Ä3+G›†Š} r›�Ìcu:~›�msxœ�×ESk¡†…} ~¨†ƒ} J©†\W©ˆƒZ  f©�ÄEB\r©�c}fN±†±^ t²�hp A³ˆx q¾�{IP~¾�etNÀˆ¶Z  BÃ�HtOȸZ  CÇ�d^PLjºZ  nÈ�OfzȈ¼Z  `Ë�cQmË�ÝEn~Ñ�2lÓ�{T(^Ô�{U(FÕ†€} nÕœz {Õ‡D HÖˆ€Z  VÖ‡F bÖ� FpÖ�{H,v܆v} bÝ�Ê{`|oÝ�"q kà‡L \ìâXhjìˆvH  RŠ�Ë{^*^Š�bbH‹�E QTj��Ä[B^~��`y\˜œÐZ  U�‡Õb a��_^p�†Ûk N£‡ÛUZ£ðZi£†ÛZ  ~£†Ø^ K¤�:SX¤�jGk¸†Ø_ r¹œàZ  ~¹�Ý[MKº�3TX¼†ãZ  l¿�{lWx¿� aOÁ�ÑlQpÂãäo \” éZ  j”œžZ  w”�õ!q7D•�>züìZ  oÏ�^5e{Ï�I&`Ô�ï}FÕ ó{ CÙ‡øc OÙˆøC  ]Ù†òZ  jÙ�h`wÙ�ö{(qWâœõZ  Hä�eQU䜅Z  fæ�Yysæ�silì�FyUîˆ M  Nòˆ C  [ò† H hò�ÑS uòãýo  tü�ßSFAý‡C  Gþ ÿn  Tþ ÿ}  aþ�SSBmþ�{oho� �Ð{}&Wƒ ‡ m }ƒ �ÐK-K„ �Æ{]&x„ † } ^… �ÎSBwk… �Dmb‡ œëZ  O£ �SRL\£ ˆ a  h¥ œZ  u¥ �ûS*B¦ �?Ul¦ �SRbA¨ �WPc¬ ˆëC  s± �]± �ÜPT0\³ ‡a pã ˆ~ ~ã ˆ Kä ‡ v Xä †j} fä ˆ$Z  sä �×J@å ˆjJ  Jì †UL  Vì ‡Us cì �Tqì ˆ!M  Oí �„qR\í �donï  (Z  ]ô ˆ0s jô †!Z  wô �buCõ †*Z  x÷ �pyEø �z~ú �/~\û ‡9q Z€ ‡ J g€ �ÄBf u€ �„rv[Œ �Nn Q“ �Ýhž ‡4C  g¡ �Ð%K-t¡ �„u+a¢ †„o L£ ¯{E 4X(X£ ¯E 4CpË �.>sÒ ¯E 4f7qÓ ¯{E 4qW‹ ¯E 4iHœ ‡Bq q£ ˆ1C  ~£ �Ñ D$J¤ ¯EE 4F;NÈ ¯±E 4s Tƒ �&>G� ‡Oq EŽ ¯ÔE 4t7RŽ � KFÆ �%]QÊ ¯wE 4JnË � -yxê ‡HZ  qì �õ !~"~ì �@B|� †+Z  ~� ¯[E 4kJ‘ � ieuª �@KZ¬ ˆNZ  e­ �Û (mq­ �y^¯ � G|¯ ¯%E 4OCµ �&E 4THS蜸Z  [í�TVhí�ß>x~ï Ì{ vñ ¹n  Cò ¹}  Pòˆ¹C  ]ò¯ÀE 4Vjò�>Sv@÷gu[vü¯ÏE 4VQþ†Äl  g‚ˆÄq s‚�Sq@ƒ�Ñ>!Mq„�L^~…�[{\ˆ†Å{  WŽ�>fYcކÉ{  |��>RZH��öÐ(|b‘ˆO ^”�ï>Sj”gv[}™â§G,X›ˆ£Z  Dœ¯ÓE 4VQœgx[g �v §cdþ�Â6Gbÿ�^Ô5ui€ˆ Z  ^„ˆZ  k„�ö({w„�§2nr•�Â6G`˜œZ  g™�§_Dt™ˆ Z  x›ˆZ  Dœ¯E 4nžQœ�ÜPcº"�Â6EbÊ"�E§l9gË"�j §n<`Ì"ˆZ  \Í"¯E 4RìhÍ"‡m z¹%�Â6GHº%ˆC  O»%�§[Z\»%ˆZ  v¼%¯3E 4mB½%�Â6DoÂ%�V §< sÃ%�õS!TSÄ%ˆZ  gÇ%