Áƒ*žEs@eò_'V,¯;Ç®ûÙC À}7áesNone DebugLogCreateControlSetText BDBMapVoteConsoleCommandClientMessageCoreMapvote14XL_B7FSystem GetValue SetValueGetPureMapnameUWindowBroadcastMessageSetFont FixPrefix SetTextColorEngineSetNumericOnlySetSelectedItemMakeSelectedVisibleCloseGetLevelPlayersClearAddItemCreatedPaintFindPlayerIndex ExecCommandKeyDownTruncTo LoadMapTypesLoadMapCycleListMVLog CloseUWindowgetSelectedItemNotifyTick SpectatorCheckTimeSubmitUpdateMapVoteResultsUpdateKickVoteResults FocusWindowColorWRIRemovePlayerName DestroyWRI ShowWindowFocusStartWindowCleanUpPlayerIDsUpdatePlayerVotedhasStr FindIndexSendReportText MatchFilter ADDHTMLTextxxLogGetMapSequence SetupWindowMapVoteHistory_INISetMOTD MVVersionCompare SelectPlayer SelectMap ItemHeight ListClassTimer DeSelectAllOtherMapListBoxItems GetRandomMap DrawItem TallyVotes HistoryUtilsAppend MV14ClientGetMapPriorityLoadingOpenVoteWindowUpdateCacheTimeStampForceServerTravel RemovePrefixBrowseWebPage AddNewPlayer CloseWindow OpenWindow IsSpectator ExecStringAssaultSetKey IsCrashedMapLoadExistingKeys SortMapListUpdateOpenWRI TeamColorGetWinningTeamSuccess InternalTimeFailureNextSearchItem SetHistory SetMaxLengthDoubleClickItemAddPage GetPrefix GetMapIndex GetAccVoteGetPlayerNameQuery ClearSearchSelectMapFromSearch SetEditablebAlwaysRelevantSwapUMenu CreateTitle!CreateMapnameIncludingListnumber GetTeamIDSaveGetMapListNumber getListNumRemoveMapByIndex MapReport SetAboutInfo AnswereQOpenIfNecessaryCloseAllVoteWindows SetPlayCount SetupGameMapSetMapSequence FN_MaplistMV14 SpawnHistory KickPlayerAddMap SubmitVote ForceReloadSetInfoServerAddressAddPlayerNameGetPlayerScore TimeStampGetCleanString List1FilterbLoadScreenShot MsgTimeOut CustConfig List2FilterExecuteMessage List3Filter HotKeyBoundHandleServerEmpty CheckForTie xStartLog MVEndFilelogSubmitKickVote RemoveMapPalette AddKickIP MaxFloat NeedtoUpdate LoadMapsGetServerCacheConfigReplicationCheck GetPlayCount AddKickNameClientSaveMaplistConfigClientForceReloadSorted CheckKickIPCheckKickPlayerAlreadySpawnedExecuteSettingUpdatePackages WindowClassStartActorMutatorGetQ LastUpdate SendMapsMapVoteHistory4MapVoteHistory3MapVoteHistory2RemoveOldestMapMapVoteHistory1 MapListTemp MapListCacheVSizeUSizeSendVariablesSendServerConfigProcessMenuKeyFindMapOpenWelcomeWindowSetMap FlushLog StartLogWWSendServerConfigsortingStartMutatorsAndSettings TimeMessage formating ProcessDataBrowseCurrentURIHandleFailedMap PreBeginPlayStopLogWinTop WinWidth WinHeightWinLeft WindowTitle RunRport RemoteRolePostBeginPlayMipZero isMapInListSaveClientConfigUBitsUClampSaveMapVoteConfig ClientClassVClampNotifyBeforeLevelChangeVBits SaveAccVotes ResetAssaultxxSortMapListMaplistActionRefreshDisableIndexGetRealMapnameCustomConfigloadingLoadMapListConfigSaveMapListConfig SaveKeyBind AddMapName ClearListUpdatePrefixesEnableKickWindow RequestMapsBeginRequested ResetMapsFocusOtherWindowAddTextRemove BeforePaintClearPlayerList HideConsoleCheckMousePassThroughbShowWelcomeWindowBeginModeHandleEndGameLaunchUWindowTriggerSetSelectedIndex BeginStateGetSelectedIndexST_MapvoteList_MV14SplitCloseActiveWindowFind SendReportCreateRootWindowGetMostPlayedMapGetLeastPlayedMapMV14XLMutator ServerTravelPostNetBeginPlayLogEventString MaxColorbMasked NetPriority LifeSpan GetItemNameNetUpdateFrequencyMutate AddMutatorClientPlaySoundGetAddressURL ResetGameLogToLogFileHeading bFileLog bSortMaplist MVTagNameMinPlayersToKickbForceRandomSwitchbSortWithPreFixTmpNextRealPrefixTmpNextVirtualPrefix List4FilterCustomGameConfigbList4ObeyRepeatLimitbList3ObeyRepeatLimitbList2ObeyRepeatLimitbList1ObeyRepeatLimitbFixCTFModificationsbUseMsgTimeoutEmptyServerLevelSwitchTimeMinsbEnableEmptyServerLevelSwitchSetHTMLbShowWhoKicksWho SetMultiLinebASbCTFbDOMbTDMbLMSbDM MutActConfig MV14XLConfigDisableMapIndexNumbUpdatingList bClientCacheASClassList4PriorityList3PriorityList2PriorityList1Priority MapVoteTitle List4Title List3Title List2Title List1TitlebReloadMapsOnRequestOnlybRemoveCrashedMaps MinMapCountMidGameVotePercentMapVoteHistoryType RepeatLimitbCheckOtherGameTieScoreBoardDelay bAutoOpen KickPercentVoteTimeLimit bKickVoteDestroyOnCloseAskQ ForceClear LastUpdated MapCountPrefixDictionaryUWindowSimpleLabelControlUMenuMapVoteListServerInfoWindowServerInfoLinkPlayerVoteListItemPlayerVoteListBoxPlainVScrollBar MV_SaveLog MVWelcomeWRIMVWelcomeWindowMVKeyBinderListBoxMVKeyBinderFrameWindowMVKeyBinderClientWindowMV14ClientConfigMessageHelper MapVoteWRIMapVoteTabWindow MapVoteRIIpDrvMapVoteReport HTTPErrorMapVotePageControlMapVoteNavBarMapVoteListBoxMapVoteHistoryMapVoteClientWindow UBrowserMapStatusListItemMapStatusListBoxKickStatusListItemHTTPReceivedDataBrowseKickStatusListBoxTextAreaClassKeyBinderListItem NumTries LinkClass FailureText QueryText ImageLabelEmptyServerLevelSwitch ConfigWindowUpdateServerTimeout AdminWindowAdminTabWindowGetMap Domination TeamGamePlus LastServerOldPlayerName PageControl bGotMOTDbHadInitialQueryMOTD UpdateWindow CloseButton MainWindow GameType MapTitleKey BaseMutatorTeams CurrentID Palette3 TeamInfo MaxTeamsDecPickups WeaponPickup bDontRestartNextMapmyList LoopCount PlayerCount TeamIndexAlias ClassStringBeltSndServerAddress MapPrefix MapListTypeTournamentPlayerT2NumSpectatorsposUMenuRaisedButtonUMenuLabelControlUMenuDialogClientWindowUMenuPageControl bGameEnded RealKeyNameSelectedButton bPolling bInitializedPages MutatorList FirstMapTestMap MapAuthor InfoWindowBotpackDeathMatchPlusCTFGameNextSwitchCountdown VSplitterLastManStandingPartTeamSayMessagePlusSayMessagePlusStringMessagePlusRedSayMessagePlusDeathMessagePlusCriticalStringPlusReal Attacker SavedTime NumDefensesCurrentDefender bDefenseSet bTiePartOne GameCode bAssaultWonrank DefenderTitle1NextURLbCaseSensitive PawnList ErrorCode ServerPort ScreenshotUBrowserUpdateServerTextAreaUBrowserMainWindowUBrowserHTTPClientValue Palette1TextIdealPlayerCountSecondYLXLDataHeaderMinuteHourDayMonthYearURI WebServerMapNumPort DesiredWidth bByParentChild TimeSeconds MaxValue MinValuePageBest Sentinel bBottomGrowBottomClientWindowTopClientWindow ThumbHeightFonts ThumbStartColumnStatusBarTextFixedAreaClass ClientAreaOwnerDesiredHeight TextAreaOffsetVertSBtesten SplitPos nextPawnPP FilenameaMGameRoot TheWindow TicksPassedbDestroyRequestedNextbAdmin StartTimebFoundScore MapListNum MapList1 MapList2 MapList3 MapList4 MapList5 MapList6 MapList7 MapList8 gPlayerCount bCreatedRootMapVoteResultsKickVoteResults GameTypes OtherClassMouseXMouseY bUseMapList bShowConsolebLeaveOnscreen bAutoDetectbQuickKeyEnableServerInfoURL MapInfoURL ReportText CurrentMapStrKeyNoTimeOutMapPreFixOverRide PreFixSwap OtherPreFixHasStartWindowbEntryWindowsTeamID bDebugModebAcceptsFocus EditBoxWidth ActGameClassActGamePrefixItems DownSound BlackTexture WhiteTextureLink ParentWindowAlign bDisabledFirstChildWindow CustomGamesCustomGamesStatebUseExcludeFilterLastMapsCountLastMapListCountXLastChildWindow bUpdated blastCheckgAdminChechsumgPlayerChecksumgTitleChecksum bAdminDone LogoTexturebOpenWindowDispatchedbSetupWindowDelayDonePrevSiblingWindowTextYTextX bRequestSend ClientConf ListLimit PlayerNameCache NumPlayers GameClassListNum bForceReload MapNumberItemMLIdrepMapListCountX repMapsCount bSelectedaPawnMyCountMyPlayerCount bHasVotedrepAdminChechsumTitleChecksumrepPlayerCountTabs MutateStringNewPlayerNamePrevtriesEventInstigatorbTypingIndex p_ReportTextPbHasStartWindowKeyBinderWindow bHotKeyBoundMsgNumTheSoundStringIP SoundString dynSoundzzLRxstr FilePathstr2Other ActiveWindow DeltaTime NewPrefix Mutators OwnerWindow PrefixesClassesTabNextTabPrevbWindowVisible PlayerID GUIScale bCheckedPrefixFindChildWindowMapListIfNooneVoted DrawUpBevel ClipTextMapNameDrawStretchedTexture CreateWindowSetAcceptsFocus BringToFrontSetSizeSender GetLevelDefaultSettings ActorClassGetPlayerNetworkAddressGetEntryLevelGetPlayerOwnerExcludeFilterAccName CrashedMaps AccVotesUWindowLabelControlUWindowListBoxItem bAutoGame PlayerIDListUWindowListBoxPlayerKickVoteMapStatusTextKickStatusText KickIPListKickPlayerList EndGameTime MaxPriority AutoGame TravelMapCurrentPlayerCountJoinTickCountScoreBoardTimeServerTravelTime TimeLeftAutoGameClassCustomGameClassMapVoteHistoryClassbLevelSwitchPending bMidGameVotebInitMapsLoadedbMapReloadRequestedServerTravelString GamePackageActualMapPrefixbIgnoreRDoubleClickbAllowSpecvotebSpecAutoOpen bDisableMV bFirstRunbIgnoreMDoubleClick ServerIP bAlwaysOnTopUWindowWindowUWindowButtonUWindowDialogControlUWindowCheckbox bLogging OpenedTime zzSavedLog SortIndex SortBIndexTickSortCountbSortingMaplistbReloadingMapsUWindowRootWindowxloop Lifetime NoGameEnded VoterNum NoVoteCountPID PlayerIndexaWRIMapsBestP WhiteColorMVWRI ServerNameVoter MapIndex FileFlush VoteCountLamer CloseLogOpenLogShortIP Location bIsPlayerMapList LocalMessageMVESLSdefaultPrefix GetNextIntbIncludeSpecsTeam TextSizeseq MVReport ObjectCount MVHistory CustSetting bEnabled bFeedback DrawColor ClientWRIUWindowClientWindowUWindowComboControlbSpecsAllowed CustStateStrTempbMapStatusDonebKickStatusDoneUWindowFramedWindowUWindowListControl UWindowListMVWWRIUWindowDialogClientWindowUWindowSmallButtonbAddIfNotFoundUWindowPageControlPageFilterUWindowPageControl PlayerScoreUWindowPageWindowPlayerAccVotesUWindowVSplitterWinningMapIndextempbForceMapSwitchtopmapRankingPlayersThatVoted TieCount textlinePlayersLeftToVoteAXCE TempMapNameAMapBMapAMapPreBMapPre xIterationsZY mapnameXlocked strFilterWKeyName bIncludeListj modFilteri ScriptTexttS TempListBRNoSpecialCharsG ReturnValueStaticSaveConfigDynamicLoadObjectSetPropertyText PreFixChange FilteredMap ignoreCountNoFilterCount bIsPureCTFGetPropertyText MapCycleListScaleUWindowScrollingDialogClientUpdateUWindowHSliderControl ForceRandomrandmap RandList securityUWindowEditControl LevelInfo ActualPrefix TestPrefix GameInfoMutSTR bActorMutTmpSTRTMP2PlayerReplicationInfoStatLogSettingbIsDefaultSetting StatLogFileval1val2InfoReplicationInfoGameReplicationInfo LevelSummarystr1str3CanvasFontLevelUWindowVScrollbarServerEmptyTimeMinsServerEmptyTimeMapVoteActorPawn PlayerPawnPlayerNetConnectionNewSeqWindow NewPlayCountList ReportTypeSeqNum SelectedItemWindowConsole LastMapIndexAuthorLowest SettingsSound p_ReportType p_MVReport TextColorpcTextureMessageMaxMaps bSendResultsTitleConsole PlayerItemCmdMapItem CapMapName ItemPointerRoleHistory SearchTextWelcomeWindow cbLoadDM cbLoadLMS cbLoadTDM cbLoadAS cbLoadDOM cbLoadCTF cbAutoDetectcbCheckOtherGameTiecbReloadMapsOnRequestOnly cbCustGameRemoteSaveButtonReloadMapsButtonListCrashButtonClearCrashButtonsldVoteTimeLimitlblVoteTimeLimitsldKickPercentlblKickPercenttxtRepeatLimittxtMinMapCountsldMidGameVotePercentcboModetxtServerInfoURLtxtMapInfoURLcboMapVoteHistoryTypelblMidGameVotePercentlblGameTypeSectionlblMiscSectionlblOtherClasslblLimitsLabellblMapPreFixOverRidelblRepeatLimitlblMinMapCountlblAdvancedSectionlblServerInfoURLlblMapInfoURL lblASClass lblActGame lblActPrefix lblCustGamelblTemp cbUseMapList cbAutoOpen cbKickVotecbEntryWindowssldScoreBoardDelaylblScoreBoardDelaycbSortWithPreFix cbDebugModetxtList1TitletxtList2TitletxtList3TitletxtList4TitletxtMapVoteTitletxtList1PrioritytxtList2PrioritytxtList3PrioritytxtList4Priority txtASClasscbRemoveCrashedMapscbUseExcludeFiltercbClientCachegapWLHLxGapLimitRValue CustStringPPOwnerTagPlacesWhole bSizablebOmitSplitStr StatLogFinalcboWindowSize lblMenuKey cmdMenuKey OldHotKeysldMsgTimeOutlblMsgTimeOut sizefactorbSliderInitedcbUseMsgTimeout CustomTitle WidthTextboxHeightTextbox SaveButtonMapbAutoClass bSaveNeededNoImage searchicon MapListBox VoteButton InfoButton RandomButtonKickVoteButtonPlayerListBox lstMapStatuslstKickStatuscbLoadScreenShotlblMapListStatusTitleslblKickListStatusTitles lblTitle1 lblTitle2 lblTitle3 lblTitle4 lblTitle lblMaptxt1 lblMaptxt2 lblMaptxt3 lblPriority1 lblPriority2 lblPriority3 lblPriority4 lblMapCount txtMessage SendButtonlblMode LastVoteTimeSelectionTime MapListwidthPlayerListwidth ListHeightbMapAlreadySetbHideMapTitle txtSearchbtnNextbtnPrevSelectedSearchIndexlbSearchStatuslbSelectedMap SearchOffsetH SearchListTotalSearchItemsCurrentMapNameTextColorMapListTitlesTextColorTitleLowSectionStartRightSectionStartPackagebPrevConstCasebIgnoreLDoubleClickLabelsStartXLTitle2Title3Width selListBox Property TextBuffer xMapListBoxObject FunctionParams bOverrideState RealMapNamek VirtualMap DictionaryvirtversionstrHTMLStructNameForcedLinebreaksCenterBold HTMLText UnrealShare p_URLStringP1P2 StrPropertyp_ServerInfoURL p_MapInfoURLServerInfoButtonMapInfoButtonReportButton1ReportButton2 AboutButtonq ByParent lstKeyListCloseRequestTime lblMessageKeyItemCommandStringStructProperty MapWindowPrevSelectedMapPrevSelectedPlayerInfoServerAddressInfoServerPort InfoFilePathServerInfoFileWinWWinHbServerTravelDetectedWLimitClassProperty NamePropertyObjectPropertyStepFloatPropertycboWindowsSizeIndex C_WinWidth C_WinHeight BoolProperty IntProperty ByteProperty PlayerVoteRg\fa& 9š:Û:$‚š:Û:$„�-U-W š:Û:$ÿÿÿÿÿÿÿÿÿÿll“¨R™gH} ¡ÝЦ!�ÀO ¡ÝЦ ¡ÝЦ ¡ÝЦ ¡ÝЦ ¡ÝЦ ¡ÝЦ†ºµ§+™{#U¿ ¡ÝЦtº=¾± œŸàªŠ|.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Ú œŸàªŠ|.XÚ œŸàª�tµð œŸàªŠ|.XÚ œŸàªŠ|.XÚ œŸàªŠ|.XÚ œŸàªŽ�᱘ œŸàªŽ�᱘ œŸàªŠ|.XÚ œŸàªŠ|.XÚ œŸàªŽ�᱘ œŸàªŠ|.XÚ œŸàªŽ�᱘ œŸàªŠ|.XÚ†ºµ§+™{#U¿ ¡ÝЦ ¡ÝЦ ¡ÝЦ¼¢Ž�᱘ ¡ÝЦ¼¢Ž�᱘ ¡ÝЦ¼¢Ž�᱘ ¡ÝЦ¼¢Ž�᱘ ¡ÝЦ¼¢Ž�᱘ ¡ÝЦ¼¢Ž�᱘ ¡ÝЦ¼¢Ž�᱘ ¡ÝЦ¼¢Ž�᱘ ¡ÝЦ¼¢Ž�᱘ ¡ÝЦ¼¢Ž�᱘ ¡ÝЦ¼¢Ž�᱘ ¡ÝЦ¼¢Ž�᱘ ¡ÝЦ¼¢Ž�᱘ ¡ÝЦ¼¢Ž�᱘ ¡ÝЦ¼¢ ¡ÝЦ!�ÀO ¡ÝЦ ¡ÝЦtº=¾± œŸàª�tµð ¡ÝЦ!�ÀOÁc1Q`DyZxí–×7Xà ¡ÝЦ!�ÀOÁc1Q`DyZxí–×7Xà ¡ÝЦ!�ÀOÁc1Q`DyZxí–×7Xà ¡ÝЦ!�ÀOÁc1Q`DyZxí–×7Xà ¡ÝЦ¼¢ ¡ÝЦ ¡ÝЦtº=¾± œŸàª–×7Xƺµ§+”%óåÝí”%óåÝí”%óåÝí”%óåÝí ¡ÝŠ¦ ¡ÝЦ†ºµ§+”%óåÝíòÖ’�”ÀÕD“òÖ’�”ùlïòÖ’�”û�¬ÅûòÖ’�”ñ9Û ÓòÖ’�”ö0¸ òÖ’�”ò^¦MòÖ’�†ºµ§+ºR@G¢òÝ^w %óåÝí%óåÝí%óåÝí%óåÝí%óåÝí%óåÝí%óåÝí%óåÝí%óåÝí%óåÝí%óåÝí%óåÝí%óåÝí%óåÝí� U"ÿÿÿÿp]NULLyÓG]NULLx]NULLm P"2M"N"èO"XS$HB:€†�[5dÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòÖ’��†<�,� P$AOÓZ@M¤U\Xÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ>»Åa¤yŸ&.>»Åa>»Åa � WçaMBÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZ œŸàªçôŒÇËŒx�Œx�Œx�†ºµ§+†ºµ§+„.ü'l„.ü'l„.ü'l†ºµ§+Š|.XÚ†ºµ§+Š|.XÚ†ºµ§+Š|.XÚ†ºµ§+Š|.XÚ†ºµ§+Š|.XÚ†ºµ§+Š|.XÚ†ºµ§+ž|ë[$†ºµ§+ž|ë[$†ºµ§+Š|.XÚ†ºµ§+Š|.XÚ†ºµ§+Š|.XÚ†ºµ§+ž|ë[$†ºµ§+Š|.XÚ†ºµ§+Š|.XÚ†ºµ§+°_ã‰4Š|.XÚ°_ã‰4Š|.XÚ†ºµ§+°_ã‰4�tµð�tµð†ºµ§+†ºµ§+Š|.XÚ†ºµ§+�tµð†ºµ§+°_ã‰4†ºµ§+�tµð†ºµ§+�tµð†ºµ§+ž|ë[$†ºµ§+�tµð†ºµ§+Š|.XÚ†ºµ§+Š|.XÚ†ºµ§+Š|.XÚ†ºµ§+�tµð†ºµ§+�tµð†ºµ§+�tµð†ºµ§+�tµð†ºµ§+�tµð†ºµ§+�tµð†ºµ§+�tµð†ºµ§+�tµð†ºµ§+�tµð�tµð�tµð�tµð†ºµ§+�tµð†ºµ§+Š|.XÚ†ºµ§+Š|.XÚ†ºµ§+Š|.XÚŠ|.XÚ†ºµ§+†ºµ§+†ºµ§+„.ü'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µðŽ�᱘Ž�᱘–×7XÖ×7XÖ×7XÖ×7XÊ|.XÚŠ|.XÚŠ|.XÚŠ|.XÚ–×7XÖ×7XÃŽ�᱘ž|ë[$ž|ë[$ž|ë[$ž|ë[$ž|ë[$Ž�᱘ž|ë[$ž|ë[$ž|ë[$ž|ë[$ž|ë[$Ž�᱘ž|ë[$ž|ë[$ž|ë[$ž|ë[$ž|ë[$Ž�᱘ž|ë[$ž|ë[$ž|ë[$ž|ë[$ž|ë[$Ž�᱘ž|ë[$�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ÚŠ|.XÚ–×7XÖ×7XÊ|.XÚŠ|.XÚŠ|.XÚŠ|.XÚŠ|.XÚŠ|.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µð � ¤hW[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Åé@ܤyŸ&. Åé@Ü Åé@Ü � »xAgÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿn ¡ÝЦ»ÚãÌ~�•P¨�•P¨¼¢eN,ð¼¢eN,ðÁ!üM¼¢eN,ð�K4èž¼¢eN,ð¼¢eN,ð�K4èžÁ!üMÁ!üM�K4èž¼¢eN,ð�K4èžÁ!üMÁ!üM¼¢eN,ð¼¢E¤nY¬¼¢E¤nY¬ˆ5aõ¼¢E¤nY¬�K4èž¼¢E¤nY¬�K4螈5aõˆ5aõˆ5aõ�K4èž¼¢E¤nY¬�K4螈5aõˆ5aõˆ5aõ¼¢E¤nY¬¼¢¼¢–×7Xü¢–×7Xü¢3¹t¼¢3¹t�K4èž Åé@Ü Åé@Ü�K4èž¼¢3¹t�K4èž Åé@Ü�K4èž�K4èž¼¢3¹t�K4èž¼¢3¹t�K4èž Åé@Ü�K4èž¼¢3¹t�K4èž Åé@Ü Åé@ܼ¢¸5¨É�K4èž¼¢¸5¨É�K4èž>»Åa³o û³o ûòÖ’�³o ûòÖ’�³o ûòÖ’�³o û³o û³o ûãIÄ(›ãIÄ(›á?{ãIÄ(›á?{ãIÄ(›á?{†ºµ§+™{#U¿ãIÄ(›á?{ � †¤ZQrÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆ5aõ¤yŸ&.ˆ5aõˆ5aõ � x ] @@@çYWpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw¼¢çôŒÇËòÖ’�Š|.XÚòÖ’�Š|.XÚòÖ’�„.ü'lŒx�Œx�Œx�¸5¨É3¹t;�Ëf;�Ëf;�Ëf;�ËfŠ|.XÚävÅ?ïävÅ?ïävÅ?µ§+�•P¨>»Åa>»ÅakËÊi¸5¨É�tµð�tµðŽ�᱘kËÊikËÊikËÊiŽ�᱘E¤nY¬ˆ5aõ¸5¨ÉE¤nY¬ˆ5aõE¤nY¬ˆ5aõE¤nY¬ˆ5aõ†ºµ§+�•P¨3¹teN,ðÁ!üM3¹t Åé@Ü3¹t Åé@Ü3¹t Åé@Ü3¹t Åé@܆ºµ§+�•P¨�tµð�tµð�tµð>»Åa†ºµ§+™{#U¿>»Åa>»Åa„.ü'l„.ü'lE¤nY¬ˆ5aõ¸5¨ÉE¤nY¬ˆ5aõ†ºµ§+�•P¨3¹t Åé@Ü3¹t Åé@Ü3¹teN,ðÁ!üM�tµð�tµð�tµð�tµð†ºµ§+†ºµ§+†ºµ§+�•P¨†ºµ§+�•P¨¸5¨É>»Åa†ºµ§+™{#U¿¸5¨É>»Åa¸5¨É>»Åa†ºµ§+�•P¨¸5¨É¸5¨É¸5¨É¸5¨É¤yŸ&.¸5¨É¸5¨ÉŽ�᱘Ž�᱘Ž�᱘¸5¨É>»Åa¸5¨É>»Åa>»Åa>»ÅakËÊiŽ�᱘kËÊi�tµðŽ�᱘Ž�᱘¸5¨É�K4螸5¨É�K4螸5¨É�K4螸5¨É�K4èž–×7XÖ×7XÖ×7Xø5¨É;�Ëf;�Ëf;�Ëf;�Ëf;�Ëf;�Ëf¸5¨É¸5¨É¸5¨É3¹t�K4èž3¹t–×7Xƺµ§+™{#U¿–×7XÖ×7XÖ×7XÖ×7XÃE¤nY¬E¤nY¬�K4èžeN,ðeN,ð�K4èž–×7XÖ×7XÃŽ�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘Š|.XÚŠ|.XÚŠ|.XÚŠ|.XÚŠ|.XÚòÖ’��tµð�tµð�tµð�tµðŠ|.XÚŠ|.XÚ–×7XÖ×7XÖ×7XÖ×7XÖ×7XÖ×7XÖ×7XÖ×7Xø5¨ÉŽ�᱘Ž�᱘Ž�᱘¸5¨ÉŽ�᱘Ž�᱘Ž�᱘3¹tŽ�᱘Ž�᱘Ž�᱘¸5¨ÉŽ�᱘Ž�᱘Ž�᱘¸5¨ÉŽ�᱘Ž�᱘Ž�᱘¸5¨ÉŽ�᱘Ž�᱘¸5¨ÉŽ�᱘Ž�᱘¸5¨ÉŽ�᱘Ž�᱘¸5¨ÉŽ�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘–×7XÖ×7XÖ×7XÖ×7XÖ×7XÖ×7XÃŽ�᱘Ž�᱘Ž�᱘Ž�᱘Ž�᱘kËÊikËÊikËÊikËÊi�tµð�tµð�tµð�tµð¼¢�tµð�tµð�tµð�tµð � ŸdgnÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿE¸5¨ÉŸ¤>»Åa>»Åa>»Åa»ÚãÌ~>»Åa>»Åa>»Åa>»Åa>»Åa>»Åa†ºµ§+†ºµ§+¤yŸ&.¤yŸ&.†ºµ§+†ºµ§+¤yŸ&.¤yŸ&.¤yŸ&.¤yŸ&.†ºµ§+¤yŸ&.¤yŸ&.†ºµ§+¤yŸ&.¤yŸ&.¤yŸ&.¤yŸ&.„.ü'l>»ÅaŒx�Œx�Œx�Œx�Œx�Œx�Œx�³o û>»ÅaŒ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� � B$@ACymFkm¤sJtÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÁ!üM¤yŸ&.Á!üMÁ!üM � @Z pL €ŒG€ çbKYÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2!�ÀOçôŒÇËEê@‘Eê@‘Eê@‘Eê@‘ìoÐÁ÷ìoÐÁ÷Eê@‘Eê@‘�•P¨Eê@‘Eê@‘ìoÐÁ÷ìoÐÁ÷!�ÀO!�ÀO„.ü'l„.ü'lÁc1Q`Ác1Q`Ác1Q`Ác1Q`„.ü'lÁc1Q`Ác1Q` � }]Querying Server...|]The server did not respond.{Exìz"Ó`nÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿk"·œqÏÓ=$:e^[\€^[\€^[\€^[\€^[\€^[\€�•P¨›…Ó�•P¨›…Ó�•P¨›…Ó‘œÔ�X�•P¨›…ÓÓ=$:e�•P¨›…Ó�•P¨›…Ó�•P¨›…Ó�•P¨›…Ó�•P¨©—¬ž �•P¨©—¬ž �•P¨©—¬ž Ìôªª‘�•P¨©—¬ž �•P¨©—¬ž Ìôªª‘�•P¨›…Ó�•P¨©—¬ž �•P¨©—¬ž �•P¨©—¬ž �•P¨©—¬ž �•P¨©—¬ž �•P¨©—¬ž �•P¨©—¬ž �•P¨©—¬ž �•P¨©—¬ž å˜å˜å˜$ˆÏ"•å˜�•P¨$ˆÏ"•�•P¨”›…Ó”›…Ó”›…Ó”›…Ó”›…Ó�•P¨›…Ó�•P¨›…Ó�•P¨›…Ó�•P¨›…Ó”©—¬ž ”þ©€'”ô-¤%n”ÃïÙL�”Ç}"›#”Ìbb·³”›…Ó”›…Ó”›…Ó”›…Ó$ˆÏ"•�•P¨�•P¨�•P¨�•P¨�•P¨�•P¨�•P¨�•P¨�•P¨�•P¨�•P¨�•P¨”›…ÓPÀl½ýPÀl½ýPÀl½ýPÀl½ýPÀl½ýPÀl½ýPÀl½ý”PÀl½ý”PÀl½ý$ˆÏ"•”PÀl½ý$ˆÏ"•”›…Ó”›…Ó”›…Ó”›…Ó”›…Ó”›…Ó”›…Ól“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨$ˆÏ"•$ˆÏ"•$ˆÏ"•$ˆÏ"•$ˆÏ"•�•P¨›…Ó�•P¨›…Ó�•P¨›…Ó†ºµ§+†ºµ§+†ºµ§+™{#U¿†ºµ§+™{#U¿”"·œqÏ”"·œqÏ”"·œqφºµ§+†ºµ§+†ºµ§+™{#U¿†ºµ§+™{#U¿†ºµ§+†ºµ§+†ºµ§+™{#U¿†ºµ§+™{#U¿†ºµ§+†ºµ§+†ºµ§+™{#U¿†ºµ§+™{#U¿†ºµ§+†ºµ§+†ºµ§+™{#U¿l“¨l“¨l“¨jA‰“jA‰“†ºµ§+jA‰“†ºµ§+†ºµ§+†ºµ§+™{#U¿†ºµ§+™{#U¿l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨†ºµ§+l“¨”"·œqÏ”"·œqÏ”"·œqÏ”"·œqÏ”"·œqÏ”"·œqÏl“¨�•P¨›…Ól“¨�•P¨›…Ól“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨†ºµ§+†ºµ§+l“¨†ºµ§+l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨†ºµ§+l“¨l“¨l“¨l“¨l“¨l“¨†ºµ§+†ºµ§+†ºµ§+™{#U¿†ºµ§+™{#U¿†ºµ§+™{#U¿l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨†ºµ§+l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨l“¨†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+c6ŽPÙ†ºµ§+†ºµ§+™{#U¿†ºµ§+†ºµ§+†ºµ§+™{#U¿†ºµ§+†ºµ§+™{#U¿†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+™{#U¿†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+”l“¨”l“¨�•P¨›…Ó�•P¨›…Ó�•P¨›…Ó�•P¨�•P¨}o)âÚ}o)âÚ�•P¨—»T—»T—»T—»T™{#U¿†ºµ§+—»T™{#U¿†ºµ§+—»T™{#U¿l“¨l“¨l“¨—»T—»T‘œÔ�X†ºµ§+™{#U¿�•P¨—»T—»T—»T—»T™{#U¿†ºµ§+†ºµ§+†ºµ§+†ºµ§+™{#U¿—»T™{#U¿†ºµ§+™{#U¿—»T™{#U¿—»T™{#U¿—»T†ºµ§+™{#U¿‘œÔ�X†ºµ§+™{#U¿†ºµ§+™{#U¿†ºµ§+™{#U¿†ºµ§+™{#U¿†ºµ§+™{#U¿†ºµ§+™{#U¿†ºµ§+™{#U¿l“¨l“¨l“¨�•P¨›…Ó�•P¨›…Ó”›…Ó�•P¨›…Ó�•P¨›…Ó�•P¨Ç}"›#Ìôªª‘�•P¨Ç}"›#Ìôªª‘�•P¨Ç}"›#�•P¨Ç}"›#Ìôªª‘Ìôªª‘�•P¨Ç}"›#Ìôªª‘�•P¨—»T—»T—»T—»T™{#U¿—»T™{#U¿—»T�•P¨—»T—»T—»T—»T™{#U¿—»T™{#U¿—»T�•P¨›…Ó†ºµ§+†ºµ§+™{#U¿†ºµ§+†ºµ§+™{#U¿†ºµ§+†ºµ§+†ºµ§+™{#U¿†ºµ§+†ºµ§+™{#U¿†ºµ§+™{#U¿†ºµ§+†ºµ§+™{#U¿†ºµ§+™{#U¿†ºµ§+™{#U¿†ºµ§+�•P¨›…Ó�•P¨©—¬ž �•P¨›…Ó�•P¨�•P¨�•P¨�•P¨�•P¨�•P¨�•P¨†ºµ§+†ºµ§+†ºµ§+†ºµ§+™{#U¿ÊÒxxœÊÒxxœ†ºµ§+†ºµ§+†ºµ§+™{#U¿�•P¨�•P¨›…Ó�•P¨©—¬ž �•P¨�•P¨ô-¤%n�w`ÓuÓtÓsÓrÓqÓpÓO"ZN"3L" P"MÓPÓnÓKÓJ"I]! Mapvote14XL_B7F.MapVoteHistory1y] Majority{]Botpack.AssaultH"3G"FÓlÓk"OÓjÓEÓiÓ@]Mapvote 14 XL$€?~$€?}$€?|$€?D] AS / DOMC] DM / LMSB] CTF / TDMA]OthershÓgÓfÓeÓdZQ3Botpack.DeathMatchPlusiDMBotPack.InstaGibDMN]AS-*NÝDOM-*R]DM-*RÝLMS-*T]CTF-*TÝTDM-*c]iDM-*b]CTFa]CTFzÓ_Ó^"p]Never]I\Ó[ÓZ] [MV14XL]Y] ../LogsP„éUWoÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ˆÏ"•éU[¥Ú� ênDxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%óåÝíêYQ²Z�xSP\1@<¤zDyÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*ôƒ{¤yŸ&.*ôƒ{*ôƒ{ � Y€@@n[”›i@<d †ŸkO\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ53¹tŸ¤»ÚãÌ~ Åé@Ü Åé@Ü Åé@܆ºµ§+†ºµ§+¤yŸ&.¤yŸ&.†ºµ§+†ºµ§+¤yŸ&.¤yŸ&.¤yŸ&.¤yŸ&.†ºµ§+¤yŸ&.¤yŸ&.†ºµ§+¤yŸ&.¤yŸ&.¤yŸ&.¤yŸ&.„.ü'l Åé@Ü Åé@ÜŒx�Œx�Œx�Œx�Œx�Œx� Åé@ÜŒx�Œx�Œx�Œx�Œx�Œx� Åé@ÜŒx�Œx�Œx�Œx� Åé@ÜŒx�³o û Åé@Ü Åé@ÜŒx�Œx�Œx� � ^*,ÿ^ª,Í^ª,ð^ª,ÿ×B$@AC @ €Œr@a€@y€ŒJ3~G @þBL~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;�ËfþÌ࣠� )@<MO €Œf@Uz�C$èc`mÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDyZxíè±²�p”DyZxí„.ü'l!�ÀO!�ÀO!�ÀO!�ÀO†ºµ§+!�ÀO!�ÀO†ºµ§+†ºµ§+!�ÀO³o û–×7XÖ×7XÖ×7XÖ×7XÖ×7XÖ×7XÖ×7XÖ×7XÃr � wÓŸf|sÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿE¤nY¬Ÿ¤»ÚãÌ~ˆ5aõˆ5aõˆ5aõŒx�Œx�Œx�Œx�Œx�Œx�Œx�Œx�Œx�Œx�³o ûˆ5aõˆ5aõˆ5aõŒx�Œx�Œx�Þ£½þË � B$PACA €Œ<@@<( @cEG` @+]€Œéko wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPÀl½ýéU[¥Ú�wV] iDM;DM;wlr PO—CŽR @e H w@C @F@@B“tc ž| —JeB�ŸxHwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿeN,🤻ÚãÌ~Á!üMÁ!üMÁ!üMÁ!üMŒx�Œx�Œx�Œx�Œx�Œx�Œx�Œx�Œx�Œx�³o ûÁ!üMÁ!üMÁ!üMŒx�Œx�Œx�Þ£½þË � B$PACm @OD @@O @ŸCaaÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿjõñ…Ÿ¤*ôƒ{Œx�Œx�Œx�Œx�Œx�Œx�Œx�Œx�Œx�Œx�³o û*ôƒ{*ôƒ{Œx�Œx�Œx� � B$PAC*þTKWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿkËÊiþÌ࣠� /P @R—Ci†gŠz€sAu@vEA°J €|%H_ a žj�U€h@B @wÁÖcbZÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEê@‘Ö釅m!�ÀO!�ÀO!�ÀO!�ÀOqi� A" fjZ 0”›t¤zŠx„DkNŽm„d ^„s¤h@@] žC@@8– ž]@O I @Q °yžŠP€‘TéQXjÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ c6ŽPÙéU[¥Ú$ˆÏ"•l“¨$ˆÏ"•l“¨l“¨l“¨l“¨l“¨$ˆÏ"•� e€@=k€Œt °R@R}R_‚ š:Û:$ÿÿÿÿÿÿÿÿÿÿ8jA‰“R™gH}†ºµ§+†ºµ§+†ºµ§+ºR@G¢«/Tã2³o û„.ü'l„.ü'l«/Tã2„.ü'ljA‰“„.ü'l«/Tã2„.ü'l„.ü'l„.ü'l”DyZxíP¤I°�„.ü'l!�ÀO„.ü'l!�ÀO†ºµ§+ºR@G¢«/Tã2³o ûdtw�8„.ü'l„.ü'l”DyZxí«/Tã2òÖ’�”ÀÕD“òÖ’�”ùlïòÖ’�”û�¬ÅûòÖ’�”ñ9Û ÓòÖ’�”ö0¸ òÖ’�”ò^¦MòÖ’�”DyZxí� mPP"2M"N"•O"YB@€a€@v@{oU @Dd @|@F @\R €|€ŒFGŠf�p€KJJ i€Œrt@!A"M€ŒDŠOPmáJ @$fa<ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿK¾ã£$ˆÏ"•c6ŽPÙc6ŽPÙ� FR�v€@C@y †M�!x�^ŠZ F @H_ @U€@T~�BŽßys^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ^[\€ß¬D�•P¨›…Óó0Ni¿"·œqÏ"·œqÏ"·œqÏ"·œqÏ"·œqÏ"·œqÏ"·œqÏ� K�@PÉQ@@@a @@|ðXŠiE@dŠHŽH € Td y –_{H@G€@@†o€ŒUìI€l ŠG €�Z€†SI `@u Žbx“EŠl FŠGŠYŠTMtG@@†U !H[€FW@m@u€@K{ @| V†d@p @«U L–Y €HY@W@~†U€Œn†T †B€C @h€_ €X†Tq€Œ`€@I[  wŠxŠyŠzŠ{ŠrŠ@%_�Q€@B�^�A E�G�mI�b€@s�mJM�N�O�S�_ –U @'–} P@V @] @p @`;u @L@\”$p T €@~D @DI|ÝFEbÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2dtw�8ÝüM»ï³o û„.ü'l„.ü'l„.ü'l†ºµ§+ºR@G¢«/Tã2„.ü'ldtw�8„.ü'l†ºµ§+ºR@G¢«/Tã2„.ü'l„.ü'l„.ü'l³o û†ºµ§+ºR@G¢«/Tã2³o û³o û � [jQ]MapVote Key BinderP @k–*$R } @ãN [��qÊz @u @L�ædsCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿtº=¾±æÑ$ � .@@L €@Bå@{h @@z @I@@E€@‘M@uXA@$_€k €x€v@[†vu €†A€D@l€~€Œ„mŠp @W  @CS \ ] ^ pcq  @a @b @c @L  @a ÉT]€ cI €^–X–pŽqŽrŽwŽt€@{k u€@xŽy;X;i–U~@q Y@^ AdC–g–^“o€‘n @Ne@t €@K—ÝA}`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2 P¤I°�ÝüM»ï†ºµ§+�•P¨³o û„.ü'l„.ü'l„.ü'l³o û„.ü'l„.ü'l„.ü'l†ºµ§+ºR@G¢«/Tã2„.ü'lP¤I°�„.ü'l†ºµ§+ºR@G¢«/Tã2„.ü'l„.ü'l„.ü'l³o û†ºµ§+ºR@G¢«/Tã2†ºµ§+�•P¨³o û³o û � [!Q]Map Vote Welcome Windowx äêMV-ôš:Û:$–:Û:$ÿÿÿÿÿÿÿÿÿÿR™gH}êYQ²Z†ºµ§+ºR@G¢«/Tã2„.ü'l†ºµ§+ºR@G¢«/Tã2³o û«/Tã2«/Tã2„.ü'l„.ü'l„.ü'l„.ü'l„.ü'l†ºµ§+ºR@G¢«/Tã2«/Tã2«/Tã2«/Tã2«/Tã2†ºµ§+†ºµ§+ºR@G¢� QÓpSSP$@V@@AÌW–f –jg�y€@h@@t@n@av \@bo @$T€}@j |e€@[€@ ^ €Ž@  @[ €l@} � @P w“Y Ž@@w€@~@éHlÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}o)âÚéU[¥Ú�•P¨›…Ó"·œqÏ� ”‘A@C@E @E@VŽI@k TO @~ @u€@b �@l [ @@@E€Ar  @SQ @M}]Žv  W X Q@VŽ[ŽZ\ކc–V–d @h @VQ;mª÷o.«.†¶È×#oÐ#î_?P?O?M?L”r#*ç#### -- CreateWindow Failed/(µo-ôou#-Ä'#0#å#+' ^ ich@\ ««B €@mN„R@C “G €p€@O*x€~ @J @f @K€�D lX [ É@@E É@@H @F É@@`I É@@N @O@[  @M€�~ @@k€{€†c €@M @e t€@z L€Q € o   \  ]  g^  a@`  w ŽJR@b  g O@e @f  O€j @R  @Sy€†G @ E€@n @Ejr  @ s €@v  @ C €y€x  @ z@|  @ a}A €@r€@|w“~  @ E  @ €@G  @ Y RM Y  r«@P«q€@^ S@[ ` @ea @l–t€@w@` @a –O€^@[†i `Šn  Y ]@{_ @M B@�Q@Óx C@Y �@@Z @wx€@V @{ŽS€�L @k@S@@I €ic €G€@L€@-K €@V€Œ yŽut�@ðh@DUYW�s@j€@Y @j@@\Žy€q@VŽq€–Rc –D@g€@R@h€çUC@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿll 'CÙçôŒÇËòÖ’�ž|ë[$òÖ’�Š|.XÚòÖ’�ž|ë[$òÖ’�Š|.XÚòÖ’�òÖ’�”ÀÕD“òÖ’�”ùlïòÖ’�”û�¬ÅûòÖ’�”ñ9Û ÓòÖ’�”ö0¸ òÖ’�”ò^¦MòÖ’�†ºµ§+ɶŒsÖ†ºµ§+òÖ’�°_ã‰4òÖ’�òÖ’�òÖ’�òÖ’�òÖ’�òÖ’��tµð³o ûòÖ’��tµð³o ûòÖ’��tµðòÖ’��tµðòÖ’�†ºµ§+ɶŒsÖ„.ü'l„.ü'lŽ�᱘ž|ë[$†ºµ§+†ºµ§+ɶŒsÖɶŒsÖɶŒsÖŽ�᱘ɶŒsÖɶŒsÖɶŒsÖɶŒsÖɶŒsÖŠ|.XÚŠ|.XÚŠ|.XÚŠ|.XÚòÖ’�ž|ë[$ž|ë[$ž|ë[$ž|ë[$ž|ë[$ž|ë[$òÖ’�Ž�᱘ž|ë[$°_ã‰4°_ã‰4°_ã‰4°_ã‰4°_ã‰4°_ã‰4°_ã‰4òÖ’��tµð�tµð�tµð�tµð�tµð�tµð�tµð�tµð�tµð�tµð–×7XÖ×7XÖ×7XÖ×7XÖ×7XÖ×7XÖ×7XÖ×7Xà �AW m n e –c@Y$Qc@r@q – @}€„€@[B w } €@„\ @@C €@ÞvV]ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿG �7ujÞ£½þËŒx�Œx�Œx� � c€E @M €@N €$r €@V ^€@P €@e@O  @T X @] @NŽPŽ@z€$2_ Ž` Ža Žg Ž€b €Oa�@e �@VŽi ŽDŽZ\w @@w o }ld @f€@s  @@y €b€@J@`@A @@ �T €@z@L �]@@€"kV@N€F €W€@E @Z@{€�@@ P @@B €S €z€U €W€X @@D@h�^@bõ@@r€@K @@@@@@@�@D€x€@@f€†]€@�@@Li @"@€†hÿ@p @@N@€q €r €`Ž€@x Tz { i @€@~€} € @ @y  @û_T%Ç} jJ@H@@W@@K@[XU>Tj .†¶nrj *ç#### -- Attempted to open a window on something other than a PlayerPawn/([.«j È×¹r[*ç#### -- No Console/(ó„�[-Ür[Ð*[F*[-÷'[{P&' ÂF@u€jc @k€@W@`TWiO/•¸ a  Z€ Q @e€\€e€Fÿ@a€@�@€@€K €a€@i€@H €f€@@ã]RlÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿlZõf1ãIÄ(›„.ü'lr � x@@E€@\€@B €@X€u�s€U€T€l€Q@t @@s€~Žm€}€@€coŽo @Baz} €@Dv: €@Kc% z�#-€†c| €@k  @NeAè F-L-Qgc¯ M-O-^i:€ T@@&X@@V€@W€†€”$Y@@\@@€€b@m€`j[O P-”„kF' C€@p@d€Œe€€€@€[€@j€€g€E€Œ€€n€@q@a @B€v €@J€@s€@€@�@w�Il u€M€}€€Q €@y €9$€AB€@_€z€l€@F€r€_@I€Œ@N€€K €@^€q€€T€‘€—R€N €U€@n€@o€@\€n€u�` @o @_o€@m  @]€@k€@€@S �{ @Dt €g€@�S@ea€@Z@l€@r€€@u€�G€�h�\@M€†b €r“XC€�€€sQ€@f �@M€�k€@k €g G”ìJ€t€€R�K @H”Eu€@N€@\ €@Q€@R€”å€P€@W€U €Y�€`€�Y€[€D@�|€@T€�D �€@A €�d€@J�k€�X| �èIDcÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ/joÄò•è±²�pŒx�Œx�Œx�Œx�Œx�Œx�Œx�Œx�Œx�Œx�³o û†ºµ§+jõñ…*ôƒ{jõñ…*ôƒ{„.ü'ljõñ…�K4螆ºµ§+*ôƒ{†ºµ§+*ôƒ{jõñ…jõñ…†ºµ§+�•P¨Ž�᱘Ž�᱘jõñ…*ôƒ{jõñ…jõñ…*ôƒ{jõñ…jõñ…�K4èž–×7XÖ×7XÖ×7XÖ×7XÃŽ�᱘Ž�᱘Ž�᱘Ž�᱘r � Z€�m€�_€�t€@c€r�B€“^€@Í ç Þ*Í p x{ Bûq}�-p}-Up ’}�{ ^p  %`w4ppp-Sp -^p[X]^^{ ”%}M ¤&}G µ,}E Æ,}~ ×,}| è,}x ù,}v ,}r ÿÿ v€gzw;Ù™a�-V a?((Ü[-r ÀÅD[5 ùÅD[5 ûÅD[5 ñÅD[5 öÅD[5 òÅD[5MapVoteWRI: SetupWindow()[%&C%,C%,C%,C%@ga€?(_çSuper.SetupWindow() = false €J{yUÌÀD4.†¶È×-Ýa?((-O 'J Âÿÿ@pe™Kœ{a %]r{*ç[MV14] [Warning] Cache is none in ClientSaveMaplistConfig()!!! ClientSaveMaplistConfig() -> Start-U'-W 'o%Ñ–o‘p%Ç–ps˜’p�oG|Bop' |€|,[X]||,’p�o{`|’p�o{`|½’p�o{`’p�o{`¥p»¥ož{{ G{hMH‚‚-F šG[ ›[%{qZ{U Y{b{a¨[MV14] Storing Maplist to file finished:SG  B.W€ê~|&J§¥‚±n?%%±²œÒ®n?,n+å0W¼ í d'¥wW*W+WåW0 S1-º'S¼âÁwS*Š„z€VS¿,UTMenuz€VS¿,UMenu.«²È×#ªªwS¿¿ÁSSãörS*.«²È×#%S-Ä'S+S0 ×Aimo×-i| ¼ í d'F‚-  r| *1m.«²È×# B}f†›«}a %Wr}*ç[MV14] [Warning] Cache is none in ClientForceReload()!!! }qForceUpdate!}U ForceUpdate!}b}a B.Úndx-Õ(Ún²œÒ˯¬¼£?,¬£?,௬¼ª?,¬ª?, DDT~ÚD[ !K  uM 4`7%�-LM ëM K ëK ™~M K % Y 256FM10®'M¼âÁwM*Š„z€VM¿,UTMenuz€VM¿,UMenu.«²È×#ªªwM¿¿ÁMMãörM*.«²È×#%M-Ä'M+M0 ×GaZm×-aD ¼ í P'krD *D-J 1k.«²È×# ÚJ \p-Õ(Ú£ðCªHC˯¬¼£?,¬£?,௬¼ª?,¬ª?, €H€I€æJv{' ÇN ùkT{¸×N ¸U T §N ¯Ñ?,È®U ?,T áÇN VW €¤Z ŽÜQMf—"$ -r .»½ %$  ^ ŽTO@†� ‡ -r [ €O,u. ´…wu*iz[ ê€uL,,u…u. uÀ* €CY %V"|€Y,[x]YY,Nz€êY,&:Y€Y“}Y,Y ÍXwIôk -r t²…„šw:t$íšw:t$(…‚w¥*w¥À*.¤¥À„šw:t$ìšw:t$&‚‚w¥*w¥Ø*w¥Î¥Ø.¤¥ØŸšw:t$"Ÿw¥*I¥t%Ž–t,krIÀ* I.¤IÀ¥tIIKšw:t$!Kw¥*I¥t%:–t,„rIØ*rIإΠI.¤IØ¥tÒI½wIJ €@h ŽSYb4 ²ReplicationCheck() -> Entered!®„„„zZNULLzYNULL šGÿÿÿÿ{êp,#ENDa«—¥{,çReplicationCheck() -> Timeout: > 5(&' Ë[7G¥¶-r. y-í(è. y-í6®7š$6¯7š$6­7š$€§7G I c ¯b ?& ¨6®7š=,ÿ6¯7š=,ÿ6­7š=,ÿAE. y-` 6®7š$ 6¯7š=,ÿ6­7š$ Š6®7š=,ÿ6¯7š=,ÿ6­7š=,ÿ§7G I c ¯b ?& ¨z€. yL&96®7š$Š6¯7š$¤6­7š$¦A7šJ€. yL&z7õ%¼(üÚ7®G ?,I pp€. yL&, - . yL, {€S ÜzVœ€6®Vš=,ÿ6¯Vš=,ÿ6­Vš=,ÿ§V£ª ¨ÜV~ j WaJö!‚U‚w¶*w.†¶*.†¶)MUTATE BDBMAPVOTE RESENDVARIABLESGetServerCacheConfig() -> Finished! ]_`XW#KLoadMaps()u-UU�bçLoadMaps() -> Replication unsuccessful!Cm_meu-W (A%O–A‘u%E–uTBAu;{T’u�AYT%“}T,’u�AQ JêT&¥’u�AQ D¥u™¥A|b&˜b,—bDbC. # jbu%ï–uåšuQ b. #ibuY¥u�bCbD-L'¥bVl ’’’&D,D,D,Dl  u€^b_‘v)i„„„{ %qZ{ %U Y› %{ GzG %` Ëc4G¦Èi.*@ -í6®4š$6¯4š$6­4š$€§4S®A?&U¯l?, ¨6®4š=,ÿ6¯4š=,ÿ6­4š=,ÿ§4S¯®Al?&U€? ¨§4¾BA€?l ¨§4A€?l ¨§4UA€?l ¨M6®4š=,ÿ6¯4š=,ÿ6­4š=,ÿ§4S¯®Al?&U€? ¨§4¾BA€?¯l?& ¨§4A€?l ¨§4UA€?l ¨4õ%¼(üÚ4®S?,A.*@ qÚ4®S?,dA.*@ z  €ÜqT¨6®qš=,ÿ6¯qš=,ÿ6­qš=,ÿ§q£€? ¨§q¯ª?& ¨Üqqr `m™§*¶9-@ RequestMaps() -> Request already Send! Š‚w¶*w.†¶*.†¶%MUTATE BDBMAPVOTE REQUESTMAPS-@ 'RequestMaps() -> Finished! p¤eiu DÌórp.´pwp*Txëu ë€pI}u ppp.pÀ €¤ÜlhfÃ2.»½ %$  ÓdD´-…�-O U ,�-V -V ';timer()-L(P`‚„—P[ ›PG-L'[PÃr. #*ç[MV14] [Critical] MapVoteTabWindow is none.  . #¸‚w I*.†¶¡-ó.  IévD®®®®®®®®®®®®®®®®®®®®®?’’’’’’’’’’’’}J}J}Sk }Sf }S^ }T-b }T-` }T-S}T-] }d}c}b}a_^]\?}`?}T-Y?}T-X?}T-U?[ ?}o ?R ?}N ?Y ?}^?}c?}f?}T-m ?}T-n ?}A ?}Q?}T-r %®–,¡v}S¥„Лk v-L'k vv-¢KJ%&w-¢KJ&&x-¢KJ,&y-¢KJ,&z-¢KJ,&{-¢KJ,&  ?k V  ?f Y  ?^ C-¢-b E-¢-` F-¢-Sr-¢-] g-¢-\ d-¢-Wl -¢-r \  S[ ^  o _  ?R y  N ~  SY s  q D  dE  cG  bI  aL  U_M  U^N  U]O  U\S  A x-¢-X`-¢-UB  fG-¢-m {-¢-n G-¢-Yh ¨Class:v i ¨Map Prefix:s d-¢-W¸—}Q, %¸–,@X-¢KQ&i{S@DS@X-¹(®@D Empty@X-¹'¥Òò„-S.†¶¡-ó l%1 ‚–, {Z|’&¥ùð ›|p p Ý –|« zêZ,&?&!&ZZ%“}Z,-U '³ -U ( JZ-U ¥K p |-L'%] –, + {})}S {~*~¥÷  ])pppSP/SG Maps loaded ipMode: N  iË®® ]Ë?, ?�} ]¸, o d p c q b r a w q  `¨Priority:€U_, \¨Priority:€U^, [¨Priority:€U], V¨Priority:€U\, u S C D®®®®®?’’’}d}c}b}a_^]\?}Mm ›C j j C -L'æ { MIfã w I*.  IéA   .D MDÃb-¹'fzf.D MDÃc-¹'.D MDÃV-¹(.D MDÃW-¹( ^ MT‚�-L-FRw I*.  Iém-¹( r�-L-F'a€?( -F(a?( R€neV·CUR.´QwR*5|eRI'R.RÀ( rvbA¨eo.´cwo*G|boIoco.oÀ c @ÏvqV +ÏßDÙúC_,P Ày.Ž Ž A A´B AyVisual ConfigðAkpB¯%D®k?,£T AV.Ž ŽkTVAuto DetectðAk A¹kr.Š ŠkTr-Ð(¸®TPv.Š ŠkT¸?,V.Ž ŽpB AV DM¹?,¸®TPx.Š Š A A¸?,V.Ž ŽpB AV TDM¹?,¸®TPw.Š Š A A¸?,V.Ž ŽpB AV LMS¹?,¸®TP{.Š Š A A¸?,V.Ž ŽpB AV CTF¹?,¸®TPz.Š Š A A¸?,V.Ž ŽpB AV DOM¹?,¸®TPy.Š Š A A¸?,V.Ž ŽC AVAssault:¸?,(S.� � C AS(SÍ C¹?,<o%Ó–o,0›o%¹?,¸®TPoX.Š Š A A¸?,oD.Ž ŽHC AoD empty¥o¹?,¸®TPl .Š Š A A¸?,V.Ž Ž*C AVUse Exclude Filter¹?,¸®«TÀ?Pm.– –>C Am¸SavemÛm+m-¹'¸®«Tà?Pd.Š Š–C Ad#Reload Maps on request onlyd%d·$dÑC€?¸Ty .– –>C Ay ¸Reload Maps¸«T ?q .– –>C Aq ¸CloseZ .Ž Ž AÜBHB AZ Limits.ž ž AC*C A-Ð(Ì AÂ4CÅ, Voting Time Limita .Ž Ž>CC B Aa %pUÊ, secV.ž ž AC*C AVÌ AVÂÈBVÅ&VKick Votes Req.] .Ž Ž>CC B A] #pUVÊ, %Y.ž ž A*C4C AYÌ€?YÂðAYÅ&YScoreBoard Delay .Ž Ž>C*C B A %pUYÊ, sec_.ž ž A>C9C A_Ì€?_ÂÈB_Å&_Mid-Game Voter Req.Q .Ž ŽCC>C B AQ #pU_Ê, %\.� �kCC¾B A\'\Don't show last\Í A^ .Ž Ž€§CCpB A^ maps played~.� �kCCðB A~'~Reload map list when~Í A_ .Ž ŽkC%CHC A_ +maps remain. (Elimiation Mode only)Y .Ž Ž ARCHB AY Misc.C.Š Š AfC–C AC2Use the Map Cycle List instead of all mapsC%C·$CÑHC€?E.Š Š AzC–C AE&Open Voting Window at Game EndE%E·$EÑHC€?F.Š Š A‡C–C AF!Enable Player Kick VotingF%F·$FÑHC€?g.Š Š A‘C–C Ag#Check Sudden Death OverTimeg%g·$gÑHC€?y.° °fCfCðB€?y Modeyo(yÿ´ByMajorityyEliminationy ScoreyAccumulationh .Ž ŽfC‚CHC Ai .Ž ŽfCŒCHC A` .Ž Ž A›CHB A` AdvancedA.� � A¥C¹CpAA(A#Welcome Page Web Server URLAÍRCa .Ž Ž A€¬CÈC Aa @Example: www.MyServer.com:80/UnrealStuff/WelcomePage.htmB.� � A€¶C¹CpAB(B&Map Information Web Server URLBÍRCg .Ž Ž A¾CÈC Ag .Example: www.MyServer.com:80/MapFiles/^.° ° A€ÅC¹C€?^#Map Vote History Class Type^o'^ÿRC^'Mapvote14XL_B7F.MapVoteHistory1^'Mapvote14XL_B7F.MapVoteHistory2^'Mapvote14XL_B7F.MapVoteHistory3^'Mapvote14XL_B7F.MapVoteHistory4G.Š Š AÒC C AGCOpen Welcome Window and KeyBinder when player enters serverG%G·$GÑ C€?{.Š Š A€ÞC C A{Sort Maps with PreFix{%{·${ÑðB€?{-Ð({-¹(G.Š Š AëC C AGDebug ModeG%G·$GÑ B€?G-Ð(e .– –*CëCÈB Ae ¸List crashed mapsc .– –ŒCëCÈB Ac ¸Clear crash Listx.Š Š*CáC C AxRemove crashed mapsx%x·$xÑðB€?`.Š Š*C€ÙCðB A`Enable Client Cache`%`·$`ÑÜB€?`-Ð(y.Ž ŽÒC AðB AyGame Typess.� � AðA>C As(sMapvote TitlesÍðBD.� � A4B>C AD(DList 1 TitleDÍðBE.� � ApB>C AE(EList 2 TitleEÍðBG.� � A–B>C AG(GList 3 TitleGÍðBI.� � A´B>C AI(IList 4 TitleIÍðBL.� �fC4B C AL(LPriorityLÍðBM.� �fCpB C AM(MPriorityMÍðBN.� �fC–B C AN(NPriorityNÍðBO.� �fC´B C AO(OPriorityOÍðB o“tLuU ÍwOn¶ `L²z„šO:L$íšO:L$(z‚w¥*w¥À*.¤¥À „šO:L$ìšO:L$& ‚‚w¥*w¥Ø*w¥Î¥Ø.¤¥Ø”šO:L$"”w¥*T¥n%ƒ–n,`rTÀ* T.¤TÀ¥n>T@šO:L$!@w¥*T¥n%/–n, „rTØ*rTإΠT.¤TØ¥nÇT½O[\ ËzG%+�.L -í6®š$6¯š$6­š=,ÿ§{xG ¯F ?& ¨-F '6®š=,ÿ6¯š=,ÿ6­š=,ÿ§{xG ¯F ?& ¨-F (õ%¼(üN.L I¶z€N,[X]6®š=,ÿ6¯š$6­š$Ú®{?,xN,)-F 6®š=,ÿ6¯š=,ÿ6­š=,ÿ vëN�„z€v,AS-|€v,BT-6®š$6¯š$6­š$€ î„|€v,TDM|€v,DM-6®š$6¯š$@6­š$ [„|€v,DOM|€v,iAS6®š$@6¯š$6­š$@ È„|€v,RA-|€v,CTF6®š$6¯š$@6­š$@ 6®š$6¯š$6­š$Ú®{?,xN  ýpZ %| C€ýZ Q Q ‰$ ²Z me  )MUTATE BDBMAPVOTE LISTCRASHEDMAPS† ¬c  *MUTATE BDBMAPVOTE CLEARCRASHEDMAPS† Øq ½½½† ’m CpADMIN SET Mapvote14XL_B7F.BDBMapVote bDM Tv-¢ DpADMIN SET Mapvote14XL_B7F.BDBMapVote bLMS Tw-¢ DpADMIN SET Mapvote14XL_B7F.BDBMapVote bTDM Tx-¢ CpADMIN SET Mapvote14XL_B7F.BDBMapVote bAS Ty-¢ DpADMIN SET Mapvote14XL_B7F.BDBMapVote bDOM Tz-¢ DpADMIN SET Mapvote14XL_B7F.BDBMapVote bCTF T{-¢ LpADMIN SET Mapvote14XL_B7F.BDBMapVote VoteTimeLimit UÊ JpADMIN SET Mapvote14XL_B7F.BDBMapVote KickPercent UVÊ KpADMIN SET Mapvote14XL_B7F.BDBMapVote bUseMapList TC-¢ IpADMIN SET Mapvote14XL_B7F.BDBMapVote bAutoOpen TE-¢ IpADMIN SET Mapvote14XL_B7F.BDBMapVote bKickVote TF-¢ NpADMIN SET Mapvote14XL_B7F.BDBMapVote ScoreBoardDelay UYÊ KpADMIN SET Mapvote14XL_B7F.BDBMapVote bAutoDetect Tr-¢ RpADMIN SET Mapvote14XL_B7F.BDBMapVote bCheckOtherGameTie Tg-¢ CpADMIN SET Mapvote14XL_B7F.BDBMapVote Mode y å`-¢L|y Elimination`-¢( Opp[MV14] Error: Cache mode doesn't work with "y " modeåD ,–X J\ å—X D \ SûX %D  F¨[MV14] Error: RepeatLimit Max number on cache mode is:SD  LpADMIN SET Mapvote14XL_B7F.BDBMapVote bClientCache T`-¢ JpADMIN SET Mapvote14XL_B7F.BDBMapVote RepeatLimit \  QpADMIN SET Mapvote14XL_B7F.BDBMapVote MapVoteHistoryType ^  LpADMIN SET Mapvote14XL_B7F.BDBMapVote ServerInfoURL A  IpADMIN SET Mapvote14XL_B7F.BDBMapVote MapInfoURL B  QpADMIN SET Mapvote14XL_B7F.BDBMapVote MidGameVotePercent U_Ê JpADMIN SET Mapvote14XL_B7F.BDBMapVote MinMapCount ~  MpADMIN SET Mapvote14XL_B7F.BDBMapVote bEntryWindows TG-¢ OpADMIN SET Mapvote14XL_B7F.BDBMapVote bSortWithPreFix T{-¢ JpADMIN SET Mapvote14XL_B7F.BDBMapVote bDebugMode TG-¢ KpADMIN SET Mapvote14XL_B7F.BDBMapVote MapVoteTitle s  IpADMIN SET Mapvote14XL_B7F.BDBMapVote List1Title D  IpADMIN SET Mapvote14XL_B7F.BDBMapVote List2Title E  IpADMIN SET Mapvote14XL_B7F.BDBMapVote List3Title G  IpADMIN SET Mapvote14XL_B7F.BDBMapVote List4Title I  LpADMIN SET Mapvote14XL_B7F.BDBMapVote List1Priority L  LpADMIN SET Mapvote14XL_B7F.BDBMapVote List2Priority M  LpADMIN SET Mapvote14XL_B7F.BDBMapVote List3Priority N  LpADMIN SET Mapvote14XL_B7F.BDBMapVote List4Priority O � „zS –}S , S Botpack.Assault FpADMIN SET Mapvote14XL_B7F.BDBMapVote ASClass S  RpADMIN SET Mapvote14XL_B7F.BDBMapVote bRemoveCrashedMaps Tx-¢ XpADMIN SET Mapvote14XL_B7F.BDBMapVote bReloadMapsOnRequestOnly Td-¢ QpADMIN SET Mapvote14XL_B7F.BDBMapVote bUseExcludeFilter Tl -¢B %9–B ,z pz SAB X-¢¥B ÿ ,¨Mutate BDBMAPVOTE CUSTSETTINGz  Settings saved!† ìy  $MUTATE BDBMAPVOTE RELOADMAPS½½½† vv-¢r-¢(† HwEw-¢r-¢(† vxsx-¢r-¢(† ¤y¡y-¢r-¢(† Ò{Ï{-¢r-¢(† zýz-¢r-¢(† ƒr€r-¢v-¢(w-¢(x-¢(y-¢({-¢(z-¢(† ÿÿ~ {$Z Îa %pUÊ, secx V] #pUVÊ, %x >Y %pUYÊ, secx u_Q #pU_Ê, %x ÿÿ~ ÿÿ ÜFLÙ\w´À*6®Fš=,ÿ6¯Fš=,ÿ6­Fš=,ÿž6®Fš$d6¯Fš$d6­Fš$d§F£ª ¨ÜFMN €¤Ü~{fYó .»½ %$  jDS‰ôK75‚-S w#*. #JD-B Â@GAJÓ el.´cwl*G|Glilcl.lÀ }.�°L1/‚-S w#*. # . ÂËC?G+‚·n.O -í6®?š$6¯?š$6­?š$€§?M®x?&R ¯k?, ¨6®?š=,ÿ6¯?š=,ÿ6­?š=,ÿ§?M¯®xk?&R €? ¨§? Ax€?k ¨§?x€?k ¨§?¯£?,!x€?k ¨â6®?š=,ÿ6¯?š=,ÿ6­?š=,ÿ§?M¯®xk?&R €? ¨?õ%¼(üÚ?®M?,xS.O H _ .O i%D¯«?D¯£?,!ÍÌL>?,Ú?®M?,x_ Ú?¯£?,x€U.O O , yT ¾eRV JT e €êT ,c C—c %ppSV .e JSV T  v3•^M&$w#*. # 3v ÂÜEy÷+6®yš=,ÿ6¯yš=,ÿ6­yš=,ÿ§y£€? ¨§y€?¯ª?& ¨§y A€?¯ª?& ¨§y¯£?,!€?¯ª?& ¨§y¯ª?,¯£?,€? ¨Üy|} V €@Ø.FØÙÙ.Þî G ¯£?, @Aª €¤AW B(ÞfKe%<{€êW e&t2—e,dW ¥eêW e ÜIFfS@ .»½ %$  Og @CÖ].´}w]*a„|g ]C|g ]C]}].]À K�e€@Bo)›ûM+)w#*. #)on ÂïGg6Ëg1ïgkg6®gš$6¯gš$6­gš$§g A A¾C@ ¨§gÒC AHC@ ¨§g AðB¾C@ ¨§g A\C¾C@ ¨§g A C¾C@ ¨§g€ÊC A@õC ¨ Lh*¡šN+)w#*. #*h[ ÂËPFG&”J.A -í6®Fš$6¯Fš$6­Fš$€§FK®_?&Y ¯L?, ¨6®Fš=,ÿ6¯Fš=,ÿ6­Fš=,ÿ§FK¯®_L?&Y €? ¨§F_€?L ¨§F¯£?,!_€?L ¨¾6®Fš=,ÿ6¯Fš=,ÿ6­Fš=,ÿ§FK¯®_L?&Y €? ¨Fõ%¼(ük €.A C,i .A C,D¯«?D¯£?,!ÍÌL>?,ÚF®K?,_ppk  - i ÚF¯®K£?,_S.A B  ÜQ@ù6®@š=,ÿ6¯@š=,ÿ6­@š=,ÿ§@£€? ¨§@€?¯ª?& ¨§@¯£?,!€?¯ª?& ¨§@¯ª?,¯£?,€? ¨Ü@ij Ø0FØÙÙ.Þî G ¯£?, @Aª ÓSc¾Ócde Ís M5Ís r q ½s r q  €T€èeGÂ6®eš=,ÿ6¯eš=,ÿ6­eš=,ÿ§e€?ª ¨§e¯£?&€?ª ¨À�-õÉeÊ@Aþ ¨ €ÇYW&0ÌÊ-d %rr*Jaa a—A}Ir6-d (JaaÊr6IA,úA’A,úÊ–A}Ir6IA,úA’A,ú IURà,/a0 r,+rVr¶,10Urr*çFailed to find MVWRIa rf6


Please Wait.....
r6JaWrJ*çFailed to spawn MapVoteHistorya J zU Nv 6§4OXDzv 9w#*. #M =L L VL pL v  ÂVZ/´0PV Âÿÿ[A¹nP-YçpMV A!C ý`~Y�

Map Report nziSEQp2ŒziPCp1p

p          0ziSEQpSequence  \ziPCpPlayCount p Map Name
p          p------------ -------------------------------
R& QŽh €Ç_&*œóh &ñ˜h ,*—1,dg ,d5g 1Œ˜Rg p          ùziSEQpSR)l&ù–l“,}SR)p ¥l¾bziPCpSR<l&b–l“,}SR<p ¥l'ppRG
¥Rçp¹ri*a iIi-d 'q! ¥h  f]Gr¥ÿÿÿÿÿÿÿÿÿÿm €Ïn d'ÇôÏ' !K > AM¸A+ðBY At .Ž Ž>M+Yt Map Voting Menu Hot Key¸>®+?,¹M?,¹+?,`.É É>M+Y`-Ð(`-ã'`-â'`-á'`-¹'¹>®®+?,?,¸M®Y?,¸+?,2T.Š Š>M+YT!Change Message ExpirationT%T·$T-¢'-r¸>®+?,2¸M®Y?,¹+?,nc .Ž Ž>M+Y·>?, ¸+?,‚a.ž ž>M+Ya-Ð(aÌ@@aÂpBaÅ&aMessage Expirationa '5-x 'c pUaÊ sec¸M®Y?,¹+?,2h.° °>M+YhWindow Sizeho(h AutohSmall (Original)hMediumhCustomh}'c¸M®Y?,¹+?,2Q.� �>M+YQ'Q WidthQd'Qe,Q  SD£¸>®+?, M.� �>M+YM'MHeightMd'Me,M  SDªw D¯ª?ŸM®€ÀC?w + B>¯£«+?,R.– –>M+YR¸SaveRú ÒR-¹(R-Ð(¸>®+?, +¯£®>««£ÍÌL<?,P.– –>M+YP¸ClosePú ÒP-¹(P-Ð(Û[ >“Çb&iÞm &ܘm ,ɘR“1&l’R&¿˜l1|ziSEQ|—R)l)qRlµziPCµ—l<R<qRl¥l3¥RÒq!G ¥m  geD!*ÿÿÿÿÿÿÿÿÿÿhjqó›­ jGjGhGhG Bj<j<h<h<B@j)j)h)h)@ jEë9 ècN¥:8-_ }NNn -_ (g-¹( @r|zãÉ &i}i|R&q!D l€€ih[³òëh%é–h,ÿT²pKEYNAME Shhn Tß{TP²pKEYBINDING Tß4PMUTATE BDBMAPVOTE VOTEMENU` T`·$a Té¥h gio;??C !K ÝC-r ÀÅDC5 ùÅDC5 ûÅDC5 ñÅDC5 öÅDC5 òÅDC54‚{i D-lga€?(1çSuper.SetupWindow() = false=a€?( s€N€m@ 4ÇÝ7%�-r@ ë@ A ëA ™~@ A % ty5À Ë š1%%N&H1yëyÉ'X’‘“HN,Nh|XGyXyšNH%žtëXGyHXÆ»šNXNHÆNX, xwsy® £ssr–s1sG’s&Gs<’s&<s)’s&)¥s 1G1<%1)%¦1 €ýqi%Òuýi]] ¡$`w.Éi*g.Éi`wg*-_ 'g-¹'i xRWž ›P½½ž ÿÿÿ ü$i öaÂ�-x  ówa*c pUaÊ secù ÿÿÿ ÿÿ ^zp[£m )B 5p'—B %yB  «v^Wi 'ch'c ]&'\—'@  �,'\ '@X  ,'\Dö?JQ –C¼£'@Dö?JM –C¼ª  ÿÿ-^''b_�-^Q S'\M S'@²5[MV14] Saved! Re-open Mapvote to see changes. |Gu”§ [u&G,N˜G1D–G)u)uG¥Gyu éyl} UlZ„„„zI zI Escape‚™l,p ˜l,y‚™l,0 ˜l,9 YlI  B}vŒM b DBhƒâ/H 5h-—H %H <i {Y).‰²8ppSET Input b mutate bdbmapvote votemenug b‡{a ²pSET Input a  b€J €Á~c3=ZÁ-c NDdcv'/J 5d!šJ %%-J < A_Z;±}„ra* rT* -_„µ'5aÊ!ó'-rT-¢µ-_'5aÊ'-rT-¢'b{'-r ÀÅD'5 ùÅD'5 ûÅD'5 ñÅD'5 öÅD'5 òÅD'5 KFjAk“/K 5j-—K %K )f L €QMn:^Ú3L 5n%šL %1L ) \HX^z"€y"€Y"€\"€U*,æææN*,êêêÿa"ÔÊ)ýa¢lž†�@€>>>>>>>>>>9$>>>>>>>>>>> $>>>>>>>>>>> +239>>>>>>>>>>>43333333333333333333333332-2>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>3'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>#:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>8>>>>>:/9>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+'>>>>>>>>>>>>>>>>:,!)8>>>>>>>>>>>>>>>>>>><>>>>>>>>>>>>>2+>>>>>>>>>>>>>>>>=9>>>>>>>>>>>;7>>>>>>>>>>>>>>>>>>>>>>>>>>9 2>>>>>>>>>>>>>>< ;>>>>>>>>>>; 0=>>>45>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2>>2'%+:>8 =>>>>>>>>>>>>>>>>>>>>>>>>>>1 7>) 9=$>>>>>>>>>>>>>>>>>>>>>>>>>>/>'*" 69=>>>>>>>>>>>>>>>>>>>>>>>>;>&;>>>>>. ="/>>>>>>>>>>>>>>>>>>>>>>>>-*<#>>>>>>>>7 $7 >>>>>>>>>>>>>>>>>>>>>>>>%8+>>>>>>>>>>1> >>>>>>>>>>>>>>>>>>>>>>>>!="6>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>$9->>>>>>>>>>>>-> >>>>>>>>>>>>>>>>>>>>>>>>+.>>>>>>>>>>>>>=:>>>>>>>>>>>>>>>>>>>>>>>>8>>>>>>>>>>>>>>(+>>>>>>>>>>>>>>>>>>>>>>>>>6>>>>>>>>>>>>= ;>>>>>>>>>>>>>>>>>>>>>>>>>)=>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>:>>>>>>>>=:>>>>>>>>>>>>>>>>>>>>>>>>>>>6'<>>>>>-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>1'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>5 ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=#:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=- );>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>- ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;  ,<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>:( €€–Ÿ@@>>>>>!$>>>>>.  ;>>>>>>>>>>>>>>>>>>>>>; >>9=>>>>>>>>>>>>>>>>>>> >+ =>>>>>>1.>>>>>>  >$=>>>>=;>>>>  >=,5>>>>>1532>>>>  >>>>>>>>04 -)>>>  >>>>>>>>.5>>:.>>>  >>>>>>>>02>>>>;) >>>  >>>>>>>>4>>>>>>8 >>>  >>>>>>>>!$>>>>>>+>>>  >>>>>>>>92>>>>64>>>  >>>>>>>>>**+%>>>>  >>>>>>>>>>/  +>>>>>  >>>>>>>>>>>>1&&0=>>>>>> >>>>>>>>>>>>>>>>>>>>>>>,=>>>>>>>>>>>>>>>>>>>=*@@¦£@ .>>:,,,,,,&/)1>>>2&1>>>/#->>>>/>>>2"(!.>/>>>(;>=%>/>>>5 ;><3>/>>>>&  $>>->>>>>;2:>>>   ¶¤@&;8,230:': 6> <(5 6>8#)>  ¥@5$5,! %¥8¥H¥@ÿÿÿÿÿêêêÿéééÿèèèÿçççÿæææÿåååÿäääÿãããÿâââÿáááÿàààÿßßßÿÞÞÞÿÝÝÝÿÜÜÜÿÛÛÛÿÚÚÚÿÙÙÙÿØØØÿ×××ÿÖÖÖÿÕÕÕÿÔÔÔÿÓÓÓÿÒÒÒÿÑÑÑÿÐÐÐÿÏÏÏÿÎÎÎÿÍÍÍÿÌÌÌÿËËËÿÊÊÊÿÉÉÉÿÈÈÈÿÇÇÇÿÆÆÆÿÅÅÅÿÄÄÄÿÃÃÃÿÂÂÂÿÁÁÁÿÀÀÀÿ¿¿¿ÿ¾¾¾ÿ½½½ÿ¼¼¼ÿ»»»ÿºººÿ¹¹¹ÿ¸¸¸ÿ···ÿ¶¶¶ÿµµµÿ´´´ÿ³³³ÿ²²²ÿ±±±ÿ°°°ÿ¯¯¯ÿ®®®ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿOÓ\JX^z" y" Y" \" U*,¿¿¿a"Ä&ÿa¢lž¡­@%%.60 J'1F-!,C5$+* GB#2+ 9;A3(:D>'!".4@& <? )/EH 7=8" HHHHHHHHHI@%% @ÿÿÿÿÿþþþÿûûûÿôôôÿçççÿåååÿâââÿáááÿÞÞÞÿÛÛÛÿØØØÿÖÖÖÿÑÑÑÿÏÏÏÿËËËÿÊÊÊÿÉÉÉÿÄÄÄÿ¤¤¤ÿ———ÿ‘‘‘ÿ���ÿ���ÿ‹‹‹ÿ………ÿ���ÿ€€€ÿÿ~~~ÿ}}}ÿ|||ÿyyyÿxxxÿvvvÿtttÿsssÿrrrÿqqqÿpppÿoooÿnnnÿlllÿiiiÿfffÿdddÿZZZÿYYYÿXXXÿTTTÿQQQÿPPPÿHHHÿFFFÿCCCÿBBBÿ???ÿ;;;ÿ999ÿ888ÿ///ÿ---ÿ)))ÿ'''ÿ%%%ÿ$$$ÿ!!!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÓnS D;è‹„‚{i D-l.P#- -y .!#ÁIiC.!#Á RiS .«.†¶È×-W U5�-W rS Ðî dðCpC.dr-J -y r-Ä'r0ƒ‚„zi� D-l-W t-y 1ƒS #/ n–`GsFLzs #™1uVš1%&Gs&<&&)&1& -s(`&ܘ`1®zs`G`)&¥`<-s'ÐЗ`)ÿÿÿÿ¥`)Ò‚të`Gës �-st1ž™t`’t&GtG’t&<t<’t&)t)”‚›t`—t)ÿÿÿÿ¥’t&)¦t`Gs`<&`)&¥1 ¥`e�-s¥11Gs1<&1)&  W „gV T†¶ |`‚w¶*w.†¶*V .«.†¶È×`wV *V -÷(zw#*# ÂKQ1cs ;çFocusStartWindowm.«.†¶È×QmÐâíwQ*¶„z€VQ¿,UTMenuz€VQ¿,UMenum#ÖÖwQ¿¿íQQãX rQ*m#9Q-Ä'Q+Q0 o€PSUƒï ±d%­–d,ÿd .†¶pKEYNAME Sd£{d ` .†¶pKEYBINDING d £zë` MUTATE BDBMAPVOTE VOTEMENU'¥d( d€€@€ÇJU&ZWo&›P%&š¥P,;P%m‚‚‚-F w#*�#-Í �-A-A'/ ZTG#ö j €€@_YH!Î \a}1ecaw¶*a.†¶a‚‚wa*waÈ*waÈ×*U ÇDL* }  €@]€@^D¥ €c`€@€b€@€d€@€f€@€h€@€@€@ÓmDÆ[Išœ¦æ%F™£Lj l VL% PL%apB( Àj KfÀL%apB( oYÊ WS'„„�-K  �-j rR* RLRaR*-j( ph Xº VbRa ^`wR*REI{h RAh RB-j' qd 9« UPçd x�-K  /�-jXwNwR*R Md  sE"l ÅH²ç+----------------------------------------------------------------+E Î&ç| Warning!çpp| Received unknown map vote:"_"çpp| K voted for an unknown map!e †,ç| Information: çpp| Cache mode doesn't work with "_" voting mode.ç| Cache mode was auto disabled. Re-Enable it when you change the voting mode.e !,ç| Information: çpp| Repeat limit on Cache mode exceeds the limit. (>_)çpp| Auto-Changed RepeatLimit to "_"e Æ,9| Warning!_9¨| Map:_9| Map change failed: bad or missing files.9¨| Redirecting server to map:Ke W,ç| Information:稨| Server was empty for_minutes.ç¨| Actual Map is:Kç¨| Switching to :b e ½,ç| GetRandomMap():稨¨| List:_MapNum:Kç¨| Map name:b e (,ç| Warning!:ç| No configuration file (.ini) detected.ç| Creating new one...e ÿÿçpp| V.MVlog() accessed case out of boundseç+----------------------------------------------------------------+ €@v\ Qg 5H\ ’~\ -& {H|a&�‹š:Û,/a0 Óv Љ|êVv ¿,SCv FRppppppppSH$$$SF$$$Sz$$$u$$$s10 €@yJ] ™G*"zêJ&-€J“}J&J U€@|} hT ôF5|€} ,CTF-BTCTF-BTë€} ~} - €A]o)†–:Û,W.†¶wW*ÅšU ,UWÊ]VŸ{U^pp^U,¥VUWÊ]VSÂ{^^€^“}^&¤ŠšU ,Z ë],V%‡–VUW¨KEYNAMESV}{U{ W¨KEYBINDINGU}™~ë{ Z %^pp^{ |¥Vé¤^W ]{^ÿ—}^�|T | %]€^�^^�¥| °|T | &]^  ~R ^L ‰F±R S R S  úLS|©%#‚rS* rT*SL k< D§q€~=H’~=&˜-Qç¨p¨p¨[Info] Executing DEFAULT Settings:. Property:q. Value:Hëç¨p¨p¨[Info] Executing Settings:. Property:q. Value:HO œ¦ öqœ¦ÿqHP œ¦ öq¨p¨p¨Changed Setting:q. Previous value:O . new value:P  EDn ó@€ç¨[Info] Starting Mutator:D‘ÕD ”¦r*ç¨[Critical] Starting Actor/Mutator FAILED. Could not DynamicLoadObject:D /a0Eêç¨[Warning] Actor already spawned:D0 10Ea?rE*ç¨[Critical] Spawning Actor/Mutator FAILED:D ~Ea/!Jœ¦öU.ÓE }~ S#d_ç¨AnnouncerMessage:~ T .ðÕ~ ð]wT *.†¶ VT ' ÂCXR­oXUR ÏJ_O ÀÏA !K 6®_=,ÿ6¯_=,ÿ6­_=,ÿ6®B=,ÿ6¯B$ 6­B$ 6®x=,ÿ6¯x=,ÿ6­x=,ÿW«£ÍÌL<Q¬£¸¥@w¬Qff¦?^ A\úD¯ª?,È,dw?’\,Q A®ÐA^%. Q?\%´¸®WQ&. Q?\&´¸®®«W?,Qw,. Q?\,´¸®WQ,. Q?\,´ A®?’\,.^ ¯£®?,¨A^.– – ^ú ý^¸Vote^-¹(¸«?,®WQ¯®%àw?,- w A›°¯?\®?,<?,-@'±�-@¸?,x.; ; x _x·$¸?, y.; ; y _y·$¸?, X.; ; X _X·$ w®%àw�-@?úD®¯?\?,,<?úD¯?D®%ª%à,8.3 3 8´8-r'a�-@¸�AX.– – Xú ý?„-H²¡-óX¸KickX-¹'aX¸X-¹( A®¯w?,^ «QÍÌÌ? AszDD _RankMap NameVotes¸?,¯ª®?,J.E E J-Ð(J´¸® ?,¹?, «w ? As~DD _PlayerVotes¸?,¯ª®?,c.e e c-Ð(c´w?úD¯ª?,dD®^à^ªP ®® ?,P w ÜB A].Ž Ž ]%] _¸?,x¹ ?, i.Ž Ž i Mode:i%i _¹?,x¸?ûD«W?,,, ŒBJ.Š Š JScreenShotJ·$J%J _J-¢A-u ¹®?,KQ¸?ûD«W @,, ®«@Q?,–H¯£®®® ?,?,³ °H?,-¹ ¯?,-HB.� � B(Bd'Be,–| °H?,-Bͬ¯ ¯?,-H?,| ²£?¤J SSJÑðAðA¸® ?, ¯£®?,z.– – z¸Sendz-¹(¹) ° ?,-¹¯?,-  4Bn.– – x ² ?,-n¸Rand� n¸Random!n-¹(P ¸®«?,«Wš™™> ¯£®?,m.– – mú Òm¸Closem-¹(%Ë® A^ Q Ao.Ž Ž o&o·$o B&Ëp.Ž Ž p&p·$p B8Ë ww.Ž Ž w&w·$w x,Ë Qq.Ž Ž q&q·$q B,Ër.Ž Ž r&r·$r B%Ë®?’\,^ Q`.Ž Ž `·$` _&Ë\.Ž Ž \·$\ _,Ë[.Ž Ž [·$[ _,ËV.Ž Ž V·$V _Ë-@]à]Ë @ià AB.– –¯£ A AB-É'B¸>B-¹(¸?,C.– –¯£ A AC-É'C¸<C-¹(O.Ž ޝ£®?,´�AHC AO-É'6®D=,ÿ6¯D=,ÿ6­D=,ÿOO%O DO·$N.k k¯£®?¤@–C AN-É'NN DN·$¸?,Èd.� �¯£HC Ad-É'd(dd'de,–ÏBBüdBÔddüBdÔB @ISŽ#qForceClear!qqb KdW ñ>¨ud¦—}u%8–~u;%~~u,Y–~%|uu€|€u~uu’~&—-]n|£k|(  z@G@qfTqfqqb H@PBEÖ (:T§-R§|êVœ¦¿, MultiCTFGameMultiCTF detected. Fixing Mapprefix to CTFMœ¦ÃCTFMœ¦ÃCTFMBœ¦Ãpppp¨NextVirtualPrefix/NextRealPrefix/ActualPrefix:U/h/BŠ‚{U zhBBUMapVote: Prefix OK. Mapchange seems to have been successful¡{] W] z%R–z,H-6szz 6fzH|Bz {6m zW6m z'H{6w zW6w z¥z¨ îEsB0oMœ¦÷ålE\ š{AAMAsppppp/EE _Ej .AÈsppp/EE _Ej àppE\ s.tmpÛppE\ s.logë J//*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS WRI * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ 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 () { 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.bringToFront(); TheWindow.bLeaveOnscreen=True; TheWindow.ShowWindow(); TheWindow.bringToFront(); TheWindow.focusWindow(); return True; } simulated function CloseWindow () { local WindowConsole C; if(Owner != none && PlayerPawn(Owner) != none) { C=WindowConsole(PlayerPawn(Owner).Player.Console); if(C != none) C.bQuickKeyEnable=False; } if ( TheWindow != None ) { TheWindow.Close(); } } function DestroyWRI () { Destroy(); } BkcúEG¦—g%4-k¦g1–g&gKQ¥gQ—gKg&ngNpSelected Map:GOppSg/SK·Nô™}d ,OppSg/SKO YHJº Õ7ÉH H¨Crashed map:Hb%t‚–b,@{bajzbaH ¥b3baHO¨¨¨Added failed map:Hto slotSbbø Om4d-X „„-X -w šF%@-X Jû§,&,KJFKû’§(&%—¥t ,d¨| Error: GetRandomMap() failed for ListSJm,ç| Error: GetRandomMap() failed -> Forced exit4Jû§,&,t %K‚{KšwKJ\-c ",SJSKKK €^mi‡ Ò2bzm%m m&`˜(V| m¥& €d]_w _1¶®.©œ¦-Ýf.©œ¦-Õ.©œ¦Òç®�.©œ¦-Ð.©œ¦Ðçÿÿÿÿ Li M4{|%s–|}i O›~\/*?:<>"|i |&ÿÿÿÿ{p{_i{p{i |&¥|{ ~€J€@IO/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS ServerInfoWindow * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ 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 () { local string strHTML; 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)); SetAboutInfo(); 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 SetAboutInfo() { TextArea.Clear(); ADDHTMLText("Map Vote 14 XL",3,"FFFF00",1,true,true); ADDHTMLText("Core development: BDB (Bruce Bickar)",1,,,true,true); ADDHTMLText("Enhancements by: Cratos (cratos@gmx.at)",1,,,true,true); ADDHTMLText("More enhancements by: =(V)=Mar",1,,,true,true); ADDHTMLText("

Support: www.vulpinemission.com

",1,,,true,true); } /* */ function ADDHTMLText( string Message ,optional int ForcedLinebreaks ,optional string Color ,optional int Header ,optional bool Center ,optional bool Bold ) { local int i; local string HTMLText; HTMLText=""; if(Center) HTMLText=HTMLText$"
"; for(i=0;i"; if(Bold) HTMLText=HTMLText$""; if(Header != 0) HTMLText=HTMLText$""; if(Color != "") HTMLText=HTMLText$""; HTMLText=HTMLText$Message; if(Color != "") HTMLText=HTMLText$""; if(Header != 0) HTMLText=HTMLText$""; if(Bold) HTMLText=HTMLText$""; if(Center) HTMLText=HTMLText$"
"; HTMLText=HTMLText$""; if(TextArea != none) TextArea.AddText(HTMLText); } 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; } K/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS ServerInfoLink * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ 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(); } f``Z .øôœ¦a/!XÙ›_ÿÿÿÿçppBDBMapVote: Team S_ won the round.yš_&~%€~&çppBDBMapVote: Setting Team S~ as the defending team for the next map.à~%.©œ¦X.©œ¦-Ý(.©œ¦Ù%.©œ¦Ó.©œ¦Ô.©œ¦Ö&.©œ¦-Ð(.©œ¦Ø~.©œ¦b% XFEe"S¦h%|–h,r›k hrwh¥*h¥-í(h¥*¥h¤‚™k % –k ,F nER Œ-*(-c çp[MV14] [DEBUG] E |€@E /*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS PlayerVoteListItem * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ 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; } ej$y¾TNK%L–K,BwK¥*K¥¥K K€¤F>/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS PlayerVoteListBox * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ class PlayerVoteListBox extends UWindowListBox; var Color TeamColor[5]; //$Added Team NONE Color. 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; for(i=0;i<7;i++) { if ( ItemPointer.Next == None ) return; ItemPointer=UWindowListBoxItem(ItemPointer.Next); } SetSelectedItem(ItemPointer); MakeSelectedVisible(); } } if(Key == P.EInputKey.IK_PageUp) { if ( SelectedItem != None ) { ItemPointer=SelectedItem; for(i=0;i<7;i++) { if ( ItemPointer.Prev == None || ItemPointer.Prev == SelectedItem.Sentinel ) return; ItemPointer=UWindowListBoxItem(ItemPointer.Prev); } 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); for(PlayerItem=PlayerVoteListItem(Items);PlayerItem != None;PlayerItem=PlayerVoteListItem(PlayerItem.Next)) { if ( PlayerID == Right(Left(PlayerItem.PlayerName,4),3) ) { SetSelectedItem(PlayerItem); MakeSelectedVisible(); break; } } } function DoubleClickItem (UWindowListBoxItem i) { if ( bDisabled ) return; UWindowDialogClientWindow(ParentWindow).Notify(self,11); } igbƒœUÍ�(�‚„{€.g¥I,[X]²¡-ó!{.g¥IMAP.g¥I²œÒEgT ø_L?ÞAì tS!/ ó)Ê87zaS¦wz*}%—‚–}, {}zÖB}zÖh ~ëB.UNR£›h ÿÿÿÿB€Bh BpQB}Rùw\ *ù˜\ :B]Bp[X]BhtBT{h£(h¨ppLoading Map[S(]h�¨Map ignored cause no filter matches: B¥}*zaÈçMapListCycle spawn failed lp(‘‘W'±²œÒ®u ?, €oQ –(Xz(-^²¨Q P  ²'¨¨MUTATE BDBMAPVOTEQ P u ²œÒ ùmAEó ürDH< xy æ 1!ñ86¨p¨¨¨Going to load gametype:N using maps with Prefix:y. PreFixChange:L «|N Botpack.CTFGame-W 'Default CTF Detectedr œ by%cr &�|r R ý™(“&¥n ûWcƒ‚‚-R-W ,„�|€W,CTF-|€W,CTF-BT¨CTF prevented from loading wrong map:Wûo ~ëW.UNR¹›o ÿÿÿÿW€Wo WpL W}yû‚š~ëcTUTORIALÿÿÿÿš~ëcINTROÿÿÿÿHwM *H˜M :W]Wp[X]WetW©{e¥((e¨ppLoading Map[S(]:eûû�ZW¨Map ignored because no filter matches: W¥m cœbyc&R cЙ—n %稨¨¨¨[MV14] [Information] IgnoredSn Maps with Prefixycause mapcount > S“&ï—m %稨[MV14] [Information] IgnoredSm maps because no filter matches. ýqj%¥{YÕýjH H $j dЙ}d ,~d gA—K%OppSg/SK¼—g%NpSelected Map:GÍNÿmg%NO ÿÿÓ E$ |%W–|,Mr|jb|| ¥|j RJcx.J¥iE%,Ü—c%“c&"A.J¥i1‚(!{.J¥iMAP.J¥i²œÒB Þc8"@.c¥CÛ‚(!{. 8¥LKICK. 8¥LB ?8<‚(!{. 8¥LKICK. 8¥LB ÿÿÓ O$|%²–|,¨r|j²œÒE|| ¥|Qj ÊBcL ÜCc'L )z&{B SAYB 'B L Å^‚( w$*„{€.$I,[X]²¡-óÂ{.$IMAP.$IL èm½½L ‡Jcx.J¥iE%,f—c%“c&"A.J¥i²œÒL èXå‚(!{. 8¥LKICK. 8¥LL n(VOTERANDOMMAPL Ic8"@.c¥CL ÿÿÓ Ð$j ldcÐ ÍBÊ{B SAYB 'B B pzÐ ÿÿ ÿÿ O/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS PlainVScrollBar * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ 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'); } } ]F I²Dçppppbrowsing F C :S} vF C } ] {}cË º¯V}&­˜}(D„z} ™I ]­£|€},[X]¨Disabled Map:}VpppV-S}-¥I ¥} O/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MV_SaveLog * $VERSION 0.07 "B7" * $CREDITS MSuLL from 'Lamer Reporter Version 1.10' * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ //============================================================================= // Lamer Reporter // Version 1.10 // January 2006 // By MSuLL //============================================================================= class MV_SaveLog extends StatLogFile; var BDBMapVote zzLR; var string xstr; function StartLog() { local string FileName; local string FilePath; local string str, str2; local int i; str2 = GetCleanString(Level.Game.GameReplicationInfo.ServerName); FilePath = zzLR.LogTo; if(xstr != "") { xstr = GetCleanString(xstr); FileName = "/"$zzLR.LogFileHeading$"_"$zzLR.OpenedTime$"."$xstr; } else FileName = "/"$zzLR.LogFileHeading$"_"$zzLR.OpenedTime; StatLogFile = zzLR.LogTo$FileName$".tmp"; StatLogFinal = zzLR.LogTo$FileName$".log"; OpenLog(); } function string GetCleanString(string str) { local int i; local string str2; for (i = 0; i\"|", Mid(str, i, 1)) != -1) str2 = str2 $ "_"; else str2 = str2 $ Mid(str, i, 1); return str2; } function StopLog() { FlushLog(); CloseLog(); } function FlushLog() { FileFlush(); } function Timer() {} // Don't log pings every 30 seconds //================================================================================================== u_x\ZuEL%C–L,9L V_’L&¥L Bxe¦ ú x%–x,‚-6sx{6@x0›Õ6@x ”à‚-R%|ê6@x, MultiCTFGameMultiCTF detected. Fixing Mapprefix to CTFM0ÃCTFMRr0*ç¨ppMapVote: Error. CustomGameConfig[Sx]: Failed to load GameClass:6@x†z6fxf0âf6fxà-t!0ë0ÃfC 0ÃfC6@x¥x L€c 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); } DM ! ¬-w '[MV14] Maplist is reloading...'84a84b-v 'kCDo-vçpDetected GameType = Vœ¦¿-I(-E(-z(-@(-A(-C(-k( |Vœ¦¿C-I'ëVœ¦¿ MBOTPACK.LASTMANSTANDING-@' qBOTPACK.TEAMGAMEPLUS-A' �BOTPACK.CTFGAME-E' ²BOTPACK.DOMINATION-C' ØBOTPACK.DEATHMATCHPLUS-z' ÿÿ-k'ZVœ¦¿%-kH›ÕZ ”‡-I[-t! ©ëASASC ASASCBotpack.Assaultaí-E¿-t! þëCTFCTFCå CTFCTFCBotpack.CTFGameaV-z#-t! ôëDMDMCN DMDMCBotpack.DeathMatchPlusa¿-CŽ-t! ÃëDOMDOMC· DOMDOMCBotpack.Dominationa(-Aö-t! ÇëDMTDMC  DMTDMCBotpack.TeamGamePlusa”-@_-t! ÌëDMLMSCŒ DMLMSCBotpack.LastManStandinga=‚-k wH*85fHà -t!HëHÃfC5 HÃfCZaN�-veCa¨zWElimination¨„–(K‚š(% —]%]%q!M¾-M\q!Ó-[cOçp[MV14] Maps Reloaded. Total Maps = S(r-w [MV14] MapVote configuration has been changed, Re-Open Voting window for updates.'-w (�-tg-v ( g¾x:nÿÿÿÿÿÿÿÿÿÿŒE/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MVKeyBinderListBox * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ 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); } Hnoÿ  �(%n%Ž–n�‘�,n’n’n�,’n�,¥n @rd±¾|npTDM;DM;LMS;DM;^ ?|€r,[X]rr,_r{nP €n~n;nn’~n;&~ €n~n;nn’~n;&‚{€r,CTF-|€r’}P &pP -_p~ r}P _J_ B/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MVKeyBinderFrameWindow * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ 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; for(Child=Root.LastChildWindow;Child != None;Child=Child.PrevSiblingWindow) { if ( (Left(string(Child.Class),6) == "UTMenu") || (Left(string(Child.Class),5) == "UMenu") ) { WindowConsole(GetPlayerOwner().Player.Console).CloseUWindow(); } else { if ( Child.Class != self.Class ) { break; } } } if ( Child == None ) { WindowConsole(GetPlayerOwner().Player.Console).CloseUWindow(); } else { Child.bLeaveOnscreen=True; Child.FocusWindow(); Child.ShowWindow(); } } _€@KO÷ ž SLSSb lB/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MVKeyBinderClientWindow * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ class MVKeyBinderClientWindow extends UMenuDialogClientWindow; var string RealKeyName[255]; var MVKeyBinderListBox lstKeyList; var UWindowSmallButton SaveButton; var float CloseRequestTime; var UMenuLabelControl lblMessage; function Created () { local Color C; local Color TextColor; TextColor.R=255; TextColor.G=255; TextColor.B=255; Super.Created(); C.R=0; C.G=0; C.B=128; lstKeyList=MVKeyBinderListBox(CreateControl(Class'MVKeyBinderListBox',10.00,23.00,460.00,92.00)); lstKeyList.bAcceptsFocus=False; lstKeyList.Items.Clear(); SaveButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',215.00,120.00,50.00,20.00)); SaveButton.Text="Set/Save"; SaveButton.DownSound=Sound'WeaponPickup'; SaveButton.bDisabled=False; SaveButton.bAcceptsFocus=False; lblMessage=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',10.00,150.00,460.00,40.00)); lblMessage.SetText(""); lblMessage.SetFont(F_LargeBold); lblMessage.SetTextColor(TextColor); lblMessage.bAcceptsFocus=False; SetAcceptsFocus(); LoadExistingKeys(); } function KeyDown (int Key, float X, float Y) { local int i; local KeyBinderListItem KeyItem; KeyItem=KeyBinderListItem(lstKeyList.Items); while( KeyItem != None ) { if ( RealKeyName[Key] == KeyItem.KeyName ) { lstKeyList.SetSelectedItem(KeyItem); lstKeyList.MakeSelectedVisible(); } KeyItem=KeyBinderListItem(KeyItem.Next); } } function LoadExistingKeys () { local int i; local string KeyName; local string Alias; local KeyBinderListItem A; local bool bFound; for(i=0;i<255;i++) { A=KeyBinderListItem(lstKeyList.Items.Append(Class'KeyBinderListItem')); KeyName=GetPlayerOwner().ConsoleCommand("KEYNAME " $ string(i)); A.KeyName=KeyName; RealKeyName[i]=KeyName; if ( KeyName != "" ) { Alias=GetPlayerOwner().ConsoleCommand("KEYBINDING " $ KeyName); A.CommandString=Alias; if (hasStr(Alias,"MUTATE BDBMAPVOTE VOTEMENU")) { lstKeyList.SetSelectedItem(A); lstKeyList.MakeSelectedVisible(); CloseRequestTime=GetPlayerOwner().Level.TimeSeconds; lblMessage.SetText("Your MapVote Hot Key is " $ KeyName); bFound=True; } } } if (!bFound) { lblMessage.SetText("Press/Select a Desired MapVote Hot Key"); } } function bool hasStr(coerce string S, coerce string t, optional bool bCaseSensitive) { if (!bCaseSensitive) { S = Caps(S); t = Caps(t); } return (InStr(S, t) >= 0); } function Notify (UWindowDialogControl C, byte E) { local string CommandString; Super.Notify(C,E); switch (E) { case 2: switch (C) { case SaveButton: SaveKeyBind(); break; default: } break; default: } } function SaveKeyBind () { local string CommandString; SetKey(KeyBinderListItem(lstKeyList.SelectedItem).KeyName,"MUTATE BDBMAPVOTE VOTEMENU"); ParentWindow.Close(); } function SetKey (string KeyName, string CommandString) { GetPlayerOwner().ConsoleCommand("SET Input " $ KeyName $ " " $ CommandString); KeyBinderListItem(lstKeyList.SelectedItem).CommandString=CommandString; } function Paint (Canvas C, float MouseX, float MouseY) { C.DrawColor.R=0; C.DrawColor.G=0; C.DrawColor.B=0; DrawStretchedTexture(C,0.00,0.00,WinWidth,WinHeight,Texture'WhiteTexture'); Super.Paint(C,MouseX,MouseY); C.DrawColor.R=255; C.DrawColor.G=255; C.DrawColor.B=255; DrawStretchedTexture(C,10.00,10.00,460.00,13.00,Texture'WhiteTexture'); C.DrawColor.R=0; C.DrawColor.G=0; C.DrawColor.B=0; C.Font=Root.Fonts[0]; ClipText(C,15.00,11.00,"Keyboard Key"); ClipText(C,115.00,11.00,"Console Commands"); DrawStretchedTexture(C,105.00,10.00,1.00,13.00,Texture'WhiteTexture'); } €@NfLï † Œ�-fppppppppppSœÉ.SœÈ.SœÑ SœÏ:SœÅ:SœÄ ppppppppppSœÉ.SœÈ.SœÑ_SœÏ_SœÅ_SœÄ ïEuÉhåïuoc§u£ª á§u¯£?,›pApA I«‚‚�- {u  rc*c.ðÕu ð-'[wc*6®uš=,ÿ6¯uš=,ÿ6­uš=,ÿB D%àw DwA D8˧u?A ?B ?w ?w czwx*x |™wy*y ~ãwX*Ò{YX¨YPlayersãX wbPDb RKkÓ æuQK%S–K,I‚-6sK{6@K0›Õ6@K ”Iw0*x0ÃÑ‚-R%|ê6@K, MultiCTFGamexCTFMz6fK6fKxbI{6fKxQppppQ6fK;x;¥K¨PrefixDictionary:Q %M`‡D` PbH$ÍD =b U`g¼ Ò&Storing Maplist to file...Ha PHp (%HN`&Ç–`¦˜`(`HN `'½`HN¥`^Ho QHbHa¨Storing Maplist to file finished:S( èL\ôµ„ ½\[Y s PXTfš wÿ|Loading Maplist from file...s D%d&b&#˜b Pp Yb PN°˜s : Y]Yp[X]Y�‚-F ZY‚-[|€Y,[X]VpppV-Sd-¥dY¥bH(“d&Q Po ¨Loading Maplist finished:S(s a f€$ÁSXýK…\NóA-u J-¢A-u J-¢AbÁ-X cVD‡ éü„[$ÕJ ”fa[|rf*89[$Õp>.MapVoteHistory1 ”fa[f Zi//================================================================================ // MV14ClientConfig. //================================================================================ class MV14ClientConfig extends Object PerObjectConfig; var config float MsgTimeOut; var config bool bUseMsgTimeout; var config bool bLoadScreenShot; var globalconfig int cboWindowsSizeIndex; var globalconfig int C_WinWidth; var globalconfig int C_WinHeight; //ClientConf = new (Class'MV14ClientConfig','MV14Client') Class'MV14ClientConfig'; j/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MessageHelper * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ class MessageHelper extends ReplicationInfo; var string TheSoundString; replication { reliable if ( Role == 4 ) ExecuteMessage; } event Trigger (Actor Other, Pawn EventInstigator) { if ( (Other == None) && (EventInstigator == None) ) { ExecuteMessage(TheSoundString); } } simulated function ExecuteMessage (string SoundString) { local Sound dynSound; Log("AnnouncerMessage:" @ SoundString); dynSound=Sound(DynamicLoadObject(SoundString,Class'Sound')); if ( dynSound != None ) { PlayerPawn(Owner).ClientPlaySound(dynSound,,True); } } ê\@e< š:Û,@ÿÿÿÿÿÿÿÿÿÿ]ÕògeêYQ²Z†ºµ§+� pSQ$@ðQKk)§ŸšK”ç404 ErrorDw=


Information or Server Unavailable
¥b N@_å~€@ñ^Au4$HA` d6@ î}826 6`Uh6¨NextVirtualPrefix:Ubsz6?Restart’‚wH*-k83b’|€ë6}HÃHÃhHÃK-RK|êVH, MultiCTFGameMultiCTF detected. Fixing Mapprefix to CTFMhCTFM¨NextRealPrefix:hbW6pp6.unr?game=ZN%–N,ú‚-6sN{6@N83.10›Õ6@N ”vr0*ç¨ppMapVote: Error. CustomGameConfig[SN]: Failed to load GameClass:6@Nú6fN6fN-R|ê6@N, MultiCTFGameMultiCTF detected. Fixing Mapprefix to CTFM0ÃCTFM8{6fN83.2a¨U6fN5|U6fN83.2bh0ÃÓ-RÓ|ê6@N, MultiCTFGamehCTFM¨NextRealPrefix:hbW6ppph6}U.unr?game=6@Nú83.3a¨U0Ãú|U0Ã83.3bhh6¨NextRealPrefix:hbW6pp6.unr?game=6@N¥N™W6€ë6, DDM~BotPack.DeathMatchPlus\ YAS~C\ ÿÿ€ë6, ¨LMS~BotPack.LastManStanding6pDM6,. äTDM~BotPack.TeamGamePlus6pDM6,. DOM~BotPack.Domination. +CTF~BotPack.CTFGame. ÿÿhh6¨NextRealPrefix:hbpp6.unr?game=~ ff ~ øì981/a0 f 6f Tf a10 w€il7ÜÓéÐ|le'êe& —*bz€e&*we&“}e,b™~ëlëw%'we%“}e&”|€l}ww'½ º-·|€l}ee'½ ÿÿÌze*'( fÂ/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MapVoteWRI * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ class MapVoteWRI extends WRI; //var BDBMapVote MapVoteMutator; var string MapList[2048]; var int MapListNum[2048]; var string MapList1[256]; var string MapList2[256]; var string MapList3[256]; var string MapList4[256]; var string MapList5[256]; var string MapList6[256]; var string MapList7[256]; var string MapList8[256]; //Client Only 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; var bool bClientCache; var string LastUpdate; var bool bUpdatingList; var string LastServer; //Gets Server IP. var string DisableMapIndexNum; var bool bRequestSend; var MV14ClientConfig ClientConf; const ListLimit = 256; replication { reliable if( Role==ROLE_Authority ) SendReportText,UpdateKickVoteResults,UpdateMapVoteResults ,UpdatePlayerVoted,RemovePlayerName,AddNewPlayer ,MapCount,DisableMapIndexNum ,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,bClientCache ,LastUpdate,LastServer; reliable if(ROLE == ROLE_Authority && (!bClientCache || bUpdatingList)) MapList1,MapList2,MapList3,MapList4,MapList5,MapList6,MapList7,MapList8; unreliable if(Role==ROLE_Authority ) ClientSaveMaplistConfig,ClientForceReload; } simulated function PostBeginPlay () { Super.PostBeginPlay(); ClientConf = new (Class'MV14ClientConfig','MV14Client') Class'MV14ClientConfig'; } simulated function ClientForceReload() { local MapListCache Cache; Cache = Spawn(Class'MapListCache'); if(Cache == none) { log("[MV14] [Warning] Cache is none in ClientForceReload()!!!"); return; } Cache.LastUpdate = "ForceUpdate!"; Cache.LastServer = "ForceUpdate!"; Cache.SaveConfig(); Cache.Destroy(); } simulated function ClientSaveMaplistConfig() { local int i,k; local MapListCache Cache; local string temp; Cache = Spawn(Class'MapListCache'); if(Cache == none) { log("[MV14] [Warning] Cache is none in ClientSaveMaplistConfig()!!!"); return; } Debuglog("ClientSaveMaplistConfig() -> Start"); bClientCache = true; bUpdatingList = true; for(K=0;K<(ArrayCount(Maplist)/ListLimit);K++) { for(i=0;i < ListLimit; i++) { if(i + (ListLimit * K) <= MapCount) { temp = FN_Maplist(K,i,true); if ( Left(temp,3) ~= "[X]" ) temp = Mid(temp,3); Cache.MapList[i + (ListLimit * K)] = temp; Cache.default.MapList[i + (ListLimit * K)] = temp; } else { //Clear the rest. Cache.MapList[i + (ListLimit * K)] = ""; Cache.default.MapList[i + (ListLimit * K)] = ""; } } } //bUpdatingList = false; Cache.MapCount=MapCount; Cache.PrefixDictionary=PrefixDictionary; //$FIX B5 if(blastCheck && MapCount == LastMapsCount && LastMapsCount != 0) { Cache.LastUpdate = LastUpdate; Cache.LastServer = LastServer; } Cache.SaveConfig(); Cache.Destroy(); DebugLog("[MV14] Storing Maplist to file finished:" @ string(MapCount)); return; } 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 ( ClientConf.bUseMsgTimeout ) { Class'SayMessagePlus'.Default.Lifetime = ClientConf.MsgTimeOut; Class'CriticalStringPlus'.Default.Lifetime = ClientConf.MsgTimeOut; Class'RedSayMessagePlus'.Default.Lifetime = ClientConf.MsgTimeOut; Class'TeamSayMessagePlus'.Default.Lifetime = ClientConf.MsgTimeOut; Class'StringMessagePlus'.Default.Lifetime = ClientConf.MsgTimeOut; Class'DeathMessagePlus'.Default.Lifetime = ClientConf.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 string FN_Maplist(int ListNum, int i,optional bool bForceReload) { local string Mapname; local int j,MapNumber; if(!bForceReload) { if(bClientCache) { MapNumber=i + (ListLimit*ListNum); MapName=class'MaplistCache'.default.Maplist[MapNumber]; if(hasstr(DisableMapIndexNum,"-"$string(MapNumber)$"-")) MapName="[X]"$MapName; return MapName; } } switch(ListNum) { case 0:return (Maplist1[i]); case 1:return (Maplist2[i]); case 2:return (Maplist3[i]); case 3:return (Maplist4[i]); case 4:return (Maplist5[i]); case 5:return (Maplist6[i]); case 6:return (Maplist7[i]); case 7:return (Maplist8[i]); } return ""; } simulated function bool hasStr(coerce string S, coerce string t, optional bool bCaseSensitive) { if (!bCaseSensitive) { S = Caps(S); t = Caps(t); } return (InStr(S, t) >= 0); } simulated 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; } simulated function bool ReplicationCheck() { local int Timeout; DebugLog("ReplicationCheck() -> Entered!"); while(LastUpdate == "NULL" || LastServer == "NULL" || MapCount == -1 || Right(DisableMapIndexNum,4) != "#END") { //Retry replication GetServerCacheConfig(); //Timeout if(Timeout++>5) { Log("ReplicationCheck() -> Timeout: > 5"); return false; } } return true; } simulated function GetServerCacheConfig() { if(Owner != none && PlayerPawn(Owner) != none) PlayerPawn(Owner).ConsoleCommand("MUTATE BDBMAPVOTE RESENDVARIABLES"); DebugLog("GetServerCacheConfig() -> Finished!"); } simulated function int LoadMaps() { local int i,k; local int list; local string temp; local int repMapListCountX[5]; local int repMapsCount; DebugLog("LoadMaps()"); if(bClientCache) { /*$FIX B3*/ if(!ReplicationCheck()) log("LoadMaps() -> Replication unsuccessful",'MV14'); if( NeedtoUpdate() ) //$FIX B2 { RequestMaps(); ClientSaveMaplistConfig(); } else bUpdatingList = false; } for(K=0;K<(ArrayCount(Maplist)/ListLimit);K++) { for(i=0; i LastMapListCountX[List] ) { MapVoteTabWindow(TheWindow).ClearList(List); for(i=0;i Request already Send!"); return; } if(Owner != none && PlayerPawn(Owner) != none) PlayerPawn(Owner).ConsoleCommand("MUTATE BDBMAPVOTE REQUESTMAPS"); bRequestSend = true; DebugLog("RequestMaps() -> Finished!"); } simulated function Timer () { local int i,k,j; local int MyCount; local int MyPlayerCount; local bool bHasVoted; local int repMapsCount; local int repAdminChechsum; local int TitleChecksum; local int repPlayerCount; local AdminWindow Window; local int List; local MapvoteTabWindow Tabs; if ( !bOpenWindowDispatched ) { OpenWindow(); return; } if ( !bSetupWindowDelayDone ) { bSetupWindowDelayDone=True; SetupWindow(); } DebugLog("timer()"); bUpdated=false; repMapsCount = LoadMaps(); if ( (repMapsCount > LastMapsCount) || (repMapsCount != MapCount) ) { bUpdated=True; LastMapsCount=repMapsCount; } if(MapVoteTabWindow(TheWindow) == None) { Log("[MV14] [Critical] MapVoteTabWindow is none."); return; } Tabs = MapVoteTabWindow(TheWindow); if ( Tabs.AdminWindow != None && PlayerPawn(Owner).PlayerReplicationInfo.bAdmin ) { Window = AdminWindow(Tabs.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)) + Len(string(bClientCache)) + 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)); for(i=0;i<16;i++) repAdminChechsum += Len(CustomGames[i]); 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.cbClientCache.bChecked=bClientCache; Window.txtMapInfoURL.SetValue(MapInfoURL); Window.cbEntryWindows.bChecked=bEntryWindows; Window.cbSortWithPreFix.bChecked=bSortWithPreFix; Window.cbDebugMode.bChecked=bDebugMode; Window.lblActGame.SetText("Class:" @ ActGameClass); Window.lblActPrefix.SetText("Map Prefix:" @ ActGamePrefix); Window.cbReloadMapsOnRequestOnly.bChecked=bReloadMapsOnRequestOnly; if ( Len(CustomGamesState) > 10 ) { for(i=0;i<16;i++) { Window.cbCustGame[i].bChecked = bool(Mid(CustomGamesState,i,1)); 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; } } } } if ( bKickVote || PlayerPawn(Owner).PlayerReplicationInfo.bAdmin ) Tabs.EnableKickWindow(); for(i=0;(i < 32) && (PlayerName[i] != "");i++) repPlayerCount = i + 1; if ( repPlayerCount != gPlayerCount ) { for(i=gPlayerCount;i < repPlayerCount;i++) { if ( Right(PlayerName[i],5) == "&?&!&" ) { PlayerName[i]=Mid(PlayerName[i],0,Len(PlayerName[i]) - 5); bHasVoted=True; } else bHasVoted=False; Tabs.AddPlayerName(PlayerName[i],bHasVoted); } gPlayerCount=repPlayerCount; bUpdated=True; } for(i=0; i < ArrayCount(MapVoteResults); i++) { if(MapVoteResults[i] != "") UpdateMapVoteResults(MapVoteResults[i],i); if(KickVoteResults[i] != "") UpdateKickVoteResults(KickVoteResults[i],i); } Tabs.MapWindow.lblMapCount.SetText(string(repMapsCount) $ "/" $ string(MapCount) $ " Maps loaded"); Tabs.MapWindow.lblMode.SetText("Mode: " $ Mode); //Update Mode Position so it can be next to lblMapCount; Could just concatenate to lblmapcount. Tabs.MapWindow.lblMode.WinLeft = Tabs.MapWindow.lblMapCount.WinLeft + 10 + Len(Tabs.MapWindow.lblMapCount.Text) * 5; Tabs.MapWindow.lblTitle1.SetText(List1Title); Tabs.MapWindow.lblTitle2.SetText(List2Title); Tabs.MapWindow.lblTitle3.SetText(List3Title); Tabs.MapWindow.lblTitle4.SetText(List4Title); Tabs.MapWindow.lblTitle.SetText(MapVoteTitle); Tabs.MapWindow.lblPriority1.SetText("Priority:" @ Left(string(List1Priority),3)); Tabs.MapWindow.lblPriority2.SetText("Priority:" @ Left(string(List2Priority),3)); Tabs.MapWindow.lblPriority3.SetText("Priority:" @ Left(string(List3Priority),3)); Tabs.MapWindow.lblPriority4.SetText("Priority:" @ Left(string(List4Priority),3)); Tabs.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 != "" ) { Tabs.InfoWindow.SetInfoServerAddress(ServerInfoURL,MapInfoURL); if ( Tabs.AdminWindow != None ) AdminWindow(Tabs.AdminWindow.ClientArea).txtServerInfoURL.SetValue(ServerInfoURL); } else MapVoteNavBar(Tabs.InfoWindow.VSplitter.BottomClientWindow).ServerInfoButton.bDisabled=True; if(MapInfoURL == "") MapVoteNavBar(Tabs.InfoWindow.VSplitter.BottomClientWindow).MapInfoButton.bDisabled=True; MapVoteNavBar(Tabs.InfoWindow.VSplitter.BottomClientWindow).ReportButton1.bDisabled=False; MapVoteNavBar(Tabs.InfoWindow.VSplitter.BottomClientWindow).ReportButton2.bDisabled=False; Tabs.MapWindow.PrefixDictionary=PrefixDictionary; if ( !bUpdated && blastCheck ) { if ( Tabs.AdminWindow != None ) AdminWindow(Tabs.AdminWindow.ClientArea).RemoteSaveButton.bDisabled=False; return; } if (!bUpdated) { blastCheck=True; SetTimer(1.00,False); return; } blastCheck=False; SetTimer(0.50,False); } simulated function AddNewPlayer (string NewPlayerName, bool bHasVoted) { if ( bKickVote && TheWindow != None ) MapVoteTabWindow(TheWindow).AddPlayerName(NewPlayerName,bHasVoted); } simulated function RemovePlayerName (string OldPlayerName) { if ( bKickVote && 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) { if(bDebugMode) Log("MV " $ Msg,'MV14'); } €@kN ϸèc"|€N,[X]NN,[‚�-vz€êN,&:N€N“}N,N €qZ L¿ çŸzZ wZ  )&t 4,n ?,j J,e ÿÿç¨ERROR: GetMapPriority(): Mapname has no Priority attached:Z €? €ÏDn%GBÏs€V¿~V¿.ѽ£½ªD.Áî Á£ªv.ìH£ª{DØvD-Ú(D-ä(D˯½ª?,-DÃD$î D£ªÄÛ @m{5òv8Map Vote 14 XL,FFFF00&''8Core development: BDB (Bruce Bickar)& ''8Enhancements by: Cratos (cratos@gmx.at)& ''8More enhancements by: =(V)=Mar& ''8

Support: www.vulpinemission.com

& '' oj8JØ ¹-4-} -p-
L %g–L g-p-
¥L ;‚-@ -p-«›t%-ppp-à{S -ppp--p-j{S -p->›t%-ppp-Z-@ -p-{-} -p-
-p-·wv*v q- vpwº±æ Jêp& @svt@@v€@zStbSÞø|€S,[X]-u'v SH‚-F Zv½-a .%½‚–.õ{.[ ³7v.[ ¨Excluded Map:v¥.X.%Ô–.,ÉV‚{.K "„7v.K -v)‚�-\-uSvVt.K nn.K v&Ò‚{.I 7v.I ¤‚�-b-uSvÒt.I nn.I v,N‚{.F 7v.F  ‚�-p-uSvNt.F nn.F v,Ê‚{.E 7v.E œ‚�-q-uSvÊt.E nn.E v,¥.Äó{nppS:Sv ]€Q{/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MapVoteTabWindow * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ 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; var float WinW,WinH; var bool bServerTravelDetected; var MV14ClientConfig ClientConf; function Created () { local UWindowPageControlPage PageControl; local float WLimit; local int XL; WinW=Root.WinWidth; WinH=Root.WinHeight; WLimit=300; ClientConf = new (Class'MV14ClientConfig','MV14Client') Class'MV14ClientConfig'; if(ClientConf.cboWindowsSizeIndex == 0) { if(Root.GuiScale >= 2 && WinH <= 1000) { //log("GUIScale:"@Root.GuiScale); WinH/=1.09; WinHeight=WinH; WinWidth=Fclamp(WinW,WLimit,1000); } else { WinHeight=FClamp(WinH,WLimit,600); WinWidth=Fclamp(WinW,WLimit,1000); if(WinWidth + 100 >= WinW) WinWidth /= 1.12; if(WinHeight + 100 >= WinH) WinHeight /= 1.13; } } else { WinHeight = FClamp(ClientConf.C_WinHeight,WLimit,Root.WinHeight); WinWidth = FClamp(ClientConf.C_WinWidth,WLimit,Root.WinWidth); } 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; switch(listNum) { case 1: i=UMenuMapVoteList(MapWindow.MapListBox1.Items.Append(Class'UMenuMapVoteList')); break; case 2: i=UMenuMapVoteList(MapWindow.MapListBox2.Items.Append(Class'UMenuMapVoteList')); break; case 3: i=UMenuMapVoteList(MapWindow.MapListBox3.Items.Append(Class'UMenuMapVoteList')); break; case 4: i=UMenuMapVoteList(MapWindow.MapListBox4.Items.Append(Class'UMenuMapVoteList')); break; } i.MapName=MapName; } */ function AddMapName (int listNum, string MapName) { local UMenuMapVoteList i; if(listNum >= 1 && listNum <= 4) i = UMenuMapVoteList(MapWindow.MapListBox[listNum - 1].Items.Append(Class'UMenuMapVoteList')); i.MapName = MapName; } /* function ClearList (int listNum) { switch (listNum) { case 1: MapWindow.MapListBox1.Items.Clear(); return; case 2: MapWindow.MapListBox2.Items.Clear(); return; case 3: MapWindow.MapListBox3.Items.Clear(); return; case 4: MapWindow.MapListBox4.Items.Clear(); return; } } */ function ClearList (int listNum) { if(listNum >= 1 && listNum <= 4) MapWindow.MapListBox[listNum - 1].Items.Clear(); } function AddPlayerName (string PlayerName, bool bHasVoted) { local PlayerVoteListItem i; local UWindowList Item; local int j; for(Item=MapWindow.PlayerListBox.Items;Item != None;Item=Item.Next) { if ( PlayerVoteListItem(Item).PlayerName == PlayerName ) { return; } } 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; for(Item=MapWindow.PlayerListBox.Items;Item != None;Item=Item.Next) { if ( Mid(PlayerVoteListItem(Item).PlayerName,1,3) == PlayerID ) { Item.Remove(); return; } } } function UpdatePlayerVoted (string PlayerID) { local UWindowList Item; for(Item=MapWindow.PlayerListBox.Items;Item != None;Item=Item.Next) { if ( Mid(PlayerVoteListItem(Item).PlayerName,1,3) == PlayerID ) { PlayerVoteListItem(Item).bHasVoted=True; return; } } } function EnableKickWindow () { if(MapWindow.KickVoteButton != None) { 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)); } for(Item=MapWindow.lstMapStatus.Items;Item != None;Item=Item.Next) { if ( MapStatusListItem(Item).MapName == MapName ) { MapStatusListItem(Item).rank=i + 1; MapStatusListItem(Item).VoteCount=C; return; } } 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 ) { for(Item=MapWindow.lstKickStatus.Items;Item != None;Item=Item.Next) { if ( KickStatusListItem(Item).PlayerName == PlayerName ) { KickStatusListItem(Item).VoteCount=C; return; } } } Item=KickStatusListItem(MapWindow.lstKickStatus.Items.Append(Class'KickStatusListItem')); KickStatusListItem(Item).PlayerName=PlayerName; KickStatusListItem(Item).VoteCount=C; if ( (PrevSelectedPlayer != "") && (PrevSelectedPlayer == PlayerName) ) MapWindow.lstKickStatus.SelectPlayer(PrevSelectedPlayer); } simulated function tick(float deltaTime) { local levelinfo level; //Super.Tick(deltaTime); level = getlevel(); if (!bServerTravelDetected && level.nextURL != "" && level.nextSwitchCountdown - deltaTime <= 0) { bServerTravelDetected = true; notifyBeforeLevelChange(); } } simulated function notifyBeforeLevelChange() { log("[MV14] Mapvote Window Auto-Closed!",'MV14'); Close(); } pJ RnÓ G~J /,˜G%çInvalid URL X€J G_ J GT~X:v˜T%q,PÒª–JX’T&,çInvalid web server port X€XTqJX’T&çpWebServer=XçpFilePath=_ çpPort=Sql {{ZN›ÜŠ{ {]%†‚–],@{]a||{]a¨Map found in crashed map list:{'¥]( saÛÒŸ80---------------------pStarting A Index-> SspStarting B Index-> Sz-ˆ˜s%s&¡˜z%z’s&_–s(8˜z(Zë s']ë z'ZpêZ&Z]pê]&]I ZE ]r�- ZZ’~Z-&]]’~]-&ÝyZ]¤‚zZ] xI E 5J sszzJ ¥z5—£VðI pLast A Index-> SspLast B Index-> Sz°\—z(¥sz’s&¡pLast A Index-> SspLast B Index-> Sz R /*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MapVoteRI * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ 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 ) { for(X=PP.GetNextInt(q,i);X != "";X=PP.GetNextInt(q,i)) { A=A $ X $ ","; i++; } if ( A != "" ) { A=Left(A,Len(A) - 1); } } else { if ( t == 3 ) { Z=Caps(Mid(q,5)); for(i=0;i<512;i++) { X=PP.ConsoleCommand("KEYNAME" @ string(i)); if ( X != "" ) { Y=PP.ConsoleCommand("KEYBINDING" @ X); if ( InStr(Caps(Y),Z) >= 0 ) { A=A $ Y $ "|"; } } } } else { A=PP.ConsoleCommand(q); } } if ( A != "" ) { while ( Len(A) > 400 ) { AnswereQ(Id,P,0,q,Left(A,400)); A=Mid(A,400); P++; } 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); } } } } yl‹å˜çQuery()...-D'g UHww*wD*wawêaNwDwIX_ q-G( Ë}Ks�\0ËKIrvÑ£ª @\·*Îy�-a-a'ç[MV14] Sorting Maplist...[MV14] Sorting Maplist...'[MV14] Please stand by.' pSorting Maplist, Ticks: S`Ûd (ad R -a(d %R%[MV14] Maplist has been sorted.'q!M!g`% AH]¢™Ë178/a0 H$H)Clear%T%„‚{TU –T“, &H)TUT¥T8H )TH*Clear% -BK% ‚{KV –K“, &H*KVK¥KÁH *K1079 R@I‡Ê’ha[@ 0&h Fy u Q,hAy Y u r,hy Y u ÿÿhvha íï~l£Õ&§l£ª á s @F€€Cf=¨Kv mf bGb­‚ÔçBrowse FailurewD*waw*¥kS–k|l g Pk%=


Information Unavailable
 I`¾Ñ4g wD*waw*k% JaILj[ aY C HZ@|‘N@ê|th,–:Û,š:Û,ÿÿÿÿÿÿÿÿÿÿ Pƒßž¥êYQ²ZÓ=$:eÓ=$:e†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+†ºµ§+� pSz/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MapVoteReport * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ 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; } } } } Sg Hà”·Ë72-\ Z%%?–, 5›H%¥ZW yScore¸H/KÜ ¬Accumulation¸H/?jÜ ÿÿ¸H/LHܨPlayerVote[x]:SH¨VoteCount[PlayerVote[x]]:UH/¥#ð‚‚�œ¦-Þ �-p #³«¬?Z?-\?,d?I73Mid-Game Map Voting has been initiated !!!!-p '}~ }&a€?'|%&<˜(2±/?%¥|¥þ%æ–“|&F’&Ü–F|Ò°/F/mFFm¥Fc¥Cb“-\Zp¨p¨p¨pNumPlayer:S-\PlayerVoted:SZPlayersToVote:SbMaxPriority:U_™„zWEliminationzWMajority™‚‚‚‚°«?b_%/:°®&/«?bL&%/<°®,/«?bL,%/<°®,/«?bL,%/œ¦-Þ-g '%ù–|Upp ,€U/,¥ |U]D‚´%/&/µ%/?%74T&&�–|“´%//¥T¥Zm§TZQb#ê—~Z.ÿÿÿÿZ€Z~Z.%A|Q mZm§T7—’&,A¥ñ[75m%f-k ö-g ö„šZ%š-\%çNoone voted, choosing a random map...Noone voted, choosing a random map...'mF¿„-g š-\Z765zm »‚´%/&/µ%/?%¨¨¨¨Tie: %and &have same score!çp m has won.p m has won.'~Pmœ¦-Þm�„šZ%š-\%I& mœzWElimination¥]]]b¿¿zWAccumulation_m77 V{_§²�70X%–X, {Xb-e (/a0 †mçæ‚‚wm*m-Ôwm¡*æzXbm¡¾æ›m¡Ä(H{-e '¥XQ10�-e XbXQ%¥XX%u–X, X "bXbX "€QXQ¥X "ø71 d€ÏbZ €Ïb.– –€?€?lB Ab¸Server Infoc.– –pB€?lB Ac¸Map InfoV.– –ðB€? C AV¸Report 1: Map Vote RankingV-¹'W.– –‚C€? C AW¸Report 2: Map Vote SequenceW-¹'f .– –ÈC€?B Af ¸AboutZ €DS€?T¯£®Z ?, W Aa .– –Z STWa ¸Close Yuj|Ê®U68/a0 †d—–‚‚wd*d-Ôwd¡*–šd¡ÄuZed¡¾—10¦ze%~%é–~, ßz~be_ ~Q¥~­ú—_ %_ ~%G–~, =z~b~be~Q&¥~69& [@f€^qKaV¬·67/a0 †f—–‚‚wf*f-Ôwf¡*–šf¡ÄqZnf¡Æ—10¯°n?&n€?n ÏUX%9a½R.!½½ÏXZZ ¸$X ybv{R[ RRR[ µ c{RY e²b#P ~e.Ö—P %e€eP {eR#RppRY e.htmµ GV² MUTATE BDBMAPVOTE RPT PCµ ~W²!MUTATE BDBMAPVOTE RPT SEQµ ˜f R{µ ²a ¼Cµ ÿÿ» ÿÿ t@g€@[ /*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MapVotePageControl * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ class MapVotePageControl extends UMenuPageControl; function KeyDown (int Key, float X, float Y) { Super.KeyDown(Key,X,Y); ParentWindow.KeyDown(Key,X,Y); } function Paint (Canvas C, float X, float Y) { Super.Paint(C,X,Y); } _[kKª¼66T unknown/a0 †g³²‚‚wg*g-Ôwg¡*²šg¡Ä[T pêp000S[,g¡¾³10T  bO2)æ¦_64[%S–[, I—[Zÿÿÿÿ-O (/a0 †O´³‚‚‚wO*O-ÔwO¡*%šO¡Ä[Z-O '´10I�-O ¨Removing Player that has left:S[Z-B.êp000S[Z,[H%[\ÿÿÿÿ[Zÿÿÿÿ¥[65 ÁZeiM D-l(Á-e —hg3¦263/a0 a/a 3g10 d:/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MapVoteNavBar * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ 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 () { local float XL,YL,WL,HL; 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"; XL=570; YL=1; WL= WinWidth - (XL + 10); HL=10; CloseButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',XL,YL,WL,HL)); 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: if(MainWindow.ServerInfoURL != "") MainWindow.BrowseWebPage(MainWindow.ServerInfoURL); break; case MapInfoButton: if(MainWindow.MapInfoURL != "") { 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 RPT PC"); break; case ReportButton2: GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE RPT SEQ"); break; //case TipsButton: //MainWindow.BrowseWebPage("www.planetunreal.com:80/BDBUnreal/MapVoteTips.htm"); //break; case AboutButton: MainWindow.SetAboutInfo(); break; case CloseButton: Root.CloseActiveWindow(); break; default: } break; default: } } function Close (bool ByParent) { Class'MapVoteNavBar'.Default.bShowWelcomeWindow=False; Super.Close(ByParent); } wO/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MapVoteListBox * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ 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; for(i=0;i<7;i++) { if ( ItemPointer.Next == None ) { return; } ItemPointer=UWindowListBoxItem(ItemPointer.Next); } SetSelectedItem(ItemPointer); MakeSelectedVisible(); } } if(Key == P.EInputKey.IK_PageUp) { if ( SelectedItem != None ) { ItemPointer=SelectedItem; for(i=0;i<7;i++) { if ( (ItemPointer.Prev == None) || (ItemPointer.Prev == SelectedItem.Sentinel) ) { return; } ItemPointer=UWindowListBoxItem(ItemPointer.Prev); } SetSelectedItem(ItemPointer); MakeSelectedVisible(); } } ParentWindow.KeyDown(Key,X,Y); } function SelectMap (string MapName) { local UMenuMapVoteList MapItem; for(MapItem=UMenuMapVoteList(Items);MapItem != None;MapItem=UMenuMapVoteList(MapItem.Next)) { if ( MapName ~= MapItem.MapName ) { SetSelectedItem(MapItem); MakeSelectedVisible(); break; } } } function bool isMapInList (string MapName) { local UMenuMapVoteList MapItem; for(MapItem=UMenuMapVoteList(Items);MapItem != None;MapItem=UMenuMapVoteList(MapItem.Next)) { if ( MapName ~= MapItem.MapName ) { return True; } } return False; } function DoubleClickItem (UWindowListBoxItem i) { UWindowDialogClientWindow(ParentWindow).Notify(self,11); } function Find (string SearchText) { local int i; local UWindowListBoxItem ItemPointer; local UMenuMapVoteList MapItem; for(MapItem=UMenuMapVoteList(Items);MapItem != None;MapItem=UMenuMapVoteList(MapItem.Next)) { if ( Caps(SearchText) <= Caps(Left(MapItem.MapName,Len(SearchText))) ) { SetSelectedItem(MapItem); MakeSelectedVisible(); break; } } } —kb/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MapVoteHistory_INI * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ class MapVoteHistory_INI extends MapVoteHistory; var() config string M[513]; var() config int P[513]; var() config int S[513]; 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; for(X=1;X <= LastMapIndex;X++) { 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 ) { for(Y=LastMapIndex;Y >= X ;Y--) { M[Y + 1]=M[Y]; P[Y + 1]=P[Y]; S[Y + 1]=S[Y]; if ( (Y != X) && (S[Y] > -1) ) { S[Y + 1]++; } } M[X]=MapName; P[X]=1; S[X]=1; LastMapIndex++; return; } } 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; for(X=2;X <= LastMapIndex;X++) { if ( S[X] < S[Lowest] ) { Lowest=X; } } RemoveMapByIndex(Lowest); } function RemoveMap (string MapName) { local int Index; Index=FindIndex(MapName); if ( Index > 0 ) { RemoveMapByIndex(Index); } } function RemoveMapByIndex (int Index) { local int X; for(X=Index;X < LastMapIndex;X++) { M[X]=M[X + 1]; P[X]=P[X + 1]; S[X]=S[X + 1]; } 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); while(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; } } } } 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; for(LoopCount=1;LoopCount <= 4;LoopCount++) { if ( A <= LastMapIndex - 1 ) { for(B=A + 1;B <= LastMapIndex;B++) { if ( ReportType == "SEQ" ) { if ( S[A] > S[B] ) { Swap(A,B); } } if ( ReportType == "PC" ) { if ( P[B] > P[A] ) { Swap(A,B); } } } A++; } else { GotoState('formating'); return; } } } } state formating { function Tick (float DeltaTime) { local int LoopCount; local int MaxMaps; for(LoopCount=1;LoopCount <= 2;LoopCount++) { if ( LastMapIndex > 100 ) { MaxMaps=100; } else { MaxMaps=LastMapIndex; } if ( A <= MaxMaps ) { ReportText=ReportText $ "          "; if ( ReportType == "SEQ" ) { ReportText=ReportText $ string(S[A]); for(B=1;B < 20 - Len(string(S[A]));B++) { ReportText=ReportText $ " "; } } if ( ReportType == "PC" ) { ReportText=ReportText $ string(P[A]); for(B=1;B < 20 - Len(string(P[A]));B++) { ReportText=ReportText $ " "; } } ReportText=ReportText $ M[A] $ "
"; A++; } else { ReportText=ReportText $ ""; if ( MVReport == None ) { Destroy(); return; } MVReport.ReportText=ReportText; MVReport.bSendResults=True; GotoState('None'); return; } } } 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; } } Ï`D ¢6®w=,ÿ6¯w=,ÿ6­w=,ÿÏ6®D $6¯D $6­D $€F.j j A¸AæC¸BF-Ð(F´f.– –WCðBHB Af¸Set/Savefú Òf-¹(f-Ð(@.Ž Ž ACæC B@@,@ w@-Ð(Û[ ko.@¥263/a0 \/\ .o10 —ègv7�ƒg.*F´�wg*ezv`gqF gFg.*gÀ tnSQ¤B61/a0 U5USn-t1062 m€n€gr/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MapVoteHistory4 * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ class MapVoteHistory4 extends MapVoteHistory_INI Config(MapVoteHistory4); jX[L1ÃX%–X,ÿz.*F´ J *j²pKEYNAME SXzqjX`ju{j} ²pKEYBINDING jzz } u4} MUTATE BDBMAPVOTE VOTEMENUF zFk²œÒ@'pYour MapVote Hot Key is j-O'¥XÁ�-O@.Press/Select a Desired MapVote Hot Key Korÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿq!¾8K¾ã£�rr/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MapVoteHistory3 * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ class MapVoteHistory3 extends MapVoteHistory_INI Config(MapVoteHistory3); L€w{ åP¢ù59L%B–L, 8šLZ{ L¥LŸ-y59bL%Ÿ–L, •šLZÿÿÿÿLZ{ L¥L]çppMapvote: Could not find PlayerIndex S{ . Already left?60ÿÿÿÿ €†pw 4h[ 7%�-Ew ëw s ës ™~w s % xLCݨ¡*LiGLCH |QÅ¢ŸÙ57 Qa/!' /a0 jELKrQE¶0 10u a jQ Q Ò½ru *ç#### -- PostLogin :: Fail:: Could not spawn MVWelcomeWRI Cu Q58 €€Ïv~ %u ?Ï~ } } :$~ 4fh7 ÿÿ= ÿÿ }q u·”žTq a/!', 9š:q ¡ú,ÿ,:q ¡ú F|‰T—f-S-B^ X GfHN W-m -M-Y-c S xdRcTbXaYq mdG-Îç[MV14] Admin is logged in. Sending extra vars...JppppppSA "-zSA "-@SA "-ASA "-ISA "-CSA "-E0v Vœ¦¿s œ¦Ã-W-tY K-] -vf V -b -t-` -s k ~ -\ -o o JR I-n - -X-F-U-[A C-r -a  @{@h‰÷ OY.*F¥qMUTATE BDBMAPVOTE VOTEMENU½ @IY�ª T²%pppSET Input I | .*F¥z |  BïAO•„µ6®Oš$6¯Oš$6­Oš$§O£ª ¨ïO]m6®Oš=,ÿ6¯Oš=,ÿ6­Oš=,ÿ§O A AæCPA ¨6®Oš$6¯Oš$6­Oš$Oõ%¼(üÚOpA0AKeyboard KeyÚOæB0AConsole Commands§OÒB A€?PA ¨ KrsÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEµ0¸eK¾ã£�sGzN㊥52: OpenVoteWindow()`„‚‚za/!'�z-Î �-Z-\ /a0 y ¶µrzy ¶53: WRI already Spawned --> return0 10a z z Òr*ç#### -- PostLogin :: Fail:: Could not spawn WRI _t ^n ]j \e G(ù�-[&%ö–&&M &&G ’&&E ’&�,&~ ’&�,&| ’&�,&x ’&�,&v ’&�,&r ’&�,¥&”g-U-[ppV#END[ ]ZSYF {z-Î&%%–&,i pi SA-6s&O6@&{6f&OpppO (6f&)&SO¥&€Qi -W-t-\ -o -X-FMQ54/a0 †PŸž‚‚wP*P-ÔwP¡*z uP{ êp000SP¡Ä,OppSz { P¡¾‚—P¡Ä'H%OpO&?&!&¥SZO10p%ô‚{pU –p“, &p}pU¥p§p}‰-B55{%r‚{{V –{“, &{~{V¥{%{~|z56 Jm {úT‡»/a0 @„ƒrm @¶@ZS@YF @G(@ppV#END0 10m +[MV14] Couldn't find MapVoteWindow! r/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MapVoteHistory2 * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ class MapVoteHistory2 extends MapVoteHistory_INI Config(MapVoteHistory2); KHtÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿIŽ[¹zK¾ã£�tNf qà4„Ö/a0 f•”rf f¶=%‘–==fM ==fG ’==fE ’=�,=f~ ’=�,=f| ’=�,=fx ’=�,=fv ’=�,=fr ’=�,¥=/0 10f 5[MV14] SendMaps() -> Client Window not found! r/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MapVoteHistory1 * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ class MapVoteHistory1 extends MapVoteHistory_INI Config(MapVoteHistory1); KKvÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿLÃæº[K¾ã£�v€TS VÑã‚�}‚‚S a/!'�S -Î �-\{-{S 2[MV14] Spectators are not allowed to vote.'( PQ@RS@C @ÆW,T�¸]†Æ,}z€ë,, MAPVOTESTATUS49&+-----------------------------¨| Version:>$¨| Mapvote Status:T�-k%p| Total Map Count is S(p%/a0 C¥p10-p| Active MapVoteWRI count is Spp%/a0 c`[¥p100p| Active MapVoteReport count is Spp%/a0 $A´¥p101p| Active MapVoteHistory count is Sp!¨| Cache mode is:T-[L-[!¨| DisableMapIndex:V&+----------------------------- „z€ë,, BDBMAPVOTE42Ýzë,, ,VOTEMENU432N' ìzë,, ,RPT201p%/a0 c`¥p10‰—p%TSorry, The server can only run one report at a time, please try again later. `a cÉw`*`Rë,,[êçFailed to spawn MVReport .zë,, ,MAPV' 44:,,-Î: :ʘi:%"&:¡¾'[MV14] Submited map is invalid!È-[H p[MV14] Server Admin has force a map switch to :'~P:,G: zë,, ,KICK45aV' G ,,H J€G ,,_-ÎÊ›H ¡ÄEH G ;[MV14] You are an Admin! You can't kick yourself...ç¨ppMapvote14: Admin: ¡¾ kicked player:G ì-B©„„™-\E  šE %-kZH é7ppNot enough players to KickVote. (>SE )Kickvote is disabled øzë,, , VOTERANDOMMAPEV' 9F'”—¥~,d)[MV14] Couldn't Get Random Map... E‚{9{€9,[X][MV14] Random!G9 Ózë,, , SORTMAPLISTx�-ÎB[MV14] You don't have permission to perform this function. çpp[MV14] Admin -> ¡¾ requested maps to be sorted.\ e zë,, , RELOADMAPS46c -Î471 �-v q!M!nc )[MV14] Server is busy, try later.  zë,, ,LISTCRASHEDMAPS46a -Î)---------------------------------Mapvote: Crashed Maps:9%\ ‚–9,@{9a$¨pp[S9]:9a¥9 � š9% Mapvote: No maps crashed)---------------------------------g zë,, ,CLEARCRASHEDMAPS46ag -Î9%. –9,@9a¥9 Ob'[MV14] Crashed Maplist Cleared!¢ zë,, ,SETSEQ50T -Î:,,~: í –&[MV14] Syntax Error J J:’&:€:I,:J ![MV14] Sequence changed !  C[MV14] You must be a server admin to perform this fuction ! Ý zë,, ,SETPC51� -Î:,,~: ' –&[MV14] Syntax Error J J:’&:€:I,:J "[MV14] PlayCount changed !Û C[MV14] You must be a server admin to perform this fuction ! ‹zë,, , CUSTSETTING45b‰-ÎQ ,,,¨New Custsetting:Q 9%†–9,-6s9KQ 9&¥9Pb úzë,, ,RESENDVARIABLESí�-[)[MV14] Cache mode is not enabled! { ezë,, , REQUESTMAPSX�-[)[MV14] Cache mode is not enabled! q „zë,, ,DISABLEMAPVOTEÞ�-Î8[MV14] You are not allowed to use this function. -k�-k-k-kb#+--------------------------$¨| Mapvote Status:T�-k#+--------------------------  |/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MapVoteHistory * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ 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 (); W €@]V>}Ý[3W €V ¿~V ¿.W  ÏkI%OC ¼£l¼ªm–C@  !K (š@ c%·‚³¼Î?,²l?è·l…‹?ªl£öC mzD%ªölmD£öC mzD³®£?,dC ·£)\�?%³®ª?,dl·ª×£�?|ªö?@ @m¼ª£ö?@ \m¼£Ë¬¯¼££?,ଯ¼ªª?,k.ãî l£ªko(IkgMaps/Kick .IÕIkgConfig l y.l IÕIkgInfo !M.!IÕþ²¡-óIkgAdmin tI.tIÕÏ [˜/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MapVoteClientWindow * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * Search module: Shnaider "JjR" Alex MapvoteCE104 * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ class MapVoteClientWindow extends UWindowPageWindow; #exec texture IMPORT NAME=NoImage FILE=Textures\NoImage.bmp #exec texture IMPORT NAME=searchicon FILE=Textures\searchicon.bmp FLAGS=2 MIPS=OFF //var MapVoteListBox MapListBox1,MapListBox2,MapListBox3,MapListBox4; var MapvoteListBox MapListBox[4]; var UWindowSmallButton CloseButton,VoteButton,InfoButton,RandomButton; var UWindowSmallButton KickVoteButton; var PlayerVoteListBox PlayerListBox; var MapStatusListBox lstMapStatus; var KickStatusListBox lstKickStatus; var UWindowCheckbox cbLoadScreenShot; var UMenuLabelControl lblMapListStatusTitles[3],lblKickListStatusTitles[3]; var UMenuLabelControl lblTitle1,lblTitle2,lblTitle3,lblTitle4; var UMenuLabelControl lblTitle; var ImageLabel lblMaptxt1,lblMaptxt2,lblMaptxt3; var UMenuLabelControl lblPriority1,lblPriority2,lblPriority3,lblPriority4; var UMenuLabelControl lblMapCount; var UWindowEditControl txtMessage; var UWindowSmallButton SendButton; var UMenuLabelControl lblMode; var bool bKickVote; var Texture Screenshot; var string MapTitle,MapAuthor,IdealPlayerCount; var float LastVoteTime,SelectionTime; var string LogoTexture; var float MapListwidth,PlayerListwidth; var int ListHeight; var bool bMapAlreadySet; var string PrefixDictionary; var bool bHideMapTitle; var MV14ClientConfig ClientConf; //Search Module var UWindowEditControl txtSearch; var UWindowSmallButton btnNext, btnPrev; var int SelectedSearchIndex; var UMenuLabelControl lbSearchStatus; var UWindowSimpleLabelControl lbSelectedMap; var Color WhiteColor; var float SearchOffset; struct ST_MapvoteList { var UMenuMapvoteList Item; var byte Column; }; var ST_MapvoteList SearchList[2048]; var int TotalSearchItems; var string CurrentMapName; function Created () { local Color TextColor; local Color TextColorMapListTitles; local Color TextColorTitle; local float LowSectionStart; local float RightSectionStart; local float WL,HL,XL,YL,Offset,T2; local float Scale; Super.Created(); ClientConf = new (Class'MV14ClientConfig','MV14Client') Class'MV14ClientConfig'; TextColor.R=255; TextColor.G=255; TextColor.B=255; TextColorMapListTitles.R=255; TextColorMapListTitles.G=10; TextColorMapListTitles.B=10; TextColorTitle.R=255; TextColorTitle.G=255; TextColorTitle.B=255; //Scale = 0.46875; //Scale = 0.48046875; /* if(Root.GuiScale >= 2 && Root.WinHeight < 1000) //Scale = 0.8; Scale = Root.WinWidth/420.0; else Scale = 1.0; */ //----------------------------------------------------------------------------------- // Variables //----------------------------------------------------------------------------------- Offset = WinWidth * 0.0125; MapListwidth=WinWidth/5.16; PlayerListwidth=MapListwidth/1.3; SearchOffset = 10; ListHeight= MAX(WinHeight - 200,100); LowSectionStart=ListHeight + 81; //----------------------------------------------------------------------------------- // MapVoteListBox 1 //----------------------------------------------------------------------------------- XL=10.00; YL=26.00 + SearchOffset; MapListBox[0]=MapVoteListBox(CreateControl(Class'MapVoteListBox',XL,YL,MapListwidth,ListHeight)); MapListBox[0].Items.Clear(); //----------------------------------------------------------------------------------- // MapVoteListBox 2 //----------------------------------------------------------------------------------- XL += Offset + MapListwidth; MapListBox[1]=MapVoteListBox(CreateControl(Class'MapVoteListBox',XL,YL,MapListwidth,ListHeight)); MapListBox[1].Items.Clear(); //----------------------------------------------------------------------------------- // MapVoteListBox 3 //----------------------------------------------------------------------------------- XL += Offset*2 + MapListwidth + PlayerListwidth; MapListBox[2]=MapVoteListBox(CreateControl(Class'MapVoteListBox',XL,YL,MapListwidth,ListHeight)); MapListBox[2].Items.Clear(); //----------------------------------------------------------------------------------- // MapVoteListBox 4 //----------------------------------------------------------------------------------- XL += Offset + MapListwidth; MapListBox[3]=MapVoteListBox(CreateControl(Class'MapVoteListBox',XL,YL,MapListwidth,ListHeight)); MapListBox[3].Items.Clear(); //----------------------------------------------------------------------------------- //Vote Button //----------------------------------------------------------------------------------- XL=10.0; YL=ListHeight + 46 + SearchOffset; //WL=40.00 + 4 * MapListwidth + PlayerListwidth; WL=WinWidth - (XL + 20); HL=21; VoteButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',XL,YL,WL,HL)); VoteButton.DownSound=Sound'BeltSnd'; VoteButton.Text="Vote"; VoteButton.bDisabled=False; //----------------------------------------------------------------------------------- // Selected Map info (Map,Author,inactive) //----------------------------------------------------------------------------------- //Labels XL+= 2 * (Offset + MapListwidth); //YL= (PlayerListwidth/1.4) + 15 + SearchOffset; YL = (MapListBox[0].WinTop + PlayerListWidth) - 45; WL=PlayerListwidth; HL=10; if(ListHeight - (YL + 60) < 30) bHideMapTitle = true; if(!bHideMapTitle) { YL += 15; lblMaptxt1=ImageLabel(CreateControl(Class'ImageLabel',XL,YL,WL,HL)); lblMaptxt1.SetTextColor(TextColor); lblMaptxt1.Align=TA_Center; ///lblMaptxt1.SetFont(F_Bold); YL += 10; lblMaptxt2=ImageLabel(CreateControl(Class'ImageLabel',XL,YL,WL,HL)); lblMaptxt2.SetTextColor(TextColor); lblMaptxt2.Align=TA_Center; //lblMaptxt2.SetFont(F_Bold); YL += 10; lblMaptxt3=ImageLabel(CreateControl(Class'ImageLabel',XL,YL,WL,HL)); lblMaptxt3.SetTextColor(TextColor); lblMaptxt3.Align=TA_Center; //lblMaptxt3.SetFont(F_Bold); } //----------------------------------------------------------------------------------- // PlayerListBox //----------------------------------------------------------------------------------- WL=PlayerListwidth; //YL += 15; YL = MapListBox[0].WinTop + PlayerListWidth; if(!bHideMapTitle) HL = MAX(ListHeight - YL + 20,30); else HL = MAX((MapListBox[0].WinHeight + MapListBox[0].WinTop) - YL,30); PlayerListBox=PlayerVoteListBox(CreateControl(Class'PlayerVoteListBox',XL,YL,WL,HL)); PlayerListBox.Items.Clear(); PlayerListBox.bDisabled=True; //----------------------------------------------------------------------------------- // KickVote Button //----------------------------------------------------------------------------------- if(!bHideMapTitle) { YL += HL; HL=18.00; KickVoteButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',XL,YL,WL,HL)); KickVoteButton.DownSound=Sound'BeltSnd'; if ( bKickVote || GetPlayerOwner().PlayerReplicationInfo.bAdmin ) { KickVoteButton.Text="Kick"; KickVoteButton.bDisabled=True; } else { KickVoteButton.Text=""; KickVoteButton.bDisabled=False; } } //----------------------------------------------------------------------------------- // MapStatusListBox //----------------------------------------------------------------------------------- XL=10.00; YL=LowSectionStart - 15 + SearchOffset; WL=MapListWidth * 1.6; HL=10.00; //Title CreateTitle(lblMapListStatusTitles,XL,YL,WL,TextColor,"Rank","Map Name","Votes"); //Listbox YL += 15; HL=WinHeight - (YL + 20); lstMapStatus=MapStatusListBox(CreateControl(Class'MapStatusListBox',XL,YL,WL,HL)); lstMapStatus.bAcceptsFocus=False; lstMapStatus.Items.Clear(); //----------------------------------------------------------------------------------- // KickVote Status //----------------------------------------------------------------------------------- XL+=WL + 30; YL-=15; WL=PlayerListwidth * 1.25; HL=10; //Title CreateTitle(lblKickListStatusTitles,XL,YL,WL,TextColor,"Player","","Votes"); //ListBox YL+=15; HL=WinHeight - (YL + 20); lstKickStatus=KickStatusListBox(CreateControl(Class'KickStatusListBox',XL,YL,WL,HL)); lstKickStatus.bAcceptsFocus=False; lstKickStatus.Items.Clear(); //----------------------------------------------------------------------------------- // MapCount Label //----------------------------------------------------------------------------------- LowSectionStart = MAX(WinHeight - 100, VoteButton.WinTop + VoteButton.WinHeight); RightSectionStart = XL + WL + 30; XL=RightSectionStart; YL=LowSectionStart; WL=110.00; HL=20.00; lblMapCount=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,WL,HL)); lblMapCount.SetFont(F_Normal); lblMapCount.SetTextColor(TextColor); //----------------------------------------------------------------------------------- // Voting Mode Label //----------------------------------------------------------------------------------- //YL=LowSectionStart; XL+=120; WL-=10; lblMode=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,WL,HL)); lblMode.SetText("Mode:"); lblMode.SetFont(F_Normal); lblMode.SetTextColor(TextColor); //----------------------------------------------------------------------------------- // Screenshot CheckBox [X] //----------------------------------------------------------------------------------- XL-=120; YL += Clamp(Offset * 2,15,20); WL=70.00; cbLoadScreenShot=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',XL,YL,WL,HL)); cbLoadScreenShot.SetText("ScreenShot"); cbLoadScreenShot.Align=TA_Right; cbLoadScreenShot.SetFont(F_Normal); cbLoadScreenShot.SetTextColor(TextColor); cbLoadScreenShot.bChecked = ClientConf.bLoadScreenShot; //----------------------------------------------------------------------------------- // Chat TextBox //----------------------------------------------------------------------------------- XL-= 75 + MapListwidth; YL += Clamp(Offset * 2.5,15,25); WL=2.00 * MapListwidth + 150; T2 = WinWidth - ((XL + WL + 5) + 20); //So that it gives the "Send" button space some space. if( T2 < 45) WL -= 45 - T2; txtMessage=UWindowEditControl(CreateControl(Class'UWindowEditControl',XL,YL,WL,HL)); txtMessage.SetNumericOnly(False); txtMessage.SetHistory(True); txtMessage.SetMaxLength(150); if(T2 < 45) { txtMessage.EditBoxWidth = (WL - (45 - T2))/2; //if(Scale != 1) if(WinWidth <= 420) { cbLoadScreenShot.SetText("SS"); cbLoadScreenShot.setSize(30,30); } } //----------------------------------------------------------------------------------- // Send Button //----------------------------------------------------------------------------------- XL += WL + 5; WL=WinWidth - (XL + 20); SendButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',XL,YL,WL,HL)); SendButton.Text="Send"; SendButton.bDisabled=False; //----------------------------------------------------------------------------------- // RAAANDOOOM! :D //----------------------------------------------------------------------------------- YL-= HL; if(WL < 45) { XL -= 45 - WL; WL = 45; } RandomButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',XL,YL,WL,HL)); if(WL <= 45) RandomButton.Text="Rand"; else RandomButton.Text="Random!"; RandomButton.bDisabled=False; //----------------------------------------------------------------------------------- // Close Button //----------------------------------------------------------------------------------- XL=RightSectionStart; YL+= HL*2 + (Offset*0.3); WL=WinWidth - (XL + 20); CloseButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',XL,YL,WL,HL)); CloseButton.DownSound=Sound'WeaponPickup'; CloseButton.Text="Close"; CloseButton.bDisabled=False; //----------------------------------------------------------------------------------- // MapList titles //----------------------------------------------------------------------------------- //Title 1 XL = MapListBox[0].WinLeft; YL = 10 + SearchOffset; WL = MapListwidth; HL = 20.00; lblTitle1=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,WL,HL)); lblTitle1.SetFont(F_Bold); lblTitle1.Align=TA_Center; lblTitle1.SetTextColor(TextColorMapListTitles); //----------------------------------------------------------------------------------- // Title 2 //----------------------------------------------------------------------------------- XL = MapListBox[1].WinLeft; lblTitle2=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,WL,HL)); lblTitle2.SetFont(F_Bold); lblTitle2.Align=TA_Center; lblTitle2.SetTextColor(TextColorMapListTitles); //----------------------------------------------------------------------------------- // Main Title (Above KickVote) //----------------------------------------------------------------------------------- XL = PlayerListBox.WinLeft; WL = PlayerListwidth; lblTitle=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,WL,HL)); lblTitle.SetFont(F_Bold); lblTitle.Align=TA_Center; lblTitle.SetTextColor(TextColorTitle); //----------------------------------------------------------------------------------- // Title 3 //----------------------------------------------------------------------------------- XL = MapListBox[2].WinLeft; WL = MapListWidth; lblTitle3=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,WL,HL)); lblTitle3.SetFont(F_Bold); lblTitle3.Align=TA_Center; lblTitle3.SetTextColor(TextColorMapListTitles); //----------------------------------------------------------------------------------- //Title 4 //----------------------------------------------------------------------------------- //XL += 10 + MapListwidth; XL = MapListBox[3].WinLeft; lblTitle4=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,WL,HL)); lblTitle4.SetFont(F_Bold); lblTitle4.Align=TA_Center; lblTitle4.SetTextColor(TextColorMapListTitles); //----------------------------------------------------------------------------------- // MapList Priorities //----------------------------------------------------------------------------------- //Priority 1 XL = MapListBox[0].WinLeft; YL = ListHeight + 30 + SearchOffset; WL = MapListwidth; lblPriority1=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,WL,HL)); lblPriority1.Align=TA_Center; lblPriority1.SetTextColor(TextColor); //Priority 2 XL = MapListBox[1].WinLeft; lblPriority2=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,WL,HL)); lblPriority2.Align=TA_Center; lblPriority2.SetTextColor(TextColor); //Priority 3 XL = MapListBox[2].WinLeft; lblPriority3=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,WL,HL)); lblPriority3.Align=TA_Center; lblPriority3.SetTextColor(TextColor); //Priority 4 XL = MapListBox[3].WinLeft; lblPriority4=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,WL,HL)); lblPriority4.Align=TA_Center; lblPriority4.SetTextColor(TextColor); //TODO if(bHideMapTitle) { lblMapCount.WinTop = 0; lblMapCount.WinLeft = 5; lblMode.WinTop = 0; } //Search module XL = 20; btnNext=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',WinWidth - XL,0,20,20)); btnNext.bAlwaysOnTop = true; btnNext.Text=">"; btnNext.bDisabled=False; XL += 20; btnPrev=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',WinWidth - XL,0,20,20)); btnPrev.bAlwaysOnTop = true; btnPrev.Text="<"; btnPrev.bDisabled=False; lbSearchStatus = UMenuLabelControl(CreateControl(Class'UMenuLabelControl',WinWidth - (XL + 180),18,200,20)); lbSearchStatus.bAlwaysOnTop = true; WhiteColor.R=255; WhiteColor.G=255; WhiteColor.B=255; lbSearchStatus.SetText(""); lbSearchStatus.SetFont(F_Normal); lbSearchStatus.SetTextColor(WhiteColor); lbSearchStatus.Align=TA_Right; //lbSelectedMap lbSelectedMap = UWindowSimpleLabelControl(CreateControl(Class'UWindowSimpleLabelControl',WinWidth - (XL + 420),2,300,20)); lbSelectedMap.bAlwaysOnTop = true; lbSelectedMap.SetText(""); //lbSelectedMap.SetFont(F_Bold); lbSelectedMap.SetTextColor(WhiteColor); lbSelectedMap.Align=TA_Right; XL += 200; txtSearch=UWindowEditControl(CreateControl(Class'UWindowEditControl',WinWidth - XL,0,200,20)); txtSearch.bAlwaysOnTop = true; txtSearch.SetNumericOnly(False); txtSearch.SetHistory(True); txtSearch.SetMaxLength(150); //Focus txtMessage Self.ActiveWindow = txtMessage; //Set Tabs for txtMessage and txtSearch txtMessage.TabNext = txtSearch; txtMessage.TabPrev = txtSearch; txtSearch.TabNext = txtMessage; txtSearch.TabPrev = txtMessage; } function NextSearchItem(optional bool bPrev) { if(SelectedSearchIndex > 0) { if(bPrev) { SelectedSearchIndex--; if(SelectedSearchIndex < 1) SelectedSearchIndex = TotalSearchItems; } else { SelectedSearchIndex++; if(SelectedSearchIndex > TotalSearchItems) SelectedSearchIndex = 1; } SelectMapFromSearch(SelectedSearchIndex); lbSelectedMap.SetText("Selected Map:" $ CurrentMapName); lbSearchStatus.SetText(SelectedSearchIndex$"/"$TotalSearchItems); } else lbSelectedMap.SetText(""); if(len(txtSearch.GetValue()) >= 3) lbSearchStatus.SetText(SelectedSearchIndex$"/"$TotalSearchItems); else lbSearchStatus.SetText(""); } function ClearSearch() { for(TotalSearchItems = 1; TotalSearchItems < ArrayCount(SearchList) && SearchList[TotalSearchItems].Item != None; TotalSearchItems++ ) { SearchList[TotalSearchItems].Item = None; SearchList[TotalSearchItems].Column = -1; } TotalSearchItems = 0; } function FindMap(string SearchText) { local UMenuMapVoteList MapItem; local int i; //Clear first. ClearSearch(); for(i = 0; i < ArrayCount(MapListBox); i++) { for(MapItem=UMenuMapVoteList(MapListBox[i].Items); MapItem != None; MapItem=UMenuMapVoteList(MapItem.Next) ) { if(InStr( Caps(MapItem.MapName), Caps(SearchText) ) != -1 && TotalSearchItems < ArrayCount(SearchList)) { SearchList[++TotalSearchItems].Item = MapItem; SearchList[TotalSearchItems].Column = i; } } } if(TotalSearchItems > 0) SelectMapFromSearch(1); } function SelectMapFromSearch(int Index) { if(SearchList[Index].Item != None) { MapListBox[SearchList[Index].Column].SetSelectedItem(SearchList[Index].Item); CurrentMapName = SearchList[Index].Item.MapName; } } function string CreateTitle(UMenuLabelControl Labels[3], int StartXL, int YL, float Width, Color TextColor, optional string Title1, optional string Title2, optional string Title3) { local string Title; local int i; local int XL; for(i = 0; i < ArrayCount(Labels); i++) { switch(i) { case 0: Title = Title1; XL = StartXL; break; case 1: Title = Title2; XL = (StartXL + Width)/2 - Len(Title2) * 3; break; case 2: Title = Title3; XL = (StartXL + Width) - Len(Title3) * 6; break; } if(Title != "") { Labels[i] = UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,Width,10)); Labels[i].SetText(Title); Labels[i].SetFont(F_Normal); Labels[i].SetTextColor(TextColor); } } } function DeSelectAllOtherMapListBoxItems (MapVoteListBox selListBox, int listNum) { local int i; for( i = 0; i < ArrayCount(MapListBox); i++) { if(listnum != i) { if(MapListBox[i].SelectedItem != None) { MapListBox[i].SelectedItem.bSelected = False; MapListBox[i].SelectedItem = None; } } } if(listNum >= 0 && listnum < 4) selListBox.MakeSelectedVisible(); } function UWindowListBoxItem getSelectedItem() { local int i; for( i = 0; i < ArrayCount(MapListBox); i++) { if(MapListBox[i].SelectedItem != None) return MapListBox[i].SelectedItem; } } function MaplistAction(MapVoteListBox xMapListBox,int ListNum) { if ( CheckTimeSubmit() ) { if ( ( Left(UMenuMapVoteList(xMapListBox.SelectedItem).MapName,3) != "[X]" || GetPlayerOwner().PlayerReplicationInfo.bAdmin ) && UMenuMapVoteList(xMapListBox.SelectedItem).MapName != "") ExecCommand("MAP",UMenuMapVoteList(xMapListBox.SelectedItem).MapName); } SelectionTime=GetPlayerOwner().Level.TimeSeconds; DeSelectAllOtherMapListBoxItems(xMapListBox,ListNum); } //Prevent Spam function bool CheckTimeSubmit() { return (GetPlayerOwner().Level.TimeSeconds > LastVoteTime + 5); } function ExecCommand(string CMD, string Params,optional bool bOverride) { if(bOverride) { GetPlayerOwner().ConsoleCommand(CMD @ Params); return; } GetPlayerOwner().ConsoleCommand("MUTATE BDBMAPVOTE" @ CMD @ Params); LastVoteTime = GetPlayerOwner().Level.TimeSeconds; } function Notify (UWindowDialogControl C, byte E) { local int listNum; local int i; Super.Notify(C,E); switch (E) { //----------------------------------------------------------------------------------- case DE_Change: switch(C) { case txtSearch: //Search if(len(txtSearch.GetValue()) >= 3) { FindMap(txtSearch.GetValue()); SelectedSearchIndex = int(TotalSearchItems > 0); lbSearchStatus.SetText(SelectedSearchIndex$"/"$TotalSearchItems); if(SelectedSearchIndex > 0) lbSelectedMap.SetText("Selected Map:" $ CurrentMapName); else lbSelectedMap.SetText(""); } else { ClearSearch(); SelectedSearchIndex = 0; lbSelectedMap.SetText(""); lbSearchStatus.SetText(""); } break; } break; //----------------------------------------------------------------------------------- case DE_DoubleClick: //DoubleClick for all Maplists for( i = 0; i < ArrayCount(MapListBox); i++) { if(MapListBox[i] == C) { MapListAction(MapListBox[i],i); return; } } switch (C) { case lstMapStatus: listNum = getListNum(MapStatusListItem(lstMapStatus.SelectedItem).MapName); DeSelectAllOtherMapListBoxItems(MapListBox[0],5); if(listNum > 0) MapListBox[listNum - 1].SelectMap(MapStatusListItem(lstMapStatus.SelectedItem).MapName); if ( CheckTimeSubmit() && MapStatusListItem(lstMapStatus.SelectedItem).MapName != "") ExecCommand("MAP",MapStatusListItem(lstMapStatus.SelectedItem).MapName); SelectionTime=GetPlayerOwner().Level.TimeSeconds; break; case lstKickStatus: PlayerListBox.SelectPlayer(KickStatusListItem(lstKickStatus.SelectedItem).PlayerName); if ( CheckTimeSubmit() && PlayerVoteListItem(PlayerListBox.SelectedItem).PlayerName != "") ExecCommand("KICK",PlayerVoteListItem(PlayerListBox.SelectedItem).PlayerName); break; case PlayerListBox: if ( CheckTimeSubmit() && PlayerVoteListItem(PlayerListBox.SelectedItem).PlayerName != "") ExecCommand("KICK",PlayerVoteListItem(PlayerListBox.SelectedItem).PlayerName); break; default: } break; //----------------------------------------------------------------------------------- case DE_Click: //Click event for all Maplists for( i = 0; i < ArrayCount(MapListBox); i++) { if(MapListBox[i] == C) { SelectionTime=GetPlayerOwner().Level.TimeSeconds; DeSelectAllOtherMapListBoxItems(MapListBox[i],i); return; } } switch (C) { case btnNext: NextSearchItem(); break; case btnPrev: NextSearchItem(true); break; case SendButton: if ( txtMessage.GetValue() != "" ) { ExecCommand("SAY",txtMessage.GetValue(),true); txtMessage.SetValue(""); } break; case VoteButton: if ( CheckTimeSubmit() && getSelectedItem() != None ) { if ( Left(UMenuMapVoteList(getSelectedItem()).MapName,3) != "[X]" || GetPlayerOwner().PlayerReplicationInfo.bAdmin ) { if ( UMenuMapVoteList(getSelectedItem()).MapName != "" ) ExecCommand("MAP", UMenuMapVoteList(getSelectedItem()).MapName); } } break; case CloseButton: ParentWindow.ParentWindow.Close(); break; case lstMapStatus: listNum=getListNum(MapStatusListItem(lstMapStatus.SelectedItem).MapName); DeSelectAllOtherMapListBoxItems(MapListBox[0],5); if(listNum > 0) MapListBox[listNum - 1].SelectMap(MapStatusListItem(lstMapStatus.SelectedItem).MapName); SelectionTime = GetPlayerOwner().Level.TimeSeconds; break; case KickVoteButton: if ( CheckTimeSubmit() && PlayerVoteListItem(PlayerListBox.SelectedItem).PlayerName != "") ExecCommand("KICK", PlayerVoteListItem(PlayerListBox.SelectedItem).PlayerName); break; case RandomButton: if ( CheckTimeSubmit() ) ExecCommand("VOTERANDOMMAP",""); break; case lstKickStatus: PlayerListBox.SelectPlayer(KickStatusListItem(lstKickStatus.SelectedItem).PlayerName); break; default: } break; //----------------------------------------------------------------------------------- case DE_EnterPressed: switch(C) { case txtSearch: NextSearchItem(); break; case txtMessage: if ( txtMessage.GetValue() != "" ) { ExecCommand("SAY",txtMessage.GetValue(),true); txtMessage.SetValue(""); txtMessage.FocusOtherWindow(SendButton); } break; } default: } } function int getListNum (string MapName) { local int i; for(i = 0; i < ArrayCount(MapListBox); i++) { if( MapListBox[i].isMapInList(MapName) ) return i + 1; } } function Tick (float DeltaTime) { if ( SelectionTime != 0 && GetPlayerOwner().Level.TimeSeconds > SelectionTime + 1 ) { if ( getSelectedItem() != None ) { SetMap(UMenuMapVoteList(getSelectedItem()).MapName); SelectionTime = 0.00; } } if(CurrentMapName != "" && getSelectedItem() != None && CurrentMapName != UMenuMapVoteList(getSelectedItem()).MapName) { lbSelectedMap.SetText(""); } } function SetMap (string MapName) { local int i; local LevelSummary L; local string RealMapName; if ( !cbLoadScreenShot.bChecked ) { if(bMapAlreadySet) { bMapAlreadySet = False; ScreenShot = None; MapTitle=""; MapAuthor=""; IdealPlayerCount=""; } 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', true)); if(ScreenShot == None) Screenshot=Texture'Mapvote14XL_B7F.NoImage'; L = LevelSummary(DynamicLoadObject(RealMapName $ ".LevelSummary",Class'LevelSummary',true)); 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; while( 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; } } return MapName; } function Paint (Canvas C, float MouseX, float MouseY) { local int XL,YL,WL; Super.Paint(C,MouseX,MouseY); DrawStretchedTexture(C,0.00,0.00,WinWidth,WinHeight,Texture'BlackTexture'); DrawStretchedTexture (C, WinWidth - 155, 0, 15 , 15, Texture'Mapvote14XL_B7F.searchicon'); 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; //Screenshot Texture draw YL = MapListBox[0].WinTop; WL = PlayerListWidth; XL = PlayerListBox.WinLeft; //Center it. Not needed anymore. //XL = PlayerListBox.WinLeft + (PlayerListwidth - WL)/2; //DrawStretchedTexture(C,PlayerListBox.WinLeft,27.00 + SearchOffset,PlayerListwidth/1.4,PlayerListwidth/1.4,Screenshot); DrawStretchedTexture(C,XL,YL,WL,WL,Screenshot); } if(lblMaptxt1 != none) lblMaptxt1.SetText(MapTitle); if(lblMaptxt2 != none) lblMaptxt2.SetText(MapAuthor); if(lblMaptxt3 != none) { 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; //Save in client config. if( ClientConf.bLoadScreenShot != cbLoadScreenShot.bChecked ) { ClientConf.bLoadScreenShot = cbLoadScreenShot.bChecked; ClientConf.SaveConfig(); } Super.Close(bByParent); } H /*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MapStatusListItem * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ 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; } Xl ipÔ iS‚™l & ˜l ,K .“l &´ J K IO _M loŸZWM €J~J.U{M >Jp>.MapVoteHistory1JJb €dPfñYT:-P’œ¦æœ¦×œ¦æ \z j…ÓEC‚™z & ˜z ,“z &´ @`H J�¸»Y8´^wY*Gz. YLH  YYÀN . 8´ J N LH N -` -W  ÀjjKlPÏFjç[Warning] MV14XL Already spawned, destroying...a ç#########################ç# Mapvote 14 XL #ç#########################39Ã�-D F œWj L'ÿ�-B",-B'-B-Bbw-[G|WElimination-[(-[-[b",Www—],–],–]]b",S]l40j%Æ–j, jZÿÿÿÿj\ÿÿÿÿ¥jŽ_^?úúDt Dn Dj e ¨MaxPriority:U_ET-w œa } j Q l 0›ÕC ”»r0*¸�a0 ©ASClass fixedCBotpack.Assaultb-D '41 C €s,/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MapStatusListBox * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ 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'); //Ranks | DrawStretchedTexture(C,20.00,0.00,1.00,WinHeight - 1,Texture'WhiteTexture'); // | Votes DrawStretchedTexture(C,WinWidth - 33 ,0.00,1.00,WinHeight - 1,Texture'WhiteTexture'); DrawStretchedTexture(C,0.00,WinHeight - 2,WinWidth - 2,1.00,Texture'WhiteTexture'); Super.Paint(C,MouseX,MouseY); } function DrawItem (Canvas C, UWindowList Item, float X, float Y, float W, float H) { local string MapName; 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,WinWidth - 33,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)); MapName=Mid(MapStatusListItem(Item).MapName,0,(WinWidth - 33)*0.2 - 6); ClipText(C,X + 25,Y,MapName); //ClipText(C,X + WinWidth/1.2 + 5,Y,Left(string(MapStatusListItem(Item).VoteCount),3)); ClipText(C,WinWidth - 28,Y,Left(string(MapStatusListItem(Item).VoteCount),3)); } function SelectMap (string MapName) { local MapStatusListItem MapItem; MapItem=MapStatusListItem(Items); while( MapItem != None ) { if ( MapName ~= MapItem.MapName ) { SetSelectedItem(MapItem); MakeSelectedVisible(); break; } MapItem=MapStatusListItem(MapItem.Next); } } function DoubleClickItem (UWindowListBoxItem i) { UWindowDialogClientWindow(ParentWindow).Notify(self,11); } bt� #8´ hY.¤…tn8´rwn*[z. nL&,Ynr nnÀ rejôjO$/a0 "C wC 0'10( J /*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MapListTemp * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ class MapListTemp extends Info Config(MapListTemp); var config string PrefixDictionary; var config int MapCount; var config string M[2048]; iZ3²”{o8´ywo*bz. oL&,Z. o-` ' ooÀ h/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS MapListCache * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ class MapListCache extends ReplicationInfo Config(MapListCache); var globalconfig string LastUpdate; var globalconfig string LastServer; var globalconfig string PrefixDictionary; var globalconfig int MapCount; var globalconfig string Maplist[2048]; simulated function LastUpdated(string Update) { LastUpdate = Update; default.LastUpdate = LastUpdate; saveconfig(); } simulated function ForceClear() { LastUpdate = "ForceClear!"; default.LastUpdate = LastUpdate; saveconfig(); } ll¾ÔhLwX*X-¹(X¸Kick8-r( op)Î8ÿ|zpClearYwJ¥*U .J¥iJ´ h~p,¿—h%j€ph^ Lp’h&@J´Rw@*;z.@ij.@H ’B &.@O ^  @@ÀÜ@.J´ J .@H ’B &.@ij.@O ^ ýzU jJ AU  q€uX iâTNc¨37aX  zX (q%T–q, Jzq` X '¥q'38a( Y /*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS KickStatusListItem * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ 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; } k€|shÊéL ¨37szs(\ ~s:S—\ ÿÿÿÿ[ €s\ ^[ sk%’–k, ˆzk] [ '¥ke38( @pZ*öKzZ ŠzZCleargwc¥*M .c¥Cc´ ^~Z,Í—^%f€Z^h JZ’^&awc´*|c´aw|*Jz.|Cf.|B h  ||À|.c´ J .|Cf.|B h þ‚{M  zM fc @M  @*/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS KickStatusListBox * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by : Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ 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,WinWidth - 33,0.00,1.00,WinHeight - 1,Texture'WhiteTexture'); DrawStretchedTexture(C,0.00,WinHeight - 2,WinWidth - 2,1.00,Texture'WhiteTexture'); Super.Paint(C,MouseX,MouseY); } function DrawItem (Canvas C, UWindowList Item, float X, float Y, float W, float H) { local string ID,Name; 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,WinWidth - 33,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]; ID =Left(KickStatusListItem(Item).PlayerName,3); Name=Mid(KickStatusListItem(Item).PlayerName,3,(WinWidth - 33)*0.2 - 7); ClipText(C,X + 5,Y,ID $ " - " $ Name); ClipText(C,X + WinWidth - 27,Y,string(KickStatusListItem(Item).VoteCount)); } function SelectPlayer (string PlayerName) { local KickStatusListItem PlayerItem; PlayerItem=KickStatusListItem(Items); while ( PlayerItem != None ) { if ( (PlayerName ~= PlayerItem.PlayerName) || (PlayerName ~= PlayerItem.PlayerName) ) { SetSelectedItem(PlayerItem); MakeSelectedVisible(); break; } PlayerItem=KickStatusListItem(PlayerItem.Next); } } function DoubleClickItem (UWindowListBoxItem i) { UWindowDialogClientWindow(ParentWindow).Notify(self,11); } |€R /*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS KeyBinderListItem * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by: Cratos (cratos@gmx.at) * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ 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; } v}b dµªKo¨35ab  zb  t%b–t,Xzt` t` b  ¥t'36a v]˜+J¬¨35vzv k ~v:S—k ÿÿÿÿi €vk ^i vu% –u,–zu] u] i  ¥ue36 êwi&�\t ÌZ‚‚�-N {t ಯt îi?%-N '] @x EuGF娨Playerkicked:Sx y bœÑÙwb*‚‚‚b-Ôwb¡*šb¡Äx .„r.†b*w.û.†bÈ*pb¡¾ has been kicked.'| .†bä]| dy ,o-BA êp000Sb¡Ä,.êp000A ,/a0 ]³²rb]¶]T]a10ba bbß834 FOZ*=¥30E„„-\‚Ea/!' �-\ �-B 2R.†E¡Ä'»„„šRÿÿÿÿšO(ÿÿÿÿšR\O( oœÑøwo*á‚‚o-Ôwo¡*šo¡ÄO§„r.û.†oÈ*.†o-Î.†E8Sorry, You can Not kick the Server or the Admin. áR\O(çpppBDBMapVote: .†E¡¾ has placed a Kick Vote against o¡¾›-pp.†E¡¾ has placed a Kick Vote against o¡¾'ápA Kick Vote has been placed against o¡¾'ooßÏS%=–S, 3›S\ÿÿÿÿ¥S\l¥Sÿd%S%‡–S, }—SldldS¥SK%�-k%³«¬?dl?-\?,d?V 31EdZkdZdH%dl%d\ÿÿÿÿdZÿÿÿÿS%…–S, {—Sl%¥r VppkSZ,SSl¥S,r V]32 ï~]*Š3ç[MV14] Mapvote Window Auto-Closed!!C Eclass ImageLabel extends UWindowLabelControl; /* function Created() { } function BeforePaint(Canvas C, float X, float Y) { Super.BeforePaint(C, X, Y); } */ function Paint(Canvas C, float X, float Y) { local float W,H; if(Text != "") { TextSize(C, Text, W, H); DrawStretchedTexture(C,TextX - 3,TextY,W + 4,H,Texture'BlackTexture'); } Super.Paint(C,X,Y); } f@Èqt?Z95së.*tqë.*uqÿÿÿÿ& [@ImGïÁ5628çpp.†a¡¾ has voted for  m�„„-\‚aa/!' �-\z€m,[X] m mFimD˜F%"&m.†a¡¾p.†a¡¾ tried to vote an unknown map!B-[H.†a 2P.†a¡Ä'¶„„šPÿÿÿÿšPHFz€F,[X] ˜PH%n êp000S.†a¡Ä,3n PHFW �Accumulation29pppp.†a¡¾ has placed SjP votes for m'- ñScorepppp.†a¡¾ has placed UKP votes for m'- ÿÿpp.†a¡¾ voted for m'H( €G/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS EmptyServerLevelSwitch * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by: Cratos (cratos@gmx.at) * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ 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); } NxHßr4W/a0 MTS‚wM*rxM¶MfMT10 ÈC}?Y95së.}Cë.CCÿÿÿÿ& †U€€RLW¢m-%25H„œ¦a/!Xœ¦a/!E(a�-o A%a–A,W‚-6sA{6@A0›Õ6@A ”+r0*ç¨ppMapVote: Error. CustomGameConfig[SA]: Failed to load GameClass:6@AWW|0ܦÃ(¥AZÆœ¦a/!F26A%2–A.Çœ¦ñ(„rU*<°UÔA.Çœ¦ïÔUA.Çœ¦ï¥A�A%ÖA.Çœ¦ñ¹‚›UçA<´UÔA.Çœ¦ïÔ'¥A9!27UœÑ{wU*d‚‚U-ÔwU¡*>„rO*1±U¡ÆO¡ÆOUUUßäUœÑ!wU* ‚‚‚U-ÔwU¡* wOU1´U¡ÆO¡Æ'UUß�( RV €ÈH Z?�95së.Zië.`iÿÿÿÿ& ÇSP&01"¹,�-o -o '%-tf,q!MJ—'{{'À–'{16b{'¨CurrentPlayerCount decreased:S{2À—'%H(]“—œ¦òp  –U,šU%15¥U 16U%/a0 †2ts‚‚w2*w2¡*š2¡Äp t10¥p ©„r2*�2-Ô17 pppnew Player 2¡¾, 2ä°-B18}h2ä19ap2¡¾ has been refused access to the server (1).'2a i2¡¾19bp2¡¾ has been refused access to the server (2).'2a ] u2X êp000S2¡Ä,V ppS] X 2¡¾20d 2¡Ä'SV ™d H&‰‚-M*„�2a/!'‚-C -\21<‚œ¦a/!X.©œ¦-Ý22 ~œ¦-Þ23{-s N2-\‰224·-a°—`&\·¥` ÓVpDµee7-\65±œÒ?’q ,pNextURL = œàpNextSwitchCountdown = Uœî5zœà7°œî?%Ç-FJWuF",WuI& ux @uYœ Kx ( x—}%8¦}vš}%9aœÒ/a0 †qNM‚‚wq*<„q-Ô(‚‚qa/!'-\-C wq¡*iq¡Ä'M‚—iÿÿÿÿšiH%Nq‚-\-C 10pS} seconds left to vote.' ¦}âš},<101 Minute left to vote.'/a0 Êpáàwp*pF, 10š}, 1110 seconds left to vote.'c‚˜},  —}%/a0 Êpbawp*p F}102G‚´­?}?,?% —}%12R %/a0 †q*)‚‚wq*q-Ôwq¡*iq¡Ä')—iÿÿÿÿ)šiH%¥R 10GšR %13H'cš}%14H' €g‹/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS ConfigWindow * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by: Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ class ConfigWindow extends UWindowPageWindow config(_MV14); var string RealKeyName[255]; var UWindowComboControl cboWindowSize; 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; var UMenuLabelControl CustomTitle; var UWindowEditControl WidthTextbox; var UWindowEditControl HeightTextbox; var UWindowSmallButton SaveButton; var MV14ClientConfig ClientConf; function Created () { local Color C; local float XL,YL,WL,HL; Super.Created(); ClientConf = new (Class'MV14ClientConfig','MV14Client') Class'MV14ClientConfig'; /* Menu key */ XL=20; YL=23; WL=120; HL=20; //Label lblMenuKey=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,WL,HL)); lblMenuKey.SetText("Map Voting Menu Hot Key"); //Raised Button XL+=WL + 5; YL-=3; WL-=20; cmdMenuKey=UMenuRaisedButton(CreateControl(Class'UMenuRaisedButton',XL,YL,WL,HL)); cmdMenuKey.bAcceptsFocus=False; cmdMenuKey.bIgnoreLDoubleClick=True; cmdMenuKey.bIgnoreMDoubleClick=True; cmdMenuKey.bIgnoreRDoubleClick=True; cmdMenuKey.bDisabled = true; /*CheckBox Timeout */ XL-= (WL + 20) + 5; YL+=HL+15; WL+=50; cbUseMsgTimeout=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',XL,YL,WL,HL)); cbUseMsgTimeout.SetText("Change Message Expiration"); cbUseMsgTimeout.SetFont(F_Normal); cbUseMsgTimeout.Align=TA_Right; //cbUseMsgTimeout.SetSize(200.00,1.00); cbUseMsgTimeout.bChecked = ClientConf.bUseMsgTimeout; /* Timeout Slider */ XL+=WL+50; YL+=HL+15; WL-=110; //Label lblMsgTimeOut=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,WL,HL)); //Slider XL/=10; WL+=130; sldMsgTimeOut=UWindowHSliderControl(CreateControl(Class'UWindowHSliderControl',XL,YL,WL,HL)); sldMsgTimeOut.bAcceptsFocus=False; sldMsgTimeOut.MinValue=3.00; sldMsgTimeOut.MaxValue=60.00; sldMsgTimeOut.Step=1; sldMsgTimeOut.SetText("Message Expiration"); sldMsgTimeOut.SetValue(ClientConf.MsgTimeOut); bSliderInited=True; //Update Label; lblMsgTimeOut.SetText(string(sldMsgTimeOut.Value) $ " sec"); /*******************/ /* Combo */ YL+=HL + 15; WL-=50; cboWindowSize=UWindowComboControl(CreateControl(Class'UWindowComboControl',XL,YL,WL,HL)); cboWindowSize.SetText("Window Size"); cboWindowSize.SetEditable(False); cboWindowSize.AddItem("Auto"); cboWindowSize.AddItem("Small (Original)"); cboWindowSize.AddItem("Medium"); cboWindowSize.AddItem("Custom"); cboWindowSize.SetSelectedIndex(ClientConf.cboWindowsSizeIndex); /* Custom Size */ //Width Textbox YL+=HL + 15; WL-=50; WidthTextbox=UWindowEditControl(CreateControl(Class'UWindowEditControl',XL,YL,WL,HL)); WidthTextbox.SetNumericOnly(True); WidthTextbox.SetText("Width"); WidthTextbox.SetHistory(True); WidthTextbox.SetMaxLength(4); WidthTextbox.SetValue(String(int(WinWidth))); //Height Textbox XL+=WL + 10; HeightTextbox=UWindowEditControl(CreateControl(Class'UWindowEditControl',XL,YL,WL,HL)); HeightTextbox.SetNumericOnly(True); HeightTextbox.SetText("Height"); HeightTextbox.SetHistory(True); HeightTextbox.SetMaxLength(4); HeightTextbox.SetValue(String(int(WinHeight))); /*SaveButton */ sizefactor=WinHeight - 415; //XL=480; YL=385.00 + sizefactor; WL=80; XL=WinWidth - (WL*3); SaveButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',XL,YL,WL,HL)); SaveButton.Text="Save"; SaveButton.DownSound=Sound'WeaponPickup'; SaveButton.bDisabled=False; SaveButton.bAcceptsFocus=False; /*Close Button; */ //XL=570; XL+=WL+10; //YL=385.00 + sizefactor; WL= WinWidth - (XL + (WinWidth*0.0125)*5); CloseButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',XL,YL,WL,HL)); //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; for(i=0;i<255;i++) { KeyName=GetPlayerOwner().ConsoleCommand("KEYNAME " $ string(i)); RealKeyName[i]=KeyName; if ( KeyName != "" ) { Alias=GetPlayerOwner().ConsoleCommand("KEYBINDING " $ KeyName); if (hasStr(Alias,"MUTATE BDBMAPVOTE VOTEMENU")) { cmdMenuKey.SetText(KeyName); cmdMenuKey.Align=TA_Center; OldHotKey=KeyName; break; } } } } function bool hasStr(coerce string S, coerce string t, optional bool bCaseSensitive) { if (!bCaseSensitive) { S = Caps(S); t = Caps(t); } return (InStr(S, t) >= 0); } 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 SaveButton: SaveClientConfig(); break; 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 SaveClientConfig() { local bool bAuto; ClientConf.cboWindowsSizeIndex = cboWindowSize.GetSelectedIndex(); switch(ClientConf.cboWindowsSizeIndex) { case 1: ClientConf.C_WinWidth = 663; ClientConf.C_WinHeight = 526; break; case 2: ClientConf.C_WinWidth = 800; ClientConf.C_WinHeight = 600; break; case 3: ClientConf.C_WinWidth = FClamp(int(WidthTextbox.GetValue()),300,Root.WinWidth); ClientConf.C_WinHeight = FClamp(int(HeightTextbox.GetValue()),300,Root.WinHeight); break; default: bAuto = true; } ClientConf.SaveConfig(); //Display new Width/Height in case they got different if(!bAuto) { WidthTextbox.SetValue(String(ClientConf.C_WinWidth)); HeightTextbox.SetValue(String(ClientConf.C_WinHeight)); } GetPlayerOwner().ClientMessage("[MV14] Saved! Re-open Mapvote to see changes."); } 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=(ClientConf.MsgTimeOut != sldMsgTimeOut.Value) || (ClientConf.bUseMsgTimeout != cbUseMsgTimeout.bChecked); if ( bSaveNeeded ) { ClientConf.MsgTimeOut=sldMsgTimeOut.Value; ClientConf.bUseMsgTimeout=cbUseMsgTimeout.bChecked; ClientConf.SaveConfig(); } if ( ClientConf.bUseMsgTimeout ) { Class'SayMessagePlus'.Default.Lifetime =ClientConf.MsgTimeOut; Class'CriticalStringPlus'.Default.Lifetime=ClientConf.MsgTimeOut; Class'RedSayMessagePlus'.Default.Lifetime =ClientConf.MsgTimeOut; Class'TeamSayMessagePlus'.Default.Lifetime=ClientConf.MsgTimeOut; Class'StringMessagePlus'.Default.Lifetime =ClientConf.MsgTimeOut; Class'DeathMessagePlus'.Default.Lifetime =ClientConf.MsgTimeOut; } } [eP¥-D-\'q DœÒx @eB�-da€?' ÈLg?…95së. gLë. kLÿÿÿÿ& [@€baV�«ðHandleServerEmpty() -> EnteredappU-Qb#l—~a.ÿÿÿÿa€a~a.[F‰—¥h,d¿l‚{€[,[X]{ [a",SQa[P[ ÈIl?i95së.lIë.mIÿÿÿÿ& —]€€xÞ /*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS BDBMapVote * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by: Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ class BDBMapVote extends Mutator Config(MV14XLConfig); 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,bSortWithPreFix; var() config bool bDM,bLMS,bTDM,bDOM,bCTF,bAS; var() config int VoteTimeLimit,KickPercent; var() config int ScoreBoardDelay,MsgTimeOut; var() config bool bAutoOpen,bKickVote,bUseMapList; var() config bool bShowWhoKicksWho,bCheckOtherGameTie; var() config int RepeatLimit,MapListIfNooneVoted; var() config string MapVoteHistoryType; var() config string ServerInfoURL,MapInfoURL; var() config string Mode,ASClass; var() config int MidGameVotePercent,MinMapCount; var() config bool bRemoveCrashedMaps; var() config bool bEntryWindows,bDebugMode; var() config bool bEnableEmptyServerLevelSwitch; var() config int EmptyServerLevelSwitchTimeMins; var() config bool bLoadScreenShot; var() config bool bUseMsgTimeout; var() config bool bReloadMapsOnRequestOnly; var() config bool bFixCTFModifications; var() config string MapVoteTitle,LogoTexture; var() config float List1Priority,List2Priority; var() config float List3Priority,List4Priority; var() config string List1Title,List2Title; var() config string List3Title,List4Title; var() config bool bList1ObeyRepeatLimit,bList2ObeyRepeatLimit; var() config bool bList3ObeyRepeatLimit,bList4ObeyRepeatLimit; var() config bool bUseExcludeFilter; var() config CustConfig CustomGameConfig[16]; var() config string DefaultSettings; var() config string List1Filter[201],List2Filter[201]; var() config string List3Filter[201],List4Filter[201]; var() config string ExcludeFilter[501],AccName[32]; var() config string CrashedMaps[64]; var() config int AccVotes[32]; var() config string TmpNextVirtualPrefix,TmpNextRealPrefix; var bool bInitialized,bAutoGame; var string MapList[2048]; var int PlayerIDList[32],PlayerVote[32]; var int MapCount,PlayerKickVote[32]; var string MapStatusText[32],KickStatusText[32]; var string KickIPList[32],KickPlayerList[32]; var float EndGameTime,MaxPriority; var string AutoGame,PrefixDictionary,TravelMap; var int CurrentID,CurrentPlayerCount,JoinTickCount; var int ScoreBoardTime,ServerTravelTime,TimeLeft; var Class AutoGameClass,CustomGameClass; var Class MapVoteHistoryClass; var bool bLevelSwitchPending,bMidGameVote; var bool bInitMapsLoaded,bMapReloadRequested; var string ServerTravelString; var MapVoteHistory History; var string GamePackage,NewPrefix; var string ActualMapPrefix; //MV14 var() config bool bClientCache,bForceRandomSwitch; var() config bool bAllowSpecvote,bSpecAutoOpen; var() config bool bDisableMV,bFirstRun; var() config int MinPlayersToKick; var() config string LastUpdate; //var() Config string NexgenPackage; var() string DisableMapIndexNum,ServerIP; var() name MVTagName; var() config bool bSortMaplist; //File Log var() config bool bFileLog; var() config string LogFileHeading,LogTo; var bool bLogging; var string OpenedTime; var MV_SaveLog zzSavedLog; var int SortIndex,SortBIndex; var int TickSortCount; var bool bSortingMaplist,bReloadingMaps; const ListLimit = 256; 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"); if(DeathMatchPlus(Level.Game) != None) 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,xloop; local int Map; Debuglog("HandleServerEmpty() -> Entered"); CurrentMap=TmpNextVirtualPrefix $ "-" $ RemovePrefix(GetURLMap()); if ( InStr(CurrentMap,".") > -1 ) CurrentMap=Left(CurrentMap,InStr(CurrentMap,".")); do { i=GetRandomMap(); if(xloop++ > 100) break; }until(Left(MapList[i],3) != "[X]" && GetPureMapname(MapList[i]) != CurrentMap); MVLog(5,string(EmptyServerLevelSwitchTimeMins),CurrentMap,MapList[i]); /*$FIX Server getting stuck when a map failed to load. */ ForceServerTravel(MapList[i]); } function ForceServerTravel(string MapName, optional bool NoGameEnded) { bLevelSwitchPending=true; ServerTravelTime=Level.TimeSeconds; ServerTravelString=SetupGameMap(MapName); if ( !NoGameEnded ) SetTimer(1.00,true); } Event Timer() { local TournamentPlayer P; local PlayerPawn aPawn; local int VoterNum; local int NoVoteCount; local int MapNum; if ( bLevelSwitchPending ) { DebugLog("6"); if ( Level.TimeSeconds > ServerTravelTime + 4 ) { DebugLog("NextURL = " $ Level.NextURL); DebugLog("NextSwitchCountdown = " $ string(Level.NextSwitchCountdown)); if ( Level.NextURL == "" ) { DebugLog("7"); //Detects if server has crashed if ( Level.NextSwitchCountdown < 0 ) { if ( bRemoveCrashedMaps ) HandleFailedMap(TravelMap); MapNum=GetRandomMap(); MVLog(4,TravelMap,MapList[MapNum]); HistoryUtils(1,GetPureMapname(MapList[MapNum])); ServerTravelString=SetupGameMap(MapList[MapNum]); } // >> Switch Map MVEndFilelog(); Level.ServerTravel(ServerTravelString,False); } } return; } if ( ScoreBoardTime > 0 ) { DebugLog("8"); ScoreBoardTime--; if ( ScoreBoardTime == 0 ) { DebugLog("9"); EndGameTime=Level.TimeSeconds; //Players & Specs foreach AllActors(Class'PlayerPawn',aPawn) { if(aPawn != None && (aPawn.bIsPlayer || (aPawn.IsA('Spectator') && bAllowSpecvote && bSpecAutoOpen)) && aPawn.PlayerReplicationInfo != None) { VoterNum=FindPlayerIndex(aPawn.PlayerReplicationInfo.PlayerID,True); if ( VoterNum > -1 && PlayerVote[VoterNum] == 0 ) OpenVoteWindow(aPawn,bAllowSpecvote && bSpecAutoOpen); } } BroadcastMessage(string(TimeLeft) $ " seconds left to vote.",True); } return; } TimeLeft--; if ( TimeLeft == 60 ) { DebugLog("10"); BroadcastMessage("1 Minute left to vote.",True); foreach AllActors(Class'TournamentPlayer',P) { if(P != None) P.TimeMessage(12); } } if ( TimeLeft == 10 ) { DebugLog("11"); BroadcastMessage("10 seconds left to vote.",True); } if ( (TimeLeft <= 10) && (TimeLeft > 0) ) { foreach AllActors(Class'TournamentPlayer',P) { if(P != None) P.TimeMessage(TimeLeft); } } CleanUpPlayerIDs(); if ( (TimeLeft % 20 == 0) && (TimeLeft > 0) ) { DebugLog("12"); NoVoteCount=0; foreach AllActors(Class'PlayerPawn',aPawn) { if(aPawn != None && aPawn.bIsPlayer && aPawn.PlayerReplicationInfo != None) { VoterNum=FindPlayerIndex(aPawn.PlayerReplicationInfo.PlayerID,True); if ( VoterNum > -1 ) { if ( PlayerVote[VoterNum] == 0 ) NoVoteCount++; } } } 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 PlayerPawn Other; local int PlayerIndex; local WRI aWRI; if ( !bInitMapsLoaded ) { bInitMapsLoaded=True; if ( bReloadMapsOnRequestOnly ) LoadMapListConfig(); else GotoState('Loading'); } if ( GetLevelPlayers(true) > CurrentPlayerCount ) CurrentPlayerCount=GetLevelPlayers(true); if ( GetLevelPlayers(true) < CurrentPlayerCount ) { DebugLog("16b"); CurrentPlayerCount=GetLevelPlayers(true); DebugLog("CurrentPlayerCount decreased:" @ string(CurrentPlayerCount)); CleanUpPlayerIDs(); if ( GetLevelPlayers(true) > 0 ) { TallyVotes(False); UpdateOpenWRI(); } } if ( Level.Game.CurrentID > CurrentID ) { if ( JoinTickCount < 20 ) { if ( JoinTickCount == 0 ) DebugLog("15"); JoinTickCount++; return; } DebugLog("16"); JoinTickCount=0; foreach Allactors(Class'PlayerPawn',Other) { if(Other != None && Other.PlayerReplicationInfo != None && Other.PlayerReplicationInfo.PlayerID == CurrentID) break; } CurrentID++; if ( (Other == None) || !Other.bIsPlayer ) { DebugLog("17"); return; } DebugLog("new Player " $ Other.PlayerReplicationInfo.PlayerName $ ", " $ Other.GetPlayerNetworkAddress()); if ( bKickVote ) { DebugLog("18"); if ( CheckKickIP(Other.GetPlayerNetworkAddress()) ) { DebugLog("19a"); BroadcastMessage(Other.PlayerReplicationInfo.PlayerName $ " has been refused access to the server (1).",True); Other.Destroy(); return; } if ( CheckKickPlayer(Other.PlayerReplicationInfo.PlayerName) ) { DebugLog("19b"); BroadcastMessage(Other.PlayerReplicationInfo.PlayerName $ " has been refused access to the server (2).",True); Other.Destroy(); return; } TeamID=GetTeamID(Other); PID=Right("000" $ string(Other.PlayerReplicationInfo.PlayerID),3); PlayerName=string(TeamID) $ PID $ Other.PlayerReplicationInfo.PlayerName; DebugLog("20"); PlayerIndex=FindPlayerIndex(Other.PlayerReplicationInfo.PlayerID,True); AddNewPlayer(PlayerName,PlayerVote[PlayerIndex] >= 1); } if ( bEntryWindows && (!Other.IsA('Spectator') || (bSpecAutoOpen && bAllowSpecvote)) ) { DebugLog("21"); if ( Level.Game.IsA('Assault') && Assault(Level.Game).bDefenseSet ) { DebugLog("22"); return; } if ( Level.Game.bGameEnded ) { DebugLog("23"); if ( bAutoOpen ) OpenVoteWindow(Other,bAllowSpecvote); } else OpenWelcomeWindow(Other); } DebugLog("24"); } if(bSortingMaplist) { if(TickSortCount > 1) SortMapList(); else TickSortCount++; } } 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') || Level.Game.IsA('Domination')) return False; if ( !bCheckOtherGameTie ) { for(i=0;i<16;i++) { 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,MVTagName); else { if ( CustomGameClass.Default.MapPrefix ~= Level.Game.MapPrefix ) return False; } } } } if ( Level.Game.IsA('TeamGamePlus') ) { DebugLog("26"); for(i=0;i < TeamGamePlus(Level.Game).MaxTeams;i++) { if ( (Best == None) || (Best.Score < TeamGamePlus(Level.Game).Teams[i].Score) ) Best=TeamGamePlus(Level.Game).Teams[i]; } for(i=0;i < TeamGamePlus(Level.Game).MaxTeams;i++) { if ( (Best.TeamIndex != i) && (Best.Score == TeamGamePlus(Level.Game).Teams[i].Score) ) return True; } } else { DebugLog("27"); for(P=Level.PawnList;P != None;P=P.nextPawn) { if (P.bIsPlayer && P.PlayerReplicationInfo != None && (BestP == None || P.PlayerReplicationInfo.Score > BestP.PlayerReplicationInfo.Score)) BestP=P; } for(P=Level.PawnList;P != None;P=P.nextPawn) { if ( P.bIsPlayer && P.PlayerReplicationInfo != None && (BestP != P) && (P.PlayerReplicationInfo.Score == BestP.PlayerReplicationInfo.Score) ) return True; } } return False; } function ForceReload(PlayerPawn PP) { local MapVoteWRI MVWRI; foreach AllActors(Class'MapVoteWRI',MVWRI) { if (MVWRI != none && PP == MVWRI.Owner ) { MVWRI.ClientForceReload(); MVWRI.CloseWindow(); } } } function SubmitVote (string MapName, Actor Voter) { local int PlayerIndex; local int MapIndex; local string PID; DebugLog("28"); Log(PlayerPawn(Voter).PlayerReplicationInfo.PlayerName $ " has voted for " $ GetPureMapname(MapName),MVTagName); if ( bLevelSwitchPending || (Voter.IsA('Spectator') && !bAllowSpecvote) || Left(MapName,3) == "[X]") return; MapName=GetPureMapname(MapName); MapIndex=GetMapIndex(MapName); //Security Check: Check if the voter submited a valid map. if(MapIndex <= 0) { MVlog(1,MapName,PlayerPawn(Voter).PlayerReplicationInfo.PlayerName); BroadcastMessage(PlayerPawn(Voter).PlayerReplicationInfo.PlayerName $" tried to vote an unknown map!"); if(bClientCache) ForceReload(PlayerPawn(Voter)); return; } CleanUpPlayerIDs(); //Index PlayerIndex=FindPlayerIndex(PlayerPawn(Voter).PlayerReplicationInfo.PlayerID,True); if ( PlayerIndex == -1 || PlayerVote[PlayerIndex] == MapIndex || Left(MapList[MapIndex],3) == "[X]") return; if ( PlayerVote[PlayerIndex] <= 0 ) { PID=Right("000" $ string(PlayerPawn(Voter).PlayerReplicationInfo.PlayerID),3); UpdatePlayerVoted(PID); } PlayerVote[PlayerIndex]=MapIndex; switch(Mode) { case "Accumulation": DebugLog("29"); BroadcastMessage(PlayerPawn(Voter).PlayerReplicationInfo.PlayerName $ " has placed " $ string(GetAccVote(PlayerIndex)) $ " votes for " $ MapName,True); break; case "Score": BroadcastMessage(PlayerPawn(Voter).PlayerReplicationInfo.PlayerName $ " has placed " $ string(GetPlayerScore(PlayerIndex)) $ " votes for " $ MapName,True); break; default: 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 || (Voter.IsA('Spectator') && !bAllowSpecvote) || !bKickVote) return; CleanUpPlayerIDs(); VoterNum=FindPlayerIndex(PlayerPawn(Voter).PlayerReplicationInfo.PlayerID,True); if ( VoterNum == -1 || FindPlayerIndex(PlayerID,False) == -1 || PlayerKickVote[VoterNum] == FindPlayerIndex(PlayerID,False) ) return; for(aPawn=Level.PawnList;aPawn != None;aPawn=aPawn.nextPawn) { if ( aPawn.bIsPlayer && aPawn.PlayerReplicationInfo != None && (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,MVTagName); 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); } } } for(X=0;X<32;X++) { if ( PlayerKickVote[X] != -1 ) VoteCount[PlayerKickVote[X]]++; } Lamer=0; for(X=0;X<32;X++) { if ( VoteCount[X] > VoteCount[Lamer] ) Lamer=X; } if(!bDisableMV) // Just when debugging { if( (float(VoteCount[Lamer])/float(GetLevelPlayers(bAllowSpecvote)))*100 >= KickPercent) { DebugLog("31"); KickPlayer(PlayerIDList[Lamer],GetPlayerName(PlayerIDList[Lamer])); PlayerVote[Lamer]=0; VoteCount[Lamer]=0; PlayerKickVote[Lamer]=-1; PlayerIDList[Lamer]=-1; } } for(X=0;X<32;X++) { if ( VoteCount[X] > 0 ) KickStatusText[Y++]=GetPlayerName(PlayerIDList[X]) $ "," $ string(VoteCount[X]); } 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); for(aPawn=Level.PawnList;aPawn != None;aPawn=aPawn.nextPawn) { if ( aPawn.bIsPlayer && aPawn.PlayerReplicationInfo != None && (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(); } } aPawn.Destroy(); return; } } 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; } for(i=0;i<31;i++) { if ( KickIPList[i] == "" ) { KickIPList[i]=ShortIP; return; } } DebugLog("36"); } function AddKickName (string PlayerName) { local int i; local int P; local string ShortIP; DebugLog("35a" @ PlayerName); if ( PlayerName == "" ) return; for(i=0;i<31;i++) { if ( KickPlayerList[i] == "" ) { KickPlayerList[i]=PlayerName; return; } } 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; for(i=0;i<32;i++) { if ( KickIPList[i] == ShortIP ) return True; } DebugLog("38"); return False; } function bool CheckKickPlayer (string PlayerName) { local int i; local int P; DebugLog("37a" @ PlayerName); if ( PlayerName == "" ) return False; for(i=0;i<32;i++) { if ( KickPlayerList[i] == PlayerName ) return True; } DebugLog("38a"); return False; } function bool AlreadySpawned() { local BDBMapvote MV; foreach AllActors(Class'BDBMapvote',MV) { if(MV != Self) return true; } return false; } function PreBeginPlay () { local int X; local MapVoteWRI MVWRI; local EmptyServerLevelSwitch ESLS; local string defaultPrefix; if( AlreadySpawned() ) { log("[Warning] MV14XL Already spawned, destroying...",MVTagName); Destroy(); return; } log("#########################"); log("# Mapvote 14 XL #"); log("#########################"); DebugLog("39"); if ( !bInitialized ) { ServerIP = Level.GetAddressURL(); OpenedTime = TimeStamp(true); //Make sure it has an INI. if(!bFirstRun) { MVLog(7); bFirstRun = true; default.bFirstRun = bFirstRun; Saveconfig(); } if(bClientCache) { if(Mode ~= "Elimination") { bClientCache = false; default.bClientCache = bClientCache; SaveConfig(); MVLog(2,Mode); } else { if(RepeatLimit > 150) { RepeatLimit = 150; default.RepeatLimit = RepeatLimit; SaveConfig(); MVLog(3,string(RepeatLimit)); } } } //$ADD B6 UpdatePackages(); DebugLog("40"); for(x=0;x<32;x++) { PlayerIDList[X]=-1; PlayerKickVote[X]=-1; } 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"); } /* Checks if nexgen is in MatchMode function bool NexgenMatch() { local ReplicationInfo RPI; foreach AllActors(Class'ReplicationInfo',RPI) { if(RPI.IsA('NexgenConfig')) { debugLog("NexgenConfig Found!"); if(RPI.GetPropertyText("matchModeActivated") ~= "True") return true; } } return false; } */ function int GetLevelPlayers(bool bIncludeSpecs) { if(bIncludeSpecs) return (Level.Game.NumPlayers + Level.Game.NumSpectators); return Level.Game.NumPlayers; } function UpdatePackages() { local string S; S = Left(MapVoteHistoryType,InStr(MapVoteHistoryType,".")); if( S != MVVersion()) { //Set Default MapVoteHistoryType = MVVersion() $ ".MapVoteHistory1"; default.MapVoteHistoryType = MapVoteHistoryType; SaveConfig(); } } function string MVVersion() { local string S; //Get Client class. S = Left(string(class'MapVoteWRI'.Default.Class),InStr(string(class'MapVoteWRI'.Default.Class),".")); //S = Mid(S,0,Len(S) - 1); return S; } function Mutate (string MutateString, PlayerPawn Sender) { local string MapName; local string PlayerName; local int PlayerID; local int pos,seq; local MapVoteReport MVReport; local int ObjectCount; local MapVoteWRI MVWRI; local MapVoteHistory MVHistory; local int i,xloop; local string CustSetting; Super.Mutate(MutateString,Sender); if ( Left(Caps(MutateString),13) == "MAPVOTESTATUS" ) { DebugLog("49"); Sender.ClientMessage("+-----------------------------"); Sender.ClientMessage("| Version:"@MVVersion()); Sender.ClientMessage("| Mapvote Status:"@!bDisableMV); 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)); Sender.ClientMessage("| Cache mode is:"@bClientCache); if(bClientCache) Sender.ClientMessage("| DisableMapIndex:"@DisableMapIndexNum); Sender.ClientMessage("+-----------------------------"); return; } if ( Left(Caps(MutateString),10) == "BDBMAPVOTE" ) { DebugLog("42"); if ( Mid(Caps(MutateString),11,8) == "VOTEMENU" ) { DebugLog("43"); CleanUpPlayerIDs(); OpenVoteWindow(Sender,True); return; } if ( Mid(Caps(MutateString),11,3) == "RPT" ) { 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,15)),Sender,MapVoteHistoryClass); else Log("Failed to spawn MVReport",MVTagName); return; } //Vote if ( Mid(Caps(MutateString),11,3) == "MAP" ) { if(IsSpectator(Sender,true)) return; DebugLog("44"); MapName=Mid(MutateString,15); if ( Sender.bAdmin ) { MapName=GetPureMapname(MapName); if(GetMapIndex(MapName) <= 0) { MVLog(1,MapName,Sender.PlayerReplicationInfo.PlayerName); Sender.ClientMessage("[MV14] Submited map is invalid!"); if(bClientCache) ForceReload(Sender); return; } BroadcastMessage("[MV14] Server Admin has force a map switch to " $ MapName,True); CloseAllVoteWindows(); /*$FIX So that crashed maps gets logged and removed. Even if it's an Admin. */ ForceServerTravel(MapName); } else SubmitVote(MapName,Sender); return; } //KickVote if ( Mid(Caps(MutateString),11,4) == "KICK" ) { DebugLog("45"); if(IsSpectator(Sender,true)) return; PlayerName=Mid(MutateString,16); PlayerID=int(Mid(Left(PlayerName,4),2)); if ( Sender.bAdmin ) { if(PlayerID != Sender.PlayerReplicationInfo.PlayerID) KickPlayer(PlayerID,PlayerName); else Sender.clientMessage("[MV14] You are an Admin! You can't kick yourself..."); Log("Mapvote14: Admin: " $ Sender.PlayerReplicationInfo.PlayerName $ " kicked player:" @ PlayerName,MVTagName); } else { if ( bKickVote ) { if(GetLevelPlayers(bAllowSpecvote) >= MinPlayersToKick || MinPlayersToKick == 0 || bDisableMV) SubmitKickVote(PlayerID,Sender); else Sender.ClientMessage("Not enough players to KickVote. (>"$MinPlayersToKick$")"); } else Sender.ClientMessage("Kickvote is disabled"); } return; } //RandomVote if(Mid(Caps(MutateString),11,13) == "VOTERANDOMMAP") { if(IsSpectator(Sender,true)) return; do { i=GetRandomMap(true); if(xloop++ > 100) { Sender.ClientMessage("[MV14] Couldn't Get Random Map..."); return; } } until(MapList[i] != "" && Left(MapList[i],3) != "[X]") Sender.ClientMessage("[MV14] Random!"); SubmitVote(MapList[i],Sender); return; } //Manual Sort //$ADD B7 if ( Mid(Caps(MutateString),11,11) == "SORTMAPLIST" ) { if(!Sender.bAdmin) { Sender.ClientMessage("[MV14] You don't have permission to perform this function."); return; } log("[MV14] Admin -> "$Sender.PlayerReplicationInfo.PlayerName$" requested maps to be sorted.",MVTagName); SortMapList(); return; } //Reload Command if ( Mid(Caps(MutateString),11,10) == "RELOADMAPS" ) { DebugLog("46"); if ( Sender.bAdmin ) { DebugLog("47"); if(!bReloadingMaps) GotoState('Loading','BeginRequested'); else Sender.ClientMessage("[MV14] Server is busy, try later."); } return; } //List Crashed Maps if ( Mid(Caps(MutateString),11,15) == "LISTCRASHEDMAPS" ) { DebugLog("46a"); if ( Sender.bAdmin ) { Sender.ClientMessage("---------------------------------"); Sender.ClientMessage("Mapvote: Crashed Maps:"); for(i=0; i < ArrayCount(CrashedMaps) && CrashedMaps[i] != ""; i++) Sender.ClientMessage("["$i$"]:"@CrashedMaps[i]); if ( i == 0 ) Sender.ClientMessage("Mapvote: No maps crashed"); Sender.ClientMessage("---------------------------------"); } } //Clear Crashed Maps if ( Mid(Caps(MutateString),11,16) == "CLEARCRASHEDMAPS" ) { DebugLog("46a"); if ( Sender.bAdmin ) { for(i=0; i < ArrayCount(CrashedMaps) ; i++) CrashedMaps[i]=""; UpdateCacheTimeStamp(); SaveConfig(); Sender.ClientMessage("[MV14] Crashed Maplist Cleared!"); } } //Set Map Sequence if ( Mid(Caps(MutateString),11,6) == "SETSEQ" ) { DebugLog("50"); if ( Sender.bAdmin ) { MapName=Mid(MutateString,18); pos=InStr(MapName," "); if ( pos < 1 ) { Sender.ClientMessage("[MV14] Syntax Error"); return; } seq=int(Mid(MapName,pos + 1)); MapName=Left(MapName,pos); HistoryUtils(2,Mapname,seq); Sender.ClientMessage("[MV14] Sequence changed !"); } else { Sender.ClientMessage("[MV14] You must be a server admin to perform this fuction !"); } return; } //Set PlayCount if ( Mid(Caps(MutateString),11,5) == "SETPC" ) { DebugLog("51"); if ( Sender.bAdmin ) { MapName=Mid(MutateString,17); pos=InStr(MapName," "); if ( pos < 1 ) { Sender.ClientMessage("[MV14] Syntax Error"); return; } seq=int(Mid(MapName,pos + 1)); MapName=Left(MapName,pos); HistoryUtils(3,MapName,Seq); Sender.ClientMessage("[MV14] PlayCount changed !"); } else { Sender.ClientMessage("[MV14] You must be a server admin to perform this fuction !"); } return; } //Change Custom Settings if ( Mid(Caps(MutateString),11,11) == "CUSTSETTING" ) { DebugLog("45b"); if ( Sender.bAdmin ) { CustSetting=Mid(MutateString,23,16); DebugLog("New Custsetting:" @ CustSetting); for(i=0;i<16;i++) CustomGameConfig[i].bEnabled=bool(Mid(CustSetting,i,1)); SaveConfig(); } return; } //Resend server variables. if(Mid(Caps(MutateString),11,15) == "RESENDVARIABLES") { if(!bClientCache) { Sender.ClientMessage("[MV14] Cache mode is not enabled!"); return; } SendVariables(Sender); return; } //Send Maps to client. if(Mid(Caps(MutateString),11,11) == "REQUESTMAPS") { if(!bClientCache) { Sender.ClientMessage("[MV14] Cache mode is not enabled!"); return; } SendMaps(Sender); return; } //Disable Mapvote -- Debugging. if(Mid(Caps(MutateString),11,14) == "DISABLEMAPVOTE") { if ( !Sender.bAdmin ) { Sender.ClientMessage("[MV14] You are not allowed to use this function."); return; } bDisableMV = !bDisableMV; default.bDisableMV = bDisableMV; SaveConfig(); Sender.ClientMessage("+--------------------------"); Sender.ClientMessage("| Mapvote Status:"@!bDisableMV); Sender.ClientMessage("+--------------------------"); return; } } } //IsSpec function bool IsSpectator(PlayerPawn Sender,bool bFeedback) { if ( Sender.IsA('Spectator') && !Sender.bAdmin && !bAllowSpecvote) { if(bFeedback) Sender.ClientMessage("[MV14] Spectators are not allowed to vote."); return true; } return false; } //ClientCache functions function SendMaps(PlayerPawn Sender) { local MapVoteWRI ClientWRI; local int i; foreach AllActors(Class'MapVoteWRI',ClientWRI) { if ( Sender == ClientWRI.Owner ) { for(i=0;i Client Window not found!"); } //ResendVariables function SendVariables(PlayerPawn Sender) { local MapVoteWRI ClientWRI; foreach AllActors(Class'MapVoteWRI',ClientWRI) { if ( Sender == ClientWRI.Owner ) { ClientWRI.LastUpdate = LastUpdate; //ClientWRI.LastServer = Level.GetAddressURL(); ClientWRI.LastServer = ServerIP; ClientWRI.MapCount = MapCount; ClientWRI.DisableMapIndexNum = DisableMapIndexNum$"#END"; //log("Resended CacheVariables to that guy"); return; } } Sender.ClientMessage("[MV14] Couldn't find MapVoteWindow!"); } /*OPENMAPVOTE */ function OpenVoteWindow (PlayerPawn Sender, bool bSpecsAllowed) { local MapVoteWRI MVWRI; local int X,Y; local int PlayerCount; local int i; //local Pawn P; local PlayerPawn P; local MapVoteWRI A; local int TeamID; local string PID; local string CustState,StrTemp; local bool bMapStatusDone,bKickStatusDone; DebugLog("52: OpenVoteWindow()"); if (( Sender.IsA('Spectator') && !Sender.bAdmin && !bSpecsAllowed ) || 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",MVTagName); return; } //MVWRI.MapVoteMutator=self; MVWRI.List1Priority=List1Priority; MVWRI.List2Priority=List2Priority; MVWRI.List3Priority=List3Priority; MVWRI.List4Priority=List4Priority; MVWRI.MapCount=MapCount; if(!bClientCache) { for(i=0;i 0 ) StrTemp=StrTemp $ "&?&!&"; MVWRI.PlayerName[PlayerCount++] = StrTemp; } } for(X=0;(MapStatusText[X] != "") && (X < ArrayCount(MVWRI.MapVoteResults) - 1); x++) MVWRI.MapVoteResults[X]=MapStatusText[X]; MVWRI.MapVoteResults[X]=""; if ( bKickVote ) { DebugLog("55"); for(Y=0;KickStatusText[Y] != "" && Y < ArrayCount(MVWRI.KickVoteResults) - 1;Y++) MVWRI.KickVoteResults[Y]=KickStatusText[Y]; MVWRI.KickVoteResults[Y]=""; } //MVWRI.GetServerConfig(); SendServerConfig(MVWRI, Sender); DebugLog("56"); } function SendServerConfig(MapVoteWRI MVWRI, PlayerPawn P) { MVWRI.bKickVote = bKickVote; MVWRI.ScoreBoardDelay = ScoreBoardDelay; MVWRI.ServerInfoURL = ServerInfoURL; MVWRI.MapInfoURL = MapInfoURL; MVWRI.Mode = Mode; MVWRI.bEntryWindows = bEntryWindows; MVWRI.bDebugMode = bDebugMode; MVWRI.LogoTexture = LogoTexture; MVWRI.List1Title = List1Title; MVWRI.List2Title = List2Title; MVWRI.List3Title = List3Title; MVWRI.List4Title = List4Title; MVWRI.MapVoteTitle = MapVoteTitle; if(P.bAdmin) { Log("[MV14] Admin is logged in. Sending extra vars...",MVTagName); MVWRI.GameTypes = string(int(Class'BDBMapVote'.Default.bDM)) $ int(Class'BDBMapVote'.Default.bLMS) $ int(Class'BDBMapVote'.Default.bTDM) $ int(Class'BDBMapVote'.Default.bAS) $ int(Class'BDBMapVote'.Default.bDOM) $ int(Class'BDBMapVote'.Default.bCTF) $ "0"; MVWRI.ActGameClass = string(Level.Game.Class); MVWRI.ActGamePrefix = Level.Game.MapPrefix; MVWRI.bReloadMapsOnRequestOnly = bReloadMapsOnRequestOnly; MVWRI.MinMapCount = MinMapCount; MVWRI.bAutoDetect = bAutoDetect; MVWRI.KickPercent = KickPercent; MVWRI.bUseMapList = bUseMapList; MVWRI.bAutoOpen = bAutoOpen; MVWRI.VoteTimeLimit = VoteTimeLimit; MVWRI.bCheckOtherGameTie = bCheckOtherGameTie; MVWRI.MapVoteHistoryType = MapVoteHistoryType; MVWRI.MidGameVotePercent = MidGameVotePercent; MVWRI.bSortWithPreFix = bSortWithPreFix; MVWRI.bRemoveCrashedMaps = bRemoveCrashedMaps; MVWRI.bClientCache = bClientCache; MVWRI.ASClass = ASClass; MVWRI.bUseExcludeFilter = bUseExcludeFilter; } } function int GetTeamID(PlayerPawn PP) { if ( PP.IsA('Spectator') ) return 9; if ( PP.PlayerReplicationInfo.Team == 255 ) return 4; return PP.PlayerReplicationInfo.Team; } 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",MVTagName); return; } //MVWWRI.GetServerConfig(); WWSendServerConfig(MVWWRI, Sender); DebugLog("58"); } function WWSendServerConfig(MVWelcomeWRI MVWWRI, PlayerPawn P) { MVWWRI.ServerInfoURL = ServerInfoURL; MVWWRI.MapInfoURL = MapInfoURL; } function int FindPlayerIndex (int PlayerID, bool bAddIfNotFound) { local int X; DebugLog("59"); for(X=0;X<32;X++) { if ( PlayerIDList[X] == PlayerID ) return X; } if ( bAddIfNotFound ) { DebugLog("59b"); for(X=0;X<32;X++) { if ( PlayerIDList[X] == -1 ) { PlayerIDList[X]=PlayerID; return X; } } } Log("Mapvote: Could not find PlayerIndex "$PlayerID$". Already left?",MVTagName); 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 PlayerPawn aPawn; local int X; local bool bFound; DebugLog("64"); for(X=0;X<32;X++) { if ( PlayerIDList[X] > -1 ) { bFound=False; // Reset foreach AllActors(Class'PlayerPawn',aPawn) { if ( aPawn != None && aPawn.bIsPlayer && aPawn.PlayerReplicationInfo != None && aPawn.PlayerReplicationInfo.PlayerID == PlayerIDList[X] ) { bFound=True; break; // Why continue, we found him. } } 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; } } } DebugLog("65"); } function string GetPlayerName (int PlayerID) { local PlayerPawn aPawn; local string PlayerName; DebugLog("66"); PlayerName="unknown"; foreach AllActors(Class'PlayerPawn',aPawn) { if(aPawn != None && aPawn.bIsPlayer && aPawn.PlayerReplicationInfo != None) { if ( aPawn.PlayerReplicationInfo.PlayerID == PlayerID ) { PlayerName=Right("000" $ string(PlayerID),3) $ aPawn.PlayerReplicationInfo.PlayerName; break; } } } return PlayerName; } function float GetPlayerScore (int PlayerIndex) { local PlayerPawn aPawn; local float PlayerScore; DebugLog("67"); foreach AllActors(Class'PlayerPawn',aPawn) { if(aPawn != None && aPawn.bIsPlayer && aPawn.PlayerReplicationInfo != None) { if ( aPawn.PlayerReplicationInfo.PlayerID == PlayerIDList[PlayerIndex] ) { PlayerScore = aPawn.PlayerReplicationInfo.Score; break; } } } if ( PlayerScore < 1 ) PlayerScore=1.00; return PlayerScore; } function int GetAccVote (int PlayerIndex) { local PlayerPawn aPawn; local int X; local int PlayerAccVotes; local string PlayerName; DebugLog("68"); foreach AllActors(Class'PlayerPawn',aPawn) { if(aPawn != None && aPawn.bIsPlayer && aPawn.PlayerReplicationInfo != None) { if ( aPawn.PlayerReplicationInfo.PlayerID == PlayerIDList[PlayerIndex] ) { PlayerName=aPawn.PlayerReplicationInfo.PlayerName; break; } } } if ( PlayerName == "" ) return 0; for(X=0;X<32;X++) { if ( AccName[X] == PlayerName ) PlayerAccVotes=AccVotes[X]; } if ( PlayerAccVotes > 0 ) return PlayerAccVotes; for(X=0;X<32;X++) { if ( AccName[X] == "" ) { AccName[X]=PlayerName; AccVotes[X]=1; } } DebugLog("69"); return 1; } function SaveAccVotes (int WinningMapIndex) { local PlayerPawn aPawn; local int X; local bool bFound; DebugLog("70"); for(X=0;X<32;X++) { if ( AccName[X] != "" ) { bFound=False; foreach AllActors(Class'PlayerPawn',aPawn) { if(aPawn != None && aPawn.bIsPlayer && aPawn.PlayerReplicationInfo != None) { if ( AccName[X] == aPawn.PlayerReplicationInfo.PlayerName ) { if ( PlayerVote[FindPlayerIndex(aPawn.PlayerReplicationInfo.PlayerID,False)] != WinningMapIndex ) { bFound=True; AccVotes[X]++; } } } } if ( !bFound ) { AccName[X]=""; AccVotes[X]=0; } } } for(X=0;X<32;X++) { Class'BDBMapVote'.Default.AccName[X] =AccName[X]; Class'BDBMapVote'.Default.AccVotes[X]=AccVotes[X]; } 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[2048]; local int Ranking[32]; local int PlayersThatVoted; local int TieCount; local string GameType; local string CurrentMap; local int i; local int textline; local int PlayersLeftToVote; DebugLog("72"); if ( bLevelSwitchPending ) return; PlayersThatVoted=0; for(X=0;X<32;X++) { if ( PlayerVote[X] != 0 ) { PlayersThatVoted++; switch(Mode) { case "Score": VoteCount[PlayerVote[X]]+= GetPlayerScore(X); break; case "Accumulation": VoteCount[PlayerVote[X]]+= GetAccVote(X); break; //case "Elimination": //case "Majority": default: VoteCount[PlayerVote[X]] += GetMapPriority(MapList[PlayerVote[X]]); break; } DebugLog("PlayerVote[x]:" @ string(PlayerVote[X])); DebugLog("VoteCount[PlayerVote[x]]:" @ string(VoteCount[PlayerVote[X]])); } } if(!Level.Game.bGameEnded && !bMidGameVote && (float(PlayersThatVoted) / float(GetLevelPlayers(bAllowSpecvote))) * 100 >= MidGameVotePercent) { DebugLog("73"); BroadcastMessage("Mid-Game Map Voting has been initiated !!!!"); bMidGameVote=True; TimeLeft=VoteTimeLimit; ScoreBoardTime=1; SetTimer(1.00,True); } Index=0; for(X=1;X<=MapCount;X++) { if ( VoteCount[X] > 0 ) Ranking[Index++]=X; } for(X=0;X < Index-1;X++) { for(Y=X + 1;Y < Index;Y++) { if ( VoteCount[Ranking[X]] < VoteCount[Ranking[Y]] ) { topmap=Ranking[X]; Ranking[X]=Ranking[Y]; Ranking[Y]=topmap; } } } PlayersLeftToVote=GetLevelPlayers(bAllowSpecvote) - PlayersThatVoted; DebugLog("NumPlayer:" $ string(GetLevelPlayers(bAllowSpecvote)) @ "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; } } for(X=0;X -1 ) { CurrentMap=Left(CurrentMap,InStr(CurrentMap,".")); } for(X=0;RemovePrefix(GetPureMapname(MapList[topmap])) ~= CurrentMap;X++) { topmap=Ranking[Rand(TieCount)]; if(X + 1 > 20) break; } } else { DebugLog("75"); topmap=Ranking[0]; } if(bDisableMV) return; if ( bForceMapSwitch ) { if ( (PlayersThatVoted == 0) || (GetLevelPlayers(bAllowSpecvote) == 0) ) { log("Noone voted, choosing a random map...",MVTagName); BroadcastMessage("Noone voted, choosing a random map...",True); topmap=GetRandomMap(); } } if ( bForceMapSwitch || (GetLevelPlayers(bAllowSpecvote) == 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!"); log(GetPureMapname(MapList[topmap]) $ " has won.",MVTagName); BroadcastMessage(GetPureMapname(MapList[topmap]) $ " has won.",True); CloseAllVoteWindows(); ForceServerTravel(MapList[topmap],Level.Game.bGameEnded); if (!(PlayersThatVoted == 0 || GetLevelPlayers(bAllowSpecvote) == 0)) HistoryUtils(1,GetPureMapname(MapList[topmap])); if ( Mode == "Elimination" ) { RepeatLimit++; default.RepeatLimit = RepeatLimit; Saveconfig(); } else if ( Mode == "Accumulation" ) SaveAccVotes(topmap); } DebugLog("77"); } function HistoryUtils(int Num,optional string MapName, optional int I) { local MapVoteHistory History; History=Spawn(MapVoteHistoryClass); switch (Num) { case 1: History.AddMap(MapName); break; case 2: History.SetMapSequence(MapName,I); break; case 3: History.SetPlayCount(MapName,I); break; } History.Save(); History.Destroy(); } function UpdateOpenWRI () { local MapVoteWRI MVWRI; local int X; local int Y; DebugLog("78"); foreach AllActors(Class'MapVoteWRI',MVWRI) { MVWRI.UpdateMapVoteResults("Clear",0); for(X=0;(MapStatusText[X] != "") && (X < ArrayCount(MapStatusText) - 1);X++) MVWRI.UpdateMapVoteResults(MapStatusText[X],X); MVWRI.UpdateMapVoteResults("",X); MVWRI.UpdateKickVoteResults("Clear",0); if ( bKickVote ) { for(Y=0;(KickStatusText[Y] != "") && (Y < ArrayCount(KickStatusText) - 1);Y++) MVWRI.UpdateKickVoteResults(KickStatusText[Y],Y); } MVWRI.UpdateKickVoteResults("",Y); } DebugLog("79"); } function SortMapList() { if(!bSortingMaplist) { bSortingMaplist = true; log("[MV14] Sorting Maplist...",MVTagName); BroadcastMessage("[MV14] Sorting Maplist...",true); BroadcastMessage("[MV14] Please stand by.",true); return; // Make sure message is displayed first. } Debuglog("Sorting Maplist, Ticks: "$ TickSortCount); if(SortIndex != MapCount) //xSortMapList(SortIndex, Clamp(SortIndex + 512, 0, MapCount)); xxSortMapList(SortIndex,SortBIndex); else { //Reset vars bSortingMaplist = false; SortIndex = 0; SortBIndex = 0; BroadcastMessage("[MV14] Maplist has been sorted.",true); GotoState('Loading','Sorted'); } TickSortCount = 0; } function xxSortMapList (Out int A,out int B) { local string TempMapName; local string AMap; local string BMap; local string AMapPre; local string BMapPre; local int xIterations; DebugLog("80"); DebugLog("---------------------"); DebugLog("Starting A Index-> "$ A); DebugLog("Starting B Index-> "$ B); DebugLog("-"); //Just the first time. if(A <= 0) A = 1; if(B <= 0) B = A + 1; while( A < MapCount ) { while(B <= MapCount) { AMap = Caps(GetPureMapname(MapList[A],true)); BMap = Caps(GetPureMapname(MapList[B],true)); AMap=Right(AMap,1) $ AMap; BMap=Right(BMap,1) $ BMap; AMapPre=AMap; BMapPre=BMap; if (!bSortWithPreFix) { AMap=Mid(AMap,InStr(AMap,"-") + 1); BMap=Mid(BMap,InStr(BMap,"-") + 1); } if ( AMap >= BMap ) { if ( AMap == BMap && AMapPre <= BMapPre) continue; TempMapName=MapList[A]; MapList[A]=MapList[B]; MapList[B]=TempMapName; } B++; if(++xIterations > 150000) { return; DebugLog("Last A Index-> "$ A); DebugLog("Last B Index-> "$ B); } } if(B > MapCount) { A++; B = A + 1; } } DebugLog("Last A Index-> "$ A); DebugLog("Last B Index-> "$ B); } /* function xSortMapList (Out int A,int C) { //local int A; local int B; local string TempMapName; local string AMap; local string BMap; local string AMapPre; local string BMapPre; DebugLog("80"); DebugLog("Starting Index-> "$ A); A--; if(A <= 0) A = 1; for(AMap = ""; A < C; A++) { for(B=A + 1; B <= MapCount; B++) { AMap = Caps(GetPureMapname(MapList[A],true)); BMap = Caps(GetPureMapname(MapList[B],true)); AMap=Right(AMap,1) $ AMap; BMap=Right(BMap,1) $ BMap; AMapPre=AMap; BMapPre=BMap; if (!bSortWithPreFix) { AMap=Mid(AMap,InStr(AMap,"-") + 1); BMap=Mid(BMap,InStr(BMap,"-") + 1); } if ( AMap >= BMap ) { if ( AMap == BMap && AMapPre <= BMapPre) continue; TempMapName=MapList[A]; MapList[A]=MapList[B]; MapList[B]=TempMapName; } } } DebugLog("Last Index-> "$ A); } */ function bool IsCrashedMap (string MapName) { local int j; MapName=GetPureMapname(MapName); for(j=0; j < ArrayCount(CrashedMaps) && CrashedMaps[j] != ""; j++) { if ( MapName ~= CrashedMaps[j] ) { DebugLog("Map found in crashed map list:" @ MapName); return True; } } return False; } function string CreateMapnameIncludingListnumber (string mapnameX) { local string MapName; local bool locked; local int j; local string strFilter; local int ListNum; if ( Left(mapnameX,3) ~= "[X]" ) { //MapName=GetPureMapname(mapnameX); locked=True; } MapName = GetPureMapname(mapnameX); if ( bRemoveCrashedMaps && IsCrashedMap(MapName) ) return ""; if ( bUseExcludeFilter ) { for(j=0;j < ArrayCount(ExcludeFilter) && ExcludeFilter[j] != "";j++) { if ( MatchFilter(MapName,ExcludeFilter[j]) ) { DebugLog("Excluded Map:" @ MapName); return ""; } } } for(j=0;j < ArrayCount(List1Filter);j++) { //List1 if (List1Filter[j] != "" && (MatchFilter(MapName,List1Filter[j]) || bAutoDetect) ) { if ( !bList1ObeyRepeatLimit && locked ) mapnameX=MapName; if(List1Filter[j] > strFilter) { strFilter = List1Filter[j]; ListNum = 1; } } //List2 if (List2Filter[j] != "" && MatchFilter(MapName,List2Filter[j]) ) { if ( !bList2ObeyRepeatLimit && locked ) mapnameX=MapName; if(List2Filter[j] > strFilter) { strFilter = List2Filter[j]; ListNum = 2; } } //List3 if (List3Filter[j] != "" && MatchFilter(MapName,List3Filter[j]) ) { if ( !bList3ObeyRepeatLimit && locked ) mapnameX=MapName; if(List3Filter[j] > strFilter) { strFilter = List3Filter[j]; ListNum = 3; } } //List4 if (List4Filter[j] != "" && MatchFilter(MapName,List4Filter[j]) ) { if ( !bList4ObeyRepeatLimit && locked ) mapnameX=MapName; if(List4Filter[j] > strFilter) { strFilter = List4Filter[j]; ListNum = 4; } } } if(strFilter != "") return mapnameX $ ":" $ ListNum; return ""; } function int GetMapListNumber (string MapName) { return int(Right(MapName,1)); } function float GetMapPriority (string MapName) { if ( MapName == "" ) return 0.00; switch(GetMapListNumber(MapName)) { case 1: return List1Priority; case 2: return List2Priority; case 3: return List3Priority; case 4: return List4Priority; } Log("ERROR: GetMapPriority(): Mapname has no Priority attached:" @ MapName,MVTagName); return 1.00; } function string GetPureMapname (string MapName,optional bool bIncludeList) { if ( Left(MapName,3) ~= "[X]" ) MapName=Mid(MapName,3); if(!bIncludeList && 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; switch(Right(Filter,1)) { case "*": if(Left(Filter,1) == "*") { modFilter=Mid(Filter,1,Len(Filter) - 2); if ( InStr(Caps(Map),Caps(modFilter)) >= 0 ) return True; } modFilter=Mid(Filter,0,Len(Filter) - 1); if ( Left(Map,Len(modFilter)) ~= modFilter ) return True; break; case "-": if ( Left(Map,Len(Filter)) ~= Filter ) return True; break; } 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; } } for(i=0;i<16;i++) { 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,MVTagName); } 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; } } } } } TravelMap=MapName; switch(Left(Caps(MapName),2)) { case "DM": GameType="BotPack.DeathMatchPlus"; break; case "AS": GameType=ASClass; break; } switch(Left(Caps(MapName),3)) { case "LMS": GameType="BotPack.LastManStanding"; MapName="DM" $ Mid(MapName,3); break; case "TDM": GameType="BotPack.TeamGamePlus"; MapName="DM" $ Mid(MapName,3); break; case "DOM": GameType="BotPack.Domination"; break; case "CTF": GameType="BotPack.CTFGame"; break; } TmpNextRealPrefix=GetPrefix(MapName); DebugLog("NextRealPrefix:" @ TmpNextRealPrefix); SaveConfig(); return MapName $ ".unr?game=" $ GameType; } function MapvoteHistory SpawnHistory() { local MapVoteHistory History; MapVoteHistoryClass=Class(DynamicLoadObject(MapVoteHistoryType,Class'Class')); History=Spawn(MapVoteHistoryClass); if ( History == None ) { DebugLog("89"); //MapVoteHistoryClass=Class(DynamicLoadObject("Mapvote14XL_B7F.MapVoteHistory1",Class'Class')); MapVoteHistoryClass=Class(DynamicLoadObject(MVVersion() $ ".MapVoteHistory1",Class'Class')); History=Spawn(MapVoteHistoryClass); } return History; } function LoadMapListConfig () { local MapListTemp TempList; local MapVoteHistory History; local string MapName; local int j,i; DebugLog("Loading Maplist from file..."); History=SpawnHistory(); MapList[0]=""; j=1; // Reset them; for(i=1;i <= Class'MapListTemp'.Default.MapCount;i++) { MapName=Class'MapListTemp'.Default.M[i]; if ( History.GetMapSequence(GetPureMapname(MapName)) <= RepeatLimit ) MapName="[X]" $ MapName; if ( !(bRemoveCrashedMaps && IsCrashedMap(MapName)) ) { if(bClientCache && Left(MapName,3) ~= "[X]") DisableMapIndexNum=DisableMapIndexNum$"-"$j$"-"; MapList[j++]=MapName; } } MapCount=j - 1; PrefixDictionary=Class'MapListTemp'.Default.PrefixDictionary; DebugLog("Loading Maplist finished:" @ string(MapCount)); History.Destroy(); } function SaveMapListConfig () { local int i; local MapListTemp List; local MapListCache Cache; DebugLog("Storing Maplist to file..."); List = Spawn(Class'MapListTemp'); List.MapCount=MapCount; List.M[0]=""; for(i=1;i < ArrayCount(MapList); i++) { if(i <= Mapcount ) List.M[i] = GetPureMapName(MapList[i],true); else List.M[i]=""; } List.PrefixDictionary = PrefixDictionary; List.SaveConfig(); List.Destroy(); DebugLog("Storing Maplist to file finished:" @ string(MapCount)); } function UpdatePrefixes () { local int i; local string defaultPrefix; PrefixDictionary=""; for(i=0;i<16;i++) { 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 $ ";"; } } } DebugLog("PrefixDictionary:" @ PrefixDictionary); } function String TimeStamp(optional bool NoSpecialChars) { if(!NoSpecialChars) return (Level.day$"."$Level.month$"."$Level.year$" "$Level.hour$":"$Level.minute$":"$Level.second); else return (Level.day$"."$Level.month$"."$Level.year$"_"$Level.hour$"_"$Level.minute$"_"$Level.second); } function UpdateCacheTimeStamp() { LastUpdate = TimeStamp(); default.LastUpdate = LastUpdate; saveconfig(); } function ResetMaps() { local int i; MapCount=0; //$CHANGED for(i=0;i(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 ) CustomConfigloading(); History.Destroy(); if ( Mode == "Elimination" ) { if ( (MapCount < MinMapCount) || (MapCount == 0) && (RepeatLimit > 0) ) { RepeatLimit=0; GotoState('Loading'); } } /*$READDED B7 */ if(bSortMaplist) { SortMapList(); GotoState(''); } Sorted: /*$FIX 'B4' */ if(bClientCache) { RefreshDisableIndex(); UpdateCacheTimeStamp(); } Log("[MV14] Maps Reloaded. Total Maps = " $ string(MapCount),MVTagName); if ( bMapReloadRequested ) { BroadcastMessage("[MV14] MapVote configuration has been changed, Re-Open Voting window for updates.",True); bMapReloadRequested=false; } if ( bReloadMapsOnRequestOnly ) SaveMapListConfig(); bReloadingMaps = false; } function CustomConfigloading() { local int i; 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,MVTagName); } 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); } } } function RefreshDisableIndex() { local int i,j; //Clear first DisableMapIndexNum = ""; for(i=1;i<=MapCount;i++) { if(MapList[i] == "" || j >= RepeatLimit) break; if( Left(MapList[i],3) ~= "[X]") { Debuglog("Disabled Map:"@MapList[i]); DisableMapIndexNum = DisableMapIndexNum$"-"$i$"-"; j++; } } } 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, NoFilterCount; 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("Default CTF Detected"); } FirstMap=Level.GetMapName(Prefix,"",0); NextMap=FirstMap; while ( !(FirstMap~=TestMap) ) { if ( MapCount >= ArrayCount(MapList) - 1 ) 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; DebugLog("Loading Map[" $ string(MapCount) $ "]:" @ FilteredMap); } else { if(!IsCrashedMap(MapName)) { DebugLog("Map ignored because no filter matches:" @ GetPureMapname(MapName)); NoFilterCount++; } } } } } NextMap=Level.GetMapName(Prefix,NextMap,1); TestMap=NextMap; } if ( ignoreCount > 0 ) { Log("[MV14] [Information] Ignored" @ string(ignoreCount) @ "Maps with Prefix" @ Prefix @ "cause mapcount > "@ArrayCount(MapList)-1,MVTagName); } if(NoFilterCount > 0) Log("[MV14] [Information] Ignored"@ NoFilterCount @ "maps because no filter matches."); } 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 ) { for (X=0; X < ArrayCount(MapCycleList.Maps) && MapCycleList.Maps[X] != ""; 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 != "" ) { MapList[++MapCount]=FilteredMap; DebugLog("Loading Map[" $ string(MapCount) $ "]" @ FilteredMap); } else DebugLog("Map ignored cause no filter matches:" @ GetPureMapname(MapName)); } MapCycleList.Destroy(); } else Log("MapListCycle spawn failed",MVTagName); } function DebugLog (string Msg) { if ( bDebugMode ) Log("[MV14] [DEBUG] " $ Msg,MVTagName); } function int ResetAssault () { local int CurrentDefender; if ( Level.Game.IsA('Assault') ) { if ( GetWinningTeam() != -1 ) { Log("BDBMapVote: Team " $ string(GetWinningTeam()) $ " won the round.",MVTagName); if ( GetWinningTeam() == 1 ) CurrentDefender=0; else CurrentDefender=1; Log("BDBMapVote: Setting Team " $ string(CurrentDefender) $ " as the defending team for the next map.",MVTagName); } 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; if ( !Assault(Level.Game).bTiePartOne ) return Assault(Level.Game).Defender.TeamIndex; } return -1; } function int GetMapIndex (string MapName) { local int MapIndex; if(MapName == "") return 0; MapName=GetPureMapname(MapName); for(MapIndex=1; MapIndex <= MapCount; MapIndex++) { if ( GetPureMapname(MapList[MapIndex]) ~= MapName ) return MapIndex; } } function int GetRandomMap (optional bool ForceRandom) { local int randmap,RandList,security,Temp; local int xLoop; ForceRandom = ForceRandom || bForceRandomSwitch || MapListIfNooneVoted == 0; if(ForceRandom) RandList=Clamp(Rand(5),1,4); else RandList=MapListIfNooneVoted; do { randmap = CLAMP(Rand(MapCount) + 1,0,ArrayCount(MapList)); if(xloop++ > 100) { DebugLog("| Error: GetRandomMap() failed for List" @ RandList); if(Security++ >= 2) { log("| Error: GetRandomMap() failed -> Forced exit",MVTagName); break; } RandList=Clamp(Rand(5),1,4); xloop = 0; } }until(MapList[randmap] != "" && GetMapListNumber(MapList[randmap]) == RandList); if(bDebugMode) MVLog(6,string(RandList),string(randmap),MapList[randmap]); return randmap; } function HandleFailedMap (string MapName) { local int i; MapName=GetPureMapname(MapName); DebugLog("Crashed map:" @ MapName); for(i=0; i < ArrayCount(CrashedMaps) && CrashedMaps[i] != "";i++) { if ( CrashedMaps[i] == MapName ) return; } CrashedMaps[i]=MapName; /*$FIX B4 */ UpdateCacheTimeStamp(); 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 ( TmpNextVirtualPrefix != "" && TmpNextRealPrefix == ActualPrefix ) { ActualPrefix=TmpNextVirtualPrefix; DebugLog("MapVote: Prefix OK. Mapchange seems to have been successful"); } if ( DefaultSettings != "" ) ExecString(DefaultSettings); for(i=0;i<16;i++) { if ( CustomGameConfig[i].bEnabled ) { TestPrefix=CustomGameConfig[i].NewPrefix; if ( ActualPrefix ~= TestPrefix ) { if ( CustomGameConfig[i].Mutators != "" ) ExecString(CustomGameConfig[i].Mutators,true); if ( CustomGameConfig[i].Settings != "" ) ExecString(CustomGameConfig[i].Settings); } } } } function ExecString(string MutSTR,optional bool bActorMut) { local string TmpSTR,TMP2; local int pos; TmpStr = MutStr; while(Len(TmpStr) > 0) { if(InStr(TmpStr,";") < 0) pos=InStr(TmpStr,","); if(pos < 0) { TMP2 = TmpStr; TmpStr=""; } else { TMP2 = left(TmpStr,pos); TmpStr=Mid(TmpStr,pos + 1); } if(bActorMut) StartActorMutator(TMP2); else ExecuteSetting(TMP2,False); } } function StartActorMutator (string ClassString) { local Actor A; local Class ActorClass; Log("[Info] Starting Mutator:" @ ClassString,MVTagName); ActorClass=Class(DynamicLoadObject(ClassString,Class'Class')); if ( ActorClass == None ) { Log("[Critical] Starting Actor/Mutator FAILED. Could not DynamicLoadObject:" @ ClassString,MVTagName); return; } foreach AllActors(ActorClass,A) { Log("[Warning] Actor already spawned:" @ ClassString,MVTagName); return; } A=Spawn(ActorClass); if ( A == None ) { Log("[Critical] Spawning Actor/Mutator FAILED:" @ ClassString,MVTagName); 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("[Info] Executing DEFAULT Settings:" @ Setting $ ". Property:" @ Property $ ". Value:" @ Value,MVTagName); } else { Log("[Info] Executing Settings:" @ Setting $ ". Property:" @ Property $ ". Value:" @ Value,MVTagName); } 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; 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); } return Prefix; } function string RemovePrefix (string MapName) { return Mid(MapName,InStr(MapName,"-") + 1); } function MVLog(int Case,optional String str1,optional string str2, optional string str3) { log("+----------------------------------------------------------------+" ,MVTagName); switch(Case) { case 1: log("| Warning!" ,MVTagName); log("| Received unknown map vote:\""$ str1 $ "\"" ,MVTagName); log("| "$ str2 $ " voted for an unknown map!" ,MVTagName); break; case 2: log("| Information: " ,MVTagName); log("| Cache mode doesn't work with \""$ str1 $"\" voting mode." ,MVTagName); log("| Cache mode was auto disabled. Re-Enable it when you change the voting mode." ,MVTagName); break; case 3: log("| Information: " ,MVTagName); log("| Repeat limit on Cache mode exceeds the limit. (>"$str1$")" ,MVTagName); log("| Auto-Changed RepeatLimit to \""$ str1 $"\"" ,MVTagName); break; case 4: xxlog("| Warning!" ,MVTagName,Str1); xxlog("| Map:"@Str1 ,MVTagName); xxlog("| Map change failed: bad or missing files." ,MVTagName); xxlog("| Redirecting server to map:"@Str2 ,MVTagName); break; case 5: log("| Information:" ,MVTagName); log("| Server was empty for" @ Str1 @ "minutes." ,MVTagName); log("| Actual Map is:" @ Str2 ,MVTagName); log("| Switching to :" @ Str3 ,MVTagName); break; case 6: log("| GetRandomMap():" ,MVTagName); log("| List:" @ Str1 @ "MapNum:"@Str2 ,MVTagName); log("| Map name:" @ Str3 ,MVTagName); break; case 7: log("| Warning!:" ,MVTagName); log("| No configuration file (.ini) detected." ,MVTagName); log("| Creating new one..." ,MVTagName); break; default: log("| "$ self $ ".MVlog() accessed case out of bounds" ,MVTagName); break; } log("+----------------------------------------------------------------+" ,MVTagName); } function xxLog(string s, optional name tag, optional string str) { log(s,tag); if(!bFileLog) return; // Has logging started? If not, then enable if(!bLogging) xStartLog(str); if(zzSavedLog != none) zzSavedLog.LogEventString(s); } function xStartLog(optional string str1) { // Open the external log zzSavedLog = spawn(class'MV_SaveLog'); if (zzSavedLog != None) { zzSavedLog.zzLR = Self; if(str1 != "") zzSavedLog.xstr = str1; zzSavedLog.StartLog(); bLogging=True; } } function MVEndFilelog() { if(!bFilelog || !bLogging || zzSavedLog == none) return; zzSavedLog.StopLog(); zzSavedLog.Destroy(); zzSavedLog = None; bLogging=False; } e§/*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS AdminWindow * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by: Cratos (cratos@gmx.at) * More Enhancements: =(V)=Mar * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ 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; var UWindowCheckbox cbClientCache; function Created () { local Color C; local int i; local int gap; local float XL,YL,WL,HL,xGap; Super.Created(); DesiredWidth=600.00; DesiredHeight=500.00; gap=14; xGap=-5; lblGameTypeSection=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',10.00,10.00,90.00,20.00)); lblGameTypeSection.SetText("Visual Config"); //XL=440; YL=30; WL=60; //XL=WinWidth - (WL + 163); XL=660 - (WL + 163); HL=20; lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,WL,HL)); lblTemp.SetText("Auto Detect"); //XL=420; YL=30; WL=20; XL-= WL; cbAutoDetect=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',XL,YL,WL,HL)); cbAutoDetect.bAcceptsFocus=False; YL+=HL+xGap; cbLoadDM=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',XL,YL,WL,HL)); XL+=20; lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,60.00,20.00)); lblTemp.SetText("DM"); XL-=20; YL+=HL+xGap; cbLoadTDM=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',XL,YL,20.00,20.00)); XL+=20; lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,60.00,20.00)); lblTemp.SetText("TDM"); XL-=20; YL+=HL+xGap; cbLoadLMS=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',XL,YL,20.00,20.00)); XL+=20; lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,60.00,20.00)); lblTemp.SetText("LMS"); XL-=20; YL+=HL+xGap; cbLoadCTF=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',XL,YL,20.00,20.00)); XL+=20; lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,60.00,20.00)); lblTemp.SetText("CTF"); XL-=20; YL+=HL+xGap; cbLoadDOM=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',XL,YL,20.00,20.00)); XL+=20; lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,60.00,20.00)); lblTemp.SetText("DOM"); XL-=20; YL+=HL+xGap; cbLoadAS=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',XL,YL,20.00,20.00)); XL+=20; lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,130.00,20.00)); lblTemp.SetText("Assault:"); XL+=40; txtASClass=UWindowEditControl(CreateControl(Class'UWindowEditControl',XL,YL,140.00,20.00)); txtASClass.SetNumericOnly(False); txtASClass.EditBoxWidth=140.00; XL-=60; for(i=0;i<16;i++) { if(i!=0) XL-=20; YL+=HL+xGap; cbCustGame[i]=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',XL,YL,20.00,20.00)); XL+=20; lblCustGame[i]=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,200.00,20.00)); lblCustGame[i].SetText("empty"); } //==================================== XL-=20; YL+=HL+xGap; cbUseExcludeFilter=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',XL,YL,20.00,20.00)); XL+=20; lblTemp=UMenuLabelControl(CreateControl(Class'UMenuLabelControl',XL,YL,170.00,20.00)); lblTemp.SetText("Use Exclude Filter"); XL-=15; YL+=(HL*1.5)+xGap; //RemoteSaveButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',425.00,400.00,190.00,20.00)); RemoteSaveButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',XL,YL,190.00,20.00)); RemoteSaveButton.Text="Save"; //RemoteSaveButton.Text=string(int(YL)); RemoteSaveButton.SetAcceptsFocus(); RemoteSaveButton.FocusWindow(); RemoteSaveButton.bDisabled=True; YL+=(HL*1.75)+xGap; cbReloadMapsOnRequestOnly=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',XL,YL,300.00,20.00)); cbReloadMapsOnRequestOnly.SetText("Reload Maps on request only"); cbReloadMapsOnRequestOnly.SetFont(F_Normal); cbReloadMapsOnRequestOnly.Align=TA_Right; cbReloadMapsOnRequestOnly.SetSize(150.00,1.00); YL+=HL; ReloadMapsButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',XL,YL,190.00,20.00)); ReloadMapsButton.Text="Reload Maps"; YL+=HL*1.25; CloseButton=UWindowSmallButton(CreateControl(Class'UWindowSmallButton',XL,YL,190.00,20.00)); CloseButton.Text="Close"; //==================================== 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(TruncTo(string(sldVoteTimeLimit.Value),2) $ " 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(TruncTo(string(sldKickPercent.Value),2) $ " %"); 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(TruncTo(string(sldScoreBoardDelay.Value),2) $ " 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(TruncTo(string(sldMidGameVotePercent.Value),2) $ " %"); txtRepeatLimit=UWindowEditControl(CreateControl(Class'UWindowEditControl',235.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',335.00,132.00,60.00,20.00)); lblRepeatLimit.SetText("maps played"); txtMinMapCount=UWindowEditControl(CreateControl(Class'UWindowEditControl',235.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',235.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(F_Normal); 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(F_Normal); 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(F_Normal); 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(F_Normal); 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("Mapvote14XL_B7F.MapVoteHistory1"); cboMapVoteHistoryType.AddItem("Mapvote14XL_B7F.MapVoteHistory2"); cboMapVoteHistoryType.AddItem("Mapvote14XL_B7F.MapVoteHistory3"); cboMapVoteHistoryType.AddItem("Mapvote14XL_B7F.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(F_Normal); 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(F_Normal); cbSortWithPreFix.Align=TA_Right; cbSortWithPreFix.SetSize(120.00,1.00); cbSortWithPreFix.bAcceptsFocus=False; cbSortWithPreFix.bDisabled=False; cbDebugMode=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',10.00,470.00,140.00,20.00)); cbDebugMode.SetText("Debug Mode"); cbDebugMode.SetFont(F_Normal); 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(F_Normal); cbRemoveCrashedMaps.Align=TA_Right; cbRemoveCrashedMaps.SetSize(120.00,1.00); //Client Cache Checkbox cbClientCache=UWindowCheckbox(CreateControl(Class'UWindowCheckbox',170.00,435.00,120.00,20.00)); cbClientCache.SetText("Enable Client Cache"); cbClientCache.SetFont(F_Normal); cbClientCache.Align=TA_Right; cbClientCache.SetSize(110.00,1.00); cbClientCache.bAcceptsFocus=False; 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; } function Notify (UWindowDialogControl C, byte E) { local int i,Limit,RValue; local string CustString; local PlayerPawn PPOwner; Super.Notify(C,E); switch (E) { case 2: PPOwner = GetPlayerOwner(); switch (C) { case ListCrashButton: PPOwner.ConsoleCommand("MUTATE BDBMAPVOTE LISTCRASHEDMAPS"); break; case ClearCrashButton: PPOwner.ConsoleCommand("MUTATE BDBMAPVOTE CLEARCRASHEDMAPS"); break; case CloseButton: ParentWindow.ParentWindow.ParentWindow.Close(); break; case RemoteSaveButton: PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote bDM " $ string(cbLoadDM.bChecked)); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote bLMS " $ string(cbLoadLMS.bChecked)); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote bTDM " $ string(cbLoadTDM.bChecked)); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote bAS " $ string(cbLoadAS.bChecked)); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote bDOM " $ string(cbLoadDOM.bChecked)); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote bCTF " $ string(cbLoadCTF.bChecked)); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote VoteTimeLimit " $ string(sldVoteTimeLimit.Value)); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote KickPercent " $ string(sldKickPercent.Value)); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote bUseMapList " $ string(cbUseMapList.bChecked)); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote bAutoOpen " $ string(cbAutoOpen.bChecked)); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote bKickVote " $ string(cbKickVote.bChecked)); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote ScoreBoardDelay " $ string(sldScoreBoardDelay.Value)); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote bAutoDetect " $ string(cbAutoDetect.bChecked)); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote bCheckOtherGameTie " $ string(cbCheckOtherGameTie.bChecked)); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote Mode " $ cboMode.GetValue()); //ClientCache checks if(cbClientCache.bChecked) { if(cboMode.GetValue() ~= "Elimination") { cbClientCache.bChecked = false; PPOwner.ClientMessage("[MV14] Error: Cache mode doesn't work with \""$cboMode.GetValue()$"\" mode"); } else { //Limit = GetMapIndexLimit() - 1; Limit = 150; RValue = int(txtRepeatLimit.GetValue()); if(RValue > Limit) { txtRepeatLimit.SetValue(String(Clamp(RValue,0,Limit))); PPOwner.ClientMessage("[MV14] Error: RepeatLimit Max number on cache mode is:"@Limit); } } } PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote bClientCache " $ string(cbClientCache.bChecked)); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote RepeatLimit " $ txtRepeatLimit.GetValue()); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote MapVoteHistoryType " $ cboMapVoteHistoryType.GetValue()); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote ServerInfoURL " $ txtServerInfoURL.GetValue()); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote MapInfoURL " $ txtMapInfoURL.GetValue()); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote MidGameVotePercent " $ string(sldMidGameVotePercent.Value)); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote MinMapCount " $ txtMinMapCount.GetValue()); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote bEntryWindows " $ string(cbEntryWindows.bChecked)); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote bSortWithPreFix " $ string(cbSortWithPreFix.bChecked)); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote bDebugMode " $ string(cbDebugMode.bChecked)); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote MapVoteTitle " $ txtMapVoteTitle.GetValue()); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote List1Title " $ txtList1Title.GetValue()); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote List2Title " $ txtList2Title.GetValue()); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote List3Title " $ txtList3Title.GetValue()); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote List4Title " $ txtList4Title.GetValue()); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote List1Priority " $ txtList1Priority.GetValue()); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote List2Priority " $ txtList2Priority.GetValue()); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote List3Priority " $ txtList3Priority.GetValue()); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote List4Priority " $ txtList4Priority.GetValue()); if ( txtASClass.GetValue() == "" || Len(txtASClass.GetValue()) < 10 ) txtASClass.SetValue("Botpack.Assault"); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote ASClass " $ txtASClass.GetValue()); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote bRemoveCrashedMaps " $ string(cbRemoveCrashedMaps.bChecked)); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote bReloadMapsOnRequestOnly " $ string(cbReloadMapsOnRequestOnly.bChecked)); PPOwner.ConsoleCommand("ADMIN SET Mapvote14XL_B7F.BDBMapVote bUseExcludeFilter " $ string(cbUseExcludeFilter.bChecked)); for(i=0;i<16;i++) CustString=CustString $ int(cbCustGame[i].bChecked); PPOwner.ConsoleCommand("Mutate BDBMAPVOTE CUSTSETTING" @ CustString); PPOwner.ClientMessage("Settings saved!"); break; case ReloadMapsButton: PPOwner.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(TruncTo(string(sldVoteTimeLimit.Value),2) $ " sec"); break; case sldKickPercent: lblKickPercent.SetText(TruncTo(string(sldKickPercent.Value),2) $ " %"); break; case sldScoreBoardDelay: lblScoreBoardDelay.SetText(TruncTo(string(sldScoreBoardDelay.Value),2) $ " sec"); break; case sldMidGameVotePercent: lblMidGameVotePercent.SetText(TruncTo(string(sldMidGameVotePercent.Value),2) $ " %"); break; default: } break; default: } } function string TruncTo(string Str, int Places) { local int Whole; local string Dec; Whole = int(Str); Dec = Left(Right(Str,6), Places); if (Places > 0) return string(Whole)$"."$Dec; else return string(Whole); return Str; } function string Split(String Str1, String Str2, optional bool bOmitSplitStr) { local int i; for(i=0;Left(Right(Str1,i),1) != str2;i++) { if(i>100) return(Str1); } //log("Decimal point is located at:"@i); return Right(Str1,i); } 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.000,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'); } ùc^zmö1ù0„�-s W2(ºœ¦a/!X4º�.©œ¦-ÝbDefenseSet false, Ending game normally.(First half end)(5ûw.ôœ¦*.ôœ¦-Å'}~ }X a€?'( v 256] /*************************************************************************************************** * Mapvote14XL_B7F * * $CLASS AdminTabWindow * $VERSION 0.07 "B7" * $CREDITS Core development: BDB (Bruce Bickar) * Enhancements by: Cratos (cratos@gmx.at) * * $CONTACT www.vulpinemission.com * **************************************************************************************************/ class AdminTabWindow extends UWindowScrollingDialogClient; function Created () { ClientClass=Class'AdminWindow'; FixedAreaClass=None; Super.Created(); } t hh hsþÿÿÿR sÿÿÿÿLsýÿÿÿu sÿÿÿÿisÿÿÿÿpsÿÿÿÿwsþÿÿÿU hrsýÿÿÿl sÿÿÿÿvsõÿÿÿmsýÿÿÿW sþÿÿÿV sýÿÿÿs sÿÿÿÿoBóÿÿÿ,sÿÿÿÿssÿÿÿÿksþÿÿÿT sýÿÿÿt h{sýÿÿÿ_ [ôÿÿÿF sýÿÿÿZ iïÿÿÿn sþÿÿÿQ sþÿÿÿQ sþÿÿÿq sþÿÿÿT iéÿÿÿ_ oöÿÿÿV küÿÿÿNsþÿÿÿn iáÿÿÿ~ iñÿÿÿMwüÿÿÿ] IþÿÿÿB sèÿÿÿXküÿÿÿOsþÿÿÿ sÿÿÿÿtqíÿÿÿ qíÿÿÿ@ qíÿÿÿB sþÿÿÿI sþÿÿÿP wüÿÿÿh sþÿÿÿ^ iÏÿÿÿsþÿÿÿS iïÿÿÿBqàÿÿÿE Làÿÿÿ_oËÿÿÿF sýÿÿÿv sþÿÿÿS iüÿÿÿNiüÿÿÿD Lçÿÿÿ] góÿÿÿsiãÿÿÿRsþÿÿÿ\ hHLåÿÿÿfpçÿÿÿT pºÿÿÿ` sýÿÿÿw sèÿÿÿFiúÿÿÿv sõÿÿÿlkâÿÿÿ]küÿÿÿPs¾ÿÿÿWkðÿÿÿ|oúÿÿÿSwüÿÿÿoüÿÿÿ{wüÿÿÿa kñÿÿÿrsýÿÿÿJoéÿÿÿu wóÿÿÿE hqiÆÿÿÿNiãÿÿÿu sÿÿÿÿ[wüÿÿÿ[ qïÿÿÿTwáÿÿÿsþÿÿÿO sþÿÿÿo sýÿÿÿc küÿÿÿMsþÿÿÿV sÿÿÿÿgsõÿÿÿosýÿÿÿi sýÿÿÿv sþÿÿÿO sþÿÿÿZ sõÿÿÿnsýÿÿÿf sýÿÿÿg gåÿÿÿgsªÿÿÿZoÜÿÿÿj wüÿÿÿ^ wÅÿÿÿsýÿÿÿIsèÿÿÿBsèÿÿÿFoçÿÿÿSsèÿÿÿ|iôÿÿÿm sèÿÿÿDh¾ÿÿÿZsþÿÿÿH sèÿÿÿGiËÿÿÿ@ sèÿÿÿEiÍÿÿÿ|wÅÿÿÿ%sþÿÿÿm sÿÿÿÿqsèÿÿÿCwˆÿÿÿkâÿÿÿsi¿ÿÿÿyoüÿÿÿjpâÿÿÿjkçÿÿÿVwïÿÿÿ&wãÿÿÿ?oüÿÿÿQ sèÿÿÿhwÏÿÿÿGkâÿÿÿtwàÿÿÿiãÿÿÿww˜ÿÿÿ%iÕÿÿÿNiñÿÿÿVD‰ÿÿÿ[wïÿÿÿDk´ÿÿÿViŸÿÿÿusªÿÿÿ\wüÿÿÿwáÿÿÿiáÿÿÿFw£ÿÿÿwüÿÿÿ_ wáÿÿÿfo×ÿÿÿMoåÿÿÿpiéÿÿÿILñÿÿÿTIþÿÿÿA iüÿÿÿM iüÿÿÿW wúÿÿÿf wüÿÿÿ` påÿÿÿ_ p´ÿÿÿawüÿÿÿišÿÿÿAwüÿÿÿ&sÿÿÿÿBsÿÿÿÿzwüÿÿÿX kñÿÿÿ~i¹ÿÿÿTsýÿÿÿDp¹ÿÿÿXsýÿÿÿNsýÿÿÿh sþÿÿÿX sýÿÿÿ\wóÿÿÿL oÕÿÿÿlwóÿÿÿD w­ÿÿÿzqçÿÿÿ} sýÿÿÿw iàÿÿÿQ D‰ÿÿÿdsèÿÿÿ}kÐÿÿÿ|wïÿÿÿKiüÿÿÿG sÿÿÿÿjsèÿÿÿEpñÿÿÿapñÿÿÿfw­ÿÿÿTw‚ÿÿÿpñÿÿÿipñÿÿÿhwïÿÿÿ{ wüÿÿÿssèÿÿÿ@wšÿÿÿsÿÿÿÿhpñÿÿÿgo×ÿÿÿNpñÿÿÿj[ïÿÿÿt wLÿÿÿiàÿÿÿR o£ÿÿÿaL›ÿÿÿg påÿÿÿji¿ÿÿÿzkÅÿÿÿCo¿ÿÿÿaL¡ÿÿÿcoÕÿÿÿaoNÿÿÿx gšÿÿÿ@kÅÿÿÿoL¡ÿÿÿc oüÿÿÿJ oüÿÿÿO oüÿÿÿlo¿ÿÿÿxLMÿÿÿk wüÿÿÿvgšÿÿÿ[w¢ÿÿÿwüÿÿÿ}wüÿÿÿg w¡ÿÿÿr w¡ÿÿÿq sªÿÿÿ[w¡ÿÿÿBwüÿÿÿ]wjÿÿÿkwjÿÿÿupåÿÿÿUw¡ÿÿÿn oÕÿÿÿio¢ÿÿÿF iåÿÿÿSiåÿÿÿh w¡ÿÿÿLw¡ÿÿÿAwïÿÿÿ|wïÿÿÿTwÿþÿÿDwóÿÿÿ~k¢ÿÿÿ{wóÿÿÿF w­ÿÿÿKsýÿÿÿ` LœÿÿÿMLœÿÿÿAiüÿÿÿN oŒÿÿÿ\Lœÿÿÿ`wïÿÿÿLkàÿÿÿX wüÿÿÿZ k¢ÿÿÿ}k¿ÿÿÿHwüÿÿÿc oüÿÿÿS kÍÿÿÿU iüÿÿÿJ i×ÿÿÿRkàÿÿÿY i×ÿÿÿIk×ÿÿÿJL×ÿÿÿOo×ÿÿÿPp×ÿÿÿAwüÿÿÿ~ p×ÿÿÿLp×ÿÿÿKRff${¬•Bc aчb  mÑ�dazÑ…"v  [ÓÎ"] hÓ¤XjuÓ•Bb _ÕçBs(lÕ•BW _þ¤[jkþ»g{U€‡¹] P‘¤rj]‘‡ªy G“Ù"dU“çpQ$d“Ÿn u·•°c t‡ \@ÇwNÕBX \ÈÒg  hÕ°b uȪz  BĤtjOÄ…Ëo yňÒa  EƇj RƇ·h `Ƈýj nƇªr  |ÆçYNIÇÓPXW͇ÒOg¥éoZu¥êx_O§ˆz  n¨‡ì[  {¨ˆ"U H©ˆË}  U©¤yja©•ãW K«…s  X«…°G d«ˆ¶x  p«•Òo  }«â"A I¬ˆË@ X¬‡RI e¬Ÿ\Q s¬‡¡h D¶•P R¶…£\  _¶‡˜h l¶‡|z¶ˆz  H·…\  U·þ~Zb·ˆË{  |¸ˆ z  H¹•ãc T¹‡Àh a¹…@`  o¹ˆNz  |¹‡OIº‡"UWºèmheºŸskM¿‡Ïh xÃ…Ëe  FĈ"r RÄ…\  ^ć}jĈb yÄ… ]  FÅ•ãb Sň£z  _Ňh kÅéwiyÅ•T bLjËf  oLj@g  |Ç•°X IȇN{ Vȇ @dÈ…t\  rȈÓg  È•ãX LɈ"p  XÉ’"z eÉ’"K  rɈ"J É…;f  LÊÙBGXʈ g  fʇìhsʇ?k Aˇ~OˇY^ËŸwtlË…@L  `Ј\ mÐ…"a zÐ…\  GÑŸa}TÑþW[QÕˆË  lÖˆÒ`  xÖ……~ Dׇ@k Q׈A  _ׇSk lׇ ^z׈»f  H؈ q  U؈žz  bØ…¶\  o؇!C |؈{z  KÙ‡ mWÙˆ»  eÙ‡{^ rÙˆuz  @Úˆ"  LÚˆÖg  YÚ‡ ffÚ‡0d tÚ•¡q  BÛ…n\  OÛ…]  \Û‡!iÛÖZJxÛ‡jVBÞˆUQÞâ"@ `Þ‡”SnÞ‡|ÞˆŽz  J߈ôg  W߇…q c߇^p߇]ß•°Y Mà‡qYà‡"X gà‡~q và‡¶SCá…"b Qᇠh^á…"y lá‡{ yᇠEFâ…»k  Tâˆßg  aâˆV nâ…»l  {⇠pH㇠lV㇠U dã‡Fl q㈞{  ãéjlLäˆ@p  xæ…¦W  Dç‡ G  Qç‡Íh ^ç‡ìdlç…Ë|  zçR_w Gè’"M  ~ñ•¡` Kò…F\  Wò…¶t  dòˆ{| qòˆ{z  ~ò…%p Kó‡£j Xóˆôg  fó’"h ró…E]  ó…·R Lô•U Yô•Àq  fô‡Ãh sôˆKz  Aõ‡ GNõ‡7d \õˆuz  jõÙawõˆk Fö‡Ðh Söˆ£g  aö’"P nö‡ª[  {ö‡…M H÷‡ÞE U÷‡ºh c÷‡ Hq÷‡’{ ÷‡INø…d]ø$<llø’N  Xú‡ìoeú…©\  sú…L  @û‡{ Mû‡ìn[û‡ÚO iû‡ Rvû‡ìlDü’zRü…"x aü•BE nü…!l {ü…“\  HýˆÒb  Uý‡[  bý‡ joý‡N}ýß^vKþ…1j  A�‡ìfN�…"k  ]�…"j  j�‡Yw�‡ `F‚ˆXz  T‚…"L  a‚‡ _n‚ˆez  |‚‡QHƒ‡uh Vƒ•°W dƒˆ@o  qƒ‡ b~ƒˆ„z  L„ˆ°z  X„ˆg  e„…>s r„……} „’@D  L…‡”{  Y…‡Œh f…‡!Dt…ˆ”R C†‡ SP†‡˜d ^†‡b l†ˆq  z†ˆÒy  G‡ˆxz  S‡…£P `‡•S m‡‡jX z‡ˆž| GˆÙBdTˆ‡ Abˆˆžh  pˆ‡ B}ˆ‡ CK‰‡ DY‰‡Àj g‰‡ Bu‰…"I DŠˆÀq  QЇ¶{  ]Ї zjŠˆòf  xŠˆ¶R E‹ˆFe  R‹…"V _‹’"i l‹…¶r  y‹ˆÀg  FŒ…;g  SŒˆ;z  `Œ‡;JmŒˆòz  {Œ…•\  G�…] T�‡Šh  c�ˆ"r  p�‡ÉO }�‡xJŽ•Ïq  XŽˆ’z  eŽ…[p rŽˆPz  Ž…t] K�‡Ök X�‡Öh f�‡Ùk t�‡Þk B�ˆç  P�…ªm]�ˆçf  l�•À` y�‡¾Q F‘‡Ók S‘ˆ¶z  a‘‡®Q n‘‡§Q {‘‡£h H’’3F  V’… \  b’ˆ”z  o’‡‘O|’‡ XJ“‡ YX“‡ Zf“‡ [t“‡ \B”‡ ]P”…{^  ^”‡€^  j”‡ kw”…>a  E•‡G  R•‡ n_•‡ om•ˆL  {•‡ IH–‡ JV–ˆÒq  d–‡ Kq–…P\  –‡ LL—ˆYT  Z—ˆYS  g—‡ Nt—‡ OB˜‡ PP˜‡ Q^˜‡ìNl˜ˆ"l  z˜‡ìp G™’PT™…ív  c™…"s  p™…"t  }™…"z  Jš‡IWš…` eš…Òp ršâ"B š’"C  N›…;T [›•_ h›‡ d u›…%v  Cœ‡RQOœˆÒe  ]œˆua  iœÝbvœ…Úc u¡‡jpB¢‡êY P¢‡ÁU ]¢ˆSb  j¢…ðv  w¢‡ uD£• d R£•f _£‡)d  l£‡,d  y£‡S{ F¤…*v  U¤’j b¤‡ Mo¤æC[}¤’¶s  X¦ˆ¶a  d¦…¦y  p¦…Žz  |¦…tW  H§‡nM U§…_H  d§ˆ_z  p§ˆng  }§ˆdL J¨ˆ\m  V¨ˆn b¨…ÞF  n¨…KX  z¨…"{ G©…?c T©‡?f a©’"F o©ˆúg  |©ˆò  Iª…£o Vª‡£U cª•Ïg  pª•Ï` }ª•Àg  J«…·\  W«‡ßk d«ˆªi  r«‡øb «‡¬Q M¬•¡g  Z¬…ž^  g¬•¡u  t¬‡›h A­‡}}  O­‡ a\­…Gj­…py­ˆK  H®•|U®•}d®•~s®•B¯‡@ Q¯…A`¯…Bo¯…C~¯…DM°ˆÇz  \°…nh°‡ìrw°ˆíz  F±‡öh S±ˆ$g  a±’"o  n±ˆûr z±‡NG²‡zU²‡Bc²‡Cq²‡D²‡EM³…5B  [³ˆ<z  h³ˆ=z  u³…=B  B´‡FO´‡G]´‡Hk´‡Py´ˆ"{  Gµ…Q Tµˆ"}  aµ…y nµ’W {µ’X H¶‡[ U¶‡Zc¶‡[q¶Ùi ¶‡@l M·ˆFm  [·…c h·•Bi t·ˆRz  A¸…XM M¸ˆiz  Z¸ˆzz  f¸‡Ij  r¸…€\  ¸‡Nh L¹Ý`KZ¹‡€f e¿ê-`t¿…"p Tň¹K aŇNvmŇDQ|ŇDRJƈðz  XƇ"d eÆ…7_ sƈ[z  @Ljm MLjºx  ZÇ…u\  fÇ……\  sLj"[  @È’"\  MȈ•z  ZȈl fȈ•x  sÈ…tH  @ɇ˜U MɇluZÉ…nH  hɈXc uÉ’"V  Aʈ!v  NÊ…¦q [Ê…\\  hÊ•ÐT uʇXmBË…xPˈ!n _ˈVy  lË…LK xˈ°e ËSm RÌ’"k ^Ì•Bf kÌÙBeẋ rFÍ’"u TÍ…º\  aÍ…E^  nÍév{͈Ek qÏâ?e }Ï’"t KÐ’"s XÐ’"N  eÐ’"r rЇ Ð’"q MÑ’O  Zш¹J gÑ…>] tÑ’"p AÒ…6W  NÒ…1H  [Òˆýq  hÒ…VuÒ…Pe  DÓˆ@T  PÓˆÒP ]Ó…I jÓˆ@b  yÓ…H FÔˆÒc  UÔˆ"|  bÔ‡MoÔ’E}Ô’FLÕ’z[Õ…"y  jÕ‡LwÕ‡KEÖ‡?j  SÖˆ7k `Ö•"x  lÖ‡JyÖ‡{  GׇDOTׇDPb׈z  p×…Ö]  }×…7]  I؉Ò;LV؈0k bÛ‡Ë@ oÛ…0\  ~Ûˆ5z  KÜ’Dw X܇h  dÜ•ÙY  q܇'h  }Ü…0_ J݈2z  W݇ } dÝ’ U rÝ’"E ~݈úB KÞˆªo  WÞÙçG dÞ•·q  qÞ…ò\  ~Þ‡ðf Kß•·g  Y߈ªq  fß…brß…cAà…mPà‡ [  _à‡Ïd làˆ¹z  zà• c GሹZ Tá…"c aá…"T ná…]  {áˆT  Hâ…"R U∠ bâ…"N oâ…o |â… ^ Iã…yVã‡Àd eã…… sã…C  @ä•Àu  Lä‡b Yä…Áq gä… ] täˆÁ` Aå…Çj  N刹[ [å•Ïu  h凹h uåˆJCæ’KRæ’kaæˆLpæ’ìs æ’MLç…ìg [ç’hhç‡ìiwç’£L Eè•"| RèˆN_èˆàK nèˆà_ zè…K  Gé•"} TéˆOaéˆa  péˆå_ }é•"~ Iê…IVêˆ` eê‡üJrê…_@ë…ö|  Oë•" \ë‡øR ië…^xë…ö}  Gì…]Tì’ª| cìˆ a  rìˆôT  ~ì…\Kí…ðb Zí…[gí‡$y ví…ñ}  Eî…ñ|  Rîˆ÷y  _p  kîÙçh xî…ZFï’·j  Uï…Yaïˆýy  pï…ûv  |ïˆy  Hðˆy  Tðˆy  `ð…Xlð‡"z {ð’ßU IñˆÚk UñˆW bñˆHoñ‡ h ~ñ…Þ]  Lò’ªn  Xò‡h  eò’ ~  rò…2]  ~òˆGKó•Õc Zó…5s  góˆ5{  só…"u  @ô•0h  MôˆÖ[  Yô…"v  fô‡DNsô…<]  Aõ’"z Nõ…v  [õ’ÓU hõ‡DStõ’Ò_  Böˆ7h  Oö…=s  \ö‡Š{ höˆ={  vö‡ TC÷’xQ÷’``÷’"K o÷ˆ"U |÷…@Iø’J Xø’"M gø‡>n  tø…T  Aù‡4LNù’"F  \ù…"G  iù…Á\  vù…*Z Cú…;q  Oúˆ;{  \ú…9\  iúˆ"O vú‡ FCû‡¡d Qû…{_ûˆo  nû’"L  zûÿ ~ Güˆ"^ Tü…"P  aü•˜g  müˆQ zü•˜q  Gý…¹I Tý…ƒ|  aýˆ°z  ný…ƒ}  zý‡Œh Gþ•o  Uþ•Bg aþ‡ qmþˆSc  {þ…°, Hÿ‡@D Uÿ…%G cÿ’V  pÿ’y }ÿ’YR  J€…!n W€…«\  d€…!m q€…"Y ~€‡ iK�ˆXn Y�…!G  f�’ n  s�‡ g�•Xq M‚‡ eZ‚ˆ"Y  h‚‡ du‚‡¤j  Cƒ…! Pƒˆnp  ]ƒ…_q iƒ…"W  vƒˆea  C„ç@gP„ˆtJ  w”ˆtI  D•ˆtp  Q•ˆuc  ^•‡ Nj•…tw x•‡•UE–ˆ€z  S–’O `–’"]  m–ˆŒW z–…€{ F—‡ cR—…¹\ `—ˆua  l—‡}  y—ˆwX F˜……H R˜’Ð|  ^˜’Z  j˜ˆŒc w˜ˆŒb D™…wk Q™‡†W ^™…"Z k™…we x™Þ]vEšÿui {›ˆxx  Iœ’d|  Uœ’"[ aœ…tG  nœ‡tU{œ…t`  I�’U  V�…qx c�…qP p�…tx }�…T Jž•Œ` Yž•Œu  ež…R]  rž’tK  ž…Rd  KŸ‡ sXŸ‡ ufŸ…‘T  tŸ‡nU@ ˆRy N ‡ wZ ‡ xh ‡ yv ‡ zD¡•˜` R¡•˜u  ^¡ˆRe  k¡…Xp x¡…Xo E¢‡ {R¢‡ }`¢‡ ~n¢ˆR  |¢ˆP  I£ˆži  V£…@M  b£…Fd  o£’"E  {£’"D  H¤ˆ"~  U¤ˆ@q  b¤…~o¤ˆY_  ~¤…§V J¥…}W¥…@C f¥ˆ?T  r¥…?]  ¥…KY  L¦ˆ%U Y¦…?B  f¦’°E s¦…@C  @§’"` M§’°F Z§…?d  g§ˆ0z  t§‡*x  A¨’"t N¨…»n  [¨•·` h¨•·u  u¨…"]  B©…»m  O©…»j  \©‡z  i©‡·d v©…}  Dª’ e Pª…>u  ]ª…>R jªÿ¹i vª•<d  D«•<e  Q«ˆ;g  ^«ˆ;|  k«ˆ"N x«…}  E¬ˆ"L Q¬ˆÁz  ^¬…;p  k¬…"i  x¬…3\  E­…"d  R­…V _­…À\  l­…b x­’"J  D®…1k  P®ˆÁ_ \®…0}  i®…ÁY v®‡ b B¯…É]  P¯…/j  ]¯…ÏC i¯ˆýp  u¯…Ïg  B°‡ýr  O°‡b \°…ìq j°…PV w°ˆPU D±•Óq  Q±•Óg  ]±ˆÓR j±‡ìew±•R E²…Úz  R²ˆìj ^²’ìk k²‡f x²ˆy F³…d  S³…Z `³ÿûi l³‡ûh z³…ç\  H´ˆç  T´’ÒQ a´ˆçH m´…ªnz´‰ûÒT"Iµ‡øf kµˆ"Y  yµ…"m F¶…"n S¶ˆ"H `¶‰ÒUIm¶ˆ"G vº‡÷R C»’"x R»ˆéR _»’ðU l»…íb x»ˆ"k D¼ˆ"Z  Q¼•Õb ^¼•ÕW k¼‡ëj x¼‰Ò/!F½•ÕX g½‡Úh s½…v  A¾ÿÚi N¾ˆÞT  \¾‡èj i¾ÿöi  w¾’ùr D¿’t P¿…jq \¿‡âj i¿…þv  w¿’p CÀ…\  OÀ’àU \Àˆx  hÀ…âT  uÀ…ý\  BÁˆýz  OÁ…\  \Á•jW iÁãlfvÁ…"@ \Ã…\  iÃ…èH vÃ…÷\  CĈÙe  PÄ’ñU ]Ĉôy  jÄ’ën  wĈÖe  DňêR QÅ’"l ^Å…"T  kÅ’ôU  xŇ@EƈÓ]  SÆ…êE `ƇêFmƇA{Æ’"n Ilj$zVÇ…Ü  tlj$v@È…ËN ]ȉ$iÈ’öU GÉ’ÒQ Tɇý{  `É’P mÉ…v  zÉ…eGʉ$AVʈÒO tʈÒN Aˉ$cNˈÒM lˈÒP yˉ$:FÌ…"D c̈` pÌ…"C |Ì…Ù|  I͇Ùb VÍâÙB dÍ…"B rÍ…"A Í’J  LΈÎz  XÎ’"h dΕf qΉ$[~ÎâÒm\ω$FkÏ…ËM HÐ’"g UЇÒh bЕÒg  pЕÒq  }Ð…ÇL IÑ•Íg UÑ…Î_ aÑ•Ðf nÑ•Ðg {Ñ•Íf GÒ‡Ãh TÒ•g bÒˆÌz  nÒ…Ì_ zÒ’"f GÓ’"e TÓ•¾q  aÓ…4f  nÓ…ÇH  {Ó…4T HÔ…ÂT  UÔ…0q aÔÎ0^ mÔ‡ @zÔˆ4f  IÕ’E  VÕ•Ãf cÕ•Ãg pÕˆ_  |Õ…¿H IÖˆÁ@  UÖ‡B  bÖ’½n  oÖ‡j {Ö…½t  I׈1k V׈4{  c×…¾\  p׈4g  }ו¾g  JØë@W؇¾h kØ…�A  yØ•ºf EÙ•ºg RÙ…\  ^Ù’|  kÙ’>b  xÙˆA|  EÚ‡=I QÚ‡=w  _ÚˆAg  lÚˆ»o  yÚ’"n  EÛ…AT RÛ…)T  _Û…,T  lÛ•¶g  yÛ•¶q  FÜ’E\  SÜ…t`܈°V oÜ…u{Ü•"w  JÝ…®\  WÝ…wdÝ…E[  sÝ…¬\  @Þ…IP  MÞˆ°D YÞ…%V fÞ•>K  sÞ…°J @ß’Oi Mß…LG  Y߈YU  fß…RV sß…LH  @à…±\  Mà•£f Zà•£g gà…!@ sà‡D| à‡D Má’©w  [á’"_ há‡IJuáˆXb CâÙ3^P∗s ^âˆ!z jâ‡J| wâ•›f Eã•›g Rãë"Q^ã…¢d rã…XS ~ã‡J Kä’!K Yä…f  fä‡errä’!J @åâ!xMå•”g  ]å•”q  j刞W wå’ƒU Cæ’"\ Pæâ!{]æ…‘]  mæ…!| zæ…nG  Gç…nW  Tçângaçˆla  qç…!} }界g  J蕌q  Wè’—p dè•“q  qè‡Q| }è•“g  K鈓R X鈅A eé’qy ré…z\  ~é‡Q Kê’†p Yê…‘d fꕌg rê’Va  ê…V\  Kë’‹A  Xë‡W| eëˆ[_  së’p @ìèc|Mì‡W Iô‡\| Wô‡\ eô…ët  sô•Œf @õ’ub  MõÙXGZõ…uC  hõ‰Ít+uõˆux  `ö‰Blmöˆxz  Yú’xC  eú‰g;rrú’zC  dÿ‰JUSpÿ‰eC�•}K  BЉêÐ&TOЉÐ1wcŒ‰×ÐjZ�‰fvD’‰ÚÐoz”‰DT/i–‰4DX—Â\  \˜‰d1wf˜‰×dh]œ‰ÚdkEž’‹C  pŸ•‹q  |Ÿ•‹g  I ‰ækv V ‰Ç;av ‡�z  W¢‡ td¢‰Ü3f6r¢‡ vh£‰3@|v£’ƒC  r¥‰ a~¥‰Í3W_§…“C  v®‡ |B¯‰bP¯‰Ë3G[O²’—C  j¹’S  w¹‰Ü3nDºˆQ  r»‰aH»‰`^G¾ˆžC  eʼn_irʼnËjG][Ç’ C  xΉÜjMDωmuQч§SFÔˆ§z  TÔ‰DkaÔ‡©z  LÖ‰Üf-YÖ‰ÓDd,F×’¬C  jƒ‰VXwƒˆª| O…‰A`\……v|†‰Ï DUK‡Ù°h O܈ªx  ]܇¶Qj܈ªl  x܈ªm  E݉ÍNR݉ËGf `䈪{  Fð‰ý %m>Rð‰Üi® ‡¼z  h± ‰ÜEf-u± ‰SDb² ‰EA`f³ ‰.>Fµ ‰ËEG\D¶ ‰ Y`½ ‰35y¾ ‰ÜEjn¿ …ÁC  Xà ‰ØEKeà ‡Èz  pÄ ‰ BU}Ä ‰Üef-RÆ ‰e@tÆ ’Çb sÈ …ÇC  @É ‰)8MÉ ‰ï }EÊ ‰*8BÎ ‰ËeG[zÎ ‰ÜeMUÖ ‰ØeKbÙ ‰Ó¬+mÚ ‰Í¬Hµ ‰ìZeF¶ ‰KËAa¦…_C  _§¬ { 4P l§‰$S|³‡iC Oµ¬3{ 4Q>]µ‰bmnó‰øÞL&[ö‰"!@A÷‰(8Aý’oC  yý‰uEþ‰ùÞA"zÿ‰üÞD\€‰" j z€‰ý%Cdެ{ 4Zg¢‰…IPA±‰"cbQ²¬Þ{ 4Zs´‰xPMЉ"em]шzC  Jجª{ 4nc·¬D{ 4o:a¸¬{ 4BPPó‡è{  RìË{ 4vb_ÉÏjFU¦‰".>[«‡ë{  Y¬‰èjvf¬‰"SK\®•êg  g¯•êq  t¯ˆêz  A°¬ñ{ 4}N°‰j[wK¹Kr[B¿¬{ 4}]ÀˆôC  Zɉ"dgɇ÷{  K͉j4DX͉"C:\Ή"JVψüC  `Ò’öC  lÒ‰Ïj%MxÒ‰"u]EÔ‰"|x bÕ…ûZ Z߉jhYfß…ÿZ à‰jYZKá’N  eâ’M  qâ‰ïjR~âKs[Pè‰"NZké‰"{mEý¬ { 4}rÿKt[oˆ‰"qpJЬ { 4}z�Kv[w˜’C  Rš‰"VK^šˆ U iœ… _ vœˆ ` C�… a P�… b ]�‰Æ"Tw5j�¬${ 4GaÓ…C  hã‰">>uã‰Ï zsä¬{ 4g˜mí¬{ 4S T†!ˆc g’!‰ ifs’!‰"l_Y”!ˆC  x•!‰"UD–!‰ jOY—!…$z  h˜!‰ J\t˜!‡$j P›!‰À"KW ^›!’*C  u¤!¬E{ 4~,B¥!ˆ"x  @Ò!‰ t2LÒ!‰ .o~Ò!‰"j9mÔ!¬P{ 4U fÕ!‰ 3s{Þ!ˆ2{  nà!¬%{ 4szà!‰ lfmð!‰ )}Sò!’2C  Pø!‰"ii]ø!¬{ 4d Fú!’5C  j…"‰"hVw…"…<s  Mˆ"‰ *DYˆ"¬e{ 4K*]Ž"ˆ7z  h¸"¬*{ 4] u¸"ˆ<{  RÄ"‰"dq_Ä"‰"]^PÆ"‰ê &dnÈ"‰"EHRÊ"‰"ZeZÐ"‰ï ]JÞ"¬;{ 4PIà"…"H  Yç"‰È*?Gfç"…"I  mè"‰"GB zè"ˆDC  |ò"¬ý{ 4RHó"‰"H]Z‚#‰È?Gwƒ#‡Nv  ~„#’NC  K…#ˆJC  X…#‰"Wl d…#‡Rf P’#•RK  ^’#‰È?Gk’#‰Ç"&Zr“#‰Ó"Dt L¢#ˆQC  @°#¬ì{ 4s‹L°#‰"PO»$‰È ?GN½$ˆ[q U¾$…[x a¾$ˆWC  n¾$‰"VSz¾$‰È?GMÂ$‡bk  TÃ$’bC  aÃ$ˆ\C  nÃ$¬"{ 4Dß zÃ$¬ { 4q§~¢/‰ù"zyoÊ2Â"\  hÎ2¬t{ 4h rÎ2ˆY^  ZØ2