Mavrickindigo's Character Creation Questions (First Post updated 12/19/07)

Started by Mavrickindigo, December 17, 2007, 02:38:22 AM

Previous topic - Next topic

Mavrickindigo

I decided that I should just post all of my questions in one thread in order to not clog up the forums with questions.

1. So anyway I'm making a character and got a projectile to work. I want to know how to make a projectile travel across the screen until it disappears from view, even if it hits an opponent. Right now it pushes the other character back, even when I disabled "playerpush" My code can be seen in a later post


2. I Have no idea how8 to code in a helper. the Scrtl doc doesn't really help and Fighter Factory's helper add functions added a lot of code in a state i was not using so I need to know what I'm looking at and how to build a basic helper that moves forward from my character's feet across the screen, pushing enemies back, but allowing them to run toward my character if they chose, albeit with a lower velocity. *NEW* I attempted to make up a code for the helper but I'm sure its seriously wrong. Please give it a look and tell me what the heck I'm doing wrong.
Spoiler (click to show)
; Gust
; CNS difficulty: easy
[StateDef 210]
type = S
movetype= A
physics = S
juggle  = 1
velset = 0,0
ctrl = 0
anim = 210
poweradd = 100

[State 210, Helper]
type = Helper
trigger1 = animelem = 1
ID = 211
pos = 0,0
postype = p1
stateno = 211
helpertype = normal
name = "Wind"
keyctrl = 0
ownpal = 1
supermovetime = 1

[State 210, end]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
;Wind Create
[Statedef 211]
type = S
movetype = A
Physics = S
Juggle = 1
velset = 0,0
anim = 211
poweradd = 0
sprpriority = 0

[State 211, 1]
type = changestate
trigger1 = time = 1
value = 212

;--------------------------------------------------------------------------
;Wind Push
[Statedef 212]
type = S
movetype = A
Physics = S
Juggle = 1
velset 10, 0
anim =211
poweradd = 0
sprpriority = 0

[State 212, PlayerPush]
type = PlayerPush
trigger1 = time = 0
value = 1

[State 212, DestroySelf]
type = DestroySelf
trigger1 = animtime = 10

[State 212, changestate]
type = changestate
trigger1 = animtime = 10
value = 0

3. I want to build an intro where my character flies in from above the screen, lands, and does a pose. I tried copying some code from a Mega Man X character because the concept was the same, but when I did it didn't work. How should I go about doing this from scratch? What triggers and whatnot do I need to be able to do this?*NEW*I was able to change around the coding a bit to make it work on my character but he comes in way too fast. Whenever I try to make him fly in slower, he stops in the air. In the following code, what do I need to fix?

4. I made a diving attack from the air where my character flies down toward the ground. I made both collisions on his entire body, but he just bumps into the enemy without doing any damage. The code is also farther ahead in this thread if you'd like to help.

5. The sound I put it makes a garbled noise before playing. Also how do I stop a sound without muting the whole channel?

Cyanide

projremove = 0

The docs are your friends. Check them.


In M.U.G.E.N there is no magic button

They say a little knowledge is a dangerous thing, but it's not one half so bad as a lot of ignorance.

Mavrickindigo

Is there one that lists all of the things? I've been looking for that one, which one is it?

Anyway here's my next thing: I want to make an intro where my character flies vertically down from the top of the screen to the ground then pose when he lands. How should I go about doing that? (I made a thread about this I think, but I have received no response)

as for a bigger question: how do I design a character who does not run and jump like a normal character but instead just flies around? Like If I were to go diagonal up from the ground, the character will move up and stay there if I stop moving the directional keys?

EDIT: Please don't think I'm not trying to do this stuff myself. I'm only asking things I haven't come across yet or things that I'm stuck on. I've been doing surprisingly well on this character so far.

Cyanide

Mugen\docs\sctrls.html

That folder contains much usefulness.

As for your second question. Override the stand state and insert a flight code. Essentially velsets when a direction is held and another one when nothing is held. Check your cmd for holdfwd, holdback etc and make sure they're there.

Check out just about any dbz character in existence for this.


In M.U.G.E.N there is no magic button

They say a little knowledge is a dangerous thing, but it's not one half so bad as a lot of ignorance.

Mavrickindigo

#4
Cool that helps a lot. Now I took a look over the projectile section and I'm not sure if I missed it or not, but I didn't see anything about allowing a projectile to pass through a player while hitting them. I know there has to be something like that somewhere.

EDIT: Oh I found one way by using "projmisstime" but it winds up pushing the other player backwards when it hits...any help on that while I look around the scrtls?

EDIT:If you get a chance to respond before I can find a DBZ character and look at its data, could you post a sample flight code for me?

