Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // GangWarsRP Gangs (client)
- // Copyright (c) Mercior
- // May 2011
- include("sh_gangs.lua")
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Gang Usermessages
- MyGangsMembers = {}
- MyGang = {}
- MyGangInvites = {}
- // clears local gang info
- function GU_ClearInfo(um)
- MyGang = {}
- if F4Tabs and F4Tabs[4] then
- F4Tabs[4]:Update()
- end
- end
- usermessage.Hook("gang_clear", GU_ClearInfo)
- // sets gang data
- local function ReceiveGangInfo(handle, id, encoded, decoded)
- MyGang = decoded
- if F4Tabs and F4Tabs[4] then
- F4Tabs[4]:Update()
- end
- end
- datastream.Hook("ds_gang_info", ReceiveGangInfo)
- // sets gang members
- local function ReceiveGangMembers(handle, id, encoded, decoded)
- MyGangsMembers = decoded
- if F4Tabs and F4Tabs[4] then F4Tabs[4]:Update() end
- end
- datastream.Hook("ds_gang_members", ReceiveGangMembers)
- // sets gang rivals
- local function ReceiveGangRivals(handle, id, encoded, decoded)
- MyGangRivals = decoded
- if F4Tabs and F4Tabs[4] then F4Tabs[4]:Update() end
- end
- datastream.Hook("ds_gang_rivals", ReceiveGangRivals)
- // sets gang invites
- local function ReceiveGangInvites(handle, id, encoded, decoded)
- MyGangInvites = decoded
- if F4Tabs and F4Tabs[4] then F4Tabs[4]:Update() end
- end
- datastream.Hook("ds_gang_invites", ReceiveGangInvites)
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Territory Capture VGUI
- local CappingTerritory = false
- local CapTime = 0
- local CapMax = 5
- // Enemy is capturing our territory
- local function EnemyCapStart(um)
- GangName = um:ReadString()
- end
- usermessage.Hook("enemy_cap_territory", EnemyCapStart)
- // Enemy is capturing our territory
- local function EnemyCapComplete(um)
- GangName = um:ReadString()
- end
- usermessage.Hook("enemy_took_territory", EnemyCapComplete)
- // Capture start usermessage
- local function CapStart(um)
- CappingTerritory = true
- CapTime = CurTime()
- CapMax = tonumber(um:ReadLong())
- end
- usermessage.Hook("territory_capture_start", CapStart)
- // Capture start usermessage
- local function CapEnd()
- CappingTerritory = false
- end
- usermessage.Hook("territory_capture_end", CapEnd)
- function GetGangmemberSteamFromName( name )
- for k,v in pairs(MyGangsMembers) do
- if v.steam and v.name == name then
- return v.steam
- end
- end
- end
- // Draw capture bar
- local function DrawTerritoryCap()
- if CappingTerritory and CapMax > 0 then
- draw.RoundedBox( 8, (ScrW()/2) - 200, (ScrH()-108), 400, 30, Color(0, 0, 0, 180) )
- local perc = (CurTime() - CapTime) / CapMax
- draw.RoundedBox( 8, (ScrW()/2) - 196, (ScrH()-108) + 4, math.Clamp((392 * perc), 16, 342), 22, Color(255, 255, 255, 220) )
- draw.DrawText("Capturing Territory", "ChatFont", (ScrW()/2), (ScrH()-100), Color(255,255,255,200), TEXT_ALIGN_CENTER)
- if perc > 1 then CappingTerritory = false end
- end
- end
- hook.Add("HUDPaint", "DrawTerritoryCap", DrawTerritoryCap)
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Gang GUI
- local function GangInvitesTab()
- local GangInvitesPanel = vgui.Create( "DPanel")
- GangInvitesPanel:SetSize(740, 550)
- GangInvitesPanel.Paint = function()
- surface.SetDrawColor(0,0,0,255)
- GangInvitesPanel:DrawFilledRect()
- end
- function GangInvitesPanel:Update()
- self:Clear(true)
- local GangInfoList = vgui.Create("DListView", self)
- GangInfoList:SetPos(0,0)
- GangInfoList:SetSize(740, 550)
- GangInfoList:SetMultiSelect(false)
- GangInfoList:AddColumn("Gang Name")
- if MyGangInvites and table.Count(MyGangInvites) > 0 then
- for k,v in pairs(MyGangInvites) do
- GangInfoList:AddLine( v.gang, v.steam, Gang.GetRankName(v.rank) )
- end
- GangInfoList.OnRowRightClick = function( panel, line )
- local gname = GangInfoList:GetLine(line):GetValue(1)
- local menu = DermaMenu()
- menu:AddOption("Accept Invite", function () RunConsoleCommand("say", "/gang_accept " .. gname) end)
- menu:AddOption("Reject Invite", function () RunConsoleCommand("say", "/gang_reject " .. gname) end)
- menu:Open()
- end
- end
- end
- GangInvitesPanel:Update()
- return GangInvitesPanel
- end
- local function GangMembersTab()
- local GangMembersPanel = vgui.Create( "DPanel")
- GangMembersPanel:SetSize(740, 550)
- GangMembersPanel.Paint = function()
- surface.SetDrawColor(0,0,0,255)
- GangMembersPanel:DrawFilledRect()
- end
- function GangMembersPanel:Update()
- self:Clear(true)
- // Member list
- local GangInfoList = vgui.Create("DListView", self)
- GangInfoList:SetPos(0,0)
- GangInfoList:SetSize(740, 550)
- GangInfoList:SetMultiSelect(false)
- GangInfoList:AddColumn("Member Name")
- GangInfoList:AddColumn("Steam ID")
- GangInfoList:AddColumn("Gang Rank")
- if MyGangsMembers then
- for k,v in pairs(MyGangsMembers) do
- GangInfoList:AddLine( v.name, v.steam, Gang.GetRankName(v.rank) )
- end
- GangInfoList.OnRowRightClick = function( panel, line )
- local plname = GangInfoList:GetLine(line):GetValue(1)
- local plsteam = GetGangmemberSteamFromName( plname )
- if plsteam and plsteam != LocalPlayer():SteamID() then
- local menu = DermaMenu()
- menu:AddOption(plname, function () end)
- menu:AddSpacer( )
- //menu:AddOption("View Activity", function () RunConsoleCommand("gang_view", plsteam) end)
- //menu:AddSpacer( )
- menu:AddOption("Set Leader", function () RunConsoleCommand("say", "/gang_promote 1 " .. plsteam) end)
- menu:AddOption("Set Vice Leader", function () RunConsoleCommand("say", "/gang_promote 2 " .. plsteam) end)
- menu:AddOption("Set Captain", function () RunConsoleCommand("say", "/gang_promote 3 " .. plsteam) end)
- menu:AddOption("Set Soldier", function () RunConsoleCommand("say", "/gang_promote 4 " .. plsteam) end)
- menu:AddOption("Set Recruit", function () RunConsoleCommand("say", "/gang_promote 5 " .. plsteam) end)
- menu:AddSpacer( )
- menu:AddOption("Kick from Gang", function () RunConsoleCommand("say", "/gang_kick " .. plsteam) end)
- menu:Open()
- end
- end
- end
- end
- GangMembersPanel:Update()
- return GangMembersPanel
- end
- local function GangRivalInfoPanel(name, logo, color, color2, level, rkilled, rstolen, truce)
- local InfoPanel = vgui.Create('DPanel')
- InfoPanel:SetSize(720, 84)
- InfoPanel.Paint = function()
- surface.SetDrawColor(20,20,20,255)
- InfoPanel:DrawFilledRect()
- end
- // icon
- local sIcon2 = vgui.Create('DImage')
- sIcon2:SetParent(InfoPanel)
- sIcon2:SetPos(5 + 2, 5 + 2)
- sIcon2:SetImage("gangwars/gang/icons/" .. logo)
- sIcon2:SetImageColor(color2)
- sIcon2:SetSize(64, 64)
- local sIcon = vgui.Create('DImage')
- sIcon:SetParent(InfoPanel)
- sIcon:SetPos(5, 5)
- sIcon:SetImage("gangwars/gang/icons/" .. logo)
- sIcon:SetImageColor(color)
- sIcon:SetSize(64, 64)
- // Labels
- local lblName = vgui.Create('DLabel')
- lblName:SetParent(InfoPanel)
- lblName:SetPos(94, 5)
- lblName:SetFont("Trebuchet20")
- lblName:SetText(name)
- lblName:SizeToContents()
- lblName:SetTextColor(color)
- local lblPrice = vgui.Create('DLabel')
- lblPrice:SetParent(InfoPanel)
- lblPrice:SetPos(94, 26)
- lblPrice:SetFont("Trebuchet18")
- lblPrice:SetText("Level " .. level .. " Gang")
- lblPrice:SizeToContents()
- lblPrice:SetTextColor(Color(255, 255, 0, 255))
- // rival stashes stolen
- local lblPrice = vgui.Create('DLabel')
- lblPrice:SetParent(InfoPanel)
- lblPrice:SetPos(350, 50)
- lblPrice:SetFont("DefaultBold")
- lblPrice:SetText("Rival Stashes Stolen")
- lblPrice:SizeToContents()
- lblPrice:SetTextColor(Color(255, 255, 255, 255))
- local lblPrice = vgui.Create('DLabel')
- lblPrice:SetParent(InfoPanel)
- lblPrice:SetPos(350, 65)
- lblPrice:SetFont("DefaultLarge")
- lblPrice:SetText(rstolen)
- lblPrice:SizeToContents()
- lblPrice:SetTextColor(Color(255, 255, 255, 255))
- // rival gangmembers killed
- local lblPrice = vgui.Create('DLabel')
- lblPrice:SetParent(InfoPanel)
- lblPrice:SetPos(94, 50)
- lblPrice:SetFont("DefaultBold")
- lblPrice:SetText("Rival Gangmembers Killed")
- lblPrice:SizeToContents()
- lblPrice:SetTextColor(Color(255, 255, 255, 255))
- local lblPrice = vgui.Create('DLabel')
- lblPrice:SetParent(InfoPanel)
- lblPrice:SetPos(94, 65)
- lblPrice:SetFont("DefaultLarge")
- lblPrice:SetText(rkilled)
- lblPrice:SizeToContents()
- lblPrice:SetTextColor(Color(255, 255, 255, 255))
- // truce button
- if truce and tonumber(truce) > 0 then
- local btnLock = vgui.Create('DButton')
- btnLock:SetParent(InfoPanel)
- btnLock:SetSize(120, 30)
- btnLock:SetPos(580, 5)
- btnLock:SetText('Cancel Truce')
- btnLock.DoClick = function()
- Derma_Query("Cancel your truce request with " .. name .. "?", "Cancel Truce",
- "Ok", function() RunConsoleCommand("say", "/gang_canceltruce " .. name) end,
- "Cancel", function() end)
- end
- else
- local btnLock = vgui.Create('DButton')
- btnLock:SetParent(InfoPanel)
- btnLock:SetSize(120, 30)
- btnLock:SetPos(580, 5)
- btnLock:SetText('Request Truce')
- btnLock.DoClick = function()
- Derma_Query("Request a truce with " .. name .. " ?", "Confirm Truce",
- "Ok", function() RunConsoleCommand("say", "/gang_truce " .. name) end,
- "Cancel", function() end)
- end
- end
- local btnLock = vgui.Create('DButton')
- btnLock:SetParent(InfoPanel)
- btnLock:SetSize(120, 30)
- btnLock:SetPos(580, 40)
- btnLock:SetText('Beg for mercy')
- btnLock.DoClick = function()
- Derma_Query("Begging for mercy against " .. name .. " will cost your gang many points. Are you sure?", "Confirm you are a little girl",
- "Ok", function() RunConsoleCommand("say", "/gang_mercy " .. name) end,
- "Cancel", function() end)
- end
- return InfoPanel
- end
- local function GangRivalsTab()
- local GangRivalsPanel = vgui.Create( "DPanel")
- GangRivalsPanel:SetSize(750, 550)
- GangRivalsPanel.Paint = function()
- surface.SetDrawColor(0,0,0,255)
- GangRivalsPanel:DrawFilledRect()
- end
- function GangRivalsPanel:Update()
- self:Clear(true)
- // find rivals button
- local btnLock = vgui.Create('DButton', self)
- btnLock:SetSize(120, 30)
- btnLock:SetPos(5,5)
- btnLock:SetText('Add Rival Gang')
- btnLock.DoClick = function()
- DoGangSearch(function(gang)
- Derma_Query( "Are you sure you want to name " .. gang .. " as your rivals?", "Confirm Add Rival", "Yes",
- function(a)
- RunConsoleCommand("say", "/gang_addrival " .. gang)
- end, "No")
- end)
- end
- local GangUpgradeList = vgui.Create( "DPanelList", self )
- GangUpgradeList:SetPos(5,40)
- GangUpgradeList:SetSize(730, 440)
- //GangUpgradeList:SetAutoSize(true)
- GangUpgradeList:SetSpacing(4)
- GangUpgradeList:EnableHorizontal( false )
- GangUpgradeList:EnableVerticalScrollbar( true )
- if MyGangRivals then
- for k,v in pairs(MyGangRivals) do
- GangUpgradeList:AddItem(GangRivalInfoPanel(v.name, v.logo, v.color, v.color2, v.level, v.members_killed, v.stashes_stolen, v.truce))
- end
- end
- end
- GangRivalsPanel:Update()
- return GangRivalsPanel
- end
- local function GangShopInfoPanel(item)
- local InfoPanel = vgui.Create('DPanel')
- InfoPanel:SetSize(720, 74)
- InfoPanel.Paint = function()
- surface.SetDrawColor(20,20,20,255)
- InfoPanel:DrawFilledRect()
- end
- function InfoPanel:Update()
- self:Clear(true)
- // icon
- local sIcon = vgui.Create('DImage')
- sIcon:SetParent(InfoPanel)
- sIcon:SetPos(10, 5)
- sIcon:SetImage(item.icon)
- sIcon:SetSize(64, 64)
- sIcon:SetToolTip(item.name)
- // buy button
- local btnLock = vgui.Create('DButton')
- btnLock:SetParent(InfoPanel)
- btnLock:SetSize(100, 40)
- btnLock:SetPos(600, 18)
- btnLock:SetText('Buy')
- btnLock.DoClick = function()
- Derma_Query("Purchase " .. item.name .. " for " .. CUR .. GangWars.FormatMoney(item.price) .. "?", "Confirm buy",
- "Ok", function() RunConsoleCommand("say", "/gang_buy " .. item.id) end,
- "Cancel", function() end)
- end
- // Labels
- local lblName = vgui.Create('DLabel')
- lblName:SetParent(InfoPanel)
- lblName:SetPos(94, 5)
- lblName:SetFont("Trebuchet20")
- lblName:SetText(item.name)
- lblName:SizeToContents()
- lblName:SetTextColor(Color(255, 255, 0, 255))
- local lblPrice = vgui.Create('DLabel')
- lblPrice:SetParent(InfoPanel)
- lblPrice:SetPos(94, 26)
- lblPrice:SetFont("Trebuchet18")
- lblPrice:SetText(CUR .. GangWars.FormatMoney(item.price))
- lblPrice:SizeToContents()
- lblPrice:SetTextColor(Color(0, 255, 0, 255))
- local lblPrice = vgui.Create('DLabel')
- lblPrice:SetParent(InfoPanel)
- lblPrice:SetPos(94, 50)
- lblPrice:SetFont("Trebuchet18")
- lblPrice:SetText(item.description)
- lblPrice:SizeToContents()
- lblPrice:SetTextColor(Color(255, 255, 255, 255))
- local xp = 450
- local lblPrice = vgui.Create('DLabel')
- lblPrice:SetParent(InfoPanel)
- lblPrice:SetPos(xp - 3, 10)
- lblPrice:SetFont("DefaultBold")
- lblPrice:SetText("LDR VLR CPT SDR RCT")
- lblPrice:SizeToContents()
- lblPrice:SetTextColor(Color(255, 255, 255, 255))
- // Access control
- local function btn(b)
- if not b then
- return 0
- else
- return 1
- end
- end
- self.HasItemPerm = function(perms, rank)
- local d = 16
- local pms = {0, 0, 0, 0, 0}
- local r = 5
- while perms > 0 do
- if perms - d >= 0 then
- perms = perms - d
- pms[r] = 1
- end
- d = d / 2
- r = r - 1
- end
- return pms[rank] == 1
- end
- self.GetItemPerms = function(self)
- return (btn(self.GangAccessCheckBox[0]:GetChecked()) * 1 + btn(self.GangAccessCheckBox[1]:GetChecked()) * 2 + btn(self.GangAccessCheckBox[2]:GetChecked()) * 4 + btn(self.GangAccessCheckBox[3]:GetChecked()) * 8 + btn(self.GangAccessCheckBox[4]:GetChecked()) * 16)
- end
- // access variable
- local self_ptr = self
- local self_ready = false
- local myrank = tonumber(LocalPlayer():GetNWInt("gang_rank"))
- self.GangAccessCheckBox = {}
- local checkbox_access = (MyGang != nil && myrank == 1)
- self.GangAccessCheckBox[0] = vgui.Create( "DCheckBox", InfoPanel )
- self.GangAccessCheckBox[0]:SetPos( xp + 25 * 0, 25 )
- self.GangAccessCheckBox[0]:SetDisabled( not checkbox_access )
- self.GangAccessCheckBox[0].OnChange = function(self)
- if self_ready then RunConsoleCommand("gang_permission", item.id, self_ptr:GetItemPerms()) end
- end
- self.GangAccessCheckBox[1] = vgui.Create( "DCheckBox", InfoPanel )
- self.GangAccessCheckBox[1]:SetPos( xp + 25 * 1, 25 )
- self.GangAccessCheckBox[1]:SetDisabled( not checkbox_access )
- self.GangAccessCheckBox[1].OnChange = function(self)
- if self_ready then RunConsoleCommand("gang_permission", item.id, self_ptr:GetItemPerms()) end
- end
- self.GangAccessCheckBox[2] = vgui.Create( "DCheckBox", InfoPanel )
- self.GangAccessCheckBox[2]:SetPos( xp + 25 * 2, 25 )
- self.GangAccessCheckBox[2]:SetDisabled( not checkbox_access )
- self.GangAccessCheckBox[2].OnChange = function(self)
- if self_ready then RunConsoleCommand("gang_permission", item.id, self_ptr:GetItemPerms()) end
- end
- self.GangAccessCheckBox[3] = vgui.Create( "DCheckBox", InfoPanel )
- self.GangAccessCheckBox[3]:SetPos( xp + 25 * 3, 25 )
- self.GangAccessCheckBox[3]:SetDisabled( not checkbox_access )
- self.GangAccessCheckBox[3].OnChange = function(self)
- if self_ready then RunConsoleCommand("gang_permission", item.id, self_ptr:GetItemPerms()) end
- end
- self.GangAccessCheckBox[4] = vgui.Create( "DCheckBox", InfoPanel )
- self.GangAccessCheckBox[4]:SetPos( xp + 25 * 4, 25 )
- self.GangAccessCheckBox[4]:SetDisabled( not checkbox_access )
- self.GangAccessCheckBox[4].OnChange = function(self)
- if self_ready then RunConsoleCommand("gang_permission", item.id, self_ptr:GetItemPerms()) end
- end
- // set checkbox states
- if MyGang and MyGang.shop_permissions then
- if MyGang.shop_permissions[item.id] then self.GangAccessCheckBox[0]:SetValue( self.HasItemPerm(MyGang.shop_permissions[item.id], 1) ) end
- if MyGang.shop_permissions[item.id] then self.GangAccessCheckBox[1]:SetValue( self.HasItemPerm(MyGang.shop_permissions[item.id], 2) ) end
- if MyGang.shop_permissions[item.id] then self.GangAccessCheckBox[2]:SetValue( self.HasItemPerm(MyGang.shop_permissions[item.id], 3) ) end
- if MyGang.shop_permissions[item.id] then self.GangAccessCheckBox[3]:SetValue( self.HasItemPerm(MyGang.shop_permissions[item.id], 4) ) end
- if MyGang.shop_permissions[item.id] then self.GangAccessCheckBox[4]:SetValue( self.HasItemPerm(MyGang.shop_permissions[item.id], 5) ) end
- end
- // set checkbox flag (prevents onchange firing before here)
- self_ready = true
- end
- InfoPanel:Update()
- return InfoPanel
- end
- local function GangShopTab()
- local GangShopPanel = vgui.Create( "DPanel")
- GangShopPanel:SetSize(750, 550)
- GangShopPanel.Paint = function()
- surface.SetDrawColor(0,0,0,255)
- GangShopPanel:DrawFilledRect()
- end
- local GangUpgradeList = vgui.Create( "DPanelList", GangShopPanel )
- GangUpgradeList:SetPos(5,5)
- GangUpgradeList:SetSize(730, 480)
- GangUpgradeList:SetSpacing(4)
- GangUpgradeList:EnableHorizontal( false )
- GangUpgradeList:EnableVerticalScrollbar( true )
- local sitems = {}
- for k,v in pairs(Gang.GangShop) do
- if MyGang and MyGang.level and MyGang.level >= v.level then
- table.insert(sitems, v)
- end
- end
- table.SortByMember(sitems, "level", function(a, b) return a > b end)
- for k,v in pairs(sitems) do
- GangUpgradeList:AddItem(GangShopInfoPanel(v))
- end
- return GangShopPanel
- end
- local function GangUpgradePanel(mat, lvl, price, name, description, command)
- local UpgradePanel = vgui.Create('DPanel')
- UpgradePanel:SetSize(720, 140)
- UpgradePanel.Paint = function()
- surface.SetDrawColor(20,20,20,255)
- UpgradePanel:DrawFilledRect()
- end
- function UpgradePanel:Update()
- self:Clear(true)
- // icon
- local sIcon = vgui.Create('DImage')
- sIcon:SetParent(UpgradePanel)
- sIcon:SetPos(20, 15)
- sIcon:SetImage(mat)
- sIcon:SetSize(64, 64)
- sIcon:SetToolTip(name)
- // buy button
- local btnLock = vgui.Create('DButton')
- btnLock:SetParent(UpgradePanel)
- btnLock:SetSize(120, 40)
- btnLock:SetPos(580, 84)
- btnLock:SetText('Buy Upgrade')
- btnLock.DoClick = function()
- Derma_Query("Purchase " .. name .. " for " .. CUR .. GangWars.FormatMoney(price) .. "?", "Confirm buy",
- "Ok", function() RunConsoleCommand("say", "/gang_upgrade " .. command) end,
- "Cancel", function() end)
- end
- local aff = Gang.GetUpgradeEffect(command, lvl)
- local aff2 = Gang.GetUpgradeEffect(command, lvl-1)
- // Labels
- local lblName = vgui.Create('DLabel')
- lblName:SetParent(UpgradePanel)
- lblName:SetPos(94, 10)
- lblName:SetFont("Trebuchet24")
- lblName:SetText(name .. " Upgrade")
- lblName:SizeToContents()
- lblName:SetTextColor(Color(255, 255, 0, 255))
- local lblName = vgui.Create('DLabel')
- lblName:SetParent(UpgradePanel)
- lblName:SetPos(580, 10)
- lblName:SetFont("Trebuchet24")
- lblName:SetText("Level " .. lvl .. " / 10")
- lblName:SizeToContents()
- lblName:SetTextColor(Color(255, 255, 255, 255))
- local lblPrice = vgui.Create('DLabel')
- lblPrice:SetParent(UpgradePanel)
- lblPrice:SetPos(94, 35)
- lblPrice:SetFont("Trebuchet20")
- lblPrice:SetText(CUR .. GangWars.FormatMoney(price))
- lblPrice:SizeToContents()
- lblPrice:SetTextColor(Color(0, 255, 0, 255))
- local lblStats = vgui.Create('DLabel')
- lblStats:SetParent(UpgradePanel)
- lblStats:SetPos(94, 55)
- lblStats:SetSize(580, 20)
- lblStats:SetFont("Defaultlarge")
- lblStats:SetText(description)
- lblStats:SetWrap(true)
- lblStats:SetTextColor(Color(255, 255, 255, 255))
- // affects
- if lvl > 0 then
- local lblName = vgui.Create('DLabel')
- lblName:SetParent(UpgradePanel)
- lblName:SetPos(94, 90)
- lblName:SetFont("DefaultBold")
- lblName:SetText("Current")
- lblName:SizeToContents()
- lblName:SetTextColor(Color(255, 255, 255, 255))
- local lblName = vgui.Create('DLabel')
- lblName:SetParent(UpgradePanel)
- lblName:SetPos(94, 110)
- lblName:SetFont("Defaultlarge")
- lblName:SetText(aff2)
- lblName:SizeToContents()
- lblName:SetTextColor(Color(255, 255, 255, 255))
- end
- // next level affects
- if lvl < 10 then
- local lblName = vgui.Create('DLabel')
- lblName:SetParent(UpgradePanel)
- lblName:SetPos(350, 90)
- lblName:SetFont("DefaultBold")
- lblName:SetText("Next Level")
- lblName:SizeToContents()
- lblName:SetTextColor(Color(255, 255, 255, 255))
- local lblName = vgui.Create('DLabel')
- lblName:SetParent(UpgradePanel)
- lblName:SetPos(350, 110)
- lblName:SetFont("Defaultlarge")
- lblName:SetText(aff)
- lblName:SizeToContents()
- lblName:SetTextColor(Color(255, 255, 255, 255))
- end
- end
- UpgradePanel:Update()
- return UpgradePanel
- end
- local function GangUpgradesTab()
- local GangUpgradesPanel = vgui.Create( "DPanel")
- GangUpgradesPanel:SetSize(750, 550)
- GangUpgradesPanel.Paint = function()
- surface.SetDrawColor(0,0,0,255)
- GangUpgradesPanel:DrawFilledRect()
- end
- function GangUpgradesPanel:Update()
- self:Clear(true)
- local GangUpgradeList = vgui.Create( "DPanelList", self )
- GangUpgradeList:SetPos(5,10)
- GangUpgradeList:SetSize(730, 480)
- GangUpgradeList:SetSpacing(4)
- GangUpgradeList:EnableHorizontal( false )
- GangUpgradeList:EnableVerticalScrollbar( true )
- local function AddUpgradeIcon(mat, lvl, price, name, description, command)
- GangUpgradeList:AddItem(GangUpgradePanel(mat, lvl, price, name, description, command))
- end
- if MyGang.level then
- AddUpgradeIcon("gangwars/gang/icon_hpboost", MyGang.hpboost, Gang.GetUpgradePrice(MyGang.hpboost), "Gang Heart", "Increase the max health of all your gangmembers", "hpboost")
- AddUpgradeIcon("gangwars/gang/icon_regen", MyGang.regen, Gang.GetUpgradePrice(MyGang.regen), "Street Spirit", "Give your gangmembers regenerating health.", "regen")
- //AddUpgradeIcon("gangwars/gang/icon_extraitems", MyGang.extraitems, Gang.GetUpgradePrice(MyGang.extraitems), "Militia", "Add items to the gang shop.", "extraitems")
- AddUpgradeIcon("gangwars/gang/icon_xpboost", MyGang.xpboost, Gang.GetUpgradePrice(MyGang.xpboost), "Made Man", "Increase the XP boost of all your gangmembers.", "xpboost")
- AddUpgradeIcon("gangwars/gang/icon_speedboost", MyGang.speedboost, Gang.GetUpgradePrice(MyGang.speedboost), "Streetwise", "Speed up your gangmembers.", "speedboost")
- AddUpgradeIcon("gangwars/gang/icon_printboost", MyGang.printboost, Gang.GetUpgradePrice(MyGang.printboost), "Goldfinger", "Increase the output of your money printers.", "printboost")
- AddUpgradeIcon("gangwars/gang/icon_drugboost", MyGang.drugboost, Gang.GetUpgradePrice(MyGang.drugboost), "Sticky Fingers", "Learn to grow drugs faster.", "drugboost")
- AddUpgradeIcon("gangwars/gang/icon_dropboost", MyGang.dropboost, Gang.GetUpgradePrice(MyGang.dropboost), "Charmed", "Increases your gangmembers luck.", "dropboost")
- end
- end
- GangUpgradesPanel:Update()
- return GangUpgradesPanel
- end
- local function GangCreateTab()
- local GangCreatePanel = vgui.Create( "DPanel")
- GangCreatePanel.logo = 1
- GangCreatePanel:SetSize(750, 550)
- GangCreatePanel.Paint = function()
- surface.SetDrawColor(0,0,0,255)
- GangCreatePanel:DrawFilledRect()
- end
- function GangCreatePanel:Update()
- self:Clear(true)
- // New gang panel
- local lblGangName = vgui.Create('DLabel', self)
- lblGangName:SetPos(60, 25)
- lblGangName:SetText('Create a new gang')
- lblGangName:SetFont("Trebuchet24")
- lblGangName:SizeToContents()
- local NewGangPanel = vgui.Create( "DPanel", self )
- NewGangPanel:SetPos( 120, 85 )
- NewGangPanel:SetSize( 400, 380 )
- NewGangPanel.Paint = function()
- surface.SetDrawColor( 0, 0, 0, 255 )
- surface.DrawRect( 0, 0, NewGangPanel:GetWide(), NewGangPanel:GetTall() )
- end
- local lblGangColor
- local LogoLeft
- local LogoRight
- local imgGangLogo
- local lblGanglogo
- local txtGangName
- local lblGangName
- txtGangName = vgui.Create('DTextEntry', NewGangPanel)
- txtGangName:SetSize(206, 23)
- txtGangName:SetPos(100, 10)
- txtGangName:SetText('')
- txtGangName.OnEnter = function() end
- local txtGangPassword = vgui.Create('DTextEntry', NewGangPanel)
- txtGangPassword:SetSize(206, 23)
- txtGangPassword:SetPos(100, 35)
- txtGangPassword:SetText('')
- txtGangPassword.OnEnter = function() end
- lblGangName = vgui.Create('DLabel', NewGangPanel)
- lblGangName:SetPos(10, 10)
- lblGangName:SetText('Gang Name')
- lblGangName:SetFont("MenuLarge")
- lblGangName:SizeToContents()
- local lblGangPassword = vgui.Create('DLabel', NewGangPanel)
- lblGangPassword:SetPos(10, 35)
- lblGangPassword:SetText('Password')
- lblGangPassword:SetFont("MenuLarge")
- lblGangPassword:SizeToContents()
- lblGangColor = vgui.Create('DLabel', NewGangPanel)
- lblGangColor:SetPos(10, 140 + 25)
- lblGangColor:SetText('Color')
- lblGangColor:SetFont("MenuLarge")
- lblGangColor:SizeToContents()
- local colorGang = vgui.Create( "DColorMixer", NewGangPanel);
- colorGang:SetSize( 180, 100 );
- colorGang:SetPos( 40, 140 + 45 );
- colorGang:SetColor(Color(255,255,0,255))
- local lblGangColor2 = vgui.Create('DLabel', NewGangPanel)
- lblGangColor2:SetPos(220, 140 + 25)
- lblGangColor2:SetText('Shadow Color')
- lblGangColor2:SetFont("MenuLarge")
- lblGangColor2:SizeToContents()
- local colorGang2 = vgui.Create( "DColorMixer", NewGangPanel);
- colorGang2:SetSize( 180, 100 );
- colorGang2:SetPos( 220 + 30, 140 + 45 );
- colorGang2:SetColor(Color(255,255,255,255))
- local imgGangLogoShadow = vgui.Create('DImage', NewGangPanel)
- imgGangLogoShadow:SetSize(64, 64)
- imgGangLogoShadow:SetPos(130 + 2, 50 + 25 + 2)
- imgGangLogoShadow:SetImage("gangwars/gang/icons/1")
- imgGangLogo = vgui.Create('DImage', NewGangPanel)
- imgGangLogo:SetSize(64, 64)
- imgGangLogo:SetPos(130, 50 + 25)
- imgGangLogo:SetImage("gangwars/gang/icons/1")
- function NewGangPanel:Think()
- if self.lcol != colorGang:GetColor() or self.scol != colorGang:GetColor() then
- self.lcol = colorGang:GetColor()
- self.scol = colorGang2:GetColor()
- imgGangLogo:SetImageColor( self.lcol )
- imgGangLogoShadow:SetImageColor( self.scol )
- end
- end
- LogoLeft = vgui.Create('DSysButton', NewGangPanel)
- LogoLeft:SetSize(25, 25)
- LogoLeft:SetPos(80, 70 + 25)
- LogoLeft:SetType('left')
- LogoLeft.DoClick = function()
- if self.logo > 1 then
- self.logo = self.logo - 1
- imgGangLogo:SetImage("")
- imgGangLogo:SetImage("gangwars/gang/icons/" .. self.logo)
- imgGangLogoShadow:SetImage("")
- imgGangLogoShadow:SetImage("gangwars/gang/icons/" .. self.logo)
- end
- end
- LogoRight = vgui.Create('DSysButton', NewGangPanel)
- LogoRight:SetSize(25, 25)
- LogoRight:SetPos(220, 70 + 25)
- LogoRight:SetType('right')
- LogoRight.DoClick = function()
- if self.logo < 25 then
- self.logo = self.logo + 1
- imgGangLogo:SetImage("")
- imgGangLogo:SetImage("gangwars/gang/icons/" .. self.logo)
- imgGangLogoShadow:SetImage("")
- imgGangLogoShadow:SetImage("gangwars/gang/icons/" .. self.logo)
- end
- end
- lblGanglogo = vgui.Create('DLabel', NewGangPanel)
- lblGanglogo:SetPos(10, 50 + 25)
- lblGanglogo:SetText('Logo')
- lblGanglogo:SetFont("MenuLarge")
- lblGanglogo:SizeToContents()
- // Create button
- local DermaButton = vgui.Create( "DButton", NewGangPanel )
- DermaButton:SetText( "Create Gang" )
- DermaButton:SetPos( 10, 260 + 45 )
- DermaButton:SetSize( 160, 30 )
- DermaButton.DoClick = function ()
- Derma_Query( "Creating a gang costs $100,000, are you sure?", "Confirm Purchase", "Yes",
- function(a)
- datastream.StreamToServer( "CreateGang", { name = txtGangName:GetValue(), password = util.CRC(txtGangPassword:GetValue()), logo = self.logo, color = colorGang:GetColor(), color2 = colorGang2:GetColor() } )
- end, "No")
- end
- end
- GangCreatePanel:Update()
- return GangCreatePanel
- end
- local function GangGeneralTab()
- local GangGeneralPanel = vgui.Create( "DPanel")
- GangGeneralPanel.logo = 1
- GangGeneralPanel:SetSize(750, 550)
- GangGeneralPanel.Paint = function()
- surface.SetDrawColor(0,0,0,255)
- GangGeneralPanel:DrawFilledRect()
- end
- if not MyGang or not MyGang.level then return end
- local self = GangGeneralPanel
- local rank = tonumber(LocalPlayer():GetNWInt("gang_rank"))
- local gang = MyGang.name or ""
- // XP Bar
- local perc = MyGang.xp / Gang.XP2Level(MyGang.level)
- local box1 = vgui.Create( "DColouredBox", self )
- box1:SetPos( 0,0 )
- box1:SetSize( 750, 20 )
- box1:SetColor( Color( 255, 255, 255))
- local box2 = vgui.Create( "DColouredBox", self )
- box2:SetPos( 2,2 )
- box2:SetSize( 750*perc, 16 )
- box2:SetColor( Color( 255, 160, 0))
- local myLabel= vgui.Create("DLabel", self)
- myLabel:SetPos( 300,4 )
- myLabel:SetColor( Color(0, 0, 0, 0) )
- myLabel:SetTextColor( Color(0,0,0,255) )
- myLabel:SetFont("DefaultBold")
- myLabel:SetText(GangWars.FormatMoney(MyGang.xp) .. " / " .. GangWars.FormatMoney(Gang.XP2Level(MyGang.level)))
- myLabel:SizeToContents() // make the control the same size as the text.
- // HTML
- html = [[ <html>
- <body bgcolor="#000000" style="font-family: Arial; font-size: 14px; font-weight:bold; color:#FFFFFF"> ]]
- local hcol = "#00FF00"
- if MyGang.points < 0 then hcol = "#FF0000" end
- html = html .. "<center><span style='color:#FFFF00; font-size: 18px'><b>" .. MyGang.name .. "</b></font></center><br/>"
- html = html .. "<b><span style='color:#" .. hcol .. "; font-size: 18px'>" .. MyGang.points .. " </span><span style='color:#FFFFFF; font-size: 18px'>Points</span></b><br/><br/>"
- html = html .. "<font color='#c1a400'><b>Members:</b></font> " .. MyGang.members .. " / ".. Gang.GetMemberLimit(MyGang.level) .."<br/>"
- html = html .. "<font color='#c1a400'><b>Level:</b></font> " .. MyGang.level .. " / 10<br/>"
- html = html .. "<font color='#c1a400'><b>Bank:</b></font> " .. CUR .. GangWars.FormatMoney(MyGang.money) .. "<br/>"
- html = html .. "<br/>"
- if MyGang.hpboost > 0 then
- html = html .. "<font color='#c1a400'><b>Gang Heart:</b></font> " ..Gang.GetUpgradeEffect("hpboost", MyGang.hpboost-1) .."<br/>"
- end
- if MyGang.regen > 0 then
- html = html .. "<font color='#c1a400'><b>Street Spirit:</b></font> " ..Gang.GetUpgradeEffect("regen", MyGang.regen-1) .."<br/>"
- end
- if MyGang.xpboost > 0 then
- html = html .. "<font color='#c1a400'><b>Made Man:</font> " ..Gang.GetUpgradeEffect("xpboost", MyGang.xpboost-1) .."<br/>"
- end
- if MyGang.speedboost > 0 then
- html = html .. "<font color='#c1a400'><b>Streetwise:</b></font> " ..Gang.GetUpgradeEffect("speedboost", MyGang.speedboost-1) .."<br/>"
- end
- if MyGang.printboost > 0 then
- html = html .. "<font color='#c1a400'><b>Goldfinger:</b></font> " ..Gang.GetUpgradeEffect("printboost", MyGang.printboost-1) .."<br/>"
- end
- if MyGang.drugboost > 0 then
- html = html .. "<font color='#c1a400'><b>Sticky Fingers:</b></font> " ..Gang.GetUpgradeEffect("drugboost", MyGang.drugboost-1) .."<br/>"
- end
- if MyGang.dropboost > 0 then
- html = html .. "<font color='#c1a400'><b>Charmed:</b></font> " ..Gang.GetUpgradeEffect("dropboost", MyGang.dropboost-1) .."<br/>"
- end
- if MyGang.extraitems > 0 then
- for i=1,MyGang.extraitems do
- html = html .. "<font color='#c1a400'><b>Militia "..i..":</b></font> " ..Gang.GetUpgradeEffect("extraitems", i-1) .."<br/>"
- end
- end
- html = html .. "<br/><br/>"
- // Info html
- local GangInfoHTML = vgui.Create("HTML", self)
- GangInfoHTML:SetPos(0, 20)
- GangInfoHTML:SetSize(330, 480)
- GangInfoHTML:SetHTML(html)
- // Set logo
- local imgGangLogoShadow = vgui.Create('DImage', self)
- imgGangLogoShadow:SetSize(64, 64)
- imgGangLogoShadow:SetPos(330 + 2, 20 + 2)
- imgGangLogoShadow:SetImage("")
- imgGangLogoShadow:SetImage("gangwars/gang/icons/" .. MyGang.logo)
- if MyGang.color2 then imgGangLogoShadow:SetImageColor(MyGang.color2) end
- local imgGangLogo = vgui.Create('DImage', self)
- imgGangLogo:SetSize(64, 64)
- imgGangLogo:SetPos(330, 20)
- imgGangLogo:SetImage("")
- imgGangLogo:SetImage("gangwars/gang/icons/" .. MyGang.logo)
- if MyGang.color then imgGangLogo:SetImageColor(MyGang.color) end
- // Buttons
- local GangInfoList = vgui.Create("DPanel", self)
- GangInfoList:SetPos(400, 20)
- GangInfoList:SetSize(400, 460)
- GangInfoList.Paint = function()
- surface.SetDrawColor(0,0,0,255)
- GangInfoList:DrawFilledRect()
- end
- local ypos = 10
- // Refresh button
- local DermaButton = vgui.Create( "DButton", GangInfoList )
- DermaButton:SetText( "Refresh View" )
- DermaButton:SetPos( 10, ypos )
- DermaButton:SetSize( 330, 30 )
- DermaButton.DoClick = function ()
- RunConsoleCommand("say", "/gang_refresh")
- end
- ypos = ypos + 40
- // Donate Money button
- local DermaButton = vgui.Create( "DButton", GangInfoList )
- DermaButton:SetText( "Donate To Gang" )
- DermaButton:SetPos( 10, ypos )
- DermaButton:SetSize( 330, 30 )
- DermaButton.DoClick = function ()
- Derma_StringRequest( "Donate to Gang", "Enter the amount to donate to your gang", "", function(a) RunConsoleCommand("say", "/gang_donate " .. a) end)
- end
- ypos = ypos + 40
- // Leave button
- local DermaButton = vgui.Create( "DButton", GangInfoList )
- DermaButton:SetText( "Leave Gang" )
- DermaButton:SetPos( 10, ypos )
- DermaButton:SetSize( 330, 30 )
- DermaButton.DoClick = function ()
- Derma_Query( "Are you sure you want to leave your gang?", "Confirm Leave Gang", "Yes", function(a) RunConsoleCommand("say", "/gang_leave") end, "No")
- end
- if rank <= 2 then
- ypos = ypos + 40
- // Invite button
- local DermaButton = vgui.Create( "DButton", GangInfoList )
- DermaButton:SetText( "Invite" )
- DermaButton:SetPos( 10, ypos )
- DermaButton:SetSize( 330, 30 )
- DermaButton.DoClick = function ()
- local menu = DermaMenu()
- for _,ply in pairs(player.GetAll()) do
- if ply ~= LocalPlayer() then
- menu:AddOption(ply:Nick(), function () RunConsoleCommand("say", "/gang_invite " .. ply:UserID()) end)
- end
- end
- if not menu.Panels then
- menu:AddOption("Noone available", function() end)
- end
- menu:Open()
- end
- end
- return GangGeneralPanel
- end
- function GangsTab()
- local GangTabs = vgui.Create( "DPanel")
- GangTabs:SetSize(760, 550)
- GangTabs.Tabs = {}
- GangTabsInGang = vgui.Create( "DPropertySheet", GangTabs)
- GangTabsInGang:SetSize(760, 550)
- GangTabsInGang:SetPos(0,0)
- GangTabsNoGang = vgui.Create( "DPropertySheet", GangTabs)
- GangTabsNoGang:SetSize(760, 550)
- GangTabsNoGang:SetPos(0,0)
- // make tabs
- /*
- GangTabs.Tabs.GeneralTab = GangGeneralTab()
- GangTabs.Tabs.MembersTab = GangMembersTab()
- GangTabs.Tabs.RivalsTab = GangRivalsTab()
- GangTabs.Tabs.ShopTab = GangShopTab()
- GangTabs.Tabs.UpgradesTab = GangUpgradesTab()
- GangTabs.Tabs.CreateTab = GangCreateTab()
- GangTabs.Tabs.InvitesTab = GangInvitesTab()
- GangTabsInGang:AddSheet("General", GangTabs.Tabs.GeneralTab, "gui/silkicons/shield", false, false)
- GangTabsInGang:AddSheet("Members", GangTabs.Tabs.MembersTab, "gui/silkicons/group", false, false)
- GangTabsInGang:AddSheet("Rivals", GangTabs.Tabs.RivalsTab, "gui/silkicons/world", false, false)
- GangTabsInGang:AddSheet("Upgrades", GangTabs.Tabs.UpgradesTab, "gui/silkicons/wrench", false, false)
- GangTabsInGang:AddSheet("Shop", GangTabs.Tabs.ShopTab, "gui/silkicons/application_view_tile", false, false)
- GangTabsNoGang:AddSheet("Create Gang", GangTabs.Tabs.CreateTab, "gui/silkicons/add", false, false)
- GangTabsNoGang:AddSheet("Gang Invites", GangTabs.Tabs.InvitesTab, "gui/silkicons/group", false, false)
- GangTabsNoGang:SetVisible(false)
- GangTabsInGang:SetVisible(false)
- */
- function GangTabsInGang:ClearTabs()
- self.tabScroller:Remove()
- self.tabScroller = vgui.Create( "DHorizontalScroller", self )
- self.tabScroller:SetOverlap( 5 )
- for k,v in pairs(self.Items) do
- v.Tab:Remove()
- v.Panel:Remove()
- end
- self.m_pActiveTab = nil
- self.Items = {}
- end
- function GangTabsNoGang:ClearTabs()
- self.tabScroller:Remove()
- self.tabScroller = vgui.Create( "DHorizontalScroller", self )
- self.tabScroller:SetOverlap( 5 )
- for k,v in pairs(self.Items) do
- v.Tab:Remove()
- v.Panel:Remove()
- end
- self.m_pActiveTab = nil
- self.Items = {}
- end
- function GangTabs:Update()
- // set active tab group
- if MyGang and MyGang.name then
- // clear tab control
- GangTabsInGang:ClearTabs()
- // remake tabs
- GangTabs.Tabs.GeneralTab = GangGeneralTab()
- GangTabs.Tabs.MembersTab = GangMembersTab()
- GangTabs.Tabs.RivalsTab = GangRivalsTab()
- GangTabs.Tabs.ShopTab = GangShopTab()
- GangTabs.Tabs.UpgradesTab = GangUpgradesTab()
- // and rebuild
- GangTabsInGang:AddSheet("General", GangTabs.Tabs.GeneralTab, "gui/silkicons/group", false, false)
- GangTabsInGang:AddSheet("Members", GangTabs.Tabs.MembersTab, "gui/silkicons/group", false, false)
- GangTabsInGang:AddSheet("Rivals", GangTabs.Tabs.RivalsTab, "gui/silkicons/group", false, false)
- GangTabsInGang:AddSheet("Upgrades", GangTabs.Tabs.UpgradesTab, "gui/silkicons/group", false, false)
- GangTabsInGang:AddSheet("Shop", GangTabs.Tabs.ShopTab, "gui/silkicons/group", false, false)
- // show
- GangTabsNoGang:SetVisible(false)
- GangTabsInGang:SetVisible(true)
- GangTabsNoGang:SetZPos(1)
- GangTabsInGang:SetZPos(10)
- else
- // clear tab control
- //GangTabsNoGang:ClearTabs()
- // remake tabs
- GangTabs.Tabs.CreateTab = GangCreateTab()
- GangTabs.Tabs.InvitesTab = GangInvitesTab()
- // and rebuild
- GangTabsNoGang:AddSheet("Create Gang", GangTabs.Tabs.CreateTab, "gui/silkicons/group", false, false)
- GangTabsNoGang:AddSheet("Gang Invites", GangTabs.Tabs.InvitesTab, "gui/silkicons/group", false, false)
- // show
- GangTabsNoGang:SetVisible(true)
- GangTabsInGang:SetVisible(false)
- GangTabsNoGang:SetZPos(10)
- GangTabsInGang:SetZPos(1)
- end
- end
- return GangTabs
- end
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Gang Search
- local function GangInfoPanel(name, logo, color, color2, level, callback)
- local InfoPanel = vgui.Create('DPanel')
- InfoPanel:SetSize(720, 74)
- InfoPanel.Paint = function()
- surface.SetDrawColor(20,20,20,255)
- InfoPanel:DrawFilledRect()
- end
- // icon
- local sIcon2 = vgui.Create('DImage')
- sIcon2:SetParent(InfoPanel)
- sIcon2:SetPos(5 + 2, 5 + 2)
- sIcon2:SetImage("gangwars/gang/icons/" .. logo)
- sIcon2:SetImageColor(color2)
- sIcon2:SetSize(64, 64)
- local sIcon = vgui.Create('DImage')
- sIcon:SetParent(InfoPanel)
- sIcon:SetPos(5, 5)
- sIcon:SetImage("gangwars/gang/icons/" .. logo)
- sIcon:SetImageColor(color)
- sIcon:SetSize(64, 64)
- // select button
- local btnLock = vgui.Create('DButton')
- btnLock:SetParent(InfoPanel)
- btnLock:SetSize(120, 40)
- btnLock:SetPos(580, 18)
- btnLock:SetText('Select')
- btnLock.DoClick = function()
- if callback then
- pcall(callback, name, logo, color)
- end
- ShowGangSearchWindow( )
- end
- // Labels
- local lblName = vgui.Create('DLabel')
- lblName:SetParent(InfoPanel)
- lblName:SetPos(94, 5)
- lblName:SetFont("Trebuchet20")
- lblName:SetText(name)
- lblName:SizeToContents()
- lblName:SetTextColor(color)
- local lblPrice = vgui.Create('DLabel')
- lblPrice:SetParent(InfoPanel)
- lblPrice:SetPos(94, 26)
- lblPrice:SetFont("Trebuchet18")
- lblPrice:SetText("Level " .. level .. " Gang")
- lblPrice:SizeToContents()
- lblPrice:SetTextColor(Color(255, 255, 0, 255))
- return InfoPanel
- end
- local function ReceiveGangSearchInfo(handle, id, encoded, decoded)
- if decoded and GangSearchList then
- GangSearchList:Clear( true )
- //Msg("data:\n")
- //PrintTable(decoded)
- for k,v in pairs(decoded) do
- GangSearchList:AddItem( GangInfoPanel( v.name, v.logo, v.color, v.color2, v.level, GangSearchCallback ) )
- end
- end
- end
- datastream.Hook("ds_gang_search", ReceiveGangSearchInfo)
- local function GangSearchPanel()
- local InfoPanel = vgui.Create('DPanel')
- InfoPanel:SetSize(720, 74)
- InfoPanel.Paint = function()
- surface.SetDrawColor(0,0,0,255)
- InfoPanel:DrawFilledRect()
- end
- local lblPrice = vgui.Create('DTextEntry')
- lblPrice:SetParent(InfoPanel)
- lblPrice:SetPos(50, 0)
- lblPrice:SetSize(360, 26)
- lblPrice:SetFont("Trebuchet18")
- lblPrice:SetText("")
- lblPrice:SetTextColor(Color(0,0,0, 255))
- lblPrice.OnEnter = function()
- RunConsoleCommand("say", "/gang_search ".. lblPrice:GetValue())
- lblPrice:SetText("")
- end
- // search button
- local btnLock = vgui.Create('DButton')
- btnLock:SetParent(InfoPanel)
- btnLock:SetSize(120, 26)
- btnLock:SetPos(420, 0)
- btnLock:SetText('Search')
- btnLock.DoClick = function()
- RunConsoleCommand("say", "/gang_search ".. lblPrice:GetValue())
- lblPrice:SetText("")
- end
- return InfoPanel
- end
- local cl_gang_search_menu = nil
- function ShowGangSearchWindow(hide)
- if not cl_gang_search_menu or not cl_gang_search_menu:IsVisible() then
- if not cl_gang_search_menu or not cl_gang_search_menu:IsValid() then
- cl_gang_search_menu = vgui.Create('DFrame')
- cl_gang_search_menu:SetSize(740, 540)
- cl_gang_search_menu:Center()
- cl_gang_search_menu:SetTitle("Search Gangs")
- cl_gang_search_menu:SetSizable(false)
- cl_gang_search_menu:SetDeleteOnClose(false)
- cl_gang_search_menu:ShowCloseButton(true)
- cl_gang_search_menu.OnClose = nil
- function cl_gang_search_menu:Think()
- if (!self.Dragging) then return end
- local x = gui.MouseX() - self.Dragging[1]
- local y = gui.MouseY() - self.Dragging[2]
- x = math.Clamp( x, 0, ScrW() - self:GetWide() )
- y = math.Clamp( y, 0, ScrH() - self:GetTall() )
- self:SetPos( x, y )
- end
- local searchpanel = GangSearchPanel()
- searchpanel:SetParent(cl_gang_search_menu)
- searchpanel:SetPos(0, 30)
- searchpanel:SetVisible(true)
- local ilist = vgui.Create( "DPanelList", cl_gang_search_menu )
- ilist:SetPos(5, 30 + 64)
- ilist:SetSize(720, 520 - 30 - 64)
- ilist:SetSpacing(2)
- ilist:EnableHorizontal( false )
- ilist:EnableVerticalScrollbar( true )
- // set a global to access the list
- GangSearchList = ilist
- end
- cl_gang_search_menu:MakePopup()
- gui.EnableScreenClicker(true)
- cl_gang_search_menu:SetVisible(true)
- else
- if cl_gang_search_menu then
- cl_gang_search_menu:SetVisible(false)
- gui.EnableScreenClicker(false)
- end
- end
- end
- //concommand.Add("gang_search", ShowGangSearchWindow)
- function DoGangSearch(callback)
- GangSearchCallback = callback
- ShowGangSearchWindow()
- end
Add Comment
Please, Sign In to add comment