-
Notifications
You must be signed in to change notification settings - Fork 186
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ineluki Key Patch #1181
Comments
Because I'm currently working on this: Mouse and Keyboard reading is so useful that it would be a waste to only support it via Ineluki. I would like to discuss 2 new event commands to make this more accessible (at least we have a working (script) editor thanks to @20kdc). Problem: Not really for Android ^^'. 0xEA511: Get Mouse Position (relative to the window, 0-319; 0-239)
0xEA512: Key Input Proc Extended
Arg 5 values:
There should be a way to alias specific keyboard keys to joystick buttons but can't be really discussed without any input editor. Related #491 |
Since I was mentioned: https://easyrpg.org/irc/log/2018-01-19.html#msg-14:19:24
|
Because we have now this awesome game database @rygos I can make statistics about how terrible this is. There are 76 RPG2k and 11 RPG2k3 games using this. The difficult to implement commands are Obviously to get a proper statistic would need to parse all ldb and lmu files but this is overkill, so lets only do a basic search: Nobody uses ExecProgram by popularity:
Keys by popularity:
|
Based on hash there are 3 versions of ppcomp. Others have only one version. Load.exe is nowhere to be found:
ExitGame Finds the RPG_RT.exe window and sends WM_CLOSE to it. SaveCount.dat Creates a Saves.script.wav with this content:
LS.dat See #1367 (does WriteProcessMemory to the passed address) SFX.exe Is some kind of screenshot program (needs testing) re.exe Also some kind of screenshot tool PPComp Is the PowerPatch Compact (http://cherrytree.at/cms/download/?did=8) by @CherryDT :D Based on the stats most commands were never used (or the games were lost).
I'm curious if your parser really supported [15] and <15>.
|
SFX.exe: It's this one (ignore the SSL error): https://dl1.rpg-atelier.net/ressourcen2/programme/Effect.exe Load.exe: Ah, this together with more things (save.exe, savecounter.exe, exitsaveload.exe, ls.dat, sfx.exe...) was used in SaveLoad-Script by Vampire of Eternal Chaos. I reuploaded it here now: http://share.cherrytree.at/showfile-33208/saveload_script.zip PPCOMP Versions: Oh... well. For the special ones I have the source though so I could diff it to see what is special, if needed. For the ppcomp2+ppcomp3 I have no idea really |
@CherryDT
are in your linked download and have the same hash. In case you want to check the powerpatch versions. Here are the md5 hashes:
The naming was by me btw, they were all called ppcomp.exe or ppcomp.dat. |
Oh. Because I had ppcomp2/ppcomp3 as well and I was already wondering how they got out because I thought this was an internal thing, my own copies of some sort. OK so My ppcomp_maki/ppcomp2/ppcomp3 are
What seems to be special is:
Case "R.D.-SPECIAL"
Do
WaitUntilActive()
For i As Integer = 0 To 7
Var k = Game.Input_FunctionKeys(&h0C + 5 * &h20 + i)
If (k AndAlso GetAsyncKeyState(k)) Or Game.Switches(CmdEval(Command(3))) Then
Game.WindowProperty(RM2kDev.WINDOW_MESSAGE Or RM2kDev.WPR_ROLLON1) = 0
Game.WindowProperty(RM2kDev.WINDOW_MESSAGE Or RM2kDev.WPR_ROLLON2) = 1
Game.Switches(CmdEval(Command(2))) = TRUE
Exit Do
EndIf
Next
Loop Until Finished()
Case "R.D.-SPECIAL-FINDWINDOW"
Dim tmp As XString
tmp = Command(3)
tmp.Replace("$", " ")
Dim arg As String = tmp
Game.Switches(CmdEval(Command(2))) = IIf(FindWindow(arg, NULL), TRUE, FALSE)
Case "R.D.-SPECIAL-TESTPLAY"
Game.Switches(CmdEval(Command(2))) = GameData.TestPlay
Case "R.D.-SPECIAL-WALLPAPER"
Var buf = ExePath & "\Picture\" & Command(2) & ".bmp"
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, StrPtr(buf), SPIF_UPDATEINIFILE Or SPIF_SENDCHANGE)
Case "R.D.-SPECIAL-WINDOWED"
Game.Switches(CmdEval(Command(2))) = IIf(GetSystemMetrics(SM_CXSCREEN) > 640, TRUE, FALSE)
Case "R.D.-SPECIAL-SAVEVARS"
Kill(ExePath & "\Sound\misc" & Command(2) & ".wav")
Open ExePath & "\Sound\misc" & Command(2) & ".wav" For Binary As #20
For i As Integer = CmdEval(Command(3)) To CmdEval(Command(3)) + CmdEval(Command(4)) - 1
Var v = Game.Variables(i)
Put #20, , v
Next
Close #20
Case "R.D.-SPECIAL-LOADVARS"
Open ExePath & "\Sound\misc" & Command(2) & ".wav" For Binary As #20
For i As Integer = CmdEval(Command(3)) To CmdEval(Command(3)) + CmdEval(Command(4)) - 1
Dim v As Integer
Get #20, , v
Game.Variables(i) = v
Next
Close #20 The first command I believe does some sort of message-skip mechanism. For the rest, I think the game used some fourth-wall breaking stuff, that's why it allowed looking for other open windows, changing your wallpaper, checking if you are in fullscreen mode and "stealthily" saving and loading some variabled across savestates by hiding them in a fake sound file.
Then I have For Btw, I found a game (Mr. Hat II by R.D.) which uses other commands of PPCOMP, in the R.D. Special version. And it also uses the re.exe. Reuploaded: http://share.cherrytree.at/showfile-33210/___mr_hat_ii___.rar EDIT: The |
The patch is now mostly supported in this branch: https://github.com/EasyRPG/Player/compare/master...Ghabry:ineluki?expand=1 "Execute Program" is not fully working (obviously) and there are some conflicts because we map WSAD to movement and Left/Right click to Confirm/Cancel but otherwise it works quite well. :) Will open a PR later, need to do more game testing first. |
DL: http://cherrytree.at/cms/download/?did=3
"This famous tool (which isn’t really a patch but a DLL replacement) allows full keyboard and mouse input as well es executing external programs from an RPG Maker event. It also provides MP3 support, which is very complicated and buggy, however."
Basicly a harmony.dll replacement with "scripts" written as INI files in Music folder...
Files are of format ".script.wav". Player already detects them and reports "Nope!"
The text was updated successfully, but these errors were encountered: