YesNoOk
avatar

It does not connect the blows (Read 1855 times)

Started by soilworksoilwork, September 14, 2018, 08:40:56 am
Share this topic:
It does not connect the blows
#1  September 14, 2018, 08:40:56 am
  • *
  • If you change ... The world changes with thee
Hello everyone
I feel somewhat desperate TT

I want to connect the blows while a character is in the air falling, but it does not hit, it goes through and does not connect the blow.

for example:

- Crouched with a strong kick, the character makes him fall and in the air I want to connect him with a special, but he crosses it and does nothing.

- with a special I raise it in the air and it is falling, I make it a special or a blow and it does not connect, it goes through it.

but instead with a special EX, a Super or Super MAX, if you connect the blows as they fall

Why does that happen and how can I make my blows connect as they fall?

Thank you
Re: It does not connect the blows
#2  September 14, 2018, 09:01:22 am
  • ****
    • crepa.neocities.org
I'm guessing the problem is in your hitdef, to be more specific, in the hitflag. Try using different values to see if they connect. Take a look here if you need. To make it easy for you, I'll copy the part about hitflags here.

Quote
hitflag = hit_flags (string) This determines what type of state P2 must be in for P1 to hit. hit_flags is a string containing a combination of the following characters:
        "H" for "high", "L" for "low" or "A" for air. "M" (mid) is equivalent to saying "HL". "F" is for fall, and if included will allow P1 to juggle falling opponents in the air. "D" is for "lying Down", and if included allows P1 to hit opponents lying down on the ground. "H", "L" or "A" (or "M") must be present in the hitflag string.
        Two optional characters are "+" and "-". If "+" is added, then the hit only affects people in a gethit state. This may be useful for chain-moves that should not affect opponents who were not hit by the first move in the chain attack. If "-" is added, then the hit only affects players that are NOT in a gethit state. You should use "-" for throws and other moves you do not want P1 to be able to combo into. "+" and "-" are mutually exclusive, ie. cannot be used at the same time.
        If omitted, this defaults to "MAF".
Re: It does not connect the blows
#3  September 14, 2018, 05:21:22 pm
  • *
  • If you change ... The world changes with thee
I've already tried it with the hitdef but it has not worked

Is there another way to connect the blows?
Re: It does not connect the blows
#4  September 14, 2018, 05:40:19 pm
  • ****
    • crepa.neocities.org
Did you try with combined values? Like "hitflag = MAFD"?
If this isn't working, I'd suggest looking at how MvC characters are coded, mainly MvC2, I think they are a good example for combos / air combos like this.
I don't know what else can be the problem if not the hitflags... :(
Re: It does not connect the blows
#5  September 14, 2018, 06:14:34 pm
  • *
  • If you change ... The world changes with thee



Example
Last Edit: September 14, 2018, 06:26:28 pm by soilworksoilwork
Re: It does not connect the blows
#6  September 14, 2018, 06:31:32 pm
  • ****
    • crepa.neocities.org
I see.. can you post the code of that specific move here?
It can be many things, like wrong hitboxes (or no hitbox at all), movetype not equals A (for attack), juggle points or even wrong triggers.
Re: It does not connect the blows
#7  September 14, 2018, 07:12:30 pm
  • *
  • If you change ... The world changes with thee
IORI
Code:
;Oni Yaki
[Statedef 1100]
type=S
movetype=A
physics=S
ctrl=0
velset=0,0
poweradd=72 * !var(20)
sprpriority=1
facep2=1

[State 1100, VarSet]
type=VarSet
trigger1 =!AILevel&& !time
var(10)=ifelse(command="OniYaki1",0,ifelse(command="OniYaki2",1,2))
ignorehitpause=1

[State 1100, VarSet]
type=VarSet
trigger1 =AILevel&& !time
var(10)=Ifelse(random<200,1,2)
ignorehitpause=1

[State 1100, Anim]
type = ChangeAnim
trigger1 = !time
value = 1100+var(10)+ Var(11)*10000
ignorehitpause=1

[State 220, Swing Snd]
type=playsnd
trigger1=animelem=4
value=1,2
channel=3

