Using Patterns for Animating Events

Archeia

Level 99 Demi-fiend
Developer
Joined
Mar 1, 2012
Messages
15,109
Reaction score
15,413
First Language
Filipino
Primarily Uses
RMMZ

Using Patterns for Animating Events
What is this for?

This is for animating objects by referencing their patterns instead. By default, RPG Maker resets pattern back to 1 and it's super frustrating. This is useful depending on your workflow.

Copy the code and put it in a JS file. OR Download the attachment
Activate in PluginManager, you can name it whatever you want.
Read the documentation.
Here's an example use:



How to Use?
Code:
/*
-------------------------------------------------------------------------------------------------
 # Template for Movement Commands
-------------------------------------------------------------------------------------------------

How to use:
----------------------------------------
Copy and Paste the following code in this js file.
----------------------------------------
Game_Interpreter.prototype.animateAnimationName = function(characterId, waitDuration) {

  // Define Default
  // Character ID is stated in the documentation above
  //----------------------------------------
  if (characterId === undefined) { characterId = 0; }
  // waitDuration is how fast you want the animation to play.
  //----------------------------------------
  if (waitDuration === undefined) { waitDuration = 15; }

  // Get Character
  this._character = this.character(characterId);

  // Initialize Move Route
  // Repeat = Repeat Movements
  // Skippable = Skip if Cannot Move
  // Wait = Wait for Completion
  //----------------------------------------
  var moveRoute = {list: [], repeat: false, skippable: false, wait: true};

  // Your move route code here.
  // Start Inserting it y'all.

  // Add Ending of Move Route (Needed)
  moveRoute.list.push({code: Game_Character.ROUTE_END, indent: null, parameters: []})

  // If Character Exists
  if (this._character) { this._character.forceMoveRoute(moveRoute); }
  // If Move Route wait flag is true
  if (moveRoute.wait) { this.setWaitMode('route') };
  return true;
};
------------------------------------------------------------------------------------------------

Change the function name to something you'd like. For Example:
----------------------------------------
Game_Interpreter.prototype.animateAnimationName = function(characterId, waitDuration) {

to

Game_Interpreter.prototype.animateDancingRalph = function(characterId, waitDuration) {

The new name will be the ID for the Script Call. This will be explained later.
-------------------------------------------------------------------------------------------------

Explaining Character Index and Pattern:
----------------------------------------
In a character sheet you would get something like this:

      [ID]  [Index 1] [Index 2] [Index 3]
[Down(2) ]  [0][1][2] [0][1][2] [0][1][2]
[Left(4) ]  [0][1][2] [0][1][2] [0][1][2]
[Right(6)]  [0][1][2] [0][1][2] [0][1][2]
[Up(8)   ]  [0][1][2] [0][1][2] [0][1][2]
      [ID]  [Index 4] [Index 5] [Index 6]
[Down(2) ]  [0][1][2] [0][1][2] [0][1][2]
[Left(4) ]  [0][1][2] [0][1][2] [0][1][2]
[Right(6)]  [0][1][2] [0][1][2] [0][1][2]
[Up(8)   ]  [0][1][2] [0][1][2] [0][1][2]

ID is the number of the Character row you want to reference.
Pattern (0,1,2) is the individual frames per each direction (Up, Down, Left, Right).

If you want to change the pattern of the object you want to animate, use this command:
----------------------------------------
this._originalPattern = this._pattern = x;
(With x being one of the values 0/1/2)

If you want to change the graphic of the object that is set in another index, use this command:
----------------------------------------
this._characterIndex = ID;
(With ID being the index you want to reference. Make sure to refer to the chart above)

If you want to change the direction, use this command:
----------------------------------------
this.setDirection(ID);
(Refer to the chart to figure out what number the direction is)

If you want to use all three, it will look something like this:
----------------------------------------
moveRoute.list.push({code: Game_Character.ROUTE_SCRIPT , indent: null, parameters: [
'this._characterIndex = 1;
this._originalPattern = this._pattern = 0;
this.setDirection(4)']});

-------------------------------------------------------------------------------------------------
Use the Script Call event command. Not inside a move route. The name will depend on the function name
you have set earlier:

animateAnimationName(ID, Wait)
----------------------------------------
 -1 is the player
  0 is the current event
  ID beyond -1 and 0 is Event ID.

For example:
Script call animateAnimationName(0, 15)
-----------------------------------------------------------------------------------------------*/

/*-----------------------------------------------------------------------------------------------
 Example Animation Presets
 -----------------------------------------------------------------------------------------------*/

