I have a problem with making my character. . . . . . .

Started by WulfHound, July 07, 2011, 09:10:14 PM

Previous topic - Next topic

WulfHound

Hey guys, I have a problem with a character that I am making. Every time he goes behind the other character/fighter, he does his punch animation and then redoes the intro..Why?
Aren't wolves cute?

Rajaa Retired

I don't know, that behavior doesn't make any sense. Any debug errors popping up?

WulfHound

Aren't wolves cute?

Rajaa Retired

Then you're going to have to give more details and post some codes correspond to what's happening. You might have a changestate in the command that has crappy triggers or something.

WulfHound

Ok, I am going to give my .CNS and .CMD of the move he does..
.CNS
; Stand Light Punch
; CNS difficulty: easy
[Statedef 5]
type    = S                      ;State-type: S-stand, C-crouch, A-air, L-liedown
movetype= A                      ;Move-type: A-attack, I-idle, H-gethit
physics = S                      ;Physics: S-stand, C-crouch, A-air
juggle  = 1                      ;Number of air juggle points move takes
;Commonly-used controllers:
velset = 0,0                     ;Set velocity (x,y) (Def: no change)
ctrl = 0                         ;Set ctrl (Def: no change)
anim = 5                      ;Change animation (Def: no change)
poweradd = 10                    ;Power to add (Def: 0)
sprpriority = 2                  ;Set p1's sprite layering priority to 2 (in front)

[State 5, 1]
type = HitDef
trigger1 = AnimElem = 3
attr = S, NA                     ;Attribute: Standing, Normal Attack
damage = 25, 0                   ;Damage that move inflicts, guard damage
animtype = Light                 ;Animation type: Light, Medium, Heavy, Back (def: Light)
guardflag = MA                   ;Flags on how move is to be guarded against
hitflag = MAF                    ;Flags of conditions that move can hit
priority = 3, Hit                ;Attack priority: 0 (least) to 7 (most), 4 default
;Hit/Miss/Dodge type (Def: Hit)
pausetime = 8, 8                 ;Time attacker pauses, time opponent shakes
sparkno = 0                      ;Spark anim no (Def: set above)
sparkxy = -10, -76               ;X-offset for the "hit spark" rel. to p2,
;Y-offset for the spark rel. to p1
hitsound = 5, 0                  ;Sound to play on hit
guardsound = 6, 0                ;Sound to play on guard
ground.type = High               ;Type: High, Low, Trip (def: Normal)
ground.slidetime = 5             ;Time that the opponent slides back
ground.hittime  = 11             ;Time opponent is in hit state
ground.velocity = -4             ;Velocity at which opponent is pushed
airguard.velocity = -1.9,-.8     ;Guard velocity in air (def: (air.xvel*1.5, air.yvel/2))
air.type = High                  ;Type: High, Low, Trip (def: same as ground.type)
air.velocity = -1.4,-3           ;X-velocity at which opponent is pushed,
;Y-velocity at which opponent is pushed
air.hittime = 15                 ;Time before opponent regains control in air

[State 5, 2]
type = PlaySnd
trigger1 = Time = 1
value = 5, 0

[State 5, 3]
type = ChangeState
trigger1 = AnimTime = 0
value = 5
ctrl = 1

[State 5, 4]
type = ChangeState
trigger1 = AnimTime = 0
value = 5
ctrl = 1

.CMD
[Statedef -1]


;Stand Light Punch
[State -1, Stand Light Punch]
type = ChangeState
value = 5
triggerall = command = "x"
triggerall = command != "holddown"
trigger1 = statetype = S
trigger1 = ctrl
trigger2 = stateno = 5
trigger2 = time > 6                                                                                                                                                   
Aren't wolves cute?

Алексей

[State 5, 4]
type = ChangeState
trigger1 = AnimTime = 0
value = 5
ctrl = 1

