Advertisement
Drae77

t7hud_zm_custom.lua

Oct 31st, 2019
627
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 35.31 KB | None | 0 0
  1. -- The Giant Hud Base, Rebuilt from the ground up by the D3V Team
  2.  
  3. -- require("ui.uieditor.widgets.HUD.ZM_Perks.ZMPerksContainerFactory") --This was the stock perk container thing
  4. require("ui.uieditor.widgets.HUD.ZM_Perks.HB21PerkIconWidget")
  5. require("ui.uieditor.widgets.HUD.ZM_Perks.WhosWhoWidget")
  6. require("ui.uieditor.widgets.HUD.ZM_RoundWidget.ZmRndContainer")
  7. require("ui.uieditor.widgets.HUD.ZM_AmmoWidgetFactory.ZmAmmoContainerFactory")
  8. require("ui.uieditor.widgets.HUD.ZM_Score.ZMScr")
  9. require("ui.uieditor.widgets.DynamicContainerWidget")
  10. require("ui.uieditor.widgets.Notifications.Notification")
  11. require("ui.uieditor.widgets.HUD.ZM_NotifFactory.ZmNotifBGB_ContainerFactory")
  12. require("ui.uieditor.widgets.HUD.ZM_CursorHint.ZMCursorHint")
  13. require("ui.uieditor.widgets.HUD.CenterConsole.CenterConsole")
  14. require("ui.uieditor.widgets.HUD.DeadSpectate.DeadSpectate")
  15. require("ui.uieditor.widgets.MPHudWidgets.ScorePopup.MPScr")
  16. require("ui.uieditor.widgets.HUD.ZM_PrematchCountdown.ZM_PrematchCountdown")
  17. require("ui.uieditor.widgets.Scoreboard.CP.ScoreboardWidgetCP")
  18. require("ui.uieditor.widgets.HUD.ZM_TimeBar.ZM_BeastmodeTimeBarWidget")
  19. require("ui.uieditor.widgets.ZMInventory.RocketShieldBluePrint.RocketShieldBlueprintWidget")
  20. require("ui.uieditor.widgets.Chat.inGame.IngameChatClientContainer")
  21. require("ui.uieditor.widgets.BubbleGumBuffs.BubbleGumPackInGame")
  22.  
  23. CoD.Zombie.CommonHudRequire()
  24.  
  25. local function PreLoadCallback(HudRef, InstanceRef)
  26.     CoD.Zombie.CommonPreLoadHud(HudRef, InstanceRef)
  27. end
  28.  
  29. local function PostLoadCallback(HudRef, InstanceRef)
  30.     CoD.Zombie.CommonPostLoadHud(HudRef, InstanceRef)
  31. end
  32.  
  33. function LUI.createMenu.T7Hud_zm_factory(InstanceRef)
  34.     local HudRef = CoD.Menu.NewForUIEditor("T7Hud_zm_factory")
  35.    
  36.     if PreLoadCallback then
  37.         PreLoadCallback(HudRef, InstanceRef)
  38.     end
  39.  
  40.       -- Make sure that the list was not already setup, we must include the stock perks as well!
  41.       if not CoD.ZMPerksFactory then
  42.         -- Add our perks (hudItems.perks.key = imageName) (sync with csc clientuimodel)
  43.         CoD.ZMPerksFactory =
  44.         {
  45.             additional_primary_weapon = "specialty_giant_three_guns_zombies",
  46.             dead_shot = "specialty_giant_ads_zombies",
  47.             dive_to_nuke = "specialty_divetonuke_zombies",
  48.             doubletap2 = "specialty_giant_doubletap_zombies",
  49.             juggernaut = "specialty_giant_juggernaut_zombies",
  50.             marathon = "specialty_giant_marathon_zombies",
  51.             quick_revive = "specialty_giant_quickrevive_zombies",
  52.             sleight_of_hand = "specialty_giant_fastreload_zombies",
  53.             tombstone = "specialty_tombstone_zombies",
  54.             widows_wine = "specialty_giant_widows_wine_zombies",
  55.             electric_cherry = "specialty_blue_electric_cherry_zombies",
  56.            
  57.             madgaz_moonshine = "i_madgaz_moonshine", --Madgaz
  58.             banana_colada = "i_madgaz_banana_colada", --Madgaz
  59.             bull_ice_blast = "i_madgaz_bull_ice_blast", --Madgaz
  60.             crusaders_ale = "i_madgaz_crusader_ale", --Madgaz
  61.             salvage_shake = "i_t7_specialty_shake", --Kaizokuroof
  62.             atomic_liqueur = "i_t7_specialty_atomic", --Kaizokuroof
  63.             snails_pace = "i_snails_pace_shader", --Abnormal202
  64.             cryo_slide = "i_cryo_shader", --Abnormal202
  65.             wind_runner = "i_wind_shader", --Abnormal202
  66.             phdflopper                          = "i_t7_specialty_phdflopper", -- harrybo21
  67.             tombstone                           = "i_t7_specialty_tombstone", -- harrybo21
  68.             whoswho                                 = "i_t7_specialty_whoswho", -- harrybo21
  69.             vultureaid                              = "i_t7_specialty_vultureaid", -- harrybo21
  70.  
  71.             bloodwolf = "i_specialty_bloodwolf_zombies", --F3ARxReaper666
  72.             perception = "i_specialty_perception_zombies", --F3ARxReaper666
  73.             winterwail = "i_specialty_winterwail_zombies", --F3ARxReaper666
  74.             razor = "i_specialty_razor_zombies", --F3ARxReaper666
  75.             bandolier = "i_specialty_bandolier_zombies", --F3ARxReaper666
  76.             blazephase = "i_specialty_blazephase_zombies", --F3ARxReaper666
  77.             stronghold = "i_specialty_stronghold_zombies", --F3ARxReaper666
  78.             victorious = "i_specialty_victorious_zombies", --F3ARxReaper666
  79.             zombshell = "i_specialty_zombshell_zombies", --F3ARxReaper666
  80.             slider = "i_specialty_slider_zombies", --F3ARxReaper666
  81.             dyingwish = "i_specialty_dyingwish_zombies", --F3ARxReaper666
  82.             timeslip = "i_specialty_timeslip_zombies" --F3ARxReaper666
  83.         }
  84.     end
  85.    
  86.     -- Include the new perk container, and resume normal widget usage!
  87.     require("ui.uieditor.widgets.hud.customperksfactory")
  88.    
  89.     HudRef.soundSet = "HUD"
  90.     HudRef:setOwner(InstanceRef)
  91.     HudRef:setLeftRight(true, true, 0, 0)
  92.     HudRef:setTopBottom(true, true, 0, 0)
  93.     HudRef:playSound("menu_open", InstanceRef)
  94.    
  95.     HudRef.buttonModel = Engine.CreateModel(Engine.GetModelForController(InstanceRef), "T7Hud_zm_factory.buttonPrompts")
  96.     HudRef.anyChildUsesUpdateState = true
  97.     -- harrybo21
  98.     local HB21PerksWidget = CoD.HB21PerkIconContainer.new( HudRef, InstanceRef )
  99.     HB21PerksWidget:setLeftRight( true, false, 260, 0 )
  100.     HB21PerksWidget:setTopBottom( false, true, -92, 0 )
  101.  
  102.     HB21PerksWidget.PerkList:setHorizontalCount(12)
  103.     HB21PerksWidget.PerkList:setVerticalCount(12)
  104.  
  105.     HudRef:addElement( HB21PerksWidget )
  106.     HudRef.ZMPerksContainer = HB21PerksWidget
  107.    
  108.     local function ScoreboardCallback( Unk1, Unk2, Unk3 )
  109.         if Engine.IsVisibilityBitSet( InstanceRef, Enum.UIVisibilityBit.BIT_SCOREBOARD_OPEN ) then
  110.             HB21PerksWidget:hide()
  111.     else
  112.         HB21PerksWidget:show()
  113.     end
  114. end
  115.    
  116. HB21PerksWidget:mergeStateConditions( { { stateName = "Scoreboard", condition = ScoreboardCallback } } )
  117.    
  118. local function ScoreboardBitOpen( ModelRef )
  119.     HudRef:updateElementState( HB21PerksWidget, { name = "model_validation",
  120.     menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  121.     modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_SCOREBOARD_OPEN } )
  122. end
  123.    
  124. HB21PerksWidget:subscribeToModel( Engine.GetModel( Engine.GetModelForController( InstanceRef ), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_SCOREBOARD_OPEN ), ScoreboardBitOpen )
  125.  
  126. local WhosWhoWidget = CoD.WhosWhoContainer.new(HudRef, InstanceRef)
  127. WhosWhoWidget:setLeftRight(false, false, 0, 0)
  128. WhosWhoWidget:setTopBottom(false, false, 0, 0)
  129.  
  130. HudRef:addElement(WhosWhoWidget)
  131. HudRef.WhosWhoContainer = WhosWhoWidget
  132.  
  133.    --  original
  134.    -- local PerksWidget = CoD.ZMPerksContainerFactory.new(HudRef, InstanceRef)
  135.    -- PerksWidget:setLeftRight(true, false, 130.000000, 281.000000)
  136.     --PerksWidget:setTopBottom(false, true, -62.000000, -26.000000)
  137.    
  138.   --  PerksWidget.PerkList:setHorizontalCount(12)
  139.   --  PerksWidget.PerkList:setVerticalCount(12)
  140.  
  141.    -- HudRef:addElement(PerksWidget)
  142.     --HudRef.ZMPerksContainerFactory = PerksWidget
  143.  
  144.     local RoundCounter = CoD.ZmRndContainer.new(HudRef, InstanceRef)
  145.     RoundCounter:setLeftRight(true, false, -32.000000, 192.000000)      -- AnchorLeft, AnchorRight, Left, Right
  146.     RoundCounter:setTopBottom(false, true, -174.000000, 18.000000)   -- AnchorTop, AnchorBottom, Top, Bottom
  147.     RoundCounter:setScale(0.8)  -- Scale (Of 1.0)
  148.    
  149.     HudRef:addElement(RoundCounter)
  150.     HudRef.Rounds = RoundCounter
  151.    
  152.     local AmmoWidget = CoD.ZmAmmoContainerFactory.new(HudRef, InstanceRef)
  153.     AmmoWidget:setLeftRight(false, true, -427.000000, 3.000000)
  154.     AmmoWidget:setTopBottom(false, true, -232.000000, 0.000000)
  155.    
  156.     HudRef:addElement(AmmoWidget)
  157.     HudRef.Ammo = AmmoWidget
  158.    
  159.     local ScoreWidget = CoD.ZMScr.new(HudRef, InstanceRef)
  160.     ScoreWidget:setLeftRight(true, false, 30.000000, 164.000000)
  161.     ScoreWidget:setTopBottom(false, true, -256.000000, -128.000000)
  162.     ScoreWidget:setYRot(30.000000)
  163.    
  164.     local function HudStartScore(Unk1, Unk2, Unk3)
  165.         if IsModelValueTrue(InstanceRef, "hudItems.playerSpawned") and
  166.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_HUD_VISIBLE) and
  167.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_WEAPON_HUD_VISIBLE) and not
  168.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_HUD_HARDCORE) and not
  169.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_GAME_ENDED) and not
  170.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_DEMO_CAMERA_MODE_MOVIECAM) and not
  171.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_DEMO_ALL_GAME_HUD_HIDDEN) and not
  172.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_IN_KILLCAM) and not
  173.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_IS_FLASH_BANGED) and not
  174.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_UI_ACTIVE) and not
  175.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_IS_SCOPED) and not
  176.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_IN_VEHICLE) and not
  177.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_IN_GUIDED_MISSILE) and not
  178.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_SCOREBOARD_OPEN) and not
  179.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_IN_REMOTE_KILLSTREAK_STATIC) and not
  180.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_EMP_ACTIVE) then
  181.             return true
  182.         else
  183.             return false
  184.         end
  185.     end
  186.    
  187.     ScoreWidget:mergeStateConditions({{stateName = "HudStart", condition = HudStartScore}})
  188.    
  189.     local function PlayerSpawnCallback(ModelRef)
  190.         HudRef:updateElementState(ScoreWidget, {name = "model_validation",
  191.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  192.             modelName = "hudItems.playerSpawned"})
  193.     end
  194.    
  195.     local function MergeBitVisible(ModelRef)
  196.         HudRef:updateElementState(ScoreWidget, {name = "model_validation",
  197.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  198.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_HUD_VISIBLE})
  199.     end
  200.    
  201.     local function MergeBitWeapon(ModelRef)
  202.         HudRef:updateElementState(ScoreWidget, {name = "model_validation",
  203.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  204.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_WEAPON_HUD_VISIBLE})
  205.     end
  206.    
  207.     local function MergeBitHardcore(ModelRef)
  208.         HudRef:updateElementState(ScoreWidget, {name = "model_validation",
  209.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  210.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_HUD_HARDCORE})
  211.     end
  212.    
  213.     local function MergeBitEndGame(ModelRef)
  214.         HudRef:updateElementState(ScoreWidget, {name = "model_validation",
  215.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  216.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_GAME_ENDED})
  217.     end
  218.    
  219.     local function MergeBitDemoMovie(ModelRef)
  220.         HudRef:updateElementState(ScoreWidget, {name = "model_validation",
  221.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  222.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_DEMO_CAMERA_MODE_MOVIECAM})
  223.     end
  224.    
  225.     local function MergeBitDemoHidden(ModelRef)
  226.         HudRef:updateElementState(ScoreWidget, {name = "model_validation",
  227.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  228.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_DEMO_ALL_GAME_HUD_HIDDEN})
  229.     end
  230.    
  231.     local function MergeBitInKillcam(ModelRef)
  232.         HudRef:updateElementState(ScoreWidget, {name = "model_validation",
  233.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  234.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_IN_KILLCAM})
  235.     end
  236.    
  237.     local function MergeBitFlash(ModelRef)
  238.         HudRef:updateElementState(ScoreWidget, {name = "model_validation",
  239.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  240.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_IS_FLASH_BANGED})
  241.     end
  242.    
  243.     local function MergeBitActive(ModelRef)
  244.         HudRef:updateElementState(ScoreWidget, {name = "model_validation",
  245.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  246.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_UI_ACTIVE})
  247.     end
  248.    
  249.     local function MergeBitScoped(ModelRef)
  250.         HudRef:updateElementState(ScoreWidget, {name = "model_validation",
  251.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  252.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_IS_SCOPED})
  253.     end
  254.    
  255.     local function MergeBitVehicle(ModelRef)
  256.         HudRef:updateElementState(ScoreWidget, {name = "model_validation",
  257.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  258.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_IN_VEHICLE})
  259.     end
  260.    
  261.     local function MergeBitMissile(ModelRef)
  262.         HudRef:updateElementState(ScoreWidget, {name = "model_validation",
  263.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  264.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_IN_GUIDED_MISSILE})
  265.     end
  266.    
  267.     local function MergeBitBoardOpen(ModelRef)
  268.         HudRef:updateElementState(ScoreWidget, {name = "model_validation",
  269.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  270.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_SCOREBOARD_OPEN})
  271.     end
  272.    
  273.     local function MergeBitStaticKill(ModelRef)
  274.         HudRef:updateElementState(ScoreWidget, {name = "model_validation",
  275.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  276.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_IN_REMOTE_KILLSTREAK_STATIC})
  277.     end
  278.    
  279.     local function MergeBitEmpActive(ModelRef)
  280.         HudRef:updateElementState(ScoreWidget, {name = "model_validation",
  281.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  282.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_EMP_ACTIVE})
  283.     end
  284.    
  285.     ScoreWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "hudItems.playerSpawned"), PlayerSpawnCallback)
  286.     ScoreWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_HUD_VISIBLE), MergeBitVisible)
  287.     ScoreWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_WEAPON_HUD_VISIBLE), MergeBitWeapon)
  288.     ScoreWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_HUD_HARDCORE), MergeBitHardcore)
  289.     ScoreWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_GAME_ENDED), MergeBitEndGame)
  290.     ScoreWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_DEMO_CAMERA_MODE_MOVIECAM), MergeBitDemoMovie)
  291.     ScoreWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_DEMO_ALL_GAME_HUD_HIDDEN), MergeBitDemoHidden)
  292.     ScoreWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_IN_KILLCAM), MergeBitInKillcam)
  293.     ScoreWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_IS_FLASH_BANGED), MergeBitFlash)
  294.     ScoreWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_UI_ACTIVE), MergeBitActive)
  295.     ScoreWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_IS_SCOPED), MergeBitScoped)
  296.     ScoreWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_IN_VEHICLE), MergeBitVehicle)
  297.     ScoreWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_IN_GUIDED_MISSILE), MergeBitMissile)
  298.     ScoreWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_SCOREBOARD_OPEN), MergeBitBoardOpen)
  299.     ScoreWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_IN_REMOTE_KILLSTREAK_STATIC), MergeBitStaticKill)
  300.     ScoreWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_EMP_ACTIVE), MergeBitEmpActive)
  301.    
  302.     HudRef:addElement(ScoreWidget)
  303.     HudRef.Score = ScoreWidget
  304.    
  305.     local DynaWidget = CoD.DynamicContainerWidget.new(HudRef, InstanceRef)
  306.     DynaWidget:setLeftRight(false, false, -640.000000, 640.000000)
  307.     DynaWidget:setTopBottom(false, false, -360.000000, 360.000000)
  308.    
  309.     HudRef:addElement(DynaWidget)
  310.     HudRef.fullscreenContainer = DynaWidget
  311.    
  312.     local NotificationWidget = CoD.Notification.new(HudRef, InstanceRef)
  313.     NotificationWidget:setLeftRight(true, true, 0.000000, 0.000000)
  314.     NotificationWidget:setTopBottom(true, true, 0.000000, 0.000000)
  315.    
  316.     HudRef:addElement(NotificationWidget)
  317.     HudRef.Notifications = NotificationWidget
  318.    
  319.     local GumWidget = CoD.ZmNotifBGB_ContainerFactory.new(HudRef, InstanceRef)
  320.     GumWidget:setLeftRight(false, false, -156.000000, 156.000000)
  321.     GumWidget:setTopBottom(true, false, -6.000000, 247.000000)
  322.     GumWidget:setScale(0.750000)
  323.    
  324.     local function GumCallback(ModelRef)
  325.         if IsParamModelEqualToString(ModelRef, "zombie_bgb_token_notification") then
  326.             AddZombieBGBTokenNotification(HudRef, GumWidget, InstanceRef, ModelRef) -- Add a popup for a 'free hit'
  327.         elseif IsParamModelEqualToString(ModelRef, "zombie_bgb_notification") then
  328.             AddZombieBGBNotification(HudRef, GumWidget, ModelRef) -- Add a popup for the gum you got
  329.         elseif IsParamModelEqualToString(ModelRef, "zombie_notification") then
  330.             AddZombieNotification(HudRef, GumWidget, ModelRef) -- Add a popup for a powerup
  331.         end
  332.     end
  333.    
  334.     GumWidget:subscribeToGlobalModel(InstanceRef, "PerController", "scriptNotify", GumCallback)
  335.    
  336.     HudRef:addElement(GumWidget)
  337.     HudRef.ZmNotifBGBContainerFactory = GumWidget
  338.    
  339.     local HintWidget = CoD.ZMCursorHint.new(HudRef, InstanceRef)
  340.     HintWidget:setLeftRight(false, false, -250.000000, 250.000000)
  341.     HintWidget:setTopBottom(true, false, 522.000000, 616.000000)
  342.    
  343.     local function ActiveState1x1(Unk1, Unk2, Unk3)
  344.         if IsCursorHintActive(InstanceRef) and not
  345.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_HUD_HARDCORE) and
  346.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_HUD_VISIBLE) and not
  347.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_IN_GUIDED_MISSILE) and not
  348.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_IS_DEMO_PLAYING) and not
  349.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_IS_FLASH_BANGED) and not
  350.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_SELECTING_LOCATIONAL_KILLSTREAK) and not
  351.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_SPECTATING_CLIENT) and not
  352.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_UI_ACTIVE) then
  353.             return (Engine.GetModelValue(Engine.GetModel(DataSources.HUDItems.getModel(InstanceRef), "cursorHintIconRatio")) == 1.0)
  354.         else
  355.             return false
  356.         end
  357.     end
  358.    
  359.     local function ActiveState2x1(Unk1, Unk2, Unk3)
  360.         if IsCursorHintActive(InstanceRef) and not
  361.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_HUD_HARDCORE) and
  362.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_HUD_VISIBLE) and not
  363.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_IN_GUIDED_MISSILE) and not
  364.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_IS_DEMO_PLAYING) and not
  365.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_IS_FLASH_BANGED) and not
  366.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_SELECTING_LOCATIONAL_KILLSTREAK) and not
  367.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_SPECTATING_CLIENT) and not
  368.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_UI_ACTIVE) then
  369.             return (Engine.GetModelValue(Engine.GetModel(DataSources.HUDItems.getModel(InstanceRef), "cursorHintIconRatio")) == 2.0)
  370.         else
  371.             return false
  372.         end
  373.     end
  374.    
  375.     local function ActiveState4x1(Unk1, Unk2, Unk3)
  376.         if IsCursorHintActive(InstanceRef) and not
  377.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_HUD_HARDCORE) and
  378.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_HUD_VISIBLE) and not
  379.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_IN_GUIDED_MISSILE) and not
  380.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_IS_DEMO_PLAYING) and not
  381.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_IS_FLASH_BANGED) and not
  382.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_SELECTING_LOCATIONAL_KILLSTREAK) and not
  383.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_SPECTATING_CLIENT) and not
  384.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_UI_ACTIVE) then
  385.             return (Engine.GetModelValue(Engine.GetModel(DataSources.HUDItems.getModel(InstanceRef), "cursorHintIconRatio")) == 4.0)
  386.         else
  387.             return false
  388.         end
  389.     end
  390.    
  391.     local function ActiveStateNoImg(Unk1, Unk2, Unk3)
  392.         if IsCursorHintActive(InstanceRef) and not
  393.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_HUD_HARDCORE) and
  394.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_HUD_VISIBLE) and not
  395.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_IN_GUIDED_MISSILE) and not
  396.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_IS_DEMO_PLAYING) and not
  397.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_IS_FLASH_BANGED) and not
  398.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_SELECTING_LOCATIONAL_KILLSTREAK) and not
  399.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_SPECTATING_CLIENT) and not
  400.         Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_UI_ACTIVE) then
  401.             return IsModelValueEqualTo(InstanceRef, "hudItems.cursorHintIconRatio", 0.0)
  402.         else
  403.             return false
  404.         end
  405.     end
  406.    
  407.     HintWidget:mergeStateConditions({
  408.         {stateName = "Active_1x1", condition = ActiveState1x1},
  409.         {stateName = "Active_2x1", condition = ActiveState2x1},
  410.         {stateName = "Active_4x1", condition = ActiveState4x1},
  411.         {stateName = "Active_NoImage", condition = ActiveStateNoImg}
  412.     })
  413.    
  414.     local CursorController = Engine.GetModel(Engine.GetModelForController(InstanceRef), "hudItems.showCursorHint")
  415.    
  416.     local function ShowCallback(ModelRef)
  417.         HudRef:updateElementState(HintWidget, {name = "model_validation",
  418.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  419.             modelName = "hudItems.showCursorHint"})
  420.     end
  421.    
  422.     HintWidget:subscribeToModel(CursorController, ShowCallback)
  423.    
  424.     local function CursorBitHardcore(ModelRef)
  425.         HudRef:updateElementState(HintWidget, {name = "model_validation",
  426.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  427.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_HUD_HARDCORE})
  428.     end    
  429.  
  430.     local function CursorBitVisible(ModelRef)
  431.         HudRef:updateElementState(HintWidget, {name = "model_validation",
  432.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  433.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_HUD_VISIBLE})
  434.     end
  435.    
  436.     local function CursorBitMissile(ModelRef)
  437.         HudRef:updateElementState(HintWidget, {name = "model_validation",
  438.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  439.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_IN_GUIDED_MISSILE})
  440.     end
  441.    
  442.     local function CursorBitDemo(ModelRef)
  443.         HudRef:updateElementState(HintWidget, {name = "model_validation",
  444.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  445.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_IS_DEMO_PLAYING})
  446.     end
  447.    
  448.     local function CursorBitFlash(ModelRef)
  449.         HudRef:updateElementState(HintWidget, {name = "model_validation",
  450.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  451.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_IS_FLASH_BANGED})
  452.     end
  453.    
  454.     local function CursorBitMap(ModelRef)
  455.         HudRef:updateElementState(HintWidget, {name = "model_validation",
  456.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  457.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_SELECTING_LOCATIONAL_KILLSTREAK})
  458.     end
  459.    
  460.     local function CursorBitSpectating(ModelRef)
  461.         HudRef:updateElementState(HintWidget, {name = "model_validation",
  462.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  463.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_SPECTATING_CLIENT})
  464.     end
  465.    
  466.     local function CursorBitActive(ModelRef)
  467.         HudRef:updateElementState(HintWidget, {name = "model_validation",
  468.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  469.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_UI_ACTIVE})
  470.     end
  471.    
  472.     local function CursorRatioChange(ModelRef)
  473.         HudRef:updateElementState(HintWidget, {name = "model_validation",
  474.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  475.             modelName = "hudItems.cursorHintIconRatio"})
  476.     end
  477.    
  478.     -- This widget reacts to these controller changes
  479.     HintWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_HUD_HARDCORE), CursorBitHardcore)
  480.     HintWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_HUD_VISIBLE), CursorBitVisible)
  481.     HintWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_IN_GUIDED_MISSILE), CursorBitMissile)
  482.     HintWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_IS_DEMO_PLAYING), CursorBitDemo)
  483.     HintWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_IS_FLASH_BANGED), CursorBitFlash)
  484.     HintWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_SELECTING_LOCATIONAL_KILLSTREAK), CursorBitMap)
  485.     HintWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_SPECTATING_CLIENT), CursorBitSpectating)
  486.     HintWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_UI_ACTIVE), CursorBitActive)
  487.     HintWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "hudItems.cursorHintIconRatio"), CursorRatioChange)
  488.    
  489.     HudRef:addElement(HintWidget)
  490.     HudRef.CursorHint = HintWidget
  491.    
  492.     local CenterCon = CoD.CenterConsole.new(HudRef, InstanceRef)
  493.     CenterCon:setLeftRight(false, false, -370.000000, 370.000000)
  494.     CenterCon:setTopBottom(true, false, 68.500000, 166.500000)
  495.    
  496.     HudRef:addElement(CenterCon)
  497.     HudRef.ConsoleCenter = CenterCon
  498.    
  499.     local DeadOverlay = CoD.DeadSpectate.new(HudRef, InstanceRef)
  500.     DeadOverlay:setLeftRight(false, false, -150.000000, 150.000000)
  501.     DeadOverlay:setTopBottom(false, true, -180.000000, -120.000000)
  502.    
  503.     HudRef:addElement(DeadOverlay)
  504.     HudRef.DeadSpectate = DeadOverlay
  505.    
  506.     local ScoreBd = CoD.MPScr.new(HudRef, InstanceRef)
  507.     ScoreBd:setLeftRight(false, false, -50.000000, 50.000000)
  508.     ScoreBd:setTopBottom(true, false, 233.500000, 258.500000)
  509.    
  510.     local function MpCallback(ModelRef)
  511.         if IsParamModelEqualToString(ModelRef, "score_event") then
  512.             PlayClipOnElement(HudRef, {elementName = "MPScore",  clipName = "NormalScore"}, InstanceRef)
  513.             SetMPScoreText(HudRef, ScoreBd, InstanceRef, ModelRef)
  514.         end
  515.     end
  516.    
  517.     HudRef:subscribeToGlobalModel(InstanceRef, "PerController", "scriptNotify", MpCallback)
  518.    
  519.     HudRef:addElement(ScoreBd)
  520.     HudRef.MPScore = ScoreBd
  521.    
  522.     local PreMatch = CoD.ZM_PrematchCountdown.new(HudRef, InstanceRef)
  523.     PreMatch:setLeftRight(false, false, -640.000000, 640.000000)
  524.     PreMatch:setTopBottom(false, false, -360.000000, 360.000000)
  525.    
  526.     HudRef:addElement(PreMatch)
  527.     HudRef.ZMPrematchCountdown0 = PreMatch
  528.    
  529.     local ScoreCP = CoD.ScoreboardWidgetCP.new(HudRef, InstanceRef)
  530.     ScoreCP:setLeftRight(false, false, -503.000000, 503.000000)
  531.     ScoreCP:setTopBottom(true, false, 247.000000, 773.000000)
  532.    
  533.     HudRef:addElement(ScoreCP)
  534.     HudRef.ScoreboardWidget = ScoreCP
  535.    
  536.     local BeastTimer = CoD.ZM_BeastmodeTimeBarWidget.new(HudRef, InstanceRef)
  537.     HudRef:setLeftRight(false, false, -242.500000, 321.500000)
  538.     HudRef:setTopBottom(false, true, -174.000000, -18.000000)
  539.    
  540.     HudRef:addElement(BeastTimer)
  541.     HudRef.ZMBeastBar = BeastTimer
  542.    
  543.     local ShieldWidget = CoD.RocketShieldBlueprintWidget.new(HudRef, InstanceRef)
  544.     ShieldWidget:setLeftRight(true, false, -36.500000, 277.500000)
  545.     ShieldWidget:setTopBottom(true, false, 104.000000, 233.000000)
  546.     ShieldWidget:setScale(0.800000)
  547.    
  548.     local function ShieldCallback(Unk1, Unk2, Unk3)
  549.         if Engine.IsVisibilityBitSet(InstanceRef, Enum.UIVisibilityBit.BIT_SCOREBOARD_OPEN) then end
  550.         return AlwaysFalse() -- Because the shield isn't available...
  551.     end
  552.    
  553.     ShieldWidget:mergeStateConditions({{stateName = "Scoreboard", condition = ShieldCallback}})
  554.    
  555.     local function ShieldParts(ModelRef)
  556.         HudRef:updateElementState(ShieldWidget, {name = "model_validation",
  557.             menu = HudRef, menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  558.             modelName = "zmInventory.widget_shield_parts"})
  559.     end
  560.    
  561.     local function ShieldBitOpen(ModelRef)
  562.         HudRef:updateElementState(ShieldWidget, {name = "model_validation",
  563.             menu = HudRef, modelValue = Engine.GetModelValue(ModelRef),
  564.             modelName = "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_SCOREBOARD_OPEN})
  565.     end
  566.    
  567.     ShieldWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "zmInventory.widget_shield_parts"), ShieldParts)
  568.     ShieldWidget:subscribeToModel(Engine.GetModel(Engine.GetModelForController(InstanceRef), "UIVisibilityBit." .. Enum.UIVisibilityBit.BIT_SCOREBOARD_OPEN), ShieldBitOpen)
  569.    
  570.     HudRef:addElement(ShieldWidget)
  571.     HudRef.RocketShieldBlueprintWidget = ShieldWidget
  572.    
  573.     local ChatContainer = CoD.IngameChatClientContainer.new(HudRef, InstanceRef)
  574.     ChatContainer:setLeftRight(true, false, 0.000000, 360.000000)
  575.     ChatContainer:setTopBottom(true, false, -2.500000, 717.500000)
  576.    
  577.     HudRef:addElement(ChatContainer)
  578.     HudRef.IngameChatClientContainer = ChatContainer
  579.    
  580.     local ChatContainer2 = CoD.IngameChatClientContainer.new(HudRef, InstanceRef)
  581.     ChatContainer2:setLeftRight(true, false, 0.000000, 360.000000)
  582.     ChatContainer2:setTopBottom(true, false, -2.500000, 717.500000)
  583.    
  584.     HudRef:addElement(ChatContainer2)
  585.     HudRef.IngameChatClientContainer0 = ChatContainer2
  586.    
  587.     local GumPack = CoD.BubbleGumPackInGame.new(HudRef, InstanceRef)
  588.     GumPack:setLeftRight(false, false, -184.000000, 184.000000)
  589.     GumPack:setTopBottom(true, false, 36.000000, 185.000000)
  590.    
  591.     HudRef:addElement(GumPack)
  592.     HudRef.BubbleGumPackInGame = GumPack
  593.    
  594.     ScoreWidget.navigation = {up = ScoreCP, right = ScoreCP}
  595.     ScoreCP.navigation = {left = ScoreWidget, down = ScoreWidget}
  596.    
  597.     CoD.Menu.AddNavigationHandler(HudRef, HudRef, InstanceRef)
  598.    
  599.     local function MenuLoadedCallback(HudObj, EventObj)
  600.         SizeToSafeArea(HudObj, InstanceRef)
  601.         return HudObj:dispatchEventToChildren(EventObj)
  602.     end
  603.    
  604.     HudRef:registerEventHandler("menu_loaded", MenuLoadedCallback)
  605.    
  606.     -- Not sure why these are explicitly set, but they are
  607.     ScoreWidget.id = "Score"
  608.     ScoreCP.id = "ScoreboardWidget"
  609.    
  610.     HudRef:processEvent({name = "menu_loaded", controller = InstanceRef})
  611.     HudRef:processEvent({name = "update_state", menu = HudRef})
  612.    
  613.     if not HudRef:restoreState() then
  614.         HudRef.ScoreboardWidget:processEvent({name = "gain_focus", controller = InstanceRef})
  615.     end
  616.    
  617.     -- D3V Team logo (Only difference from stock!)
  618.    -- local DevText = CoD.TextWithBg.new(HudRef, InstanceRef)
  619.    -- DevText:setLeftRight(true, false, 20, 255)
  620.    -- DevText:setTopBottom(true, false, 20, 50)
  621.    -- DevText.Text:setText("D3V Team: L3ak Mod Demo v1.0.0")
  622.    -- DevText.Bg:setRGB(0.098, 0.098, 0.098)   -- RGBA are all specified in float range (0-1) (Byte / 255)
  623.    -- DevText.Bg:setAlpha(0.8)
  624.    
  625.     -- HudRef:addElement(DevText)
  626.     -- HudRef.DevWins = DevText
  627.    
  628.     local function HudCloseCallback(SenderObj)
  629.         SenderObj.ZMPerksContainerFactory:close()
  630.         SenderObj.WhosWhoWidget:close()
  631.         SenderObj.Rounds:close()
  632.         SenderObj.Ammo:close()
  633.         SenderObj.Score:close()
  634.         SenderObj.fullscreenContainer:close()
  635.         SenderObj.Notifications:close()
  636.         SenderObj.ZmNotifBGBContainerFactory:close()
  637.         SenderObj.CursorHint:close()
  638.         SenderObj.ConsoleCenter:close()
  639.         SenderObj.DeadSpectate:close()
  640.         SenderObj.MPScore:close()
  641.         SenderObj.ZMPrematchCountdown0:close()
  642.         SenderObj.ScoreboardWidget:close()
  643.         SenderObj.ZMBeastBar:close()
  644.         SenderObj.RocketShieldBlueprintWidget:close()
  645.         SenderObj.IngameChatClientContainer:close()
  646.         SenderObj.IngameChatClientContainer0:close()
  647.         SenderObj.BubbleGumPackInGame:close()
  648.         SenderObj.DevWins:close()
  649.        
  650.         Engine.GetModel(Engine.GetModelForController(InstanceRef), "T7Hud_zm_factory.buttonPrompts")
  651.         Engine.UnsubscribeAndFreeModel()
  652.     end
  653.    
  654.     LUI.OverrideFunction_CallOriginalSecond(HudRef, "close", HudCloseCallback)
  655.    
  656.     if PostLoadCallback then
  657.         PostLoadCallback(HudRef, InstanceRef)
  658.     end
  659.  
  660.     return HudRef
  661. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement