-- ========================================================= -- Your custom server list. -- Add/remove entries in the "servers" table below. -- name = what shows in the list, ip = "ip:port" to connect to. -- ========================================================= servers = { { name = "^1IR^7MO^2D ^1Pu^7bl^2ic ", ip = "212.80.8.77:28986" }, -- Add more servers by copying the line above and changing the name/ip: -- { name = "MY SECOND SERVER", ip = "1.2.3.4:28960" }, -- { name = "MY THIRD SERVER", ip = "5.6.7.8:28960" }, } -- ========================================================= function Init() -- Allocate menu menu = UI.Menu.new("custom_serverlist") menu:OnEsc( function(menu) Game.OpenMenu("main") end ) menu:SetSoundLoop("music_mainmenu_mp") -- Create background item background = UI.Item.new() background:SetRect(0, 0, 640, 480, 4, 4) background:SetType(UI.ItemType.Image) background:SetMaterial("background_image") menu:AddItem(background) -- Sidebar background sidebar = UI.Item.new() sidebar:SetRect(-64, 0, 300, 480, 1, 0) sidebar:SetType(UI.ItemType.Rectangle) sidebar:SetBackColor(0, 0, 0, 0.3) menu:AddItem(sidebar) -- Create vertical seperator vsep = UI.Item.new() vsep:SetRect(236, 0, 10, 480, 1, 0) vsep:SetType(UI.ItemType.Image) vsep:SetMaterial("navbar_edge") menu:AddItem(vsep) -- Title title_label = UI.Item.new() title_label:SetRect(-64, 8, 300, 25, 1, 1) title_label:SetType(UI.ItemType.Text) title_label:SetText("SERVER LIST") title_label:SetFont(UI.Fonts.HudBigFont) title_label:SetTextScale(0.6) menu:AddItem(title_label) -- Server list table serverlist = UI.Item.new() serverlist:SetRect(-64, 40, 300, 380, 1, 1) serverlist:SetTextScale(0.35) serverlist:SetFont(UI.Fonts.NormalFont) serverlist:SetType(UI.ItemType.ListBox) serverlist:SetBorder(false) serverlist:SetBorderSize(0.5) serverlist:SetBorderColor(1, 1, 1, 0) serverlist:SetItemSize(18) -- One server per line: NAME on the left, CONNECT on the right. serverlist:OnDoubleClick( function(menu, item) local row = item:GetSelectedItemIndex() local server = servers[row + 1] if server ~= nil and server.ip ~= nil then Game.PlaySound("mouse_click") Game.ExecuteCommand("connect " .. server.ip) end end ) serverlist:GetColumnText( function(row, col) local server = servers[row + 1] if server == nil then return "" end if col == 0 then return server.name end if col == 1 then return "CONNECT" end return "" end ) serverlist:GetColumnOffset( function(column) if column == 0 then return 0 end if column == 1 then return 205 end return 0 end ) serverlist:GetColumnCount( function() return 2 end ) serverlist:GetRowCount( function() return #servers end ) menu:AddItem(serverlist) -- Hint text hint_label = UI.Item.new() hint_label:SetRect(-64, 425, 300, 40, 1, 1) hint_label:SetType(UI.ItemType.Text) hint_label:SetText("Double-click CONNECT to join a server") hint_label:SetFont(UI.Fonts.NormalFont) hint_label:SetTextScale(0.3) menu:AddItem(hint_label) -- Back button Menu_Seperator(menu, 21) Menu_AddButton(menu, 21, "@MENU_BACK_CAPS", function(menu,button) Game.OpenMenu("main") end) end