EDIT: I made a new move where in the original game, he pushed the opponent backwards toward a edge where they could fall off. I was thinking of doing something similar to this but right now I have him hitting an opponent with this attack with zero damage to thrust them backwards. Is there something I could do where this attack instead makes the opponent push away from the character but if the opponent had a fast enough run could run toward the character?

Cyanide

If you haven't found a dbz character by typing dbz and mugen into google by the time i post this. You're going to have problems.

If you don't want it to push p2, set the hitvelocities to 0. Seriously simple there. I've given you the docs and you have the info staring you in the face. Not a question you should have to ask.

Last one means you learn to use helpers, a helper with playerpush on moving fast will push p2 along, yet be slowed by p2's friction. Technically if p2 walks or runs at the helper, it'll gradually push forwards.

To show this in action, make 2 characters walk at each other and see what happens, then do 1 nothing, 1 run, then 1 walk 1 run and see how the velocities are affected.


In M.U.G.E.N there is no magic button

They say a little knowledge is a dangerous thing, but it's not one half so bad as a lot of ignorance.

Mavrickindigo

#6
I'm learning, don't worry, but at this point its still a fog of code with lots of details that I'm not sure where to find (for instance I didn't know it was called "playerpush").

I'll come back if I any more questions but I'll be sure to check up on some of the docs and stuff with more detail this time around. I don't want to be an annoyance.

Ok here's the move's data so far
Spoiler (click to show)
[StateDef 200]
type = S
movetype= A
physics = S
juggle  = 1
velset = 0,0
ctrl = 0
anim = 200
poweradd = -500

[State 200, 1]
type = Projectile
trigger1 = AnimElem = 2
projanim = 201
projhitanim = 202
projpriority = 1
projheightbound = -240, 100
projedgebound = 100
projscreenbound = 100
projshadow = -1
projremove = 0
projhits = 1000
projmisstime = 1
offset = 44, 4
velocity = 3
attr = S, SP
damage   = 1
animtype = heavy
guardflag = MA
hitflag = MAFDP
pausetime = 10,10
hitsound   = 5,2
sparkxy = 500,500
guardsound = S6,0
ground.type = Low
ground.slidetime = 25
ground.hittime  = 25
ground.velocity = -6
air.animtype = Back
air.velocity = -4,-6
air.juggle = 3
air.fall = 1
down.velocity = -4,-6
down.hittime = 30
down.bounce = 0

[State 200, 2]
type = PlayerPush
trigger1 = AnimTime = 0
value = 0
;ignorehitpause =
;persistent =


[State 200, end]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

Its still pushing them back I've tried 1 and 0 for playerpush. Am I putting it in wrong, or does it require a different value, or what?

EDIT: I tried that helper thing, but I just realized I have no idea how they work.

Let's say I have the state 210 for the attack. I want a helper to spawn at my character's feet and move forward across the screen, pushing the other character back, but allowing it to be able to run toward my character at a slower rate. the sprites for the helper are set at 211 as of now.

EDIT: While I was waitin for a helpful response on these past things I decided to move on to another attack and hit a snag. This attack should  make the character dive down and hit the opponent, but keep going until the character hits the ground. I didn't want to mess with too much of it right away so I decided to code the basic stuff. Problem is I don't know what to add to make it actually deal damage. I tried putting "damage" in the statedef and the VelSet sections, but it didn't work.

I recently tried putting in a "Hitdef" section, but after doing so the character doesn't load saying there's an error in the Hitdef state

Spoiler (click to show)
[Statedef 600]
type    = A
movetype= A
physics = A
juggle  = 2
poweradd= - 1000
ctrl = 0
anim = 600

