I recently developed a system for skipping cutscenes via a parallel common event. It can be done without any plugins while using minimal switch and variable resources.
You will need the following to start:
Switches
* Skippable Cutscene
* Main Folder (optional)
* Sub Folder (optional)
Common Events
* Enable Scene Skip
* Increase Scene Skip Counter
* Temp Disable Scene Skip
* Disable Scene Skip
* Scene Skip
Map Event
* Auto Event
Spoiler: Set The Common Events As Follows
[/quote]
The parallel common event is triggered by the "Skippable Scene" switch. While the Skippable Scene switch is active, a conditional will check if a specific key is being pressed for a certain period of time and thus initiate the skip. I set the conditional to check for the Page Up button being pressed as I found it works smoother if it is not a key which progresses dialogue boxes such as the OK or Cancel buttons. But you can feel free to use any key you see fit.
While the Page Up button is pressed, the Button Held Counter variable begins ticking up and displays a meter image showing how full it is. If the number maxes out, the "Skippable Scene" switch immediately turns off, the skip bar fades, and a script command remotely executes "Exit Event Processing" on the currently active event. There is also a script command that mimics the OK button in case a dialogue box is currently on the screen. Provided your event is set to Auto, it will restart immediately from the beginning of the page. It is here that we will set any skip related conditionals.
*Note*
If a dialogue box hasn't finished loading all text by the time the scene skip command fully initiates, the dialogue box won't close until the player manually presses the OK or Cancel button. This is most easily avoided by setting the text in your game to load instantly.
*End Note*
If you release the Page Up button before the meter completely fills, the Else portion of the conditional sets the Button Held Counter variable back to 0 and erases the skip meter image. The wait timer of 15 frames on the Move Image command not only lets your image fade out gradually, but also prevents the parallel event from causing your game to lag while running passively in the background.
Below will be some further instructional images along with descriptions of how it functions.
Spoiler: Example 1[quote]
If you have an event that is triggered via the action button or another manual method, you will need to use a self switch to take it to an Auto page.
Pictured above is what I like to refer to as the "Root Folder" of the scene. It starts with a conditional that checks if your Scene Skip Counter variable is 1. You want to always ensure it is set back to 0 at the end of any cutscene in which it is used.
After that, a common event activates the skippable cutscene. It ensures that Button Held Counter and Temporary Counter variables are set to 0, manually sets the Cutscene Skip Counter to 1 and finally activates the Skippable Cutscene counter switch.
Following that is a "Main Folder" conditional. I simply use these to help organize my events. The main folder would be anything viewable from the root of the event, and a "Sub Folder" is anything contained within the main folder. I usually regulate sub folders to grouping movement routes, switch changes, etc, but they could also be used to segment longer sections of the event. These so-called folders are optional, but I find them helpful. Also, having them set to on or off doesn't matter. I just find it easier to have them set to on as that's what the conditionals are set to by default. Just make sure you never change the switch state after you set them at the beginning of the game as you could break all of your events.
Within the first main folder is everything that is skippable. The temporary counters are used to determine how much of the skip command plays out depending on when you initiated the skip command. Set the temporary counters as needed to prevent item duplicates from being obtained, variables to increase more than expected, and so on.
Following the Main Folder in the Root of the event is the Skip 1 label. If the player skips the cutscene, the Auto Event starts over from the beginning, the “If Scene Skip = 1” conditional will be activated, and you will be sent here.
Before the final main folder is the "Disable Scene Skip" common event. This immediately turns off the Skippable Scene switch, sets the Scene Skip Counter, Button Held Counter and Temporary Counter variables back to 0. If the player is holding the skip button and a few of the skip meter images have already loaded, this will make them disappear immediately. The final main folder will hand the rest of the scene following the final skip command.
Looking at the skip folder at the start of the event page, any changes needed for the skipped section of the event will play out here.
Make sure to set your temporary counter conditional and additional jump to labels appropriately to ensure the player doesn’t accidentally get duplicates of items, gear or have variables increase more than expected should the player initiate the skip after already obtaining them.
Below is another example but with more than one skip on a single page of an Auto event. This example will focus more on the "Root Folder" of the event.
Spoiler: Skippable Event With Two Or More Skip Points
In this example, there are two points to which you can skip as well as an unskippable scene just before a battle. The Temp Disable Scene Skip event ensures the player can’t skip if they had played to that point without skipping. It helps keep players from accidentally breaking the scene.
After the unskippable scene finishes, Increase Scene Skip Counter is activated. This ensures the Skippable Scene Switch is activated and increases the Cutscene Skip Counter variable by one. At this point, if you activate the scene skip command, "If Cutscene Skip Counter = 2" will be triggered and take you straight to the second half of the cutscene.
Finally, it is important to make sure that you set the "Disable Scene Skip" common event before the final main folder of the event plays out. This ensures that you can no longer trigger the scene skip out of sequence, and it resets the variables to 0 before the scene ends.
You could get even more granular and have a conditional at the end of the page to skip you to other pages on your event, but I find it easier to just have everything consolidated on one page and use the main and sub folders to organize the code.
Below are some images that I use for the skip meter. It is just a strength meter I was using for a mini-game, but at least for the time being, it works well enough for the skip meter. I'll probably make something prettier in the future, but feel free to use it if you would like.
Spoiler: Strength Bar
If you have any questions or suggestions, please feel free to ask or share. I'd love to optimize this process as much as possible, and I'd be happy if it helped anyone else in the community with their own games.