Items, HUD, wip. Weps won't bonemerge?
This commit is contained in:
parent
8db88566ad
commit
97d2eebf4e
|
@ -0,0 +1,70 @@
|
||||||
|
|
||||||
|
---------------------
|
||||||
|
-- Your Name is Benny
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
AddCSLuaFile()
|
||||||
|
|
||||||
|
ENT.Type = "anim"
|
||||||
|
ENT.Base = "base_anim"
|
||||||
|
ENT.BennyItem = true
|
||||||
|
|
||||||
|
function ENT:Initialize()
|
||||||
|
self:SetModel( self.Class.Model or "models/weapons/w_357.mdl" )
|
||||||
|
if SERVER then
|
||||||
|
self:PhysicsInit( SOLID_VPHYSICS )
|
||||||
|
self:SetCollisionGroup( COLLISION_GROUP_WEAPON )
|
||||||
|
self:GetPhysicsObject():Wake()
|
||||||
|
end
|
||||||
|
|
||||||
|
self.Class:Initialize( self )
|
||||||
|
end
|
||||||
|
|
||||||
|
local function recurse( modify, includer )
|
||||||
|
local basevars = ITEMS[includer].BaseClass
|
||||||
|
if ITEMS[includer].BaseClass then
|
||||||
|
recurse( modify, ITEMS[includer].Base )
|
||||||
|
end
|
||||||
|
|
||||||
|
local localvars = ITEMS[includer]:GetRaw("Vars")
|
||||||
|
if localvars then
|
||||||
|
for i, v in pairs( localvars ) do
|
||||||
|
if !modify[i] then modify[i] = {} end
|
||||||
|
table.Add( modify[i], v )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function ENT:SetupDataTables()
|
||||||
|
local NWVars = {}
|
||||||
|
recurse( NWVars, self.ID )
|
||||||
|
for varname, varlist in pairs(NWVars) do
|
||||||
|
local numba = 0
|
||||||
|
for keyind, keyname in ipairs(varlist) do
|
||||||
|
self:NetworkVar( varname, numba, keyname )
|
||||||
|
numba = numba + 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if SERVER then
|
||||||
|
function ENT:PhysicsCollide( data, collider )
|
||||||
|
if ( data.DeltaTime > 0.1 ) then
|
||||||
|
--self:EmitSound( str, 70, 100, 1, CHAN_STATIC )
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
else
|
||||||
|
hook.Add("NotifyShouldTransmit", "AE_NotifyShouldTransmit", function( ent, shouldtransmit )
|
||||||
|
if ent.BennyItem then
|
||||||
|
if shouldtransmit then
|
||||||
|
if ent:GetOwner() == LocalPlayer() then
|
||||||
|
ent:SetPredictable( true )
|
||||||
|
end
|
||||||
|
else
|
||||||
|
ent:SetPredictable( false )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
AddCSLuaFile()
|
AddCSLuaFile()
|
||||||
|
|
||||||
SWEP.Base = "weapon_base"
|
SWEP.Base = "weapon_base"
|
||||||
SWEP.AEItemHandler = true
|
SWEP.BennyItemHandler = true
|
||||||
|
|
||||||
SWEP.ViewModel = "models/weapons/c_arms.mdl"
|
SWEP.ViewModel = "models/weapons/c_arms.mdl"
|
||||||
SWEP.ViewModelFOV = 74
|
SWEP.ViewModelFOV = 74
|
||||||
|
@ -117,7 +117,7 @@ end
|
||||||
function SWEP:EquipItem( ent )
|
function SWEP:EquipItem( ent )
|
||||||
local p = self:GetOwner()
|
local p = self:GetOwner()
|
||||||
if CLIENT then print("FUCK OFF") debug.Trace() return end
|
if CLIENT then print("FUCK OFF") debug.Trace() return end
|
||||||
if IsValid(ent) and ent.AEItem then
|
if IsValid(ent) and ent.BennyItem then
|
||||||
if ent:GetOwner() != NULL then
|
if ent:GetOwner() != NULL then
|
||||||
print( ent, "belongs to", ent:GetOwner(), "!! Not equipping." )
|
print( ent, "belongs to", ent:GetOwner(), "!! Not equipping." )
|
||||||
return
|
return
|
||||||
|
@ -129,7 +129,7 @@ function SWEP:EquipItem( ent )
|
||||||
print("Pick up", ent)
|
print("Pick up", ent)
|
||||||
|
|
||||||
ent:AddEFlags( EFL_KEEP_ON_RECREATE_ENTITIES )
|
ent:AddEFlags( EFL_KEEP_ON_RECREATE_ENTITIES )
|
||||||
ent:RemoveEffects( EF_ITEM_BLINK )
|
ent:AddEffects( EF_BONEMERGE + EF_BONEMERGE_FASTCULL )
|
||||||
ent:SetParent( p )
|
ent:SetParent( p )
|
||||||
ent:SetOwner( p )
|
ent:SetOwner( p )
|
||||||
ent:SetPos( vector_origin )
|
ent:SetPos( vector_origin )
|
||||||
|
@ -138,7 +138,7 @@ function SWEP:EquipItem( ent )
|
||||||
|
|
||||||
ent:EmitSound( "ae/items/pickup.ogg", 70, 100, 1, CHAN_STATIC )
|
ent:EmitSound( "ae/items/pickup.ogg", 70, 100, 1, CHAN_STATIC )
|
||||||
|
|
||||||
--self:SetActive( ent )
|
self:SetActive( ent )
|
||||||
local inv = p:GetInventory()
|
local inv = p:GetInventory()
|
||||||
inv[ent] = true
|
inv[ent] = true
|
||||||
inv:Sync()
|
inv:Sync()
|
||||||
|
@ -158,9 +158,9 @@ function SWEP:DropItem()
|
||||||
ent:SetParent( NULL )
|
ent:SetParent( NULL )
|
||||||
ent:SetOwner( NULL )
|
ent:SetOwner( NULL )
|
||||||
|
|
||||||
local ep = ent:GetPhysicsObject()
|
|
||||||
ent:RemoveEFlags( EFL_KEEP_ON_RECREATE_ENTITIES )
|
ent:RemoveEFlags( EFL_KEEP_ON_RECREATE_ENTITIES )
|
||||||
ent:AddEffects( EF_ITEM_BLINK )
|
ent:RemoveEffects( EF_BONEMERGE + EF_BONEMERGE_FASTCULL )
|
||||||
|
|
||||||
ent:SetPos( p:EyePos() + p:GetAimVector() * 0 )
|
ent:SetPos( p:EyePos() + p:GetAimVector() * 0 )
|
||||||
ent:SetAngles( p:EyeAngles() + Angle( 0, 180, 0 ) )
|
ent:SetAngles( p:EyeAngles() + Angle( 0, 180, 0 ) )
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ local cam_r = CreateConVar( "b-cam_r", 12 )
|
||||||
local cam_u = CreateConVar( "b-cam_u", 0 )
|
local cam_u = CreateConVar( "b-cam_u", 0 )
|
||||||
local cam_fov = CreateConVar( "b-cam_fov", 75 )
|
local cam_fov = CreateConVar( "b-cam_fov", 75 )
|
||||||
|
|
||||||
local m = 2
|
local m = 3
|
||||||
local m2 = Vector( m, m, m )
|
local m2 = Vector( m, m, m )
|
||||||
local m1 = m2:GetNegated()
|
local m1 = m2:GetNegated()
|
||||||
|
|
||||||
|
|
|
@ -32,10 +32,6 @@ local function hCol( r, g, b, a )
|
||||||
return surface.SetDrawColor( r, g, b, a )
|
return surface.SetDrawColor( r, g, b, a )
|
||||||
end
|
end
|
||||||
|
|
||||||
local function hCoo( col )
|
|
||||||
return col
|
|
||||||
end
|
|
||||||
|
|
||||||
local function hRect( x, y, w, h )
|
local function hRect( x, y, w, h )
|
||||||
gx, gy = hXY()
|
gx, gy = hXY()
|
||||||
x = (x or 0) + gx
|
x = (x or 0) + gx
|
||||||
|
@ -52,29 +48,72 @@ local function hORect( x, y, w, h, r )
|
||||||
surface.DrawOutlinedRect( x, y, w, h, r )
|
surface.DrawOutlinedRect( x, y, w, h, r )
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function hScis( x, y, w, h )
|
||||||
|
gx, gy = hXY()
|
||||||
|
x = (x or 0) + gx
|
||||||
|
y = (y or 0) + gy
|
||||||
|
|
||||||
|
render.SetScissorRect( x, y, x+w, y+h, true )
|
||||||
|
end
|
||||||
|
|
||||||
|
local function hScisoff()
|
||||||
|
render.SetScissorRect( 0, 0, 0, 0, false )
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local sizes = {
|
||||||
|
8, 10, 16, 24, 48
|
||||||
|
}
|
||||||
|
|
||||||
|
local function regenfonts()
|
||||||
|
for index, scale in ipairs( sizes ) do
|
||||||
|
surface.CreateFont("HUD_" .. scale, {
|
||||||
|
font = "Carbon Plus Bold",
|
||||||
|
size = scale,
|
||||||
|
weight = 0,
|
||||||
|
extended = false,
|
||||||
|
italic = false,
|
||||||
|
antialias = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
regenfonts()
|
||||||
|
|
||||||
local COLOR_DARK = Color( 40, 40, 80 )
|
local COLOR_DARK = Color( 40, 40, 80 )
|
||||||
local COLOR_BRIGHT = Color( 80, 80, 160 )
|
local COLOR_BRIGHT = Color( 80, 80, 160 )
|
||||||
local COLOR_MAIN = Color( 160, 160, 240 )
|
local COLOR_MAIN = Color( 160, 160, 240 )
|
||||||
|
|
||||||
-- Drawing
|
-- Drawing
|
||||||
function GM:HUDPaint()
|
function GM:HUDPaint()
|
||||||
|
local p = LocalPlayer()
|
||||||
|
local w, h = ScrW(), ScrH()
|
||||||
stack = util.Stack()
|
stack = util.Stack()
|
||||||
|
|
||||||
-- Centered
|
S_Push( 20, 20 )
|
||||||
S_Push( ScrW()/2, ScrH()/2 )
|
|
||||||
|
|
||||||
-- Push Top, Centered Health
|
|
||||||
S_Push( -320/2, -440 )
|
|
||||||
|
|
||||||
hCol( COLOR_DARK )
|
hCol( COLOR_DARK )
|
||||||
hRect( 0, 0, 320, 30 )
|
hRect( 0, 0, 320, 40 )
|
||||||
|
|
||||||
|
local x, y = hXY( 6, 0 )
|
||||||
|
draw.SimpleText( "BENNY", "HUD_48", x, y, COLOR_MAIN )
|
||||||
|
|
||||||
hCol( COLOR_MAIN )
|
hCol( COLOR_MAIN )
|
||||||
hRect( 2, 2, 320-2-2, 30-2-2 )
|
hRect( 4, 4, (320-4-4) * math.abs( math.sin(CurTime()) ), 40-4-4 )
|
||||||
|
|
||||||
|
hScis( 4, 4, (320-4-4) * math.abs( math.sin(CurTime()) ), 40-4-4 )
|
||||||
|
local x, y = hXY( 6, 0 )
|
||||||
|
draw.SimpleText( "BENNY", "HUD_48", x, y, COLOR_DARK )
|
||||||
|
hScisoff()
|
||||||
S_Pop()
|
S_Pop()
|
||||||
|
|
||||||
|
S_Push( 20, h - 60 - 20 )
|
||||||
|
for i, v in ipairs( p:GetInventory():GetWeighted() ) do
|
||||||
|
hCol( COLOR_DARK )
|
||||||
|
hRect( 0, 0, 120, 60 )
|
||||||
|
local x, y = hXY( 0, 0 )
|
||||||
|
draw.SimpleText( l8( v.Class.PrintName ), "HUD_24", x + 120/2, y + 60/2, COLOR_MAIN, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
|
||||||
|
end
|
||||||
|
S_Pop()
|
||||||
|
|
||||||
S_Pop()
|
|
||||||
if stack:Size() != 0 then print("Stack unfinished.") end
|
if stack:Size() != 0 then print("Stack unfinished.") end
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
|
@ -162,7 +162,7 @@ local mwheel = {
|
||||||
|
|
||||||
local function beatup( ply, num )
|
local function beatup( ply, num )
|
||||||
local inv = ply:GetInventory():GetWeighted()
|
local inv = ply:GetInventory():GetWeighted()
|
||||||
local wep = ply:HandlerCheck()
|
local wep = ply:BennyCheck()
|
||||||
|
|
||||||
local ent = inv[num]
|
local ent = inv[num]
|
||||||
if ent then
|
if ent then
|
||||||
|
@ -178,7 +178,7 @@ local function boba( ply, mwheel )
|
||||||
if mwheel != 0 then
|
if mwheel != 0 then
|
||||||
print("Test", math.Round( CurTime()%60, 4 ), mwheel )
|
print("Test", math.Round( CurTime()%60, 4 ), mwheel )
|
||||||
local inv = ply:GetInventory():GetWeighted()
|
local inv = ply:GetInventory():GetWeighted()
|
||||||
local wep = ply:HandlerCheck()
|
local wep = ply:BennyCheck()
|
||||||
|
|
||||||
local inf = table.Flip( inv )
|
local inf = table.Flip( inv )
|
||||||
local currpos = inf[wep:GetActiveR()]
|
local currpos = inf[wep:GetActiveR()]
|
||||||
|
|
|
@ -113,7 +113,7 @@ AddItem( "mk23", {
|
||||||
Category = "pistol",
|
Category = "pistol",
|
||||||
Base = "base_firearm",
|
Base = "base_firearm",
|
||||||
|
|
||||||
Model = "models/weapons/w_pist_usp.mdl",
|
Model = "models/weapons/w_smg1.mdl",
|
||||||
|
|
||||||
ClipSize = 12,
|
ClipSize = 12,
|
||||||
Delay = (60/300),
|
Delay = (60/300),
|
||||||
|
@ -124,4 +124,18 @@ AddItem( "mk23", {
|
||||||
Accuracy_Add = 0.5,
|
Accuracy_Add = 0.5,
|
||||||
Accuracy_Reset = 0.4,
|
Accuracy_Reset = 0.4,
|
||||||
Accuracy_Decay = 5,
|
Accuracy_Decay = 5,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
for ID, Data in pairs(ITEMS) do
|
||||||
|
local tent = {}
|
||||||
|
tent.Base = "b-itembase"
|
||||||
|
tent.PrintName = Data.PrintName or ID
|
||||||
|
tent.ID = ID
|
||||||
|
tent.Class = ITEMS[ID]
|
||||||
|
tent.Spawnable = true
|
||||||
|
tent.AdminOnly = false
|
||||||
|
tent.Category = "Other"
|
||||||
|
|
||||||
|
-- print("aei_" .. ID)
|
||||||
|
scripted_ents.Register( tent, "b-item_" .. ID )
|
||||||
|
end
|
|
@ -0,0 +1,14 @@
|
||||||
|
|
||||||
|
---------------------
|
||||||
|
-- Your Name is Benny
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Languages = {}
|
||||||
|
|
||||||
|
function l8( inp )
|
||||||
|
return Languages["en-us"][inp] or Languages["en-us"][inp] or inp
|
||||||
|
end
|
||||||
|
|
||||||
|
local AD, IN = AddCSLuaFile, include
|
||||||
|
AD("languages/en-us.lua")
|
||||||
|
IN("languages/en-us.lua")
|
|
@ -0,0 +1,7 @@
|
||||||
|
|
||||||
|
local L = {}
|
||||||
|
Languages["en-us"] = L
|
||||||
|
L["Name"] = "English (United States)"
|
||||||
|
|
||||||
|
L["#Item.mk23.Name"] = "MK.23"
|
||||||
|
L["#Item.mk23.Description"] = "Special forces sidearm"
|
|
@ -23,6 +23,9 @@ function GM:PlayerSpawn( ply )
|
||||||
ply:MakeCharacter()
|
ply:MakeCharacter()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function GM:PlayerNoClip()
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
local PT = FindMetaTable( "Player" )
|
local PT = FindMetaTable( "Player" )
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,8 @@ BENNY = {}
|
||||||
|
|
||||||
local AC, IN = AddCSLuaFile, include
|
local AC, IN = AddCSLuaFile, include
|
||||||
|
|
||||||
|
AC("language.lua")
|
||||||
|
IN("language.lua")
|
||||||
AC("camera.lua")
|
AC("camera.lua")
|
||||||
IN("camera.lua")
|
IN("camera.lua")
|
||||||
AC("items.lua")
|
AC("items.lua")
|
||||||
|
|
Loading…
Reference in New Issue