[State 220, Swing Snd]
type=playsnd
trigger1=animelem=4
value=41,0
channel=4

[State 123, Dust Helper]
type = Helper
trigger1 = AnimElem=4
helperType = Normal
stateNo = 8100
ID = 8100
name = "Jump Dust"
posType = P1
ownPal = 1

[State 1100, PosSet]
type = PosSet
trigger1 = !Time
y = 0

[State 1100, NotHitBy]
type = NotHitBy
trigger1 = animelemtime(4)<0
value = SCA
ignorehitpause = 1

[State 1100, StateTypeSet]
type = StateTypeSet
trigger1 = AnimElemTime(4) = 1
StateType = A
physics = N

[State 1100, Voice]
type = PlaySnd
trigger1 = !Time && var(11) != 1
value = 0,8
channel = 0

[State 1100, Voice]
type = PlaySnd
trigger1 = !Time && var(11) = 1
value = 0,1100
channel = 0

[State 1100, VelSet]
type = VelSet
trigger1 = AnimElemTime(4) = 1
y = ifElse(!var(10), -7.5, ifElse(var(10) = 1, -9, -10.5))

[State 1100, VelAdd]
type = Veladd
trigger1 = AnimElemTime(4) >= 2
y = 0.55

[State 1100, PosAdd]
type = PosAdd
trigger1 = Animelem=2
x = 16

[State 1100, PosAdd]
type = PosAdd
trigger1 =animelem=4
x = 32

[State 1100, Helper]
type = Helper
trigger1 = animelem = 4
helpertype = normal
name = "Oni Yaki Front Flames"
ID = 1105
stateno = 1105
pos = 0,10
postype = p1
facing = 1
keyctrl = 0
ownpal = 1
size.xscale = .5
size.yscale = .5


[State 1005, High]
type=hitdef
trigger1 = !var(16) && (var(15)<1 || var(20))
trigger1=var(10)!=2&&animelem=3
priority=4, Hit
attr=A, SP
damage=Ifelse(var(20),76,76+8*var(10)), 10
animtype=Hard
hitflag=MAF
guardflag=MA
pausetime=ifElse(var(20), 3, 7), ifElse(var(20), 3, 7)
sparkNo=-1 + 0 * (var(33) :=8013)
guard.sparkNo=-1 + 0 * (var(34) :=8001)
sparkXY=-10 + 0 * (var(35) :=100), var(36) :=-78
hitsound=S2+10*var(44),2
guardsound=s130,1
animType = Back
air.animType = Back
fall.animType = Back
ground.type = High
air.type = Low
ground.hitTime = 18
ground.slideTime = 18
guard.hitTime = 18
air.hitTime = 120
ground.velocity = -2.16, -8.81
ground.cornerPush.velOff = 0
guard.velocity = -12.64
guard.cornerPush.velOff = 0
air.velocity = -2.16, -8.81
air.cornerPush.velOff = 0
yAccel = 0.5
fall = 1
fall.recover = 1
fall.recoverTime = 120
forceStand = 1
airguard.ctrltime=12
airguard.velocity=ifelse((var(20)),-4,-8),-3
forcestand=1
palFX.time = 30
palFX.mul = 128, 128, 128
palFX.sinAdd = 96, 96, 96, 4
envshake.time=12
envshake.ampl=Ifelse(random<=500,-3,3)

[State 1005, High]
type=hitdef
trigger1 = !var(16) && (var(15)<1 || var(20))
trigger1=var(10)!=0&&animelem=2
attr=A, SA
damage=Ifelse(var(20),33,45), 5
animtype=Hard
hitflag=MAF
guardflag=MA
pausetime=ifElse(var(20), 3, 9), ifElse(var(20), 3, 9)
sparkNo=-1 + 0 * (var(33) :=8013)
guard.sparkNo=-1 + 0 * (var(34) :=8001)
sparkXY=-10 + 0 * (var(35) :=100), var(36) :=-78
hitsound=S2+10*var(44),2
guardsound=s130,1
animType = Back
air.animType = Back
fall.animType = Back
ground.type = Low
air.type = Low
ground.hitTime = 18
ground.slideTime = 18
guard.hitTime = 18
air.hitTime = 120
ground.velocity = -4.32, 0
ground.cornerPush.velOff = 0
guard.velocity = -10.52
guard.cornerPush.velOff = 0
air.velocity = -4.32, -7.49
air.cornerPush.velOff = 0
yAccel = 0.58
fall = 0
air.fall = 1
fall.recover = 0
fall.recoverTime = 120
forceStand = 1
airguard.ctrltime=12
airguard.velocity=ifelse((var(20)),-4,-8),-3
forcestand=1
palFX.time = 30
palFX.mul = 128, 128, 128
palFX.sinAdd = 96, 96, 96, 4
envshake.time=12
envshake.ampl=Ifelse(random<=500,-3,3)

