The official VisuStella notetag help thread

Gurkengelee

Villager
Member
Joined
Jul 31, 2013
Messages
8
Reaction score
2
First Language
German
Primarily Uses
Heyho,

may I ask how I can recreate this from Yanflys Item Requirement Plugin into VisuStellas Item Accessibility Notetag :

Code:
Weapon Type: x
Weapon Type: x, x, x
- Requires the actor to have weapon type 'x' equipped. If multiple 'x' are
used, the actor can have any of the 'x' weapon types equipped. If the actor
does not have the matching weapon types, then the item is disabled and
cannot be used regardless of other conditions.

Not Weapon Type: x
Not Weapon Type: x, x, x
- Requires the actor to not have weapon type 'x' equipped. If multiple 'x'
are used, the actor cannot have any of the 'x' weapon types equipped. If the
actor does have the matching weapon types, then the item is disabled and
cannot be used regardless of other conditions.
Any help would be appreciated!
 

RK DracoRoy

Fire Emblem RPG Gamer
Veteran
Joined
Jun 29, 2017
Messages
257
Reaction score
73
First Language
English
Primarily Uses
RMMV
Hello. Regarding optimization, I've noticed that when using the BattleCore plugin, the game's FPS drops drastically, from 60 FPS to around 40 FPS when in battle.

I am just testing the plugins, so I just created a new project, added the Core Engine and BattleCore Plugins, and just by doing that, it happens.

Just by disabling the Battle Core plugin, the battle FPS rises again to 60 FPS.

Am I doing something wrong?
For a while, I thought it was just MZ when it came to battle, but it was really Battle Core that's been doing that when it comes to battle testing.

Once you choose commands like Formation, Options, anything that fades the screen, the fps gets worse and doesn't go back to normal even after exiting that command mid-battle. I've play tested a map, 60 fps is stable and maintained but the battle fps is still bad, around 30-40 fps. I've tried out VisuStella's Sample Game Project and entered a battle, it's no better there. I'll assume it's more of a problem with the plugin.

Strange, that the fps reduction is barely a thing when I attempt playing a deployed game with Battle Core enabled.
 

DanielTsc

Villager
Member
Joined
Jul 20, 2020
Messages
10
Reaction score
6
First Language
English
Primarily Uses
RMMZ
For a while, I thought it was just MZ when it came to battle, but it was really Battle Core that's been doing that when it comes to battle testing.

Once you choose commands like Formation, Options, anything that fades the screen, the fps gets worse and doesn't go back to normal even after exiting that command mid-battle. I've play tested a map, 60 fps is stable and maintained but the battle fps is still bad, around 30-40 fps. I've tried out VisuStella's Sample Game Project and entered a battle, it's no better there. I'll assume it's more of a problem with the plugin.

