Released SF4SO v0.5 with the fix mentioned above. Should work outside training mode now.
Download at:
http://www.slitherware.com/sf4-show-off/
as usual.
None of your old scripts will work with this release.
ok it was just getting stuck on the 200, it works now
Hi Lullius, and congratulations for your work !
Short question : If you’re able to read SF4’s instant memory, is it possible to grab informations in games (replay reading or live offline/online game) and display them on someway :
_To tell wich character was picked on the select screen ?
_To tell when a round begin, end, and which round ?
_To tell wich move (normal, special, jump, …) was performed by any of 2 players ?
_To tell how many life (%age) remain to each character at any time ?
First simple application of that, way different of yours : IRC live Scorebot. In 2013 it’s not a finality (even if it looks pretty cool), just an “exercise”. It’s more gathering datas than use them to interact with the game like you do.
Do you think it’s possible ? Which kind of data are you unable to get with your tools ? I guess any…
Thank you for reading me and congratz again for your skills
Nayte
Hi Lullius it’s an amazing Job oO
I join in Nayte for information we will could recover in game
I created an account specifically to write to you and congratulate you for your work! I am also a developer, but especially in JAVA tech and I’m really interested in your code. I developed a small utility in Java/Swing, which allows among other things to make cards for all match-ups of SSF4AE.
Try it if you want uploadhero.co/dl/vXWep2uk
I think I could use your tool to find new ideas to implement my little tool and other way
thx so mutch for your job !
Hi, nayte, and thank you.
Yes, this should all be very possible.
I know how to tell which characters are selected in the character select screen, but have not tested it online. I don’t know if releasing anything with that information is good…
I don’t currently know how to tell when a round begins, ends and which round it is, but this shouldn’t be too hard to do.
There’s at least two ways of knowing what each character is doing in the match. Number one is programming a tool which works like the input display in training mode, but I don’t think it’s a good idea… But to get the information and broadcast it through IRC would be possible. Number two is a bit more time consuming. Every move in SF4 has a number. Standing still is 0, crouching is 1, etc. Each move, and special move has an “action”-number. You could build a database with all the actions for all the characters, and that way know what both characters are doing at any time.
Telling how much health each player has (left) is simple, and already done in SF4 Peeker. Converting health remaining to % is easy.
Anything is possible, it just depends on how difficult it is to find what you need in the game’s memory. That’s the hardest part.
Hi Todndj, and thanks.
I tried your tool, it’s very cool, and I could see this being very useful.
I’m not quite sure how I could help you, or what information you’d be interested in. If there is some specific information you are after, I’ll try to help you, but please be patient as it may take some time.
it looks like the directions, don’t take crossups into account? so b=f and f=b if you switch sides.
When does this happen? All the time, or in a specific case? This might be because the hitbox has crossed up, but the character itself hasn’t (yet). I’m not sure though. It might also be because I’ve simply forgot to set the direction somewhere in the code.
EDIT: Hmmm, I checked the code, and every time f,b or any of the shortcuts (dp, qcf and qcb) are pressed, SF4SO checks the position of both players and sets the direction…
I know that grabs puts both players in the same exact position (X and Y), and that might confuse SF4SO, but that shouldn’t be the problem here.
Does this continue to happen even if you switch sides, wait until you land, and then hit f or b?
ok yeah, it seems inconsistent
.(dmk).(flkmkhk)(+b).35.(-b).50(lp).(+b).24.(-b).1.
makes blanka, dmk, command dash, walk forward, lp, walk forward
I was testing to see if you could use it to preserve a charge though a crossup
(in sf4 if you switch directions frame perfect, you can maintain a charge)
Yeah, now I think I get it.
SF4SO doesn’t release the button automatically (and press the new direction) if you switch sides. So, because the first (+b) happens before Blanka goes through the opponent, it holds b from the original position. Then, when you try to release it again with (-b), you have actually switched sides, and the first b and the second b are not the same direction. So you are not actually releasing a button at all, because THAT b hasn’t been pressed. Because you never released the original b, which is now f, Blanka keeps walking forward after the script is done. If you do +f instead of the first +b, I think it should be okay.
About maintaining charge, you will have to figure out which frame to switch the direction manually. There’s no function in SF4SO to do this (I thought it didn’t work in SF4).
Oh, I accidentally clicked the “Disagree” button. I’m really sorry. I clicked it again, and it looks like it disappeared though.
ok that makes sense, should be easier to nail down the frame with your tool then normal
Proximity blocking OS video with SF4SO.
Ryu U1 Proximity Block Option Select (Tool Assist)
Thanks a lot for sharing this, and it’s especially nice to see that you also included the script.
Here are more proximity block OS scripts for Abel. Can you add comments in scripts?
;
; These normals do work I suspect because they are crouching normals
;
; cr lp
.(dlp).(d)(df)(f)(+dblk).6(-lk).20(-db)(-f)
; cr lp chains cr lk
.(dlp).7(d)(df)(f)(+dblkmk)(-lkmk).20(-db)(-f)
; cr lp rolls
.(dlp).8(d)(df)(f)(+dblkmk)(-lkmk).20(-db)(-f)
; cr hp
.(dhp).28(d)(df)(f)(+dblkmk)(-lkmk).20(-db)(-f)
; cr hk
.(dhk).33(d)(df)(f)(+dblkmk)(-lkmk).20(-db)(-f)
; cr mk
.(dmk).20(d)(df)(f)(+dblkmk)(-lkmk).20(-db)(-f)
; cr mk cod ac tt on ryu cr lk
.(dhk)(df)(flk).67
.(dmk).20(d)(df)(f)(+dblpmp)(-lpmp).(-dbf)(blp)
; cr mk cod ac tt on ryu cr lp
.(dhk)(df)(flk).66
.(dmk).20(d)(df)(f)(+dblpmp)(-lpmp).(-dbf)(blp)
; cr mk ex tt
.(dhk)(df)(flk).66
.(dmk).20(d)(df)(f)(+dblpmp)(-lpmp)(-dbf)(blp)
; cr mp
.(dmp).14(d)(df)(f)(+dblk)(-lk).20(-db)
.(dmp).14(d)(df)(f)(+lk)(-lk)(+db).20(-db)
; cr mp script did not work
.(dmp).14(d)(df)(f)(+dblk).20(-db)(-lk)
;
; These normals don’t work I suspect because they are standing normals.
;
; far hk
.(hk).28(d)(df)(f)(+dblkmk)(-lkmk).20(-db)(-f)
; close hk
.(hk).21(d)(df)(f)(+dblkmk)(-lkmk).20(-db)(-f)
; close hp
.(dhk)(df)(flk).58
.(hp).30(d)(df)(f)(+dblkmk)(-lkmk).20(-db)(-f)
; close hp test by neutral jumping
.(hp).30(d)(df)(f)(+dblkmk)(-lkmk).20(-db)(-f)
; far mp
.(mp).15(d)(df)(f)(+dblk)(-lk).20(-db)
.(mp).15(d)(df)(f)(+lk)(-lk)(+db).20(-db)
; far mp
.(mp).14(d)(f)(d)(f)(+dbhp)(-hp).20(-db)
.(mp).14(d)(f)(d)(f)(+dblpmphp)(-lpmphp).20(-db)
; close mk can special cancel, but did not work
.(mk).18(d)(df)(f)(+dblkmk)(-lkmk).60(-db)(-f)
Oh, sorry, I didn’t realize that you weren’t the owner of the video, anyway, thanks for sharing.
You can’t add comments in scripts. Or, you can write anything you want, really, but if it contains anything SF4SO recognizes (hk, mp, dp or (f) for example), SF4SO will execute them. As long as you don’t write anything like that, SF4SO should just ignore it. Example:
mp.50
its really important to wait 50 frames right here!
This will do mp->wait 50 frames -> mp
This is because the “mp” in “important” is treated like any other “mp”, and will result in the character doing a medium punch.
but if you do it this way:
mp.50
its really iMportant to wait 50 frames right here!
it will do mp->wait 50 frames -> nothing (or just continue the script if there is more…)
This is because MP and mp are recognized as medium punch, but Mp and mP are not. It’s a silly way of commenting, but if you need it, it works.
Maybe I could add “;” , “#” or “//” as a comment marker in the next version.
Can you explain the frames and timing for (+lk)(-lk)(+db)(-db)?
Does (-lk)(+db) release lk and hold db on the same frame?
Or does it release lk one frame before holding db?
frame
0 lk down
1 lk up
2 db down
3 db up
frame
0 lk down
1 lk up, db down
2 db up
SF4SO scripts for Abel cr mp proximity block OS roll.
The trick is releasing lk on the right frame while db is held.
I haven’t tried it, but negative plinking may help with timing. You could hold lk mk hk and releasing each kick one frame after another. If you have a bar, it will ex roll. Option selecting may be possible by holding lp mp hp lk mk hk and releasing each in order. If proximity block activates, you COD and if it doesn’t, you roll.
; works
.(dmp).14(d)(df)(f)(+dblk)(-lk).20(-db)
.(dmp).13(d)(df)(f)(+db)(lk).20(-db)
.(dmp).12(d)(df)(f)(+db).1(lk).20(-db)
.(dmp).11(d)(df)(f)(+db).2(lk).20(-db)
.(dmp).10(d)(df)(f)(+db).3(lk).20(-db)
.(dmp).9(d)(df)(f)(+db).4(lk).20(-db)
.(dmp).8(d)(df)(f)(+db).5(lk).20(-db)
.(dmp).7(d)(df)(f)(+db).6(lk).20(-db)
.(dmp).6(d)(df)(f)(+db).7(lk).20(-db)
.(dmp).5(d)(df)(f)(+db).8(lk).20(-db)
.(dmp).4(d).(df)(f)(+db).8(lk).20(-db)
.(dmp).3(d).(df).(f)(+db).8(lk).20(-db)
.(dmp).2(d).(df)…(f)(+db).8(lk).20(-db)
.(dmp).(d)…(df)…(f)(+db).8(lk).20(-db)
.(dmp).8(d)(df)(f)(+db).4(+lk).(-lk).20(-db)
.(dmp).8(d)(df)(f)(+dblk).6(-lk).20(-db)
.(dmp).7(d)(df)(f)(+db).(+lk).5(-lk).20(-db)
.(dmp).6(d)(df)(f)(+db).(+lk).6(-lk).20(-db)
.(dmp).6(d)(df)(f)(+db).(+lk).6(-lk).(-db)
.(dmp).7(d)(df)(f).(+lk).6(-lk)(+db)(-db)
; doesn’t work or rolls always
.(dmp).7(d)(df)(f).(+lk).6(-lk).(+db).(-db)
.(dmp).7(d)(df)(f)(+lk).6(-lk).(+db).(-db)
.(dmp).7(d)(df)(f).(+lk).6(-lk).(+db).(-db)
.(dmp).6(d)(df)(f)(+db).(+lk).6(-lk)(-db)
.(dmp).5(d)(df)(f)(+db).(+lk).6(-lk).20(-db)
.(dmp).5(d)(df)(f)(+db).(+lk).7(-lk).20(-db)
.(dmp).5(d)(df)(f)(+lk)(+db).7(-lk).20(-db)
.(dmp).6(d)(df)(f)(+db)(+lk).6(-lk).20(-db)
.(dmp).2(d).(df).(f).(+db).8(lk).20(-db)
.(dmp).4(d)(df)(f)(+db).9(lk).20(-db)
.(dmp).6(d)(df)(f)(+db).6(lk).20(-db)
.(dmp).8(d)(df)(f)(+db).6(lk).20(-db)
.(dmp).8(d)(df)(f)(+db).4(lk).20(-db)
It would be the second one.
Any normal button press will press the button on frame 0 and release it on frame 1.
Any button hold ((+)) will do the same thing, except it doesn’t release the button on frame one. So it will press the button, wait one frame, then continue the script, while still holding it. I was a little unsure how exactly I wanted to do this, but as I didn’t see a reason to hold a button for less than a frame, I decided to automatically wait a frame so you don’t have to add a “.” after every (+). If anyone needs to hold a button for less than a frame for some reason, I’ll only have to remove one line of code, but as long as I don’t know of any need for this, I’ll just let it be the way it is.
Any button release will simply release the button without waiting any frames at all.
(+lk)(-lk)(+db)(-db) would then be:
press lk, wait one frame, release lk and press db, wait one frame, release db.
0 lk down
1 lk up, db down
2 db up
Just as you said.
Just writing:
lk(db)
should do the same thing.
If you want to do a cross-up and still maintain charge, can’t you simply tell it to release F and start holding B for every frame where you think the cross-up might happen?
When I try using SFIV Show-Off, it just closes after about a minute, and then I can’t even remove the process. After doing this 5 times, I can’t even touch the folder it’s placed in. What’s up? I use Windows 7 64-bit.
EDIT: Nevermind, seems it was just my anitivrus getting its panties in a bunch over me running the .exe. It just didn’t want to tell me until I restarted my PC.
Hi. Anyone interested in scripting and recording THE longest Seth combo to date?
I’m making a Seth video and that’s the only thing remaining besides some Seth tech.