[State 1005, High]
type=hitdef
trigger1 = !var(16) && (var(15)<1 || var(20))
trigger1=var(10)=1&&animelem=3
attr=A, SA
damage=Ifelse(var(20),43,43), 5
animtype=Hard
hitflag=MAF
guardflag=MA
pausetime=ifElse(var(20), 3, 7), ifElse(var(20), 3, 7)
sparkNo=-1 + 0 * (var(33) :=8013)
guard.sparkNo=-1 + 0 * (var(34) :=8001)
sparkXY=-10 + 0 * (var(35) :=100), var(36) :=-78
hitsound=S2+10*var(44),2
guardsound=s130,1
animType = Back
air.animType = Back
fall.animType = Back
ground.type = High
air.type = Low
ground.hitTime = 18
ground.slideTime = 18
guard.hitTime = 18
air.hitTime = 120
ground.velocity = -2.16, -8.81
ground.cornerPush.velOff = 0
guard.velocity = -12.64
guard.cornerPush.velOff = 0
air.velocity = -2.16, -8.81
air.cornerPush.velOff = 0
yAccel = 0.5
fall = 1
fall.recover = 1
fall.recoverTime = 120
forceStand = 1
airguard.ctrltime=12
airguard.velocity=ifelse((var(20)),-4,-8),-3
forcestand=1
palFX.time = 30
palFX.mul = 128, 128, 128
palFX.sinAdd = 96, 96, 96, 4
envshake.time=12
envshake.ampl=Ifelse(random<=500,-3,3)

[State 1005, High]
type=hitdef
trigger1 = !var(16) && (var(15)<1 || var(20))
trigger1=var(10)=2&&animelem=3
attr=A, SA
damage=Ifelse(var(20),33,15), 5
animtype=Hard
hitflag=MAF
guardflag=MA
pausetime=ifElse(var(20), 3, 7), ifElse(var(20), 3, 7)
sparkNo=-1 + 0 * (var(33) :=8013)
guard.sparkNo=-1 + 0 * (var(34) :=8001)
sparkXY=-10 + 0 * (var(35) :=100), var(36) :=-78
hitsound=S2+10*var(44),2
guardsound=s130,1
animType = Back
air.animType = Back
fall.animType = Back
ground.type = Low
air.type = Low
ground.hitTime = 18
ground.slideTime = 18
guard.hitTime = 18
air.hitTime = 120
ground.velocity = -4.32, 0
ground.cornerPush.velOff = 0
guard.velocity = -10.52
guard.cornerPush.velOff = 0
air.velocity = -4.32, -7.49
air.cornerPush.velOff = 0
yAccel = 0.58
fall = 0
air.fall = 1
fall.recover = 0
fall.recoverTime = 120
forceStand = 1
airguard.ctrltime=12
airguard.velocity=ifelse((var(20)),-4,-8),-3
forcestand=1
palFX.time = 30
palFX.mul = 128, 128, 128
palFX.sinAdd = 96, 96, 96, 4
envshake.time=12
envshake.ampl=Ifelse(random<=500,-3,3)

