News:

MFG's Character of the Month: October 2026 Nominations

Main Menu

My Groove checking code doesn't work...

Started by TrinitroRoy, February 21, 2013, 05:06:34 PM

Previous topic - Next topic

TrinitroRoy

I tried to make a character with grooves, just for fun.
However, there is a problem:

[State -1, Standing Parry]
type = hitoverride
triggerall = var(99) = 0 || var(99) = 2
trigger1 = !AIlevel
trigger1 = roundstate = 2 && (statetype = S || stateno = 5120)
trigger1 = command = "fwd" && command != "back" && command != "up" && command != "down"
trigger1 = ctrl || (stateno = [700, 701]) || stateno = 5120
trigger1 = var(21) := 1
attr = SA, AA, AP
stateno = 700
slot = 0
time = 8

[State -1, Crouching Parry]
type = hitoverride
triggerall = var(99) = 0 || var(99) = 2
trigger1 = !AIlevel
trigger1 = roundstate = 2 && statetype != A
trigger1 = command = "down" && command != "fwd" && command != "back" && command != "up"
trigger1 = ctrl || (stateno = [700, 701]) || stateno = 5120
trigger1 = var(21) := 2
attr = C, AA, AP
stateno = 701
slot = 0
time = 8

[State -1, Air Parry]
type = hitoverride
triggerall = var(99) = 0 || var(99) = 2
trigger1 = !AIlevel
trigger1 = roundstate = 2 && statetype = A
trigger1 = command = "fwd" && command != "back" && command != "up" && command != "down"
trigger1 = ctrl || stateno = 702
trigger1 = var(21) := 3
attr = SA, AA, AP
stateno = 702
forceair = 1
slot = 0
time = 7


[State -1, Standing Parry]
type = hitoverride
triggerall = AIlevel && numenemy
triggerall = roundstate = 2 && statetype != A
triggerall = var(99) = 0 || var(99) = 2
trigger1 = (Ctrl || StateNo=21)
trigger1 = Random < (IfElse(P2bodydist x > 90,280+(Lifemax-Life)/2, 90+(Lifemax-Life)/2) * (AIlevel ** 2 / 64.0))
trigger1 = var(21) := 1
trigger2 = StateNo = [700, 701]
trigger2 = Random < (450+(Lifemax-Life)/2) * (AIlevel ** 2 / 64.0)
trigger2 = var(21) := 1
trigger3 = (Ctrl || StateNo=21) && (Enemynear,NumProj || Enemynear,NumHelper)
trigger3 = random < (380+(Lifemax-Life)/2) * (AIlevel ** 2 / 64.0)
trigger3 = var(21) := 1
attr = SA, AA, AP
stateno = 700
slot = 0
time = 8

[State -1, Crouching Parry]
type = hitoverride
triggerall = AIlevel && numenemy
triggerall = roundstate = 2 && statetype != A
triggerall = var(99) = 0 || var(99) = 2
trigger1 = (Ctrl || StateNo=21)
trigger1 = Random < (IfElse(P2Statetype=C,260+(Lifemax-Life)/2, 100+(Lifemax-Life)/2) * (AIlevel ** 2 / 64.0))
trigger1 = var(21) := 1
trigger2 = StateNo = [700, 701]
trigger2 = Random < (450+(Lifemax-Life)/2) * (AIlevel ** 2 / 64.0)
trigger2 = var(21) := 2
trigger3 = time < 5 || StateNo=21
trigger3 = var(21) := 1
attr = C, AA, AP
stateno = 701
slot = 1
time = 8

[State -1, Air Parry]
type = hitoverride
triggerall = AIlevel && numenemy
triggerall = roundstate = 2 && statetype = A
triggerall = var(99) = 0 || var(99) = 2
trigger1 = ctrl && random < (10+(Lifemax-Life)/10 * (AIlevel ** 2 / 64.0))
trigger1 = var(21) := 1
trigger2 = stateno = 702
trigger2 = random < ((250+(Lifemax-Life)/2) * (AIlevel ** 2 / 64.0))
trigger2 = var(21) := 1
trigger3 = Ctrl && (Enemynear,NumProj || Enemynear,NumHelper)
trigger3 = random < ((10+(Lifemax-Life)/2) * (AIlevel ** 2 / 64.0))
trigger3 = var(21) := 3
attr = SA, AA, AP
stateno = 702
forceair = 1
slot = 0
time = 6

As you can see, Parry only should work on var(99)=0 (Capcom) and var(99)=2 (EX).
However, my char even parries on var(99)=1 (Arc System Works), which should NOT happen.
I even tried the alternate version:

