me as well except mine wont launch the video at all
Try starting the exe as administrator.
i tried that. does the vlc application need to be in the same folder as media?
Hi, you could try the changes I made.
It works for me on FW4 using both the FW3 or FW4 toggle ingame.
I changed some stuff for it to work the way I wanted.
Note: with this for FW4 you need to put a APPLICATION KEY into the App ID section. (As I didn’t figure out how the App ID works with using the API3)
Never share this key to others though.
Also the Warning for “Loaded resource as image file, this will not work on export: ‘res://sprite_sheets/1.png’” is not stopping the Game from working for me.
The Reasons I came up with why the video never starts or just says completed is because it only starts once a connection to the Handy is made. (For some reason in my script it would also play the video in FW4 mode if the handy is not connected)
sync_handy.py (45.6 KB)
The Dice is already randomized.You just need to use the random option everytime when you start the game.
Oh, I think you’re mistaken. Each stage is assigned a difficulty group, and when you press random, it seems to only play within that group. The difficulty groups are 1-26, 27-50, 51-79, 80-95, and 96-100, and each video is randomly arranged within these groups.
It always says it launched VLC in fullscreen, but nothing happens and the rounds are over immediately. I have the 64 bit version, is there any solution?
Success with py
Python VLC+Handy script started with PID: 4248
VLC Player launched in FULLSCREEN! Pauses: 1 (5s each)
Starting video completion monitor…
Video script finished! (Auto-detected)
Normal video completion
DEBUG: Found 1 entries in pause config
DEBUG: Latest entry: { “max_pauses”: 1.0, “pause_duration”: 5.0, “reason”: “round_start”, “timestamp”: “2026-02-18T19:59:23Z”, “writer”: “godot” }
PAUSE CONFIG HISTORY:
- 2026-02-18T19:59:23Z | godot | pauses=1.0 | reason=round_start
Pauses set to: 2 (1 + 1 bonus)
Video completed for Round 1
Video finished! Roll the dice to continue.
error from the log file:
2026-02-18 21:08:48,016 - DEBUG - Mode response: 400 - InvalidAccessKeyIdThe access key ID you provided does not exist in our records.NotYetImplemented
2026-02-18 21:08:48,016 - ERROR - Request error during HSSP setup: 400 Client Error: Bad Request for url: https://handyverse.com
2026-02-18 21:08:48,016 - ERROR -
FATAL ERROR: 400 Client Error: Bad Request for url: https://handyverse.com
I folllowed everything, I use the application ID and not the access token. I put the connection key first and app ID second.
And yes I have a VideoLAN folder in C:Program Files
EDIT: thanks @FireIron your fix helped. Somehow I tried your approach after every other one.
That’s extremely infuriating I booted up the game while the media files were downloading and accidentally clicked randomize, not knowing it physically renames every single file. Now I have to redownload 89gb of videos again because of how you implemented the shuffle causing the mapping to be messed up.
Also, VLC player is not starting for me. I installed 64 bit and added to system PATH.
2026-03-10 16:30:07,166 - DEBUG - Mode response: 400 - InvalidAccessKeyIdThe access key ID you provided does not exist in our records.NotYetImplemented
2026-03-10 16:30:07,166 - ERROR - Request error during HSSP setup: 400 Client Error: Bad Request for url: https://handyverse.com
2026-03-10 16:30:07,167 - ERROR -
FATAL ERROR: 400 Client Error: Bad Request for url: https://handyverse.com
2026-03-10 16:30:07,169 - ERROR - Traceback: Traceback (most recent call last):
File “C:\Fapland Handy\scripts\sync_handy.py”, line 865, in main
headers = setup_hssp(script_url)
File “C:\Fapland Handy\scripts\sync_handy.py”, line 354, in setup_hssp
mode_response.raise_for_status()
I cant get it to work, it keeps saying wrong acces key, but i tried them all including the Application ID and Key
I am using a translation tool to write this. I have downloaded the software and installed the necessary components, and this is the log I am currently seeing. VLC does not pop up and the round ends immediately. A warning is also displayed. Could you please help me figure out the cause? The firmware version of the handy unit is 3.
Creating Premium FapLand Start Menu…
Checking for highscores.json…
Checking for highscores.json…
Premium Start Menu ready!
Saved Handy configuration
Install Dependencies pressed
Start Game pressed - transitioning to main game…
Creating AAA Quality FapLand UI with Session Timer…
Cleared pause config file on startup
Perk System initialized
Connecting to existing scene UI elements…
Connected to scene UI elements
Connected to scene UI elements with premium styling!
Connecting AAA UI signals…
Play button connected
Roll button connected
UI Updated with premium animations - Round:1Pauses:1
Round 1 ready - Pauses: 1/1
Round 1 ready! You have 1 pause available.
Session timer started
AAA Quality UI ready with session tracking!
WARNING: Loaded resource as image file, this will not work on export: ‘res://sprite_sheets/1.png’. Instead, import the image file as an Image resource and load it normally as a resource.
at: load (core/io/image.cpp:2537)
Showing animated sprite for round 1
Showing ‘Coming Up Next’ for Round 1
removing countdown timer
countdown timer cleaned up
PLAY PRESSED - Starting Round 1
Hiding ‘Coming Up Next’ display
Saved pause config entry: { “timestamp”: “2026-03-21T03:21:32Z”, “max_pauses”: 1, “pause_duration”: 5, “writer”: “godot”, “reason”: “round_start” }
Launching Python script: scripts/sync_handy.py with video: 1
All files found, launching Python script…
Trying Python command: py
Success with py
Python VLC+Handy script started with PID: 24820
VLC Player launched in FULLSCREEN! Pauses: 1 (5s each)
Starting video completion monitor…
Video script finished! (Auto-detected)
Normal video completion
DEBUG: Found 1 entries in pause config
DEBUG: Latest entry: { “max_pauses”: 1.0, “pause_duration”: 5.0, “reason”: “round_start”, “timestamp”: “2026-03-21T03:21:32Z”, “writer”: “godot” }
PAUSE CONFIG HISTORY:
- 2026-03-21T03:21:32Z | godot | pauses=1.0 | reason=round_start
Pauses set to: 2 (1 + 1 bonus)
Video completed for Round 1
Video finished! Roll the dice to continue.
Idk if this will help anyone, but I’ve managed to fix mine (using firmware 3)
(Pastebin didn’t let me upload it there so Github gist it is, also how do you upload .py files here?)
note - this is for sync_handy.py
if it’s delayed or ahead then you can change this line:
if FIRMWARE_VERSION == 3:
play_payload = {
"estimatedServerTime": server_time,
"startTime": 550
}
(the “startTime” = 550, as for me this is fine)
Also, does pausing break the entire chain for anyone? (as in like the funscript fully restarts instead of picking up? Same with resync)