You have this ChangeState twice and it's changing the state to the state it's already in. I'm surprised that MUGEN hasn't crashed in an infinite loop. Change the value of "5" to something more meaningful, like the standing state, "0."

-[Все слова это только слова.]-

WulfHound

Hmm...I changed the value to standing state...But it still does it. And what I also do not understand is that my normal punch does damage, but when I go behind it does nothing.
Aren't wolves cute?

Алексей

QuoteAnd what I also do not understand is that my normal punch does damage, but when I go behind it does nothing.
When you "go behind", player 2 should turn and be facing player 1. This doesn't make any sense. その本当意外です。

From the code that you posted, there's nothing in there that could possible send you into the intro or even the intro animation after you're done with your punching animation.

-[Все слова это только слова.]-

WulfHound

I just discovered yet ANOTHER problem with this....When I press Down, it freezes the entire game.
Aren't wolves cute?

Алексей

QuoteI just discovered yet ANOTHER problem with this....When I press Down, it freezes the entire game.
Post the code of your .cmd file, all of it. I think I know what might be going on here.

-[Все слова это только слова.]-

WulfHound

Kk this is my .CMD file:


?; The CMD file.
;
; Two parts: 1. Command definition and  2. State entry
; (state entry is after the commands def section)
;
; 1. Command definition
; ---------------------
; Note: The commands are CASE-SENSITIVE, and so are the command names.
; The eight directions are:
;   B, DB, D, DF, F, UF, U, UB     (all CAPS)
;   corresponding to back, down-back, down, downforward, etc.
; The six buttons are:
;   a, b, c, x, y, z               (all lower case)
;   In default key config, abc are are the bottom, and xyz are on the
;   top row. For 2 button characters, we recommend you use a and b.
;   For 6 button characters, use abc for kicks and xyz for punches.
;
; Each [Command] section defines a command that you can use for
; state entry, as well as in the CNS file.
; The command section should look like:
;
;   [Command]
;   name = some_name
;   command = the_command
;   time = time (optional)
;   buffer.time = time (optional)
;
; - some_name
;   A name to give that command. You'll use this name to refer to
;   that command in the state entry, as well as the CNS. It is case-
;   sensitive (QCB_a is NOT the same as Qcb_a or QCB_A).
;
; - command
;   list of buttons or directions, separated by commas. Each of these
;   buttons or directions is referred to as a "symbol".
;   Directions and buttons can be preceded by special characters:
;   slash (/) - means the key must be held down
;          egs. command = /D       ;hold the down direction
;               command = /DB, a   ;hold down-back while you press a
;   tilde (~) - to detect key releases
;          egs. command = ~a       ;release the a button
;               command = ~D, F, a ;release down, press fwd, then a
;          If you want to detect "charge moves", you can specify
;          the time the key must be held down for (in game-ticks)
;          egs. command = ~30a     ;hold a for at least 30 ticks, then release
;   dollar ($) - Direction-only: detect as 4-way
;          egs. command = $D       ;will detect if D, DB or DF is held
;               command = $B       ;will detect if B, DB or UB is held
;   plus (+) - Buttons only: simultaneous press
;          egs. command = a+b      ;press a and b at the same time
;               command = x+y+z    ;press x, y and z at the same time
;   greater-than (>) - means there must be no other keys pressed or released
;                      between the previous and the current symbol.
;          egs. command = a, >~a   ;press a and release it without having hit
;                                  ;or released any other keys in between
;   You can combine the symbols:
;     eg. command = ~30$D, a+b     ;hold D, DB or DF for 30 ticks, release,
;                                  ;then press a and b together
;
;   Note: Successive direction symbols are always expanded in a manner similar
;         to this example:
;           command = F, F
;         is expanded when MUGEN reads it, to become equivalent to:
;           command = F, >~F, >F
;
;   It is recommended that for most "motion" commads, eg. quarter-circle-fwd,
;   you start off with a "release direction". This makes the command easier
;   to do.
;
; - time (optional)
;   Time allowed to do the command, given in game-ticks. The default
;   value for this is set in the [Defaults] section below. A typical
;   value is 15.
;
; - buffer.time (optional)
;   Time that the command will be buffered for. If the command is done
;   successfully, then it will be valid for this time. The simplest
;   case is to set this to 1. That means that the command is valid
;   only in the same tick it is performed. With a higher value, such
;   as 3 or 4, you can get a "looser" feel to the command. The result
;   is that combos can become easier to do because you can perform
;   the command early. Attacks just as you regain control (eg. from
;   getting up) also become easier to do. The side effect of this is
;   that the command is continuously asserted, so it will seem as if
;   you had performed the move rapidly in succession during the valid
;   time. To understand this, try setting buffer.time to 30 and hit
;   a fast attack, such as KFM's light punch.
;   The default value for this is set in the [Defaults] section below.
;   This parameter does not affect hold-only commands (eg. /F). It
;   will be assumed to be 1 for those commands.
;
; If you have two or more commands with the same name, all of them will
; work. You can use it to allow multiple motions for the same move.
;
; Some common commands examples are given below.
;
; [Command] ;Quarter circle forward + x
; name = "QCF_x"
; command = ~D, DF, F, x
;
; [Command] ;Half circle back + a
; name = "HCB_a"
; command = ~F, DF, D, DB, B, a
;
; [Command] ;Two quarter circles forward + y
; name = "2QCF_y"
; command = ~D, DF, F, D, DF, F, y
;
; [Command] ;Tap b rapidly
; name = "5b"
; command = b, b, b, b, b
; time = 30
;
; [Command] ;Charge back, then forward + z
; name = "charge_B_F_z"
; command = ~60$B, F, z
; time = 10
;
; [Command] ;Charge down, then up + c
; name = "charge_D_U_c"
; command = ~60$D, U, c
; time = 10