[State 1005, High]
type=hitdef
trigger1 = !var(16) && (var(15)<1 || var(20))
trigger1=var(10)=2&&animelem=4
attr=A, SA
damage=Ifelse(var(20),43,35), 5
animtype=Hard
hitflag=MAF
guardflag=MA
pausetime=ifElse(var(20), 3, 7), ifElse(var(20), 3, 7)
sparkNo=-1 + 0 * (var(33) :=8013)
guard.sparkNo=-1 + 0 * (var(34) :=8001)
sparkXY=-10 + 0 * (var(35) :=100), var(36) :=-78
hitsound=S2+10*var(44),2
guardsound=s130,1
animType = Back
air.animType = Back
fall.animType = Back
ground.type = High
air.type = Low
ground.hitTime = 18
ground.slideTime = 18
guard.hitTime = 18
air.hitTime = 120
ground.velocity = -2.16, -8.81
ground.cornerPush.velOff = 0
guard.velocity = -12.64
guard.cornerPush.velOff = 0
air.velocity = -2.16, -8.81
air.cornerPush.velOff = 0
yAccel = 0.5
fall = 1
fall.recover = 1
fall.recoverTime = 120
forceStand = 1
airguard.ctrltime=12
airguard.velocity=ifelse((var(20)),-4,-8),-3
forcestand=1
palFX.time = 30
palFX.mul = 128, 128, 128
palFX.sinAdd = 96, 96, 96, 4
envshake.time=12
envshake.ampl=Ifelse(random<=500,-3,3)

[State 1100, flames]
type = helper
trigger1 = movehit && numtarget && !numhelper(7180)
trigger1 = !(target, time) && (target, movetype = H)&&(enemynear,stateno=[5000,5050])
helpertype = normal
stateno = 7180
ID = 7180
name = "flames"
postype = p2
ownpal = 1
facing = -1
ignorehitpause = 1
pauseMoveTime=255

[State 1100, StateTypeSet]
type = StateTypeSet
trigger1 = AnimElemtime(7)>= 0
movetype = I

[State 0, ChangeState]
type = ChangeState
trigger1= vel y > 0
trigger1= pos y > -vel y
value = 1101
;----------------------------------------------------------------------------------------------
;Landing
[StateDef 1101]
type = S
physics = N
moveType = I
velSet = 0,0

[State 1100, Anim]
type = ChangeAnim
trigger1 = !time
value = 1132+var(10)
ignorehitpause=1

[State 1100, Anim]
type = ChangeAnim
trigger1 = !time && Var(10)=3
value = 1132
ignorehitpause=1

[State 1201, PosSet]
type = PosSet
trigger1 = 1
y = 0

[State 52, Landing Sound]
type = PlaySnd
trigger1 = !Time
value = 52,0

[State 52, Landing Dust Explod]
type = Explod
trigger1 = !Time
anim = 8106
sprPriority = -3
posType = P1
scale = 0.5,0.5
pauseMoveTime = -1
superMoveTime = -1
ownPal = 1

[State 1201, End]
type = ChangeState
trigger1 = !AnimTime
value = 0
ctrl = 1
Re: It does not connect the blows
#8  September 14, 2018, 07:15:18 pm
  • *
  • If you change ... The world changes with thee
but in excel mode or customcombo if it connects, as seen with saisyu
Re: It does not connect the blows
#9  September 14, 2018, 08:32:54 pm
  • ****
    • crepa.neocities.org
Ok, so you have different hitdefs for different modes of the char, probably some for normal Iori and others for Orochi Iori.
From what I can tell, you can try modifying the number here:

trigger1 = !var(16) && (var(15)<1 || var(20))

In PotS style characters, var(15) is used for juggle points, try increasing this number to, say, 4, or you can remove var(15) entirely (not recommended because you can end up making an infinite).

See if that works. Also you must know which hitdef to modify, because of the modes I said earlier (modifying only normal Iori will make Orochi Iori still miss the moves, for example).
Re: It does not connect the blows
#10  September 14, 2018, 10:50:02 pm
  • *
  • If you change ... The world changes with thee
Thank you very much!! it has helped me a lot

the curiosity that I have is because in the EXespecials they have the same (var (15) <1
and if they connect the blows.
Re: It does not connect the blows
#11  September 14, 2018, 11:27:40 pm
  • ****
    • crepa.neocities.org
Yes, let me explain:

trigger1 = !var(16) && (var(15)<1 || var(20))

This means that you must not have var16, and have either var 15 under 1 OR var20 active. Var20 is exactly the custom combo, so whenever you have custom combo active, it will hit, no matter the situation. If you do not have custom combo activate, you have no var20, so you must have var15 under 1.

For EX moves, they have a different hitdef, probably with a higher number where I told you. :)
Re: It does not connect the blows
#12  September 15, 2018, 02:01:22 am
  • *
  • If you change ... The world changes with thee
