Guest Access
Administrator
Administrator

Administrator
profile
Have an idea for a RMMV plugin? Need a RMMV plugin script for an upcoming project that you are working on? Thinking about making a plugin script and need some ideas? Here's the RMMV PLUG-IN WISHLIST! It's broken down in three levels of time and effort (depending on skills)
normal:
- fullscreen mode (on game launch)
- splash screen logo (zoom, fade-in/out, with sound)
- new title scene (uses images, no command prompt)
- swap leader (via key or touch on-screen icon)
- dash button (via key or touch on-screen icon)
- fog (two layers)
advance:
-ring menu (keys: hit esc to open left or right to rotate / touch: tap hero to open, tap icon)
-miniHUD (above hero)
-animated battlers (enemies that do something in battle mode)
-action battle hud (responsive face graphics)
-remake of test your might, timing, and memory (smash button/switch)
-minimap (with mapname and song title fade away)
expert:
-platform gravity (for player, enemies, events)
-action battle system (like good old XAS)
-the ultimate facemaker (a port of the gamefacemaker)
*these are just a few that I have in mind for touch, gamepad, and keyboard. I'll take a stab at a few simple ones to see if I can at least make one. I would be more than glad to provide custom graphics and sounds for any endeavor +
G@MeF@Ce
![]() | ![]() | |
![]() | ||
![]() | ![]() |

profile

normal:
- fullscreen mode (on game launch)
- splash screen logo (zoom, fade-in/out, with sound)
- new title scene (uses images, no command prompt)
- swap leader (via key or touch on-screen icon)
- dash button (via key or touch on-screen icon)
- fog (two layers)
advance:
-ring menu (keys: hit esc to open left or right to rotate / touch: tap hero to open, tap icon)
-miniHUD (above hero)
-animated battlers (enemies that do something in battle mode)
-action battle hud (responsive face graphics)
-remake of test your might, timing, and memory (smash button/switch)
-minimap (with mapname and song title fade away)
expert:
-platform gravity (for player, enemies, events)
-action battle system (like good old XAS)
-the ultimate facemaker (a port of the gamefacemaker)
*these are just a few that I have in mind for touch, gamepad, and keyboard. I'll take a stab at a few simple ones to see if I can at least make one. I would be more than glad to provide custom graphics and sounds for any endeavor +
Administrator
Show Signature
EVENTALIST
EVENTALIST

EVENTALIST
profile
Dibs on "test your might" cause i wrote the RMXP version. ;p
[edit 11/6/15]
Little over half way done.
mr_wiggles
![]() | ![]() | |
![]() | ||
![]() | ![]() |

profile

