droscoe Posted July 3, 2016 Sorry this is a bit long, I figured I'd help YOU help me by adequately describing my issue and supplying my code. I've read article after article, and have learned a lot recently, I've done my homework and this is my last resort. Hello, I'm currently working on a chainsaw zombie. I know one exists on Realm667, but I've taken the liberty to make a 'better one'. I have figured out how to do this, and got it working in-game. It plays my new chainsaw sounds, but I'm having some issues with looping, stopping, and switching sounds. I have a chainsaw 'idle' sound, chainsaw 'revved up' sound, and chainsaw 'hit' sound. The 'hit' sound has no problems. SNDINFOchainsawzombie/idle idle_1 chainsawzombie/rev rev_1 chainsawzombie/hit sawing_1 chainsawzombie/death shutoff DECORATEACTOR ChainsawZombie 3204 { Health 30 Radius 20 Height 56 Speed 25 MeleeDamage 1 PainChance 200 MONSTER +FLOORCLIP Obituary "%o was sliced by a madman zombie with a chainsaw!" SeeSound "grunt/sight" MeleeSound "chainsawzombie/hit" PainSound "grunt/pain" DeathSound "grunt/death" ActiveSound "grunt/active" DropItem Chainsaw States { Spawn: CHAN A 4 A_Look CHAN A 4 CHAN A 4 A_Look CHAN B 4 CHAN B 4 A_Look CHAN B 4 Loop See: CHAN A 4 A_Chase CHAN A 4 A_Chase CHAN B 0 A_PlaySound("chainsawzombie/rev",0,1,ATTN_IDLE) CHAN B 4 A_Chase CHAN B 4 A_Chase CHAN C 0 CHAN C 4 A_Chase CHAN C 4 A_Chase CHAN D 0 CHAN D 4 A_Chase CHAN D 4 A_Chase CHAN A 0 Loop Melee: CHAN E 1 A_FaceTarget CHAN F 3 A_MeleeAttack CHAN F 4 Goto See Pain: CHAN G 5 CHAN G 3 A_Pain Goto See Death: CHAN H 5 A_StopSound(0) CHAN I 5 A_Scream CHAN J 5 A_Fall CHAN KLM 5 A_PlaySound("chainsawzombie/death",1,0,ATTN_IDLE) CHAN N -1 Stop XDeath: CHAN O 5 A_StopSound CHAN P 5 A_XScream CHAN Q 5 A_Fall CHAN RSTUV 5 CHAN W -1 Stop Raise: CHAN NMLKJIH 5 Goto See } }I have a few questions. I'll admit upfront that I don't exactly understand everything perfectly, so go easy on me. Clearly I'm trying to learn. 1) My chainsaw 'rev' sound loops, yes, but it is overlapping itself and creates a droning sound. It just loops over itself. I want it to play through once, and loop once it finishes. Is this just a timing issue? 2) Because of the looping, if I kill the zombie the first instance of 'rev' sound stops, but the subsequent instances of 'rev' sound keeps playing even after he's dead laying on the ground. 3) When he attacks me, or if I damage him (not kill him), his 'rev' sound begins again each time and once again, starts playing over itself multiple times. This is because his MELEE and PAIN properties have "Goto See" at the bottom of them right? Which starts the sound again? Is Goto See necessary? 4) The chainsaw "shutoff" sound, or death sound, doesn't play when he dies. Why is this? I set it to play in his DEATH state. I'm confused. Here is my goal. I have looked into A_CheckSight but don't know if I could implement this. >Zombie spawns with no sound playing >When zombie sees you, he starts playing the chainsaw 'rev' sound and obviously starts to pursue you. >If you leave his line of sight, the 'rev' sound will play out until its finished, but only the chainsaw 'idle' sound will play. (He can't see you, so he isn't throttling the chainsaw..that's the logic) >Once he sees you again, you come back in his line of sight, he revs up the chainsaw again. It seems like I need a second kind of "See" actor STATE to use. I need two STATES, one that plays a certain sound when you're in his line of sight, and a second STATE that plays a different sound when you're out of line of sight. I have researched quite a bit. I haven't come across anything that indicates that I could do this. If its not possible, then my second best alternative is simple. I would simply want the 'rev' sound to play out completely (its about 7 seconds) and loop indefinitely until he is killed. If I can't have a second idle sound when youre not in his line of sight, so be it. I apologize for the length. I appreciate your time. Dustin 0 Share this post Link to post
scifista42 Posted July 3, 2016 The problem I can see with your code is that you are using the parameters of A_PlaySound in a nonsensical way that you clearly didn't intend. The sensible way would be to write just A_PlaySound("somesoundname"). It would solve both the problem of some sounds looping over themselves and some sounds not playing at all. I can also imagine a solution for the 2 See states depending on whether there is line of sight between the monster and the player, involving calling A_CheckSight after each step / every other step / some fixed number of steps. I'd like you to clarify the intended looping period of the "rev" and "idle" sounds. Is it 8 tics (the duration of a single walking animation frame) or 32 tics (the duration of the entire walking animation)? If the former, you'd need to call A_PlaySound after every 8 tics, in each of the frames with duration 0. 0 Share this post Link to post
droscoe Posted July 3, 2016 Thank you for your response. Well, the rev sound is about 7seconds long. So the looping period SHOULD be the full animation, right? The idle, however, is a short 0.5second clip that was made to repeat but sound seamless. But, I can easily revert to a longer idle sound clip if need be. If I understand you correctly, then I believe the rev sound should play over the entire animation frame, 32 tics. But, I must admit I'm still wrapping my head around this subject. Do you have a suggestion? Again, the rev sound is 7 second long, and the idle sound can be whatever length I want. I have experience with sound editing so the idle is easy to make loop seamlessly any length. Currently, it's a 0.5 second long clip. Don't the sound clip lengths play an important role in how many tics I play then in the animation frame? Thank you. Dustin 0 Share this post Link to post
droscoe Posted July 5, 2016 I finished to chainsaw zombie. Couldn't pull of what I wanted exactly, but I'm happy nonetheless. +New custom chainsaw engine start sound, he pauses as he starts the engine then starts to chase you +New custom chainsaw engine running sound +New custom engine die sound when he is killed. https://youtu.be/Q93P2KaTjJ0 0 Share this post Link to post
HavoX Posted July 5, 2016 A_MeleeAttack has been deprecated and should not be used unless you're aiming for backward-compatibility with older mods. You should consider using A_CustomMeleeAttack instead. Here's what the melee state should look like:Melee: CHAN E 1 A_FaceTarget CHAN F 3 A_CustomMeleeAttack(1,"chainsawzombie/hit") CHAN F 4 Goto See 0 Share this post Link to post