So i added the spidey gun but when i use it it goes waaaaaaaaaaaaaaaaay to fast, idk how to fix it.. heres my code
[QUOTE]if SERVER then
AddCSLuaFile( "shared.lua" )
resource.AddFile("materials/vgui/ttt/weapon_spiderman.vmt")
resource.AddFile("materials/vgui/ttt/weapon_spiderman.vtf")
resource.AddFile("sound/rope_hit.wav")
resource.AddFile("sound/shoot_rope.wav")
resource.AddFile("sound/to_far.wav")
end
SWEP.HoldType = "pistol"
if CLIENT then
SWEP.PrintName = "Spiderman's Gun"
SWEP.Slot = 6
SWEP.Icon = "vgui/ttt/icon_pistol"
end
SWEP.CanBuy = { ROLE_DETECTIVE }
SWEP.LimitedStock = true
SWEP.AllowDrop = true
SWEP.AutoSpawnable = false
SWEP.EquipMenuData = {
type = "Spidermans Gun",
desc = "Zip through the skys as Spiderman would!"
};
SWEP.AmmoEnt = "item_ammo_pistol_ttt"
SWEP.Kind = WEAPON_EQUIP1
SWEP.Base = "weapon_tttbase"
SWEP.Spawnable = true
SWEP.AdminSpawnable = true
SWEP.DrawAmmo = false
SWEP.DrawCrosshair = true
SWEP.ViewModel = "models/weapons/v_pistol.mdl"
SWEP.WorldModel = "models/weapons/w_pistol.mdl"
local sndPowerUp = Sound ("rope_hit.wav")
local sndPowerDown = Sound ("shoot_rope.wav")
local sndTooFar = Sound ("to_far.wav")
SWEP.IronSightsPos = Vector( 6.05, -5, 2.4 )
SWEP.IronSightsAng = Vector( 2.2, -0.1, 0 )
function SWEP:Initialize()
nextshottime = CurTime()
end
function SWEP:Think()
if (!self.Owner || self.Owner == NULL) then return end
if ( self.Owner:KeyPressed( IN_ATTACK ) ) then
self:StartAttack()
elseif ( self.Owner:KeyDown( IN_ATTACK ) && inRange ) then
self:UpdateAttack()
elseif ( self.Owner:KeyReleased( IN_ATTACK ) && inRange ) then
self:EndAttack( true )
end
if ( self.Owner:KeyPressed( IN_ATTACK2 ) ) then
self:Attack2()
end
end
function SWEP:DoTrace( endpos )
local trace = {}
trace.start = self.Owner:GetShootPos()
trace.endpos = trace.start + (self.Owner:GetAimVector() *
14096)
if(endpos) then trace.endpos = (endpos - self.Tr.HitNormal
* 7) end
trace.filter = { self.Owner, self.Weapon }
self.Tr = nil
self.Tr = util.TraceLine( trace )
end
function SWEP:StartAttack()
local gunPos = self.Owner:GetShootPos()
local disTrace = self.Owner:GetEyeTrace()
local hitPos = disTrace.HitPos
local x = (gunPos.x - hitPos.x)^2;
local y = (gunPos.y - hitPos.y)^2;
local z = (gunPos.z - hitPos.z)^2;
local distance = math.sqrt(x + y + z);
local distanceCvar = GetConVarNumber("rope_distance")
inRange = false
if distance <= distanceCvar then
inRange = true
//100
end
if inRange then
if (SERVER) then
if (!self.Beam) then
self.Beam = ents.Create( "rope" )
self.Beam:SetPos(
self.Owner:GetShootPos() )
self.Beam:Spawn()
end
self.Beam:SetParent( self.Owner )
self.Beam:SetOwner( self.Owner )
end
self:DoTrace()
self.speed = 10000
self.startTime = CurTime()
self.endTime = CurTime() + self.speed
self._dt = -1
if (SERVER && self.Beam) then
self.Beam:GetTable():SetEndPos( self.Tr.HitPos )
end
self:UpdateAttack()
self.Weapon:EmitSound( sndPowerDown )
else
self.Weapon:EmitSound( sndTooFar )
end
end
function SWEP:UpdateAttack()
self.Owner:LagCompensation( true )
if (!endpos) then endpos = self.Tr.HitPos end
if (SERVER && self.Beam) then
self.Beam:GetTable():SetEndPos( endpos )
end
lastpos = endpos
if ( self.Tr.Entity:IsValid() ) then
endpos = self.Tr.Entity:GetPos()
if ( SERVER ) then
self.Beam:GetTable():SetEndPos(
endpos )
end
end
local vVel = (endpos - self.Owner:GetPos())
local Distance = endpos:Distance
(self.Owner:GetPos())
local et = (self.startTime +
(Distance/self.speed))
if(self._dt != 0) then
self._dt = (et - CurTime()) / (et -
self.startTime)
end
if(self._dt < 0) then
self.Weapon:EmitSound( sndPowerUp )
self._dt = 0
end
if(self._dt == 0) then
zVel = self.Owner:GetVelocity().z
vVel = vVel:GetNormalized()*(math.Clamp
(Distance,0,7))
end
if( SERVER ) then
local gravity = GetConVarNumber
("sv_Gravity")
vVel:Add(Vector(0,0,(gravity/100)*1.5))
if tonumber(zVel) and zVel < 0 then
vVel:Sub(Vector(0,0,zVel/100))
end
//prob
self.Owner:SetVelocity(vVel)
end
endpos = nil
self.Owner:LagCompensation( false )
end
function SWEP:EndAttack( shutdownsound )
if ( shutdownsound ) then
self.Weapon:EmitSound( sndPowerDown )
end
if ( CLIENT ) then return end
if ( !self.Beam ) then return end
self.Beam:Remove()
self.Beam = nil
end
function SWEP:Attack2()
if (CLIENT) then return end
local CF = self.Owner:GetFOV()
if CF == 90 then
self.Owner:SetFOV(30,.3)
elseif CF == 30 then
self.Owner:SetFOV(90,.3)
end
end
function SWEP:Holster()
self:EndAttack( false )
return true
end
function SWEP:OnRemove()
self:EndAttack( false )
return true
end
function SWEP:PrimaryAttack()
end
function SWEP:SecondaryAttack()
end[/QUOTE]
Did you see this
[LUA]self.speed = 10000[/LUA]
yes, i lowered it and it didnt do anything :(
well i lowered it to 5000, maybe i should try lower
[editline]3rd December 2013[/editline]
didnt work
Did you try setting it higher?
[lua]
self.speed = 10000
self.startTime = CurTime()
self.endTime = CurTime() + self.speed
[/lua]
Assuming that endTime is the cooldown between two shots, it looks like setting it higher will make the user have to wait longer to shoot the swep again.
[QUOTE]heres my code[/QUOTE]
-Posts whole code of a swep he downloaded from somewhere
Why does that always crack me up
Please use [lua] [./lua] tags in future,
Also Rainbow, it's not that they can shoot it again quickly, it's just that it flies way to fast, what gamemode is this for?
[QUOTE=Brendon;43075330]what gamemode is this for?[/QUOTE]
[code] SWEP.Base = "weapon_tttbase"[/code]
Of course it's too fast (projectile wise). Because there is no actual motion on the beam, it is just being created.
It's not too hard to add something like this yourself, just look into newton's equations of motion. Now of course you could go the extra mile and add in a dynamic rope, but if you want it to be physically valid you would need to look into the crazy maths.
There are two ways of doing this:
-An actual entity being projected and it sticking to what ever it collides with. Simple forces.
-Using a prediction system when you aim are something, use a Type of Bezier curve with Typical h values on the parabola of the motion of the web.
The second one will be more appealing and easier to use. if you want I can do some maths for you for an illusion of dynamic rope (using a 4th dimensional Bezier curve so the arc will become smooth and the rope become taught) and just your everyday motion equations?
Sorry, you need to Log In to post a reply to this thread.