[State 600, HitDef]
type = HitDef
trigger1 = MoveContact = 1
attr = S,NA        ;SCA,NA,SA,HA,NP,SP,HP,NT,ST,HT
hitflag = MAF        ;HLAFD+-
guardflag = MA         ;HLA
getpower = 0,0
givepower = 0,0
;affectteam = E          ;B,E,F
animtype = back          ;light,medium,hard,back,up,diagup
air.animtype = back
;fall.animtype = Back
priority = 4,Hit   ;Hit,Miss,Dodge
damage = 10,50
pausetime = 0,0
;guard.pause,0
sparkno = 0
guard.sparkno = 0
sparkxy = 0,0
hitsound = 0,0
guardsound = 0,0
ground.type = High      ;Low,Trip,None
;air.type = High
ground.slide = 0
;guard.slide = 0
ground.hit = 0
;guard.hit = 0
air.hittime = 20
;guard.ctrl  = 0
;guard.dist = 320
;yaccel = 0.5
ground.velocity = 0,0
;guard.velocity = 0
air.velocity = 0,0
;airguard.velocity = 0,0
;ground.cornerpush.veloff = 0
;air.cornerpush.veloff = 0
;down.cornerpush.veloff = 0
;guard.cornerpush.veloff = 0
;airguard.cornerpush.veloff = 0
;airguard.ctrl = 0
;air.juggle = 0
;mindist = 0,0
;maxdist = 0,0
;snap = 0,0
sprpriority = 1
;p1sprpriority = 0;(winmugen only)
;p2sprpriority = 0;(winmugen only)
;p1facing = 0
p1getp2facing = 0
;p2facing = 1
;p1stateno = 0
;p2stateno = 0
;p2getp1state = 1
;forcestand = 0
fall = 0
;fall.xvelocity = 0
fall.yvelocity = -4.5
fall.recover = 1
fall.recovertime = 4
fall.damage = 0
;air.fall = 0
;down.velocity = 0,0
;down.hit
down.bounce = 0
;id = 0
;chainID = -1
;nochainID = -1
;hitonce = 1
kill = 1
guard.kill = 1
fall.kill = 1
numhits = 1
palfx.time = 0
;palfx.mul = 0,0,0
;palfx.add = 0,0,0
envshake.time = 0,0
;envshake.freq = 0
;envshake.ampl = 0
;envshake.phase = 0
fall.envshake.time = 0,0
;fall.envshake.freq = 0
;fall.envshake.ampl = 0
;fall.envshake.phase = 0
;ignorehitpause =
;persistent =


[State 600, VelSet]
type = VelSet
trigger1 = Animtime = 0
x = 5
y = 5

[State 600, 5]
type = CtrlSet
trigger1 = Time = 20
value = 1

Cyanide

trigger1 = MoveContact = 1

Thats a pretty simple problem. Movecontact will be 1 when you've actually hit the other player. Until you hit them, movecontact will be 0 or !movecontact. Use a trigger that will work. Like time = 1 or animelem = 2 or whatever. Oh and FF's autoinsert for hitdefs contains syntax errors. Open another characters files and copy paste a hitdef from there. Using FF's = recipe for disaster.

Now, you have the wrong end of the stick for playerpush. Playerpush is for the helper as your push, push slower problem.

hit.velocity = solution to your projectile making them go backwards. Set the hitvel of your PROJECTILE to 0. I never mentioned anything about helpers in that sentence.


In M.U.G.E.N there is no magic button

They say a little knowledge is a dangerous thing, but it's not one half so bad as a lot of ignorance.

Mavrickindigo

#8
When I was asking about the helpers, it was for the other attack that I want to make people push back and you said I should use helpers for it.

The other one (the first attack, [statedef200]) is the one I don't want to push. I'll work on that one now and give an update on it when I'm done.

The other questions are still open of course.

EDIT: Ok I'm still a bit confused here. So for the first attack (the one with the projectile where I want it to hit multiple times but not push the opponent). I have to make a new thing for it, or do I add it to the projectile section? Where exactly do I insert the "movecontact = 1" to make it allow the projectile to go through the opponent, hit it multiple times, but keep going through it?

Cyanide

If you do not want state 200 to push p2 anywhere, within the hitdef you make sure hit.vel = 0,0 thats it. Nothing more.

Helpers, look at some other characters and see how they do it. then try and adapt.

Please read this post a couple of times. I could swear you're not reading them properly because you've got the wrong end of things twice now.


In M.U.G.E.N there is no magic button

They say a little knowledge is a dangerous thing, but it's not one half so bad as a lot of ignorance.

Mavrickindigo

#10
Quote from: Cyanide on December 17, 2007, 10:13:31 PM
If you do not want state 200 to push p2 anywhere, within the hitdef you make sure hit.vel = 0,0 thats it. Nothing more.

Helpers, look at some other characters and see how they do it. then try and adapt.

Please read this post a couple of times. I could swear you're not reading them properly because you've got the wrong end of things twice now.

Yeah I've noticed this too just now after I respond I see that I didn't read it correctly for some reason. Sorry about that.

EDIT: YES! Thank you I got the attack to work now! Now I'll have to work on the others

Mavrickindigo

Quote from: Cyanide on December 17, 2007, 06:01:32 AM
Last one means you learn to use helpers, a helper with playerpush on moving fast will push p2 along, yet be slowed by p2's friction. Technically if p2 walks or runs at the helper, it'll gradually push forwards.

To show this in action, make 2 characters walk at each other and see what happens, then do 1 nothing, 1 run, then 1 walk 1 run and see how the velocities are affected.
[/quote]Hm...taking a look at this I'd have to say that's not quite how I want it. The Push attack is what he does first in This Video I plan to make it that you have to press the button for each wing flap. If I did this, wouldn't this create hundreds of helpers pushing against the opponent? Would the opponent even be able to make it to the character (that would be something good as I don't want people spamming it just to keep people away.)

