*Es@e_'V,;ǮC}7esNone 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 ::$llRgH} ݊!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 ݊!Oc1Q`DyZx7X ݊!Oc1Q`DyZx7X ݊!Oc1Q`DyZx7X ݊!Oc1Q`DyZx7X ݊ ݊ ݊t= ખ7XÆ+%%%% ݊ ݊+%֒D֒l֒֒9 ֒0֒^M֒+R@G^w %%%%%%%%%%%%%% U"p]NULLyG]NULLx]NULLm P"2M"N"O"XS$HB:[5d֒<, P$AOZ@MU\X>ay&.>a>a  WaMBZ ˌxxx++.'l.'l.'l+|.Xچ+|.Xچ+|.Xچ+|.Xچ+|.Xچ+|.Xچ+|[$+|[$+|.Xچ+|.Xچ+|.Xچ+|[$+|.Xچ+|.Xچ+_4|.Xڰ_4|.Xچ+_4tt++|.Xچ+t+_4+t+t+|[$+t+|.Xچ+|.Xچ+|.Xچ+t+t+t+t+t+t+t+t+tttt+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ڎ᱘᱘᱘᱘᱘᱘tt᱘᱘7XÖ7XÖ7XÖ7XÊ|.Xڊ|.Xڊ|.Xڊ|.Xږ7XÖ7XÎ᱘|[$|[$|[$|[$|[$᱘|[$|[$|[$|[$|[$᱘|[$|[$|[$|[$|[$᱘|[$|[$|[$|[$|[$᱘|[$ttt᱘ttt᱘᱘|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڰ_4_4_4_4_4_4_4᱘ttt᱘ttt᱘_4_4_4_4_4_4_4|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xږ7XÖ7XÊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڎ᱘ttttttttttttttttttttttttttt  hW[ @ܤy&. @ @  xAgn ݊~PPeN,eN,!MeN,K4eN,eN,K4!M!MK4eN,K4!M!MeN,EnYEnY5aEnYK4EnYK45a5a5aK4EnYK45a5a5aEnY7X7X3t3tK4 @ @ܝK43tK4 @ܝK4螝K43tK43tK4 @ܝK43tK4 @ @5ɝK45ɝK4>ao o ֒o ֒o ֒o o o I(I(?{I(?{I(?{+{#UI(?{  ZQr5ay&.5a5a  x ] @@@YWpw֒|.X֒|.X֒.'lxxx53t;f;f;f;f|.Xv?v?v?+P>a>aki5ɐtt᱘kikiki᱘EnY5a5EnY5aEnY5aEnY5a+P3teN,!M3t @3t @3t @3t @܆+Pttt>a+{#U>a>a.'l.'lEnY5a5EnY5a+P3t @3t @3teN,!Mtttt+++P+P5>a+{#U5>a5>a+P5555ɤy&.55Ɏ᱘᱘᱘5>a5>a>a>aki᱘kit᱘᱘5ɝK45ɝK45ɝK45ɝK4螖7XÖ7XÖ7X5;f;f;f;f;f;f5553tK43t7XÆ+{#U7XÖ7XÖ7XÖ7XEnYEnYK4eN,eN,K4螖7XÖ7XÎ᱘᱘᱘᱘᱘|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.X֒tttt|.Xڊ|.Xږ7XÖ7XÖ7XÖ7XÖ7XÖ7XÖ7XÖ7X5Ɏ᱘᱘᱘5Ɏ᱘᱘᱘3t᱘᱘᱘5Ɏ᱘᱘᱘5Ɏ᱘᱘᱘5Ɏ᱘᱘5Ɏ᱘᱘5Ɏ᱘᱘5Ɏ᱘᱘᱘᱘᱘7XÖ7XÖ7XÖ7XÖ7XÖ7XÎ᱘᱘᱘᱘᱘kikikikitttttttt  dgnE5ɟ>a>a>a~>a>a>a>a>a>a++y&.y&.++y&.y&.y&.y&.+y&.y&.+y&.y&.y&.y&..'l>axxxxxxxo >axxxxxxxxxxxxxxxxxxxxxK4螌xxxxxx  B$@ACymFkmsJt!My&.!M!M  @Z pL G bKY2!OE@E@E@E@ooE@E@PE@E@oo!O!O.'l.'lc1Q`c1Q`c1Q`c1Q`.'lc1Q`c1Q`  }]Querying Server...|]The server did not respond.{Exz"`nk"q=$:e^[\^[\^[\^[\^[\^[\PPPԝXP=$:ePPPPP P P P P PP P P P P P P P P $"P$"PPPPP '-%nL}"#bb$"PPPPPPPPPPPPPlPlPlPlPlPlPlPlPl$"Pl$"llllllll$"$"$"$"$"PPP+++{#U+{#U"qϔ"qϔ"qφ+++{#U+{#U+++{#U+{#U+++{#U+{#U+++{#UllljAjA+jA+++{#U+{#Ulllllllllllll+l"qϔ"qϔ"qϔ"qϔ"qϔ"qlPlPlllllllllllllll++l+llllllllllllllllll+llllll+++{#U+{#U+{#Ullllllllllll+lllllllll+++++++++++++++c6Pن++{#U+++{#U++{#U+++++++{#U++++++++++++++++++++++++++llPPPPP}o)}o)ڏPTTTT{#U+T{#U+T{#UlllTTԝX+{#UPTTTT{#U++++{#UT{#U+{#UT{#UT{#UT+{#UԝX+{#U+{#U+{#U+{#U+{#U+{#U+{#UlllPPPPP}"#P}"#P}"#P}"#P}"#PTTTT{#UT{#UTPTTTT{#UT{#UTP++{#U++{#U+++{#U++{#U+{#U++{#U+{#U+{#U+PP PPPPPPPP++++{#Uxxxx+++{#UPPP PP-%nw`utsrqpO"ZN"3L" P"MPnKJ"I]! Mapvote14XL_B7F.MapVoteHistory1y] Majority{]Botpack.AssaultH"3G"Flk"OjEi@]Mapvote 14 XL$?~$?}$?|$?D] AS / DOMC] DM / LMSB] CTF / TDMA]OthershgfedZQ3Botpack.DeathMatchPlusiDMBotPack.InstaGibDMN]AS-*NDOM-*R]DM-*RLMS-*T]CTF-*TTDM-*c]iDM-*b]CTFa]CTFz_^"p]Never]I\[Z] [MV14XL]Y] ../LogsPUWo$"U[ nDx%YQZxSP\1@<zDy*{y&.*{*{  Y@@n[i@<d kO\53t~ @ @ @܆++y&.y&.++y&.y&.y&.y&.+y&.y&.+y&.y&.y&.y&..'l @ @܌xxxxxx @܌xxxxxx @܌xxxx @܌xo  @ @܌xxx  ^*,^,^,^,B$@AC @ r@a@yJ3~G @BL~;f  )@<MO f@UzC$c`mDyZxpDyZx.'l!O!O!O!O+!O!O++!Oo 7XÖ7XÖ7XÖ7XÖ7XÖ7XÖ7XÖ7Xr  wf|sEnY~5a5a5axxxxxxxxxxo 5a5a5axxx  B$PACA <@@<( @cEG` @+]ko wPlU[wV] iDM;DM;wlr POCR @e H w@C @F@@Btc | JeBxHweN,~!M!M!M!Mxxxxxxxxxxo !M!M!Mxxx  B$PACm @OD @@O @Caaj*{xxxxxxxxxxo *{*{xxx  B$PAC*TKWki  /P @RCigzsAu@vEAJ |%H_ a jUh@B @wcbZE@釅m!O!O!O!Oqi A" fjZ 0tzxDkNmd ^sh@@] C@@8 ]@O I @Q yPTQXj c6PU[$"l$"lllll$" e@=kt R@R}R_ ::$8jARgH}+++R@G/T2o .'l.'l/T2.'ljA.'l/T2.'l.'l.'lDyZxPI.'l!O.'l!O+R@G/T2o dtw8.'l.'lDyZx/T2֒D֒l֒֒9 ֒0֒^M֒DyZx mPP"2M"N"O"YB@a@v@{oU @Dd @|@F @\R |FGfpKJJ irt@!A"MDOPmJ @$fa<K$"c6Pc6P FRv@C@y M!x^Z F @H_ @U@T~Bys^ ^[\DP0Ni"q"q"q"q"q"q"q K@PQ@@@a @@|XiE@dHH Td y _{H@G@@oUIl G ZSI `@u bxEl FGYTMtG@@U !H[FW@m@u@K{ @| Vd@p @U LY HY@W@~UnT BC @h_ XTq`@I[  wxyz{r@%_Q@B^A EGmIb@smJMNOS_ U @'} P@V @] @p @`;u @L@\$p T @~D @DI|FEb2dtw8Mo .'l.'l.'l+R@G/T2.'ldtw8.'l+R@G/T2.'l.'l.'lo +R@G/T2o o   [jQ]MapVote Key BinderP @k*$R } @N [qz @u @LdsCt=$  .@@L @B@{h @@z @I@@E@M@uXA@$_k xv@[vu AD@l~mp @W  @CS \ ] ^ pcq  @a @b @c @L  @a T]cI ^Xpqrwt@{k u@xy;X;iU~@q Y@^ AdCg^on @Ne@t @KA}`2 PIM+Po .'l.'l.'lo .'l.'l.'l+R@G/T2.'lPI.'l+R@G/T2.'l.'l.'lo +R@G/T2+Po o   [!Q]Map Vote Welcome Windowx MV-::$::$RgH}YQZ+R@G/T2.'l+R@G/T2o /T2/T2.'l.'l.'l.'l.'l+R@G/T2/T2/T2/T2/T2++R@G QpSSP$@V@@AWf jgy@h@@t@n@av \@bo @$T}@j |e@[@ ^ @  @[ l@}  @P wY @@w@~@Hl}o)U[ڏP"q A@C@E @E@VI@k TO @~ @u@b @l [ @@@EAr  @SQ @M}]v  W X Q@V[Z\cVd @h @VQ;mo..#o#_?P?O?M?Lr#*#### -- CreateWindow Failed/(o-ou#-'#0##+' ^ ich@\ B @mNR@C G p@O*x~ @J @f @KD lX [ @@E @@H @F @@`I @@N @O@[  @M~ @@k{c @M @e t@z LQ o   \  ]  g^  a@`  w JR@b  g O@e @f  Oj @R  @SyG @ E@n @Ejr  @ s @v  @ C yx  @ z@|  @ a}A @r@|w~  @ E  @ @G  @ Y RM Y  r@Pq@^ S@[ ` @ea @lt@w@` @a O^@[i `n  Y ]@{_ @M B@Q@x C@Y @@Z @wx@V @{SL @k@S@@I ic G@L@-K @V yut@h@DUYWs@j@Y @j@@\yq@VqRc D@g@R@hUC@ll 'C֒|[$֒|.X֒|[$֒|.X֒֒D֒l֒֒9 ֒0֒^M֒+sֆ+֒_4֒֒֒֒֒֒to ֒to ֒t֒t֒+sք.'l.'l᱘|[$++sss֎᱘sssss֊|.Xڊ|.Xڊ|.Xڊ|.X֒|[$|[$|[$|[$|[$|[$֒᱘|[$_4_4_4_4_4_4_4֒tttttttttt7XÖ7XÖ7XÖ7XÖ7XÖ7XÖ7XÖ7X AW m n e c@Y$Qc@r@q  @}@[B w } @\ @@C @vV]G 7ujˌxxx  cE @M @N $r @V ^@P @e@O  @T X @] @NP@z$2_ ` a g b Oa@e @Vi DZ\w @@w o }ld @f@s  @@y b@J@`@A @@ T @z@L ]@@"kV@NF W@E @Z@{@@ P @@B S zU WX @@D@h^@b@@r@K @@@@@@@@Dx@@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@ujc @k@W@`TWiO/ a ZQ @e\eF@a@@@K a@i@H f@@]RllZf1I(.'lr  x@@E@\@B @XusUTlQ@t @@s~m}@coo @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@de@[@jgEn@q@a @Bv @J@s@@@wIl uM}Q @y 9$AB@_zl@Fr_@I@NK @^qTRN U@n@o@\nu` @o @_o@m  @]@k@@S { @Dt g@S@ea@Z@l@r@uGh\@Mb rXCsQ@f @Mk@k g GJtRK @HEu@N@\ @Q@RP@WU Y`Y[D@|@TD @A d@JkX| IDc/jopxxxxxxxxxxo +j*{j*{.'ljK4螆+*{+*{jj+P᱘᱘j*{jj*{jjK4螖7XÖ7XÖ7XÖ7XÎ᱘᱘᱘᱘r  Zm_t@crB^@  * p x{ Bq}-p}-Up }{ ^p  %`w4ppp-Sp -^p[X]^^{ %}M &}G ,}E ,}~ ,}| ,}x ,}v ,}r  vgzw;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{yUD4.-a?((-O 'J @peK{a %]r{*[MV14] [Warning] Cache is none in ClientSaveMaplistConfig()!!! ClientSaveMaplistConfig() -> Start-U'-W 'o%op%pspoG|Bop' ||,[X]||,po{`|po{`|po{`po{`po{{ G{hMH-F G[ [%{qZ{U Y{b{a[MV14] Storing Maplist to file finished:SG  B.W~|&Jn?%%n?,n+0W  d'wW*W+WW0 S1-'SwS*zVS,UTMenuzVS,UMenu.#wSSSrS*.#%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'MwM*zVM,UTMenuzVM,UMenu.#wMMMrM*.#%M-'M+M0 GaZm-aD   P'krD *D-J 1k.# J \p-(CHC?,?,?,?, HIJv{' N kT{N U T N ?,U ?,T N VW Z QMf"$ -r . %$  ^ TO@  -r [ O,u. wu*iz[ uL,,uu. u* CY %V"|Y,[x]YY,NzY,&:YY}Y,Y XwIk -r tw:t$w:t$(w*w*.w:t$w:t$&w*w*w.w:t$"w*It%t,krI* I.ItIIKw:t$!Kw*It%:t,rI*rI I.ItIwIJ @h SYb4 ReplicationCheck() -> Entered!zZNULLzYNULL G{p,#ENDa{,ReplicationCheck() -> Timeout: > 5(&' [7G-r. y-(. y-67$67$67$7G I c b ?& 67=,67=,67=,AE. y-` 67$ 67=,67$ 67=,67=,67=,7G I c b ?& z. yL&967$67$67$A7J. yL&z7%(7G ?,I pp. yL&, - . yL, {S zV6V=,6V=,6V=,V V~ j WaJ!Uw*w.*.)MUTATE BDBMAPVOTE RESENDVARIABLESGetServerCacheConfig() -> Finished! ]_`XW#KLoadMaps()u-UUbLoadMaps() -> Replication unsuccessful!Cm_meu-W (A%OAu%EuTBAu;{TuAYT%}T,uAQ JT&uAQ DuA|b&b,bDbC. # jbu%uuQ b. #ibuYubCbD-L'bVl &D,D,D,Dl  u^b_v)i{ %qZ{ %U Y %{ GzG %` c4Gi.*@ -64$64$64$4SA?&Ul?, 64=,64=,64=,4SAl?&U? 4BA?l 4A?l 4UA?l M64=,64=,64=,4SAl?&U? 4BA?l?& 4A?l 4UA?l 4%(4S?,A.*@ q4S?,dA.*@ z  qT6q=,6q=,6q=,q? q?& qqr `m*9-@ RequestMaps() -> Request already Send! w*w.*.%MUTATE BDBMAPVOTE REQUESTMAPS-@ 'RequestMaps() -> Finished! peiu Drp.pwp*Txu pI}u ppp.p lhf2. %$  dD--O U ,-V -V ';timer()-L(P`P[ PG-L'[Pr. #*[MV14] [Critical] MapVoteTabWindow is none.  . #w I*.-.  IvD?}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}Sk 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  | zZ,&?&!&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], VPriority:U\, u S C D?}d}c}b}a_^]\?}Mm C j j C -L' { MIf w I*.  IA   .D MDb-'fzf.D MDc-'.D MDV-(.D MDW-( ^ MT-L-FRw I*.  Im-( r-L-F'a?( -F(a?( RneVCUR.QwR*5|eRI'R.R( rvbAeo.cwo*G|boIoco.o c @vqV +DC_,Py.  A ABAyVisual ConfigAkpB%Dk?,TAV. kTVAuto DetectAkAkr. kTr-(TPv. kT?,V. pBAV DM?,TPx. AA?,V. pBAV TDM?,TPw. AA?,V. pBAV LMS?,TP{. AA?,V. pBAV CTF?,TPz. AA?,V. pBAV DOM?,TPy. AA?,V. CAVAssault:?,(S.  CAS(S C?,<o%o,0o%?,TPoX. AA?,oD. HCAoD emptyo?,TPl . AA?,V. *CAVUse Exclude Filter?,T?Pm. >CAmSavemm+m-'T?Pd. CAd#Reload Maps on request onlyd%d$dC?Ty . >CAy Reload MapsT?q . >CAq CloseZ .  ABHBAZ Limits.  AC*CA-(A4C, Voting Time Limita . >CC BAa %pU, secV.  AC*CAV AVBV&VKick Votes Req.] . >CC BA] #pUV, %Y.  A*C4CAY?YAY&YScoreBoard Delay . >C*C BA %pUY, sec_.  A>C9CA_?_B_&_Mid-Game Voter Req.Q . CC>C BAQ #pU_, %\. kCCBA\'\Don't show last\A^ . CCpBA^ maps played~. kCCBA~'~Reload map list when~A_ . kC%CHCA_ +maps remain. (Elimiation Mode only)Y .  ARCHBAY Misc.C.  AfCCAC2Use the Map Cycle List instead of all mapsC%C$CHC?E.  AzCCAE&Open Voting Window at Game EndE%E$EHC?F.  ACCAF!Enable Player Kick VotingF%F$FHC?g.  ACCAg#Check Sudden Death OverTimeg%g$gHC?y. fCfCB?y Modeyo(yByMajorityyEliminationy ScoreyAccumulationh . fCCHCAi . fCCHCA` .  ACHBA` AdvancedA.  ACCpAA(A#Welcome Page Web Server URLARCa .  ACCAa @Example: www.MyServer.com:80/UnrealStuff/WelcomePage.htmB.  ACCpAB(B&Map Information Web Server URLBRCg .  ACCAg .Example: www.MyServer.com:80/MapFiles/^.  ACC?^#Map Vote History Class Type^o'^RC^'Mapvote14XL_B7F.MapVoteHistory1^'Mapvote14XL_B7F.MapVoteHistory2^'Mapvote14XL_B7F.MapVoteHistory3^'Mapvote14XL_B7F.MapVoteHistory4G.  ACCAGCOpen Welcome Window and KeyBinder when player enters serverG%G$GC?{.  AC CA{Sort Maps with PreFix{%{${B?{-({-(G.  AC CAGDebug ModeG%G$GB?G-(e . *CCBAe List crashed mapsc . CCBAc Clear crash Listx. *CC CAxRemove crashed mapsx%x$xB?`. *CCBA`Enable Client Cache`%`$`B?`-(y. C ABAyGame Typess.  AA>CAs(sMapvote TitlesBD.  A4B>CAD(DList 1 TitleDBE.  ApB>CAE(EList 2 TitleEBG.  AB>CAG(GList 3 TitleGBI.  AB>CAI(IList 4 TitleIBL. fC4B CAL(LPriorityLBM. fCpB CAM(MPriorityMBN. fCB CAN(NPriorityNBO. fCB CAO(OPriorityOB otLuU wOn `LzO:L$O:L$(zw*w*. O:L$O:L$& w*w*w.O:L$"w*Tn%n,`rT* T.Tn>T@O:L$!@w*Tn%/n, rT*rT T.TnTO[\ zG%+.L -6$6$6=,{xG F ?& -F '6=,6=,6=,{xG F ?& -F (%(N.L IzN,[X]6=,6$6${?,xN,)-F 6=,6=,6=, vNzv,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 %| CZ 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 " modeD ,X J\ X D \ SX %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 %9B ,z pz SAB X-B  ,Mutate BDBMAPVOTE CUSTSETTINGz  Settings saved! y  $MUTATE BDBMAPVOTE RELOADMAPS vv-r-( HwEw-r-( vxsx-r-( yy-r-( {{-r-( zz-r-( rr-v-(w-(x-(y-({-(z-( ~ {$Z a %pU, secx V] #pUV, %x >Y %pUY, secx u_Q #pU_, %x ~  FL\w*6F=,6F=,6F=,6F$d6F$d6F$dF FMN ~{fY . %$  jDSK75-S w#*. #JD-B @GAJ el.cwl*G|Glilcl.l }.L1/-S w#*. # . C?G+n.O -6?$6?$6?$?Mx?&R k?, 6?=,6?=,6?=,?Mxk?&R ? ?Ax?k ?x?k ??,!x?k 6?=,6?=,6?=,?Mxk?&R ? ?%(?M?,xS.O H _ .O i%D?D?,!L>?,?M?,x_ ??,xU.O O , yT eRV JT e T ,c Cc %ppSV .e JSV T  v3^M&$w#*. # 3v Ey+6y=,6y=,6y=,y? y??& yA??& y?,!??& y?,?,? y|} V @.F. G ?, @A AW B(fKe%<{W e&t2e,dW eW e IFfS@ . %$  Og @C].}w]*a|g ]C|g ]C]}].] Ke@Bo)M+)w#*. #)on Gg6g1gkg6g$6g$6g$g AAC@ gCAHC@ g ABC@ g A\CC@ g ACC@ gCA@C  Lh*N+)w#*. #*h[ PFG&J.A -6F$6F$6F$FK_?&Y L?, 6F=,6F=,6F=,FK_L?&Y ? F_?L F?,!_?L 6F=,6F=,6F=,FK_L?&Y ? F%(k .A C,i .A C,D?D?,!L>?,FK?,_ppk  - i FK?,_S.A B  Q@6@=,6@=,6@=,@? @??& @?,!??& @?,?,? @ij 0F. G ?, @A Sccde s M5s r q s r q  TeG6e=,6e=,6e=,e? e?&? -e@A  YW&0-d %rr*Jaa aA}Ir6-d (Jaar6IA,AA,A}Ir6IA,AA, IUR,/a0 r,+rVr,10Urr*Failed to find MVWRIa rf6


Please Wait.....
r6JaWrJ*Failed to spawn MapVoteHistorya J zU Nv 64OXDzv 9w#*. #M =L L VL pL v  VZ/0PV [AnP-YpMV A!C `~Y

Map Report nziSEQp2ziPCp1p

p          0ziSEQpSequence  \ziPCpPlayCount p Map Name
p          p------------ -------------------------------
R& Qh _&*h &h ,*1,dg ,d5g 1Rg p          ziSEQpSR)l&l,}SR)p lbziPCpSR<l&bl,}SR<p l'ppRG
Rpri*a iIi-d 'q! h  f]Grm n d'' !K >AMA+BYAt . >M+Yt Map Voting Menu Hot Key>+?,M?,+?,`. >M+Y`-(`-'`-'`-'`-'>+?,?,MY?,+?,2T. >M+YT!Change Message ExpirationT%T$T-'-r>+?,2MY?,+?,nc . >M+Y>?, +?,a. >M+Ya-(a@@apBa&aMessage Expirationa '5-x 'c pUa secMY?,+?,2h. >M+YhWindow Sizeho(h AutohSmall (Original)hMediumhCustomh}'cMY?,+?,2Q. >M+YQ'Q WidthQd'Qe,Q  SD>+?, M. >M+YM'MHeightMd'Me,M  SDw D?MC?w +B>+?,R. >M+YRSaveR R-(R-(>+?, +>L<?,P. >M+YPCloseP P-(P-([ >b&im &m ,R1&lR&l1|ziSEQ|R)l)qRlziPCl<R<qRll3Rq!G m  geD!*hjq jGjGhGhG Bj<j<h<h<B@j)j)h)h)@ jE9 cN:8-_ }NNn -_ (g-( @r|z &i}i|R&q!D lih[h%h,TpKEYNAME Shhn T{TPpKEYBINDING T4PMUTATE BDBMAPVOTE VOTEMENU` T`$a Th gio;??C !K C-r DC5 DC5 DC5 DC5 DC5 DC54{i D-lga?(1Super.SetupWindow() = false=a?( sNm@ 47%-r@ @ A A ~@ A % ty5  1%%N&H1yy'XHN,Nh|XGyXyNH%tXGyHXNXNHNX, xwsy ssrs1sGs&Gs<s&<s)s&)s 1G1<%1)%1 qi%ui]] $`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,NG1DG)u)uGGyu yl} UlZzI zI Escapel,p l,yl,0 l,9 YlI  B}vM b DBh/H 5h-H %H <i {Y).8ppSET Input b mutate bdbmapvote votemenug b{a pSET Input a  bJ ~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")al@>>>>>>>>>>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,! %8H@O\JX^z" y" Y" \" U*,a"&al@%%.60 J'1F-!,C5$+* GB#2+ 9;A3(:D>'!".4@& <? )/EH 7=8" HHHHHHHHHI@%% @~~~}}}|||yyyxxxvvvtttsssrrrqqqpppooonnnllliiifffdddZZZYYYXXXTTTQQQPPPHHHFFFCCCBBB???;;;999888///---)))'''%%%$$$!!!nS D;{i D-l.P#- -y .!#IiC.!# RiS ..-W U5-W rS  dCpC.dr-J -y r-'r0zi D-l-W t-y 1S #/ n`GsFLzs #1uV1%&Gs&<&&)&1& -s(`&`1zs`G`)&`<-s'`)`)t`Gs -st1t`t&GtGt&<t<t&)t)t`t)t&)t`Gs`<&`)&1 `e-s11Gs1<&1)&  W gV T |`w*w.*V ..`wV *V -(zw#*# KQ1cs ;FocusStartWindowm..QmwQ*zVQ,UTMenuzVQ,UMenum#wQQQX rQ*m#9Q-'Q+Q0 oPSU 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.awa*wa*wa*U DL* }  @]@^D c`@b@d@f@h@@@mD[I%FLj l VL% PL%apB( j KfL%apB( oY WS'-K  -j rR* RLRaR*-j( ph X VbRa ^`wR*REI{h RAh RB-j' qd 9 UPd 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*"zJ&-J}J&J U@|} hT F5|} ,CTF-BTCTF-BT} ~} - A]o):,W.wW*U ,UW]V{U^pp^U,VUW]VS{^^^}^&U ,Z ],V%VUWKEYNAMESV}{U{ WKEYBINDINGU}~{ Z %^pp^{ |V^W ]{^}^|T | %]^^^| |T | &]^  ~R ^L FR S R S  LS|%#rS* rT*SL k< Dq~=H~=&-Qpp[Info] Executing DEFAULT Settings:. Property:q. Value:Hpp[Info] Executing Settings:. Property:q. Value:HO  qqHP  qppChanged Setting:q. Previous value:O . new value:P  EDn @[Info] Starting Mutator:DD 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/!JU.E }~ S#d_AnnouncerMessage:~ T .~ ]wT *. VT ' CXRoXUR J_O A !K 6_=,6_=,6_=,6B=,6B$ 6B$ 6x=,6x=,6x=,WL<Q@wQff?^ A\D?,,dw?\,Q AA^%. 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 88-r'a-@AX.  X ?-H-XKickX-'aXX-( Aw?,^ Q? AszDD _RankMap NameVotes?,?,J.E E J-(J ?,?, w? As~DD _PlayerVotes?,?,c.e e c-(cw?D?,dD^^P  ?,P w BA].  ]%] _?,x ?, i.  i Mode:i%i _?,x?DW?,,, BJ.  JScreenShotJ$J%J _J-A-u ?,KQ?DW @,, @Q?,H ?,?, H?,- ?,-HB.  B(Bd'Be,| H?,-B ?,-H?,| ?J SSJAA ?, ?,z.  zSendz-() ?,-?,-  4Bn.  x ?,-nRand nRandom!n-(P ?,W> ?,m.  m mClosem-(% A^ QAo.  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 _-@]]@iAB. AAB-'B>B-(?,C. AAC-'C<C-(O. ?,AHCAO-'6D=,6D=,6D=,OO%O DO$N.k k?@CAN-'NN DN$?,d. HCAd-'d(dd'de,BBdBddBdB @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 CTFMCTFMCTFMBppppNextVirtualPrefix/NextRealPrefix/ActualPrefix:U/h/B{U zhBBUMapVote: Prefix OK. Mapchange seems to have been successful{] W] z%Rz,H-6szz 6fzH|Bz {6m zW6m z'H{6w zW6w zz EsB0oMlE\ {AAMAsppppp/EE _Ej .Asppp/EE _Ej ppE\ s.tmpppE\ 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(); } BkcEGg%4-kg1g&gKQgQgKg&ngNpSelected Map:GOppSg/SKN}d ,OppSg/SKO YHJ 7H HCrashed map:Hb%tb,@{bajzbaH b3baHOAdded failed map:Hto slotSbb Om4d-X -X -w F%@-X J,&,KJFK(&%t ,d| Error: GetRandomMap() failed for ListSJm,| Error: GetRandomMap() failed -> Forced exit4J,&,t %K{KwKJ\-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"Sh%|h,rk hrwh*h-(h*hk % 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$yTNK%LK,BwK*KK KF>/*************************************************************************************************** * 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); } igbU({.gI,[X]-!{.gIMAP.gIEgT _L?A tS!/ )87zaSwz*}%}, {}zB}zh ~B.UNRh BBh BpQB}Rw\ *\ :B]Bp[X]BhtBT{h(hppLoading Map[S(]hMap ignored cause no filter matches: B}*zaMapListCycle spawn failed lp(W'u ?, oQ (Xz(-^Q P  'MUTATE BDBMAPVOTEQ P u  mAE rDH< xy 1!86pGoing 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-BTCTF prevented from loading wrong map:Wo ~W.UNRo WWo WpL W}y~cTUTORIAL~cINTROHwM *HM :W]Wp[X]WetW{e((eppLoading Map[S(]:eZWMap ignored because no filter matches: Wm cbyc&R cn %稨[MV14] [Information] IgnoredSn Maps with Prefixycause mapcount > S&m %稨[MV14] [Information] IgnoredSm maps because no filter matches. qj%{YjH H $j d}d ,~d gAK%OppSg/SKg%NpSelected Map:GNmg%NO  E$ |%W|,Mr|jb|| |j RJcx.JiE%,c%c&"A.Ji1(!{.JiMAP.JiB c8"@.cC(!{. 8LKICK. 8LB ?8<(!{. 8LKICK. 8LB  O$|%|,r|jE|| |Qj BcL Cc'L )z&{B SAYB 'B L ^( w$*{.$I,[X]-{.$IMAP.$IL mL Jcx.JiE%,fc%c&"A.JiL X(!{. 8LKICK. 8LL n(VOTERANDOMMAPL Ic8"@.cCL  $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 IDppppbrowsing F C :S} vF C } ] {}c V}&}(Dz} 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%CL,9L V_L&L Bxe  x%x,-6sx{6@x06@x -R%|6@x, MultiCTFGameMultiCTF detected. Fixing Mapprefix to CTFM0CTFMRr0*ppMapVote: Error. CustomGameConfig[Sx]: Failed to load GameClass:6@xz6fxf0f6fx-t!00fC 0fC6@xx Lc 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-vpDetected GameType = V-I(-E(-z(-@(-A(-C(-k( |VC-I'V MBOTPACK.LASTMANSTANDING-@' qBOTPACK.TEAMGAMEPLUS-A' BOTPACK.CTFGAME-E' BOTPACK.DOMINATION-C' BOTPACK.DEATHMATCHPLUS-z' -k'ZV%-kHZ -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!HHfC5 HfCZaN-veCazWElimination(K(% ]%]%q!M-M\q!-[cOp[MV14] Maps Reloaded. Total Maps = S(r-w [MV14] MapVote configuration has been changed, Re-Open Voting window for updates.'-w (-tg-v ( gx:nE/*************************************************************************************************** * 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,nnn,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 Euhuocu u?,pApA I- {u  rc*c.u -'[wc*6u=,6u=,6u=,B D%w DwA D8u?A ?B ?w ?w czwx*x |wy*y ~wX*{YXYPlayersX wbPDb RKk uQK%SK,I-6sK{6@K06@K Iw0*x0-R%|6@K, MultiCTFGamexCTFMz6fK6fKxbI{6fKxQppppQ6fK;x;KPrefixDictionary:Q %M`D` PbH$D =b U`g &Storing Maplist to file...Ha PHp (%HN`&``(`HN `'`HN`^Ho QHbHaStoring Maplist to file finished:S( L\ \[Y s PXTf w|Loading Maplist from file...s D%d&b&#b Pp Yb PNs : Y]Yp[X]Y-F ZY-[|Y,[X]VpppV-Sd-dYbH(d&Q Po Loading Maplist finished:S(s a f$SXK\NA-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< :,@]geYQZ+ pSQ$@QKk)K404 ErrorDw=


Information or Server Unavailable
b N@_~@^Au4$HA` d6@ }826 6`Uh6NextVirtualPrefix:Ubsz6?RestartwH*-k83b|6}HHhHK-RK|VH, MultiCTFGameMultiCTF detected. Fixing Mapprefix to CTFMhCTFMNextRealPrefix:hbW6pp6.unr?game=ZN%N,-6sN{6@N83.106@N vr0*ppMapVote: Error. CustomGameConfig[SN]: Failed to load GameClass:6@N6fN6fN-R|6@N, MultiCTFGameMultiCTF detected. Fixing Mapprefix to CTFM0CTFM8{6fN83.2aU6fN5|U6fN83.2bh0-R|6@N, MultiCTFGamehCTFMNextRealPrefix:hbW6ppph6}U.unr?game=6@N83.3aU0|U083.3bhh6NextRealPrefix:hbW6pp6.unr?game=6@NNW66, DDM~BotPack.DeathMatchPlus\ YAS~C\ 6, LMS~BotPack.LastManStanding6pDM6,. TDM~BotPack.TeamGamePlus6pDM6,. DOM~BotPack.Domination. +CTF~BotPack.CTFGame. hh6NextRealPrefix:hbpp6.unr?game=~ ff ~ 981/a0 f 6f Tf a10 wil7|le'e& *bze&*we&}e,b~lw%'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,[-vzN,&:NN}N,N qZ L zZ wZ  )&t 4,n ?,j J,e ERROR: GetMapPriority(): Mapname has no Priority attached:Z ? Dn%GBsV~V.D. v.H{DvD-(D-(D?,-DD$ D @m{5v8Map 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 %gL g-p-
L ;-@ -p-t%-ppp-{S -ppp--p-j{S -p->t%-ppp-Z-@ -p-{-} -p-
-p-wv*v q- vpw Jp& @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-uSvt.I nn.I v,N{.F 7v.F  -p-uSvNt.F nn.F v,{.E 7v.E -q-uSvt.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 XJ G_ J GT~X:vT%q,PJXT&,Invalid web server port XXTqJXT&pWebServer=XpFilePath=_ pPort=Sql {{ZN{ {]%],@{]a||{]aMap found in crashed map list:{']( sa80---------------------pStarting A Index-> SspStarting B Index-> Sz-s%s&z%zs&_s(8z(Z s'] z'ZpZ&Z]p]&]I ZE ]r- ZZ~Z-&]]~]-&yZ]zZ] xI E 5J sszzJ z5VI pLast A Index-> SspLast B Index-> Sz\z(szs&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); } } } } ylQuery()...-D'g UHww*wD*wawaNwDwIX_ q-G( }Ks\0KIrv @\*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)TUTT8H )TH*Clear% -BK% {KV K, &H*KVKKH *K1079 R@Iha[@ 0&h Fy u Q,hAy Y u r,hy Y u hvha ~l&l  s @FCf=Kv mf bGbBrowse FailurewD*waw*kSk|l g Pk%=


Information Unavailable
 I`4g wD*waw*k% JaI[ aY C HZ@|N@|th,:,:, PߞYQZ=$: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 H72-\ Z%%?, 5H%ZW yScoreH/K AccumulationH/?j H/LHPlayerVote[x]:SHVoteCount[PlayerVote[x]]:UH/#- -p #?Z?-\?,d?I73Mid-Game Map Voting has been initiated !!!!-p '}~ }&a?'|%&<(2/?%|%|&F&F|/F/mFFmFcCb-\ZppppNumPlayer:S-\PlayerVoted:SZPlayersToVote:SbMaxPriority:U_zWEliminationzWMajority?b_%/:&/?bL&%/<,/?bL,%/<,/?bL,%/--g '%|Upp ,U/,|U]D%/&/%/?%74T&&|%//TZmTZQb#~Z.ZZ~Z.%A|Q mZmT7&,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-mZ%-\%I& mzWElimination]]]bzWAccumulation_m77 V{_70X%X, {Xb-e (/a0 mwm*m-wm*zXbmm(H{-e 'XQ10-e XbXQ%XX%uX, X "bXbX "QXQX "71 dbZ b. ??lB AbServer Infoc. pB?lB AcMap InfoV. B? C AVReport 1: Map Vote RankingV-'W. C? C AWReport 2: Map Vote SequenceW-'f . C?B Af AboutZ DS?TZ ?, W Aa . Z STWa Close Yuj|ʮU68/a0 dwd*d-wd*duZed10ze%~%~, z~be_ ~Q~_ %_ ~%G~, =z~b~be~Q&~69& [@f^qKaV67/a0 fwf*f-wf*fqZnf10n?&n?n UX%9aR.!XZZ $X ybv{R[ RRR[  c{RY eb#P ~e.P %eeP {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); } _[kK66T unknown/a0 gwg*g-wg*g[T pp000S[,g10T  bO2)_64[%S[, I[Z-O (/a0 OwO*O-wO*%O[Z-O '10I-O Removing Player that has left:S[Z-B.p000S[Z,[H%[\[Z[65 ZeiM D-l(-e hg3263/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 6w=,6w=,6w=,6D $6D $6D $F.j j AACBF-(Ff. WCBHBAfSet/Savef f-(f-(@.  ACC B@@,@ w@-([ ko.@263/a0 \/\ .o10 gv7g.*Fwg*ezv`gqF gFg.*g tnSQB61/a0 U5USn-t1062 mngr/*************************************************************************************************** * 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[L1X%X,z.*F J *jpKEYNAME 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 Korq!8Krr/*************************************************************************************************** * 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); Lw{ P59L%BL, 8LZ{ LL-y59bL%L, LZLZ{ LL]ppMapvote: Could not find PlayerIndex S{ . Already left?60 pw 4h[ 7%-Ew w s s ~w s % xLC*LiGLCH |Q57 Qa/!' /a0 jELKrQE0 10u a jQ Q ru *#### -- PostLogin :: Fail:: Could not spawn MVWelcomeWRI Cu Q58 v~ %u ?~ } } :$~ 4fh7 =  }q uTq a/!', 9:q ,,:q  F|Tf-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 Vs -W-tY K-] -vf V -b -t-` -s k ~ -\ -o o JR I-n - -X-F-U-[A C-r -a  @{@h OY.*FqMUTATE BDBMAPVOTE VOTEMENU @IY T%pppSET Input I | .*Fz |  BAO6O$6O$6O$O O]m6O=,6O=,6O=,O A ACPA 6O$6O$6O$O%(OpA0AKeyboard KeyOB0AConsole CommandsOB A?PA  KrsE0eKsGzN52: 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 PwP*P-wP*z uP{ p000SP,OppSz { PP'H%OpO&?&!&SZO10p%{pU p, &p}pUpp}-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); KHtI[zKtNf q4/a0 frf 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); KKvL[KvTS 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 Cp10-p| Active MapVoteWRI count is Spp%/a0 c`[p100p| Active MapVoteReport count is Spp%/a0 $Ap101p| Active MapVoteHistory count is Sp!| Cache mode is:T-[L-[!| DisableMapIndex:V&+----------------------------- z,, BDBMAPVOTE42z,, ,VOTEMENU432N' z,, ,RPT201p%/a0 c`p10p%TSorry, The server can only run one report at a time, please try again later. `a cw`*`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 JG ,,_-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]:9a9  9% Mapvote: No maps crashed)---------------------------------g z,, ,CLEARCRASHEDMAPS46ag -9%. 9,@9a9 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 lmC@  !K (@ c%?,l?l?lC mzD%lmDC mzD?,dC )\?%?,dlף?|?@ @m?@ \m?,?,k. lko(IkgMaps/Kick .IIkgConfig l y.l IIkgInfo !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 iSl & l ,K .l & J K IO _M loZWM J~J.U{M >Jp>.MapVoteHistory1JJb dPfYT:-P \z jECz & z ,z & @`H JY8^wY*Gz. YLH  YYN . 8 J N LH N -` -W  jjKlPFj[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, jZj\j_^?Dt Dn Dj e MaxPriority:U_ET-w a } j Q l 0C 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.tn8rwn*[z. nL&,Ynr nn rejjO$/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{o8ywo*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(); } llhLwX*X-(XKick8-r( op)8|zpClearYwJ*U .JiJ h~p,h%jph^ Lph&@JRw@*;z.@ij.@H B &.@O ^  @@@.J J .@H B &.@ij.@O ^ zU jJ AU  quX iTNc37aX  zX (q%Tq, 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|shL37szs(\ ~s:S\ [ s\ ^[ sk%k, zk] [ 'ke38( @pZ*KzZ zZCleargwc*M .cCc ^~Z,^%fZ^h JZ^&awc*|caw|*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 dKo35ab  zb  t%bt,Xzt` t` b  t'36a v]+J35vzv k ~v:Sk i vk ^i vu%u,zu] u] i  ue36 wi&\t Z-N {t t i?%-N '] @x EuGFPlayerkicked:Sx y bwb*b-wb*bx .r.b*w..b*pb has been kicked.'| .b]| dy ,o-BA p000Sb,.p000A ,/a0 ]rb]]T]a10ba bb834 FOZ*=30E-\Ea/!' -\ -B 2R.E'RO(R\O( owo*o-wo*oOr..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'ooS%=S, 3S\S\lSd%S%S, }SldldSSK%-k%?dl?-\?,d?V 31EdZkdZdH%dl%d\dZS%S, {Sl%r VppkSZ,SSlS,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& [@ImG5628pp.a has voted for  m-\aa/!' -\zm,[X] m mFimDF%"&m.ap.a tried to vote an unknown map!B-[H.a 2P.a'PPHFzF,[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); } NxHr4W/a0 MTSwM*rxMMfMT10 C}?Y95s.}C.CC& URLWm-%25Ha/!Xa/!E(a-o A%aA,W-6sA{6@A06@A +r0*ppMapVote: Error. CustomGameConfig[SA]: Failed to load GameClass:6@AWW|0(AZa/!F26A%2A.(rU*<UA.UA.AA%A.UA<UA.'A9!27U{wU*dU-wU*>rO*1UOOUUUU!wU* U-wU* wOU1UO'UU( RV H Z?95s.Zi.`i& SP&01",-o -o '%-tf,q!MJ'{{''{16b{'CurrentPlayerCount decreased:S{2'%H(]p  U,U%15U 16U%/a0 2tsw2*w2*2p t10p r2*2-17 pppnew Player 2, 2-B18}h219ap2 has been refused access to the server (1).'2a i219bp2 has been refused access to the server (2).'2a ] u2X p000S2,V ppS] X 220d 2'SV d H&-M*2a/!'-C -\21<a/!X.-22 ~-23{-s N2-\224-a`&\` VpDee7-\65?q ,pNextURL = pNextSwitchCountdown = U5z7?%-FJWuF",WuI& ux @uY Kx ( x}%8}v}%9a/a0 qNMwq*<q-(qa/!'-\-C wq*iq'MiiH%Nq-\-C 10pS} seconds left to vote.' }},<101 Minute left to vote.'/a0 pwp*pF, 10}, 1110 seconds left to vote.'c},  }%/a0 pbawp*p F}102G?}?,?% }%12R %/a0 q*)wq*q-wq*iq')i)iH%R 10GR %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 Dx @eB-da?' Lg?95s. gL. kL& [@baVHandleServerEmpty() -> EnteredappU-Qb#l~a.aa~a.[Fh,dl{[,[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^zm10-s W2(a/!X4.-bDefenseSet false, Ending game normally.(First half end)(5w.*.-'}~ }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 hsR sLsu sispswsU hrsl svsmsW sV ss soB,sssksT st h{s_ [F sZ in sQ sQ sq sT i_ oV kNsn i~ iMw] IB sXkOs stq q@ qB sI sP wh s^ isS iBqE L_oF sv sS iNiD L] gsiRs\ hHLfpT p` sw sFiv slk]kPsWk|oSwo{wa krsJou wE hqiNiu s[w[ qTwsO so sc kMsV sgsosi sv sO sZ snsf sg ggsZoj w^ wsIsBsFoSs|im sDhZsH sGi@ sEi|w%sm sqsCwksiyojpjkVw&w?oQ shwGktwiww%iNiVD[wDkVius\wwiFww_ wfoMopiILTIA iM iW wf w` p_ pawiAw&sBszwX k~iTsDpXsNsh sX s\wL olwD wzq} sw iQ Dds}k|wKiG sjsEpapfwTwpiphw{ wss@wshpgoNpj[t wLiR oaLg pjizkCoaLcoaoNx g@koLc oJ oO oloxLMk wvg[ww}wg wr wq s[wBw]wjkwjupUwn oioF iSih wLwAw|wTwDw~k{wF wKs` LMLAiN o\L`wLkX wZ k}kHwc oS kU iJ iRkY iIkJLOoPpAw~ pLpKRff${Bc ab  mdaz"v  ["] hXjuBb _Bs(lBW _[jkg{U] Prj]y G"dUpQ$dn uc t \@wNBX \g  hb uz  BtjOo ya  Ej Rh `j nr  |YNIPXWOgoZux_Oz  n[  {"U H}  UyjaW Ks  XG dx  po  }"A I@ XRI e\Q sh DP R\  _h l|zz  H\  U~Zb{  | z  Hc Th a@`  oNz  |OI"UWmheskMh xe  F"r R\  ^}jb y ]  Fb Sz  _h kwiyT bf  o@g  |X IN{ V @dt\  rg  X L"p  X"z e"K  r"J ;f  LBGX g  fhs?k A~OY^wtl@L  `\ m"a z\  Ga}TW[Q  l`  x~ D@k QA  _Sk l ^zf  H q  Uz  b\  o!C |{z  K mW  e{^ ruz  @"  Lg  Y ff0d tq  Bn\  O]  \!iZJxjVBUQ"@ `Sn|z  Jg  Wq c^p]Y MqY"X g~q vSC"b Q h^"y l{ y EFk  Tg  aV nl  { pH lV U dFl q{  jlL@p  xW  D G  Qh ^dl|  zR_w G"M  ~` KF\  Wt  d{| q{z  ~%p Kj Xg  f"h rE]  R LU Yq  fh sKz  A GN7d \uz  jawk Fh Sg  a"P n[  {M HE Uh c Hq{ INd]$<llN  Xoe\  sL  @{ Mn[O i RvlDzR"x aBE n!l {\  Hb  U[  b joN}^vK1j  AfN"k  ]"j  jYw `FXz  T"L  a _nez  |QHuh VW d@o  q b~z  Lz  Xg  e>s r} @D  L{  Yh f!DtR C SPd ^b lq  zy  Gxz  SP `S mjX z| GBdT Abh  p B} CK DYj g Bu"I Dq  Q{  ] zjf  xR EFe  R"V _"i lr  yg  F;g  S;z  `;Jmz  {\  G] Th  c"r  pO }xJq  Xz  e[p rPz  t] Kk Xh fk tk B  Pm]f  l` yQ Fk Sz  aQ nQ {h H3F  V \  bz  oO| XJ YX Zf [t \B ]P{^  ^^  j kw>a  EG  R n_ omL  { IH JVq  d KqP\   LLYT  ZYS  g Nt OB PP Q^Nl"l  zp GPTv  c"s  p"t  }"z  JIW` ep r"B "C  N;T [_ h d u%v  CRQOe  ]ua  ibvc ujpBY PU ]Sb  jv  w uD d Rf _)d  l,d  yS{ F*v  Uj b MoC[}s  Xa  dy  pz  |tW  HnM U_H  d_z  png  }dL J\m  Vn bF  nKX  z"{ G?c T?f a"F og  |  Io VU cg  p` }g  J\  Wk di  rb Q Mg  Z^  gu  th A}}  O a\GjpyK  H|U}d~sB@ QA`BoC~DMz  \nhrwz  Fh S$g  a"o  nr zNGzUBcCqDEM5B  [<z  h=z  u=B  BFOG]HkPy"{  GQ T"}  ay nW {X H[ UZc[qi @l MFm  [c hBi tRz  AXM Miz  Zzz  fIj  r\  Nh L`KZf e-`t"p TK aNvmDQ|DRJz  X"d e7_ s[z  @m Mx  Zu\  f\  s"[  @"\  Mz  Zl fx  stH  @U MluZnH  hXc u"V  A!v  Nq [\\  hT uXmBxP!n _Vy  lLK xe ESm R"k ^Bf kBex rF"u T\  aE^  nv{Ek q?e }"t K"s X"N  e"r r "q MO  ZJ g>] t"p A6W  N1H  [q  hVuPe  D@T  PP ]I j@b  yH Fc  U"|  bMoE}FLz["y  jLwKE?j  S7k `"x  lJy{  GDOTDPbz  p]  }7]  I;LV0k b@ o0\  ~5z  KDw Xh  dY  q'h  }0_ J2z  W } d U r"E ~B Ko  WG dq  q\  ~f Kg  Yq  fbrcAmP [  _d lz  z c GZ T"c a"T n]  {T  H"R U  b"N oo | ^ IyVd e sC  @u  Lb Yq g ] t` Aj  N[ [u  hh uJCKRkaLps MLg [hhiwL E"| RN_K n_ zK  G"} TOaa  p_ }"~ IIV` eJr_@|  O" \R i^x}  G]T| c a  rT  ~\Kb Z[g$y v}  E|  Ry  _p  kh xZFj  UYay  pv  |y  Hy  Ty  `Xl"z {U Ik UW bHo h ~]  Ln  Xh  e ~  r2]  ~GKc Z5s  g5{  s"u  @0h  M[  Y"v  fDNs<]  A"z Nv  [U hDSt_  B7h  O=s  \{ h={  v TCxQ``"K o"U |@IJ X"M g>n  tT  A4LN"F  \"G  i\  v*Z C;q  O;{  \9\  i"O v FCd Q{_o  n"L  z ~ G"^ T"P  ag  mQ zq  GI T|  az  n}  zh Go  UBg a qmSc  {, H@D U%G cV  py }YR  J!n W\  d!m q"Y ~ iKXn Y!G  f n  s gXq M eZ"Y  h duj  C! Pnp  ]_q i"W  vea  C@gPtJ  wtI  Dtp  Quc  ^ Njtw xUEz  SO `"]  mW z{ F cR\ `ua  l}  ywX FH R|  ^Z  jc wb Dwk QW ^"Z kwe x]vEui {xx  Id|  U"[ atG  ntU{t`  IU  Vqx cqP ptx }T J` Yu  eR]  rtK  Rd  K sX ufT  tnU@Ry N wZ xh yv zD` Ru  ^Re  kXp xXo E {R }` ~nR  |P  Ii  V@M  bFd  o"E  {"D  H"~  U@q  b~oY_  ~V J}W@C f?T  r?]  KY  L%U Y?B  fE s@C  @"` MF Z?d  g0z  t*x  A"t Nn  [` hu  u"]  Bm  Oj  \z  id v}  D e P>u  ]>R ji v<d  D<e  Q;g  ^;|  k"N x}  E"L Qz  ^;p  k"i  x3\  E"d  RV _\  lb x"J  D1k  P_ \0}  iY v b B]  P/j  ]C ip  ug  Br  Ob \q jPV wPU Dq  Qg  ]R jewR Ez  Rj ^k kf xy Fd  SZ `i lh z\  H  TQ aH mnzT"If k"Y  y"m F"n S"H `UIm"G vR C"x RR _U lb x"k D"Z  Qb ^W kj x/!FX gh sv  Ai NT  \j ii  wr Dt Pjq \j iv  wp C\  OU \x  hT  u\  Bz  O\  \jW ilfv"@ \\  iH v\  Ce  PU ]y  jn  we  DR Q"l ^"T  kU  x@E]  SE `FmA{"n I$zV  t$v@N ]$iU GQ T{  `P mv  zeG$AVO tN A$cNM lP y$:F"D c` p"C ||  Ib VB d"B r"A J  Lz  X"h df q$[~m\$FkM H"g Uh bg  pq  }L Ig U_ af ng {f Gh Tg bz  n_ z"f G"e Tq  a4f  nH  {4T HT  U0q a0^ m @z4f  IE  Vf cg p_  |H I@  UB  bn  oj {t  I1k V4{  c\  p4g  }g  J@Wh kA  yf Eg R\  ^|  k>b  xA|  E=I Q=w  _Ag  lo  y"n  EAT R)T  _,T  lg  yq  FE\  St`V ou{"w  J\  WwdE[  s\  @IP  MD Y%V f>K  sJ @Oi MLG  YYU  fRV sLH  @\  Mf Zg g!@ sD| D Mw  ["_ hIJuXb C3^Ps ^!z jJ| wf Eg R"Q^d rXS ~J K!K Yf  ferr!J @!xMg  ]q  jW wU C"\ P!{]]  m!| znG  GnW  Tngala  q!} }g  Jq  Wp dq  qQ| }g  KR XA eqy rz\  ~Q Kp Yd fg rVa  V\  KA  XW| e[_  sp @c|MW I\| W\ et  sf @ub  MXGZuC  ht+uux  `Blmxz  YxC  eg;rrzC  dJUSpeC}K  B&TO1wcjZfvDozDT/i4DX\  \d1wfdh]dkEC  pq  |g  Ikv V;avz  W td3f6r vh3@|vC  r a~3W_C  v |BbP3G[OC  jS  w3nDQ  raH`^GC  e_irjG][C  xjMDmuQSFz  TDkaz  Lf-YDd,FC  jVXw| OA`\v| DUKh Ox  ]Qjl  xm  ENRGf `{  F %m>Ri 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 KAa_C  _ { 4P l$S|iC O3{ 4Q>]bmnL&["!@A(8AoC  yuEA"zD\" j z%Cd{ 4ZgIPA"cbQ{ 4ZsxPM"em]zC  J{ 4ncD{ 4o:a{ 4BPP{  R{ 4vb_jFU".>[{  Yjvf"SK\g  gq  tz  A{ 4}Nj[wKKr[B{ 4}]C  Z"dg{  Kj4DX"C:\"JVC  `C  lj%Mx"u]E"|x bZ ZjhYfZ jYZKN  eM  qjR~Ks[P"NZk"{mE { 4}rKt[o"qpJ { 4}zKv[wC  R"VK^ U i _ v ` C a P b ]"Tw5j${ 4GaC  h">>u zs{ 4gm{ 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  @#{ 4sL#"PO$ ?GN$[q U$[x a$WC  n$"VSz$?GM$bk  T$bC  a$\C  n$"{ 4D z$ { 4q~/"zyo2"\  h2t{ 4h r2Y^  Z2