Many Thanks DeathScythe
You have helped me a lot :megusta:
Re: It does not connect the blows
#13  September 15, 2018, 02:06:09 am
  • *
  • If you change ... The world changes with thee
To avoid opening another topic about stringing blows

I am adding excel combos / custom combos post style

I have added the states in the cns, the animation, sprites, commands in cmd, etc.

but at the time of activating it, the movements remain the same, they are not chained, nor canceled, the speed is the same.

What do I need to add?

Anything else I have to add in the cmd and cns?
Re: It does not connect the blows
#14  September 15, 2018, 05:55:22 am
  • ****
    • crepa.neocities.org
Ok, we are talking about PotS style characters, right?
In statedef -3, you need to set the chain/cancel checks. I'm not sure if your char uses the same variables, but this is how it is usually coded:

Code:
[State -3, Chain Reset]
type = varset
trigger1 = 1
var(4) = 0
ignorehitpause = 1

[State -3, Chain Check]
type = varset
trigger1 = var(20) && (StateNo = [200,699]) && MoveContact
trigger2 = var(20) && (StateNo = [1000,2999]) && StateType != A && (MoveContact || var(18))
var(4) = 1
ignorehitpause = 1

[State -3, Cancel Reset]
type = varset
trigger1 = 1
var(6) = 0
ignorehitpause = 1

[State -3, Cancel Check]
type = varset
triggerall = MoveContact || var(18)
trigger1 = var(20) && (StateNo = [200,699])
trigger2 = var(20) && (StateNo = [1000,2999]) && (MoveContact || var(18))
trigger3 = (StateNo = [200,699]) && Time <= 2
; from here, you will need to set your own cancels, look at other characters as examples. ex: cancel a strong punch into a special.
var(6) = 1
ignorehitpause = 1

[State -3, Super Cancel Reset]
type = varset
trigger1 = 1
var(7) = 0
ignorehitpause = 1

[State -3, Super Cancel Flag Reset]
type = VarSet
trigger1 = var(21)
trigger1 = (StateNo != [3000,4999]) || MoveType = H
var(21) = 0
ignoreHitPause = 1

[State -3, Super Cancel Check]
type = varset
trigger1 = var(20) && (StateNo = [200,699])
trigger2 = var(20) && (StateNo = [1000,2999]) && (MoveContact || var(18))
trigger3 = (StateNo = [200,699]) && Time <= 2
; same here, you need to set your own cancels
var(7) = 1
ignorehitpause = 1

If you use a template or if you're building your character over another character, this code is probably inserted already.

Now in the cmd you need to add this to your moves:

[State -1, Standing Medium Punch]
type = ChangeState
value = 210
triggerAll = !AILevel
triggerAll = command != "holddown" && command = "y"
triggerAll = StateType != A
trigger1 = ctrl || (StateNo = [100,101])
trigger2 = var(4) ; here, use var(4) for normal moves, var(6) for special moves (like hadouken/shoryuken), and var(7) for supers (like shinkuu hadouken)
Re: It does not connect the blows
#15  September 16, 2018, 06:42:05 pm
  • *
  • If you change ... The world changes with thee
hello DeathScythe
I have added the code in the system.ST state -3 and the var (4) in the cmd, but it still does not work.
I'm sending you the cmd code because it apparently has another template to activate the customcombo

Code:
[State -1, Excel Combo]
type = changestate
value = 760
triggerall = !AIlevel
triggerall = command = "excelcombo"
triggerall = roundstate = 2 && power >= 1000 && !var(20)
trigger1 = (ctrl || (stateno = [100, 101]))

;[State -1, Excel Combo]
;type=changestate
;value=900
;trigger1= !AILevel && [b]!var(15)[/b]
;trigger1= command="excelcombo"
;trigger1= roundstate=2 && power>=1000 && ctrl

