Home Gallery Resources The Team Rules chat Login Register
Pages: [1]
Author Topic: How to have a proper On Hit Cancel system  (Read 8141 times)
0 Members and 1 Guest are viewing this topic.
KingJigglypuff
Meme Machine
Moderator
****
Offline Offline

Posts: 7206


  • Awards RAGE!! >9000 Hyperactive Contributor Heart Container

  • View Profile Awards
    « on: March 14, 2014, 05:33:11 PM »


    This is for users who want to have an On Hit Cancel system for their PSAs. This method will allow your character to interrupt their attacks into a Tilt, a Smash, a Special, or a Grab (Ground only). If you want your system to be more specific, then you can remove some of the Allow Specific Interrupts from the coding.

    Put the following coding in the GFX/SFX/Other Tab of the specified Sub Actions/Attacks.

    X= Frame Collisions start on.
    Y= Amount of Frames the Collisions last for.
    Jab (Attack11, Attack12, Attack13, Attack100Start, Attack100, AttackEnd)
    Asynchronous Timer: frames=X
    Set Loop Y Times
       If Hitbox Connects:
                    Allow Specific Interrupt: Ground Catch
          Allow Specific Interrupt: Ground Special
          Allow Specific Interrupt: Ground Attack
          Invert Action Status ID: Interrupt ID=Ground Attack, Status ID=10081
       End If
       Synchronous Timer: frames=1
    Execute Loop

    Side Tilt (AttackS3Hi, AttackS3S, AttackS3Lw)
    Asynchronous Timer: frames=X
    Set Loop Y Times
       If Hitbox Connects:
          Allow Specific Interrupt: Ground Attack
          Allow Specific Interrupt: Ground Special
          Allow Specific Interrupt: Ground Catch
          Invert Action Status ID: Interrupt ID=Ground Attack, Status ID=10084
       End If
       Synchronous Timer: frames=1
    Execute Loop

    Up Tilt (AttackHi3)
    Asynchronous Timer: frames=X
    Set Loop Y Times
       If Hitbox Connects:
          Allow Specific Interrupt: Ground Attack
          Allow Specific Interrupt: Ground Special
          Allow Specific Interrupt: Ground Catch
          Invert Action Status ID: Interrupt ID=Ground Attack, Status ID=10085
       End If
       Synchronous Timer: frames=1
    Execute Loop

    Down Tilt (AttackLw3)
    Asynchronous Timer: frames=X
    Set Loop Y Times
       If Hitbox Connects:
          Allow Specific Interrupt: Ground Attack
          Allow Specific Interrupt: Ground Special
          Allow Specific Interrupt: Ground Catch
          Invert Action Status ID: Interrupt ID=Ground Attack, Status ID=10086
       End If
       Synchronous Timer: frames=1
    Execute Loop

    Dash Attack (AttackDash)
    Asynchronous Timer: frames=X
    Set Loop Y Times
       If Hitbox Connects:
          Allow Specific Interrupt: Ground Attack
          Allow Specific Interrupt: Ground Special
               Allow Specific Interrupt: Ground Catch
       End If
       Synchronous Timer: frames=1
    Execute Loop

    Side Smash (AttackS4Hi, AttackS4S, AttackS4Lw)
    Asynchronous Timer: frames=X
    Set Loop Y Times
       If Hitbox Connects:
          Allow Specific Interrupt: Ground Special
          Allow Specific Interrupt: Ground Attack
          Allow Specific Interrupt: Ground Catch
          Invert Action Status ID: Interrupt ID=Ground Attack, Status ID=10088
       End If
       Synchronous Timer: frames=1
    Execute Loop

    Up Smash (AttackHi4)
    Asynchronous Timer: frames=X
    Set Loop Y Times
       If Hitbox Connects:
          Allow Specific Interrupt: Ground Special
          Allow Specific Interrupt: Ground Attack
          Allow Specific Interrupt: Ground Catch
          Invert Action Status ID: Interrupt ID=Ground Attack, Status ID=10091
       End If
       Synchronous Timer: frames=1
    Execute Loop

    Down Smash (AttackLw4)
    Asynchronous Timer: frames=X
    Set Loop Y Times
       If Hitbox Connects:
          Allow Specific Interrupt: Ground Special
          Allow Specific Interrupt: Ground Attack
          Allow Specific Interrupt: Ground Catch
          Invert Action Status ID: Interrupt ID=Ground Special, Status ID=10100
          Invert Action Status ID: Interrupt ID=Ground Attack, Status ID=10094
       End If
       Synchronous Timer: frames=1
    Execute Loop

    Neutral Air (AttackAirN)
    Asynchronous Timer: frames=X
    Set Loop Y Times
       If Hitbox Connects:
          Allow Specific Interrupt: Air Jump Aerial
          Invert Action Status ID: Interrupt ID=Air Jump Aerial, Status ID=10061
          Allow Specific Interrupt: Air Special
          Change Action action=51, requirement=Compare: IC-Basic[1018] >= IC-Basic[3186]
          Additional Change Action Requirement Value Button Press: 0
          Change Action action=51, requirement=Compare: IC-Basic[1020] >= IC-Basic[3186]
          Additional Change Action Requirement Value Button Press: 0
          Change Action action=51, requirement=Compare: IC-Basic[1012] >= IC-Basic[3149]
          Additional Change Action Requirement Value Button Press: 0
          Change Action action=51, requirement=Compare: IC-Basic[1011] >= IC-Basic[3149]
          Additional Change Action Requirement Value Button Press: 0
       End If
       Synchronous Timer: frames=1
    Execute Loop

    Forward Air (AttackAirF)
    Asynchronous Timer: frames=X
    Set Loop Y Times
       If Hitbox Connects:
          Allow Specific Interrupt: Air Jump Aerial
          Invert Action Status ID: Interrupt ID=Air Jump Aerial, Status ID=10061
                    Allow Specific Interrupt: Air Special
          Change Action action=51, requirement=Compare: IC-Basic[1018] >= IC-Basic[3186]
          Additional Change Action Requirement Value Button Press: 0
          Change Action action=51, requirement=Compare: IC-Basic[1020] >= IC-Basic[3186]
          Additional Change Action Requirement Value Button Press: 0
          Change Action action=51, requirement=Compare: IC-Basic[1012] >= IC-Basic[3149]
          Additional Change Action Requirement Value Button Press: 0
          Change Action action=51, requirement=Not Compare: IC-Basic[1011] >= IC-Basic[3149]
          Additional Change Action Requirement Value Button Not Pressed: 15
          Additional Change Action Requirement Value Button Press: 0
       End If
       Synchronous Timer: frames=1
    Execute Loop

    Back Air (AttackAirB)
    Asynchronous Timer: frames=X
    Set Loop Y Times
       If Hitbox Connects:
          Allow Specific Interrupt: Air Jump Aerial
          Invert Action Status ID: Interrupt ID=Air Jump Aerial, Status ID=10061
          Allow Specific Interrupt: Air Special
          Change Action action=51, requirement=Compare: IC-Basic[1018] >= IC-Basic[3186]
          Additional Change Action Requirement Value Button Press: 0
          Change Action action=51, requirement=Compare: IC-Basic[1020] >= IC-Basic[3186]
          Additional Change Action Requirement Value Button Press: 0
          Change Action action=51, requirement=Compare: IC-Basic[1011] >= IC-Basic[3149]
          Additional Change Action Requirement Value Button Press: 0
          Change Action action=51, requirement=Not Compare: IC-Basic[1012] >= IC-Basic[3149]
          Additional Change Action Requirement Value Button Not Pressed: 15
          Additional Change Action Requirement Value Button Press: 0
       End If
       Synchronous Timer: frames=1
    Execute Loop

    Up Air (AttackAirHi)
    Asynchronous Timer: frames=X
    Set Loop Y Times
       If Hitbox Connects:
          Allow Specific Interrupt: Air Jump Aerial
          Invert Action Status ID: Interrupt ID=Air Jump Aerial, Status ID=10061
          Allow Specific Interrupt: Air Special
          Change Action action=51, requirement=Compare: IC-Basic[1020] >= IC-Basic[3186]
          Additional Change Action Requirement Value Button Press: 0
          Change Action action=51, requirement=Not Compare: IC-Basic[1018] >= IC-Basic[3186]
          Additional Change Action Requirement Value Button Not Pressed: 15
          Additional Change Action Requirement Value Button Press: 0
          Change Action action=51, requirement=Compare: IC-Basic[1012] >= IC-Basic[3149]
          Additional Change Action Requirement Value Button Press: 0
          Change Action action=51, requirement=Compare: IC-Basic[1011] >= IC-Basic[3149]
          Additional Change Action Requirement Value Button Press: 0
       End If
       Synchronous Timer: frames=1
    Execute Loop

    Down Air (AttackAirLw)
    Asynchronous Timer: frames=X
    Set Loop Y Times
       If Hitbox Connects:
          Allow Specific Interrupt: Air Jump Aerial
          Invert Action Status ID: Interrupt ID=Air Jump Aerial, Status ID=10061
          Allow Specific Interrupt: Air Special
          Change Action action=51, requirement=Not Compare: IC-Basic[1020] >= IC-Basic[3186]
          Additional Change Action Requirement Value Button Not Pressed: 15
          Additional Change Action Requirement Value Button Press: 0
          Change Action action=51, requirement=Compare: IC-Basic[1018] >= IC-Basic[3186]
          Additional Change Action Requirement Value Button Press: 0
          Change Action action=51, requirement=Compare: IC-Basic[1012] >= IC-Basic[3149]
          Additional Change Action Requirement Value Button Press: 0
          Change Action action=51, requirement=Compare: IC-Basic[1011] >= IC-Basic[3149]
          Additional Change Action Requirement Value Button Press: 0
       End If
       Synchronous Timer: frames=1
    Execute Loop

    Ground Neutral Special (If it has collisions)
    Asynchronous Timer: frames=X
    Set Loop Y Times
       If Hitbox Connects:
          Allow Specific Interrupt: Ground Attack
          Allow Specific Interrupt: Ground Special
          Allow Specific Interrupt: Ground Catch
          Invert Action Status ID: Interrupt ID=Ground Special, Status ID=10097
       End If
       Synchronous Timer: frames=1
    Execute Loop

    Air Neutral Special (If it has collisions)
    Asynchronous Timer: frames=X
    Set Loop Y Times
       If Hitbox Connects:
          Allow Specific Interrupt: Air Attack
          Allow Specific Interrupt: Air Special
          Invert Action Status ID: Interrupt ID=Air Special, Status ID=10097
       End If
       Synchronous Timer: frames=1
    Execute Loop

    Ground Side Special (If it has collisions and doesn't leave the ground)
    Asynchronous Timer: frames=X
    Set Loop Y Times
       If Hitbox Connects:
          Allow Specific Interrupt: Ground Attack
          Allow Specific Interrupt: Ground Special
          Allow Specific Interrupt: Ground Catch
          Invert Action Status ID: Interrupt ID=Ground Special, Status ID=10098
       End If
       Synchronous Timer: frames=1
    Execute Loop

    Air Side Special (If it has collisions)
    Asynchronous Timer: frames=X
    Set Loop Y Times
       If Hitbox Connects:
          Allow Specific Interrupt: Air Attack
          Allow Specific Interrupt: Air Special
          Invert Action Status ID: Interrupt ID=Air Special, Status ID=10098
       End If
       Synchronous Timer: frames=1
    Execute Loop

    Ground Up Special (If it has collisions and doesn't leave the ground)
    Asynchronous Timer: frames=X
    Set Loop Y Times
       If Hitbox Connects:
          Allow Specific Interrupt: Ground Attack
          Allow Specific Interrupt: Ground Special
          Allow Specific Interrupt: Ground Catch
          Invert Action Status ID: Interrupt ID=Ground Special, Status ID=10099
       End If
       Synchronous Timer: frames=1
    Execute Loop

    Air Up Special (If it has collisions)
    Asynchronous Timer: frames=X
    Set Loop Y Times
       If Hitbox Connects:
          Allow Specific Interrupt: Air Attack
          Allow Specific Interrupt: Air Special
          Invert Action Status ID: Interrupt ID=Air Special, Status ID=10099
       End If
       Synchronous Timer: frames=1
    Execute Loop

    Ground Down Special (If it has collisions)
    Asynchronous Timer: frames=X
    Set Loop Y Times
       If Hitbox Connects:
          Allow Specific Interrupt: Ground Attack
          Allow Specific Interrupt: Ground Special
          Allow Specific Interrupt: Ground Catch
          Invert Action Status ID: Interrupt ID=Ground Special, Status ID=10100
       End If
       Synchronous Timer: frames=1
    Execute Loop

    Air Down Special (If it has collisions)
    Asynchronous Timer: frames=X
    Set Loop Y Times
       If Hitbox Connects:
          Allow Specific Interrupt: Air Attack
          Allow Specific Interrupt: Air Special
          Invert Action Status ID: Interrupt ID=Air Special, Status ID=10100
       End If
       Synchronous Timer: frames=1
    Execute Loop
    Even though the coding appears similar, there are certain IDs that need to be used to prevent spamming of the same attack on the specified attack.
    Logged

    I don't take requests.

    My PSA Thread

    pikazz
    Heroic Kitten
    **
    Offline Offline

    Posts: 2286


    Machinimator!

  • Awards Renowned Hacker Pin Collector Good Citizen Helping Hand

  • View Profile Awards
    « Reply #1 on: March 14, 2014, 06:11:33 PM »


    someone is using their moderator power little too much ;P

    joke aside, but what does this do? let say if I hit someone with like SideTilt with that code, I hit someone, can I use grab directly after the collision?
    Logged

    Stupid Tinypic :C

    KingJigglypuff
    Meme Machine
    Moderator
    ****
    Offline Offline

    Posts: 7206


  • Awards RAGE!! >9000 Hyperactive Contributor Heart Container

  • View Profile Awards
    « Reply #2 on: March 14, 2014, 06:16:02 PM »


    someone is using their moderator power little too much ;P
    I see what you did there ... You know too much.

    joke aside, but what does this do? let say if I hit someone with like SideTilt with that code, I hit someone, can I use grab directly after the collision?
    Well On Hit Cancel is just what it is. Canceling an Attack upon hitting with it. In this case, you can cancel with an Attack, a Special, or a Grab.
    Logged

    I don't take requests.

    My PSA Thread

    pikazz
    Heroic Kitten
    **
    Offline Offline

    Posts: 2286


    Machinimator!

  • Awards Renowned Hacker Pin Collector Good Citizen Helping Hand

  • View Profile Awards
    « Reply #3 on: March 15, 2014, 05:50:42 AM »


    sweet, I know what I should use this for!
    Logged

    Stupid Tinypic :C

    PK MASTER
    Intermediate Kitten
    **
    Offline Offline

    Posts: 17


    PK FIREEEE!

  • Awards Active Contributor

  • View Profile Awards
    « Reply #4 on: August 13, 2020, 06:17:11 PM »


    Is there a way that the code only works when it collides with stage?
    Logged


    Pages: [1]
    Print
    Jump to: