--[[ Displays the inventory, for more information see /gamemode/shared/inventory.lua ]] --[[ Reserved inventory id's 1 - Equipment 2 - Prayers 3 - Skills 4 - Quests ]] local qinv = nrequire("cl_qinventory.lua") local state = nrequire("cl_state.lua") --Holds weather or not player is in inventory local itm = nrequire("core/inventory/common/items.lua") --local qpray = nrequire("cl_qprayers.lua") local inv = {} --print("Hello from cl_inventory.lua") --debug.Trace() local prayerequiped = { false,false,false,false,false } net.Receive("equiphelpprayer",function() --print("equiphelp received client side!") prayerequiped[4] = "Noob Help" end) local lastpanel = lastpanel or 1 local qframe = nil --The master frame local qtabs = {} --The tabs local width = ScrW() local height = ScrH() local credits = 0 local creditslabel local droppanel --Dpanel to drop things on when they are dropped, should be the backmost panel, and cover the entire screen. inv.tabsheet = nil local player_data --The data the player needs to show the q panel net.Receive("art_load_player_data",function() --print("Got player data") player_data = net.ReadTable() --print("It was") --PrintTable(player_data) credits = player_data.credits if creditslabel then creditslabel:SetText(credits or 0) end --print("Credits was", credits) end) local function BuildInventory() --print("Building inventory") if qframe and IsValid(qframe) then return end if not player_data then print("no player data!") player_data = {credits = 0} end qframe = vgui.Create("DFrame") qframe:SetPos(0,0) qframe:SetSize(width / 4, height) qframe:SetTitle("Inventory") qframe:SetDraggable(true) qframe:MakePopup() qframe.OnClose = function(self) droppanel:Hide() state.invopen = false self:Hide() return end qframe.Remove = function(self) state.invopen = false self:Hide() droppanel:Hide() return end creditslabel = vgui.Create("DLabel",qframe) creditslabel:SetText(credits) creditslabel:SetPos(150,5) local creditstext = vgui.Create("DLabel",qframe) creditstext:SetText("Credits:") creditstext:SetPos(100,5) inv.tabsheet = vgui.Create("DPropertySheet",qframe) inv.tabsheet:Dock(FILL) local invsheet = qinv.CreateInventorySheet(inv.tabsheet) --qpray.CreatePrayerSheet(tabsheet) invsheet.id = #qtabs + 1 qtabs[#qtabs + 1] = invsheet --prasheet.id = #qtabs + 1 --qtabs[#qtabs + 1] = prasheet inv.tabsheet:AddSheet("Inventory",invsheet,"icon16/user.png") --tabsheet:AddSheet("Prayers",prasheet,"icon16/user.png") end function inv.ShowInventory() --print("qframe is ", qframe) if not qframe then BuildInventory() else qframe:Show() end state.invopen = true droppanel = vgui.Create("DPanel") droppanel:SetSize(ScrW(),ScrH()) droppanel:SetPos(0,0) droppanel:MoveToBack() droppanel:SetAlpha(10) droppanel:Receiver("item",function(self,panels,dropped,_,_,_) if not dropped then return end --print("Dropedpanel had something dropped on it!") --Drop the item --print("Pnl:",pnl) local froment = panels[1].info.owner local fromid = panels[1].info.id local frompos = panels[1].info.pos --local frominv = panels[1].info.inv itm.DropItem(froment,fromid,frompos) end,{}) end hook.Add("OnSpawnMenuOpen","ArteryOpenInventory",inv.ShowInventory) hook.Add("OnSpawnMenuClose","ArteryCloseInventory",function() droppanel:Remove() state.invopen = false qframe:Hide() if (not sheet) or (not sheet:GetActiveTab()) or (not sheet:GetActiveTab():GetPanel()) then return end lastpanel = sheet:GetActiveTab():GetPanel().sheetnum for k,v in pairs(LocalPlayer().invdisplays) do if not v.panel:IsValid() then continue end --PrintTable(v) v.panel:Close() LocalPlayer().invdisplays[k] = nil end end) concommand.Add("showinventory",inv.ShowInventory) local viewdistance = 100 local rotatespeed = 65 local bone = nil local previousheadscale = Vector(1,1,1) hook.Add("CalcView","ArteryInventoryView",function(ply,pos,ang,fov,nearz,farz) if bone == nil then bone = LocalPlayer():LookupBone("ValveBiped.Bip01_Head1") end local view = {} --view.origin = LocalPlayer():GetBonePosition(bone) + LocalPlayer():GetUp() * 2 view.origin = pos if state.invopen then local trot = math.rad(CurTime() * rotatespeed) local xoff = viewdistance * math.sin(trot) local yoff = viewdistance * math.cos(trot) view.origin = view.origin + Vector(xoff,yoff,10) ang.pitch = 20 ang.yaw = (-CurTime() * rotatespeed) - 90 end view.angles = ang view.fov = fov if not state.invopen then LocalPlayer():ManipulateBoneScale(bone,Vector(0,0,0)) else LocalPlayer():ManipulateBoneScale(bone,previousheadscale) end view.drawviewer = state.invopen return view end) return inv