- Initiateur de la discussion
aligatord78
Geek
- Messages
- 75
- Score réaction
- 3
- Points
- 55
comment faire pour modifier un addon du workshop svp ??
Ça sert à quoi d'aller sur un site si tu as déjà gmad installer lorsque tu télécharge garrys mod... Surtout que le gmad fourni, tu as juste à glisser ton addon dessu et il s'extrait automatiquement...LuffyD59 à dit:Grâce a se site : https://steamworkshopdownloader.io
C'est rapideD3YM0NYT à dit:Ça sert à quoi d'aller sur un site si tu as déjà gmad installer lorsque tu télécharge garrys mod... Surtout que le gmad fourni, tu as juste à glisser ton addon dessu et il s'extrait automatiquement...
Mais mdr sauter la décompression... Quand tu utilises ton site tu le décompresse aussi xDZ3k4 à dit:C'est rapide
ça permet de sauter une étape (décompression)
ça évite de chercher l'addon dans son dossier garry's mod
Et dernière chose, c'est rapide.
Désolé si t'es sur Windows 96 et que ton Windows n'inclut pas la prise en charge des formats zip par défaut.D3YM0NYT à dit:Mais mdr sauter la décompression... Quand tu utilises ton site tu le décompresse aussi xD
"Sa évite de chercher l'addon" désolé si tu est avec windows 96 et que tu ne peux pas rechercher dans un dossier
4000iqD3YM0NYT à dit:Mais mdr sauter la décompression... Quand tu utilises ton site tu le décompresse aussi xD
ça s'appelle une alternative en soit , libre au gens d'utiliser l'outil officiel de gmod ou pas.D3YM0NYT à dit:Ça sert à quoi d'aller sur un site si tu as déjà gmad installer lorsque tu télécharge garrys mod... Surtout que le gmad fourni, tu as juste à glisser ton addon dessu et il s'extrait automatiquement...
Alors tu décompil l'addons grave au site (steamworkshopdownloader.io) donner plus haut ou juste avec les méthodes de base de gmod,.Ryoley à dit:Bonjour,
Savez-vous s'il y a un moyen simple de changer l'apparence d'un SWEP lorsqu'on le tiens dans la main ? Par exemple pour l'Impaler SWEP (Steam Workshop :: Impaler SWEP ), il y a un petit pistolet (présent par défaut dans la scrollbar en Sandbox) que l'on tiens. De ce fait, je voudrais remplacer ce pistolet par des mains vides, comme lorsque l'on a les clefs en main en DarkRP. Pour résumer, avoir les bras le long du corps, les mains vides, à la place d'un bras tendu avec un pistolet dans la main.
Merci à vous, bonne fin de journée.
D'accord merci beaucoup, je vais essayer çaDrTortue à dit:Alors tu décompil l'addons grave au site (steamworkshopdownloader.io) donner plus haut ou juste avec les méthodes de base de gmod,.
Ensuite tu va aller dans lua/weapons/impaler_xp.lua
Changer :
Ligne 56
SWEP.ViewModel = "models/weapons/c_pistol.mdl"
par
SWEP.ViewModel = ""
Ligne 61
SWEP.WorldModel = "models/weapons/w_pistol.mdl"
par
SWEP.WorldModel = ""
Je crois, ça fait longtemps que j'ai pas touché au lua
Oui ça ne serre à rien de mettre un fichier .zipRyoley à dit:D'accord merci beaucoup, je vais essayer ça
Ensuite, si je veux mettre l'addon sur mon serveur, par exemple, je dois mettre le dossier décompilé dans le dossier addons du FTP de mon serveur ? :0
j'ai une idée , indique plutôt ceci ça donnera un style (le joueur va faire comme si il lancer véritablement le harpon)Ryoley à dit:Cela a marché en partie, le pistolet à bien disparu mais le joueur est encore en position comme si il tenait encore l'arme (bras tendu).
Je me demande s'il ne faudrait pas remplacer :
Ligne 59
SWEP.HoldType = "pistol"
par
SWEP.HoldType = ""
SWEP.HoldType = "grenade"
Oui c'est un bonne idée mais le problème c'est que je voudrais rendre cela "imprévisible", les autres joueurs ne doivent pas s'attendre à ce qu'il se passe une action à ce moment là. Il faut qu'ils se disent "Il a les clefs en main, c'est sécurisé on peut l'attaquer ou l'attraper." et là BAM ! un gentil homme empalé.Yoh Sambre ♪ à dit:j'ai une idée , indique plutôt ceci ça donnera un style (le joueur va faire comme si il lancer véritablement le harpon)
Code:SWEP.HoldType = "grenade"
Le problème du bras tendu vient de la vu du joueur ou ou la position du joueur vu par les autres?Ryoley à dit:C'est pour cela que je ne sais si il faut mettre :
SWEP.HoldType = ""
ou
SWEP.HoldType = "hands"
Par exemple.
Je n'ai essayé que avec la vue à la 3ème personne via l'addon du workshop mais dans cette vue on a effectivement le problème du bras tendu. ^^DrTortue à dit:Le problème du bras tendu vient de la vu du joueur ou ou la position du joueur vu par les autres?
essaye gmod_handsRyoley à dit:Je n'ai essayé que avec la vue à la 3ème personne via l'addon du workshop mais dans cette vue on a effectivement le problème du bras tendu. ^^
D'accord je vais essayer ça juste après mon idéeDrTortue à dit:essaye gmod_hands
J'ai essayé ça mais toujours le même problème :/DrTortue à dit:Oki, tu me fais un retour sur ça
SWEP.ViewModel = ""
SWEP.HoldType = "gmod_hands"
SWEP.WorldModel = ""
SWEP.UseHands = true
if ( SERVER ) then CreateConVar("imp_admin","0",{FCVAR_ARCHIVE,FCVAR_REPLICATED,FCVAR_SERVER_CAN_EXECUTE}) CreateConVar("imp_nofall","0",{FCVAR_ARCHIVE,FCVAR_REPLICATED,FCVAR_SERVER_CAN_EXECUTE}) CreateConVar("imp_cleanup","0",{FCVAR_ARCHIVE,FCVAR_REPLICATED,FCVAR_SERVER_CAN_EXECUTE}) AddCSLuaFile() SWEP.Weight = 5
end
if ( CLIENT ) then SWEP.PrintName = "Impaler" SWEP.Author = "Hds46" SWEP.Category = "Other" SWEP.Slot = 1 SWEP.SlotPos = 2 SWEP.IconLetter = "x" SWEP.WepSelectIcon = Material("icon/icon_spear.png") SWEP.BounceWeaponIcon = false function SWEP:DrawWeaponSelection( x, y, wide, tall, alpha ) -- Set us up the texture surface.SetDrawColor( 255, 255, 255, alpha ) surface.SetMaterial( self.WepSelectIcon ) -- Lets get a sin wave to make it bounce local fsin = 0 if ( self.BounceWeaponIcon == true ) then fsin = math.sin( CurTime() * 10 ) * 5 end -- Borders y = y + 18 x = x + 15 wide = wide - 30 -- Draw that mother surface.DrawTexturedRect( x + (fsin), y - (fsin), wide-fsin*2 , ( wide / 1.8 ) + (fsin) ) -- Draw weapon info box self:PrintWeaponInfo( x + wide + 20, y + tall * 0.95, alpha ) end
end
------------General Swep Info---------------
SWEP.Author = "Hds46"
SWEP.Contact = "Steam"
SWEP.Purpose = "Brutal weapon"
SWEP.Instructions = "Left Click - Impale. \nRight Click - Groundspike Graveyard"
SWEP.Spawnable = true
SWEP.AdminOnly = false
-----------------------------------------------
-----------------Models---------------------------
SWEP.ViewModel = "models/weapons/c_pistol.mdl"
SWEP.UseHands = true
SWEP.HoldType = "pistol"
SWEP.WorldModel = "models/weapons/w_pistol.mdl"
-----------------------------------------------
-------------Primary Fire Attributes----------------------------------------
SWEP.Primary.Delay = 0.2
SWEP.Primary.ClipSize = -1
SWEP.Primary.DefaultClip = -1
SWEP.Primary.Automatic = true
SWEP.Primary.Ammo = "None"
-------------End Primary Fire Attributes------------------------------------
-------------Secondary Fire Attributes-------------------------------------
SWEP.Secondary.Delay = 6
SWEP.Secondary.ClipSize = -1
SWEP.Secondary.DefaultClip = -1
SWEP.Secondary.Automatic = true
SWEP.Secondary.Ammo = "none"
-------------End Secondary Fire Attributes--------------------------------
function SWEP:Reload()
for k,v in pairs(ents.GetAll()) do
if v.Impaler and v.Owner == self.Owner then
v:GetPhysicsObject():EnableMotion(true)
end
end
end
function SWEP:Think()
end
function SWEP:Equip()
end
function SWEP:OnDrop()
end
function SWEP:Deploy() self.Weapon:SendWeaponAnim(ACT_VM_DRAW) self.Owner:GetViewModel():SetPlaybackRate(4) self:SetNextPrimaryFire( CurTime() + self.Owner:GetViewModel():SequenceDuration()/4) self:SetNextSecondaryFire( CurTime() + self.Owner:GetViewModel():SequenceDuration()/4) return true
end
function SWEP:DoImpactEffect( tr, nDamageType )
return true
end
function SWEP:PrimaryAttack()
if self:GetNextPrimaryFire() < CurTime() then
if GetConVar("imp_admin"):GetBool() and !self.Owner:IsAdmin() then
self.Weapon:SetNextPrimaryFire(CurTime() + self.Primary.Delay)
self.Weapon:SetNextSecondaryFire(CurTime() + self.Primary.Delay)
self.Owner:PrintMessage(HUD_PRINTCENTER,"You must be admin to use that weapon")
if SERVER then
self.Owner:EmitSound(Sound("HL2Player.UseDeny"))
end
return
end
self.Weapon:SetNextPrimaryFire(CurTime() + self.Primary.Delay)
self.Weapon:SetNextSecondaryFire(CurTime() + self.Primary.Delay)
self.Weapon:SendWeaponAnim(ACT_VM_PRIMARYATTACK)
self.Owner:SetAnimation( PLAYER_ATTACK1 )
local eyetrace = self.Owner:GetEyeTrace()
local target = eyetrace.Entity
if eyetrace != nil and eyetrace.Hit and SERVER then
if IsValid(target) and (target:IsNPC() or target:IsPlayer()) then
local traceline = {}
traceline.start = target:GetPos()
traceline.endpos = traceline.start - Vector(0,0,50)
traceline.filter = function(ent) if !ent:IsWorld() then return false end end
local traceworld = util.TraceLine(traceline)
if traceworld.Hit then
target:EmitSound(Sound("physics/metal/sawblade_stick3.wav"))
target:SetShouldServerRagdoll( true )
local ent = ents.Create("prop_physics")
ent:SetModel("models/props_junk/harpoon002a.mdl")
ent:SetPos(traceworld.HitPos - Vector(0,0,10))
ent:SetAngles(Angle(-90,90,0))
ent.Impaler = true
ent.Owner = self.Owner
ent:Spawn()
ent:Activate()
ent:GetPhysicsObject():EnableMotion(false)
target.Impaled = true
target.ImpaleEnt = ent
target:SetHealth(0)
local dmginfo = DamageInfo()
dmginfo:SetDamage(10)
dmginfo:SetDamageType(DMG_CLUB)
dmginfo:SetAttacker( self.Owner )
dmginfo:SetDamageForce(Vector(0,0,10))
dmginfo:SetInflictor( self )
target:TakeDamageInfo( dmginfo )
local Angle = target:GetAngles()
Angle.pitch = -90
Angle.roll = Angle.roll
Angle.yaw = Angle.yaw
local NAngle = Angle
for i =1,6 do
local effectdata = EffectData()
effectdata:SetOrigin( target:GetPos() )
effectdata:SetNormal(NAngle:Forward())
effectdata:SetMagnitude( 1 )
effectdata:SetScale( 10 )
effectdata:SetColor( 0 )
effectdata:SetFlags( 3 )
util.Effect( "bloodspray", effectdata, true, true )
end
for i=1,30 do
local traceline2 = {}
traceline2.start = target:GetPos() + Vector(0,0,10)
traceline2.endpos = traceline2.start - (Vector((math.random()*2)-1, (math.random()*2)-1, (math.random()*2)-1)*200)
traceline2.filter = {ent,target}
local trw = util.TraceLine(traceline2)
local decpos1 = trw.HitPos + trw.HitNormal
local decpos2 = trw.HitPos - trw.HitNormal
util.Decal("Blood", decpos1, decpos2)
end
timer.Create("harpoon_rise" .. ent:EntIndex(),0.01,16,function()
if IsValid(ent) then
ent:SetPos(ent:GetPos() + Vector(0,0,4))
end
end)
if math.random(1,100) < 30 and !GetConVar("imp_nofall"):GetBool() then
timer.Create("harpoon_fall" .. ent:EntIndex(),math.random(5,10),1,function()
if IsValid(ent) then
ent:GetPhysicsObject():EnableMotion(true)
end
end)
end
if GetConVar("imp_cleanup"):GetBool() then
timer.Create("harpoon_remove" .. ent:EntIndex(),math.random(12,28),1,function()
if IsValid(ent) then
ent:Remove()
end
end)
end
undo.Create( "Harpoon" )
undo.AddEntity( ent )
undo.SetPlayer( self.Owner )
undo.SetCustomUndoText( "Undone Harpoon" )
undo.Finish()
return
end
end
end
if SERVER then
self.Owner:EmitSound(Sound("Buttons.snd14"))
end
end
end
function SWEP:SecondaryAttack()
if self:GetNextSecondaryFire() < CurTime() then
if GetConVar("imp_admin"):GetBool() and !self.Owner:IsAdmin() then
self.Weapon:SetNextPrimaryFire(CurTime() + self.Secondary.Delay)
self.Weapon:SetNextSecondaryFire(CurTime() + self.Secondary.Delay)
self.Owner:PrintMessage(HUD_PRINTCENTER,"You must be admin to use that weapon")
if SERVER then
self.Owner:EmitSound(Sound("HL2Player.UseDeny"))
end
return
end
self.Weapon:SetNextPrimaryFire(CurTime() + self.Secondary.Delay)
self.Weapon:SetNextSecondaryFire(CurTime() + self.Secondary.Delay)
self.Weapon:SendWeaponAnim(ACT_VM_PRIMARYATTACK)
self.Owner:SetAnimation( PLAYER_ATTACK1 )
self.Owner:EmitSound(Sound("Weapon_Physgun.Off"))
self.Owner:EmitSound(Sound("ambient/materials/rock3.wav"))
local eyetrace = self.Owner:GetEyeTrace()
if eyetrace != nil and eyetrace.Hit and SERVER then
local targetpos = eyetrace.HitPos
self.shake = ents.Create( "env_shake" )
self.shake:SetPos( targetpos )
self.shake:SetKeyValue( "amplitude", "5" )
self.shake:SetKeyValue( "radius", "700" )
self.shake:SetKeyValue( "duration", "3" )
self.shake:SetKeyValue( "frequency", "5" )
self.shake:SetKeyValue( "spawnflags", "4" )
self.shake:Spawn()
self.shake:Activate()
self.shake:Fire( "kill", 0, 6 )
timer.Create("harpoon_prepare" .. self.Owner:EntIndex(),0.5,1,function()
if IsValid(self) and IsValid(self.Owner) then
timer.Create("harpoon_strike" .. self.Owner:EntIndex(),0.5,10,function()
if IsValid(self) and IsValid(self.Owner) then
local plyang = self.Owner:GetAngles()
plyang.pitch = -90
plyang.roll = plyang.roll
plyang.yaw = plyang.yaw
local DustAngle = plyang
local BigDust = EffectData()
BigDust:SetOrigin(targetpos)
BigDust:SetNormal(DustAngle:Forward())
BigDust:SetScale(400)
util.Effect("ThumperDust",BigDust)
self.shake:Fire( "StartShake", "", 0 )
local attacktab = {}
for k,v in RandomPairs(ents.FindInSphere(targetpos,500)) do
if IsValid(v) and (v:IsNPC() or (v:IsPlayer() and v:Alive() and v != self.Owner)) then
table.insert(attacktab,v)
end
end
if table.Random(attacktab) != nil then
local target = table.Random(attacktab)
local traceline = {}
traceline.start = target:GetPos()
traceline.endpos = traceline.start - Vector(0,0,50)
traceline.filter = function(ent) if !ent:IsWorld() then return false end end
local traceworld = util.TraceLine(traceline)
if traceworld.Hit then
target:EmitSound(Sound("physics/metal/sawblade_stick3.wav"))
target:SetShouldServerRagdoll( true )
local ent = ents.Create("prop_physics")
ent:SetModel("models/props_junk/harpoon002a.mdl")
ent:SetPos(traceworld.HitPos - Vector(0,0,10))
ent:SetAngles(Angle(-90,90,0))
ent.Impaler = true
ent.Owner = self.Owner
ent:Spawn()
ent:Activate()
ent:GetPhysicsObject():EnableMotion(false)
target.Impaled = true
target.ImpaleEnt = ent
target:SetHealth(0)
local dmginfo = DamageInfo()
dmginfo:SetDamage(10)
dmginfo:SetDamageType(DMG_CLUB)
dmginfo:SetAttacker( self.Owner )
dmginfo:SetDamageForce(Vector(0,0,10))
dmginfo:SetInflictor( self )
target:TakeDamageInfo( dmginfo )
local Angle = target:GetAngles()
Angle.pitch = -90
Angle.roll = Angle.roll
Angle.yaw = Angle.yaw
local NAngle = Angle
for i =1,6 do
local effectdata = EffectData()
effectdata:SetOrigin( target:GetPos() )
effectdata:SetNormal(NAngle:Forward())
effectdata:SetMagnitude( 1 )
effectdata:SetScale( 10 )
effectdata:SetColor( 0 )
effectdata:SetFlags( 3 )
util.Effect( "bloodspray", effectdata, true, true )
end
for i=1,30 do
local traceline2 = {}
traceline2.start = target:GetPos() + Vector(0,0,10)
traceline2.endpos = traceline2.start - (Vector((math.random()*2)-1, (math.random()*2)-1, (math.random()*2)-1)*200)
traceline2.filter = {ent,target}
local trw = util.TraceLine(traceline2)
local decpos1 = trw.HitPos + trw.HitNormal
local decpos2 = trw.HitPos - trw.HitNormal
util.Decal("Blood", decpos1, decpos2)
end
timer.Create("harpoon_rise" .. ent:EntIndex(),0.01,16,function()
if IsValid(ent) then
ent:SetPos(ent:GetPos() + Vector(0,0,4))
end
end)
if math.random(1,100) < 30 and !GetConVar("imp_nofall"):GetBool() then
timer.Create("harpoon_fall" .. ent:EntIndex(),math.random(5,10),1,function()
if IsValid(ent) then
ent:GetPhysicsObject():EnableMotion(true)
end
end)
end
if GetConVar("imp_cleanup"):GetBool() then
timer.Create("harpoon_remove" .. ent:EntIndex(),math.random(12,28),1,function()
if IsValid(ent) then
ent:Remove()
end
end)
end
undo.Create( "Harpoon" )
undo.AddEntity( ent )
undo.SetPlayer( self.Owner )
undo.SetCustomUndoText( "Undone Harpoon" )
undo.Finish()
end
end
end
end)
end
end)
end
end
end
hook.Add("CreateEntityRagdoll","CollideRagWithEnt",function(ent,ragdoll)
if IsValid(ent) and IsValid(ragdoll) and ent.Impaled and IsValid(ent.ImpaleEnt) then
ragdoll.cnstweld = constraint.Weld(ent.ImpaleEnt,ragdoll,0,0,0,false)
ragdoll.Impaled = true
ent.ImpaleEnt.IsOccupated = true
end
end)
hook.Add( "OnEntityCreated", "VJRag", function( ent )
timer.Simple(0.02,function()
if IsValid(ent) and ent.IsVJBaseCorpse then
for k,v in pairs(ents.FindInSphere(ent:GetPos(),10)) do
if IsValid(v) and v:GetClass()=="prop_physics" and v.Impaler and !v.IsOccupated then
ent.cnstweld = constraint.Weld(v,ent,0,0,0,false)
ent.Impaled = true
v.IsOccupated = true
end
end
end
end)
end)
local function PlyFixRagImp(ply,inflictor,attacker)
if SERVER and IsValid(inflictor) and inflictor:GetClass()=="impaler_xp" then
if !(ply:GetRagdollEntity()==NULL) and IsValid(ply:GetRagdollEntity()) then
ply:GetRagdollEntity():Remove()
end
end
end
hook.Add("PlayerDeath", "PlyFixRagImp",PlyFixRagImp)
Essaye de rajoutez çaRyoley à dit:Pour les personnes qui souhaites le code complet afin de m'aider, le voici :
Code:if ( SERVER ) then CreateConVar("imp_admin","0",{FCVAR_ARCHIVE,FCVAR_REPLICATED,FCVAR_SERVER_CAN_EXECUTE}) CreateConVar("imp_nofall","0",{FCVAR_ARCHIVE,FCVAR_REPLICATED,FCVAR_SERVER_CAN_EXECUTE}) CreateConVar("imp_cleanup","0",{FCVAR_ARCHIVE,FCVAR_REPLICATED,FCVAR_SERVER_CAN_EXECUTE}) AddCSLuaFile() SWEP.Weight = 5 end if ( CLIENT ) then SWEP.PrintName = "Impaler" SWEP.Author = "Hds46" SWEP.Category = "Other" SWEP.Slot = 1 SWEP.SlotPos = 2 SWEP.IconLetter = "x" SWEP.WepSelectIcon = Material("icon/icon_spear.png") SWEP.BounceWeaponIcon = false function SWEP:DrawWeaponSelection( x, y, wide, tall, alpha ) -- Set us up the texture surface.SetDrawColor( 255, 255, 255, alpha ) surface.SetMaterial( self.WepSelectIcon ) -- Lets get a sin wave to make it bounce local fsin = 0 if ( self.BounceWeaponIcon == true ) then fsin = math.sin( CurTime() * 10 ) * 5 end -- Borders y = y + 18 x = x + 15 wide = wide - 30 -- Draw that mother surface.DrawTexturedRect( x + (fsin), y - (fsin), wide-fsin*2 , ( wide / 1.8 ) + (fsin) ) -- Draw weapon info box self:PrintWeaponInfo( x + wide + 20, y + tall * 0.95, alpha ) end end ------------General Swep Info--------------- SWEP.Author = "Hds46" SWEP.Contact = "Steam" SWEP.Purpose = "Brutal weapon" SWEP.Instructions = "Left Click - Impale. \nRight Click - Groundspike Graveyard" SWEP.Spawnable = true SWEP.AdminOnly = false ----------------------------------------------- -----------------Models--------------------------- SWEP.ViewModel = "models/weapons/c_pistol.mdl" SWEP.UseHands = true SWEP.HoldType = "pistol" SWEP.WorldModel = "models/weapons/w_pistol.mdl" ----------------------------------------------- -------------Primary Fire Attributes---------------------------------------- SWEP.Primary.Delay = 0.2 SWEP.Primary.ClipSize = -1 SWEP.Primary.DefaultClip = -1 SWEP.Primary.Automatic = true SWEP.Primary.Ammo = "None" -------------End Primary Fire Attributes------------------------------------ -------------Secondary Fire Attributes------------------------------------- SWEP.Secondary.Delay = 6 SWEP.Secondary.ClipSize = -1 SWEP.Secondary.DefaultClip = -1 SWEP.Secondary.Automatic = true SWEP.Secondary.Ammo = "none" -------------End Secondary Fire Attributes-------------------------------- function SWEP:Reload() for k,v in pairs(ents.GetAll()) do if v.Impaler and v.Owner == self.Owner then v:GetPhysicsObject():EnableMotion(true) end end end function SWEP:Think() end function SWEP:Equip() end function SWEP:OnDrop() end function SWEP:Deploy() self.Weapon:SendWeaponAnim(ACT_VM_DRAW) self.Owner:GetViewModel():SetPlaybackRate(4) self:SetNextPrimaryFire( CurTime() + self.Owner:GetViewModel():SequenceDuration()/4) self:SetNextSecondaryFire( CurTime() + self.Owner:GetViewModel():SequenceDuration()/4) return true end function SWEP:DoImpactEffect( tr, nDamageType ) return true end function SWEP:PrimaryAttack() if self:GetNextPrimaryFire() < CurTime() then if GetConVar("imp_admin"):GetBool() and !self.Owner:IsAdmin() then self.Weapon:SetNextPrimaryFire(CurTime() + self.Primary.Delay) self.Weapon:SetNextSecondaryFire(CurTime() + self.Primary.Delay) self.Owner:PrintMessage(HUD_PRINTCENTER,"You must be admin to use that weapon") if SERVER then self.Owner:EmitSound(Sound("HL2Player.UseDeny")) end return end self.Weapon:SetNextPrimaryFire(CurTime() + self.Primary.Delay) self.Weapon:SetNextSecondaryFire(CurTime() + self.Primary.Delay) self.Weapon:SendWeaponAnim(ACT_VM_PRIMARYATTACK) self.Owner:SetAnimation( PLAYER_ATTACK1 ) local eyetrace = self.Owner:GetEyeTrace() local target = eyetrace.Entity if eyetrace != nil and eyetrace.Hit and SERVER then if IsValid(target) and (target:IsNPC() or target:IsPlayer()) then local traceline = {} traceline.start = target:GetPos() traceline.endpos = traceline.start - Vector(0,0,50) traceline.filter = function(ent) if !ent:IsWorld() then return false end end local traceworld = util.TraceLine(traceline) if traceworld.Hit then target:EmitSound(Sound("physics/metal/sawblade_stick3.wav")) target:SetShouldServerRagdoll( true ) local ent = ents.Create("prop_physics") ent:SetModel("models/props_junk/harpoon002a.mdl") ent:SetPos(traceworld.HitPos - Vector(0,0,10)) ent:SetAngles(Angle(-90,90,0)) ent.Impaler = true ent.Owner = self.Owner ent:Spawn() ent:Activate() ent:GetPhysicsObject():EnableMotion(false) target.Impaled = true target.ImpaleEnt = ent target:SetHealth(0) local dmginfo = DamageInfo() dmginfo:SetDamage(10) dmginfo:SetDamageType(DMG_CLUB) dmginfo:SetAttacker( self.Owner ) dmginfo:SetDamageForce(Vector(0,0,10)) dmginfo:SetInflictor( self ) target:TakeDamageInfo( dmginfo ) local Angle = target:GetAngles() Angle.pitch = -90 Angle.roll = Angle.roll Angle.yaw = Angle.yaw local NAngle = Angle for i =1,6 do local effectdata = EffectData() effectdata:SetOrigin( target:GetPos() ) effectdata:SetNormal(NAngle:Forward()) effectdata:SetMagnitude( 1 ) effectdata:SetScale( 10 ) effectdata:SetColor( 0 ) effectdata:SetFlags( 3 ) util.Effect( "bloodspray", effectdata, true, true ) end for i=1,30 do local traceline2 = {} traceline2.start = target:GetPos() + Vector(0,0,10) traceline2.endpos = traceline2.start - (Vector((math.random()*2)-1, (math.random()*2)-1, (math.random()*2)-1)*200) traceline2.filter = {ent,target} local trw = util.TraceLine(traceline2) local decpos1 = trw.HitPos + trw.HitNormal local decpos2 = trw.HitPos - trw.HitNormal util.Decal("Blood", decpos1, decpos2) end timer.Create("harpoon_rise" .. ent:EntIndex(),0.01,16,function() if IsValid(ent) then ent:SetPos(ent:GetPos() + Vector(0,0,4)) end end) if math.random(1,100) < 30 and !GetConVar("imp_nofall"):GetBool() then timer.Create("harpoon_fall" .. ent:EntIndex(),math.random(5,10),1,function() if IsValid(ent) then ent:GetPhysicsObject():EnableMotion(true) end end) end if GetConVar("imp_cleanup"):GetBool() then timer.Create("harpoon_remove" .. ent:EntIndex(),math.random(12,28),1,function() if IsValid(ent) then ent:Remove() end end) end undo.Create( "Harpoon" ) undo.AddEntity( ent ) undo.SetPlayer( self.Owner ) undo.SetCustomUndoText( "Undone Harpoon" ) undo.Finish() return end end end if SERVER then self.Owner:EmitSound(Sound("Buttons.snd14")) end end end function SWEP:SecondaryAttack() if self:GetNextSecondaryFire() < CurTime() then if GetConVar("imp_admin"):GetBool() and !self.Owner:IsAdmin() then self.Weapon:SetNextPrimaryFire(CurTime() + self.Secondary.Delay) self.Weapon:SetNextSecondaryFire(CurTime() + self.Secondary.Delay) self.Owner:PrintMessage(HUD_PRINTCENTER,"You must be admin to use that weapon") if SERVER then self.Owner:EmitSound(Sound("HL2Player.UseDeny")) end return end self.Weapon:SetNextPrimaryFire(CurTime() + self.Secondary.Delay) self.Weapon:SetNextSecondaryFire(CurTime() + self.Secondary.Delay) self.Weapon:SendWeaponAnim(ACT_VM_PRIMARYATTACK) self.Owner:SetAnimation( PLAYER_ATTACK1 ) self.Owner:EmitSound(Sound("Weapon_Physgun.Off")) self.Owner:EmitSound(Sound("ambient/materials/rock3.wav")) local eyetrace = self.Owner:GetEyeTrace() if eyetrace != nil and eyetrace.Hit and SERVER then local targetpos = eyetrace.HitPos self.shake = ents.Create( "env_shake" ) self.shake:SetPos( targetpos ) self.shake:SetKeyValue( "amplitude", "5" ) self.shake:SetKeyValue( "radius", "700" ) self.shake:SetKeyValue( "duration", "3" ) self.shake:SetKeyValue( "frequency", "5" ) self.shake:SetKeyValue( "spawnflags", "4" ) self.shake:Spawn() self.shake:Activate() self.shake:Fire( "kill", 0, 6 ) timer.Create("harpoon_prepare" .. self.Owner:EntIndex(),0.5,1,function() if IsValid(self) and IsValid(self.Owner) then timer.Create("harpoon_strike" .. self.Owner:EntIndex(),0.5,10,function() if IsValid(self) and IsValid(self.Owner) then local plyang = self.Owner:GetAngles() plyang.pitch = -90 plyang.roll = plyang.roll plyang.yaw = plyang.yaw local DustAngle = plyang local BigDust = EffectData() BigDust:SetOrigin(targetpos) BigDust:SetNormal(DustAngle:Forward()) BigDust:SetScale(400) util.Effect("ThumperDust",BigDust) self.shake:Fire( "StartShake", "", 0 ) local attacktab = {} for k,v in RandomPairs(ents.FindInSphere(targetpos,500)) do if IsValid(v) and (v:IsNPC() or (v:IsPlayer() and v:Alive() and v != self.Owner)) then table.insert(attacktab,v) end end if table.Random(attacktab) != nil then local target = table.Random(attacktab) local traceline = {} traceline.start = target:GetPos() traceline.endpos = traceline.start - Vector(0,0,50) traceline.filter = function(ent) if !ent:IsWorld() then return false end end local traceworld = util.TraceLine(traceline) if traceworld.Hit then target:EmitSound(Sound("physics/metal/sawblade_stick3.wav")) target:SetShouldServerRagdoll( true ) local ent = ents.Create("prop_physics") ent:SetModel("models/props_junk/harpoon002a.mdl") ent:SetPos(traceworld.HitPos - Vector(0,0,10)) ent:SetAngles(Angle(-90,90,0)) ent.Impaler = true ent.Owner = self.Owner ent:Spawn() ent:Activate() ent:GetPhysicsObject():EnableMotion(false) target.Impaled = true target.ImpaleEnt = ent target:SetHealth(0) local dmginfo = DamageInfo() dmginfo:SetDamage(10) dmginfo:SetDamageType(DMG_CLUB) dmginfo:SetAttacker( self.Owner ) dmginfo:SetDamageForce(Vector(0,0,10)) dmginfo:SetInflictor( self ) target:TakeDamageInfo( dmginfo ) local Angle = target:GetAngles() Angle.pitch = -90 Angle.roll = Angle.roll Angle.yaw = Angle.yaw local NAngle = Angle for i =1,6 do local effectdata = EffectData() effectdata:SetOrigin( target:GetPos() ) effectdata:SetNormal(NAngle:Forward()) effectdata:SetMagnitude( 1 ) effectdata:SetScale( 10 ) effectdata:SetColor( 0 ) effectdata:SetFlags( 3 ) util.Effect( "bloodspray", effectdata, true, true ) end for i=1,30 do local traceline2 = {} traceline2.start = target:GetPos() + Vector(0,0,10) traceline2.endpos = traceline2.start - (Vector((math.random()*2)-1, (math.random()*2)-1, (math.random()*2)-1)*200) traceline2.filter = {ent,target} local trw = util.TraceLine(traceline2) local decpos1 = trw.HitPos + trw.HitNormal local decpos2 = trw.HitPos - trw.HitNormal util.Decal("Blood", decpos1, decpos2) end timer.Create("harpoon_rise" .. ent:EntIndex(),0.01,16,function() if IsValid(ent) then ent:SetPos(ent:GetPos() + Vector(0,0,4)) end end) if math.random(1,100) < 30 and !GetConVar("imp_nofall"):GetBool() then timer.Create("harpoon_fall" .. ent:EntIndex(),math.random(5,10),1,function() if IsValid(ent) then ent:GetPhysicsObject():EnableMotion(true) end end) end if GetConVar("imp_cleanup"):GetBool() then timer.Create("harpoon_remove" .. ent:EntIndex(),math.random(12,28),1,function() if IsValid(ent) then ent:Remove() end end) end undo.Create( "Harpoon" ) undo.AddEntity( ent ) undo.SetPlayer( self.Owner ) undo.SetCustomUndoText( "Undone Harpoon" ) undo.Finish() end end end end) end end) end end end hook.Add("CreateEntityRagdoll","CollideRagWithEnt",function(ent,ragdoll) if IsValid(ent) and IsValid(ragdoll) and ent.Impaled and IsValid(ent.ImpaleEnt) then ragdoll.cnstweld = constraint.Weld(ent.ImpaleEnt,ragdoll,0,0,0,false) ragdoll.Impaled = true ent.ImpaleEnt.IsOccupated = true end end) hook.Add( "OnEntityCreated", "VJRag", function( ent ) timer.Simple(0.02,function() if IsValid(ent) and ent.IsVJBaseCorpse then for k,v in pairs(ents.FindInSphere(ent:GetPos(),10)) do if IsValid(v) and v:GetClass()=="prop_physics" and v.Impaler and !v.IsOccupated then ent.cnstweld = constraint.Weld(v,ent,0,0,0,false) ent.Impaled = true v.IsOccupated = true end end end end) end) local function PlyFixRagImp(ply,inflictor,attacker) if SERVER and IsValid(inflictor) and inflictor:GetClass()=="impaler_xp" then if !(ply:GetRagdollEntity()==NULL) and IsValid(ply:GetRagdollEntity()) then ply:GetRagdollEntity():Remove() end end end hook.Add("PlayerDeath", "PlyFixRagImp",PlyFixRagImp)
function SWEP:DrawWorldModel()
end
function SWEP:DrawWorldModelTranslucent()
end
À la place de ça ? :DrTortue à dit:Essaye ça
Code:function SWEP:DrawWorldModel() end function SWEP:DrawWorldModelTranslucent() end
SWEP.ViewModel = ""
SWEP.HoldType = "gmod_hands"
SWEP.WorldModel = ""
Non rajouteRyoley à dit:À la place de ça ? :
Code:SWEP.ViewModel = "" SWEP.HoldType = "gmod_hands" SWEP.WorldModel = ""
D'accord je rajoute ça à la fin du code et je laisse les précedentes modifs ? ^^DrTortue à dit:Non rajoute
SWEP.ViewModel = ""
SWEP.UseHands = true
SWEP.HoldType = "none"
SWEP.WorldModel = ""
D'accord ça marche je test çaDrTortue à dit:
function SWEP:Deploy() if SERVER and IsValid(self.Owner) then self.Owner:DrawViewModel(false) end return true
end
D'accord, je vais essayer ça et je te tiens au courant.DrTortue à dit:Rajoute aussi ça sinon je vais dl l'addons et faire des test de mon cotéCode:function SWEP:Deploy() if SERVER and IsValid(self.Owner) then self.Owner:DrawViewModel(false) end return true end
SWEP.ViewModel = ""
SWEP.UseHands = true
SWEP.HoldType = "none"
SWEP.WorldModel = ""
Oh ça marche maintenant ! Je te remercie énormément !DrTortue à dit:@Ryoley Voilà tu remplace tout ce que ta par le pastebin et normalement c'est bon
https://pastebin.com/raw/w0cKWR0Z