Cyanide

No, you could set it up so the helper was only moving when you'd pushed the button. You wouldn't have to create a new one. However, that's way too complex for you at this exact moment and it would be better if you left it a little while and got a better handle on everything first.

Top post, problem 3.

You're using anim 190, You stop when you hit the ground. Or if your timing is too strict, when animtime = 0. Try adding a loop to anim 190 and then lower the velocity. Lets say it takes anim 190 25 ticks to run through. On a vel of 10 (down) he reaches the bottom of the screen before those 25 ticks are up. On a vel of 5 he'll only reach halfway down, then the animation completes and he goes to state 0 and stops.

Your changestate trigger should also be
trigger1 = anim = 195 && animtime = 0

or trigger1 = animtime = 0 && vel Y= 0


In M.U.G.E.N there is no magic button

They say a little knowledge is a dangerous thing, but it's not one half so bad as a lot of ignorance.

Mavrickindigo

Well the intro works well now, but I tried doing a bit of sound additions to it. It works alright save for some things

1.) I don't know how to stop it once the intro ends
2.) When I play it in the game, it has a sort of garbled sound come out for a second before the sound actually starts playing. Is this a common problem with an easy fix?

Cyanide

Depends on your triggers

trigger1 = animelem = 1

will trigger twice, once for 190 and once for 195.


In M.U.G.E.N there is no magic button

They say a little knowledge is a dangerous thing, but it's not one half so bad as a lot of ignorance.

Mavrickindigo

Quote from: Cyanide on December 18, 2007, 02:00:47 AM
Depends on your triggers

trigger1 = animelem = 1

will trigger twice, once for 190 and once for 195.
Hm...alright I'll look into that, but would that really be the cause of the garbled sound in the beginning seeing as the two animations don't change in the very beginning I doubt that's the cause.

Anyway I'm still having trouble with those helpers, is there some kind of helpers tutorial out there?

Cyanide

People always think helpers are difficult. Not sure why.

Helper = another instance of a character, a 2nd player. Anything your character can do, your helper can do. Send it to a state, make it do whatever, then get rid of it.

In addition to the sound being "garbled" play it in your .snd file within FF and see if it's garbled there. You may have a shit rip.


In M.U.G.E.N there is no magic button

They say a little knowledge is a dangerous thing, but it's not one half so bad as a lot of ignorance.

Mavrickindigo

Quote from: Cyanide on December 18, 2007, 08:20:19 PM
People always think helpers are difficult. Not sure why.

Helper = another instance of a character, a 2nd player. Anything your character can do, your helper can do. Send it to a state, make it do whatever, then get rid of it.

In addition to the sound being "garbled" play it in your .snd file within FF and see if it's garbled there. You may have a shit rip.
The sound works fine in FF but the garble is still there in the game.

So for this helper I need to call it by my player's feet, make it move to the other side of the room, then disappear? Yes that sounds simple and I'll probably hate myself for not figuring it out but I think I may need more of a basic run-through of it. I'll try it myself though but I haven't been able to quite get it yet myself.

Mavrickindigo

Spoiler (click to show)
; Gust
; CNS difficulty: easy
[StateDef 210]
type = S
movetype= A
physics = S
juggle  = 1
velset = 0,0
ctrl = 0
anim = 210
poweradd = 100

[State 210, Helper]
type = Helper
trigger1 = animelem = 1
ID = 211
pos = 0,0
postype = p1
stateno = 211
helpertype = normal
name = "Wind"
keyctrl = 0
ownpal = 1
supermovetime = 1

[State 210, end]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
;Wind Create
[Statedef 211]
type = S
movetype = A
Physics = S
Juggle = 1
velset = 0,0
anim = 211
poweradd = 0
sprpriority = 0

[State 211, 1]
type = changestate
trigger1 = time = 1
value = 212

;--------------------------------------------------------------------------
;Wind Push
[Statedef 212]
type = S
movetype = A
Physics = S
Juggle = 1
velset 10, 0
anim =211
poweradd = 0
sprpriority = 0

[State 212, PlayerPush]
type = PlayerPush
trigger1 = time = 0
value = 1

[State 212, DestroySelf]
type = DestroySelf
trigger1 = animtime = 10

[State 212, changestate]
type = changestate
trigger1 = animtime = 10
value = 0

Ok I tried to make a helper from what I've learned so far, but I royally messed up, but I"m not sure exactly where. MUGEN says the problem is in Sate 212, but I'm sure there's more to it as well. Can someone give it a look-over and tell me how I'm doing this helper wrong?

Bastard Mami

i don't think animtime will ever be 10, since it's only negative numbers and 0.