Strange, that the fps reduction is barely a thing when I attempt playing a deployed game with Battle Core enabled.
So when the game is deployed, the FPS problem doesn't happen in battles? If that is the case, maybe it's slow because of some debugging feature enabled when testing (but I couldn't find what is it).

Anyway, I've noticed that if I force RPG Maker to use my Nvidia GPU, instead of the Integrated GPU, the FPS keeps normal on 60. But it is still an issue, since without the plugin, the problem doesn't happen even on weak GPUs.
 

DanielTsc

Villager
Member
Joined
Jul 20, 2020
Messages
10
Reaction score
6
First Language
English
Primarily Uses
RMMZ
Well I've deployed the game and the problem still happens. The FPS does not drop only if I use my NVidia GPU.

I don't think an RPG Maker Game should need that...

Well, we can only hope that Visustella fixes this issue. After using animated SV Enemy battlers, it is impossible to go back to RPG Maker vanilla =(
 

RK DracoRoy

Fire Emblem RPG Gamer
Veteran
Joined
Jun 29, 2017
Messages
257
Reaction score
73
First Language
English
Primarily Uses
RMMV
Well I've deployed the game and the problem still happens. The FPS does not drop only if I use my NVidia GPU.

I don't think an RPG Maker Game should need that...

Well, we can only hope that Visustella fixes this issue. After using animated SV Enemy battlers, it is impossible to go back to RPG Maker vanilla =(
Ah. When I mentioned it wasn't a problem on deployed, I was using the NVidia GPU for the game.exe. I now tested it with the regular one now that you said that, it's really bad on the deployed one with the Battle Core.

This page may be a good idea (Step 2) if you want to report the problem to them: http://www.yanfly.moe/wiki/Troubleshooting_Plugins_RPG_Maker_MZ
 

DanielTsc

Villager
Member
Joined
Jul 20, 2020
Messages
10
Reaction score
6
First Language
English
Primarily Uses
RMMZ
Ok, I had sent an e-mail for them, but now I've filled the form above. Thanks.
 

Corygon

Storyteller
Member
Joined
Mar 20, 2019
Messages
9
Reaction score
4
First Language
English
Primarily Uses
RMMZ
Okay, my JS Draw Data for what I posted is:

Code:
// Declare Constants
const lineHeight = this.lineHeight();
const actor = this._actor;
const padding = this.itemPadding();
let width = this.innerWidth / 2;
const elements = this.getElementIDs();
let x = 0;
let y = 0;

// Draw Actor Graphic
this.drawActorGraphic(0, width);

// Draw Element Trait Sets
this.drawItemDarkRect(0, y, width, lineHeight, 2);
this.drawItemDarkRect(width, y, width, lineHeight, 2);
const labelFmt = '\\C[16]%1: \\C[0]%2';
const traitType1 = DataManager.traitSetType('Element');
const traitSet1 = actor.traitSet('Element');
this.drawTextEx(labelFmt.format(traitType1.Label, traitSet1.Display), padding, y, width - padding * 2);
const traitType2 = DataManager.traitSetType('SubElement');
const traitSet2 = actor.traitSet('SubElement');
this.drawTextEx(labelFmt.format(traitType2.Label, traitSet2.Display), width + padding, y, width - padding * 2);
y += lineHeight;
this.setDescriptionFontSizeToTraitSet();
const traitHeight = (this.innerHeight / Math.max(Window_StatusData.traitCol1.length, Window_StatusData.traitCol2.length)) - lineHeight;
this.drawItemDarkRect(0, y, width, traitHeight);
this.drawItemDarkRect(width, y, width, traitHeight);
this.drawTextEx(traitSet1.Description, padding, y, width - padding * 2);
this.drawTextEx(traitSet2.Description, width + padding, y, width - padding * 2);
this.resetDescriptionFontSize();
this.resetFontSettings();
y += traitHeight;
const topY = y;

// Draw Elemental Data
this.drawItemDarkRect(width * 0, y, width, lineHeight, 2);
this.drawItemDarkRect(width * 1, y, width, lineHeight, 2);
this.changeTextColor(ColorManager.systemColor());
this.drawText(TextManager.statusMenuDmgReceive, width * 0, y, width, 'center');
this.drawText(TextManager.statusMenuDmgDealt, width * 1, y, width, 'center');
y += lineHeight;
this.setDescriptionFontSizeToTraitSet();
const smallLineHeight = this.textSizeEx(' ').height;
for (const elementId of elements) {
    this.drawItemDarkRect(width * 0, y, width, smallLineHeight);
    this.drawItemDarkRect(width * 1, y, width, smallLineHeight);

    // Name
    const name = $dataSystem.elements[elementId];
    const column = Math.floor(elementId / 12);
    const elementX1 = width * (column === 0 ? 0.25 : 0.75) + padding;
    const elementX2 = width * (column === 0 ? 1.25 : 1.75) + padding;
    this.drawTextEx(name, elementX1, y, width/4);
    this.drawTextEx(name, elementX2, y, width/4);

    // Received Damage Rate
    this.resetFontSettings();
    const rate = actor.elementRate(elementId);
    const flippedRate = (rate - 1) * -1;
    this.changeTextColor(ColorManager.paramchangeTextColor(flippedRate));
    let rateText = '%1%'.format(Math.round(flippedRate * 100));
    if (actor.getAbsorbedElements().includes(elementId)) {
        this.changeTextColor(ColorManager.powerUpColor());
        rateText = TextManager.statusMenuDmgAbsorb.format(Math.round(rate * 100));
    } else if (rate > 1) {
        rateText = '%1'.format(rateText);
    } else if (rate <= 1) {
        rateText = '+%1'.format(rateText);
    }
    this.contents.drawText(rateText, width * 0, y, (width / 4 * (column === 0 ? 1 : 3)) - padding, smallLineHeight, 'right');

    // Dealt Damage Rate
    const dealtPlus = actor.getDealtElementPlus(elementId);
    const dealtRate = actor.getDealtElementRate(elementId);
    const dealtFlat = actor.getDealtElementFlat(elementId);
    const dealt = ((1 + dealtPlus) * dealtRate + dealtFlat) - 1;
    this.changeTextColor(ColorManager.paramchangeTextColor(dealt));
    let dealtText = '%1%'.format(dealt);
    if (dealt >= 0) dealtText = '+%1'.format(dealtText);
    this.contents.drawText(dealtText, width * 1, y, (width / 4 * (column === 0 ? 1 : 3)) - padding, smallLineHeight, 'right');

    y += smallLineHeight;

    if (elementId % 11 === 0) y = topY + lineHeight;
}
this.resetDescriptionFontSize();
this.resetFontSettings();
this.drawItemDarkRect(width * 0, y, width, this.innerHeight - y);
this.drawItemDarkRect(width * 1, y, width, this.innerHeight - y);
this.drawItemDarkRect(width * 2, y, width, this.innerHeight - y);
So I've tried this for my project, and while it seems to have divided the two columns into four, I only see the first five elements for some reason.
1601536230930.png
So, did I do something wrong, or...?
 

DanielTsc

Villager
Member
Joined
Jul 20, 2020
Messages
10
Reaction score
6
First Language
English
Primarily Uses
RMMZ
Ah. When I mentioned it wasn't a problem on deployed, I was using the NVidia GPU for the game.exe. I now tested it with the regular one now that you said that, it's really bad on the deployed one with the Battle Core.

This page may be a good idea (Step 2) if you want to report the problem to them: http://www.yanfly.moe/wiki/Troubleshooting_Plugins_RPG_Maker_MZ
I've sent a bug report, but they said they couldn't reproduce the FPS drop problem, even with my instructions.

I'm assuming they don't have a weaker hardware to simulate the issue, since with good GPUs it doesn't happen.

So, the conclusion is that we have to make a decision: make a simpler game without the plugin, that will probably run smoothly in any hardware or use the plugin in trade of FPS on machines without a dedicated GPU for gaming.

I honestly don't what is best. I guess what will dictate the best approach will be mobile. If the game runs smootlhy on mobile, then I guess we can accept the pc optimization problem. I have to test that.
 

RK DracoRoy

Fire Emblem RPG Gamer
Veteran
Joined
Jun 29, 2017
Messages
257
Reaction score
73
First Language
English
Primarily Uses
RMMV
I've sent a bug report, but they said they couldn't reproduce the FPS drop problem, even with my instructions.

I'm assuming they don't have a weaker hardware to simulate the issue, since with good GPUs it doesn't happen.

So, the conclusion is that we have to make a decision: make a simpler game without the plugin, that will probably run smoothly in any hardware or use the plugin in trade of FPS on machines without a dedicated GPU for gaming.

I honestly don't what is best. I guess what will dictate the best approach will be mobile. If the game runs smootlhy on mobile, then I guess we can accept the pc optimization problem. I have to test that.
I see. Well, that's a shame then. If I'm wanting to send a game to some with a laptop and they don't have NVidia, it's going to be a problem having them play it with Battle Core and action sequences. And like the others, they need proper documentation on how to get this stuff deployed on mobile.

This alternative may not be a perfect solution but maybe try out this plugin and see how it goes on your end without the Nvidia GPU. On my end, at least decent but I'll take what I can get. Playtest and deploy it just to see. https://forums.rpgmakerweb.com/inde...-enemies-audio-options-efficiency-etc.125938/

By default, the effekseer animation fps is cut by half (30 fps) and the battle frames are 1 / 3 for performance. You can mess around with other options to suit you.
 

DanielTsc

Villager
Member
Joined
Jul 20, 2020
Messages
10
Reaction score
6
First Language
English
Primarily Uses
RMMZ
I see. Well, that's a shame then. If I'm wanting to send a game to some with a laptop and they don't have NVidia, it's going to be a problem having them play it with Battle Core and action sequences. And like the others, they need proper documentation on how to get this stuff deployed on mobile.

This alternative may not be a perfect solution but maybe try out this plugin and see how it goes on your end without the Nvidia GPU. On my end, at least decent but I'll take what I can get. Playtest and deploy it just to see. https://forums.rpgmakerweb.com/inde...-enemies-audio-options-efficiency-etc.125938/

By default, the effekseer animation fps is cut by half (30 fps) and the battle frames are 1 / 3 for performance. You can mess around with other options to suit you.
Using this plugin alongside visustella seems to have optimized it. The FPS is back again on 60. Thanks man!
 

RK DracoRoy

Fire Emblem RPG Gamer
Veteran
Joined
Jun 29, 2017
Messages
257
Reaction score
73
First Language
English
Primarily Uses
RMMV
Using this plugin alongside visustella seems to have optimized it. The FPS is back again on 60. Thanks man!
Hey. Glad to be of help here! Now because I tried something out that may be of use for the sake of others playing your game, I thought I'd suggest this to you to make this optional on your game, if you got VisuMZ_1_OptionsCore. This is also explained in the MultiTweaks plugin, so I thank the author for that.

Under VisuMZ_1_OptionsCore, go in Option Categories -> General -> Options List then double click to make a new option.

All that has to be done is:

Name the symbol "optimGame" (without the quotes).
Name the "STR: Text" option whatever you'd like (e.g. Optimize Game, Optimize Battle, etc.)

That will make only the Optimize Game part from the MultiTweaks plugin optional. You'll notice the FPS change quicker in battle if you have Options as a Party Command enabled from Battle Core (under Party Command Window -> Add Options).

Also, under both "JS: Show / Hide" and "JS: Enable", change "return true" to "return window.ScSWinter". The option will be shown and enabled as long as the MultiTweaks plugin is installed.
 

Attachments

Last edited:

WilsonE7

Veteran
Veteran
Joined
Oct 12, 2019
Messages
40
Reaction score
15
First Language
English
Primarily Uses
RMMZ
Hello. I was remembering a Tips and Tricks for MV called Hestia Knife, where a weapon's strength can be made to vary with the wielder's base params so that it grows with the actor's level. That way, the player can use it throughout the game as his "signature weapon" or something. I noticed that the notetag <JS Parameters> seems equivalent to <Custom Parameters> in the MV Equip Core plugin. In MV, the JS code was, for example:
JavaScript:
atk = user.paramBase(2) * 0.10 + user.level;
What would be the MZ equivalent? Or is it exactly the same? I've looked through Archeia's Script Call Reference, but I'm a bit lost.
 

Cyberhawk

Bravelion Leader
Veteran
Joined
Jan 9, 2019
Messages
111
Reaction score
74
First Language
English
Primarily Uses
RMMZ
Code:
<JS Parameters>
ATK = user.paramBase(2) * 0.10 + user.level;
MAT = user.paramBase(4) * 0.10 + user.level;
AGI = user.paramBase(6) * 0.05 + user.level;
LUK = user.paramBase(7) * 0.05 + user.level;
</JS Parameters>
I tried the JS script you wrote out, WilsonE7 and this actually works.
(It's not all of the stats, but this is how you would set it up in MZ)
 

Galahad

Veteran
Veteran
Joined
Oct 10, 2013
Messages
39
Reaction score
10
First Language
English
Primarily Uses
RMMZ
I'm using the MessageCore plugin in conjunction with Galv's Message backgrounds and I was wondering if there was an existing way to change the Y offset of the text? I can see that the x and y offsets for the name box are modifiable, but I'm wondering if I can do the same for the normal text in the message window. I'm trying to modify the placement of the text so that it better fits the custom message background that I'm using.
 

darthmarth

Grail-Seeker
Member
Joined
Dec 27, 2014
Messages
9
Reaction score
2
First Language
English
Primarily Uses
RMMZ
I'm looking to create a status which adds a set amount of MP on add state using Visustella Skills and States Core. Being a total JS newbie, I'm not sure how to do that. The notetag is as follows:

<JS On Add State>
code
code
</JS On Add State>

I would greatly appreciate any help.
 

DragomanPl

Villager
Member
Joined
Oct 19, 2019
Messages
16
Reaction score
8
First Language
Polish
Primarily Uses
RMMV
How do I set auto dash to be off by default?
 

Ophiucus Games

Ophiucus Games
Veteran
Joined
Nov 15, 2018
Messages
88
Reaction score
54
First Language
English
Primarily Uses
RMMZ
Thanks for the amazing work.
Quick question: in the core engine, under Menu Layout Settings, in the Item Menu, Item category pane, where is a JS code saying "const rows = 1" (see image, I tried changing it to 3).

I'm not a complete JS noob so I can see from the rest of the code that changing this increases the size of the box but all the categories stay on one row. I'm just wondered is there a way to show the categories on more than one row? Seems strange to have this functionality if the categories only display on one row anyway.
TIA!
 

Attachments

Knightmare

Knight of the Night
Veteran
Joined
Mar 14, 2012
Messages
1,226
Reaction score
292
First Language
English
Primarily Uses
RMMV
Hey guys I need help with one. I have this skill in my game called "Thorn Field" that puts a state for 5 rounds on the user or one ally and after the state is applied whenever the one who has Thorn Field on takes physical damage from an attack then the attacker takes 20% of the damage done to the character with Thorn Field. I THINK it should look something like this but no sure what tags to use for this to work properly or if the syntax will change due to MZ being different. I had this ability in MV and it worked but need to know what to do to get it to work with current VisuStella and MZ. Thanks.


if (value > 0 && this.isPhysical()) {
var rate = 0.20;
var recoil = value * rate;
var rate = 0.02;
var bonus = target.def * rate;
var dmg = Math.ceil(bonus + recoil);
user.gainHp(-1 * dmg);
if (user.isDead()) {
user.performCollapse();
}
}
 

TrentL111

Archmage
Veteran
Joined
Oct 13, 2018
Messages
33
Reaction score
12
First Language
English
Primarily Uses
RMMV
Anyone know how to adjust the height of a balloon? I am using slightly taller sprites, but they don't take the entirety of the frame, so the positioning looks awkward? Using the VisuStella plugins and I see a balloon option for 8 directions, but not four.

I tried the script

Code:
Sprite_Character.prototype.updateBalloon = function() {

this.setupBalloon();

if (this._balloonSprite) {

this._balloonSprite.x = this.x - 1; //x position of the character

this._balloonSprite.y = this.y - this.height - -20; //y position of the character minus height of the character

if (!this._balloonSprite.isPlaying()) {

this.endBalloon();

}

}

};
which works for others (This is for MV), but this did nothing for me.

pic.png

Edit - Found a plugin that worked. For anyone that wants to know, it's callled Eli Balloon Position. Cheers!
 
Last edited:

CrocPirate

Villager
Member
Joined
Sep 1, 2020
Messages
13
Reaction score
4
First Language
English
Primarily Uses
RMMZ
@TrentL111 If you're using Visustella plugins, I don't think you need a whole other plugin just to adjust the Balloon height.

I've found this yesterday:
Balloon.png

In the EventsMoveCore parameters, under "Visustella 8-Dir Settings" there appear to be an option to adjust balloon height.

I hop this helps.
 

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

Latest Threads

Latest Profile Posts

Why is there so much month left at the end of money? D=
Hello humans! How goes your day in this journey of living? I hope it is good, for I am human like you, and I am feeling great! Worship the altar.
Sand is basically small rocks
Realizing my earlier maps are an abomination against all things, I'm doing a bit of a remake. Tell me if you can see the difference. :LZSwink:



And the horrific before pics...

Forum statistics

Threads
105,603
Messages
1,014,943
Members
137,274
Latest member
Parzival
Top