GMAD6JºTTTT - Medkit { "description": "Description", "type": "weapon", "tags": [ "fun", "realism" ] }Author Namegamemodes/terrortown/entities/weapons/weapon_ttt_medkit.luaÆ-Üv AddCSLuaFile() SWEP.PrintName = "Medkit" SWEP.Author = "robotboy655 & MaxOfS2D & Roy301" SWEP.Purpose = "Heal people with your primary attack, or yourself with the secondary." //TTT Convertion Code \\ SWEP.Base = "weapon_tttbase" SWEP.Kind = WEAPON_EQUIP1 SWEP.CanBuy = { ROLE_TRAITOR } SWEP.AutoSpawnable = false SWEP.InLoadoutFor = nil SWEP.AllowDrop = true SWEP.IsSilent = false SWEP.NoSights = true if CLIENT then -- Path to the icon material SWEP.Icon = "VGUI/ttt/icon_health" -- Text shown in the equip menu SWEP.EquipMenuData = { type = "Medkit", desc = "Left Click: Heal people! Right Click: Heal Yourself! Made by Roy301" }; end if SERVER then resource.AddFile("materials/VGUI/ttt/icon_health.vmt") end //TTT Convertion Code \\ SWEP.Spawnable = true SWEP.UseHands = true SWEP.ViewModel = "models/weapons/c_medkit.mdl" SWEP.WorldModel = "models/weapons/w_medkit.mdl" SWEP.ViewModelFOV = 54 SWEP.Slot = 5 SWEP.SlotPos = 3 SWEP.Primary.ClipSize = 100 SWEP.Primary.DefaultClip = 100 SWEP.Primary.Automatic = false SWEP.Primary.Ammo = "none" SWEP.Secondary.ClipSize = -1 SWEP.Secondary.DefaultClip = -1 SWEP.Secondary.Automatic = false SWEP.Secondary.Ammo = "none" SWEP.HealAmount = 20 -- Maximum heal amount per use SWEP.MaxAmmo = 100 -- Maxumum ammo local HealSound = Sound( "items/smallmedkit1.wav" ) local DenySound = Sound( "items/medshotno1.wav" ) function SWEP:Initialize() self:SetHoldType( "slam" ) if ( CLIENT ) then return end timer.Create( "medkit_ammo" .. self:EntIndex(), 1, 0, function() if ( self:Clip1() < self.MaxAmmo ) then self:SetClip1( math.min( self:Clip1() + 2, self.MaxAmmo ) ) end end ) end function SWEP:PrimaryAttack() if ( CLIENT ) then return end local tr = util.TraceLine( { start = self.Owner:GetShootPos(), endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * 64, filter = self.Owner } ) local ent = tr.Entity local need = self.HealAmount if ( IsValid( ent ) ) then need = math.min( ent:GetMaxHealth() - ent:Health(), self.HealAmount ) end if ( IsValid( ent ) && self:Clip1() >= need && ( ent:IsPlayer() || ent:IsNPC() ) && ent:Health() < 100 ) then self:TakePrimaryAmmo( need ) ent:SetHealth( math.min( ent:GetMaxHealth(), ent:Health() + need ) ) ent:EmitSound( HealSound ) self:SendWeaponAnim( ACT_VM_PRIMARYATTACK ) self:SetNextPrimaryFire( CurTime() + self:SequenceDuration() + 0.5 ) self.Owner:SetAnimation( PLAYER_ATTACK1 ) -- Even though the viewmodel has looping IDLE anim at all times, we need this to make fire animation work in multiplayer timer.Create( "weapon_idle" .. self:EntIndex(), self:SequenceDuration(), 1, function() if ( IsValid( self ) ) then self:SendWeaponAnim( ACT_VM_IDLE ) end end ) else self.Owner:EmitSound( DenySound ) self:SetNextPrimaryFire( CurTime() + 1 ) end end function SWEP:SecondaryAttack() if ( CLIENT ) then return end local ent = self.Owner local need = self.HealAmount if ( IsValid( ent ) ) then need = math.min( ent:GetMaxHealth() - ent:Health(), self.HealAmount ) end if ( IsValid( ent ) && self:Clip1() >= need && ent:Health() < ent:GetMaxHealth() ) then self:TakePrimaryAmmo( need ) ent:SetHealth( math.min( ent:GetMaxHealth(), ent:Health() + need ) ) ent:EmitSound( HealSound ) self:SendWeaponAnim( ACT_VM_PRIMARYATTACK ) self:SetNextSecondaryFire( CurTime() + self:SequenceDuration() + 0.5 ) self.Owner:SetAnimation( PLAYER_ATTACK1 ) timer.Create( "weapon_idle" .. self:EntIndex(), self:SequenceDuration(), 1, function() if ( IsValid( self ) ) then self:SendWeaponAnim( ACT_VM_IDLE ) end end ) else ent:EmitSound( DenySound ) self:SetNextSecondaryFire( CurTime() + 1 ) end end function SWEP:OnRemove() timer.Stop( "medkit_ammo" .. self:EntIndex() ) timer.Stop( "weapon_idle" .. self:EntIndex() ) end function SWEP:Holster() timer.Stop( "weapon_idle" .. self:EntIndex() ) return true end function SWEP:CustomAmmoDisplay() self.AmmoDisplay = self.AmmoDisplay or {} self.AmmoDisplay.Draw = true self.AmmoDisplay.PrimaryClip = self:Clip1() return self.AmmoDisplay end ¬" V