[State -1, Standing Parry]
type = hitoverride
triggerall = var(99) := 0 || var(99) := 2
trigger1 = !AIlevel
trigger1 = roundstate = 2 && (statetype = S || stateno = 5120)
trigger1 = command = "fwd" && command != "back" && command != "up" && command != "down"
trigger1 = ctrl || (stateno = [700, 701]) || stateno = 5120
trigger1 = var(21) := 1
attr = SA, AA, AP
stateno = 700
slot = 0
time = 8

[State -1, Crouching Parry]
type = hitoverride
triggerall = var(99) := 0 || var(99) := 2
trigger1 = !AIlevel
trigger1 = roundstate = 2 && statetype != A
trigger1 = command = "down" && command != "fwd" && command != "back" && command != "up"
trigger1 = ctrl || (stateno = [700, 701]) || stateno = 5120
trigger1 = var(21) := 2
attr = C, AA, AP
stateno = 701
slot = 0
time = 8

[State -1, Air Parry]
type = hitoverride
triggerall = var(99) := 0 || var(99) := 2
trigger1 = !AIlevel
trigger1 = roundstate = 2 && statetype = A
trigger1 = command = "fwd" && command != "back" && command != "up" && command != "down"
trigger1 = ctrl || stateno = 702
trigger1 = var(21) := 3
attr = SA, AA, AP
stateno = 702
forceair = 1
slot = 0
time = 7


[State -1, Standing Parry]
type = hitoverride
triggerall = AIlevel && numenemy
triggerall = roundstate = 2 && statetype != A
triggerall = var(99) := 0 || var(99) := 2
trigger1 = (Ctrl || StateNo=21)
trigger1 = Random < (IfElse(P2bodydist x > 90,280+(Lifemax-Life)/2, 90+(Lifemax-Life)/2) * (AIlevel ** 2 / 64.0))
trigger1 = var(21) := 1
trigger2 = StateNo = [700, 701]
trigger2 = Random < (450+(Lifemax-Life)/2) * (AIlevel ** 2 / 64.0)
trigger2 = var(21) := 1
trigger3 = (Ctrl || StateNo=21) && (Enemynear,NumProj || Enemynear,NumHelper)
trigger3 = random < (380+(Lifemax-Life)/2) * (AIlevel ** 2 / 64.0)
trigger3 = var(21) := 1
attr = SA, AA, AP
stateno = 700
slot = 0
time = 8

[State -1, Crouching Parry]
type = hitoverride
triggerall = AIlevel && numenemy
triggerall = roundstate = 2 && statetype != A
triggerall = var(99) := 0 || var(99) := 2
trigger1 = (Ctrl || StateNo=21)
trigger1 = Random < (IfElse(P2Statetype=C,260+(Lifemax-Life)/2, 100+(Lifemax-Life)/2) * (AIlevel ** 2 / 64.0))
trigger1 = var(21) := 1
trigger2 = StateNo = [700, 701]
trigger2 = Random < (450+(Lifemax-Life)/2) * (AIlevel ** 2 / 64.0)
trigger2 = var(21) := 2
trigger3 = time < 5 || StateNo=21
trigger3 = var(21) := 1
attr = C, AA, AP
stateno = 701
slot = 1
time = 8

[State -1, Air Parry]
type = hitoverride
triggerall = AIlevel && numenemy
triggerall = roundstate = 2 && statetype = A
triggerall = var(99) := 0 || var(99) := 2
trigger1 = ctrl && random < (10+(Lifemax-Life)/10 * (AIlevel ** 2 / 64.0))
trigger1 = var(21) := 1
trigger2 = stateno = 702
trigger2 = random < ((250+(Lifemax-Life)/2) * (AIlevel ** 2 / 64.0))
trigger2 = var(21) := 1
trigger3 = Ctrl && (Enemynear,NumProj || Enemynear,NumHelper)
trigger3 = random < ((10+(Lifemax-Life)/2) * (AIlevel ** 2 / 64.0))
trigger3 = var(21) := 3
attr = SA, AA, AP
stateno = 702
forceair = 1
slot = 0
time = 6

But I still get the same results. I also placed them on different triggers, but still the same results. What do I do wrong?
===My discord servers===
Unlimited Force HQ: https://discord.gg/hnyK7JZ
Mega Man Megamix Engine Help Server: https://discord.gg/Wjm9GYU

Touhou database (by Ryouchi):
http://mugenfreeforall.com/index.php?/topic/8257-touhou-project/
Quote from: bitter nothings on April 30, 2010, 09:35:51 PM
you are all small and can't grow manly sideburns