;-| Button Remapping |-----------------------------------------------------
; This section lets you remap the player's buttons (to easily change the
; button configuration). The format is:
;   old_button = new_button
; If new_button is left blank, the button cannot be pressed.
[Remap]
x = x
y = y
z = z
a = a
b = b
c = c
s = s

;-| Default Values |-------------------------------------------------------
[Defaults]
; Default value for the "time" parameter of a Command. Minimum 1.
command.time = 15

; Default value for the "buffer.time" parameter of a Command. Minimum 1,
; maximum 30.
command.buffer.time = 1

;-| Special Motions |------------------------------------------------------
[Command]
name = "blocking"
command = $F,x
time = 3

[Command]
name = "blocking" ;Same name as above (buttons in opposite order)
command = x,$F
time = 3

[Command]
name = "upper_x"
command = ~F, D, DF, x

[Command]
name = "upper_y"
command = ~F, D, DF, y

[Command]
name = "upper_xy"
command = ~F, D, DF, x+y

[Command]
name = "QCF_x"
command = ~D, DF, F, x

[Command]
name = "QCF_y"
command = ~D, DF, F, y

[Command]
name = "QCF_xy"
command = ~D, DF, F, x+y

[Command]
name = "QCB_x"
command = ~D, DB, B, x

[Command]
name = "QCB_y"
command = ~D, DB, B, y

[Command]
name = "QCB_xy"
command = ~D, DB, B, x+y

[Command]
name = "QCF_a"
command = ~D, DF, F, a

[Command]
name = "QCF_b"
command = ~D, DF, F, b

[Command]
name = "QCF_ab"
command = ~D, DF, F, a+b

[Command]
name = "FF_ab"
command = F, F, a+b

[Command]
name = "FF_a"
command = F, F, a

[Command]
name = "FF_b"
command = F, F, b

;-| Double Tap |-----------------------------------------------------------
[Command]
name = "FF"     ;Required (do not remove)
command = F, F
time = 10

[Command]
name = "BB"     ;Required (do not remove)
command = B, B
time = 10

