• HELP NEEDED WITH CUSTOM ZOMBIE
    5 replies, posted
[CODE]CLASS.Name = "Predator Zombie" CLASS.TranslationName = "class_prdator" CLASS.Description = "description_predator" CLASS.Help = "controls_predator_zombie" CLASS.Model = Model("models/player/nethead/warrior_new.mdl") --Model("models/Zombie/Fast.mdl") --models/player/zombie_fast.mdl CLASS.Wave = 1/2 CLASS.Revives = true CLASS.Infliction = 0.5 -- We auto-unlock this class if 50% of humans are dead regardless of what wave it is. CLASS.Health = 100 CLASS.Speed = 280 CLASS.JumpPower = 120 CLASS.SWEP = "weapon_zs_predator" CLASS.Points = 4 CLASS.ModelScale = 0.8 CLASS.Hull = {Vector(-16, -16, 0), Vector(16, 16, 58)} CLASS.HullDuck = {Vector(-16, -16, 0), Vector(16, 16, 32)} CLASS.ViewOffset = Vector(0, 0, 50) CLASS.ViewOffsetDucked = Vector(0, 0, 24) CLASS.PainSounds = {"NPC_FastZombie.Pain"} CLASS.DeathSounds = {"NPC_FastZombie.Die"} CLASS.VoicePitch = 0.55 CLASS.NoFallDamage = true CLASS.NoFallSlowdown = true hook.Add( "SetupMove", "Cloak Crouch", function( ply, mv, cmd ) if ( player_manager.GetPlayerClass( ply ) == "class_predator" ) then if ( bit.band( cmd:GetButtons(), IN_DUCK ) == IN_DUCK ) then ply:SetMaterial( "Models/effects/vol_light001" ) else ply:SetMaterial( "" ) end end end ) hook.Add( "PlayerDeath", "Tougher_per_kill", function( victim, inflictor, attacker ) if !( IsValid( victim ) or IsValid( attacker ) ) then return end if !( victim:IsPlayer() or attacker:IsPlayer() ) then return end if victim == attacker then return end if attacker:Team() == TEAM_HUMAN and victim:Team() == TEAM_UNDEAD then SetMaxHealth(attacker, 0) SetMaxArmor(attacker, 0) end if ( player_manager.GetPlayerClass( ply ) == "class_predator" ) == attacker:Team() == TEAM_UNDEAD and victim:Team() == TEAM_HUMAN then SetMaxHealth(attacker, 100) SetMaxArmor(attacker, 50) end end ) function CLASS:Move(pl, mv) local wep = pl:GetActiveWeapon() if wep.Move and wep:Move(mv) then return true end if mv:GetForwardSpeed() <= 0 then mv:SetMaxSpeed(math.min(mv:GetMaxSpeed(), 90)) mv:SetMaxClientSpeed(math.min(mv:GetMaxClientSpeed(), 90)) end end local mathrandom = math.random local StepLeftSounds = { "npc/fast_zombie/foot1.wav", "npc/fast_zombie/foot2.wav" } local StepRightSounds = { "npc/fast_zombie/foot3.wav", "npc/fast_zombie/foot4.wav" } function CLASS:PlayerFootstep(pl, vFootPos, iFoot, strSoundName, fVolume, pFilter) if iFoot == 0 then pl:EmitSound(StepLeftSounds[mathrandom(#StepLeftSounds)], 70) else pl:EmitSound(StepRightSounds[mathrandom(#StepRightSounds)], 70) end return true end --[[function CLASS:PlayerFootstep(pl, vFootPos, iFoot, strSoundName, fVolume, pFilter) if iFoot == 0 then pl:EmitSound("NPC_FastZombie.GallopLeft") else pl:EmitSound("NPC_FastZombie.GallopRight") end return true end]] function CLASS:PlayerStepSoundTime(pl, iType, bWalking) if iType == STEPSOUNDTIME_NORMAL or iType == STEPSOUNDTIME_WATER_FOOT then return 450 - pl:GetVelocity():Length() elseif iType == STEPSOUNDTIME_ON_LADDER then return 400 elseif iType == STEPSOUNDTIME_WATER_KNEE then return 550 end return 250 end function CLASS:CalcMainActivity(pl, velocity) local wep = pl:GetActiveWeapon() if not wep:IsValid() or not wep.GetClimbing then return end if wep:GetClimbing() then pl.CalcIdeal = ACT_ZOMBIE_CLIMB_UP return true elseif wep:GetPounceTime() > 0 then pl.CalcIdeal = ACT_ZOMBIE_LEAP_START return true end local speed = velocity:Length2D() if not pl:OnGround() or pl:WaterLevel() >= 3 then pl.CalcIdeal = ACT_ZOMBIE_LEAPING elseif speed <= 0.5 and wep:IsRoaring() then pl.CalcSeqOverride = pl:LookupSequence("menu_zombie_01") else pl.CalcIdeal = ACT_HL2MP_RUN_ZOMBIE_FAST end return true end function CLASS:UpdateAnimation(pl, velocity, maxseqgroundspeed) local wep = pl:GetActiveWeapon() if not wep:IsValid() or not wep.GetClimbing then return end if wep:GetSwinging() then if not pl.PlayingFZSwing then pl.PlayingFZSwing = true pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_GMOD_GESTURE_RANGE_FRENZY) end elseif pl.PlayingFZSwing then pl.PlayingFZSwing = false pl:AnimResetGestureSlot(GESTURE_SLOT_ATTACK_AND_RELOAD) --pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_GMOD_GESTURE_RANGE_FRENZY, true) end if wep:GetClimbing() then local vel = pl:GetVelocity() local speed = vel:Length() if speed > 8 then pl:SetPlaybackRate(math.Clamp(speed / 160, 0, 1) * (vel.z < 0 and -1 or 1)) else pl:SetPlaybackRate(0) end return true end if wep:GetPounceTime() > 0 then pl:SetPlaybackRate(0.25) if not pl.m_PrevFrameCycle then pl.m_PrevFrameCycle = true pl:SetCycle(0) end return true elseif pl.m_PrevFrameCycle then pl.m_PrevFrameCycle = nil end local speed = velocity:Length2D() if not pl:OnGround() or pl:WaterLevel() >= 3 then pl:SetPlaybackRate(1) if pl:GetCycle() >= 1 then pl:SetCycle(pl:GetCycle() - 1) end return true end if speed <= 0.5 and wep:IsRoaring() then pl:SetPlaybackRate(0) pl:SetCycle(math.Clamp(1 - (wep:GetRoarEndTime() - CurTime()) / wep.RoarTime, 0, 1) * 0.9) return true end end function CLASS:DoAnimationEvent(pl, event, data) if event == PLAYERANIMEVENT_ATTACK_PRIMARY then return ACT_INVALID end end if SERVER then function CLASS:ReviveCallback(pl, attacker, dmginfo) if not pl.Revive and not dmginfo:GetInflictor().IsMelee and dmginfo:GetDamageType() ~= DMG_BLAST and dmginfo:GetDamageType() ~= DMG_BURN and (pl:LastHitGroup() == HITGROUP_LEFTLEG or pl:LastHitGroup() == HITGROUP_RIGHTLEG) and math.random(3) == 1 then local classtable = GAMEMODE.ZombieClasses["Fast Zombie Legs"] if classtable then pl:RemoveStatus("overridemodel", false, true) local deathclass = pl.DeathClass or pl:GetZombieClass() pl:SetZombieClass(classtable.Index) pl:DoHulls(classtable.Index, TEAM_UNDEAD) pl.DeathClass = deathclass pl:EmitSound("physics/flesh/flesh_bloody_break.wav", 100, 75) pl:Gib() pl.Gibbed = nil timer.Simple(0, function() if IsValid(pl) then pl:SecondWind() end end) return true end end return false end end if SERVER then return end CLASS.Icon = "zombiesurvival/killicons/fastzombie_hd" function CLASS:CreateMove(pl, cmd) local wep = pl:GetActiveWeapon() if wep:IsValid() and wep.IsPouncing then if wep.m_ViewAngles and wep:IsPouncing() then local maxdiff = FrameTime() * 20 local mindiff = -maxdiff local originalangles = wep.m_ViewAngles local viewangles = cmd:GetViewAngles() local diff = math.AngleDifference(viewangles.yaw, originalangles.yaw) if diff > maxdiff or diff < mindiff then viewangles.yaw = math.NormalizeAngle(originalangles.yaw + math.Clamp(diff, mindiff, maxdiff)) end wep.m_ViewAngles = viewangles cmd:SetViewAngles(viewangles) --[[elseif wep:IsClimbing() then local buttons = cmd:GetButtons() if bit.band(buttons, IN_DUCK) ~= 0 then cmd:SetButtons(buttons - IN_DUCK) end]] end end end [/CODE] [editline]13th September 2015[/editline] Could someone please help me make these two hooks work? [CODE] hook.Add( "SetupMove", "Cloak Crouch", function( ply, mv, cmd ) if ( player_manager.GetPlayerClass( ply ) == "class_predator" ) then if ( bit.band( cmd:GetButtons(), IN_DUCK ) == IN_DUCK ) then ply:SetMaterial( "Models/effects/vol_light001" ) else ply:SetMaterial( "" ) end end end )[/CODE] [CODE] hook.Add( "PlayerDeath", "Tougher_per_kill", function( victim, inflictor, attacker ) if !( IsValid( victim ) or IsValid( attacker ) ) then return end if !( victim:IsPlayer() or attacker:IsPlayer() ) then return end if victim == attacker then return end if attacker:Team() == TEAM_HUMAN and victim:Team() == TEAM_UNDEAD then SetMaxHealth(attacker, 0) SetMaxArmor(attacker, 0) end if ( player_manager.GetPlayerClass( ply ) == "class_predator" ) == attacker:Team(
What are you trying to achieve? What errors are you getting?
[QUOTE=code_gs;48677725]What are you trying to achieve? What errors are you getting?[/QUOTE] No errors I want to make it so when I crouch with that class of zombie that it will turn to that material. And then the other hook i'm trying to make it so it gains health and armor per kill but both hooks aren't doing anything. Both hooks aren't working for some reason. [editline]13th September 2015[/editline] I also need to make it so when it turns to that material that it will go slower.
I'm also willing to pay someone for this.
[QUOTE=G6Darkminion;48680910]I'm also willing to pay someone for this.[/QUOTE] :excited:
Well no one helped but I coded it [CODE]hook.Add( "SetupMove", "Cloak Crouch", function( ply, mv, cmd ) print("it works") if ( player_manager.GetPlayerClass( ply ) == "class_predator" ) then ply:SetCrouchedWalkSpeed( 0.3 ) --CROUCHLINE CROUCHLINE CROUCHLINE CROUCHLINE CROUCHLINE if ( bit.band( cmd:GetButtons(), IN_DUCK ) == IN_DUCK ) then ply:SetMaterial( "Models/effects/vol_light001" ) else ply:SetMaterial( "" ) end end end ) hook.Add( "PlayerDeath", "Tougher_per_kill", function( victim, inflictor, attacker ) if !( IsValid( victim ) or IsValid( attacker ) ) then return end if !( victim:IsPlayer() or attacker:IsPlayer() ) then return end if victim == attacker then return end if attacker:Team() == TEAM_HUMAN and victim:Team() == TEAM_UNDEAD then attacker:SetMaxHealth(0) end if ( player_manager.GetPlayerClass( ply ) == "class_predator" ) == attacker:Team() and victim:Team() == TEAM_HUMAN then attacker:SetHealth(attacker:Health() + 100) attacker:SetArmor(50) attacker:SetWalkSpeed(attacker:GetWalkSpeed() + 25) end end )[/CODE]
Sorry, you need to Log In to post a reply to this thread.