Rajaa Retired

Turn on your debug and watch as it tells you that the variable you're using is out of bounds. Only 60 variables, buddy, 0-59.

TrinitroRoy

Okay, I did it like you said. It still doesn't work...
===My discord servers===
Unlimited Force HQ: https://discord.gg/hnyK7JZ
Mega Man Megamix Engine Help Server: https://discord.gg/Wjm9GYU

Touhou database (by Ryouchi):
http://mugenfreeforall.com/index.php?/topic/8257-touhou-project/
Quote from: bitter nothings on April 30, 2010, 09:35:51 PM
you are all small and can't grow manly sideburns

Aki-San


TrinitroRoy

Ryu, partially by PotS (SFF, AIR, SND, CMD and some CNS) and partially by me (SFF, SND, AIR & CMD additions, specials, supers and CvsASW system).
===My discord servers===
Unlimited Force HQ: https://discord.gg/hnyK7JZ
Mega Man Megamix Engine Help Server: https://discord.gg/Wjm9GYU

Touhou database (by Ryouchi):
http://mugenfreeforall.com/index.php?/topic/8257-touhou-project/
Quote from: bitter nothings on April 30, 2010, 09:35:51 PM
you are all small and can't grow manly sideburns

Aki-San

#5
very good, I like very much of CvS chars with grooves.

Hey, you maked CvS Adel with grooves?

Rajaa Retired

This a help topic, Akito, not a topic about what type of characters you like.

QuoteOkay, I did it like you said. It still doesn't work...
All I told you to do was turn on the debug. Everything else was just telling you that your variable won't work because it's not valid. Logically, you should change your variable to a valid value.

TrinitroRoy

I truned on debug, but I don't know, how to find out, whenever a variable is valid or not...for which line should I look?
===My discord servers===
Unlimited Force HQ: https://discord.gg/hnyK7JZ
Mega Man Megamix Engine Help Server: https://discord.gg/Wjm9GYU

Touhou database (by Ryouchi):
http://mugenfreeforall.com/index.php?/topic/8257-touhou-project/
Quote from: bitter nothings on April 30, 2010, 09:35:51 PM
you are all small and can't grow manly sideburns

Rajaa Retired

Like I said earlier, valid variables are 0-59 for INTs. If you read the documentation, you will increase your knowledge and prevent silly errors like these.

The debug errors appear on the top left of the screen. Always have debug on when programming or testing a character.

TrinitroRoy

Hmm, I watch at the left corner, but the only invaled variables are var(56) and var(57).
Maybe, it helps, if I also post the config.txt:

;Groove Select (Test version)
;0: Capcom
;1: Arc System Works
;2: EX
[StateDef 7650]
physics = N
velSet = 0,0
anim = 1

[State 7650, 0 = Capcom, 1 = ArcSys, 2 = EX]
type = ParentVarSet
trigger1 = 1
var(59) = 1

[State 7650, End]
type = DestroySelf
trigger1 = RoundState = 2

At the moment, I make the char handle the grooves through this config.txt, until I have coded a proper groove selection.
===My discord servers===
Unlimited Force HQ: https://discord.gg/hnyK7JZ
Mega Man Megamix Engine Help Server: https://discord.gg/Wjm9GYU

Touhou database (by Ryouchi):
http://mugenfreeforall.com/index.php?/topic/8257-touhou-project/
Quote from: bitter nothings on April 30, 2010, 09:35:51 PM
you are all small and can't grow manly sideburns

Rajaa Retired

What does that have to do with the incorrect variable you're using? Are you even setting the variable? How does that affect the parry you need help with?

You're confusing me.

TrinitroRoy

Ahem:
Command:

[State -1, Standing Parry]
type = hitoverride
triggerall = var(59) := 0 || var(59) := 2
trigger1 = !AIlevel
trigger1 = roundstate = 2 && (statetype = S || stateno = 5120)
trigger1 = command = "fwd" && command != "back" && command != "up" && command != "down"
trigger1 = ctrl || (stateno = [700, 701]) || stateno = 5120
trigger1 = var(21) := 1
attr = SA, AA, AP
stateno = 700
slot = 0
time = 8

[State -1, Crouching Parry]
type = hitoverride
triggerall = var(59) := 0 || var(59) := 2
trigger1 = !AIlevel
trigger1 = roundstate = 2 && statetype != A
trigger1 = command = "down" && command != "fwd" && command != "back" && command != "up"
trigger1 = ctrl || (stateno = [700, 701]) || stateno = 5120
trigger1 = var(21) := 2
attr = C, AA, AP
stateno = 701
slot = 0
time = 8

