Sacrificial piece of s*** goat weapons
This commit is contained in:
parent
6701618db1
commit
3946029046
|
@ -19,8 +19,6 @@ function ENT:Initialize()
|
|||
end
|
||||
|
||||
self.Class:Initialize( self )
|
||||
|
||||
--self:UseClientSideAnimation()
|
||||
end
|
||||
|
||||
if SERVER then
|
||||
|
@ -46,15 +44,6 @@ function ENT:PlayAnimation( seqid, speed )
|
|||
end
|
||||
|
||||
function ENT:Think()
|
||||
|
||||
if false and SERVER then
|
||||
print( "m_flAnimTime", self:GetInternalVariable("m_flAnimTime") )
|
||||
print( "m_flPrevAnimTime", self:GetInternalVariable("m_flPrevAnimTime") )
|
||||
print( "m_bClientSideAnimation", self:GetInternalVariable("m_bClientSideAnimation") )
|
||||
print( "m_bClientSideFrameReset", self:GetInternalVariable("m_bClientSideFrameReset") )
|
||||
print( "cycle", self:GetInternalVariable("cycle") )
|
||||
end
|
||||
|
||||
self:NextThink( CurTime() )
|
||||
if CLIENT then
|
||||
self:SetNextClientThink( CurTime()-5 )
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
|
||||
SWEP.Base = "weapon_base"
|
||||
|
||||
function SWEP:PrimaryAttack()
|
||||
return true
|
||||
end
|
||||
|
||||
function SWEP:SecondaryAttack()
|
||||
return true
|
||||
end
|
||||
|
||||
function SWEP:Reload()
|
||||
return true
|
||||
end
|
||||
|
||||
function SWEP:Think()
|
||||
return true
|
||||
end
|
||||
|
||||
function SWEP:Deploy()
|
||||
return true
|
||||
end
|
||||
|
||||
function SWEP:Holster()
|
||||
return true
|
||||
end
|
|
@ -23,10 +23,10 @@ SWEP.Secondary.Ammo = "none"
|
|||
SWEP.Secondary.Automatic = true
|
||||
|
||||
function SWEP:SetupDataTables()
|
||||
self:NetworkVar( "Entity", 0, "ActiveR" )
|
||||
self:NetworkVar( "Entity", 1, "ActiveL" )
|
||||
self:NetworkVar( "Entity", 2, "DesireR" )
|
||||
self:NetworkVar( "Entity", 3, "DesireL" )
|
||||
self:NetworkVar( "Entity", "ActiveR" )
|
||||
self:NetworkVar( "Entity", "ActiveL" )
|
||||
self:NetworkVar( "Entity", "DesireR" )
|
||||
self:NetworkVar( "Entity", "DesireL" )
|
||||
end
|
||||
|
||||
function SWEP:ItemR( run )
|
||||
|
@ -137,6 +137,8 @@ function SWEP:EquipItem( ent )
|
|||
end
|
||||
print("Pick up", ent)
|
||||
|
||||
self:SetDesireR( ent )
|
||||
|
||||
ent:AddEFlags( EFL_KEEP_ON_RECREATE_ENTITIES )
|
||||
ent:AddEffects( EF_BONEMERGE )
|
||||
ent:PhysicsInit( SOLID_NONE )
|
||||
|
@ -169,6 +171,8 @@ function SWEP:DropItem()
|
|||
if CLIENT then print("DropItem called on CLIENT but certain things aren't finished yet.") return end
|
||||
self:Deactive()
|
||||
|
||||
self:SetDesireR( NULL )
|
||||
|
||||
ent:SetParent( NULL )
|
||||
ent:SetOwner( NULL )
|
||||
|
||||
|
@ -202,17 +206,38 @@ function SWEP:Think()
|
|||
local p = self:GetOwner()
|
||||
|
||||
if p:IsValid() then
|
||||
if p:KeyDown(IN_WEAPON1) then
|
||||
|
||||
local DesireR = self:GetDesireR()
|
||||
local ActiveR = self:GetActiveR()
|
||||
local DesireR_Valid = DesireR:IsValid()
|
||||
local ActiveR_Valid = ActiveR:IsValid()
|
||||
|
||||
-- If we're holding the weapon we want...
|
||||
if ActiveR == DesireR then
|
||||
-- Do nothing
|
||||
|
||||
-- If we want no weapon equipped
|
||||
elseif !DesireR_Valid then
|
||||
if ActiveR_Valid then
|
||||
self:Deactive()
|
||||
else
|
||||
-- We're holding nothing. Do nothing.
|
||||
end
|
||||
|
||||
-- If we want a weapon equipped
|
||||
elseif DesireR_Valid then
|
||||
if ActiveR != DesireR then
|
||||
self:Deactive()
|
||||
end
|
||||
self:SetActive( DesireR )
|
||||
end
|
||||
|
||||
if p:KeyPressed(IN_WEAPON1) then
|
||||
if SERVER then
|
||||
if !self:ItemR() then
|
||||
local trace = self:ItemCheckTrace()
|
||||
self:EquipItem( trace.Entity )
|
||||
end
|
||||
end
|
||||
end
|
||||
if p:KeyReleased(IN_WEAPON1) then
|
||||
if SERVER then
|
||||
if self:ItemR() then
|
||||
else
|
||||
self:DropItem()
|
||||
end
|
||||
end
|
||||
|
@ -244,5 +269,6 @@ end
|
|||
function SWEP:Deploy()
|
||||
end
|
||||
|
||||
function SWEP:Holster()
|
||||
function SWEP:Holster( ent )
|
||||
return false
|
||||
end
|
|
@ -114,61 +114,93 @@ end
|
|||
|
||||
|
||||
do
|
||||
local qt2 = {
|
||||
["slot1"] = 1,
|
||||
["slot2"] = 2,
|
||||
["slot3"] = 3,
|
||||
["slot4"] = 4,
|
||||
["slot5"] = 5,
|
||||
["slot6"] = 6,
|
||||
["slot7"] = 7,
|
||||
["slot8"] = 8,
|
||||
["slot9"] = 9,
|
||||
["slot0"] = 0,
|
||||
}
|
||||
local qt = {
|
||||
["slot1"] = true,
|
||||
["slot2"] = true,
|
||||
["slot3"] = true,
|
||||
["slot4"] = true,
|
||||
["slot5"] = true,
|
||||
["slot6"] = true,
|
||||
["slot7"] = true,
|
||||
["slot8"] = true,
|
||||
["slot9"] = true,
|
||||
["slot0"] = true,
|
||||
|
||||
["invprev"] = true,
|
||||
["invnext"] = true,
|
||||
["invprev"] = -1,
|
||||
["invnext"] = 1,
|
||||
}
|
||||
|
||||
hook.Add( "PlayerBindPress", "Benny_PlayerBindPress_Original", function( ply, bind, pressed, code )
|
||||
if qt[bind] and pressed then
|
||||
if qt2[bind] then
|
||||
local Num = qt2[bind]
|
||||
if pressed then
|
||||
local inv = ply:GetInventory():GetWeighted()
|
||||
local wep = ply:HandlerCheck()
|
||||
local invf = table.Flip( inv )
|
||||
|
||||
local NumOfActive = 0
|
||||
NumOfActive = invf[wep:GetDesireR()]
|
||||
|
||||
if Num == NumOfActive then
|
||||
Num = 0
|
||||
end
|
||||
input.SelectWeapon( ply:GetWeapon("goat_"..Num) )
|
||||
end
|
||||
return true
|
||||
end
|
||||
if qt[bind] then
|
||||
if pressed then
|
||||
local Num = 0
|
||||
|
||||
local inv = ply:GetInventory():GetWeighted()
|
||||
local wep = ply:HandlerCheck()
|
||||
local invf = table.Flip( inv )
|
||||
local invc = #inv
|
||||
|
||||
Num = wep:GetDesireR() and invf[wep:GetDesireR()] or 0
|
||||
Num = Num + qt[bind]
|
||||
|
||||
if Num > invc then
|
||||
Num = 0
|
||||
elseif Num < 0 then
|
||||
Num = invc
|
||||
end
|
||||
|
||||
input.SelectWeapon( ply:GetWeapon("goat_"..Num) )
|
||||
end
|
||||
return true
|
||||
end
|
||||
end)
|
||||
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 inv = ply:GetInventory():GetWeighted()
|
||||
local wep = ply:HandlerCheck()
|
||||
|
||||
local ent = inv[num]
|
||||
if ent then
|
||||
if ent == wep:GetActiveR() then
|
||||
wep:Deactive()
|
||||
else
|
||||
wep:SetActive(ent)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
hook.Add( "PlayerButtonDown", "Benny_PlayerButtonDown_Inv", function( ply, button )
|
||||
local wep = ply:HandlerCheck()
|
||||
|
||||
if dads[button] then
|
||||
beatup( ply, dads[button] )
|
||||
end
|
||||
-- breaks GESTURE_SLOT_ATTACK_AND_RELOAD and I can't fucking have that
|
||||
hook.Add("DoAnimationEvent", "Benny_DoAnimationEvent_FixAnimations", function( ply, event, data )
|
||||
return ACT_INVALID
|
||||
end)
|
||||
|
||||
hook.Add( "PlayerSwitchWeapon", "Benny_PlayerSwitchWeapon_Goat", function( ply, old, ent )
|
||||
if ent.BennyItemHandler then return true end -- what happened?
|
||||
local wep = ply:HandlerCheck()
|
||||
if !wep then print("PlayerSwitchWeapon Benny Handler Missing!!") return false end
|
||||
if ent:IsValid() and ent.Goat then
|
||||
local inv = ply:GetInventory():GetWeighted()
|
||||
|
||||
if ent.Goat == 0 then wep:SetDesireR( NULL ) return false end
|
||||
|
||||
local ent = inv[ent.Goat]
|
||||
if ent then
|
||||
wep:SetDesireR( ent )
|
||||
end
|
||||
end
|
||||
|
||||
return false
|
||||
end)
|
||||
|
||||
for i=0, 9 do
|
||||
local tent = {}
|
||||
tent.Base = "goat"
|
||||
tent.Goat = i
|
||||
|
||||
weapons.Register( tent, "goat_" .. i )
|
||||
end
|
|
@ -17,6 +17,19 @@ function GM:PlayerSpawn( ply )
|
|||
ply:SetViewOffsetDucked( Vector( 0, 0, 50 ) )
|
||||
ply:Give( "itemhandler" )
|
||||
|
||||
ply:Give( "goat_1" )
|
||||
ply:Give( "goat_2" )
|
||||
ply:Give( "goat_3" )
|
||||
ply:Give( "goat_4" )
|
||||
ply:Give( "goat_5" )
|
||||
ply:Give( "goat_6" )
|
||||
ply:Give( "goat_7" )
|
||||
ply:Give( "goat_8" )
|
||||
ply:Give( "goat_9" )
|
||||
ply:Give( "goat_0" )
|
||||
|
||||
ply:SetActiveWeapon( ply:GetWeapon( "itemhandler" ) )
|
||||
|
||||
ply:SetStamina( 1 )
|
||||
|
||||
ply:SetCrouchedWalkSpeed( 0.3 )
|
||||
|
|
|
@ -51,9 +51,6 @@ function PLAYER:SetupDataTables()
|
|||
|
||||
self.Player:NetworkVar( "Vector", "VaultPos1")
|
||||
self.Player:NetworkVar( "Vector", "VaultPos2")
|
||||
|
||||
self.Player:NetworkVar( "String", "ReqID1")
|
||||
self.Player:NetworkVar( "String", "ReqID2")
|
||||
end
|
||||
|
||||
player_manager.RegisterClass( "player_benny", PLAYER, "player_default" )
|
||||
|
|
Loading…
Reference in New Issue