[edit 11/6/15]
Little over half way done.
- Spoiler:
- Code:
//================================================================================
// TestYourMight.js
//================================================================================
/*: @author Mr_Wiggles
* Date: 11/6/15
* Version: 0.6
* ------------------------------------------------------------------------------
* @plugindesc Test the players might with interactive on screen stress bars.
*
* @param ReturnVariable
* @desc This variable holds Test Might value and used for conditanal branching
* after the window closes.
* @default 0
*
* @param DefualtBarColor
* @desc This is the defualt "TextColor" color to use for the gradent bar graphic.
* @default 19
*
* @param DefualtTime
* @desc This is the defualt Time limit to use when TestMight is running in game, in Seconds.
* @default 10
*
* @param DefualtLoseSwitch
* @desc This is the defualt ID for the switch to activate when player lost TestMight.
* @default 2
*
* @param DefualtWinSwitch
* @desc This is the defualt ID for the switch to activate when player Wins TestMight.
* @default 1
*
* @param DefualtFILL_resistance
* @desc This is the defualt TestMight FILL 'resistance' value to use. Neumeric(1 - 10)
* @default 5
*
* @param DefualtFILL_need
* @desc This is the defualt TestMight FILL 'resistance' value to use. Neumeric(100 - 1000)
* @default 250
*
* @param DefualtTIMED_speed
* @desc This is the defualt TestMight TIMED 'speed' value to use.
* @default 5
*
* @param DefualtTIMED_barColor
* @desc Defualt TestMight TIMED color value for drawing in the target box for the timed event.
* @default 12
*
* @param DefualtTIMED_penalty
* @desc Defualt TestMight TIMED penalty value in seconds.
* @default 2
*
* @param SpriteHoldUp
* @desc Time in frames to retain showing the TestMight Sprite before finishing the return to map command.
* @default 30
*
* @help This plugin allows you to test the player's might in a button pressing
* battle window. To call the window from event processing use the following
* commands for a plugin event command:
* ------------------------------------------------------------------------------
* 'MightTest FILL' = Mash 'space' against resistance.
* Extra arguments - [need, resistance]
* 'need[#]' = How much mashing is needed, a value 100 - 500 is
* recommended.
* 'resistance[#]' = How hard it is to reach the goal ammount: (0 - 10)
* ------------------------------------------------------------------------------
* 'MightTest TIMED' = Press 'space' with in the stopping zone to win.
* Extra arguments - [speed, target, tlocat, penalty]
* 'target[#]' = The Size of target to stop in: (5 - 80) number value. DEFAULT: rand
* 'tlocat[#]' = The Placement of target area: (0 - 100) number value. DEFAULT: rand
* 'penalty[#]' = Ammount to subtract from timmer in seconds for not landing in target.
* ------------------------------------------------------------------------------
* + 'MightTest CHARGED' = Press and Hold 'space' to release at the right time.
* Extra arguments - [speed, variable id]
* variable id = The id of variable to store bar value: Will be rate of
* the bar. (0-2000) Is number value.
* ------------------------------------------------------------------------------
* + 'MightTest PRESS' = Press the onscreen keys against a time limit.
* Extra arguments - [time, [buttons]]
* buttons = order of buttons to be pushed in an array: e.g.
* ["up", "left", "right", "down"]
* The first letter of each word works too: e.g.
* ["u", "l", "r", "d"]
* You may also use a random function: e.g.
* ["random", max]
* Start the array with random and use the second
* number 'max' for the max amount of buttons for the bar.
* ------------------------------------------------------------------------------
* Common type extra commands, typed once to save space.
* 'speed[#]' = The speed that bar moves at: (1 - 10) number value.
* 'time[#]' = How many seconds you have to reach the goal.
*
* Each bar will also need a reward switch to activate if you want it to affect
* other things via event proccessing.
*
* 'reward[*]' = Switch id or selfswitch key thats activated when goal is
* reached.
* 'lose[*]' = Switch id or selfswitch key that's activated when you run out
* time.
*
* ==============================================================================
* After you have selected which Might Test to use, you have the option to tack
* on additional arguments to the end of the line in the pluggin command event
* task.
*
* 'vertical' = Use a vertical bar instead of the defulat horizontal one.
* 'color[#]' = Set color of bar, if not set it will use the default.
*
* 'tcolor[#]' = Only for use with TIMED TestMight, changes the target location
* color to ID location in '\img\system\windowbase.png'
*
* ==============================================================================
* Some Sample Event Task 'Plugin Command' calls:
*
* TestMight FILL need[100] time[5] resistance[3] reward[5027]
* TestMight FILL lose[5241]
* TestMight TIMED target[75] tlocat[10]
* TestMight TIMED penalty[1000] time[5] speed[6]
*
*/ //============================================================================
//--------------------------------------------------------------------------------
// Auto run: Sets plugin items that are user defined in RMMV.
//--------------------------------------------------------------------------------
(function() {
//------------------------------------------
var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
_Game_Interpreter_pluginCommand.call(this, command, args); // calls alias
// add in custom flags for your plugin.
if (command === 'TestMight') {
$gameTemp.initialize_TestMight(); // reset flag data for new round.
SceneManager._backgroundBitmap = SceneManager.snap();
for (var i = 1; i < args.length ; i++) {
text = String(args[i]);
this.read_aditional_args(text);
}
$gameTemp._testMight_Type = String(args[0]);
SceneManager.push(Scene_TestMight);
}
};
//------------------------------------------
Game_Interpreter.prototype.read_aditional_args = function(string) {
var value = 0;
$gameTemp._testMight_eventID = this._eventId;
if (text.contains("need")) {
string = string.replace("need", "")
value = string.replace(/\[(\d+)\]/gi, function() {
return parseInt(arguments[1]);
}.bind(this));
$gameTemp._testMight_need = value;
// ----------------------
} else if (text.contains("resistance")) {
string = string.replace("resistance", "")
value = string.replace(/\[(\d+)\]/gi, function() {
return parseInt(arguments[1]);
}.bind(this));
$gameTemp._testMight_resistance = value;
// ----------------------
} else if (text.contains("time")) {
//value = !isNaN(string); // No work :/
string = string.replace("time", "")
value = string.replace(/\[(\d+)\]/gi, function() {
return parseInt(arguments[1]);
}.bind(this));
$gameTemp._testMight_time = value;
// ----------------------
} else if (text.contains("reward")) {
string = string.replace("reward", "")
value = string.replace(/\[(\d+)\]/gi, function() {
return parseInt(arguments[1]);
}.bind(this));
$gameTemp._testMight_reward = value;
// ----------------------
} else if (text.contains("lose")) {
string = string.replace("lose", "")
value = string.replace(/\[(\d+)\]/gi, function() {
return parseInt(arguments[1]);
}.bind(this));
$gameTemp._testMight_lose = Window_Base.textColor(value);
// ----------------------
} else if (text.contains("penalty")) {
string = string.replace("penalty", "")
value = string.replace(/\[(\d+)\]/gi, function() {
return parseInt(arguments[1]);
}.bind(this));
$gameTemp._testMight_penalty = Window_Base.textColor(value);
// ----------------------
} else if (text.contains("color")) {
string = string.replace("color", "")
value = string.replace(/\[(\d+)\]/gi, function() {
return parseInt(arguments[1]);
}.bind(this));
$gameTemp._testMight_color = Window_Base.textColor(value);
// ----------------------
} else if (text.contains("tcolor")) {
string = string.replace("tcolor", "")
value = string.replace(/\[(\d+)\]/gi, function() {
return parseInt(arguments[1]);
}.bind(this));
$gameTemp._testMight_tcolor = Window_Base.textColor(value);
// ----------------------
} else if (text.contains("tlocat")) {
string = string.replace("tlocat", "")
value = string.replace(/\[(\d+)\]/gi, function() {
return parseInt(arguments[1]);
}.bind(this));
$gameTemp._testMight_tlocat = Window_Base.textColor(value);
// ----------------------
} else if (text.contains("target")) {
string = string.replace("target", "")
value = string.replace(/\[(\d+)\]/gi, function() {
return parseInt(arguments[1]);
}.bind(this));
$gameTemp._testMight_target = Window_Base.textColor(value);
// ----------------------
} else if (text.contains("vertical")) {
$gameTemp._testMight_origin = 'vert';
}
//throw new Error('Pulling Value! ' + string + ' ' + value);
return value;
};
//============================================================================
// Game Temp
//============================================================================
var _Game_Temp_initTestMight = Game_Temp.prototype.initialize;
Game_Temp.prototype.initialize = function() {
_Game_Temp_initTestMight.call(this);
this.initialize_TestMight();
};
//------------------------------------------
var parameters = PluginManager.parameters('TestMight'); // Define plugin name, Pulls GUI data.
//------------------------------------------
Game_Temp.prototype.initialize_TestMight = function() {
this._testMight_Type = null; // global container for the type of TestMight to perform.
this._testMight_origin = 'horiz'; // Unless other wise spcified the bar will be horizontal.
this._testMight_resistance = Number(parameters['DefualtFILL_resistance'] || 5); // from minus ten each 7/60th second frame removes this much.
this._testMight_need = Number(parameters['DefualtFILL_need'] || 250); // amount that is required to fullfill TestMight.
this._testMight_time = Number(parameters['DefualtTime'] || 10); // number in seconds.
this._testMight_reward = Number(parameters['DefualtWinSwitch'] || 1); // switch ID # in RMMV database
this._testMight_lose = Number(parameters['DefualtLoseSwitch'] || 2);// switch ID # in RMMV database
this._testMight_color = Number(parameters['DefualtBarColor'] || 19);// color ID # in window skin file
this._testMight_tcolor = Number(parameters['DefualtTIMED_barColor'] || 4);// color ID # in window skin file
this._testMight_speed = Number(parameters['DefualtTIMED_speed'] || 5); // speed that the bar moves back 'n forth at.
this._testMight_penalty = Number(parameters['DefualtTIMED_penalty'] || 2); // number of seconds to pentalize player.
this._testMight_eventID = 0; // stores call event ID number for self switch reffrencing.
this._testMight_tlocat = Math.randomInt(100); // defaults to random.
this._testMight_target = 100 - Math.randomInt(80);// defaults to random.
this._testMight_util = null; // misc. things.
};
//============================================================================
// Scene Test Might
//============================================================================
function Scene_TestMight() {this.initialize.apply(this, arguments)}
// Inherit parrent class functions.
Scene_TestMight.prototype = Object.create(Scene_Base.prototype);
Scene_TestMight.prototype.constructor = Scene_TestMight;
// set class variable using RMMV Plugin GUI paramiter. || Default value to use if not a number.
Scene_TestMight._returnVariable = Number(parameters['ReturnVariableID'] || 0);
//------------------------------------------
Scene_TestMight.prototype.initialize = function() {
Scene_Base.prototype.initialize.call(this); // *super()
this.initialize_variables();
};
//------------------------------------------
Scene_TestMight.prototype.initialize_variables = function() {
this._resWait = 0;
this._amount = 0.0;
this._rate = 0.0;
this._frameCount = 0;
this._isMovingDown = false;
this._speed = 0;
this._startClock = false;
this._makeLag = Number(parameters['SpriteHoldUp'] || 30); // slows down scene change this many frames, so player can appreciate a job well done.
};
//------------------------------------------
Scene_TestMight.prototype.update = function() {
if ($gameTemp._testMight_util === 'returning to map') {
if (this._makeLag > 0) { // slows down the transition so that the player can appreciate the art.
this._makeLag--;
} else {
this._MightWindow.refresh();
SceneManager.goto(Scene_Map);
}
return;
};
// --------------------
// Update count down timer
if (this._startClock) {
if (this._frameCount <= 0) {
if ($gameTemp._testMight_time > 0) {
$gameTemp._testMight_time--;
}
this._frameCount = 60;
}
this._frameCount--;
}
// --------------------
// outta time ~ lost
if ($gameTemp._testMight_time <= 0) {
var switch_id = $gameTemp._testMight_lose;
if (switch_id > 0) {
$gameSwitches.setValue(switch_id, true);
//var key = [$gameMap._mapId, $gametemp._testMight_eventID, reward];
//$gameSelfSwitches.setValue(key, true);
}
SoundManager.playBuzzer();
this.returnToMap();
return;
}
// --------------------
// Input Update
if (this._MightWindow) {
if ($gameTemp._testMight_Type === 'FILL') {
this.update_Fill();
this._MightWindow.refresh_Fill(this._rate);
} else if ($gameTemp._testMight_Type === 'TIMED') {
this.update_Timed();
this._MightWindow.refresh_Timed(this._amount);
} else if ($gameTemp._testMight_Type === 'CHARGED') {
} else if ($gameTemp._testMight_Type === 'PRESSED') {
}
this._MightWindow.update();
}
// --------------------
// exit called?
Scene_Base.prototype.update.call(this); // *super()
if (Input.isTriggered('cancel')) {
SoundManager.playBuzzer();
this.returnToMap();
}
// SoundManager.playCursor();
};
//------------------------------------------
Scene_TestMight.prototype.update_Fill = function() {
// --------------------
// update resistance factor
var _resis = $gameTemp._testMight_resistance;
var _need = $gameTemp._testMight_need;
if (this._resWait <= 0) {
if (this._amount > _resis) {
this._amount -= _resis;
this._rate = this._amount / _need;
} else {
this._amount = 0.0;
this._rate = 0.0;
}
this._resWait = 7;
} else {
this._resWait--;
}
// --------------------
// udpate input factor.
if (Input.isTriggered('ok')) {
$gameTemp._testMight_util = 'hit space';
// don't start the clock till player starts mashing.
this._startClock = true;
// add ammount if mashing
this._amount += 10.0;
// find percentage
this._rate = this._amount / _need;
}
// --------------------
// was goal reached?
if (this._rate >= 1.0) {
var switch_id = $gameTemp._testMight_reward;
//throw new Error(switch_id)
if (switch_id > 0) {
$gameSwitches.setValue(switch_id, true);
//var key = [$gameMap._mapId, $gameTemp._testMight_eventID, reward];
//$gameSelfSwitches.setValue(key, true);
}
SoundManager.playOk(); // sound test for trigger press.
this.returnToMap();
}
};
//------------------------------------------
Scene_TestMight.prototype.update_Timed = function() {
this._startClock = true; // start clock immediately.
// --------------------
// move bar back and forth in zone.
var max = this._MightWindow.bitmap.width - 20;
if (this._isMovingDown) {
this._amount = this._amount - $gameTemp._testMight_speed;
if (this._amount < 0) {
this._amount = this._amount * -1;
this._isMovingDown = false;
}
http://SoundManager.playCursor();
} else { // reverse movement.
this._amount = this._amount + $gameTemp._testMight_speed;
if (this._amount >= max) {
this._amount = max - (this._amount - max);
this._isMovingDown = true;
//throw new Error(this._amount + ' ' + max);
}
http://SoundManager.playCursor();
};
// --------------------
// was goal reached?
if (Input.isTriggered('ok')) {
$gameTemp._testMight_util = 'hit space';
if (this._amount >= $gameTemp._testMight_tlocat && this._amount <= ($gameTemp._testMight_tlocat + $gameTemp._testMight_target)) {
var switch_id = $gameTemp._testMight_reward;
if (switch_id > 0) {
$gameSwitches.setValue(switch_id, true);
} else {
var key = [$gameMap._mapId, $gameTemp._testMight_eventID, reward];
$gameSelfSwitches.setValue(key, true);
}
SoundManager.playOk(); // sound test for trigger press.
this.returnToMap();
} else { // hit space but was not in target zone.
SoundManager.playBuzzer();
$gameTemp._testMight_time = $gameTemp._testMight_time - $gameTemp._testMight_penalty;
if ($gameTemp._testMight_time < 0) {
$gameTemp._testMight_time = 0
}
}
}
};
//------------------------------------------
Scene_TestMight.prototype.stop = function() {
Scene_Base.prototype.stop.call(this);
};
//------------------------------------------
Scene_TestMight.prototype.returnToMap = function() {
$gameTemp._testMight_util = 'returning to map';
};
//------------------------------------------
Scene_TestMight.prototype.createBackground = function() {
this._backgroundSprite = new Sprite();
this._backgroundSprite.bitmap = SceneManager.backgroundBitmap();
this.addChild(this._backgroundSprite);
};
//------------------------------------------
Scene_TestMight.prototype.create = function() {
Scene_Base.prototype.create.call(this); // *super()
this.start(); // Remember to set to active. *super
this.createBackground();
this.create_Sprite();
};
//------------------------------------------
Scene_TestMight.prototype.create_Sprite = function() {
this._MightWindow = new Sprite_TestMight();
this.addChild(this._MightWindow);
};
//============================================================================
// Window HUD
//============================================================================
function Sprite_TestMight() {
this.initialize.apply(this, arguments);
}
Sprite_TestMight.prototype = Object.create(Sprite_Base.prototype);
Sprite_TestMight.prototype.constructor = Sprite_TestMight;
//------------------------------------------
Sprite_TestMight.prototype.initialize = function() {
Sprite_Base.prototype.initialize.call(this);
this.windowskin = ImageManager.loadSystem('Window');
this.show(); // un hide sprite, Hidden by defualt.
this.bitmap = new Bitmap(200, 50);
this.setFrame(0, 0, this.bitmap.width, this.bitmap.height);
this.centerSelf();
this._frame_count = 0;
this.update();
};
//------------------------------------------
// Refresh properties for bar FILL with arguments passed
// threw the scene class.
Sprite_TestMight.prototype.refresh_Fill = function(rate) {
if (this.bitmap) {
this.bitmap.clear();
this.draw_windowBack();
var _lH = 36; // get line hight for sepreating multi lines.
this.bitmap.drawText('*Mash* !SPACE! Time:' + $gameTemp._testMight_time + '!', 10, 0, this.bitmap.width - 20, _lH, 'left');
var _color1 = this.getColor($gameTemp._testMight_color);
if ($gameTemp._testMight_util === 'hit space') { // heptic feed back
var _color2 = this.getColor(9);
this.x = this.x - 2;
this.y = this.y - 2;
$gameTemp._testMight_util = null;
} else { // normal color
this.centerSelf();
var _color2 = this.getColor(9);
}
this.drawGauge(10, 10, this.bitmap.width - 20, rate, _color2, _color1);
http://SoundManager.playCursor();
}
};
//------------------------------------------
// Refresh properties for bar TIMED with arguments passed
// threw the scene class.
Sprite_TestMight.prototype.refresh_Timed = function(bar_loc) {
if (this.bitmap) {
this.bitmap.clear();
this.draw_windowBack();
var _lH = 36; // get line hight for sepreating multi lines.
var _color2 = this.getColor(8);
var _color3 = this.getColor($gameTemp._testMight_tcolor);
var _bar_thickness = 6;
this.bitmap.fillRect(10, _lH, this.bitmap.width - 20, _bar_thickness, _color2);
var _tarBarL = $gameTemp._testMight_tlocat;
var _tarBarT = $gameTemp._testMight_target;
this.bitmap.fillRect(10 + _tarBarL, _lH, _tarBarT, _bar_thickness, _color3);
if ($gameTemp._testMight_util === 'hit space') { // flash the selection bar a diffrent color for hptic feed back.
var _color1 = this.getColor(18);
this.y = this.y - 2;
_bar_thickness = _bar_thickness * 1.5;
$gameTemp._testMight_util = null;
} else { // use normal color
this.centerSelf();
var _color1 = this.getColor($gameTemp._testMight_color);
}
var _bar_width = 6;
this.bitmap.fillRect(10 + bar_loc - 3, _lH, _bar_width, _bar_thickness, 16);
this.bitmap.fillRect(10 + bar_loc - 2, _lH + 1, _bar_width - 2, _bar_thickness - 2, _color1); // outline
http://SoundManager.playCursor();
this.bitmap.drawText('*Time* !SPACE! Timer:' + $gameTemp._testMight_time + '!', 10, 0, this.bitmap.width -20, _lH, 'left');
}
};
//------------------------------------------
// center sprite on screen
Sprite_TestMight.prototype.centerSelf = function() {
this.x = (Graphics.width / 2) - (this.bitmap.width / 2);
this.y = (Graphics.height / 2) - (this.bitmap.height / 2);
};
//------------------------------------------
// draws baground objects for TestMight Sprite
Sprite_TestMight.prototype.draw_windowBack = function() {
var _border_size = 4;
var _color = this.getColor(19); // draw "outline"
this.bitmap.fillRect(0, 0, this.bitmap.width, this.bitmap.height, _color);
if (this._frame_count > 29) { // draw "fill" *flashy* -lol
_color = this.getColor(30);
} else {
_color = this.getColor(31);
}
this.bitmap.fillRect(_border_size / 2, _border_size / 2, this.bitmap.width - _border_size, this.bitmap.height - _border_size, _color);
};
//------------------------------------------
Sprite_TestMight.prototype.update = function() {
Sprite_Base.prototype.update.call(this); // *super()
// throw new Error('Got to update!');
// majority of the updating is done in the Scene class and
// passsed threw refresh calls to this one.
this._frame_count++;
if (this._frame_count > 60) {
this._frame_count = 0;
};
};
//------------------------------------------
// Basic Sprite refresh call
Sprite_TestMight.prototype.refresh = function() {
if (this.bitmap) {
this.bitmap.clear();
this.draw_windowBack();
}
};
//------------------------------------------
Sprite_TestMight.prototype.drawGauge = function(x, y, width, rate, color1, color2) {
if (rate > 1.0) {rate = 1.0};
var fillW = Math.floor(width * rate);
var gaugeY = y + 28;
this.bitmap.fillRect(x, gaugeY, width, 6, color2);
this.bitmap.fillRect(x, gaugeY, fillW, 6, color1);
};
//------------------------------------------
Sprite_TestMight.prototype.getColor = function(n) {
var px = 96 + (n % 8) * 12 + 6;
var py = 144 + Math.floor(n / 8) * 12 + 6;
return this.windowskin.getPixel(px, py);
};
//================================================================================
})(); // End of plugin block.
EVENTALIST
Show Signature
EVENTALIST
EVENTALIST
EVENTALIST

EVENTALIST
profile
I think that shift is the dash button in RMMV (desktop), its also built into the option menu to enable auto run. Its configurable threw the map properties page as well to disable it some place like in doors for example. However I don't think there is a way by default to show it on screen as an interactive button though.
mr_wiggles
![]() | ![]() | |
![]() | ||
![]() | ![]() |

profile

EVENTALIST
Show Signature
EVENTALIST
GAMEFACE101 » MAKERS » RPG MAKERS » RMMV ( ROLE PLAY GAME MAKER MV ) » RMMV PLUG-INS »RMMV PLUG-IN WISHLIST!
Similar topics