[State -1, Air Parry]
type = hitoverride
triggerall = var(59) := 0 || var(59) := 2
trigger1 = !AIlevel
trigger1 = roundstate = 2 && statetype = A
trigger1 = command = "fwd" && command != "back" && command != "up" && command != "down"
trigger1 = ctrl || stateno = 702
trigger1 = var(21) := 3
attr = SA, AA, AP
stateno = 702
forceair = 1
slot = 0
time = 7


[State -1, Standing Parry]
type = hitoverride
triggerall = AIlevel && numenemy
triggerall = roundstate = 2 && statetype != A
triggerall = var(59) := 0 || var(59) := 2
trigger1 = (Ctrl || StateNo=21)
trigger1 = Random < (IfElse(P2bodydist x > 90,280+(Lifemax-Life)/2, 90+(Lifemax-Life)/2) * (AIlevel ** 2 / 64.0))
trigger1 = var(21) := 1
trigger2 = StateNo = [700, 701]
trigger2 = Random < (450+(Lifemax-Life)/2) * (AIlevel ** 2 / 64.0)
trigger2 = var(21) := 1
trigger3 = (Ctrl || StateNo=21) && (Enemynear,NumProj || Enemynear,NumHelper)
trigger3 = random < (380+(Lifemax-Life)/2) * (AIlevel ** 2 / 64.0)
trigger3 = var(21) := 1
attr = SA, AA, AP
stateno = 700
slot = 0
time = 8

[State -1, Crouching Parry]
type = hitoverride
triggerall = AIlevel && numenemy
triggerall = roundstate = 2 && statetype != A
triggerall = var(59) := 0 || var(59) := 2
trigger1 = (Ctrl || StateNo=21)
trigger1 = Random < (IfElse(P2Statetype=C,260+(Lifemax-Life)/2, 100+(Lifemax-Life)/2) * (AIlevel ** 2 / 64.0))
trigger1 = var(21) := 1
trigger2 = StateNo = [700, 701]
trigger2 = Random < (450+(Lifemax-Life)/2) * (AIlevel ** 2 / 64.0)
trigger2 = var(21) := 2
trigger3 = time < 5 || StateNo=21
trigger3 = var(21) := 1
attr = C, AA, AP
stateno = 701
slot = 1
time = 8

[State -1, Air Parry]
type = hitoverride
triggerall = AIlevel && numenemy
triggerall = roundstate = 2 && statetype = A
triggerall = var(59) := 0 || var(59) := 2
trigger1 = ctrl && random < (10+(Lifemax-Life)/10 * (AIlevel ** 2 / 64.0))
trigger1 = var(21) := 1
trigger2 = stateno = 702
trigger2 = random < ((250+(Lifemax-Life)/2) * (AIlevel ** 2 / 64.0))
trigger2 = var(21) := 1
trigger3 = Ctrl && (Enemynear,NumProj || Enemynear,NumHelper)
trigger3 = random < ((10+(Lifemax-Life)/2) * (AIlevel ** 2 / 64.0))
trigger3 = var(21) := 3
attr = SA, AA, AP
stateno = 702
forceair = 1
slot = 0
time = 6

[State -1, Reset Parry slot 0]
type = hitoverride
triggerall = Ifelse(AILevel=0,1,StateNo!=21)
trigger1 = (!ctrl && (stateno != [700, 702]) && stateno != 5120) || var(20)
trigger2 = movetype != I || (stateno = [100, 106]) || (stateno = [120, 132])
trigger3 = !AIlevel && (command = "holdback" || command = "holdup")
trigger4 = (statetype = S || statetype = C) && var(21) != 1 && var(21) != 2
trigger5 = statetype = A && var(21) != 3
trigger6 = (StateNo = [200,3999])
slot = 0
time = 0

[State -1, Reset Parry slot 1]
type = hitoverride
triggerall = AILevel
triggerall = Ifelse(AILevel=0,1,StateNo!=21)
trigger1 = (!ctrl && (stateno != [700, 702]) && stateno != 5120) || var(20)
trigger2 = movetype != I || (stateno = [100, 106]) || (stateno = [120, 132])
trigger3 = (statetype = S || statetype = C) && var(21) != 1 && var(21) != 2
trigger4 = statetype = A && var(21) != 3
trigger5 = (StateNo = [200,3999])
slot = 1
time = 0

Config.txt:

;Groove Select (Test version)
;0: Capcom
;1: Arc System Works
;2: EX
[StateDef 7650]
physics = N
velSet = 0,0
anim = 1