/*-----------------------------------------------------------------------------------------------
 Animate Door -- Opening
 Script call animateOpenDoor(0, 15)
-----------------------------------------------------------------------------------------------*/
Game_Interpreter.prototype.animateOpenDoor = function(characterId, waitDuration) {

  // Define Default
  // Character ID is stated in the documentation above
  //----------------------------------------
  if (characterId === undefined) { characterId = 0; }
  // waitDuration is how fast you want the animation to play.
  //----------------------------------------
  if (waitDuration === undefined) { waitDuration = 15; }

  // Get Character
  this._character = this.character(characterId);

  // Initialize Move Route
  // Repeat = Repeat Movements
  // Skippable = Skip if Cannot Move
  // Wait = Wait for Completion
  //----------------------------------------
  var moveRoute = {list: [], repeat: false, skippable: false, wait: true};

  // Your move route code here.
    moveRoute.list.push({code: Game_Character.ROUTE_SCRIPT, indent: null, parameters: ['this._originalPattern = this._pattern = 0;']});
    moveRoute.list.push({code: Game_Character.ROUTE_WAIT, indent: null, parameters: [waitDuration]});

    moveRoute.list.push({code: Game_Character.ROUTE_SCRIPT , indent: null, parameters: ['this._originalPattern = this._pattern = 1;']});
    moveRoute.list.push({code: Game_Character.ROUTE_WAIT, indent: null, parameters: [waitDuration]});

    moveRoute.list.push({code: Game_Character.ROUTE_SCRIPT , indent: null, parameters: ['this._originalPattern = this._pattern = 2;']});
    moveRoute.list.push({code: Game_Character.ROUTE_WAIT, indent: null, parameters: [waitDuration]});


    moveRoute.list.push({code: Game_Character.ROUTE_SCRIPT , indent: null, parameters: ['this._originalPattern = this._pattern = 0; this.setDirection(4)']});
    moveRoute.list.push({code: Game_Character.ROUTE_WAIT, indent: null, parameters: [waitDuration]});

    moveRoute.list.push({code: Game_Character.ROUTE_SCRIPT , indent: null, parameters: ['this._originalPattern = this._pattern = 1;']});
    moveRoute.list.push({code: Game_Character.ROUTE_WAIT, indent: null, parameters: [waitDuration]});

    moveRoute.list.push({code: Game_Character.ROUTE_SCRIPT , indent: null, parameters: ['this._originalPattern = this._pattern = 2;']});
    moveRoute.list.push({code: Game_Character.ROUTE_WAIT, indent: null, parameters: [waitDuration]});

  // Add Ending of Move Route (Needed)
    moveRoute.list.push({code: Game_Character.ROUTE_END, indent: null, parameters: []})

  // If Character Exists
  if (this._character) { this._character.forceMoveRoute(moveRoute); }

  // If Move Route wait flag is true
  if (moveRoute.wait) { this.setWaitMode('route') };
  return true;
};

Why won't you use event commands instead?

By default, RPG Maker resets pattern back to 1. Making the following commands unusable:


- Thank you TDS for helping me figure this out!

View attachment PresetAnimations.js
 
Last edited:

nio kasgami

VampCat
Veteran
Joined
May 21, 2013
Messages
8,949
Reaction score
3,040
First Language
French
Primarily Uses
RMMV
Oh nice premade custom move route!


Might I extend it with custom move command :p?
 

Archeia

Level 99 Demi-fiend
Developer
Joined
Mar 1, 2012
Messages
15,109
Reaction score
15,413
First Language
Filipino
Primarily Uses
RMMZ
Oh nice premade custom move route!


Might I extend it with custom move command :p?


It uses move route by default and if they know coding they can do it lol. (Or use @Galv's or whoever's movement code script instead)


But if you want to, sure.
 

nio kasgami

VampCat
Veteran
Joined
May 21, 2013
Messages
8,949
Reaction score
3,040
First Language
French
Primarily Uses
RMMV
It uses move route by default and if they know coding they can do it lol. (Or use @Galv's or whoever's movement code script instead)


But if you want to, sure.
lol nan I tend to dislike using other peoples plugins but yours is kinda really nice and I feel to invest some time on it haha
 

Faye Valentine

The Mapgician
Veteran
Joined
May 2, 2014
Messages
471
Reaction score
427
First Language
Spanish
Primarily Uses
RMVXA
What a useful script/plugin. I was going to ask you, would you give me permission to translate the documentation to spanish and redistribute the script to hispanic communities (crediting you), or should I just redirect them here instead?


Thanks =)
 

Eliaquim

Hakuen Studio
Veteran
Joined
May 22, 2018
Messages
1,624
Reaction score
990
First Language
Portuguese - Br
Primarily Uses
RMMV
Dont know if i understand it very well...
I just have to put this plugin in my project, then i can use the commands in a script call (using move route script call)?
Or do i have to make some setup inside the plugin file?
 

Eliaquim

Hakuen Studio
Veteran
Joined
May 22, 2018
Messages
1,624
Reaction score
990
First Language
Portuguese - Br
Primarily Uses
RMMV
Hi!
I try to make this work, but no sucess. I will post here some imagems for someone who try to help me.



I'm trying to use the INDEX Nº 4 to do the animation in the third image(player). But can't get it to work :(

In the part:
// Get Character
this._character = this.character(characterId);
I try to change to:
// Get Character
this._character = this.character(character-1);
And:
// Get Character
this._character = this.character(-1);
But, dont work =/
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Profile Posts

Just made 3 easy, simple and small MZ plugins today(12 hours straight), and I never thought I could ever do this.
Now I feel myself being very productive, even though I know I'm just utterly flattering myself lol
Mind: "I have cool ideas! Let's make it real!

Body: "You wanna make sumthin? I'm in."

Eyes: "Go to sleep, go to sleep."

*Sleep*
Hey, guys! Do you want to hear a riddle? If so, go to this link!
Omg, 'Marsha' took over the RPGWeb twitter for a bit and its the most adorable thing ever! :LZSblush: I like it

Forum statistics

Threads
104,639
Messages
1,007,780
Members
136,127
Latest member
Daniboy2550
Top