diff --git a/ScaleformUI_Lua/example_lobby.lua b/ScaleformUI_Lua/example_lobby.lua index eafd060e..45dc8962 100644 --- a/ScaleformUI_Lua/example_lobby.lua +++ b/ScaleformUI_Lua/example_lobby.lua @@ -6,27 +6,183 @@ slua_setheader -- Set menu header slua_setinfo -- Set menu info slua_setplayer_1 -- Set menu plaayer list template 1 slua_setplayer_2 -- Set menu plaayer list template 2 -slua_setmappanel -- Set checkpoint route map panel +slua_addmappanel -- Add checkpoint route map panel ]] --- CreateThread(function() --- while true do --- DisableControlAction(0, 200, true) --- DisableControlAction(0, 199, true) --- Citizen.Wait(0) --- end --- end) +--/////////////////////// Command ///////////////////////////////////-- +RegisterCommand('slua_setheader', function(source, args) -- Use command before menu open. + local WeekString = { + [0] = "Sunday", + [1] = "Monday", + [2] = "Tuesday", + [3] = "Wednesday", + [4] = "Thursday", + [5] = "Friday", + [6] = "Saturday", + } + TriggerEvent("ScaleformUI:lobbymenu:SetHeaderMenu", { + Title = "Lobby", + Subtitle = "Racing", + SideTop = GetPlayerName(PlayerId()), + SideMid = WeekString[GetClockDayOfWeek()].." "..GetClockHours()..":"..GetClockMinutes(), + SideBot = "BANK $"..NetworkGetVcBankBalance().." CASH $"..NetworkGetVcBalance(), + settingsPanel = "🕹️ GAME", + playersPanel = "PLAYERS 1 OF 32", + missionsPanel = "INFO", + ColColor1 = 116, + ColColor2 = 116, + ColColor3 = 116, + }) + + CreateRuntimeTextureFromDuiHandle(CreateRuntimeTxd('ScaleformUI_Lua_duiTxd'), "stunt-45", GetDuiHandle(CreateDui("https://static.wikia.nocookie.net/gtawiki/images/4/4a/45%C2%B0-GTAO-JobImage.jpg/revision/latest?cb=20190216233424", 320, 180))) + TriggerEvent("ScaleformUI:lobbymenu:SetInfoTitle", { + Title = "Stunt - 45°", + tex = "scaleformui", + txd = "lobby_panelbackground" + }) + + local settingList = { + { + label = "Setting", + dec = "Open game setting menu.", + callbackFunction = function() + TriggerEvent("ScaleformUI:lobbymenu:Hide") + Wait(100) + ActivateFrontendMenu(GetHashKey("FE_MENU_VERSION_MP_PAUSE"), false, 6) + end, + }, + { + label = "Map", + dec = "Open map menu.", + callbackFunction = function() + TriggerEvent("ScaleformUI:lobbymenu:Hide") + Wait(100) + ActivateFrontendMenu(GetHashKey("FE_MENU_VERSION_MP_PAUSE"), false, 0) + end, + }, + { + label = "Leave Game", + dec = "Leave current lobby.", + callbackFunction = function() + TriggerEvent("ScaleformUI:lobbymenu:Hide") + ExecuteCommand("minigame leave") + end, + mainColor = 8, + highlightColor = 6, + textColor = 0, + highlightedTextColor = 0, + Blink = true, + }, + } + + TriggerEvent("ScaleformUI:lobbymenu:SettingsColumn", settingList) +end, false) -local LobbyMenu -local defaultSubtitle = "Template by H@mer" -local DuiObject +RegisterCommand('slua_setinfo', function(source, args) + local infoList = { + { + LeftLabel = "Map", + RightLabel = "Stunt - 45°", + BadgeStyle = 179, + HudColours = false, + }, + { + LeftLabel = "Min Player", + RightLabel = 1, + BadgeStyle = 179, + HudColours = false, + }, + { + LeftLabel = "Time Left", + RightLabel = "60 Minute", + BadgeStyle = 179, + HudColours = false, + }, + } + TriggerEvent("ScaleformUI:lobbymenu:SetInfo", infoList) +end, false) + +RegisterCommand('slua_setplayer_1', function(source, args) + local playerList = {} + for i = 1, 10 do + table.insert(playerList, { + source = GetPlayerServerId(PlayerId()), + name = "Player "..i, + Colours = 116, + rowColor = 116, + HudColours = 15, + Status = "WAITING", + CrewTag = "", + level = GetRandomIntInRange(1, 999), + ped = PlayerPedId(), + }) + end + + TriggerEvent("ScaleformUI:lobbymenu:SetPlayerList", playerList) +end, false) + +RegisterCommand('slua_setplayer_2', function(source, args) + local playerList = {} + for i = 11, 20 do + table.insert(playerList, { + source = GetPlayerServerId(PlayerId()), + name = "Player "..i, + Colours = 119, + rowColor = 119, + HudColours = 18, + Status = "PLAYING", + CrewTag = "", + level = GetRandomIntInRange(1, 999), + ped = PlayerPedId(), + }) + end + + TriggerEvent("ScaleformUI:lobbymenu:SetPlayerList", playerList) +end, false) + +RegisterCommand('slua_setmappanel', function(source, args) + local data = GetEntityCoords(PlayerPedId()) + vector3(0.0, 0.0, 100.0) + local route = {} + for i = 1, 10 do + if i % 2 == 0 then + data = data + vector3(i * 10, 0.0, 0.0) + else + data = data + vector3(0.0, i * 10, 0.0) + end + table.insert(route, {order = i, path = 1, x = data.x, y = data.y, z = data.z}) + end + TriggerEvent("ScaleformUI:lobbymenu:MapPanel", route) +end, false) -local selectColumnID = 1 -local selectRowID = 1 +RegisterCommand('slua_show', function(source, args) + StatSetBool(GetHashKey("MP0_DEFAULT_STATS_SET"), true, true) + StatSetBool(GetHashKey("MP1_DEFAULT_STATS_SET"), true, true) -local ColumnCallbackFunction = {} -ColumnCallbackFunction[1] = {} -ColumnCallbackFunction[2] = {} + LocalPlayer.state:set("ScaleformUI_Lua_IsUsingKeyboard", IsUsingKeyboard(0), true) + LocalPlayer.state:set("ScaleformUI_Lua_MP0_STAMINA", table.pack(StatGetInt(`MP0_STAMINA`))[2], true) + LocalPlayer.state:set("ScaleformUI_Lua_MP0_STRENGTH", table.pack(StatGetInt(`MP0_STRENGTH`))[2], true) + LocalPlayer.state:set("ScaleformUI_Lua_MP0_LUNG_CAPACITY", table.pack(StatGetInt(`MP0_LUNG_CAPACITY`))[2], true) + LocalPlayer.state:set("ScaleformUI_Lua_MP0_SHOOTING_ABILITY", table.pack(StatGetInt(`MP0_SHOOTING_ABILITY`))[2], true) + LocalPlayer.state:set("ScaleformUI_Lua_MP0_WHEELIE_ABILITY", table.pack(StatGetInt(`MP0_WHEELIE_ABILITY`))[2], true) + LocalPlayer.state:set("ScaleformUI_Lua_MP0_FLYING_ABILITY", table.pack(StatGetInt(`MP0_FLYING_ABILITY`))[2], true) + LocalPlayer.state:set("ScaleformUI_Lua_MP0_STEALTH_ABILITY", table.pack(StatGetInt(`MP0_STEALTH_ABILITY`))[2], true) + LocalPlayer.state:set("ScaleformUI_Lua_MP0_HIGHEST_MENTAL_STATE", table.pack(StatGetInt(`MP0_HIGHEST_MENTAL_STATE`))[2], true) + + ExecuteCommand("slua_setheader") + ExecuteCommand("slua_setinfo") + ExecuteCommand("slua_addmappanel") + TriggerEvent("ScaleformUI:lobbymenu:Show", 0, true, function() + print("lobbymenu close") + end) + ExecuteCommand("slua_setmappanel") +end, false) + +--/////////////////////// Lobby Handler ///////////////////////////////////-- +local LobbyMenu +local settingsPanel = {} +local playersPanel = {} +local missionsPanel = {} +local defaultSubtitle = "Template by H@mer" local minimapLobbyEnabled = false local firstLoad = true @@ -40,74 +196,96 @@ local DataSet = { local function CreateLobbyMenu() if not LobbyMenu then - local columns = { - SettingsListColumn.New("COLUMN SETTINGS", SColor.HUD_Red), - PlayerListColumn.New("COLUMN PLAYERS", SColor.HUD_Orange), - MissionDetailsPanel.New("COLUMN INFO PANEL", SColor.HUD_Green), - } LobbyMenu = MainView.New("Lobby Menu", defaultSubtitle, "", "", "") - -- LobbyMenu:ShowStoreBackground(true) - -- LobbyMenu:StoreBackgroundAnimationSpeed(50) - LobbyMenu:SetupColumns(columns) + + settingsPanel = SettingsListColumn.New("COLUMN SETTINGS", 20) + playersPanel = PlayerListColumn.New("COLUMN PLAYERS", 18) + missionsPanel = MissionDetailsPanel.New("COLUMN INFO PANEL", 20) + + LobbyMenu:SetupLeftColumn(settingsPanel) + LobbyMenu:SetupCenterColumn(playersPanel) + LobbyMenu:SetupRightColumn(missionsPanel) --[[ - RequestStreamedTextureDictC("ScaleformUI") + RequestStreamedTextureDictC("ArenaLobby") local mugshot = RegisterPedheadshot(PlayerPedId()) local timer = GetGameTimer() while not IsPedheadshotReady(mugshot) and GetGameTimer() - timer < 1000 do Citizen.Wait(0) end local headshot = GetPedheadshotTxdString(mugshot) - AddReplaceTexture("ScaleformUI", "LobbyHeadshot", headshot, headshot) - LobbyMenu:HeaderPicture("ScaleformUI", "LobbyHeadshot") -- lobbyMenu:CrewPicture used to add a picture on the left of the HeaderPicture - UnregisterPedheadshot(mugshot) -- call it right after adding the menu.. this way the txd will be loaded correctly by the scaleform.. + AddReplaceTexture("ArenaLobby", "LobbyHeadshot", headshot, headshot) + LobbyMenu:HeaderPicture("ArenaLobby", "LobbyHeadshot") -- LobbyMenu:CrewPicture used to add a picture on the left of the HeaderPicture + UnregisterPedheadshot(mugshot) -- call it right after adding the menu.. this way the txd will be loaded correctly by the scaleform.. ]] - DuiObject = CreateDui("https://i.imgur.com/mH0Y65C.gif", 320, 180) - local timeout = GetNetworkTime() - while not IsDuiAvailable(DuiObject) and GetNetworkTime()-timeout < 6000 do - Citizen.Wait(0) - end - CreateRuntimeTextureFromDuiHandle(CreateRuntimeTxd('scaleformui'), "lobby_panelbackground", GetDuiHandle(DuiObject)) - - LobbyMenu:CanPlayerCloseMenu(true) - -- this is just an example..CanPlayerCloseMenu is always defaulted to true.. if you set this to false.. be sure to give the players a way out of your menu!!! + LobbyMenu:CanPlayerCloseMenu(true) -- this is just an example..CanPlayerCloseMenu is always defaulted to true.. if you set this to false.. be sure to give the players a way out of your menu!!! local item = UIMenuItem.New("UIMenuItem", "UIMenuItem description") item:BlinkDescription(true) - LobbyMenu.SettingsColumn:AddSettings(item) + settingsPanel:AddSettings(item) local crew = CrewTag.New("", true, false, CrewHierarchy.Leader, SColor.HUD_Green) local friend = FriendItem.New("Name", SColor.FromHudColor(HudColours.HUD_COLOUR_FREEMODE), true, HudColours.HUD_COLOUR_FREEMODE, "BLANK", crew) - LobbyMenu.PlayersColumn:AddPlayer(friend) + playersPanel:AddPlayer(friend) - LobbyMenu.MissionPanel:UpdatePanelPicture("scaleformui", "lobby_panelbackground") - LobbyMenu.MissionPanel:Title("ScaleformUI - Title") + missionsPanel:UpdatePanelPicture("scaleformui", "lobby_panelbackground") + missionsPanel:Title("ScaleformUI - Title") local detailItem = UIMenuFreemodeDetailsItem.New("Left Label", "Right Label", false, BadgeStyle.BRIEFCASE, SColor.HUD_Freemode) - LobbyMenu.MissionPanel:AddItem(detailItem) + missionsPanel:AddItem(detailItem) - LobbyMenu.SettingsColumn.OnIndexChanged = function(idx) - selectRowID = idx - selectColumnID = 1 - end + -- Player option menu + playersPanel.OnPlayerItemActivated = function(index) + -- Host select player row + if DataSet.PlayerList[index] and DataSet.PlayerList[index].ped then + local targetSource = DataSet.PlayerList[index].source + local settingList = { + { + label = "Back", + dec = "", + callbackFunction = function() + ExecuteCommand("slua_setheader") + ExecuteCommand("slua_setplayer_1") + end, + }, + } - LobbyMenu.PlayersColumn.OnIndexChanged = function(idx) - selectRowID = idx - selectColumnID = 2 + table.insert(settingList, { + label = "Kick 81 then - return "Tri-Athlete" - elseif value > 61 then - return "Athlete" - elseif value > 41 then - return "Healthy" - elseif value > 21 then - return "Out of Shape" - else - return "Lethargic" - end + if value > 81 then + return "Tri-Athlete" + elseif value > 61 then + return "Athlete" + elseif value > 41 then + return "Healthy" + elseif value > 21 then + return "Out of Shape" + else + return "Lethargic" + end end function GetSkillShootingDescription(value) - if value > 81 then - return "Dead-Eye" - elseif value > 61 then - return "Military Training" - elseif value > 41 then - return "Police Training" - elseif value > 21 then - return "Spray-and-Pray" - else - return "Untrained" - end + if value > 81 then + return "Dead-Eye" + elseif value > 61 then + return "Military Training" + elseif value > 41 then + return "Police Training" + elseif value > 21 then + return "Spray-and-Pray" + else + return "Untrained" + end end function GetSkillStrengthDescription(value) - if value > 81 then - return "Bodybuilder" - elseif value > 61 then - return "Tough" - elseif value > 41 then - return "Average" - elseif value > 21 then - return "Weak" - else - return "Fragile" - end + if value > 81 then + return "Bodybuilder" + elseif value > 61 then + return "Tough" + elseif value > 41 then + return "Average" + elseif value > 21 then + return "Weak" + else + return "Fragile" + end end function GetSkillStealthDescription(value) - if value > 81 then - return "Ninja" - elseif value > 61 then - return "Hunter" - elseif value > 41 then - return "Sneaky" - elseif value > 21 then - return "Loud" - else - return "Clumsy" - end + if value > 81 then + return "Ninja" + elseif value > 61 then + return "Hunter" + elseif value > 41 then + return "Sneaky" + elseif value > 21 then + return "Loud" + else + return "Clumsy" + end end function GetSkillFlyingDescription(value) - if value > 81 then - return "Ace" - elseif value > 61 then - return "Fighter Pilot" - elseif value > 41 then - return "Commercial Pilot" - elseif value > 21 then - return "RC Pilot" - else - return "Dangerous" - end + if value > 81 then + return "Ace" + elseif value > 61 then + return "Fighter Pilot" + elseif value > 41 then + return "Commercial Pilot" + elseif value > 21 then + return "RC Pilot" + else + return "Dangerous" + end end function GetSkillDrivingDescription(value) - if value > 81 then - return "Pro-Racer" - elseif value > 61 then - return "Street Racer" - elseif value > 41 then - return "Commuter" - elseif value > 21 then - return "Sunday Driver" - else - return "Unlicensed" - end + if value > 81 then + return "Pro-Racer" + elseif value > 61 then + return "Street Racer" + elseif value > 41 then + return "Commuter" + elseif value > 21 then + return "Sunday Driver" + else + return "Unlicensed" + end end function GetSkillMentalStateDescription(value) - if value > 81 then - return "Psychopath" - elseif value > 61 then - return "Maniac" - elseif value > 41 then - return "Deranged" - elseif value > 21 then - return "Unstable" - else - return "Normal" - end + if value > 81 then + return "Psychopath" + elseif value > 61 then + return "Maniac" + elseif value > 41 then + return "Deranged" + elseif value > 21 then + return "Unstable" + else + return "Normal" + end end diff --git a/ScaleformUI_Lua/example_lobby_player.lua b/ScaleformUI_Lua/example_lobby_player.lua deleted file mode 100644 index 483285bd..00000000 --- a/ScaleformUI_Lua/example_lobby_player.lua +++ /dev/null @@ -1,278 +0,0 @@ -local PlayerMenu -local defaultSubtitle = "Template by H@mer" - -local selectColumnID = 1 -local selectRowID = 1 - -local ColumnCallbackFunction = {} -ColumnCallbackFunction[1] = {} -ColumnCallbackFunction[2] = {} - -local firstLoad = true - -local function CreatePlayerMenuMenu() - if not PlayerMenu then - local columns = { - SettingsListColumn.New("COLUMN SETTINGS", SColor.HUD_Red), - PlayerListColumn.New("COLUMN PLAYERS", SColor.HUD_Orange), - MissionDetailsPanel.New("COLUMN INFO PANEL", SColor.HUD_Green), - } - PlayerMenu = MainView.New("Lobby Menu", defaultSubtitle, "", "", "") - PlayerMenu:SetupColumns(columns) - PlayerMenu:CanPlayerCloseMenu(true) - - local item = UIMenuItem.New("UIMenuItem", "UIMenuItem description") - item:BlinkDescription(true) - PlayerMenu.SettingsColumn:AddSettings(item) - - PlayerMenu.MissionPanel:UpdatePanelPicture("scaleformui", "lobby_panelbackground") - PlayerMenu.MissionPanel:Title("ScaleformUI - Title") - - local detailItem = UIMenuFreemodeDetailsItem.New("Left Label", "Right Label", false, BadgeStyle.BRIEFCASE, SColor.HUD_Freemode) - PlayerMenu.MissionPanel:AddItem(detailItem) - - PlayerMenu.SettingsColumn.OnIndexChanged = function(idx) - selectRowID = idx - selectColumnID = 1 - end - - PlayerMenu.PlayersColumn.OnIndexChanged = function(idx) - selectRowID = idx - selectColumnID = 2 - end - - Citizen.Wait(100) - firstLoad = false - end -end - ----Can't change while PlayerMenu already visible -AddEventHandler("ScaleformUI:playermenu:SetHeaderMenu", function(data) - while firstLoad do - Citizen.Wait(0) - end - - if data.Title then - PlayerMenu.Title = data.Title - end - - if data.Subtitle then - PlayerMenu.Subtitle = data.Subtitle - end - - --[[ - if data.SideTop then - playerMenu.SideTop = data.SideTop - end - - if data.SideMid then - playerMenu.SideMid = data.SideMid - end - - if data.SideBot then - playerMenu.SideBot = data.SideBot - end - ]] - - if data.Col1 then - PlayerMenu.listCol[1]._label = data.Col1 - end - - if data.Col2 then - PlayerMenu.listCol[2]._label = data.Col2 - end - - if data.Col3 then - PlayerMenu.listCol[3]._label = data.Col3 - end - - PlayerMenu.listCol[1]._color = SColor.FromHudColor(HudColours.HUD_COLOUR_FREEMODE) - PlayerMenu.listCol[2]._color = SColor.FromHudColor(HudColours.HUD_COLOUR_FREEMODE) - PlayerMenu.listCol[3]._color = SColor.FromHudColor(HudColours.HUD_COLOUR_FREEMODE) -end) - -local ClonePedData = {} -AddEventHandler("ScaleformUI:playermenu:SetPlayerList", function(data) - while firstLoad do - Citizen.Wait(0) - end - if PlayerMenu:Visible() then - Citizen.Wait(300) - end - - ColumnCallbackFunction[2] = {} - PlayerMenu.PlayersColumn:Clear() - - PlayerMenu.Subtitle = data.name - - local LobbyBadge = BadgeStyle.BRAND_BANSHEE - if data.LobbyBadgeIcon then - LobbyBadge = data.LobbyBadgeIcon - elseif GetPlayerFromServerId(data.source) ~= -1 then - if not Player(data.source).state.IsUsingKeyboard then - LobbyBadge = LobbyBadgeIcon.IS_CONSOLE_PLAYER - end - end - - local crew = CrewTag.New(data.CrewTag, true, false, CrewHierarchy.Leader, SColor.HUD_Green) - local friend = FriendItem.New(data.name, SColor.FromHudColor(data.Colours), true, data.level, data.Status, crew) - - friend.ClonePed = (ClonePedData[data.name] or PlayerPedId()) - friend:SetLeftIcon(LobbyBadge, false) - friend:AddPedToPauseMenu(friend.ClonePed) -- defaulted to 0 if you set it to nil / 0 the ped will be removed from the pause menu - local panel = PlayerStatsPanel.New(data.name, SColor.FromHudColor(data.rowColor or HudColours.HUD_COLOUR_VIDEO_EDITOR_AMBIENT)) - panel:Description("My name is " .. data.name) - panel:HasPlane(data.HasPlane) - panel:HasHeli(data.HasHeli) - panel:HasBoat(data.HasBoat) - panel:HasVehicle(data.HasVehicle) - panel.RankInfo:RankLevel(data.level) - -- panel.RankInfo:LowLabel("This is the low label") - -- panel.RankInfo:MidLabel("This is the middle label") - -- panel.RankInfo:UpLabel("This is the upper label") - panel:AddStat(PlayerStatsPanelStatItem.New("Stamina", GetSkillStaminaDescription(data.MP0_STAMINA), data.MP0_STAMINA)) - panel:AddStat(PlayerStatsPanelStatItem.New("Shooting", GetSkillShootingDescription(data.MP0_SHOOTING_ABILITY), data.MP0_SHOOTING_ABILITY)) - panel:AddStat(PlayerStatsPanelStatItem.New("Strength", GetSkillStrengthDescription(data.MP0_STRENGTH), data.MP0_STRENGTH)) - panel:AddStat(PlayerStatsPanelStatItem.New("Stealth", GetSkillStealthDescription(data.MP0_STEALTH_ABILITY), data.MP0_STEALTH_ABILITY)) - panel:AddStat(PlayerStatsPanelStatItem.New("Driving", GetSkillDrivingDescription(data.MP0_DRIVING_ABILITY), data.MP0_DRIVING_ABILITY)) - panel:AddStat(PlayerStatsPanelStatItem.New("Flying", GetSkillFlyingDescription(data.MP0_FLYING_ABILITY), data.MP0_FLYING_ABILITY)) - panel:AddStat(PlayerStatsPanelStatItem.New("Mental State", GetSkillMentalStateDescription(data.MPPLY_KILLS_PLAYERS), data.MPPLY_KILLS_PLAYERS)) - friend:AddPanel(panel) - - PlayerMenu.PlayersColumn:AddPlayer(friend) - - if data.callbackFunction then - ColumnCallbackFunction[2][#PlayerMenu.PlayersColumn.Items] = data.callbackFunction - end - - if PlayerMenu:Visible() then - PlayerMenu.PlayersColumn:refreshColumn() - end -end) - -AddEventHandler("ScaleformUI:playermenu:SetInfo", function(data) - while firstLoad do - Citizen.Wait(0) - end - if PlayerMenu:Visible() then - Citizen.Wait(300) - end - - for i = 1, #PlayerMenu.MissionPanel.Items do - PlayerMenu.MissionPanel:RemoveItem(#PlayerMenu.MissionPanel.Items) - end - - for k, v in pairs(data) do - local detailItem = UIMenuFreemodeDetailsItem.New(v.LeftLabel, v.RightLabel, false, v.BadgeStyle, v.Colours) - PlayerMenu.MissionPanel:AddItem(detailItem) - end -end) - -AddEventHandler("ScaleformUI:playermenu:SetInfoTitle", function(data) - while firstLoad do - Citizen.Wait(0) - end - if PlayerMenu:Visible() then - Citizen.Wait(300) - end - - if data.Title then - PlayerMenu.MissionPanel:Title(data.Title) - end - - if data.tex and data.txd then - PlayerMenu.MissionPanel:UpdatePanelPicture(data.tex, data.txd) - end -end) - -AddEventHandler("ScaleformUI:playermenu:SettingsColumn", function(data) - while firstLoad do - Citizen.Wait(0) - end - if PlayerMenu:Visible() then - Citizen.Wait(300) - end - - ColumnCallbackFunction[1] = {} - PlayerMenu.SettingsColumn:Clear() - - for k,v in pairs(data) do - local item - if v.type == "List" then - item = UIMenuListItem.New(v.label, v.list, 0, v.dec, SColor.FromHudColor(v.mainColor or HudColours.HUD_COLOUR_PURE_WHITE), SColor.FromHudColor(v.highlightColor or HudColours.HUD_COLOUR_PURE_WHITE), SColor.FromHudColor(v.textColor or HudColours.HUD_COLOUR_PURE_WHITE), SColor.FromHudColor(v.highlightedTextColor or HudColours.HUD_COLOUR_PURE_WHITE)) - elseif v.type == "Checkbox" then - item = UIMenuCheckboxItem.New(v.label, true, 1, v.dec) - elseif v.type == "Slider" then - item = UIMenuSliderItem.New(v.label, 100, 5, 50, false, v.dec) - elseif v.type == "Progress" then - item = UIMenuProgressItem.New(v.label, 10, 5, v.dec) - else - item = UIMenuItem.New(v.label, v.dec, SColor.FromHudColor(v.mainColor or HudColours.HUD_COLOUR_PURE_WHITE), SColor.FromHudColor(v.highlightColor or HudColours.HUD_COLOUR_PURE_WHITE), SColor.FromHudColor(v.textColor or HudColours.HUD_COLOUR_PURE_WHITE), SColor.FromHudColor(v.highlightedTextColor or HudColours.HUD_COLOUR_PURE_WHITE)) - if v.rightLabel then - item:RightLabel(v.rightLabel) - end - end - item:BlinkDescription(v.Blink) - PlayerMenu.SettingsColumn:AddSettings(item) - - if v.callbackFunction then - ColumnCallbackFunction[1][k] = v.callbackFunction - end - end - - if PlayerMenu:Visible() then - PlayerMenu.SettingsColumn:refreshColumn() - end -end) - -AddEventHandler("ScaleformUI:playermenu:Show", function(onClose) - CreatePlayerMenuMenu() - - if PlayerMenu:Visible() then - PlayerMenu:Visible(false) - Citizen.Wait(50) - end - while firstLoad or IsDisabledControlPressed(0, 199) or IsDisabledControlPressed(0, 200) or IsPauseMenuRestarting() or IsFrontendFading() or IsPauseMenuActive() do - SetPauseMenuActive(false) - SetFrontendActive(false) - Citizen.Wait(0) - end - while PlayerMenu.Subtitle == defaultSubtitle do - Citizen.Wait(0) - end - - selectRowID = 1 - selectColumnID = 1 - - PlayerMenu.InstructionalButtons = {} - table.insert(PlayerMenu.InstructionalButtons, InstructionalButton.New(GetLabelText("HUD_INPUT2"), -1, 191, 191, -1)) - table.insert(PlayerMenu.InstructionalButtons, InstructionalButton.New(GetLabelText("HUD_INPUT3"), -1, 194, 194, -1)) - table.insert(PlayerMenu.InstructionalButtons, InstructionalButton.New(GetLabelText("HUD_INPUT8"), -1, -1, -1, "INPUTGROUP_FRONTEND_DPAD_ALL")) - - PlayerMenu:Visible(true) - Citizen.SetTimeout(50, function() - PlayerMenu:updateFocus(2, false) - end) - - while PlayerMenu:Visible() do - if IsDisabledControlJustPressed(0, 201) then - if ColumnCallbackFunction[selectColumnID][selectRowID] then - ColumnCallbackFunction[selectColumnID][selectRowID]() - end - end - Citizen.Wait(0) - end - - if onClose then - while IsPauseMenuRestarting() or IsFrontendFading() or IsPauseMenuActive() do - Citizen.Wait(0) - end - onClose() - end -end) - -AddEventHandler("ScaleformUI:playermenu:Hide", function() - if PlayerMenu then - PlayerMenu:Visible(false) - end -end)