[State 7650, 0 = Capcom, 1 = ArcSys, 2 = EX]
type = ParentVarSet
trigger1 = 1
var(59) = 1

[State 7650, End]
type = DestroySelf
trigger1 = RoundState = 2

Initialize:

;==========< NORMAL RYU >==========
[Statedef 5900]
type = S
[State 5900, varreset]
type = varrangeset
trigger1 = !roundsexisted
value = 0
[State 5900, varreset]
type = varrangeset
trigger1 = !roundsexisted
fvalue = 0

[State 5900, Palette]
type = remappal
trigger1 = 1
source = 1, 1
dest = 1, palno

[State 5900, Configuration]
type = Helper
trigger1 = 1
helperType = Normal
stateNo = 7650
ID = 7650
name = "Configuration Helper"
posType = P1

[State 5900, modevar]
type = varset
trigger1 = 1
var(1) = 1
[State 5900, End]
type = changestate
trigger1 = !time
value = ifelse(roundno = 1, 190, 0)

I am sure, there is the connection (State 5900 creates Helper State 7650 and such), so here are all the created parts for the groove system in question.
To be honest, I don't see a problem there, so I would be very happy, if someone can find out, what's wrong there.
I really get the feeling, that I made a very stupid mistake somewhere...
...and sorry, if I'm confusing you.
===My discord servers===
Unlimited Force HQ: https://discord.gg/hnyK7JZ
Mega Man Megamix Engine Help Server: https://discord.gg/Wjm9GYU

Touhou database (by Ryouchi):
http://mugenfreeforall.com/index.php?/topic/8257-touhou-project/
Quote from: bitter nothings on April 30, 2010, 09:35:51 PM
you are all small and can't grow manly sideburns

Rajaa Retired

:= is changing the value of your variable, why are you using that operator? Just use a simple equal operator.

TrinitroRoy

Okay, replaced the ":=" with a regular "=", but the problem is still there...
===My discord servers===
Unlimited Force HQ: https://discord.gg/hnyK7JZ
Mega Man Megamix Engine Help Server: https://discord.gg/Wjm9GYU

Touhou database (by Ryouchi):
http://mugenfreeforall.com/index.php?/topic/8257-touhou-project/
Quote from: bitter nothings on April 30, 2010, 09:35:51 PM
you are all small and can't grow manly sideburns

Ricepigeon

You replaced all instances of var(59) := with =?

Try this, in your statedef -2 add this line:

[state -2, DTCB]
type = displaytoclipboard
trigger1 = 1
text = "Groove Variable is %d"
params = var(59)


Then open the char in mugen and turn on the debug info (ctrl+D). It should display the value of the variable underneath your character's information. If its what you set it to in the config then something else is the issue but if the value keeps changing then you have some other code changing the value of var(59).

TrinitroRoy

Sorry, but your code doesn't work either...
===My discord servers===
Unlimited Force HQ: https://discord.gg/hnyK7JZ
Mega Man Megamix Engine Help Server: https://discord.gg/Wjm9GYU

Touhou database (by Ryouchi):
http://mugenfreeforall.com/index.php?/topic/8257-touhou-project/
Quote from: bitter nothings on April 30, 2010, 09:35:51 PM
you are all small and can't grow manly sideburns

Rajaa Retired

He gave you clear instructions on how to use the code he posted! Disable any other displaytoclipboard controllers and use that one! It won't fix the problem for you, it will give you the information you need to help you fix the problem!

TrinitroRoy

Yay, now the display works. Thanks!
However, I found out, that Ryu is always in var(59)=0 for some odd reasons...
===My discord servers===
Unlimited Force HQ: https://discord.gg/hnyK7JZ
Mega Man Megamix Engine Help Server: https://discord.gg/Wjm9GYU

Touhou database (by Ryouchi):
http://mugenfreeforall.com/index.php?/topic/8257-touhou-project/
Quote from: bitter nothings on April 30, 2010, 09:35:51 PM
you are all small and can't grow manly sideburns

Rajaa Retired

Also place the config helper controller in the -2 so it can be summoned if the intro is skipped.

TrinitroRoy

Thanks, but it still didn't worked...
...var(59) still stays 0...
===My discord servers===
Unlimited Force HQ: https://discord.gg/hnyK7JZ
Mega Man Megamix Engine Help Server: https://discord.gg/Wjm9GYU

Touhou database (by Ryouchi):
http://mugenfreeforall.com/index.php?/topic/8257-touhou-project/
Quote from: bitter nothings on April 30, 2010, 09:35:51 PM
you are all small and can't grow manly sideburns