|
|
« on: November 23, 2015, 02:26:26 PM » |
|
Based on like almost a week or so of testing an troubleshooting, I'll now reveal this tutorial. What's this for, you ask? Well it's simple. This tutorial will show you how to make a pseudo Extreme Speed. Warning/Notice: This tutorial is only recommended for those who know what they're doing and know their way around PSA/Moveset Editing. If you don't know most/any of the terms I use in the tutorial, then it's likely you're not ready for something so advanced yet (if you have questions, you can still ask though). These combinations of commands also take up a lot of file size (around 14 KB), so make sure your FitChar.pac file has enough room. If you're going to be using BrawlBox, then make sure your character can be edited without their file breaking. If you can't, then use PSA. Requirements: -5 Animations. Start, StartAir, Move, End, and EndAir. -5 Open Sub Actions. -3 Actions. -*4 LA-Floats. -*1 LA-Bit. -At least 14KB of space available in your FitChar.pac *Check this guide to know which variables you can use. http://forums.kc-mm.com/index.php?topic=74266.0Also check this page to see which Variables are already used by the game. http://tinyurl.com/p4ojsodThis tutorial will be broken down into 3 sections: Start, Move, and End with each section of coding being explained. Now without further adieu, let's begin. Part 1: Start. -Actions- For the Start part of this move, you'll be editing one Action between Actions 274 (Dec)/112 (Hex) through 277 (Dec)/115 (Hex), based on which Special you want this coding to be used for. Action 274 (Dec)/112 (Hex): Neutral Special Action 275 (Dec)/113 (Hex): Side Special Action 276 (Dec)/114 (Hex): Up Special Action 277 (Dec)/115 (Hex): Down Special In the Action you chose, insert the following coding: X = Action you want your current Action to direct to once the current Action ends. Y = Ground Sub Action. Z = Air Sub Action. *On Ground is 6. and Unknown (17) is 17 (Dec)/11 (Hex). Once you're done with your Action coding, it's time for your Sub Actions. -Sub Actions- In the Ground version of your Sub Action (it can be air, though ground just for consistency, as you're just going to be using a GoTo command anyway), insert the following coding. This is where you'll be setting your Floats. A = Float to use for Horizontal Momentum. (For this tutorial, it's set to 3.5 forward and -3.5 backward, but you can adjust this to your liking). F = Float to use for Vertical Momentum. (For this tutorial, it's set to 3.5 upward and -3.5 downward, but you can adjust this to your liking). C = Float to use for the move's timer. (For this tutorial, it's set to 30, but you can adjust this to your liking). D = Float to use for setting the Frame of the *Move Action. E = Bit. I will explain this later. *For this example, the animation for the Move Action is 120 Frames long, and has the character rotating 360 degrees. LA-Float [D] is used to set which Frame the Move Action will start on. What this will do is during the Start Action, the coding will infinitely check to see which direction on the control stick is pressed, and if the character is on the ground, then holding down will automatically direct to if the player was holding forward on the control stick. If the control stick isn't pressed at all, then it will direct to if the player was holding up. For a breakdown of the If Compare commands, here's the 4 main control stick directions. In the Air version of the Sub Action, just insert a GoTo command that references the Ground Sub Action. Hopefully everything's currently able to be understood. Let's get onto the most difficult part of the tutorial... Part 2: Move. Prepare yourself, as this is the most difficult and most confusing part of the tutorial. -Actions- -Sub Action- This part will be separated into 4 parts, each for their own tab. 2a.) Main tab. Insert the following coding into the Main Tab. X = Frame Speed Modifier setting. The higher the FSM, the faster the frame movement. Y = Synch Timer setting. Default is 1. Though you can set it higher or lower, depending on how tight you want the movement. Lower = tighter. Frame Speed Modifier: Multiplier=X Set Loop Infinite Set Animation Frame: LA-Float[D] Synchronous Timer: frames=Y If Compare: LA-Float[D] < 0 Float Variable Add: LA-Float[D] += 1 End If If Compare: LA-Float[D] > 119 Float Variable Subtract: LA-Float[D] -= 1 End If If Compare: IC-Basic[1012] >= IC-Basic[3149] If Compare: LA-Float[D] <= 0 Float Variable Set: LA-Float[D] = 119 End If If Touching a Floor, Wall, or Ceiling: 2 Or Touching a Floor, Wall, or Ceiling: 4 If Compare: LA-Float[D] >= 90 And Compare: LA-Float[D] < 119 Float Variable Add: LA-Float[D] += 1 End If If Compare: LA-Float[D] < 90 And Compare: LA-Float[D] > 59 Float Variable Subtract: LA-Float[D] -= 1 End If Else If Compare: LA-Float[D] > 90 Or Compare: LA-Float[D] <= 30 Float Variable Subtract: LA-Float[D] -= 1 End If If Compare: LA-Float[D] > 30 And Compare: LA-Float[D] < 90 Float Variable Add: LA-Float[D] += 1 End If End If If Compare: IC-Basic[1018] >= IC-Basic[3186] If Compare: LA-Float[D] > 105 Float Variable Subtract: LA-Float[D] -= 1 End If If Compare: LA-Float[D] < 105 Float Variable Add: LA-Float[D] += 1 End If End If If Compare: IC-Basic[1020] >= IC-Basic[3186] If On Ground: If Compare: LA-Float[D] > 90 Or Compare: LA-Float[D] <= 30 Float Variable Subtract: LA-Float[D] -= 1 End If If Compare: LA-Float[D] > 30 And Compare: LA-Float[D] < 90 Float Variable Add: LA-Float[D] += 1 End If Else If Compare: LA-Float[D] > 75 Float Variable Subtract: LA-Float[D] -= 1 End If If Compare: LA-Float[D] < 75 Float Variable Add: LA-Float[D] += 1 End If End If End If End If If Compare: IC-Basic[1011] >= IC-Basic[3149] If Compare: LA-Float[D] >= 119 Float Variable Set: LA-Float[D] = 0 End If If Touching a Floor, Wall, or Ceiling: 2 Or Touching a Floor, Wall, or Ceiling: 4 If Compare: LA-Float[D] <= 30 And Compare: LA-Float[D] > 0 Float Variable Subtract: LA-Float[D] -= 1 End If If Compare: LA-Float[D] > 30 And Compare: LA-Float[D] < 59 Float Variable Add: LA-Float[D] += 1 End If Else If Compare: LA-Float[D] < 30 Or Compare: LA-Float[D] >= 90 Float Variable Add: LA-Float[D] += 1 End If If Compare: LA-Float[D] > 30 And Compare: LA-Float[D] < 90 Float Variable Subtract: LA-Float[D] -= 1 End If End If If Compare: IC-Basic[1018] >= IC-Basic[3186] If Compare: LA-Float[D] > 15 Float Variable Subtract: LA-Float[D] -= 1 End If If Compare: LA-Float[D] < 15 Float Variable Add: LA-Float[D] += 1 End If End If If Compare: IC-Basic[1020] >= IC-Basic[3186] If On Ground: If Compare: LA-Float[D] < 30 Or Compare: LA-Float[D] >= 90 Float Variable Add: LA-Float[D] += 1 End If If Compare: LA-Float[D] > 30 And Compare: LA-Float[D] < 90 Float Variable Subtract: LA-Float[D] -= 1 End If Else If Compare: LA-Float[D] > 45 Float Variable Subtract: LA-Float[D] -= 1 End If If Compare: LA-Float[D] < 45 Float Variable Add: LA-Float[D] += 1 End If End If End If End If If Compare: IC-Basic[1020] >= IC-Basic[3186] If On Ground: If Compare: LA-Float[D] < 30 Or Compare: LA-Float[D] < 90 Float Variable Add: LA-Float[D] += 1 End If If Compare: LA-Float[D] > 30 And Compare: LA-Float[D] < 90 Float Variable Subtract: LA-Float[D] -= 1 End If If Compare: LA-Float[D] >= 45 And Not Compare: LA-Float[D] == 30 Float Variable Subtract: LA-Float[D] -= 1 End If If Compare: LA-Float[D] >= 75 And Not Compare: LA-Float[D] == 90 Float Variable Add: LA-Float[D] += 1 End If Else If Compare: LA-Float[D] > 59 Float Variable Subtract: LA-Float[D] -= 1 End If If Compare: LA-Float[D] < 59 Float Variable Add: LA-Float[D] += 1 End If End If End If If Compare: IC-Basic[1018] >= IC-Basic[3186] If Touching a Floor, Wall, or Ceiling: 3 And Not Touching a Floor, Wall, or Ceiling: 2 And Not Touching a Floor, Wall, or Ceiling: 4 If Compare: LA-Float[D] >= 0 And Compare: LA-Float[D] < 15 Float Variable Add: LA-Float[D] += 1 End If If Compare: LA-Float[D] <= 119 And Compare: LA-Float[D] > 105 Float Variable Subtract: LA-Float[D] -= 1 End If Else If Compare: LA-Float[D] > 0 And Compare: LA-Float[D] <= 59 Float Variable Subtract: LA-Float[D] -= 1 End If If Compare: LA-Float[D] < 119 And Compare: LA-Float[D] >= 59 Float Variable Add: LA-Float[D] += 1 End If End If End If Execute Loop Quite a lot of coding, isn't it. Here's a tl;dr summary: This coding will change the Frame of the Move animation, based on control stick input. If moving downward on the ground, it will change to if the character's going forward. If moving upward on a ceiling, it will change to if the character's going up and diagonal. If moving sideways on a wall, it will change to if the character's going up. 2b.) GFX tab. For this, you're going to need to make two Sub Routines. Insert the following coding into the first Sub Routine you made: Then insert the following coding into the second Sub Routine: If Compare: IC-Basic[1012] >= IC-Basic[3149] If Touching a Floor, Wall, or Ceiling: 2 Or Touching a Floor, Wall, or Ceiling: 4 If Compare: LA-Float[A] > 0 Float Variable Subtract: LA-Float[A] -= 0.1 End If If Compare: LA-Float[A] < 0 Float Variable Add: LA-Float[A] += 0.1 End If Else If Compare: LA-Float[A] > -3.5 Float Variable Subtract: LA-Float[A] -= 0.1 End If If Compare: LA-Float[A] < -3.5 Float Variable Add: LA-Float[A] += 0.1 End If End If Else If Compare: IC-Basic[1011] >= IC-Basic[3149] If Touching a Floor, Wall, or Ceiling: 2 Or Touching a Floor, Wall, or Ceiling: 4 If Compare: LA-Float[A] > 0 Float Variable Subtract: LA-Float[A] -= 0.1 End If If Compare: LA-Float[23] < 0 Float Variable Add: LA-Float[A] += 0.1 End If Else If Compare: LA-Float[A] > 3.5 Float Variable Subtract: LA-Float[A] -= 0.1 End If If Compare: LA-Float[23] < 3.5 Float Variable Add: LA-Float[A] += 0.1 End If End If Else If On Ground: Or Touching a Floor, Wall, or Ceiling: 3 If Compare: LA-Float[A] > 3.5 Float Variable Subtract: LA-Float[A] -= 0.1 End If If Compare: LA-Float[A] < 3.5 Float Variable Add: LA-Float[A] += 0.1 End If Else If Compare: LA-Float[A] > 0 Float Variable Subtract: LA-Float[A] -= 0.1 End If If Compare: LA-Float[A] < 0 Float Variable Add: LA-Float[A] += 0.1 End If End If End If End If After that, insert the following coding into the GFX tab (make sure you note which Sub Routines you made): Set Loop Infinite Set/Add Momentum: Horizontal=0, Vertical=0, Add/Set Horiz=1, Add/Set Vert=1 Add/Subtract Character Momentum: Horizontal Speed=LA-Float[A], Vertical Speed=LA-Float[F] Synchronous Timer: frames=Y If Compare: IC-Basic[1012] >= IC-Basic[3149] If Touching a Floor, Wall, or Ceiling: 2 Or Touching a Floor, Wall, or Ceiling: 4 If Compare: LA-Float[A] > 0 Float Variable Subtract: LA-Float[A] -= 0.1 End If If Compare: LA-Float[A] < 0 Float Variable Add: LA-Float[A] += 0.1 End If Else If Compare: LA-Float[A] > -3.5 Float Variable Subtract: LA-Float[A] -= 0.1 End If If Compare: LA-Float[A] < -3.5 Float Variable Add: LA-Float[A] += 0.1 End If End If Subroutine SubRoutine0 in the SubRoutines list End If If Compare: IC-Basic[1011] >= IC-Basic[3149] If Touching a Floor, Wall, or Ceiling: 2 Or Touching a Floor, Wall, or Ceiling: 4 If Compare: LA-Float[A] > 0 Float Variable Subtract: LA-Float[A] -= 0.1 End If If Compare: LA-Float[A] < 0 Float Variable Add: LA-Float[A] += 0.1 End If Else If Compare: LA-Float[A] > 3.5 Float Variable Subtract: LA-Float[A] -= 0.1 End If If Compare: LA-Float[A] < 3.5 Float Variable Add: LA-Float[A] += 0.1 End If End If Subroutine SubRoutine0 in the SubRoutines list End If If Compare: IC-Basic[1018] >= IC-Basic[3186] Subroutine SubRoutine1 in the SubRoutines list If Compare: LA-Float[F] < 3.5 Float Variable Add: LA-Float[F] += 0.1 End If If Compare: LA-Float[F] > 3.5 Float Variable Subtract: LA-Float[F] -= 0.1 End If End If If Compare: IC-Basic[1020] >= IC-Basic[3186] Subroutine SubRoutine1 in the SubRoutines list If On Ground: If Compare: LA-Float[F] < 0 Float Variable Add: LA-Float[F] += 0.1 End If If Compare: LA-Float[F] > 0 Float Variable Subtract: LA-Float[F] -= 0.1 End If Else If Compare: LA-Float[F] < -3.5 Float Variable Add: LA-Float[F] += 0.1 End If If Compare: LA-Float[F] > -3.5 Float Variable Subtract: LA-Float[F] -= 0.1 End If End If End If Float Variable Subtract: LA-Float[C] -= 1 Execute Loop tl;dr explanation: This coding does the same thing as the Main tab, except for momentum, rather than the current Frame. 2c.) SFX tab. This is the simplest part of Part 2. Insert the following coding into the SFX tab. What this will do is if the current Frame is less than or equal to 120 and more than 60 while also checking to see if the timer is almost out and if the Bit isn't set. If these conditions are met, then the character will reverse their direction once the timer ends. 3d.) Other tab. The final part of Part 2. Insert the following coding into the Other tab. Set Loop Infinite Synchronous Timer: frames=Y If On Ground: If Compare: LA-Float[D] > 59 And Compare: LA-Float[D] < 90 Float Variable Add: LA-Float[D] += 1 If Compare: LA-Float[A] > -3.5 Float Variable Subtract: LA-Float[A] -= 0.1 End If If Compare: LA-Float[A] < -3.5 Float Variable Add: LA-Float[A] += 0.1 End If End If If Compare: LA-Float[F] < 0 Float Variable Add: LA-Float[F] += 0.1 End If If Compare: LA-Float[F] > 0 Float Variable Subtract: LA-Float[F] -= 0.1 End If If Compare: LA-Float[D] <= 59 And Compare: LA-Float[D] > 30 Float Variable Subtract: LA-Float[D] -= 1 If Compare: LA-Float[A] > 3.5 Float Variable Subtract: LA-Float[A] -= 0.1 End If If Compare: LA-Float[A] < 3.5 Float Variable Add: LA-Float[A] += 0.1 End If End If End If If Touching a Floor, Wall, or Ceiling: 3 And Not Touching a Floor, Wall, or Ceiling: 2 And Not Touching a Floor, Wall, or Ceiling: 4 If Compare: LA-Float[D] >= 0 And Compare: LA-Float[D] < 15 Float Variable Add: LA-Float[D] += 1 If Compare: LA-Float[A] > 3.5 Float Variable Subtract: LA-Float[A] -= 0.1 End If If Compare: LA-Float[A] < 3.5 Float Variable Add: LA-Float[A] += 0.1 End If End If If Compare: LA-Float[D] <= 119 And Compare: LA-Float[D] > 105 Float Variable Subtract: LA-Float[D] -= 1 If Compare: LA-Float[A] > -3.5 Float Variable Subtract: LA-Float[A] -= 0.1 End If If Compare: LA-Float[A] < -3.5 Float Variable Add: LA-Float[A] += 0.1 End If End If End If If Touching a Floor, Wall, or Ceiling: 2 Or Touching a Floor, Wall, or Ceiling: 4 If Compare: LA-Float[A] > 0 Float Variable Subtract: LA-Float[A] -= 0.1 End If If Compare: LA-Float[A] < 0 Float Variable Add: LA-Float[A] += 0.1 End If If Compare: LA-Float[D] < 90 And Compare: LA-Float[D] > 59 Float Variable Subtract: LA-Float[D] -= 1 If Compare: LA-Float[F] < -3.5 Float Variable Add: LA-Float[F] += 0.1 End If If Compare: LA-Float[F] > -3.5 Float Variable Subtract: LA-Float[F] -= 0.1 End If End If If Compare: LA-Float[D] >= 90 And Compare: LA-Float[D] < 119 Float Variable Add: LA-Float[D] += 1 If Compare: LA-Float[F] < 3.5 Float Variable Add: LA-Float[F] += 0.1 End If If Compare: LA-Float[F] > 3.5 Float Variable Subtract: LA-Float[F] -= 0.1 End If End If If Compare: LA-Float[D] > 30 And Compare: LA-Float[D] < 59 Float Variable Add: LA-Float[D] += 1 If Compare: LA-Float[F] < -3.5 Float Variable Add: LA-Float[F] += 0.1 End If If Compare: LA-Float[F] > -3.5 Float Variable Subtract: LA-Float[F] -= 0.1 End If End If If Compare: LA-Float[D] <= 30 And Compare: LA-Float[D] > 0 Float Variable Subtract: LA-Float[D] -= 1 If Compare: LA-Float[F] < 3.5 Float Variable Add: LA-Float[F] += 0.1 End If If Compare: LA-Float[F] > 3.5 Float Variable Subtract: LA-Float[F] -= 0.1 End If End If End If If Not Has a Floor Below the Player: If Compare: LA-Float[D] < 85 And Compare: LA-Float[D] > 35 Edge Interaction 04: Boolean-false, End If End If Execute Loop tl;dr explanation: This coding does the same thing as the Main and GFX tabs, but does it automatically, so the character isn't stuck in place if not pressing the control stick. The character will also go through platform if facing downward and in the air. The most difficult and longest part it out of the way, now let's finish this! Part 3: End -Actions- Insert the following coding into the Action you set Part 2 to direct to when the timer hits 0. X=Ground version. Y= Air version. Once that's done, let's conclude this. -Sub Actions- Once you have everything done, save and test. If you come into any issues, make sure you inserted your coding correctly. If you made sure, then let me know the issue. I hope this long wall of text and jibberish was worth it. :L The finished result should look something like this: http://gfycat.com/BriefFlawlessAmericanlobster
|