;-| 2/3 Button Combination |-----------------------------------------------
[Command]
name = "recovery";Required (do not remove)
command = x+y
time = 1

;-| Dir + Button |---------------------------------------------------------
[Command]
name = "down_a"
command = /$D,a
time = 1

[Command]
name = "down_b"
command = /$D,b
time = 1

;-| Single Button |---------------------------------------------------------
[Command]
name = "a"
command = a
time = 1

[Command]
name = "b"
command = b
time = 1

[Command]
name = "c"
command = c
time = 1

[Command]
name = "x"
command = x
time = 1

[Command]
name = "y"
command = y
time = 1

[Command]
name = "z"
command = z
time = 1

[Command]
name = "start"
command = s
time = 1

;-| Hold Dir |--------------------------------------------------------------
[Command]
name = "holdfwd";Required (do not remove)
command = /$F
time = 1

[Command]
name = "holdback";Required (do not remove)
command = /$B
time = 1

[Command]
name = "holdup" ;Required (do not remove)
command = /$U
time = 1

[Command]
name = "holddown";Required (do not remove)
command = /$D
time = 1

;---------------------------------------------------------------------------
; 2. State entry
; --------------
; This is where you define what commands bring you to what states.
;
; Each state entry block looks like:
;   [State -1, Label]           ;Change Label to any name you want to use to
;                               ;identify the state with.
;   type = ChangeState          ;Don't change this
;   value = new_state_number
;   trigger1 = command = command_name
;   . . .  (any additional triggers)
;
; - new_state_number is the number of the state to change to
; - command_name is the name of the command (from the section above)
; - Useful triggers to know:
;   - statetype
;       S, C or A : current state-type of player (stand, crouch, air)
;   - ctrl
;       0 or 1 : 1 if player has control. Unless "interrupting" another
;                move, you'll want ctrl = 1
;   - stateno
;       number of state player is in - useful for "move interrupts"
;   - movecontact
;       0 or 1 : 1 if player's last attack touched the opponent
;                useful for "move interrupts"
;
; Note: The order of state entry is important.
;   State entry with a certain command must come before another state
;   entry with a command that is the subset of the first.
;   For example, command "fwd_a" must be listed before "a", and
;   "fwd_ab" should come before both of the others.
;
; For reference on triggers, see CNS documentation.
;
; Just for your information (skip if you're not interested):
; This part is an extension of the CNS. "State -1" is a special state
; that is executed once every game-tick, regardless of what other state
; you are in.


; Don't remove the following line. It's required by the CMD standard.
[Statedef -1]


;Stand Light Punch
[State -1, Stand Light Punch]
type = ChangeState
value = 5
triggerall = command = "x"
triggerall = command != "holddown"
trigger1 = statetype = S
trigger1 = ctrl
trigger2 = stateno = 5
trigger2 = time > 6
;---------------------------------------------------------------------------
;Run Fwd
[State -1, Run Fwd]
type = ChangeState
value = 100
trigger1 = command = "FF"
trigger1 = statetype = S
trigger1 = ctrl

;---------------------------------------------------------------------------
;Run Back
[State -1, Run Back]
type = ChangeState
value = 105
trigger1 = command = "BB"
trigger1 = statetype = S
trigger1 = ctrl
Aren't wolves cute?

Алексей

Hmm, everything looks fine. You said that when you press down on the keyboard, MUGEN freezes. Now is that MUGEN, or just your Character? Are you able to press esc to return the previous screen, or is it completely frozen and unresponsive?

Are you using a custom common1.cns or the default. Is your .def including common1.cns? If not, make sure it is. All basic movements are defined in common1.cns. Your character won't work properly without it.

Last but not least, if MUGEN is not actually frozen, bring up the debug text by pressing "ctrl+d." Do any errors come up? What state are you sent into when you press the down key?

-[Все слова это только слова.]-

WulfHound

Ok, when I press down ALL of mugen freezes, and when I press esc, it goes to previous screen.

I am using the default common1.cns My .def includes the common1.cns.

When I press ctrl+D it says something like Fierce Diety (57) In state 5900: can't map pallete 1. And when I press down, It freezes at the last sprites used.
Aren't wolves cute?

Алексей

QuoteOk, when I press down ALL of mugen freezes, and when I press esc, it goes to previous screen.
MUGEN's not frozen, just your character. It's unresponsive and not listening to commands due to that error.

Are you coding for WinMUGEN or MUGEN 1.0?

QuoteWhen I press ctrl+D it says something like Fierce Diety (57) In state 5900: can't map pallete 1. And when I press down, It freezes at the last sprites used.
The default common1.cns looks like this:
;---------------------------------------------------------------------------
; Initialize (at the start of the round)
[Statedef 5900]
type = S

[State 5900, 1] ;Clear all int variables
type = VarRangeSet
trigger1 = roundsexisted = 0
value = 0

[State 5900, 2] ;Clear all float variables
type = VarRangeSet
trigger1 = roundsexisted = 0
fvalue = 0

[State 5900, 3] ;Change palette
type = RemapPal
trigger1 = 1
source = 1,1
dest = 1,palno

[State 5900, 4] ;Intro for round 1
type = ChangeState
trigger1 = roundno = 1
value = 190

[State 5900, 5] ;All other rounds
type = ChangeState
trigger1 = 1
value = 0

for state 5900. Does your state look like this?

Is there a common1.cns in your character's folder? If so, you're using a custom common1.cns. I'd suggest deleting that file, so the default in your data directory will be used.

-[Все слова это только слова.]-

Rajaa Retired

Don't use statedef 5 for anything. What are you doing? Go read the mugen documentation. Animation 5 isthe turning function and that is hard coded in the mugen engine. You don't override common stuff unless you have a valid reason and you know what you're doing.

The docs tell you what state numbers to use for attacks and stuff. Read them. Look through Kung Fu Man for how states should work.

Алексей

Quote from: Rajaa on July 08, 2011, 02:27:20 AM
Don't use statedef 5 for anything. What are you doing? Go read the mugen documentation. Animation 5 isthe turning function and that is hard coded in the mugen engine. You don't override common stuff unless you have a valid reason and you know what you're doing.

The docs tell you what state numbers to use for attacks and stuff. Read them. Look through Kung Fu Man for how states should work.
Even the ones trying to help, learn something new from these posts, perfect! Now why didn't I know that? That is the real question. I didn't even see that in the documentation (besides the recommend group numbers in the Sprite Standard section), nor is it in the common1.cns. Can you point me to where you found that information Rajaa? I hope I'm looking in the right place.

-[Все слова это только слова.]-

Rajaa Retired

Animation 5 just is the turning animation. It won't be anything else. There is no way you can change this unless you have the source code of the mugen engine.

Алексей

That's good to know. Thanks for the info. We just need to make sure that WulfHound understands this, so he won't try to do this ever again. The moral of this story is to use normal state numbers for your StateDefs and not to use ones that are in common  states, unless you absolutely need to.

-[Все слова это только слова.]-

Cyanide

Actually, state 5 isn't used by anything and is totally safe to make use of. Anim 5 however is turn. And that's hard coded. So when the character is jumped over, it's going to replay your punch. I have no clue what you've made anim 0. And i am sorta guessing you've done something insane to anim 10.

Go open KFM and see what he uses. I think you're using reserved animations for silly things. Like you've made anim 0 his intro+his standing pose afterwards.

mugen\docs\spr.txt tells you what actions should be used for what. Normally the 200-799 series is for basic attacks.


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.

WulfHound

#19
Hmm..I did get anim to 5. I'll check if that's the problem.
And above I said I had other problems, but I fixed them all. That is okay!  ;D
But When I go behind the guy he still attacks, even though I don't have anim 5 anymore. It's anim 2 now.
Aren't wolves cute?