blur Posted July 23, 2011 Share Posted July 23, 2011 (edited) same old story with megaupload here is the ahk source that you can compile, and uploading.com link is added to previous post: /** * FPLaunch MOD Version 1.295 WIP 4 Check FPLaunch Manual at http://www.hyperspin-fe.com/forum/showthread.php?t=10935 CODE MAP This is short list of all sections and functions in this script so that you can find and customize them quickly GET PARAMATERS AND SET HOTKEYS - reads input parameters from command line GET AND CHECK PATHS - gets settings from ini files - calculates window coordinates - hides taskbar, cursor and desktop RUN SYSTEM FUTURE PINBALL VISUAL PINBALL - commands for launching vp and fp KILL COMMANDS - this is where all the procedures are Procedures: CloseProcess: kills process - not used rosve: rosve support for B2S active backglasses rosveClose: kills B2S backglass bigboss: bigboss support for different exe, sound levels and hdrender off bigbossClose: returns sound and hdrender settings SlamitBigScore: big boss slamit bigscore support CloseSlam: close slamit pinball PauseFP: fp pausing - executed on exit key PauseVP: vp pausing - executed on exit key ShowFP: close player and show editor - executed on alt-f4 ShowVP: close player and show editor - executed on alt-f4 SetSaveFPNeeded: set flag to save fp table on exit CloseFP: closes fp CloseVP: closes vp CreateLoadScreen: loading screen loop with slider, closes nag messages CreateBlackScreen: does print screen of fp table and shows it on the screen CreatePauseScreen: shows blue PAUSED image CreateExitScreen: creates exiting in 321 screens ExitScreen: exit screen loop, draws pause or exit screens and exits from fp/vp ExitScript: kills all gui's, activates hyperpin REST OF SCRIPT - scripts for enabling/disabling cursor and reading ini files CaptureScreen - scripts for screen capture HISTORY 1.295 wip 2 + add sleep after printscreen + add sleep during winactivate of vpinball, dmd and backglass + put winactivate outside of loading screen + enable other exe names + read logical and phyisical key state + win activate of secondary fp window (backglass) - doesn't help + put version in usage - double click on fplaunch.exe to get version + bigboss additions (more exe files, sound mods ...) + support for slamit pinball 1.295 wip 3 + winactivates removed (you have to set exe to nt4sp5 comp mode) + fix runtime error on close (you have to set exe to comp mode) + fix dmd not visible behind playfield (set exe to comp mode) + fps drop - same drop comes from loose of focus so it's not script related + shorter time for esc screens + win activate on nag screens brings them to focus and closes them 1.295 wip 4 + fix dmd not visible behind playfield + put all rosve and bigboss code to functions + write a code map + winactivate of fp after pause and printscreen + fix winactivate on z screen buffer message (msg stays in back) + fgi keys mapped to enter for slamit bigscore pinball if you don't use slamit you can remove them TO DO: - fix slow down after close (when vp is still closing) - fix late printscreen in fp - while loading esc should be quick kill and exit not pause - save printscreen-a under name taken from description - fp auto positioning - new images with new text - show instructions and flyer on pause * Modified by dumpster.monkey (samwyze) & blur * Based on original FPLaunch 1.2 by BadBoyBill * Includes modified pause code from ManoWars Nuevo FPLaunch 1.2 * Includes exit png's based on jpg's from BBB's 'exit feature' thread * Includes support for Pause on Exit by blur * Esc and then 1 or Enter exits, Esc and then Esc again takes you back to the game * Includes support for Pause in FP by blur * For pause to work in FP you have to assign right mouse button to pause in FP * Includes support for saving FP table position (scrolllock) on exit by blur * VP nag screen removal by blur * B2S backglass exe support by rosve * different exe, sound level and hdrender flag support by bigboss * slamit bigscore pinball support by bigboss * * All images are to be placed in %HyperPinDir%\Media\HyperPin\Images * * These settings are automatically added to your settings.ini * file in the %HyperPinDir%\Settings folder on first start: * [FPLaunch] * exitScriptKey = q & s * exitEmulatorKey = Esc * toggleCursorKey = t * pauseVPinball = p * hideCursor = true * hideDesktop = true * hideTaskbar = true * useExitScreen = true * usePauseKey = true * useLoadScreen = true * fadespeed = 25 * useExitAsPause = true * exitEmulatorKey2 = 1 * exitEmulatorKey3 = Enter * pauseFPKey = RButton * saveFPTables = true * * NOTE: This is a wip and is by no means complete or optimized * Feel free to disect, mod, clean, optimize, distribute or delete! * * Autohotkey script by BadBoyBill [email protected] * CursorHide by Lazlo * * If you are reading this and do not have autohotkey you can get it * @ http://www.autohotkey.com/download/ * If you would like to modify this script and share it thats OK, but * see if your modification is something that we would like to add * to the official version. * * Refer to the autohotkey documentation for the keyoboard keylist * * If this script does not support your favorite emulator * then please request support @ http://www.hyperspin-fe.com/forum * * Supports Future Pinball and Visual Pinball * */ #SingleInstance force ;Prevent multiple instances #InstallKeybdHook SetTitleMatchMode 2 ;Use relaxed title matching #InstallMouseHook ;#UseHook ; this one breaks long press functionality for gamepad button mapped to Esc!!! #KeyHistory 500 #MaxThreadsPerHotkey 1 #NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. SendMode Input ; Recommended for new scripts due to its superior speed and reliability. SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. DetectHiddenWindows on ;******************************************************************************* ;* EDIT BELOW THIS POINT AT YOUR OWN RISK * ;******************************************************************************* ;------------------------------------------------------------------------------; ; GET PARAMATERS AND SET HOTKEYS ; ;------------------------------------------------------------------------------; ;CHECKING FOR 2 PARAMS, IF NOT THEN EXIT if 0 < 2 { MsgBox FPLaunch v. 1.295 WIP 4`nUsage: FPLaunch.ahk/exe "System Name" "Rom Name" ExitApp } systemName = %1% tableName = %2% hyperini = %A_ScriptDir%\Settings\Settings.ini picDir = %A_ScriptDir%\Media\HyperPin\Images\ ;------------------------------------------------------------------------------; ; GET AND CHECK PATHS ; ;------------------------------------------------------------------------------; GoSub, CheckINI IniRead, iniEmuPath, %hyperini%, %systemName%, Path emuPath := GetFullName(iniEmuPath) IniRead, iniTablePath, %hyperini%, %systemName%, Table_Path tablePath := GetFullName(iniTablePath) IniRead, executable, %hyperini%, %systemName%, Exe iniKeys = exitScriptKey,exitEmulatorKey,hideCursor,toggleCursorKey,hideDesktop,hideTaskbar ,useExitScreen,usePauseKey,pauseVPinball,useLoadScreen,fadespeed ,useExitAsPause,exitEmulatorKey2,exitEmulatorKey3,pauseFPKey,saveFPTables Loop, parse, iniKeys, `, { IniRead, %A_LoopField%, %hyperini%, FPLaunch, %A_LoopField% } romExtension = GoSub, CheckPaths loadspeed := fadespeed * 10 Hotkey, %exitScriptKey%, ExitScript ; we use loading screeen dimensions for all screens ;If (useLoadScreen = "true") { ProgBar = 0 gui, 99:add,picture,hwndloadpic, %A_ScriptDir%\Media\HyperPin\Images\Loading.png controlgetpos,,,wLoad,hLoad,,ahk_id %loadpic% gui, 99:destroy wLoad := Round(wLoad*A_ScreenWidth/1280) xLoad := Round(A_ScreenWidth/2-(wLoad/2)) hLoad := Round(hLoad*A_ScreenHeight/800) yLoad := Round(A_ScreenHeight/2-(hLoad/2)) wLoadProgress := Round(20*A_ScreenWidth/1280) xLoadProgress := Round(145*A_ScreenWidth/1280) hLoadProgress := Round(194*A_ScreenHeight/800) yLoadProgress := Round(288*A_ScreenHeight/800) ;} ;If (usePauseKey = "true") { Paused = 0 ; PausePic = ; gui, 98:add,picture,hwndpausepic, %picDir%\Media\HyperPin\Images\Pause.png ; controlgetpos,,,wPause,hPause,,ahk_id %pausepic% ; gui, 98:destroy ; wPause := Round(wPause*A_ScreenWidth/1280) ; xPause := Round(A_ScreenWidth/2-(wPause/2)) ; hPause := Round(hPause*A_ScreenHeight/800) ; yPause := Round(A_ScreenHeight/2-(hPause/2)) ;} ;If (useExitScreen = "true") { Exiting = 0 ; Exit = ; gui, 97:add,picture,hwndexitpic, %A_ScriptDir%\Media\HyperPin\Images\Exit_1.png ; controlgetpos,,,wExit,hExit,,ahk_id %exitpic% ; gui, 97:destroy ; wExit := Round(wExit*A_ScreenWidth/1280) ; xExit := Round(A_ScreenWidth/2-(wExit/2)) ; hExit := Round(hExit*A_ScreenHeight/800) ; yExit := Round(A_ScreenHeight/2-(hExit/2)) ;} if (hideCursor = "true") { MouseMove %A_ScreenWidth%, %A_ScreenHeight% Hotkey, %toggleCursorKey%, ToggleCursor SystemCursor("Off") } if (hideTaskbar = "true") { WinHide, ahk_class Shell_TrayWnd WinHide, Start ahk_class Button } if (hideDesktop = "true") { Gui, Color, 000000 Gui +AlwaysOnTop -Caption +ToolWindow Gui, Show, x0 y0 W%A_ScreenWidth% H%A_ScreenHeight%, BlackScreen } WinClose, cmd.exe ;------------------------------------------------------------------------------; ; RUN SYSTEM ; ;------------------------------------------------------------------------------; ;**********************************FUTURE PINBALL*********************************** if (systemName = "Future Pinball") { if(tableName = "BigScore") { ; bigboss slamit bigscore support #IfWinActive ahk_class SlamIt Pinball - Big Score ; Remap some keys (this has to be here, not in procedure): ; enter to down arrow for plunger ; 1 to s for start, 5 to 1 for insert coin ; magnasave, flyer, genre or instructions to enter for menus ; change it to what you have on your cab and recompile ; or remove it if you don't use slamit pinball RControl::Enter LControl::Enter f::Enter g::Enter i::Enter Enter::down 5::1 1::s #IfWinActive GoSub SlamitBigScore } else { if (useExitScreen = "true") ; fp needs $ or it will not get the key ; * enables any modifier to be pressed with the key (shift, ctrl, alt) Hotkey, $*%exitEmulatorKey%, ExitScreen else if (useExitAsPause = "true") Hotkey, $*%exitEmulatorKey%, PauseFP else Hotkey, $*%exitEmulatorKey%, CloseFP if (usePauseKey = "true") { Hotkey, $*%pauseVPinball%, PauseFP ;Hotkey, $*Pause, PauseFP } Hotkey, $!F4, ShowFP if (saveFPTables = "true") { Hotkey, $ScrollLock, SetSaveFPNeeded Run, "%emuPath%\%executable%" /open "%tablePath%\%tableName%.fpt" /play /arcaderender,,Min UseErrorLevel } else Run, "%emuPath%\%executable%" /open "%tablePath%\%tableName%.fpt" /play /Exit /arcaderender,,Min UseErrorLevel If (useLoadScreen = "true") ;Draw the loading Gui with wrapped Progress bar Gosub CreateLoadScreen Else { WinWait, ahk_class FuturePinball WinHide, ahk_class FuturePinball } WinWait, ahk_class FuturePinballOpenGL WinActivate, ahk_class FuturePinballOpenGL WinWaitActive, ahk_class FuturePinballOpenGL Gui, destroy WinWait, ahk_class FuturePinballOpenGLSecondary,,1 WinActivate, ahk_class FuturePinballOpenGLSecondary WinWaitActive, ahk_class FuturePinballOpenGLSecondary,,1 WinActivate, ahk_class FuturePinballOpenGL Process, WaitClose, %executable% } } ;**********************************VISUAL PINBALL*********************************** else if (systemName = "Visual Pinball") { GoSub bigboss ; bigboss support for different exe, sound levels and hdrender off GoSub rosve ; rosve support for B2S active backglasses Run, "%emuPath%\%executable%" /play -"%tablePath%%tableName%.vpt",, Min UseErrorLevel ;Run Minimized ;was the best way I could hide the vp editor and play loading screens as WinHide didn't seem to find them If (useExitScreen = "true") ; * breaks long press functionality for gamepad button mapped to Esc so it had to be removed Hotkey, %exitEmulatorKey%, ExitScreen Else If (useExitAsPause = "true") Hotkey, *%exitEmulatorKey%, PauseVP Else Hotkey, *%exitEmulatorKey%, CloseVP If (usePauseKey = "true") { Hotkey, $*%pauseVPinball%, PauseVP ;Hotkey, $*Pause, PauseVP } Hotkey, $!F4, ShowVP If (useLoadScreen = "true") ;Draw the loading Gui with wrapped Progress bar Gosub CreateLoadScreen Else { WinWait, ahk_class VPinball WinHide, ahk_class VPinball } WinWaitActive, ahk_class VPPlayer ;Wait for vp to be Ready before killing Gui blackScreen Gui, Destroy ;bring dmd on top of playfield DetectHiddenWindows off ;don't detect dmd if it is hidden WinActivate, ahk_class MAME WinWaitActive, ahk_class MAME Click 10, 10 WinWaitActive, ahk_class MAME Sleep 100 DetectHiddenWindows on WinActivate, ahk_class VPPlayer WinWaitActive, ahk_class VPPlayer MouseMove A_ScreenWidth//2, A_ScreenHeight//2 Click Process, WaitClose, %executable% } else { MsgBox,48,Error,%systemName% is an invalid System Name or %executable% isnt supported yet,6 } ;------------------------------------------------------------------------------; ; WHEN EMULATOR FINISHES OR IF LAUNCH EXE FAILS ; ;------------------------------------------------------------------------------; ;************PROBABLY DO NOT NEED TO EDIT THIS AREA************* if (ErrorLevel = "ERROR") { MsgBox,48,Error,Failed to run executable check your paths,6 } Goto ExitScript ; Exits script and returns to frontend ;------------------------------------------------------------------------------; ; KILL COMMANDS ; ;------------------------------------------------------------------------------; ;************PROBABLY DO NOT NEED TO EDIT THIS AREA************* CloseProcess: Hotkey, %exitScriptKey%, Off Process, Close, %executable% Process, WaitClose, %executable% return ; rosve support for B2S active backglasses rosve: ;-------------------------------------------------------------- ;------ check if an active backglass shall be started ----- ;-------------------------------------------------------------- StringRight, ending, tableName, 3 if (ending = "B2S") { Run, %tablePath%%tableName%.exe, %tablePath% sleep 200 } return rosveClose: ; rosve ; -------------------------------------------------------------- ; --- Close the animated backglass ----------------------- ; -------------------------------------------------------------- if (ending = "B2S") { WinKill, Form1 } return ; bigboss support for different exe, sound levels and hdrender off bigboss: ; bigboss ; Array examples: http://www.autohotkey.com/docs/misc/Arrays.htm ; Read config file for vp9.08 tables vp908count = 0 ; This loop retrieves each line from the file, one at a time. Loop, Read, %A_ScriptDir%\Settings\vp908tables.txt { vp908count += 1 ; Keep track of how many items are in the array. vp908array%vp908count% := A_LoopReadLine ; Store this line in the next array element. } ; Check if table is in the vp908tables array. Loop %vp908count% { ; The following line uses the := operator to retrieve an array element: element := vp908array%A_Index% ; A_Index is a built-in variable. if(tableName = element) { TableIndex = %A_Index% vpExeIndex = %TableIndex% vpExeIndex += 1 executable := vp908array%vpExeIndex% break } } ; Read config file for disable HD rendering tables since this is a global setting now. HDRenderOffCount = 0 HDRenderOffChanged = 0 ; This loop retrieves each line from the file, 1 at a time. Loop, Read, %A_ScriptDir%\Settings\hdrenderofftables.txt { HDRenderOffCount += 1 ; Keep track of how many items are in the array. HDRenderOffArray%HDRenderOffCount% := A_LoopReadLine ; Store this line in the next array element. } ; Check if table is in the no hdrender array and write the VP hardwarerender key to off. Loop %HDRenderOffCount% { ; The following line uses the := operator to retrieve an array element: element := HDRenderOffArray%A_Index% ; A_Index is a built-in variable. if(tableName = element) { HDRenderOffChanged = 1 RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Visual Pinball\Player, HardwareRender, 0 break } } ; Read config for sound volume hard codes SoundModCount = 0 SoundChangeAmount = 0 Loop, Read, %A_ScriptDir%\Settings\soundmodtables.txt { SoundModCount += 1 SoundModCountArray%SoundModCount% := A_LoopReadLine } ; Check if table is in the vp908tables array. Loop %SoundModCount% { ; The following line uses the := operator to retrieve an array element: TableIndex = %A_Index% SoundIndex = %TableIndex% SoundIndex += 1 TheTable := SoundModCountArray%TableIndex% TheSoundAmount := SoundModCountArray%SoundIndex% if(tableName = TheTable) { ; Set the new sound change amount. Should be a + or - number otherwise it needs a , SoundSet, absoluteamt ; SoundSet: http://www.autohotkey.com/docs/commands/SoundSet.htm ; SoundGet: http://www.autohotkey.com/docs/commands/SoundGet.htm ;SoundSet, %TheSoundAmount% Send {Volume_Down %TheSoundAmount%} break } } return bigbossClose: ; bigboss ; Restore hdrender original value if (HDRenderOffChanged) RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Visual Pinball\Player, HardwareRender, 1 ; Restore master volume original value if (TheSoundAmount) Send {Volume_Up %TheSoundAmount%} return ; big boss slamit bigscore support SlamitBigScore: Hotkey, $%exitEmulatorKey%, CloseSlam ;setworkingdir, "..\SlamIt\BigScore.exe" Run, "..\slamit\go.bat", "..\SlamIt" WinWait, ahk_class SlamIt Pinball - Big Score Gui, destroy Process, WaitClose, BigScore.exe goto ExitScript return CloseSlam: WinClose, ahk_class SlamIt Pinball - Big Score goto ExitScript return PauseFP: if (Paused = 0) { Paused = 1 WinActivate, ahk_class FuturePinballOpenGL WinWaitActive, ahk_class FuturePinballOpenGL Send {%pauseFPKey%} WinWaitActive, ahk_class FuturePinballOpenGL Gosub CreateBlackScreen Gosub CreatePauseScreen Hotkey, $%exitEmulatorKey2%, CloseFP Hotkey, $%exitEmulatorKey2%, On Hotkey, $%exitEmulatorKey3%, CloseFP Hotkey, $%exitEmulatorKey3%, On } else { Paused = 0 Gui 1: Destroy Gui 5: Destroy WinActivate, ahk_class FuturePinballOpenGL WinWaitActive, ahk_class FuturePinballOpenGL Send {%pauseFPKey%} Hotkey, $%exitEmulatorKey2%, Off Hotkey, $%exitEmulatorKey3%, Off } return PauseVP: If (Paused = 0) { Paused = 1 Gosub CreatePauseScreen Hotkey, $%exitEmulatorKey2%, CloseVP Hotkey, $%exitEmulatorKey2%, On Hotkey, $%exitEmulatorKey3%, CloseVP Hotkey, $%exitEmulatorKey3%, On } Else { Paused = 0 Gui, Destroy WinActivate, ahk_class VPPlayer Hotkey, $%exitEmulatorKey2%, Off Hotkey, $%exitEmulatorKey3%, Off } return ShowFP: if (Paused = 1) Gosub PauseFP WinActivate, ahk_class FuturePinballOpenGL WinWaitActive, ahk_class FuturePinballOpenGL Send {Esc} WinWaitClose, ahk_class FuturePinballOpenGL WinShow, ahk_class FuturePinball WinRestore, ahk_class FuturePinball WinActivate, ahk_class FuturePinball WinWaitActive, ahk_class FuturePinball SystemCursor("On") WinShow, ahk_class Shell_TrayWnd WinShow, Start ahk_class Button Suspend, On MouseMove 200,200 WinWait, ahk_class FuturePinballOpenGL Suspend, Off SystemCursor("Off") WinHide, ahk_class Shell_TrayWnd WinHide, Start ahk_class Button WinHide, ahk_class FuturePinball WinMinimize, ahk_class FuturePinball WinActivate, ahk_class FuturePinballOpenGL WinWaitActive, ahk_class FuturePinballOpenGL return ShowVP: if (Paused = 1) Gosub PauseVP WinActivate, ahk_class VPPlayer WinWaitActive, ahk_class VPPlayer WinClose, ahk_class VPPlayer WinWaitClose, ahk_class VPPlayer WinShow, ahk_class VPinball WinRestore, ahk_class VPinball WinActivate, ahk_class VPinball WinWaitActive, ahk_class VPinball SystemCursor("On") WinShow ahk_class Shell_TrayWnd WinShow Start ahk_class Button Suspend, On MouseMove 200,200 WinWait, ahk_class VPPlayer Suspend, Off SystemCursor("Off") WinHide, ahk_class Shell_TrayWnd WinHide, Start ahk_class Button WinHide, ahk_class VPinball WinMinimize, ahk_class VPinball WinWaitActive, ahk_class VPPlayer ;WinActivate, ahk_class TBackglass ;WinActivate, ahk_class MAME ;WinActivate, ahk_class VPPlayer return SetSaveFPNeeded: saveFPNeeded = true Send {ScrollLock} return CloseFP: ;close all gui's except black screen (gui 5) Loop, 4 Gui, %A_Index%: Destroy ;hide and minimize fp editor WinHide, ahk_class FuturePinball WinMinimize, ahk_class FuturePinball ;Future Pinball must be closed this way instead of killing process ;or it wil not save your last game information.i.e score/credtis WinActivate, ahk_class FuturePinballOpenGL WinWaitActive, ahk_class FuturePinballOpenGL Send {Esc} WinWaitClose, ahk_class FuturePinballOpenGL ;saving fp table position, black screen hides fp window if (saveFPTables = "true") and (saveFPNeeded = "true") { ;WinRestore, ahk_class FuturePinball WinActivate, ahk_class FuturePinball WinWaitActive, ahk_class FuturePinball WinMenuSelectItem, ahk_class FuturePinball,,File,Save Sleep, 1000 } WinClose, ahk_class FuturePinball GoSub, ExitScript return CloseVP: Hotkey, %exitScriptKey%, Off GoSub rosveClose ;Visual Pinball must be closed this way instead of killing process ;or it wil not save your last game information.i.e score/credtis ;DetectHiddenWindows, on ;Or next line will not work Loop, 4 Gui, %A_Index%: Destroy ;This line fixes where the VP Window flashes real quick ;when closing the window for a cleaner exit WinHide, ahk_class VPinball WinMinimize, ahk_class VPinball WinClose, ahk_class VPinball GoSub bigbossClose GoSub, ExitScript return CreateLoadScreen: SetTitleMatchMode 2 ;Use relaxed title matching Gui, Destroy ; kill Gui blackScreen Gui, Color, EEAA99 Gui, Margin, 0, 0 Gui, Add, Picture, h%hLoad% w%wLoad% vLoadPic, %picDir%loading.png Gui, Add, Progress, x%xLoadProgress% y%yLoadProgress% w%wLoadProgress% h%hLoadProgress% -smooth 0x8 c0C32A5 vLoading vertical BackgroundFFFFFF Gui +AlwaysOnTop -Caption +Lastfound Gui, Show, AutoSize Center, loadScreen WinSet, TransColor, EEAA99 Loop { Sleep %loadspeed% ;ProgBar += 1 ;If ProgBar = %loadspeed% ;{ GuiControl,, Loading, +1 ; ProgBar = 0 ;} ; nag screens removal ifWinExist, Please { WinActivate, Please IfWinActive, Please { Send {Tab} Send {Space} Send {Enter} } } else ifWinExist, Game Info { WinActivate, Game Info IfWinActive, Game Info { Send {Enter} Send {Enter} } } else ifWinExist, Notice { WinActivate, Notice IfWinActive, Notice { Send {Enter} Send {Enter} } } else ifWinExist, VBScript { WinActivate, VBScript IfWinActive, VBScript { Send {Enter} } } else ifWinExist, Error { ; we have some error and we want to see it so we don't send Enter ;Send {Enter} Gui, Destroy WinActivate, Error WinWaitActive, Error SystemCursor("On") WinWaitClose, Error WinClose, ahk_class VPinball WinClose, ahk_class FuturePinball Process, WaitClose, %executable% ExitApp } if (systemName = "Visual Pinball") { IfWinExist, Visual Pinball Player,, DMD ;Check if visual pinball is Ready { IfWinActive, Visual Pinball Player,, DMD ;Check if visual pinball is Ready { Break } } } else { IfWinExist, ahk_class FuturePinballOpenGL ;Check if visual pinball is Ready { IfWinActive, ahk_class FuturePinballOpenGL ;Check if visual pinball is Ready { Break } } } } Gui, Destroy ; Vic Return CreateBlackScreen: CaptureScreen(3) ;Sleep 100 WinActivate, ahk_class FuturePinballOpenGL WinWaitActive, ahk_class FuturePinballOpenGL,,2 Gui 5: Destroy Gui 5: Color, 000000 Gui 5: Margin, 0, 0 Gui 5: Add, Picture, W%A_ScreenWidth% H%A_ScreenHeight% vScreenPic, screen.bmp Gui 5: +AlwaysOnTop -Caption +ToolWindow Gui 5: Show, x0 y0 W%A_ScreenWidth% H%A_ScreenHeight%, BlackScreen Return CreatePauseScreen: Gui, Destroy Gui, Color, EEAA99 Gui, Margin, 0, 0 Gui, Add, Picture, h%hLoad% w%wLoad% vPausePic, %picDir%pause.png Gui +AlwaysOnTop -Caption +Lastfound Gui, Show, AutoSize Center, pauseScreen WinSet, TransColor, EEAA99 ;Gui, Show Return CreateExitScreen: Gui, Destroy Loop, 4 { ExitPic = Exit_%A_Index%.png Gui %A_Index%: Destroy Gui %A_Index%: Color, EEAA99 Gui %A_Index%: Margin, 0, 0 Gui %A_Index%: Add, Picture, w%wLoad% h%hLoad%, %picDir%%ExitPic% Gui %A_Index%: +AlwaysOnTop -Caption +Lastfound Gui %A_Index%: Show, AutoSize Center Hide WinSet, TransColor, EEAA99 } Return ExitScreen: if (Exiting = 0) { Exiting = 1 LoopVal = 0 ;Gosub CreateExitScreen ; check if we need this - nope Loop { ;Sleep, 10 ; check if we need this - nope state = 0 ; check for logical and physical state of the key GetKeyState, statel, %exitEmulatorKey% if statel = D state = 1 GetKeyState, statep, %exitEmulatorKey%, P if statep = D state = 1 if (state) { if (loopVal = 10) { if (Paused = 1) { if (systemName = "Future Pinball") GoSub PauseFP else GoSub PauseVP } Gosub CreateExitScreen if (systemName = "Future Pinball") GoSub CreateBlackScreen Gui, 3:Show } else if loopVal = 25 Gui, 2:Show else if loopVal = 40 Gui, 1:Show Sleep, %fadespeed% if (loopVal = 60) { if (systemName = "Visual Pinball") GoSub, CloseVP else if (systemName = "Future Pinball") GoSub, CloseFP break } } else { Exiting = 0 if (LoopVal < 10 && useExitAsPause = "true") { if (systemName = "Visual Pinball") GoSub, PauseVP else if (systemName = "Future Pinball") GoSub, PauseFP } else { Loop, 5 Gui, %A_Index%: Destroy WinActivate, Visual Pinball Player,, DMD WinActivate, ahk_class FuturePinballOpenGL } Transvalue = 0 LoopVal = 0 break } LoopVal += 1 } } Return ExitScript: Loop, 5 Gui, %A_Index%: Destroy Process, Exist, HyperPin.exe PID := errorLevel ;no need to show taskbar on exit, it can only cause problems ;it was already commented in 1.10 ;if (hideTaskbar = "true") { ;WinShow ahk_class Shell_TrayWnd ;WinShow Start ahk_class Button ;} if (PID) { WinActivate, ahk_pid %PID% ;WinWaitActive, ahk_pid %PID% } if (hideCursor = "true") SystemCursor("On") ;to debug script uncomment the pause ;Pause ExitApp OnExit, ExitScript return ;------------------------------------------------------------------------------; ; REST OF SCRIPT ; ;------------------------------------------------------------------------------; ;************PROBABLY DO NOT NEED TO EDIT THIS AREA************* SystemCursor(OnOff=1) ; INIT = "I","Init"; OFF = 0,"Off"; TOGGLE = -1,"T","Toggle"; ON = others { static AndMask, XorMask, $, h_cursor ,c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13 ; system cursors , b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13 ; blank cursors , h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13 ; handles of default cursors if (OnOff = "Init" or OnOff = "I" or $ = "") ; init when requested or at first call { $ = h ; active default cursors VarSetCapacity( h_cursor,4444, 1 ) VarSetCapacity( AndMask, 32*4, 0xFF ) VarSetCapacity( XorMask, 32*4, 0 ) system_cursors = 32512,32513,32514,32515,32516,32642,32643,32644,32645,32646,32648,32649,32650 StringSplit c, system_cursors, `, Loop %c0% { h_cursor := DllCall( "LoadCursor", "uint",0, "uint",c%A_Index% ) h%A_Index% := DllCall( "CopyImage", "uint",h_cursor, "uint",2, "int",0, "int",0, "uint",0 ) b%A_Index% := DllCall("CreateCursor","uint",0, "int",0, "int",0 , "int",32, "int",32, "uint",&AndMask, "uint",&XorMask ) } } if (OnOff = 0 or OnOff = "Off" or $ = "h" and (OnOff < 0 or OnOff = "Toggle" or OnOff = "T")) $ = b ; use blank cursors else $ = h ; use the saved cursors Loop %c0% { h_cursor := DllCall( "CopyImage", "uint",%$%%A_Index%, "uint",2, "int",0, "int",0, "uint",0 ) DllCall( "SetSystemCursor", "uint",h_cursor, "uint",c%A_Index% ) } } ToggleCursor: SystemCursor("Toggle") WinShow ahk_class Shell_TrayWnd WinShow Start ahk_class Button return IniRead(Filename, Section, Key, Default = "") { FileRead, text, *t %Filename% text = `n%text%`n StringTrimLeft, text, text, InStr(text, "`n[" . Section . "]`n") Loop, 8 { sp := sp . " " StringReplace, text, text, %Key%%sp%=, %Key%= If ErrorLevel Break } start := InStr(text, "`n" . Key . "=") If !start Return, Default start += StrLen(Key) + 2 StringMid, Value, text, start, InStr(text, "`n", false, start) - start Return, Value } ;Get Full Path from Relative Path GetFullName( fn ) { static buf, i if !i i := VarSetCapacity(buf, 512) DllCall("GetFullPathNameA", "str", fn, "uint", 512, "str", buf, "str*", 0) return buf } CheckINI: IfNotExist, %A_ScriptDir%\HyperPin.exe { MsgBox,48,Error, Must be in same directory as HyperPin.exe,6 Goto ExitScript } IfNotExist, %A_ScriptDir%\Settings\Settings.ini { MsgBox,48,Error,Cannot Find %A_ScriptDir%\Settings\Settings.ini,6 Goto ExitScript } return CheckPaths: romFound = StringRight, emuPathBackSlash, EmuPath, 1 StringRight, tablePathBackSlash, TablePath, 1 If (emuPathBackSlash != "\" || tablePathBackSlash != "\") { MsgBox,48,Error, Make sure your paths contains a backslash on the end ,6 Goto ExitScript } If (executable = "") { MsgBox,48,Error, Missing executable in Settings.ini ,6 Goto ExitScript } If (tablePath = "") { MsgBox,48,Error, Missing rom path in Settings.ini ,6 Goto ExitScript } If (emuPath = "") { MsgBox,48,Error, Missing emulator path in Settings.ini ,6 Goto ExitScript } If (exitScriptKey = "ERROR") or (useExitAsPause = "ERROR") or (exitEmulatorKey3 = "ERROR") Gosub addIni IfNotExist, %EmuPath%%Executable% { MsgBox,48,Error,Cannot Find %EmuPath%%Executable%,6 Goto ExitScript } return addIni: IniWrite, q & s, %hyperini%, FPLaunch, exitScriptKey IniWrite, Esc, %hyperini%, FPLaunch, exitEmulatorKey IniWrite, t, %hyperini%, FPLaunch, toggleCursorKey IniWrite, p, %hyperini%, FPLaunch, pauseVPinball IniWrite, true, %hyperini%, FPLaunch, hideCursor IniWrite, true, %hyperini%, FPLaunch, hideDesktop IniWrite, true, %hyperini%, FPLaunch, hideTaskbar IniWrite, false, %hyperini%, FPLaunch, useExitScreen IniWrite, true, %hyperini%, FPLaunch, usePauseKey IniWrite, true, %hyperini%, FPLaunch, useLoadScreen IniWrite, 25, %hyperini%, FPLaunch, fadespeed IniWrite, true, %hyperini%, FPLaunch, useExitAsPause IniWrite, 1, %hyperini%, FPLaunch, exitEmulatorKey2 IniWrite, Enter, %hyperini%, FPLaunch, exitEmulatorKey3 IniWrite, RButton, %hyperini%, FPLaunch, pauseFPKey IniWrite, true, %hyperini%, FPLaunch, saveFPTables exitScriptKey = q & s exitEmulatorKey = Esc toggleCursorKey = t pauseVPinball = p hideCursor = true hideDesktop = true hideTaskbar = true useExitScreen = true usePauseKey = true useLoadScreen = true fadespeed = 25 useExitAsPause = true exitEmulatorKey2 = 1 exitEmulatorKey3 = Enter pauseFPKey = RButton saveFPTables = true return /* CaptureScreen(aRect, bCursor, sFileTo, nQuality) By Sean - Taken from Forum page: http://www.autohotkey.com/forum/topic18146.html 1) If the optional parameter bCursor is True, captures the cursor too. 2) If the optional parameter sFileTo is 0, set the image to Clipboard. If it is omitted or "", saves to screen.bmp in the script folder, otherwise to sFileTo which can be BMP/JPG/PNG/GIF/TIF. 3) The optional parameter nQuality is applicable only when sFileTo is JPG. Set it to the desired quality level of the resulting JPG, an integer between 0 - 100. 4) If aRect is 0/1/2/3, captures the entire desktop/active window/active client area/active monitor. 5) aRect can be comma delimited sequence of coordinates, e.g., "Left, Top, Right, Bottom" or "Left, Top, Right, Bottom, Width_Zoomed, Height_Zoomed". In this case, only that portion of the rectangle will be captured. Additionally, in the latter case, zoomed to the new width/height, Width_Zoomed/Height_Zoomed. Example: CaptureScreen(0) CaptureScreen(1) CaptureScreen(2) CaptureScreen(3) CaptureScreen("100, 100, 200, 200") CaptureScreen("100, 100, 200, 200, 400, 400") ; Zoomed */ /* Convert(sFileFr, sFileTo, nQuality) Convert("C:\image.bmp", "C:\image.jpg") Convert("C:\image.bmp", "C:\image.jpg", 95) Convert(0, "C:\clip.png") ; Save the bitmap in the clipboard to sFileTo if sFileFr is "" or 0. */ CaptureScreen(aRect = 0, bCursor = False, sFile = "", nQuality = "") { If !aRect { SysGet, nL, 76 SysGet, nT, 77 SysGet, nW, 78 SysGet, nH, 79 } Else If aRect = 1 WinGetPos, nL, nT, nW, nH, A Else If aRect = 2 { WinGet, hWnd, ID, A VarSetCapacity(rt, 16, 0) DllCall("GetClientRect" , "Uint", hWnd, "Uint", &rt) DllCall("ClientToScreen", "Uint", hWnd, "Uint", &rt) nL := NumGet(rt, 0, "int") nT := NumGet(rt, 4, "int") nW := NumGet(rt, 8) nH := NumGet(rt,12) } Else If aRect = 3 { VarSetCapacity(mi, 40, 0) DllCall("GetCursorPos", "int64P", pt) DllCall("GetMonitorInfo", "Uint", DllCall("MonitorFromPoint", "int64", pt, "Uint", 2), "Uint", NumPut(40,mi)-4) nL := NumGet(mi, 4, "int") nT := NumGet(mi, 8, "int") nW := NumGet(mi,12, "int") - nL nH := NumGet(mi,16, "int") - nT } Else { StringSplit, rt, aRect, `,, %A_Space%%A_Tab% nL := rt1 nT := rt2 nW := rt3 - rt1 nH := rt4 - rt2 znW := rt5 znH := rt6 } mDC := DllCall("CreateCompatibleDC", "Uint", 0) hBM := CreateDIBSection(mDC, nW, nH) oBM := DllCall("SelectObject", "Uint", mDC, "Uint", hBM) hDC := DllCall("GetDC", "Uint", 0) DllCall("BitBlt", "Uint", mDC, "int", 0, "int", 0, "int", nW, "int", nH, "Uint", hDC, "int", nL, "int", nT, "Uint", 0x40000000 | 0x00CC0020) DllCall("ReleaseDC", "Uint", 0, "Uint", hDC) If bCursor CaptureCursor(mDC, nL, nT) DllCall("SelectObject", "Uint", mDC, "Uint", oBM) DllCall("DeleteDC", "Uint", mDC) If znW && znH hBM := Zoomer(hBM, nW, nH, znW, znH) If sFile = 0 SetClipboardData(hBM) Else Convert(hBM, sFile, nQuality), DllCall("DeleteObject", "Uint", hBM) } CaptureCursor(hDC, nL, nT) { VarSetCapacity(mi, 20, 0), mi := Chr(20) DllCall("GetCursorInfo", "Uint", &mi) bShow := NumGet(mi, 4) hCursor := NumGet(mi, 8) xCursor := NumGet(mi,12) yCursor := NumGet(mi,16) If bShow && hCursor:=DllCall("CopyIcon", "Uint", hCursor) { VarSetCapacity(ni, 20, 0) DllCall("GetIconInfo", "Uint", hCursor, "Uint", ∋) bIcon := NumGet(ni, 0) xHotspot := NumGet(ni, 4) yHotspot := NumGet(ni, 8) hBMMask := NumGet(ni,12) hBMColor := NumGet(ni,16) DllCall("DrawIcon", "Uint", hDC, "int", xCursor - xHotspot - nL, "int", yCursor - yHotspot - nT, "Uint", hCursor) DllCall("DestroyIcon", "Uint", hCursor) If hBMMask DllCall("DeleteObject", "Uint", hBMMask) If hBMColor DllCall("DeleteObject", "Uint", hBMColor) } } Zoomer(hBM, nW, nH, znW, znH) { mDC1 := DllCall("CreateCompatibleDC", "Uint", 0) mDC2 := DllCall("CreateCompatibleDC", "Uint", 0) zhBM := CreateDIBSection(mDC2, znW, znH) oBM1 := DllCall("SelectObject", "Uint", mDC1, "Uint", hBM) oBM2 := DllCall("SelectObject", "Uint", mDC2, "Uint", zhBM) DllCall("SetStretchBltMode", "Uint", mDC2, "int", 4) DllCall("StretchBlt", "Uint", mDC2, "int", 0, "int", 0, "int", znW, "int", znH, "Uint", mDC1, "int", 0, "int", 0, "int", nW, "int", nH, "Uint", 0x00CC0020) DllCall("SelectObject", "Uint", mDC1, "Uint", oBM1) DllCall("SelectObject", "Uint", mDC2, "Uint", oBM2) DllCall("DeleteDC", "Uint", mDC1) DllCall("DeleteDC", "Uint", mDC2) DllCall("DeleteObject", "Uint", hBM) Return zhBM } Convert(sFileFr = "", sFileTo = "", nQuality = "") { If sFileTo = sFileTo := A_ScriptDir . "\screen.bmp" SplitPath, sFileTo, , sDirTo, sExtTo, sNameTo If Not hGdiPlus := DllCall("LoadLibrary", "str", "gdiplus.dll") Return sFileFr+0 ? SaveHBITMAPToFile(sFileFr, sDirTo . "\" . sNameTo . ".bmp") : "" VarSetCapacity(si, 16, 0), si := Chr(1) DllCall("gdiplus\GdiplusStartup", "UintP", pToken, "Uint", &si, "Uint", 0) If !sFileFr { DllCall("OpenClipboard", "Uint", 0) If DllCall("IsClipboardFormatAvailable", "Uint", 2) && (hBM:=DllCall("GetClipboardData", "Uint", 2)) DllCall("gdiplus\GdipCreateBitmapFromHBITMAP", "Uint", hBM, "Uint", 0, "UintP", pImage) DllCall("CloseClipboard") } Else If sFileFr Is Integer DllCall("gdiplus\GdipCreateBitmapFromHBITMAP", "Uint", sFileFr, "Uint", 0, "UintP", pImage) Else DllCall("gdiplus\GdipLoadImageFromFile", "Uint", Unicode4Ansi(wFileFr,sFileFr), "UintP", pImage) DllCall("gdiplus\GdipGetImageEncodersSize", "UintP", nCount, "UintP", nSize) VarSetCapacity(ci,nSize,0) DllCall("gdiplus\GdipGetImageEncoders", "Uint", nCount, "Uint", nSize, "Uint", &ci) Loop, % nCount If InStr(Ansi4Unicode(NumGet(ci,76*(A_Index-1)+44)), "." . sExtTo) { pCodec := &ci+76*(A_Index-1) Break } If InStr(".JPG.JPEG.JPE.JFIF", "." . sExtTo) && nQuality<>"" && pImage && pCodec { DllCall("gdiplus\GdipGetEncoderParameterListSize", "Uint", pImage, "Uint", pCodec, "UintP", nSize) VarSetCapacity(pi,nSize,0) DllCall("gdiplus\GdipGetEncoderParameterList", "Uint", pImage, "Uint", pCodec, "Uint", nSize, "Uint", π) Loop, % NumGet(pi) If NumGet(pi,28*(A_Index-1)+20)=1 && NumGet(pi,28*(A_Index-1)+24)=6 { pParam := π+28*(A_Index-1) NumPut(nQuality,NumGet(NumPut(4,NumPut(1,pParam+0)+20))) Break } } If pImage pCodec ? DllCall("gdiplus\GdipSaveImageToFile", "Uint", pImage, "Uint", Unicode4Ansi(wFileTo,sFileTo), "Uint", pCodec, "Uint", pParam) : DllCall("gdiplus\GdipCreateHBITMAPFromBitmap", "Uint", pImage, "UintP", hBitmap, "Uint", 0) . SetClipboardData(hBitmap), DllCall("gdiplus\GdipDisposeImage", "Uint", pImage) DllCall("gdiplus\GdiplusShutdown" , "Uint", pToken) DllCall("FreeLibrary", "Uint", hGdiPlus) } CreateDIBSection(hDC, nW, nH, bpp = 32, ByRef pBits = "") { NumPut(VarSetCapacity(bi, 40, 0), bi) NumPut(nW, bi, 4) NumPut(nH, bi, 8) NumPut(bpp, NumPut(1, bi, 12, "UShort"), 0, "Ushort") NumPut(0, bi,16) Return DllCall("gdi32\CreateDIBSection", "Uint", hDC, "Uint", &bi, "Uint", 0, "UintP", pBits, "Uint", 0, "Uint", 0) } SaveHBITMAPToFile(hBitmap, sFile) { DllCall("GetObject", "Uint", hBitmap, "int", VarSetCapacity(oi,84,0), "Uint", &oi) hFile:= DllCall("CreateFile", "Uint", &sFile, "Uint", 0x40000000, "Uint", 0, "Uint", 0, "Uint", 2, "Uint", 0, "Uint", 0) DllCall("WriteFile", "Uint", hFile, "int64P", 0x4D42|14+40+NumGet(oi,44)<<16, "Uint", 6, "UintP", 0, "Uint", 0) DllCall("WriteFile", "Uint", hFile, "int64P", 54<<32, "Uint", 8, "UintP", 0, "Uint", 0) DllCall("WriteFile", "Uint", hFile, "Uint", &oi+24, "Uint", 40, "UintP", 0, "Uint", 0) DllCall("WriteFile", "Uint", hFile, "Uint", NumGet(oi,20), "Uint", NumGet(oi,44), "UintP", 0, "Uint", 0) DllCall("CloseHandle", "Uint", hFile) } SetClipboardData(hBitmap) { DllCall("GetObject", "Uint", hBitmap, "int", VarSetCapacity(oi,84,0), "Uint", &oi) hDIB := DllCall("GlobalAlloc", "Uint", 2, "Uint", 40+NumGet(oi,44)) pDIB := DllCall("GlobalLock", "Uint", hDIB) DllCall("RtlMoveMemory", "Uint", pDIB, "Uint", &oi+24, "Uint", 40) DllCall("RtlMoveMemory", "Uint", pDIB+40, "Uint", NumGet(oi,20), "Uint", NumGet(oi,44)) DllCall("GlobalUnlock", "Uint", hDIB) DllCall("DeleteObject", "Uint", hBitmap) DllCall("OpenClipboard", "Uint", 0) DllCall("EmptyClipboard") DllCall("SetClipboardData", "Uint", 8, "Uint", hDIB) DllCall("CloseClipboard") } Unicode4Ansi(ByRef wString, sString) { nSize := DllCall("MultiByteToWideChar", "Uint", 0, "Uint", 0, "Uint", &sString, "int", -1, "Uint", 0, "int", 0) VarSetCapacity(wString, nSize * 2) DllCall("MultiByteToWideChar", "Uint", 0, "Uint", 0, "Uint", &sString, "int", -1, "Uint", &wString, "int", nSize) Return &wString } Ansi4Unicode(pString) { nSize := DllCall("WideCharToMultiByte", "Uint", 0, "Uint", 0, "Uint", pString, "int", -1, "Uint", 0, "int", 0, "Uint", 0, "Uint", 0) VarSetCapacity(sString, nSize) DllCall("WideCharToMultiByte", "Uint", 0, "Uint", 0, "Uint", pString, "int", -1, "str", sString, "int", nSize, "Uint", 0, "Uint", 0) Return sString } Edited July 23, 2011 by blur Link to comment Share on other sites More sharing options...
DeathEvil Posted July 23, 2011 Share Posted July 23, 2011 awesome! dmd fixed and regular esc in xpadder does indeed work! love you brother:) Link to comment Share on other sites More sharing options...
Numiah Posted July 23, 2011 Share Posted July 23, 2011 Try Mediafire. That always works a treat. Link to comment Share on other sites More sharing options...
blur Posted July 23, 2011 Share Posted July 23, 2011 awesome! dmd fixed and regular esc in xpadder does indeed work! love you brother:) tnx bro meida fire link added Link to comment Share on other sites More sharing options...
lstrunk Posted July 23, 2011 Share Posted July 23, 2011 Thanks Blur. Lonnie Link to comment Share on other sites More sharing options...
blur Posted July 25, 2011 Share Posted July 25, 2011 (edited) I would like all the people that had problems with Esc key and they had to use e instead - to try to use Esc again and check if this version fixes Esc for them also! I know i had two problems with Esc when i used it with xpadder or joy2key: 1. Esc key would come to VP and invoke exit to editor or resume menu 2. Long press on exit button (which is mapped to Esc) would not be detected - so i would get flashing pause screen They are both fixed now. You could all try it now and see if this fix helps. As I remember some people with IPAC, Pinball Wizard and with some other controllers with xpadder/joy2key had this problem. This will not solve joy8 problem with PBW - so it is still good not to use button 8 on PBW but some other button for exit. Edited July 25, 2011 by blur Link to comment Share on other sites More sharing options...
Guest tornado Posted July 25, 2011 Share Posted July 25, 2011 how change e back to esc Link to comment Share on other sites More sharing options...
blur Posted July 25, 2011 Share Posted July 25, 2011 you have to change your controller or mapping software so that they send Esc instead of e and you have to change settings.ini so that exitemulatorkey is Esc Link to comment Share on other sites More sharing options...
rockyrocket Posted July 27, 2011 Share Posted July 27, 2011 Hi blur so i have unmapped exit from e back to Esc (Esc is code 27 right?) and now short press for pause is bust again here on win 7. Short press works ok in future pinball but not Vp!. This is a shame as i have a noname encoder and have to use keytweak to change entries in the registry for mapping. This works fine except if using vp outside hyperpin i then need to alt tab out to kill it. Link to comment Share on other sites More sharing options...
rockyrocket Posted July 27, 2011 Share Posted July 27, 2011 Some more feedback, with wip4 when launching a vp table i now have the "rendering table" animation stealing focus from the table and have to hit pause twice to give focus to the table. popped wip3 back in and this is fixed again. As i said i am on win 7 so this may be the reason?. Link to comment Share on other sites More sharing options...
bent98 Posted July 28, 2011 Share Posted July 28, 2011 I have issues with WIP 3 and WIP 4 1295 and B2S tables. I am using 182.50 drivers in Win xp 32bit. FPlaunch works great except when launching B2S tables. It looses focus when launch and I have to press my Exit button, which is mapped to Esc key to regain focus. Here is my FPlaunch config [FPLaunch] exitScriptKey = q & s exitEmulatorKey = Esc toggleCursorKey = t pauseVPinball = g hideCursor = true hideDesktop = true hideTaskbar = true useExitScreen = true usePauseKey = true useLoadScreen = true fadespeed = 15 UseExitAsPause = true exitEmulatorKey2= 1 exitEmulatorKey3= Enter pauseFPKey = RButton saveFPTables = true Link to comment Share on other sites More sharing options...
blur Posted July 28, 2011 Share Posted July 28, 2011 I will be afc (away from computer) for a few weeks as probably most of you (vacations). All of this looks solvable for now. Report what you find and we'll analize it when i get back. Link to comment Share on other sites More sharing options...
rockyrocket Posted July 28, 2011 Share Posted July 28, 2011 Ok, have fun Link to comment Share on other sites More sharing options...
bent98 Posted July 28, 2011 Share Posted July 28, 2011 Enjoy your time off! Link to comment Share on other sites More sharing options...
blur Posted July 28, 2011 Share Posted July 28, 2011 (edited) Tnx guys, I will be under the sea or on the sea most of the time so that's why I won't be accessible. (You can check my home page www.submania.hr for more info ) In the meantime while I'm still here rocky and bent do you have loading screen that won't go away even though pinball is fully loaded in the back? And you press esc twice so you get pause and then back to game? I've checked code. I don't put focus on vp if you use loading screen. I never did. I wait for vp to become active cause to me this is a sign that application is fully loaded and loading screen can be closed. This is the code: if (systemName = "Visual Pinball") { IfWinExist, Visual Pinball Player,, DMD ;Check if visual pinball is Ready { IfWinActive, Visual Pinball Player,, DMD ;Check if visual pinball is Ready { Break } } If you don't get focus - that is an old known problem of vp - it won't put itself into focus if you don't use nt4sp5 compatibility mod. Do you have comp. mod set on vpinball.exe? Edited July 28, 2011 by blur Link to comment Share on other sites More sharing options...
bent98 Posted July 28, 2011 Share Posted July 28, 2011 I only have this issue with b2s tables. All others work fine. Also I am running win xp, why would i need to set win nt sp5 comp mode? Link to comment Share on other sites More sharing options...
bent98 Posted July 30, 2011 Share Posted July 30, 2011 BTW With the latest WIP 4 script, when I launch FP tables I see the windows taskbar for a split second. Link to comment Share on other sites More sharing options...
lstrunk Posted July 30, 2011 Share Posted July 30, 2011 Blur, when I press escape I get the pause screen if I press again I go back to game. However if I press and hold the esc key I never see the exiting screens 3, 2, 1. Am I missing something? To exit when on pause I press the 1 key and it goes back to hyperpin. I am using your new version. I have all the pictures from your earlier version. Thanks, Lonnie Link to comment Share on other sites More sharing options...
rockyrocket Posted July 30, 2011 Share Posted July 30, 2011 Tnx guys, I will be under the sea or on the sea most of the time so that's why I won't be accessible.(You can check my home page www.submania.hr for more info ) In the meantime while I'm still here rocky and bent do you have loading screen that won't go away even though pinball is fully loaded in the back? And you press esc twice so you get pause and then back to game? I've checked code. I don't put focus on vp if you use loading screen. I never did. I wait for vp to become active cause to me this is a sign that application is fully loaded and loading screen can be closed. This is the code: if (systemName = "Visual Pinball") { IfWinExist, Visual Pinball Player,, DMD ;Check if visual pinball is Ready { IfWinActive, Visual Pinball Player,, DMD ;Check if visual pinball is Ready { Break } } If you don't get focus - that is an old known problem of vp - it won't put itself into focus if you don't use nt4sp5 compatibility mod. Do you have comp. mod set on vpinball.exe? Yep vp is already in compatability mode for nt4 sp5 ( was wondering if this would fix the dmd issue other are getting?) And yes vp loads ok in the background is just does not gain focus. Link to comment Share on other sites More sharing options...
rockyrocket Posted July 30, 2011 Share Posted July 30, 2011 Oh and i just checked your site - very "big blue" Link to comment Share on other sites More sharing options...
samwyze Posted July 30, 2011 Author Share Posted July 30, 2011 (edited) @rockyrocket Try this: if (systemName = "Visual Pinball") { IfWinExist, Visual Pinball Player,, DMD { IfWinActive, Visual Pinball Player,, DMD { [color="Lime"]WinMaximize, Visual Pinball Player WinHide, HyperPin[/color] Break } } @blur: well, found my pincab under a pile of cr@p in the back of the shed. Managed to get my last version of FPLaunch off, this one has moved quite far since I last looked. When you're back, and if you can be bothered, you might want to have a look at it as it was using gdi+ to draw the overlays. Never really got to grasps with the gdi+ routines though, so it could probably be optimised quite a bit, and of course I only had routines for VP as I don't use FP. Edited July 30, 2011 by samwyze hi to blur Link to comment Share on other sites More sharing options...
rockyrocket Posted July 31, 2011 Share Posted July 31, 2011 JESUS samwise gonna be a big clean up i guess!. I really hope you can get some normality soon, I dont envy you one bit. Will try the above code out later thanks. Link to comment Share on other sites More sharing options...
samwyze Posted July 31, 2011 Author Share Posted July 31, 2011 (edited) Just realised that blur is away for a while, so I'm going to have a crack at merging my last fplaunch, with blurs current, but I have a few questions for you guys. 1: Does anyone use their own (custom) images for the pause/load/exit overlays? I see in its latest incarnation, blur only gets the dimensions of the pause image and uses those to resize all. The reason I took dimensions from each was so that anyone could replace any image and still have a working script. If no one uses custom images, or plans to, then I'll leave it how blur has it. 2: If you're not going to use custom images, does anyone mind if I use a standard system font instead of the modified one used by hyperpin? If no one cares then all the images can be drawn on fly, rather than loaded from files. This should result in better display, images will be antialaised and won't suffer loss of quality from having to be resized. 3: Any other features that people want, that aren't in the todo list included with blurs latest release? 4: I currently use an exit menu, similar to the one in the hyperpin table selection, so pressing esc brings up a menu to return to game or esc to hyperpin, would people use this? 5: Do people use a seperate pause key, or tap esc to pause or both? (I have my 'service' key mapped to pause but never use it with my exit menu) Maybe we should do a poll with what methods of pause/exit are preferred, instead of offering the choices and just go with the majority? Any suggestions or ideas? Edited July 31, 2011 by samwyze Link to comment Share on other sites More sharing options...
samwyze Posted July 31, 2011 Author Share Posted July 31, 2011 Forgot to ask... Does anyone know if blur got the name of the font used within hyperpin? Oh, and been catching up on the thread to make sense of blurs latest script - WOW, this has come a LONG way, hope I still have something to offer - I'll have to freshen up my ahk skills! @rockyrocket: ME TOO!! Link to comment Share on other sites More sharing options...
blur Posted July 31, 2011 Share Posted July 31, 2011 Hey sam. Its me from big blue font name is bauhaus i think but i have another idea that will make pause more hyperpinish and all custom images useless - on pause (short press) it would be great to show instructions.swf file from hyperpin and on the bottom hyperpin grahics for using left and right flippers for browsing flyer and then of course on flipper buttons go to flyer images and on esc go back to game and on 1 or enter exit from table glad to see you back feel free to jump in Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now