1 - Short Answer: Probably! Not-As-Short Answer: it’s not spelled out in plaintext, so you gotta do some math on it.
2 - No.
Thanks for replying, it’s strange how long PC SF4 has been out and those stuff weren’t added as a mod in training mode, they can be VERY useful!
i have a couple of suggestions if you don’t mind:
-
configurable shortcut to run the game in Ono, for example besides File you could have a “Run Game” menu button (game executable path configurable in Preferences)
-
all dropdown lists and checkbox flag fields should be distinguished from text input fields. a little downward arrow in the corner or a difference in cell background/style?
-
this one is a bit wild, but can you make the whole thing tabbed? like Excel for example with tabs underneath: http://i.imgur.com/5huyV.png
it’s very chaotic to juggle and transition through all the invididual windows. not to mention the main window is kind of worthless and you have to keep getting back to it just to launch another section
error1: thanks for the lengthy video, i watched it all
things are easier to follow in this version of Ono and modifying an existing character is relatively simple
can you do a quick tutorial on how to copy special moves from one character to another? copy/paste a move script between characters doesn’t work… can it be added by hand? also what is R in front of light normals like R5LP?
-
Yep
-
Yep
-
Can do it, not sure if it’s best route to go, too many variables right now, maybe have a separate interface selectable in options.
I can see the benefits of doing it both ways.
Edit, New ono build, same link as before https://dl.dropbox.com/u/95809562/OnoEdit.zip
Eternal
1687
R stands for “Rapid” it is for light attacks that are chained into. The only real difference is the cancel list for the move.
//
Updated the Moves section some more and changed some of the lists on attack table/cancels into tables.
When I finish the Moves Section I’ll move onto the Inputs section.
Thanks for the information, whenever I ask a series of questions the more information and/or examples you can provide me with the better I can make the wiki.
HI all.
I had given Sakura’s Hadoken to Abel and tested it.Thanks a million to Razor.
Because adding a projectile was tedious for characters like abel who don’t have a single vfx script.
But now its very easy to do so.
[media=youtube]oaGqB2nXHoY[/media]
would be great… we get rid of the main window, we can retain current position in each tab (right now you have to scroll each time to where you left), pressing Help in the File Menu should open the wiki section for current selected tab…
a few more suggestions/notes:
- I can’t seem to remove/clear moves from the Cancel section, there’s not way to select the move since it’s a dropdown list (maybe have a checkbox near it then click remove to clear/delete selected items?). right now the work around is to make a DUMMY move, replace the current move with the DUMMY. then delete the DUMMY in Moves section.
- I added a charge move to Yun, but it doesn’t appear under Motion list options in the Moves section.
- what is the difference between Copy and Duplicate function?
- “Clear” option under the Most Recent Used list, sometimes it gets cluttered with irrelevant/no longer existing stuff
- “Close” option in File menu (to close current opened file)
After asking quite a few people who use it, it was decided it should not use a tabbed interface, sorry.
- Click next to the dropdown, it will select the row which you can then delete
- Not sure about that will have to check.
- Copy allows you to paste it elsewhere, duplicate makes a copy in the same field as the copy
- Can and will do that
- Can and will do that.
what is the downside of tabs? i can’t think of any…
- with tabs everything is loaded and ready, you don’t have to launch individual windows of every section
- unified menu across tabs, you don’t have to return to main window just to Save
- when you have 2 instances of Ono running, you have only 2 workspaces instead of a lot of confusing windows
- because you can’t have more than 1 tab with the same section, you avoid weird scenarios where you have 2 windows of the same section with different values that could corrupt your data
well, the Save part is the most annoying thing (having to return to main window each time). if you add a Save hotkey in all Ono windows, i’ll shut up 
Sure lol, I can do that.
Downside just from my perspective, is that sometimes i like to have more than one of the same window open, comparing ect.
Edit, Added a new little feature, down at the bottom of the window, math might be a bit off though…
https://dl.dropbox.com/u/95809562/FrameCounter.png
hunterk
1693
@razor5070
damn, dude, that frame calculator is going to make some people’s day! Good shit, man.
razor5070: great addition. good job!
can you tell us how do you calculate the frames for testing purposes?
-
can a Hitbox of Type: Reflect, reflect fireballs diagonally down? right now with UnkByte3 0/1/2 you have preset directions absorb/straight/diagonally up
is it possible to revert the fireball in the opposite direction as a general rule instead of using a preset direction?
-
Rose: when you absorb fireballs, you get a bonus damage on hit on your next Soul Spark. where is that bonus damage defined?
-
Yun: can a move be restricted to be performed only when Genei Jin is active?
@error1
[S]can you please make a tutorial that covers how to add a new animation to a character?[/S]
[S]with 2 examples similar to these:[/S]
[S]- how to make Ryu shoot fireballs while in the air? this needs an air fireball launch animation…[/S]
[S]- give Ryu a move from another character: Sagat’s tiger knee[/S]
the equation is
x += [s, s ≥ s[*] ∨ s ≤ s[*]] ÷ s[m] % T
the code I wrote is :
public class RealFrameCounter
{
public Script Target { get; set; }
public object GetHumanFrames
{
get
{
var hitboxcalc = GetHitboxFrameCalculations;
var peram = new Object[] {(int)hitboxcalc[0],(int)hitboxcalc[1],(int)hitboxcalc[2],(int)GetCalculatedFrames}; //round everything
return String.Format("Frames* -> Approx [ Start Up {0}, Active {1}, Recovery {2}, Total {3} ]",peram);
}
}
public float GetCalculatedFrames
{
get
{
ushort realFrames = Target.TotalFrames;
var speed = (ObservableCollection<SpeedCommand>) Target.CommandLists[4];
if (speed == null || speed.Count <= 0) return realFrames;
var totalframesskipped = 0f;
for (var i = 0; i < speed.Count; i++)
{
var appliedframes = 0;
if (i < speed.Count - 1)
{
appliedframes = speed[i + 1].StartFrame - speed*.StartFrame;
}
else
{
appliedframes = realFrames - speed*.StartFrame;
}
if (speed*.Multiplier == 0)
totalframesskipped += appliedframes;
else
totalframesskipped += appliedframes/speed*.Multiplier;
}
return totalframesskipped;
}
}
public float[] GetHitboxFrameCalculations
{
get
{
var hitboxs = (ObservableCollection<HitboxCommand>)Target.CommandLists[7];
float startup = 0f, active = 0f, recovery = 0f;
foreach (var itm in hitboxs)
{
if (itm.Type == HitboxCommand.HitboxType.PROXIMITY) continue;
active += (itm.EndFrame - itm.StartFrame)/GetFrameSpeedMulty(itm.StartFrame);
if (startup == 0)
startup = GetSpeedModifiedFramesUpTo(itm.StartFrame);
}
recovery = GetCalculatedFrames - active - startup;
return new[]{startup,active,recovery};
}
}
public float GetSpeedModifiedFramesUpTo(int frame)
{
var speed = (ObservableCollection<SpeedCommand>)Target.CommandLists[4];
if (speed == null || speed.Count <= 0) return frame;
var totalframesskipped = 0f;
for (var i = 0; i < speed.Count; i++)
{
var appliedframes = 0;
if (i < speed.Count - 1)
{
if (speed*.EndFrame >= frame) continue;
appliedframes = speed[i + 1].StartFrame - speed*.StartFrame;
}
else
{
if (speed[speed.Count - 1].EndFrame >= frame) continue;
appliedframes = frame - speed*.StartFrame;
}
if (speed*.Multiplier == 0)
totalframesskipped += appliedframes;
else
totalframesskipped += appliedframes / speed*.Multiplier;
}
return totalframesskipped;
}
public float GetFrameSpeedMulty(int frame)
{
var speed = (ObservableCollection<SpeedCommand>) Target.CommandLists[4];
if (speed == null || speed.Count <= 0) return 1f;
for (int i = 0; i < speed.Count; i++)
{
if (i < speed.Count - 1)
{
if (frame >= speed*.EndFrame && frame <= speed[i + 1].StartFrame)
return speed*.Multiplier;
}
else
{
var lastmult = speed[speed.Count - 1].Multiplier;
return lastmult == 0 ? 1f : lastmult;
}
}
return 1f;
}
}
If you want to do it with a calculator,
find the first speed modifier, then find the next, count the frames inbetween them an divide by the multiplier add that to the new total
if there is only one speed modifier or your at the end, take the start frame of the modifier and the total frames count the frames inbetween then divide by the multiplier
I know i’m not error1 lol, but we don’t yet have the ability to add or edit new animations or copy them to a different character.
error1
1696
no
no idea, probably not in the bac/bcm
sure
there isn’t a good understanding of the animation format at the moment, you can copy paste ultra’s tho
ah yes :<
i figured it out eventually. i was trying to make some specials performable in air, but the character would teleport on the ground everytime… even after copying everything from an example in SF4 Remix
i eventually figured out you have to set UnknownFlags2 to 131074
@Eternal: can you please document the known values for these flags in Script Header Data?
@razor5070: wow… i though it was something more deductible from the interface (speed multipliers and such). i tried a lot of guessing of a formula from those values, guess it’s a lot more complicated 
Yet another ono update, lol, at the usual link which is https://dl.dropbox.com/u/95809562/OnoEdit.zip
for those who don’t know.
Remember! frame calculations are only an approximation.
EDIT! if you have already downloaded this update, do it again lol.
Big props to Error1 for helping me dial in the frame counter. should be functioning as intended now.
A little looksy at what we got
https://dl.dropbox.com/u/95809562/onoaero.png
Eternal
1699
I intend to do just that when I reach the script header data page. I’m kind of putting off some of those things because I know that it will be A LOT of research. I could probably dedicate a whole page just to the ECT - Control function.
@Error/Razor
Regarding the target animation time calculations. I think “blocking” animation time needs to be explored because all blocking animation is 17F with interrupt at frame 0, regardless of strength used. Yet that doesn’t work at all with the formula you listed, it matches up SOMETIMES. However here is an example of it not working:
Ryu’s crouching HP is 8F active 28F recovery and -18F on block.
The target animation time for the move on block is 16 and uses Guard_LL which is 17F total with interrupt on 0.
With your formula the hitstun should be (17-10)+16 = 23 right? But if you follow that, then hitting on the first frame the move should only be -12F since hitting on the first frame would be (7+28)-18 = 17F of hitstun which matches up with the move’s ‘on hit’ values but not on block values.
///
Also: Anyone think that an SF4 Remix side tournament at EVO would be awesome? Plus then you could show Ono and Capcom some of the awesome stuff you’ve done in person and maybe inspire them to open up their games more to modding 
Hey everyone!
First of all, big props to all the hard work and research being done here. Great to see people succeed in making the engine more accessible.
When I saw Errors Ono! tutorial on the front page I was reminded of an idea I had some time ago. Essentially, I wanna try to get Urien into SF4 with Seth as a template. Do note that I have not yet watched the video since I’m at work and I don’t have the first clue about modding SF4 in general either haha. I pick stuff up quickly though and am willing to put some effort into it. So I thought I’d ask the people who are experienced with the engine whether this is possible at all or a monumental effort or sth.
I’d given it a little thought before and noticed most of Urien’s stuff is already in the game in some form. Would it be possible to “create” new special moves and transfer animations from other characters?
- Lots of Seth’s normals could remain unchanged for the beginning. lps, lks, mids, crouching and jumping fierce&roundhouse. close s.rh into far s.rh, no idea about Urien’s s.fierce though. Hakan’s fierce kinda remotely resembles that move.
- Tackle of course Seth’s focus animation. Dunno which move to base it on though, considering juggle behaviour etc, since it would be nice to be able to recreate Urien’s corner game. Maybe Yun shoulder, Honda headbutt or even scissor kicks?
- Dudley’s thunderbolt for kneedrop? With Giefs jumping knee animation. Not sure what to do with the “bounce off” on block.
- Of course Gief’s jumping headbutt animation for Urien’s headbutt, looks identical. For the move itself, maybe a modified Balrog headbutt, recovers quicker, different trajectory.
- Gouken’s hadou for metallic sphere, no idea about the projectile though. Black coloured, smaller yoga catastrophe
- Maybe Hawk’s focus attack animation, thought that would fit the character
- Gouki’s taunt 4 for his taunt haha. Need to throw in a hitbox.
- Dunno what I’d do about Aegis. Apart from the gameplay implementation, for the visuals, just a rectangle transparent projectile with Yun’s geneijin afterimage effect could do it. That’s low priority though, I’d be happy just trying to recreate the normals and specials for now.
Please bear with me since I’m not really sure if what I’m thinking up here is even remotely possible. Just throwing it out there but in case it isn’t, please enlighten me so I don’t waste my time haha.
Eternal
1701
Glad to see more people interested in the modding, if you need information on things make sure to also visit the wiki I’ve been setting up (currently there is only 3 complete pages and a 4th that is around half done, but I’m working on the wiki almost every day.)
http://onotool.wikispaces.com/
As for what you are requesting, at the moment AFAIK it is impossible to move one specific animation from a character to another. You can make a character use another characters entire animation set via a moveswap but taking one move and giving it to another character doesn’t seem possible at the moment. Perhaps once it is understood how the .bac / bcm files handle the list of animations for a character it’ll be possible.
@Jimbossa: i was trying to mod Rolento into the game too (since his model has been backported from SFxT), but you can’t mix animations from multiple characters like Eternal said. you have to reuse the set of animations from a single character
Seth to Urien could be done reusing/hacking only Seth’s animation, but it would look kind of weird. hopefully adding new animations can be figured out
Rolento would be easy too: replace Vega’s Claw with Baton that never falls off, add modified versions of Vega’s roll & walldive, Ibuki kunai, patriot circles would be a trickier.
@razor5070: can the default TAB in scripts be set to Data, since it’s a lot richer than Header and sees more editing in general? thanks