diff --git a/gamemodes/benny/gamemode/modules/player/cl_hud.lua b/gamemodes/benny/gamemode/modules/player/cl_hud.lua index 044eed7..2071cd1 100644 --- a/gamemodes/benny/gamemode/modules/player/cl_hud.lua +++ b/gamemodes/benny/gamemode/modules/player/cl_hud.lua @@ -203,6 +203,39 @@ end local color_caption = Color( 0, 0, 0, 127 ) local mat_grad = Material( "benny/hud/grad.png", "mips smooth" ) +local lonk = { + { + Glyph = "R", + Text1 = "RELOAD", + Text2 = "Reload weapon", + }, + { + Glyph = "T", + Text1 = "RELOAD (AKIMBO)", + Text2 = "Reload alternate weapon", + }, + { + Glyph = "F", + Text1 = "AIM", + Text2 = "Enter weapon mode", + }, + { + Glyph = "SPACE", + Text1 = "STUNT", + Text2 = "Do a barrel roll", + }, + { + Glyph = "CTRL", + Text1 = "STANCE", + Text2 = "Get down", + }, + { + Glyph = "F1", + Text1 = "DEV. SPAWN", + Text2 = "Cheat items in", + }, +} + -- Stew port globhit = Vector() globang = Angle() @@ -316,45 +349,6 @@ hook.Add( "HUDPaint", "Benny_HUDPaint", function() local bump = 0 local tbump = 0 - local lonk = { - { - Glyph = "R", - Text1 = "RELOAD", - Text2 = "Reload weapon", - Space = ss(20) - }, - { - Glyph = "T", - Text1 = "RELOAD (AKIMBO)", - Text2 = "Reload alternate weapon", - Space = ss(20) - }, - { - Glyph = "F", - Text1 = "AIM", - Text2 = "Enter weapon mode", - Space = ss(20) - }, - { - Glyph = "SPACE", - Text1 = "STUNT", - Text2 = "Do a barrel roll", - Space = ss(20) - }, - { - Glyph = "CTRL", - Text1 = "STANCE", - Text2 = "Get down", - Space = ss(20) - }, - { - Glyph = "F1", - Text1 = "DEV. SPAWN", - Text2 = "Cheat items in", - Space = ss(20) - }, - } - for _, data in ipairs( lonk ) do if _==1 then @@ -367,7 +361,7 @@ hook.Add( "HUDPaint", "Benny_HUDPaint", function() end b_h = b_h + tbump - b_y = sh - b_h - Hb + b_y = sh/2 - b_h/2 surface.SetDrawColor( scheme["bg"] ) surface.DrawRect( b_x, b_y, b_w, b_h ) @@ -711,13 +705,71 @@ hook.Add( "HUDPaint", "Benny_HUDPaint", function() end end - if wep then -- Fatinv + if wep then -- Newinv + local weighted = p:INV_Weight() local inv = p:INV_Get() + local iflip = table.Flip( p:INV_Get()) - local b_x, b_y = Wb, Hb + local b_w = 38 + local b_h = 14 - for i, v in ipairs( inv ) do + local b_x, b_y = sw - Wb, sh - Hb - ss(b_h) + + local bump = 0 + local fbump = 0 + + local num, tcount = 0, table.Count( weighted ) + for _, item in pairs( weighted ) do + num = num + 1 + local class = WeaponGet(item.Class) + local boxsize = ss(b_w) + fbump = fbump + boxsize + if num != tcount then + fbump = fbump + ss(2) + end + end + b_x = b_x - fbump + + local invid = 0 + for _, item in pairs( weighted ) do + local id = iflip[item] + local class = WeaponGet(item.Class) + local boxsize = ss(b_w) surface.SetDrawColor( scheme["bg"] ) + surface.DrawRect( b_x + bump, b_y, boxsize, ss(b_h) ) + --draw.SimpleText( class.Type, "Benny_8", b_x + bump + boxsize/2, b_y + ss(3), scheme["fg"], TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP ) + draw.SimpleText( class.Name, "Benny_8", b_x + bump + boxsize/2, b_y + ss(4), scheme["fg"], TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP ) + --draw.SimpleText( "", "Benny_8", b_x + bump + boxsize/2, b_y + ss(17), scheme["fg"], TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP ) + if class.Features == "firearm" or class.Features == "grenade" then + surface.SetDrawColor( scheme["fg"] ) + surface.DrawOutlinedRect( b_x + bump + ss(1), b_y + ss(1), boxsize-ss(2), ss(b_h-2), ss(0.5) ) + invid = invid + 1 + surface.SetDrawColor( scheme["bg"] ) + surface.DrawRect( b_x + bump, b_y - ss(2+12), ss(12), ss(12) ) + draw.SimpleText( invid, "Benny_10", b_x + bump + ss(6), b_y - ss(2+10), scheme["fg"], TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP ) + end + print( item.Loaded ) + + -- PROTO: Make FindMagSmart that does all this in sh_player, along with the other one in the Weapon HUD. + local maginv = p:INV_FindMag( "mag_" .. item.Class, (item.Loaded and item.Loaded != "" and { [item.Loaded] = true }) ) + local f_maginv = {} + if item.Loaded != "" then table.insert( f_maginv, item.Loaded ) end + for i, v in ipairs( maginv ) do + table.insert( f_maginv, v ) + end + -- PROTO end + local magbump = 0 + for _, mag in ipairs( f_maginv ) do + local mitem = inv[mag] + local loaded = (item.Loaded == mag) + local perc = mitem.Ammo/WeaponGet(mitem.Class).Ammo + surface.SetDrawColor( scheme["bg"] ) + surface.DrawRect( b_x + bump + magbump + ss(13), b_y - ss(14), ss(4), ss(12) ) + surface.SetDrawColor( scheme["fg"] ) + surface.DrawRect( b_x + bump + magbump + ss(13) + ss(1), b_y - ss(14-1) + math.Round((ss(10)-ss(10*perc))), ss(2), math.Round(ss(10*perc)) ) + magbump = magbump + ss(4+1) + end + bump = bump + boxsize + ss(2) end end @@ -1042,4 +1094,50 @@ do return true end end) -end \ No newline at end of file +end + +local dads = { + [KEY_1] = 1, + [KEY_2] = 2, + [KEY_3] = 3, + [KEY_4] = 4, + [KEY_5] = 5, + [KEY_6] = 6, + [KEY_7] = 7, + [KEY_8] = 8, + [KEY_9] = 9, + [KEY_0] = 0, +} + +local function beatup( ply, num ) + local weighted = ply:INV_Weight() + local inv = ply:INV_Get() + local iflip = table.Flip( inv ) + + local invid = 0 + for _, item in pairs( weighted ) do + local class = WeaponGet(item.Class) + if class.Features == "firearm" or class.Features == "grenade" then + invid = invid + 1 + if num == invid then + RunConsoleCommand( "benny_inv_equip", iflip[item], "false", "false" ) + end + end + end +end + +hook.Add( "PlayerButtonDown", "Benny_PlayerButtonDown_Inv", function( ply, button ) + local wep = ply:BennyCheck() + + if button == KEY_F then + if tobool(ply:GetInfoNum("benny_wep_toggleaim", 1)) then + wep:SetUserAim( !wep:GetUserAim() ) + else + wep:SetUserAim( true ) + end + end + + if dads[button] then + beatup( ply, dads[button] ) + end +end) \ No newline at end of file diff --git a/gamemodes/benny/gamemode/modules/player/sh_player.lua b/gamemodes/benny/gamemode/modules/player/sh_player.lua index adb9c98..87acaae 100644 --- a/gamemodes/benny/gamemode/modules/player/sh_player.lua +++ b/gamemodes/benny/gamemode/modules/player/sh_player.lua @@ -91,6 +91,40 @@ function PT:INV_Find( class, exclude ) return results end +local T_WEIGHT = { + ["machinegun"] = 40, + ["rifle"] = 35, + ["shotgun"] = 30, + ["smg"] = 25, + ["pistol"] = 20, + ["melee"] = 15, + ["special"] = 10, + ["utility"] = 05, + ["equipment"] = 00, + ["grenade"] = -10, + ["magazine"] = -100, +} + +function PT:INV_Weight() + local inv = self:INV_Get() + local results = {} + for i, v in pairs( inv ) do + if WeaponGet(v.Class).Features != "magazine" then + table.insert( results, { inv[i], WeaponGet(v.Class) } ) + end + end + -- PROTO: HOLY SHIT THIS SUCKS, MAKES A FUNCTION AND MIGHT RUN EVERY FRAME!!! + table.sort( results, function( a, b ) + return (T_WEIGHT[b[2]["Type"]] + b[1]["Acquisition"]*(1e-5)) + < (T_WEIGHT[a[2]["Type"]] + a[1]["Acquisition"]*(1e-5)) + end ) + local finale = {} + for i, v in ipairs( results ) do + table.insert( finale, v[1] ) + end + return finale +end + function PT:INV_FindMag( class, exclude ) local inv = self:INV_Get() local results = {} @@ -100,7 +134,7 @@ function PT:INV_FindMag( class, exclude ) end end -- PROTO: HOLY SHIT THIS SUCKS, MAKES A FUNCTION AND MIGHT RUN EVERY FRAME!!! - table.sort( results, function( a, b ) return (inv[b]["Ammo"] - (inv[b]["Acquisition"]/(2^16))) < (inv[a]["Ammo"] - (inv[a]["Acquisition"]/(2^16))) end ) + table.sort( results, function( a, b ) return (inv[b]["Ammo"] - (inv[b]["Acquisition"]*(1e-5))) < (inv[a]["Ammo"] - (inv[a]["Acquisition"]*(1e-5))) end ) return results end