Code:
[State -1, Stand Light Punch]
type = changestate
value = 200
triggerall= !AILevel
triggerall= command="x" && command!="holddown" && statetype!=A
trigger1 = (ctrl||var(16)=1) || (stateno=[100,101])
trigger2 = (stateno=200 || stateno=250) && time>=5

trigger3 = var(4)

[State -1, Stand Medium Punch]
type=changestate
value=210
triggerall= !AILevel
triggerall= command="y" && command!="holddown" && statetype!=A
trigger1= (ctrl||var(16)=1) || (stateno=[100,101])
trigger2= (stateno=200 || stateno=250) && (movecontact=[1,4])

trigger3 = var(4)

[State -1, Stand Hard Punch]
type=changestate
value=220
triggerall= !AILevel
triggerall= command="z" && command!="holddown" && statetype!=A
trigger1= (ctrl||var(16)=1) || (stateno=[100,101])
trigger2= ((stateno=[200,260])) && (movecontact=[1,4]) && StateNo != 220

trigger3 = var(4)


Esto en el System.ST

Code:
;====================<CUSTOM COMBO>====================
;Ground Version
[Statedef 760]
type = U
physics = U
movetype = A
anim = ifelse(statetype = A, 762, 760)
ctrl = 0
velset = ifelse((statetype = S), 0, vel x), ifelse((statetype = S), 0, vel y)
poweradd = -1000
[State 760, Stop]
type = posfreeze
trigger1 = anim = 762
value = 1

[State Corner Push]
type = varset
trigger1 = !time
fvar(5) = 0

[State 760, Var]
type = varset
trigger1 = (anim = [760, 761]) && !animtime
trigger2 = anim = 762 && !time
var(20) = 180

[State 760, NHB]
type = nothitby
trigger1 = (anim = [760, 761])
trigger2 = anim = 762 && time <= 1
time = 8
value = SCA

[State 760, Custom Combo Time]
type = VarSet
trigger1 = Time >= 4
var(20) = 180

[State 760, Voice]
type = PlaySnd
trigger1 = Time = 4 && var(40) != 1
value = 3000,0
channel = 0

[State 760, Voice (Violent)]
type = PlaySnd
trigger1 = Time = 4 && var(40) = 1
value = 3100,10
channel = 0

;[State 760, Custom Combo FX Helper]
;type = Helper
;trigger1 = Time = 4
;helperType = Normal
;stateNo = 8400
;ID = 8400
;name = "Custom Combo FX"
;posType = P1
;pos=43,-106
;superMoveTime = 255
;size.xScale = 1
;size.yScale = 1
;ownpal = 1

[State 760, Super Pause FX]
type = helper
trigger1 = !time
helpertype = normal
stateNo = 8400
ID = 8400
name = "Custom Combo FX"
posType = P1
pos=43,-106
ownpal = 1
size.xscale = 1
size.yscale = 1
persistent = 0
supermovetime = 9999

[State 760, superchargepause]
type = superpause
trigger1 = !time
time = 30
anim = -1
sound = s7, 2
darken = 0
movetime = 30 * (anim != 762)

[State 760, Shadows]
type = afterimage
trigger1 = (anim = [760, 761]) && time = 30
trigger2 = anim = 762 && time = 1
time = 2
timegap = 1
framegap = 4
length = 13
paladd = 0, 0, 0
palmul = 0.75, 0.75, 0.75
palcontrast = 64, 128, 192
palpostbright = 0, 0, 0
trans = add1

[State 760, End]
type = changeanim
trigger1 = anim = 762 && !animtime
value = 41
elem = 6

[State 760, Type]
type = statetypeset
trigger1 = anim = 41
statetype = A
physics = A
[State 760, Ctrl]
type = ctrlset
trigger1 = anim = 41
value = 1

[State 760, End]
type = changestate
trigger1 = (anim = [760, 761]) && !animtime
value = 0
ctrl = 1

Last Edit: September 16, 2018, 06:45:52 pm by soilworksoilwork
Re: It does not connect the blows
#16  September 19, 2018, 08:28:29 pm
  • *
  • If you change ... The world changes with thee
the latter remained unanswered,
but also thank you very much for helping me :megusta: :megusta: