Áƒ*žE:@ïÂߥÚÀƆ™ÌÖ»F0„vc·ï:None GetMenuBar AddMenuItemSetHelp SetCursor GetValue2CoreUWindowModMenuExtensionSystem ActionAnimsActionTweenTimesActionAnimRatesUMenu ExecuteItem SetupMods GetNextItemAlphaNumericExecuteSetupSelectSortClearCreatedUTMenuCreateSubMenuPlayBreathingEWindow BreathAnims HideWindow ShowWindowRemoveAmpersandGetActionAnimSetMeshLaunchUWindow ClientClass PlayActionAddItemBeforeExecuteItemInsertItemAfter ListClass LoadModsTickAppend LMouseUpIsBreathAnimRemoveGetDefaultBreath DeSelect MessageBoxCloseUpResetUWindowSetMultiSkin ChangeTeam BeginPlayAnimEndServerChangeSkinLookPlayerSetupCaptionWeaponPriorityCaptionPlayerSetupHelpDisableExtensionCaptionReverseOrderHelpDisableExtensionHelpPreloadModsHelpPreloadModsCaptionReverseOrderCaption ClearSkinsOldModMenuClass UseSelectedbUpdatePlayerSelectionGUISkinMenuHelpGUISkinMenuCaptionLoadErrorTitle LoadErrorExecutingText LoadingTextMoreModsHelpMoreModsCaptionFocusOtherWindowbMoveWeaponPriorityCompareBreath3 SetCaption LoadClassesThrustSetupSentinelFlipEnhancedItemsEWindowPlayerMeshClientEWindowPlayerSetupClientEWindowPlayerClientWindowEWindowPlayerWindowEWindowPlayerSetupScrollClientModMenuConfigMenuEnableMenuExtensionEWindowMoreModsMenuEWindowModMenuListLookAndFeelModMenuItemEWindowLookAndFeelWaveIterateVoicesChat1 MenuCaption MenuHelpWeaponPriorityHelpEWindowModMenuItemEWindowModMenuConfigMenuHelpTaunt1Breath1 Victory1 ChallengeBreath2ConfigMenuCaptionPlayerSetupClass PlayerPawn NextPagePawnActorMesh OwnerWindowSetAcceptsFocusCreateWindowItemsbWindowVisibleWinLeftCaption WinHeight WinWidthWinTopRoot bDisabledVBorder TextBorderCursorGetPlayerOwnerPulldown_HBorder bRightGrowHBorder WaitCursorPulldown_VBorderUWindowPulldownMenuTIBITSBSNewPosGraphicSubMenu LookAndFeelMenuBar SplitterPulldown_ItemHeightPulldown_TextBorder SplitPos SelectedOptions ItemHeightUWindowListControlUWindowComboControlNewTeam LoopCountUWindowScrollingDialogClientUWindowPulldownMenuItem NextPlayerLeftClientWindowRightClientWindowTextureNormalCursorXCYUWindowRootWindowUMenuPlayerSetupClientNewItem ItemCountUWindowWindowPackage CurrentItemItemTop UWindowListUMenuRootWindowUMenuPlayerMeshClientUMenuOptionsMenuWeaponPriorityWindowClassLUMenuModMenuModHelpUMenuStatusBar MeshActorUMenuPlayerClientWindowUMenuModMenuItemUMenuMenuBarNumModClasses InitializedModItemNextModClass TeamCombo ClassCombo SkinCombo FaceComboOldInitializedNewMeshMyMesh StatusBar MenuItem MeshWindowModMenuClassUMenuModMenuList NextModDescModList InModList TempItemMenuItemClassNameBotpackVoicePackMetaClass NextAnim TextBufferNumPlayerClassesUTPlayerClientWindowUTPlayerWindowUTPlayerSetupScrollClientUTPlayerSetupClientVoicePackCombo NumVoices NextVoiceObjectNewPlayerClassUWindowHSplitterEnhancedPulldownMenuEnhancedPulldownMenuItemtmp AltValueConfigWindowMenu FunctionPlayerReplicationInfoDynamicLoadObjectWindowConsoleStaticSaveConfig ReturnValueGBSt ScriptTextijExecuteModItembStillLoading bAllLoaded bLoadedList bExecuteNowUsedRootHeight LoadingTickLastProcessed ConfigMenuGUIConfigMenuNextPageItemPriorityMenuPriorityItemWtempTest DrawScaleAnimSequenceTeamGetNextIntDesc DeltaTimeUWindowLookAndFeelResultbPreloadItemsbReverseOrderbMeshEnviroMapTournamentPlayer bCheckedPreItemCountWeaponPriorityClassName bLoadedOneModItemClass PreloadModsReverseOrderDisableExtensionMoveWeaponPriorityUpdatePlayerSetuppos ParentMenu NextDescMOwnerNextConsoleClassPlayerWindowClassEngine StrPropertyStructPropertyClassProperty bBreathingNameProperty AnimNameObjectPropertyFloatProperty CheckedAnimBoolProperty IntProperty ModListItem HelpString bNotFoundModMenuItemClass bDontShowReverseByteProperty•oSjÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«ŒÁÞ•¦�Ùc~˜ˆc~˜ˆ’˜~D’˜~D’˜~D‹Õ¶mê‹Õ¶mê‹Õ¶mê‹Õ¶mê‹Õ¶mê‹Õ¶mê‹Õ¶mê‹Õ¶mêc~˜ˆ’˜~D’˜~D‹Õ¶mê‘ žnKkÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6\c~˜ˆžÜ¡$ÅŒo ûŒo û†ƒïP§Œo ûŒo û«ŒÁÞ«ŒÁÞ�Ñ”ŠÏ«ŒÁÞ«ŒÁÞx¿«ŒÁÞx¿«ŒÁÞx¿«ŒÁÞ«ŒÁÞ�Ñ”ŠÏ«ŒÁÞ�Ñ”ŠÏ«ŒÁÞ�Ñ”ŠÏ…;aG°«ŒÁÞ«ŒÁÞx¿«ŒÁÞx¿«ŒÁÞ†ƒïP§«ŒÁÞ†ƒïP§†ƒïP§Œo ûŒo û«ŒÁÞ«ŒÁÞ«ŒÁÞ†ƒïP§«ŒÁÞx¿«ŒÁÞx¿«ŒÁÞ«ŒÁÞ«ŒÁÞx¿«ŒÁÞ�Ñ”ŠÏ«ŒÁÞ�Ñ”ŠÏ«ŒÁÞ«ŒÁÞ«ŒÁÞx¿«ŒÁÞx¿«ŒÁÞ†ƒïP§†ƒïP§Œo ûŒo û«ŒÁÞ«ŒÁÞ«ŒÁÞ«ŒÁÞx¿£> £Y‡�â®l‡�â®l‡�â®lx¿x¿x¿x¿x¿x¿�Ñ”ŠÏx¿�Ñ”ŠÏx¿�Ñ”ŠÏx¿�Ñ”ŠÏx¿�Ñ”ŠÏ£> £Y‡�â®l‡�â®l«ŒÁÞ«ŒÁÞ°¼ÔŒŽÀµ¼äc«ŒÁÞ«ŒÁÞÀµ¼äc†ƒïP§†ƒïP§ŸuX*x¿x¿x¿«ŒÁÞ«ŒÁÞx¿†ƒïP§†ƒïP§ŸuX*«ŒÁÞ‡�â®lx¿x¿x¿x¿x¿…;aG°x¿«ŒÁÞx¿«ŒÁÞx¿x¿Œo û—K4èž—K4èž«ŒÁÞ…;aG°áÔÞáx¿Œo û’˜~D’˜~D…;aG°Œo ûŒo ûŒo û†ƒïP§Œo ûŒo û‡�â®l‡�â®l‡�â®l…;aG°…;aG°…;aG°°¼ÔŒŽ°¼ÔŒŽ°¼ÔŒŽ°¼ÔŒŽ—K4èž…;aG°…;aG°…;aG°•¦�Ù‘Xr]Configure Menu Extensionl]Configure the Menu Extension.N] More ModsM]Display more mods.L]'&Please wait, loading mod menu items -K]'&Please wait, loading selected item...J]™WThis item could not be loaded and will be disabled. Check whether the corresponding mod is installed properly. (This window will close automatically.)I]Error loading itemH]GUI Skin SettingsG]+*Display settings window for the GUI skin.PÓFÓD]UMenu.UMenuModMenu(‡mjaÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ x¿‡�â®lˆc~˜ˆx¿x¿x¿x¿x¿x¿‘ �$&-€…,€…m†C1@)6@'ˆ�‡’h^`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿyáÔÞá’˜~DŒo ûŒo û†ƒïP§ˆc~˜ˆŒo ûŒo û«ŒÁÞ«ŒÁÞ�Ñ”ŠÏ«ŒÁÞ«ŒÁÞx¿«ŒÁÞx¿«ŒÁÞx¿«ŒÁÞ«ŒÁÞ�Ñ”ŠÏ«ŒÁÞ�Ñ”ŠÏ«ŒÁÞ�Ñ”ŠÏ…;aG°«ŒÁÞˆc~˜ˆˆc~˜ˆ«ŒÁÞx¿«ŒÁÞx¿‹Õ¶m꫌ÁÞ†ƒïP§«ŒÁÞ†ƒïP§†ƒïP§ˆc~˜ˆˆc~˜ˆŒo ûŒo û«ŒÁÞ«ŒÁÞ«ŒÁÞ†ƒïP§ˆc~˜ˆ«ŒÁÞx¿«ŒÁÞx¿«ŒÁÞ«ŒÁÞ«ŒÁÞx¿«ŒÁÞ�Ñ”ŠÏ«ŒÁÞ�Ñ”ŠÏ«ŒÁÞ«ŒÁÞ«ŒÁÞx¿«ŒÁÞx¿«ŒÁÞ†ƒïP§†ƒïP§Œo ûŒo û«ŒÁÞ«ŒÁÞ«ŒÁÞ«ŒÁÞx¿‡�â®l‡�â®lx¿x¿x¿x¿x¿…;aG°ˆc~˜ˆx¿«ŒÁÞx¿«ŒÁÞx¿x¿Œo û—K4èž—K4螈c~˜ˆ«ŒÁÞˆc~˜ˆ…;aG°áÔÞáx¿Œo ûŒo ûˆc~˜ˆ†ƒïP§ˆc~˜ˆŒo ûŒo û…;aG°…;aG°…;aG°‘ (@Ll€B@J@h@m€D†C5ihK•ˆ�ˆ�@�…#•Pˆ�ˆ�g€� €…2@3@R@V…"=•_†4’^s@j•‡…cv‹!f—W—^SE€@Y@vc@ˆ„A€„@@UxPF…<@u€�l€@y%@]@€…a9€�@Nw…‡i@+•ˆ„I€…? €‡|€@×Wo\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2t†íª>׌€?b‘ #fTX|\F€@H€@€…@€@~€@X€@B€€`€@ €‡€ßZ€àd€@O\€—€@L€@M€@N€@O€@P€@Q€@R€@S€@T€@k€@€y€Ø]p]ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWüÍ1kØ[w` ‘ #YJ€@ºOsZÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2(Y/s0•º?Ä£> £Y¡_ã‰4£> £Y¡_ã‰4£> £Y¡_ã‰4£> £Y¡_ã‰4¡_ã‰4¡_ã‰4£> £Y£> £Y¡_ã‰4¡_ã‰4£> £Yð{#U¿£> £Y¤ÃûFóˆÛžtȤÃûFóˆÛžtȤÃûFó¡_ã‰4¡_ã‰4¡_ã‰4£> £Y¡_ã‰4£> £Y¡_ã‰4¡_ã‰4ˆÍÒxxœ£> £Y¡_ã‰4£> £Y¡_ã‰4‘ U€¤GHYÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2[Õ) ý¤ÃûFó�°9Æ�°9Æ�°9Æ�°9Æ�°9Æ�°9Æ�°9Æ�°9Æ�°9Æ�°9Æ�°9Æ�°9Æ‘ R–n–q d –o –m –U –W †9 –f –p $€? ¤€? ¤€? ¤€? ¤ff¦? ¤333? ¤ÍÌL? ¤š™? $€> ¤€> ¤€> ¤€> ¤ÍÌÌ= ¤ÍÌL> ¤€> ¤ÍÌÌ>]uA€�r€@J€�gI€—’a@^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2yeµµª•’˜~D˜‘imŸ˜‘imŸ¿{Oêà˜‘imŸ¿{Oêà˜‘imŸ¿{Oêà˜‘imŸ¿{Oêà˜‘imŸ¿{Oêà˜‘imŸ¿{Oêà‹Õ¶mêˆc~˜ˆˆc~˜ˆ•¦�Ùˆc~˜ˆˆc~˜ˆc~˜ˆ‡�â®lx¿‡�â®l‡�â®l…;aG°‡�â®l«ŒÁÞˆc~˜ˆ‡�â®l«ŒÁÞ‡�â®lˆc~˜ˆˆc~˜ˆ•¦�Ùˆc~˜ˆˆc~˜ˆc~˜ˆ‡�â®lc~˜ˆˆc~˜ˆˆc~˜ˆ•¦�Ùˆc~˜ˆˆc~˜ˆ†ƒïP§•¦�Ù†ƒïP§ŸuX*c~˜ˆc~˜ˆ«ŒÁÞ†ƒïP§ŸuX*†ƒïP§ŸuX*c~˜ˆc~˜ˆc~˜ˆ«ŒÁÞc~˜ˆc~˜ˆ«ŒÁÞc~˜ˆˆc~˜ˆˆc~˜ˆ•¦�Ùˆc~˜ˆˆc~˜ˆ†ƒïP§•¦�Ù†ƒïP§ŸuX*†ƒïP§ŸuX*†ƒïP§ŸuX*ˆc~˜ˆ†ƒïP§ˆ†ƒïP§†ƒïP§ˆ†ƒïP§ˆc~˜ˆ†ƒïP§Œo ûÂ/Tã2Â/Tã2•¦�Ùˆc~˜ˆ•¦�Ùˆc~˜ˆ•¦�Ùˆc~˜ˆ•¦�Ùˆc~˜ˆ‘ A]&Preload Mods@]98Preload mods so they can configure their mod menu item.B]&Reverse Sorting Order>]/.Reverse the sorting order of the listed mods.=]&Disable Mod Menu Extension?]DBDisable Mod Menu Extension. Use this before you remove the files.;]Move &Weapon Priorityi]rpReplaces the default weapon priority menu item in the Options menu with the Advanced Weapon Priority menu item.:]! &Update Player Selection Window<]RPUpdates the player selection window so it can display up to 500 player classes.óQM[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfxRO{órEü«†`‘«†`‘«†`‘«†`‘«†`‘«†`‘‘ sW.€ãz}*YL ìw?*? .-h-( jT�-- - jj� - ��»@”w*³-z@ à„w*r*x.†!¨ H$fr$*$�¯­ ˆ'‰w$* $w*$Å-²(p-6'çpp¨¨¨WÎcould not load­(Ñ )-z'.¦’-(-h'.†.†Ð��Á ã`k*ù#Ñw4*4 .-L-( XK�--- XX�- ��» yw*¡-o  ΄w*r*].†¨H&Kr&*&�¯­ ˆ'nw&* &èw*&Å-²(U-6'çpp¨¨¨WÎcould not load­(Ñ )-o'.¦€-(-L'.†.†Ð��Á ÔqeT&h°¥#¾TournamentPlayer%NcŸ‚{N–eôÈ%cN%¥e¥'¾TournamentPlayereNc-È €@€@ñpZ, <we‚‚‚w¨*r¨›*{¨ç-�¨-²&¨¨âZU Ú6I ÙcÌ Õle Û"-s-Ê-Ê(Ý-Ê-s]aÕ Í<ÍÕÐ<Botpack.ChallengeVoicePack¯< ˆ¥¾<%IY‚{I –l,dÝ%YI%¥l¥¾<lIY¯Ý ÃXQO[6 �ÍQA:NwA*2rQA A.’AÓ‚w.…é*r.…éšQ Ž-Ó2 úkME4è¶<-Ê¥b"ClassÈ'¥b"Skinà'¥b"Faceß'¥b"Teamá'MJá|ÈV¥½¥*8àß=M<›:¥ÞÝM¥ 5MÜ!ÕíÜCÕC4ܼàß=Já ñNA,+?we‚‚‚w¨*r¨›*{¨ç-�¨-²&¨¨âAB d@_V- ¦6K%4–K,*þK\V'¥K ¸U0%UM.Ç0 Y7 -� -7-® - ´Vw*ªVw*:‚�.-'w.œ*œ-²„.œ-64‚ - r.œ*.‡¦�@ å= -1� -1=-® -1 ´¸0ª* + -2� -2+-® -2 ´ .†¸0}‚w *w ©*×+-® ©ÌkÔw*.} ©Ì ©Ì}w*Ww"*"'}5' v# -3� -3#-® -3 ´¸0 .†t‚w *w ©*E#-® ©Ò tt ©Ò ©Ò =j .†Óz R ½ÏUMenu.UMenuModMenuù ½Ï R ´m�åm3m"@ ÿÿ¸0 K€BLÁxvw*.¦s‚‚w*r*w*­ w/)hˆ.//5�-g/a&.ÍÌÌ>†kÿ/î./a.ÍÌÌ>ÍÌL>†/a.ÍÌÌ>  z€æt>6Lf:*V*5* *>ª^w>*>œ*>.‡>¦'æ {_/6±rp‚–u,–¥^�,,;§�,,G™;,;¥um_a;\;\ Þx}w[-„r.˜�*r.˜�·* } a7.˜�· L: Ž=.˜�· N: »+.˜�· R: è#.˜�· T: j.˜�· P: ÿÿ.˜�·:ÔÇÔÞ} ;€LD-„-gD!rg¦*  .g¦+w *Z -'¥w œ  * œ-² -. œ . œ Är@*@. œ±?w¯¬�Ã?Ù?,C †‚wC* –X,¥XCC¦OšX,-*f r*.f |p.f  p  + . ¦: Ö:{Gx*.…Ø + *š* S{*÷F.•*â{* É~A!‚ µ?x�Ã*É€‚�-L-.†¨H ��» b$C^9 bP›9ÿÿÿÿb$a9y9\9]\b' cH)¸V°¥)¾UMenu.UMenuModMenuItem%-v'Iz kw.ª*ª‰ª ªVŸ{.ª + ò|€,WeaponPriority.-''$$|€,ModMenuExtension.-''­¶{O~,zšOÿÿÿÿ ³ €OÄ’O&c) �¯ ˆý)a/!b-''c))½ )ÁÄ)Â¥/¾UMenu.UMenuModMenuItem£H‰ª Zclass EWindowPlayerMeshClient extends UMenuPlayerMeshClient; var name BreathAnims[3], ActionAnims[8]; var float ActionAnimRates[8], ActionTweenTimes[8]; function SetMesh(mesh NewMesh) { MeshActor.bMeshEnviroMap = False; MeshActor.DrawScale = MeshActor.Default.DrawScale; MeshActor.Mesh = NewMesh; PlayBreathing(MeshActor, False); } function AnimEnd(MeshActor MyMesh) { local int i; local bool bBreathing; if ( IsBreathAnim(MyMesh.AnimSequence) ) bBreathing = True; if ( !bBreathing || FRand() < 0.8 ) PlayBreathing(MyMesh, bBreathing); else PlayAction(MyMesh); } function bool IsBreathAnim(name AnimName) { local int i; for(i = 0; i < ArrayCount(BreathAnims); i++) if ( BreathAnims[i] == AnimName ) return true; } function PlayBreathing(MeshActor MyMesh, bool bBreathing) { local name NextAnim; NextAnim = GetDefaultBreath(MyMesh); if ( !bBreathing ) MyMesh.TweenAnim(NextAnim, 0.4); else if ( MyMesh.AnimSequence != NextAnim ) MyMesh.PlayAnim(NextAnim, 0.4, 0.2); else MyMesh.PlayAnim(NextAnim, 0.4, 0.0); } function name GetDefaultBreath(MeshActor MyMesh) { local int i, LoopCount, CheckedAnim; while(CheckedAnim < ArrayCount(BreathAnims) && LoopCount++ < ArrayCount(BreathAnims) * 3) { i = Rand(ArrayCount(BreathAnims) * 3); if ( i >= ArrayCount(BreathAnims) ) i = CheckedAnim++; if ( MyMesh.HasAnim(BreathAnims[i]) ) return BreathAnims[i]; } } function PlayAction(MeshActor MyMesh) { local int NextAnim; NextAnim = GetActionAnim(MyMesh); if ( NextAnim != -1 ) MyMesh.PlayAnim(ActionAnims[NextAnim], ActionAnimRates[NextAnim], ActionTweenTimes[NextAnim]); else PlayBreathing(MyMesh, True); } function int GetActionAnim(MeshActor MyMesh) { local int i, LoopCount; While (LoopCount++ < ArrayCount(ActionAnims) * 2) { i = Rand(ArrayCount(ActionAnims)); if ( MyMesh.HasAnim(ActionAnims[i]) && FRand() > 0.75 ) return i; } return -1; } Eb NUM–¥a�,,a§,J‚baay ±Ã@?aÿÿÿÿ Þin‹Û®ÔÇÔx‚‚�-w.n*{.n.†.n¬¬�-.†.†Ð a€ýV 6&Æ^w4 4 -(��».†  ss�-T-T' -T(4*��Á ®" ¸h ÿÿ2úw. *. ÁÁw. *,. sr,*,�¯. ­ ˆ'w,*. ,.  ,. Å . . Á -²'. -6'1@~$$$,çpp¨¨¨WÎcould not load. ­(Ñ.  )Ä Ö[_-��ÁÖ-( ÆYÏ×¹.«Ú «êùá.¤¹Ú [ÈBÈB¹Ê¹$ÚÀÈBÈBϹ-ö'¹ÒpC ÉC!"båÎÙD¶øèD¶ûäD¶ÄÇD¶ü g%class EWindowPlayerSetupClient extends UTPlayerSetupClient; function IterateVoices() { local int NumVoices; local string NextVoice, NextDesc; local string VoicepackMetaClass; local bool OldInitialized; OldInitialized = Initialized; Initialized = False; VoicePackCombo.Clear(); Initialized = OldInitialized; if ( ClassIsChildOf(NewPlayerClass, class'TournamentPlayer') ) VoicePackMetaClass = class(NewPlayerClass).default.VoicePackMetaClass; else VoicePackMetaClass = "Botpack.ChallengeVoicePack"; // Load the base class into memory to prevent GetNextIntDesc crashing as the class isn't loadded. DynamicLoadObject(VoicePackMetaClass, class'Class'); GetPlayerOwner().GetNextIntDesc(VoicePackMetaClass, 0, NextVoice, NextDesc); while(NextVoice != "" && NumVoices < 100) { VoicePackCombo.AddItem(NextDesc, NextVoice, 0); NumVoices++; GetPlayerOwner().GetNextIntDesc(VoicePackMetaClass, NumVoices, NextVoice, NextDesc); } VoicePackCombo.Sort(); } function LoadClasses() { local int NumPlayerClasses; local string NextPlayer, NextDesc; GetPlayerOwner().GetNextIntDesc("TournamentPlayer", 0, NextPlayer, NextDesc); while(NextPlayer != "" && NumPlayerClasses < 500) { ClassCombo.AddItem(NextDesc, NextPlayer, 0); NumPlayerClasses++; GetPlayerOwner().GetNextIntDesc("TournamentPlayer", NumPlayerClasses, NextPlayer, NextDesc); } ClassCombo.Sort(); } function UseSelected() { local int NewTeam; if ( Initialized ) { GetPlayerOwner().UpdateURL("Class", ClassCombo.GetValue2(), True); GetPlayerOwner().UpdateURL("Skin", SkinCombo.GetValue2(), True); GetPlayerOwner().UpdateURL("Face", FaceCombo.GetValue2(), True); GetPlayerOwner().UpdateURL("Team", TeamCombo.GetValue2(), True); NewTeam = Int(TeamCombo.GetValue2()); // if the same class as current class, change skin if( ClassCombo.GetValue2() ~= String( GetPlayerOwner().Class )) GetPlayerOwner().ServerChangeSkin(SkinCombo.GetValue2(), FaceCombo.GetValue2(), NewTeam); if( GetPlayerOwner().PlayerReplicationInfo.Team != NewTeam ) GetPlayerOwner().ChangeTeam(NewTeam); } MeshWindow.SetMesh(NewPlayerClass.Default.Mesh); MeshWindow.ClearSkins(); NewPlayerClass.static.SetMultiSkin(MeshWindow.MeshActor, SkinCombo.GetValue2(), FaceCombo.GetValue2(), Int(TeamCombo.GetValue2())); } ‡Hclass EWindowPlayerClientWindow extends UTPlayerClientWindow; function Created() { Super(UMenuDialogClientWindow).Created(); Splitter = UWindowHSplitter(CreateWindow(class'UWindowHSplitter', 0, 0, WinWidth, WinHeight)); Splitter.RightClientWindow = UMenuPlayerMeshClient(Splitter.CreateWindow(class'EWindowPlayerMeshClient', 0, 0, 100, 100)); Splitter.LeftClientWindow = Splitter.CreateWindow(PlayerSetupClass, 0, 0, 100, 100, OwnerWindow); Splitter.bRightGrow = True; Splitter.SplitPos = 240; } ä†w›*›ï¯®šïšê?šä›Û¯ÿ?šèœw.š*.š:.’›Êw.’š*.’šÓ.’›ów.’›*.’›Çš› ãR0™ØÖw›*O‚w.š*r.š:›.š:*“‚w.’š*r.’šÓ›.’šÓ*¸w.’›*.’›Ç*›0› Å8ƒÝ8.†Åš R8½Ï ´8½ÏModMenuExtension.EWindowModMenu8´_8�å_3_" ò7 ÙSò7.•K*7-® -=.•M*=-® -1-*k„¯WeaponPriority.EIWeaponPriorityWindow ˆúwk*+.•Q*+-® -2#.•S*#-® -3-*j.•O* ùj`+h$šd‚‚�-w.`*{.`.†.`˜˜�-.†.†Ð Oclass EWindowPlayerWindow extends UTPlayerWindow; function BeginPlay(); ÖDO^-��ÁÖ-( ÈdQy&  -1%ÿÿÿÿ'%&G.dE.IázG E ^G ]E ¹z^]%Õs^]�ÿÿÿÿ%�&%sG E �ÿÿÿÿ%�&% *€…Én/tÉr‚�-h -.†!¨ H@��» G€Yclass EWindowPlayerSetupScrollClient extends UTPlayerSetupScrollClient; function Created() { Super(UWindowScrollingDialogClient).Created(); } ¸I–xÐ_w??��».†  tt�-i-i' -i(?*��Á±rc êw.*.ÃÃw.*-.cr-*-�¯.­ ˆ' w-*.-. -.Å..Ã-²'.-6'1 @ ~$$$,çpp¨¨¨WÎcould not load.­(Ñ. )¸ þeZ7³Y-Zî-d'L„�-d °ÃÍÌL?Z-dW$Z Fì˜xvw*.¦s‚‚w*r*w*­ jWclass ModMenuConfigMenu extends EnhancedPulldownMenu; var EnhancedPulldownMenuItem PreloadMods, ReverseOrder, DisableExtension, MoveWeaponPriority, UpdatePlayerSetup; var localized string PreloadModsCaption, PreloadModsHelp, ReverseOrderCaption, ReverseOrderHelp, DisableExtensionCaption, DisableExtensionHelp, WeaponPriorityCaption, WeaponPriorityHelp, PlayerSetupCaption, PlayerSetupHelp; var class WeaponPriorityClass; function Created() { Super.Created(); PreloadMods = EnhancedPulldownMenuItem(AddMenuItem(PreloadModsCaption, None)); PreloadMods.bChecked = class'EWindowModMenu'.default.bPreloadItems; ReverseOrder = EnhancedPulldownMenuItem(AddMenuItem(ReverseOrderCaption, None)); ReverseOrder.bChecked = class'EWindowModMenu'.default.bReverseOrder; AddMenuItem("-", None); WeaponPriorityClass = class(DynamicLoadObject("WeaponPriority.EIWeaponPriorityWindow", Class'Class')); if ( WeaponPriorityClass != None ) { MoveWeaponPriority = EnhancedPulldownMenuItem(AddMenuItem(WeaponPriorityCaption, None)); MoveWeaponPriority.bChecked = class'EWindowModMenu'.default.bMoveWeaponPriority; } UpdatePlayerSetup = EnhancedPulldownMenuItem(AddMenuItem(PlayerSetupCaption, None)); UpdatePlayerSetup.bChecked = class'EWindowModMenu'.default.bUpdatePlayerSelection; AddMenuItem("-", None); DisableExtension = EnhancedPulldownMenuItem(AddMenuItem(DisableExtensionCaption, None)); } function ExecuteItem(UWindowPulldownMenuItem I) { local UMenuMenuBar B; local WindowConsole C; local UMenuModMenuList L; local EWindowModMenu M; M = EWindowModMenu(ParentMenu); switch (I) { case PreloadMods: class'EWindowModMenu'.default.bPreloadItems = !class'EWindowModMenu'.default.bPreloadItems; PreloadMods.bChecked = class'EWindowModMenu'.default.bPreloadItems; class'EWindowModMenu'.static.StaticSaveConfig(); if ( M != None ) for (L = M.ModList; L != None; L = UMenuModMenuList(L.Next)) { if ( !EWindowModMenuList(L).bDontShow && EWindowModMenuItem(L.MenuItem) != None ) L.MenuItem.bDisabled = EWindowModMenuItem(L.MenuItem).bNotFound || (class'EWindowModMenu'.default.bPreloadItems && EWindowModMenuItem(L.MenuItem).ModItem == None); } break; case ReverseOrder: class'EWindowModMenu'.default.bReverseOrder = !class'EWindowModMenu'.default.bReverseOrder; ReverseOrder.bChecked = class'EWindowModMenu'.default.bReverseOrder; class'EWindowModMenu'.static.StaticSaveConfig(); Super.ExecuteItem(I); M.ModList.Sort(); M.SetupMods(None); return; case MoveWeaponPriority: class'EWindowModMenu'.default.bMoveWeaponPriority = !class'EWindowModMenu'.default.bMoveWeaponPriority; MoveWeaponPriority.bChecked = class'EWindowModMenu'.default.bMoveWeaponPriority; class'EWindowModMenu'.static.StaticSaveConfig(); B = UMenuMenuBar(GetMenuBar()); Super.ExecuteItem(I); if ( B != None && B.Options != None ) { if ( MoveWeaponPriority.bChecked ) { B.Options.WeaponPriorityWindowClass = WeaponPriorityClass; if ( M.PriorityMenu != None ) M.PriorityMenu.Remove(); } else { B.Options.WeaponPriorityWindowClass = B.Options.default.WeaponPriorityWindowClass; /*if ( M.PriorityMenu == None && M.PriorityItem != None ) { M.PriorityItem.MenuItem = EWindowModMenuItem(M.AddMenuItem(M.PriorityItem.MenuCaption, None)); M.PriorityMenu = EWindowModMenuItem(M.PriorityItem.MenuItem); M.PriorityMenu.ModListItem = M.PriorityItem; M.PriorityMenu.HelpString = M.PriorityItem.MenuHelp; M.PriorityMenu.Remove(); }*/ if ( M.PriorityMenu != None ) { if ( M.GUIConfigMenu != None ) M.GUIConfigMenu.InsertItemAfter(M.PriorityMenu); else M.ConfigMenu.InsertItemAfter(M.PriorityMenu); } } } return; case UpdatePlayerSetup: class'EWindowModMenu'.default.bUpdatePlayerSelection = !class'EWindowModMenu'.default.bUpdatePlayerSelection; UpdatePlayerSetup.bChecked = class'EWindowModMenu'.default.bUpdatePlayerSelection; class'EWindowModMenu'.static.StaticSaveConfig(); Super.ExecuteItem(I); B = UMenuMenuBar(GetMenuBar()); if ( B != None && B.Options != None ) { if ( UpdatePlayerSetup.bChecked ) B.Options.PlayerWindowClass = class'EWindowPlayerWindow'; else B.Options.PlayerWindowClass = B.Options.default.PlayerWindowClass; } return; case DisableExtension: B = UMenuMenuBar(GetMenuBar()); if ( class'EWindowModMenu'.default.OldModMenuClass == "" ) B.Class.default.ModMenuClass = "UMenu.UMenuModMenu"; else B.Class.default.ModMenuClass = class'EWindowModMenu'.default.OldModMenuClass; B.StaticSaveConfig(); C = Root.Console; C.ResetUWindow(); C.LaunchUWindow(); break; } Super.ExecuteItem(I); } function Select(UWindowPulldownMenuItem I) { if ( UMenuRootWindow(Root) == None || UMenuRootWindow(Root).StatusBar == None ) return; switch (I) { case PreloadMods: UMenuRootWindow(Root).StatusBar.SetHelp(PreloadModsHelp); break; case ReverseOrder: UMenuRootWindow(Root).StatusBar.SetHelp(ReverseOrderHelp); break; case MoveWeaponPriority: UMenuRootWindow(Root).StatusBar.SetHelp(WeaponPriorityHelp); break; case UpdatePlayerSetup: UMenuRootWindow(Root).StatusBar.SetHelp(PlayerSetupHelp); break; case DisableExtension: UMenuRootWindow(Root).StatusBar.SetHelp(DisableExtensionHelp); break; default: UMenuRootWindow(Root).StatusBar.SetHelp(""); break; } Cursor = ParentMenu.Cursor; Super.Select(I); } YG-Á§'(GB!~(&8š!ÿÿÿÿ§¡B!„z(’!&&&pp€(!&¥B�p€(!¥Bp( õrqqt Åwq*ªq'�-v)=rª¦* 5.C*5  e5`‚¶a/!c{.À¶ô".X*"J")‹¯.À¶ô ˆ¥S.†q‚‚-3 w*w©*©Ò t–w*œ. *.œÄX‚‚-2 w*w©*P„¯WeaponPriority.EIWeaponPriorityWindow ˆ�wP*©ÌP.¥S .ª¦¦w *Ï -'ŠðšF%-*¡FS¥F œ  * œ-²-. œ . œ Ä«r * . œŠ±?F¯¬�Ã?Ù?,D ‚wD* –U,¥UDD¦ÜŠšU,-*Wr*.W|V.W  V  ¦ . ¦¯xD�Ã-L( (€@Ë\E!ÄP¼-Ü(¼ë¼ë¼íE¼( Wclass EnableMenuExtension extends UMenuModMenuItem; function Execute() { local UMenuMenuBar B; local WindowConsole C; B = UMenuMenuBar(MenuItem.Owner.GetMenuBar()); class'EWindowModMenu'.default.OldModMenuClass = B.Class.default.ModMenuClass; class'EWindowModMenu'.static.StaticSaveConfig(); B.Class.default.ModMenuClass = "ModMenuExtension.EWindowModMenu"; B.StaticSaveConfig(); C = B.Root.Console; C.ResetUWindow(); C.LaunchUWindow(); } �fT_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2g»É%B�Ñ”ŠÏ…;aG°‹Õ¶mêˆc~˜ˆ†ƒïP§ˆ†ƒïP§ˆc~˜ˆ†ƒïP§ˆ†ƒïP§†ƒïP§†ƒïP§Œo ûÂ/Tã2Â/Tã2‘ g]Enable &Mod Menu Extensionh] Enable the Mod Menu Extension.Paclass EWindowMoreModsMenu extends EnhancedPulldownMenu; var EWindowMoreModsMenu NextPage; var UWindowPulldownMenuItem ExecuteModItem; var bool bStillLoading, bAllLoaded, bExecuteNow; var EWindowModMenuItem LastProcessed, NextPageItem; var UMenuModMenuList ModList; function LMouseUp(float X, float Y) { If ( Selected != None && Selected.SubMenu == None && Selected.Caption != "-" && !Selected.bDisabled ) { BeforeExecuteItem(Selected); ExecuteItem(Selected); } Super(UWindowListControl).LMouseUp(X, Y); } function ShowWindow() { Super.ShowWindow(); // continue loading mods if ( !bAllLoaded && class'EWindowModMenu'.default.bPreloadItems ) { UMenuMenuBar(GetMenuBar()).SetHelp(class'EWindowModMenu'.default.LoadingText @ GetNextItem(LastProcessed)); Root.SetCursor(Root.WaitCursor); } } function HideWindow() { Root.SetCursor(Root.NormalCursor); Super.HideWindow(); // stop loading mods bStillLoading = False; } function SetupMods(UMenuModMenuList InModList) { local EWindowModMenuList I; local UWindowList Test; local UWindowPulldownMenuItem MenuItem; local int ItemCount, j; ModList = InModList; if ( ModList.Next == None ) return; for (I = EWindowModMenuList(ModList.Next); I != None; I = EWindowModMenuList(I.Next)) { if ( I.bDontShow ) continue; ItemCount++; I.MenuItem = AddMenuItem(I.MenuCaption, None); I.MenuItem.bDisabled = class'EWindowModMenu'.default.bPreloadItems; EWindowModMenuItem(I.MenuItem).ModListItem = I; EWindowModMenuItem(I.MenuItem).HelpString = I.MenuHelp; if ( LastProcessed == None ) LastProcessed = EWindowModMenuItem(I.MenuItem); if ( ItemCount > Root.WinHeight / ItemHeight - 7 ) { for (Test = I; Test != None && j < 3; Test = Test.Next) j++; if ( j == 3 ) { AddMenuItem("-", None); MenuItem = AddMenuItem(class'EWindowModMenu'.default.MoreModsCaption, None); EWindowModMenuItem(MenuItem).HelpString = class'EWindowModMenu'.default.MoreModsHelp; NextPage = EWindowMoreModsMenu(MenuItem.CreateSubMenu(class'EWindowMoreModsMenu')); NextPage.SetupMods(I); break; } } } } function string GetNextItem(EWindowModMenuItem CurrentItem) { while (CurrentItem != None) { CurrentItem = EWindowModMenuItem(CurrentItem.Next); if ( CurrentItem != None && CurrentItem.ModItem == None && CurrentItem.ModListItem != None ) return CurrentItem.ModListItem.MenuItemClassName; } } function Tick(float DeltaTime) { local bool bLoadedOne; local EWindowModMenuItem CurrentItem; local class ModItemClass; if ( ExecuteModItem != None ) { ExecuteItem(ExecuteModItem); return; } if ( bAllLoaded ) { bStillLoading = False; return; } else if ( !bStillLoading ) { bStillLoading = class'EWindowModMenu'.default.bPreloadItems; return; } else if ( !class'EWindowModMenu'.Default.bPreloadItems ) return; Root.SetCursor(Root.WaitCursor); for (CurrentItem = LastProcessed; CurrentItem != None; CurrentItem = EWindowModMenuItem(CurrentItem.Next)) { if ( bLoadedOne ) { LastProcessed = CurrentItem; return; } if ( CurrentItem.ModItem != None || CurrentItem.ModListItem == None ) continue; UMenuMenuBar(GetMenuBar()).SetHelp(class'EWindowModMenu'.default.LoadingText @ GetNextItem(CurrentItem)); ModItemClass = CurrentItem.ModListItem.ModMenuItemClass; if ( ModItemClass == None ) ModItemClass = class(DynamicLoadObject(CurrentItem.ModListItem.MenuItemClassName, class'Class', True)); if ( ModItemClass != None ) CurrentItem.ModItem = New ModItemClass; if ( CurrentItem.ModItem != None ) { CurrentItem.ModListItem.ModMenuItemClass = ModItemClass; CurrentItem.ModItem.MenuItem = CurrentItem; CurrentItem.ModItem.Setup(); CurrentItem.bDisabled = False; } else { CurrentItem.bNotFound = True; log(Name@"could not load"@CurrentItem.ModListItem.MenuItemClassName@"("$RemoveAmpersand(CurrentItem.ModListItem.MenuCaption)$")"); } bLoadedOne = True; } bStillLoading = False; bAllLoaded = True; UMenuMenuBar(GetMenuBar()).SetHelp(UMenuMenuBar(GetMenuBar()).ModHelp); Root.SetCursor(Root.NormalCursor); } function Select(UWindowPulldownMenuItem I) { Cursor = ParentMenu.Cursor; if ( !bStillLoading && EWindowModMenuItem(I) != None && EWindowModMenuItem(I).HelpString != "" ) UMenuMenuBar(GetMenuBar()).SetHelp(EWindowModMenuItem(I).HelpString); else if ( !bStillLoading ) UMenuMenuBar(GetMenuBar()).SetHelp(UMenuMenuBar(GetMenuBar()).ModHelp); } function ExecuteItem(UWindowPulldownMenuItem I) { local class ModItemClass; if ( ExecuteModItem != I ) { ExecuteModItem = I; Root.SetCursor(Root.WaitCursor); UMenuMenuBar(GetMenuBar()).SetHelp(class'EWindowModMenu'.default.ExecutingText); return; } else if ( !bExecuteNow ) { bExecuteNow = True; return; } bExecuteNow = False; ExecuteModItem = None; Root.SetCursor(Root.NormalCursor); if ( I == NextPageItem ) return; if ( EWindowModMenuItem(I).ModItem != None ) EWindowModMenuItem(I).ModItem.Execute(); else if ( EWindowModMenuItem(I).ModListItem != None ) { ModItemClass = EWindowModMenuItem(I).ModListItem.ModMenuItemClass; if ( ModItemClass == None ) ModItemClass = class(DynamicLoadObject(EWindowModMenuItem(I).ModListItem.MenuItemClassName, class'Class', True)); if ( ModItemClass != None ) { EWindowModMenuItem(I).ModListItem.ModMenuItemClass = ModItemClass; EWindowModMenuItem(I).ModItem = New ModItemClass; EWindowModMenuItem(I).ModItem.MenuItem = I; EWindowModMenuItem(I).ModItem.Setup(); EWindowModMenuItem(I).ModItem.Execute(); } else { I.bDisabled = True; EWindowModMenuItem(I).bNotFound = True; MessageBox(class'EWindowModMenu'.default.LoadErrorTitle, class'EWindowModMenu'.default.LoadError, MB_OK, MR_None, MR_None, 5); log(Name@"could not load"@EWindowModMenuItem(I).ModListItem.MenuItemClassName@"("$RemoveAmpersand(EWindowModMenuItem(I).ModListItem.MenuCaption)$")"); } } Super(UWindowPulldownMenu).ExecuteItem(I); } b[KmÌJ%Ä–J}[íê[“}[Jašû,0,9pìº�šû,A,Zp캺šû,a,zpì“, ¥J o€€@Dclass EWindowModMenuList extends UMenuModMenuList; var class ModMenuItemClass; var bool bDontShow; // first compare only alphanumeric characters (case-insensitive), then compare case sensitive (without ampersand) function int Compare(UWindowList T, UWindowList B) { local EWindowModMenuList TI, BI; local string TS, BS; local int Reverse; if ( class'EWindowModMenu'.default.bReverseOrder ) Reverse = -1; else Reverse = 1; TI = EWindowModMenuList(T); BI = EWindowModMenuList(B); if ( AlphaNumeric(TI.MenuCaption) == AlphaNumeric(BI.MenuCaption) ) { TS = RemoveAmpersand(TI.MenuCaption); BS = RemoveAmpersand(BI.MenuCaption); if ( TS == BS ) return 0; if ( TS < BS ) return -1 * Reverse; return 1 * Reverse; } else if ( AlphaNumeric(TI.MenuCaption) < AlphaNumeric(BI.MenuCaption) ) return -1 * Reverse; return 1 * Reverse; } function string RemoveAmpersand(string S) { local string Temp, Result; local int Pos, NewPos; local int i; while (True) { Temp = Mid(S, Pos); NewPos = InStr(Temp, "&"); if ( NewPos == -1 ) break; Pos += NewPos; if ( Mid(Temp, NewPos + 1, 1) == "&" ) { // It's a double &, lets add one to the output. Result = Result $ Left(Temp, NewPos) $ "&"; Pos++; } else Result = Result $ Left(Temp, NewPos); Pos++; } Result = Result $ Temp; return Result; } // Keeps only 0-9 and A-Z in the string. All lower case letters are converted to upper case. function string AlphaNumeric(string s) { local string result; local int i, c; for (i = 0; i < Len(s); i++) { c = Asc(Right(s, Len(s) - i)); if ( c == Clamp(c, 48, 57) ) // 0-9 result = result $ Chr(c); else if ( c == Clamp(c, 65, 90) ) // A-Z result = result $ Chr(c); else if ( c == Clamp(c, 97, 122) ) // a-z result = result $ Chr(c - 32); // a -> A, b -> B, etc. } return result; } q¯class EWindowModMenu extends UMenuModMenu config(EnhancedItems); var EnhancedPulldownMenu SubMenu; var UWindowPulldownMenuItem ExecuteModItem; var EWindowMoreModsMenu NextPage; var bool bStillLoading, bAllLoaded, bLoadedList, bExecuteNow; var int UsedRootHeight, LoadingTick; var EWindowModMenuItem LastProcessed, ConfigMenu, GUIConfigMenu, NextPageItem, PriorityMenu; var EWindowModMenuList PriorityItem; var localized string ConfigMenuCaption, ConfigMenuHelp, MoreModsCaption, MoreModsHelp, LoadingText, ExecutingText, LoadError, LoadErrorTitle, GUISkinMenuCaption, GUISkinMenuHelp; var config bool bPreloadItems, bReverseOrder, bMoveWeaponPriority, bUpdatePlayerSelection; var config string OldModMenuClass; function UWindowPulldownMenuItem AddMenuItem(string C, Texture G) { local UWindowPulldownMenuItem I; I = UWindowPulldownMenuItem(Items.Append(class'EWindowModMenuItem')); I.Owner = Self; I.SetCaption(C); I.Graphic = G; EnhancedPulldownMenuItem(I).AltValue = C; return I; } function Created() { SetAcceptsFocus(); Super(UWindowListControl).Created(); ItemHeight = LookAndFeel.Pulldown_ItemHeight; VBorder = LookAndFeel.Pulldown_VBorder; HBorder = LookAndFeel.Pulldown_HBorder; TextBorder = LookAndFeel.Pulldown_TextBorder; } function LMouseUp(float X, float Y) { if ( Selected != None && Selected.SubMenu == None && Selected.Caption != "-" && !Selected.bDisabled ) { BeforeExecuteItem(Selected); ExecuteItem(Selected); } Super(UWindowListControl).LMouseUp(X, Y); } function Clear() { local UMenuModMenuList I; SubMenu = None; NextPage = None; ConfigMenu = None; LastProcessed = None; For (I = ModList; I != None; I = UMenuModMenuList(I.Next)) I.MenuItem = None; Super.Clear(); } function ShowWindow() { if ( UsedRootHeight != Root.WinHeight ) SetupMods(None); Super.ShowWindow(); // continue loading mods if ( !bAllLoaded && Default.bPreloadItems ) { UMenuMenuBar(GetMenuBar()).SetHelp(LoadingText @ GetNextItem(LastProcessed)); Root.SetCursor(Root.WaitCursor); } } function HideWindow() { Root.SetCursor(Root.NormalCursor); Super.HideWindow(); // stop loading mods bStillLoading = False; } function FocusOtherWindow(UWindowWindow W) { local UWindowPulldownMenu M; local string tmp; Super(UWindowListControl).FocusOtherWindow(W); for (M = SubMenu; M != None; M = EnhancedPulldownMenu(M).SubMenu) if ( W == M ) return; if ( UWindowPulldownMenuItem(Owner) != None && UWindowPulldownMenuItem(Owner).Owner == W ) return; if ( bWindowVisible ) CloseUp(); } function SetupMods(UMenuModMenuList InModList) { local EWindowModMenuList I; local UMenuMenuBar MenuBar; local UWindowList Test; local UWindowPulldownMenuItem MenuItem; local int ItemCount, PreItemCount, j; local class WeaponPriorityClass; if ( InModList != None ) ModList = InModList; if ( !bLoadedList ) LoadMods(); // original function reads "only" the first 50 mods if ( ModList.Next == None ) return; Clear(); ConfigMenu = EWindowModMenuItem(AddMenuItem(ConfigMenuCaption, None)); ConfigMenu.CreateSubMenu(class'ModMenuConfigMenu', Self); ConfigMenu.HelpString = ConfigMenuHelp; if ( LookAndFeel.IsA('EWindowLookAndFeel') && EWindowLookAndFeel(LookAndFeel).ConfigWindowMenu != "" ) { GUIConfigMenu = EWindowModMenuItem(AddMenuItem(GUISkinMenuCaption, None)); GUIConfigMenu.HelpString = GUISkinMenuHelp; GUIConfigMenu.CreateSubMenu(class(DynamicLoadObject(EWindowLookAndFeel(LookAndFeel).ConfigWindowMenu, class'Class'))); PreItemCount++; } MenuBar = UMenuMenuBar(GetMenuBar()); if ( bUpdatePlayerSelection && MenuBar != None && MenuBar.Options != None ) MenuBar.Options.PlayerWindowClass = class'EWindowPlayerWindow'; if ( PriorityItem != None ) { PriorityItem.MenuItem = EWindowModMenuItem(AddMenuItem(PriorityItem.MenuCaption, None)); PriorityMenu = EWindowModMenuItem(PriorityItem.MenuItem); PriorityMenu.ModListItem = PriorityItem; PriorityMenu.HelpString = PriorityItem.MenuHelp; if ( bMoveWeaponPriority && MenuBar != None && MenuBar.Options != None ) WeaponPriorityClass = class(DynamicLoadObject("WeaponPriority.EIWeaponPriorityWindow", Class'Class')); if ( WeaponPriorityClass != None ) { MenuBar.Options.WeaponPriorityWindowClass = WeaponPriorityClass; PriorityMenu.Remove(); } PreItemCount++; } for (I = EWindowModMenuList(ModList.Next); I != None; I = EWindowModMenuList(I.Next)) { if ( I.bDontShow ) continue; if ( ItemCount == 0 ) { AddMenuItem("-", None); ItemCount += PreItemCount; } ItemCount++; I.MenuItem = AddMenuItem(I.MenuCaption, None); I.MenuItem.bDisabled = Default.bPreloadItems; EWindowModMenuItem(I.MenuItem).ModListItem = I; EWindowModMenuItem(I.MenuItem).HelpString = I.MenuHelp; if ( LastProcessed == None ) LastProcessed = EWindowModMenuItem(I.MenuItem); if ( ItemCount > Root.WinHeight / ItemHeight - 7 ) { for (Test = I; Test != None && j < 3; Test = Test.Next) j++; if ( j == 3 ) { AddMenuItem("-", None); MenuItem = AddMenuItem(MoreModsCaption, None); EWindowModMenuItem(MenuItem).HelpString = MoreModsHelp; NextPage = EWindowMoreModsMenu(MenuItem.CreateSubMenu(class'EWindowMoreModsMenu')); NextPage.SetupMods(I); break; } } } UsedRootHeight = Root.WinHeight; bAllLoaded = False; } function LoadMods() { local int NumModClasses, i; local string NextModClass, NextModDesc; local EWindowModMenuList NewItem; local UMenuModMenuItem TempItem; GetPlayerOwner().GetNextIntDesc("UMenu.UMenuModMenuItem", 0, NextModClass, NextModDesc); bLoadedList = True; if ( NextModClass == "" ) return; if ( EWindowModMenuList(ModList) != None ) ModList.Clear(); else { ModList = New class'EWindowModMenuList'; ModList.SetupSentinel(); } while (NextModClass != "") { NewItem = EWindowModMenuList(ModList.Append(class'EWindowModMenuList')); // check, if this item is the weapon priority menu if ( Left(NextModClass, 15) ~= "WeaponPriority." ) { NewItem.bDontShow = True; PriorityItem = NewItem; } else if ( Left(NextModClass, 17) ~= "ModMenuExtension." ) NewItem.bDontShow = True; NewItem.MenuItemClassName = NextModClass; if ( NextModDesc != "" ) { i = InStr(NextModDesc, ","); if ( i == -1 ) NewItem.MenuCaption = NextModDesc; else { NewItem.MenuCaption = Left(NextModDesc, i); NewItem.MenuHelp= Mid(NextModDesc, i + 1); } } else { TempItem = New class(DynamicLoadObject(NextModClass, class'Class')); // check, if this item is a config menu for the GUI skin if ( TempItem.IsA('LookAndFeelModMenuItem') ) NewItem.bDontShow = True; else { TempItem.Setup(); NewItem.ModMenuItemClass = TempItem.Class; NewItem.MenuCaption = TempItem.MenuCaption; NewItem.MenuHelp = TempItem.MenuHelp; } } GetPlayerOwner().GetNextIntDesc("UMenu.UMenuModMenuItem", ++NumModClasses, NextModClass, NextModDesc); } ModList.Sort(); } function string GetNextItem(EWindowModMenuItem CurrentItem) { while (CurrentItem != None) { CurrentItem = EWindowModMenuItem(CurrentItem.Next); if ( CurrentItem != None && CurrentItem.ModItem == None && CurrentItem.ModListItem != None ) return CurrentItem.ModListItem.MenuItemClassName; } } function Tick(float DeltaTime) { local bool bLoadedOne; local EWindowModMenuItem CurrentItem; local class ModItemClass; if ( ExecuteModItem != None ) { ExecuteItem(ExecuteModItem); return; } if ( bAllLoaded ) { bStillLoading = False; return; } else if ( !bStillLoading ) { bStillLoading = Default.bPreloadItems; return; } else if ( !Default.bPreloadItems ) return; Root.SetCursor(Root.WaitCursor); for (CurrentItem = LastProcessed; CurrentItem != None; CurrentItem = EWindowModMenuItem(CurrentItem.Next)) { if ( bLoadedOne ) { LastProcessed = CurrentItem; return; } if ( CurrentItem.ModItem != None || CurrentItem.ModListItem == None ) continue; UMenuMenuBar(GetMenuBar()).SetHelp(LoadingText @ GetNextItem(CurrentItem)); ModItemClass = CurrentItem.ModListItem.ModMenuItemClass; if ( ModItemClass == None ) ModItemClass = class(DynamicLoadObject(CurrentItem.ModListItem.MenuItemClassName, class'Class', True)); if ( ModItemClass != None ) CurrentItem.ModItem = New ModItemClass; if ( CurrentItem.ModItem != None ) { CurrentItem.ModListItem.ModMenuItemClass = ModItemClass; CurrentItem.ModItem.MenuItem = CurrentItem; CurrentItem.ModItem.Setup(); CurrentItem.bDisabled = False; } else { CurrentItem.bNotFound = True; log(Name@"could not load"@CurrentItem.ModListItem.MenuItemClassName@"("$RemoveAmpersand(CurrentItem.ModListItem.MenuCaption)$")"); } bLoadedOne = True; } bStillLoading = False; bAllLoaded = True; UMenuMenuBar(GetMenuBar()).SetHelp(UMenuMenuBar(GetMenuBar()).ModHelp); Root.SetCursor(Root.NormalCursor); } function Select(UWindowPulldownMenuItem I) { if ( !bStillLoading && EWindowModMenuItem(I) != None && EWindowModMenuItem(I).HelpString != "" ) UMenuMenuBar(GetMenuBar()).SetHelp(EWindowModMenuItem(I).HelpString); else if ( !bStillLoading ) UMenuMenuBar(GetMenuBar()).SetHelp(UMenuMenuBar(GetMenuBar()).ModHelp); } function ExecuteItem(UWindowPulldownMenuItem I) { local class ModItemClass; local UMenuModMenuList L; if ( ExecuteModItem != I ) { ExecuteModItem = I; bStillLoading = False; Root.SetCursor(Root.WaitCursor); UMenuMenuBar(GetMenuBar()).SetHelp(ExecutingText); return; } else if ( !bExecuteNow ) { bExecuteNow = True; return; } bExecuteNow = False; ExecuteModItem = None; Root.SetCursor(Root.NormalCursor); switch (I) { case GUIConfigMenu: case NextPageItem: return; default: CloseUp(); if ( EWindowModMenuItem(I).ModItem != None ) EWindowModMenuItem(I).ModItem.Execute(); else if ( EWindowModMenuItem(I).ModListItem != None ) { ModItemClass = EWindowModMenuItem(I).ModListItem.ModMenuItemClass; if ( ModItemClass == None ) ModItemClass = class(DynamicLoadObject(EWindowModMenuItem(I).ModListItem.MenuItemClassName, class'Class', True)); if ( ModItemClass != None ) { EWindowModMenuItem(I).ModListItem.ModMenuItemClass = ModItemClass; EWindowModMenuItem(I).ModItem = New ModItemClass; EWindowModMenuItem(I).ModItem.MenuItem = I; EWindowModMenuItem(I).ModItem.Setup(); EWindowModMenuItem(I).ModItem.Execute(); } else { I.bDisabled = True; EWindowModMenuItem(I).bNotFound = True; MessageBox(LoadErrorTitle, LoadError, MB_OK, MR_None, MR_None, 5); log(Name@"could not load"@EWindowModMenuItem(I).ModListItem.MenuItemClassName@"("$RemoveAmpersand(EWindowModMenuItem(I).ModListItem.MenuCaption)$")"); } } break; } // Super(UWindowPulldownMenu).ExecuteItem(I); } `//============================================================================= // UWindowPulldownMenuItem //============================================================================= class EWindowModMenuItem extends EnhancedPulldownMenuItem; var UMenuModMenuItem ModItem; var EWindowModMenuList ModListItem; var string HelpString; var bool bNotFound; function Select() { if ( SubMenu != None ) { SubMenu.WinLeft = Owner.WinLeft + Owner.WinWidth - Owner.HBorder; SubMenu.WinTop = ItemTop - Owner.VBorder; if ( EWindowModMenu(Owner) != None ) EWindowModMenu(Owner).SubMenu = EnhancedPulldownMenu(SubMenu); if ( EnhancedPulldownMenu(Owner) != None ) EnhancedPulldownMenu(Owner).SubMenu = EnhancedPulldownMenu(SubMenu); if ( EnhancedPulldownMenu(SubMenu) != None ) EnhancedPulldownMenu(SubMenu).ParentMenu = Owner; SubMenu.ShowWindow(); } } function DeSelect() { if ( SubMenu != None ) { if ( EWindowModMenu(Owner) != None && EWindowModMenu(Owner).SubMenu == SubMenu ) EWindowModMenu(Owner).SubMenu = None; if ( EnhancedPulldownMenu(Owner) != None && EnhancedPulldownMenu(Owner).SubMenu == SubMenu ) EnhancedPulldownMenu(Owner).SubMenu = None; if ( EnhancedPulldownMenu(SubMenu) != None ) EnhancedPulldownMenu(SubMenu).ParentMenu = None; SubMenu.DeSelect(); SubMenu.HideWindow(); } } rrreÿÿÿÿqeÿÿÿÿdeýÿÿÿAeýÿÿÿQeþÿÿÿereþÿÿÿneÿÿÿÿNeÿÿÿÿmeþÿÿÿkeþÿÿÿheýÿÿÿ@nüÿÿÿCeþÿÿÿce÷ÿÿÿfrgeþÿÿÿre÷ÿÿÿgeýÿÿÿneÿÿÿÿueýÿÿÿveþÿÿÿqnûÿÿÿbnûÿÿÿUnùÿÿÿNeýÿÿÿ~eýÿÿÿ{eýÿÿÿxhùÿÿÿgeÿÿÿÿ`reíÿÿÿteýÿÿÿwküÿÿÿHnéÿÿÿceíÿÿÿwnõÿÿÿ\núÿÿÿ]nâÿÿÿSeÿÿÿÿeeþÿÿÿZhùÿÿÿVqûÿÿÿSkïÿÿÿmeÿÿÿÿMeýÿÿÿqûÿÿÿDeþÿÿÿokïÿÿÿoeþÿÿÿjnüÿÿÿVnèÿÿÿMkõÿÿÿnÏÿÿÿXeÞÿÿÿ_iôÿÿÿLnÜÿÿÿ~jïÿÿÿekÙÿÿÿKeýÿÿÿ}e÷ÿÿÿciôÿÿÿieÿÿÿÿnoüÿÿÿ@hùÿÿÿhnñÿÿÿNeþÿÿÿlnîÿÿÿ_nêÿÿÿGkõÿÿÿqêÿÿÿCrWjáÿÿÿyeµÿÿÿRlïÿÿÿVhúÿÿÿPhúÿÿÿ|küÿÿÿjáÿÿÿfnîÿÿÿUiüÿÿÿGjêÿÿÿdküÿÿÿeÞÿÿÿ]eÞÿÿÿ^rõÿÿÿ^küÿÿÿ{eíÿÿÿvnêÿÿÿOnÆÿÿÿ`kõÿÿÿnêÿÿÿInêÿÿÿHnêÿÿÿFküÿÿÿ,küÿÿÿ*rõÿÿÿKnôÿÿÿdkõÿÿÿhûÿÿÿrõÿÿÿEnõÿÿÿboüÿÿÿAoÙÿÿÿHeÿÿÿÿ_nÙÿÿÿxlÙÿÿÿIoüÿÿÿ~eíÿÿÿlkõÿÿÿ,kîÿÿÿeÞÿÿÿ\hÀÿÿÿjkâÿÿÿqÕÿÿÿJnûÿÿÿToÐÿÿÿYkâÿÿÿkêÿÿÿEoÐÿÿÿMoÐÿÿÿZkâÿÿÿkÜÿÿÿ7oûÿÿÿtjÏÿÿÿshñÿÿÿghñÿÿÿhkõÿÿÿOoÐÿÿÿIkñÿÿÿkÏÿÿÿrõÿÿÿFkéÿÿÿQkõÿÿÿnÕÿÿÿfkÜÿÿÿ!koÿÿÿküÿÿÿOk”ÿÿÿnüÿÿÿyh³ÿÿÿXeÿÿÿÿcoÕÿÿÿ[qüÿÿÿ}kÆÿÿÿTkÆÿÿÿekõÿÿÿküÿÿÿn”ÿÿÿ|k¨ÿÿÿk©ÿÿÿ6oüÿÿÿBqÙÿÿÿQy�ÿÿÿJn¥ÿÿÿleíÿÿÿxeíÿÿÿhnÕÿÿÿghëÿÿÿikëÿÿÿ0këÿÿÿküÿÿÿz•jrQUžkcCY‡aafwŠsGzŠDTzŠ©sazŠªsnzŠÞv{zŠËvH{ЏrU{Šãvc{ŠÂvp{Џa~{™O K|ŠÆoW|Žt d|”êk p|µv||ЏzJ}ŠCW}’`Ld}ŽÆE p�™y|�ŠºsI�ŽâNW�ŽêNd�™yq�ŽÆR ~�ŠàsJ‘ŠãWX‘ŠDf‘Št‘”âSA’ŠAN’Š¥]\’µ©Xj’”Ùx x’µªXD“™w R“ŽâF ^“ŠÆUj“ŠÃvw“Š¥\D”µËXQ”µÞX`”Æ»Y n”Š»Lz”ЏvH•™P U•™P a•™Fm•Šxz•Š@H–™u U–Š¥Ya–ŠÔrn–”ÅY |–ŠUH—”¿vU—ޱXb—Š¥Zo—оv}—ŠxJ˜ŠW˜вae˜”â^ s˜ŠÂG˜ŠãGM™ŠÙP[™”ãpi™ŠÙOv™ŽLDšޱbQš”êv ^š”·v jš™zvš”³a C›Ž«eO›”Æv \›µãUh›вEv›ŽD Dœ”ãTPœ™|]œ”ãwjœŠuwœŠãND�”Âw R�ޱ` ^�ŠßLj�Žêsx�Æ›EžŽÙR RžŽÙQ^žŠÔkkžŠÖvyž”ÈvFŸŠÅLSŸŽ«` `Ÿ™ßk lŸ”«[xŸŠÂNE ŠSS ™z` ™|m Š¥[z µ¥UG¡”±aU¡Џkb¡ŠÉvp¡™ªW }¡ŠuI¢ŠãTV¢ŽNc¢™±J p¢×\a|¢”¿p ]¤™{i¤”Âpv¤”}C¥Æ› P¥™©W ]¥ŽÃki¥ŽMv¥ŠÀvC¦ŽJP¦ŽK]¦ŽIj¦³´jw¦³´l D§ŽrP§ŠÂT]§ŠåKj§ŠÃqx§ŽâsG¨”ÆBT¨ŠÙra¨ŽG o¨Ž¥A{¨Ž¥@H©Ž¥BU©Ž¥>b©Ž¥=o©Ž¥?|©Ž¥;IªŽ¥iVªŽ¥:cªŽ¥<pª³®l }ªÆ·mI«Ø]aV«ŽHw¬ºZuD­³®jy³¤YhF´³› n¹³›  {¹”¿bGºŠ¿LTºŽlbº”Èb oºŠÈL{ºŠBI»ŠÙtW»’^Ze»ó[XÕ™»k WØŠBcØ�ã*FpØ�ã*rvà�Ô™Tch莺p KëŽàp Wë�ñ,mcë�Út6Pí�Ù— lí�Õ™efLî�ÃOArñ�ú™EVsó�ñ,mIù”ßvvú޲h Cû�›-EOû�¸¥DTü™·pXŠ�keŠ�›}PŒ”~ M޳©LYŽ�æYfŽ�›/r��Þ¥|q‘Æ¿p m•�Fy•�Öd›�Éoc��›$XRŸ�)sj ¬›u4e]¨�› dBÈ�ÞOfÉ”ÈpuË�ý^BÌ�Ö8`Ó�ƦqXÔ�É]I׬™u4r%fØŠËzXþ¬¦u4Seþ�ä{x†�ã0bs‰�ÅçtUŒ�ò¥rI��ùA{’¬tu4Z|”�Ö8V–�ÈQ`N—ŠÃpnš�Éf{š”Ùpaœ¬—u4dnœ�¸aRŸ�þ›7^s¦�kQ¨¬¥u4uW|©�Yq��õv J„Žâp @‘�Ë›!PL‘¬çu4b\’�_y~™¬u4[awž”âv R€�f^€³ªLDƒŽêp Qƒ¬u4O]ƒ¬u4}¯l¢¬u4kiÒ