I'm using Simultaneous Messages...

Nonameded

Veteran
Veteran
Joined
Jan 10, 2019
Messages
57
Reaction score
8
First Language
not english
Primarily Uses
N/A
This plugin(←Link)
I can see some errors.
First of all, this plug-in maker can no longer give feedback, so I need you to tell me how to fix it.
The biggest problem is that the message, whether it's at the top or in the middle, doesn't have a command, but the bottom is bound to come out.

multi message (1).png(Window Position :Bottom)multi message (2).pngmulti message (3).png(Window Position: Top)multi message (4).png


And if you use the "show text" command in a row, the event will slow down a bit because the window will close and open.
a little on edge

I need you to tell me how to modify it, or how to disable some of this plug-in with switches or variables.
(Using translator)

(Edit)
Add plug-in code for quick resolution
Code:
/*:
*
* @plugindesc Shows Multiple Messages Simultaneously
* @author Jake Jilg "mogwai"
*
*
*  When any of these tags are used, the tag will override default Top/Middle/Bottom
*
*  Use tags \[top] \[middle] \[bottom] on the same line to show text at the same time.
* \[bottom]Hello, how are you doing?\[top]¿Hola cómo estás?
*
* Optional tag parameters (only needed on first line) (must be in this order)
*
* \[pos hue:R,G,B] \[top face:FaceName,Index,HueRotate] face hueRotate is optional
*
* example \[middle hue:155,0,250 face:People4,2,150]
*
* version 0.3
*/

// ------- globals -------

var subWindowLayer;

var messageWindowBottom = {};
var messageWindowMiddle = {};
var messageWindowTop = {};

var simultaneousAquisition = [];

var okGetNum = {
    "bottom": 2,
    "middle": 1,
    "top"   : 0
};

var okGetFace = {
    2 : [],
    1 : [],
    0 : []
};

var okGetTone = {
    2 : [0,0,0],
    1 : [0,0,0],
    0 : [0,0,0]
};

// ------ aliases ----

// create three window children
(function(alias){
    Scene_Base.prototype.createWindowLayer = function() {
        alias.apply(this, arguments);
        var width = Graphics.boxWidth;
        var height = Graphics.boxHeight;
        var x = (Graphics.width - width) / 2;
        var y = (Graphics.height - height) / 2;
       
        subWindowLayer = this._windowLayer;
    };
})(Scene_Base.prototype.createWindowLayer);

// add our two new message window siblings
(function(alias){
    Scene_Map.prototype.createMessageWindow = function() {
        alias.apply(this, arguments);
       
        messageWindowBottom = this._messageWindow;
        messageWindowMiddle = new Window_Message();
        messageWindowTop    = new Window_Message();
       
        // the mainChild is the reactor
        messageWindowBottom._isMainChild = true;
        messageWindowMiddle._isMainChild = false;
        messageWindowTop._isMainChild    = false;
       
        subWindowLayer.addChild(messageWindowTop);
        subWindowLayer.addChild(messageWindowMiddle);
       
        messageWindowBottom._positionType = 2;
        messageWindowMiddle._positionType = 1;
        messageWindowTop._positionType    = 0;
     };  
})(Scene_Map.prototype.createMessageWindow);

// when they clear, we clear too $gameMessage.clear
(function(alias){
    Game_Message.prototype.clear = function() {
       
        alias.apply(this, arguments);
        if(this.positionType() !== undefined)
            simultaneousAquisition = [this.positionType()];
        else
            simultaneousAquisition = [];
        okGetFace = {
            2 : [],
            1 : [],
            0 : []
        };
        okGetTone = {
            2 : [0,0,0],
            1 : [0,0,0],
            0 : [0,0,0]
        };
    };
})(Game_Message.prototype.clear);

// look for sign to simul-text $gameMessage.add
(function(alias){
    Game_Message.prototype.add = function() {
       
        var pe = simultaneousAquisition;
        if(pe.indexOf($gameMessage.positionType()) === -1)
            pe.push($gameMessage.positionType());
       
        arguments[0] = arguments[0].replace(
        /\\\[(top|middle|bottom)( hue:([\d,]+))?( face:([^\]]+))?]/g,
        function(m, tag, m2, hue, m3, face){
           
            $gameMap._interpreter._waitCount += 5;
           
            if(m2 !== undefined){
                var hues = hue.split(",");
                for(var i = 0; i < hues.length; i++){
                    hues[i] = parseInt(hues[i]);
                }
                okGetTone[okGetNum[tag]] = hues;
            }
           
            if(m3 !== undefined){
                okGetFace[okGetNum[tag]] = face.split(",");
            }
           
            if(pe.indexOf(okGetNum[tag]) === -1)
                pe.push(okGetNum[tag]);

            // lets hope this string doesn't come up in-game (it's used to parse)
            return "xThIsTx4G03sOn(" + okGetNum[tag] + "):";
            //      ^ sloppy yet functional
        });
        alias.apply(this, arguments);
    };
})(Game_Message.prototype.add);

// when I close, you close... just like that..
(function(alias){
    Window_Message.prototype.close = function() {
        $gameMap._interpreter._waitCount += 5;
        if(this._isMainChild){
            messageWindowMiddle.close();
            messageWindowTop.close();
        }
        alias.apply(this, arguments);
       
        this.isMakeMessage = false;
    };
})(Window_Message.prototype.close);

// when I open, you close... just like that..
(function(alias){
    Window_Message.prototype.open = function(textState) {
        var pe = simultaneousAquisition;
        if(pe.indexOf(this._positionType) !== -1)
            alias.apply(this, arguments);
    };
})(Window_Message.prototype.open);

// I want to look pretty for my window message
(function(alias){
    Window_Message.prototype.updateTone = function() {
        var tone = okGetTone[this._positionType] || [];
        if(tone.length > 0){
            this.setTone(tone[0]||0, tone[1]||0, tone[2]||0);
        }else{
            alias.apply(this, arguments);
        }
    };
})(Window_Message.prototype.updateTone);

// a unique face for a unique monicker
(function(alias){
    Window_Message.prototype.drawFace =function(faceName, faceIndex, x, y, width, height){
        var face = okGetFace[this._positionType];
       
        if(face.length === 0)
            return alias.apply(this, arguments);
       
        var punim = face[0] !== undefined ?
            face[0] : $gameMessage.faceName();
        var faceIndex = face[1] !== undefined ?
            parseInt(face[1]) - 1 : $gameMessage.faceIndex();
        var hue =   face[2] !== undefined ?
            parseInt(face[2]) : 0;
       
        width = width || Window_Base._faceWidth;
        height = height || Window_Base._faceHeight;
        var bitmap = ImageManager.loadFace(punim, hue);
        var pw = Window_Base._faceWidth;
        var ph = Window_Base._faceHeight;
        var sw = Math.min(width, pw);
        var sh = Math.min(height, ph);
        var dx = Math.floor(x + Math.max(width - pw, 0) / 2);
        var dy = Math.floor(y + Math.max(height - ph, 0) / 2);
        var sx = faceIndex % 4 * pw + (pw - sw) / 2;
        var sy = Math.floor(faceIndex / 4) * ph + (ph - sh) / 2;
       
        var contents = this.contents;
        bitmap.addLoadListener(function(){
            contents.blt(bitmap, sx, sy, sw, sh, dx, dy);
        });
    };
})(Window_Message.prototype.drawFace);



// ------ overwrites -------

// 3 endings for 1

Window_Message.prototype.updateMessage = function() {

    var top = messageWindowTop._textState || this._textState;
    var mid = messageWindowMiddle._textState || this._textState;;
    var bot = messageWindowBottom._textState || this._textState;;
   
    var pe = simultaneousAquisition;
    if(pe.indexOf(0) === -1)
        mid = this._textState;
    if(pe.indexOf(1) === -1)
        top = this._textState;
   
    if (this._textState) {
        while (!this.isEndOfText(this._textState)) {
            if (this.needsNewPage(this._textState)) {
                this.newPage(this._textState);
            }
            this.updateShowFast();
            this.processCharacter(this._textState);
            if (!this._showFast && !this._lineShowFast) {
                break;
            }
            if (this.pause || this._waitCount > 0) {
                break;
            }
        }
        if (this.isEndOfText(bot) && this.isEndOfText(mid) && this.isEndOfText(top)) {
            this.onEndOfText();
        }
        return true;
    } else {
        return false;
    }
};

// 3 message starts for 1
Window_Message.prototype.startMessage = function() {
   
    var text = $gameMessage.allText();
    if(text.match(/xThIsTx4G03sOn\(\d\):/) !== null){
        var txt = text.split(/xThIsTx4G03sOn/g);
        var text = "";
        for(var i = 0; i < txt.length; i++){
            if(txt[i].charAt(1) === (this._positionType+""))
                text += txt[i].substr(4) + "\n";
        }
        text = text.replace(/\n{2}/g,"\n");
    }
    this.isMakeMessage = true;
   
    if(this._isMainChild){
        if(!messageWindowMiddle.isMakeMessage){
            messageWindowMiddle.pause = false;
            messageWindowMiddle.startMessage();
        }
        if(!messageWindowTop.isMakeMessage){
            messageWindowTop.pause = false;
            messageWindowTop.startMessage();
        }
    }
   
    this._textState = {};
    this._textState.index = 0;
    this._textState.text = this.convertEscapeCharacters(text);
    this.newPage(this._textState);
    this.updatePlacement();
    this.updateBackground();
     this.open();
};

// each window has it's own position type
Window_Message.prototype.updatePlacement = function() {
    //this._positionType = $gameMessage.positionType();
    messageWindowBottom._positionType = 2;
    messageWindowMiddle._positionType = 1;
    messageWindowTop._positionType    = 0;
   
    this.y = this._positionType * (Graphics.boxHeight - this.height) / 2;
    this._goldWindow.y = this.y > 0 ? 0 : Graphics.boxHeight - this._goldWindow.height;
};

// if we move the windows to $gameMessage.positionType(), they overlap
Window_Message.prototype.areSettingsChanged = function() {
    return (this._background !== $gameMessage.background());
            //this._positionType !== $gameMessage.positionType()
};
 
Last edited:

ShadowDragon

Veteran
Veteran
Joined
Oct 8, 2018
Messages
2,166
Reaction score
710
First Language
Dutch
Primarily Uses
RMMV
what exacly do you want to disable? you dont have to use all 3, you can use
the default and sometimes both, the screenshot is only an example.

you can also do top and bottom only, but it's also for what purpose you use it for.

if you only need 1 message to show, yo ucan also use the default.
 

Nonameded

Veteran
Veteran
Joined
Jan 10, 2019
Messages
57
Reaction score
8
First Language
not english
Primarily Uses
N/A
[DELETED]
 
Last edited:

Nonameded

Veteran
Veteran
Joined
Jan 10, 2019
Messages
57
Reaction score
8
First Language
not english
Primarily Uses
N/A

Nonameded

Veteran
Veteran
Joined
Jan 10, 2019
Messages
57
Reaction score
8
First Language
not english
Primarily Uses
N/A
what exacly do you want to disable? you dont have to use all 3, you can use
the default and sometimes both, the screenshot is only an example.

you can also do top and bottom only, but it's also for what purpose you use it for.

if you only need 1 message to show, yo ucan also use the default.
Um... did I explain wrong?
I'm just trying to produce two people talking at the same time, but this plug-in(check the first thread link) I'm using is a little faulty, so I'm asking you to tell me how to fix it.
 

ShadowDragon

Veteran
Veteran
Joined
Oct 8, 2018
Messages
2,166
Reaction score
710
First Language
Dutch
Primarily Uses
RMMV
to be clear, you use top, middle, bottom text in 1 text (show all 3 message boxes)

than you create a default message box (probably bottom) but it also show it on the top.


if that is the issue, the only work around might be place the command \[bottom] texthere
and see what happend.

I dont know how the plugin works, but if default is on bottom or middle or top (2nd screenshot)
and it shows 2 boxes, than my guess, its a message update issue in the plugin.

while my knowledge is not that good yet, someone that use it or know javascript can squish
this bug for you, so it will work as it should. (I can take a look, but I cant make promises though).

when I'm able to fix it, I let you know, but someone else with js knowledge can find it faster.
 

Nonameded

Veteran
Veteran
Joined
Jan 10, 2019
Messages
57
Reaction score
8
First Language
not english
Primarily Uses
N/A
to be clear, you use top, middle, bottom text in 1 text (show all 3 message boxes)

than you create a default message box (probably bottom) but it also show it on the top.


if that is the issue, the only work around might be place the command \[bottom] texthere
and see what happend.

I dont know how the plugin works, but if default is on bottom or middle or top (2nd screenshot)
and it shows 2 boxes, than my guess, its a message update issue in the plugin.

while my knowledge is not that good yet, someone that use it or know javascript can squish
this bug for you, so it will work as it should. (I can take a look, but I cant make promises though).
At least it's faster than me who doesn't know about js structure.

when I'm able to fix it, I let you know
And i hope that time will come soon.
 

ShadowDragon

Veteran
Veteran
Joined
Oct 8, 2018
Messages
2,166
Reaction score
710
First Language
Dutch
Primarily Uses
RMMV
do you use any other message plugins? if you do, turn those off, and re-test, does the same
thing happen?

does the same thing happen in a clean project?

so far I can see, it overwrite the default function how game message is shown.
you need a coder, because it need to modify a bit, and I'm not sure where and how
to change the function properly of the game message part.
 

Nonameded

Veteran
Veteran
Joined
Jan 10, 2019
Messages
57
Reaction score
8
First Language
not english
Primarily Uses
N/A
do you use any other message plugins? if you do, turn those off, and re-test, does the same
thing happen?

does the same thing happen in a clean project?

so far I can see, it overwrite the default function how game message is shown.
you need a coder, because it need to modify a bit, and I'm not sure where and how
to change the function properly of the game message part.
Yes, the same thing happens on clean projects
Just in case, I've used the 'RS message system' and ' Yep message core'(i'm not use this) alternately, but the results are the same.
 

ShadowDragon

Veteran
Veteran
Joined
Oct 8, 2018
Messages
2,166
Reaction score
710
First Language
Dutch
Primarily Uses
RMMV
if you only need 1 on the bottom, try using \[bottom] text behind it.
while the plugin overwrite it functions.

it's not aliased because someone needed it for a specific reason, so I cant help
you out.
 

Nonameded

Veteran
Veteran
Joined
Jan 10, 2019
Messages
57
Reaction score
8
First Language
not english
Primarily Uses
N/A
if you only need 1 on the bottom, try using \[bottom] text behind it.
while the plugin overwrite it functions.

it's not aliased because someone needed it for a specific reason, so I cant help
you out.
All right. I guess my explanation wasn't enough.

Can you take a look at this gif?
All-problem.gifDoesn't it play? Click this▲
This gif will explain enough, but just in case, let me point out the problem with this plug-in again...

1.If the window position is bottom, there is nothing wrong with it and only when it is middle and top.
2.In case of continuous messages, it does not close unless the conversation ends or the window position changes, but if the plug-in is on, it closes and re-opens even though it is the same window position.

(Note, this photo was tested with a project that didn't touch anything.)
 

ShadowDragon

Veteran
Veteran
Joined
Oct 8, 2018
Messages
2,166
Reaction score
710
First Language
Dutch
Primarily Uses
RMMV
Like I said, the function is totally overwritten.

run this test for me.
(same as above) but use:

\[bottom] test
\[bottom] test
\[middle] test
\[middle] test
\[top] test
\[top] test

each in their own text window. does the same effect happen as well?

if it doesn't, the function for simultaneous need a bit of re-coding and probably
an alias function while it overwrit the original function.

if the the above does work, than that would be the only way to stop it. (not the ideal way though)
I agree if you think that as well, but I have no clue how to update, or re-code it like that you can
also use the default in the normal way. (I cant help you fix this problem).

the reason it is overwritten is, because alias this function wouldn't work how this plugin should work.
 

Nonameded

Veteran
Veteran
Joined
Jan 10, 2019
Messages
57
Reaction score
8
First Language
not english
Primarily Uses
N/A
Like I said, the function is totally overwritten.

run this test for me.
(same as above) but use:

\[bottom] test
\[bottom] test
\[middle] test
\[middle] test
\[top] test
\[top] test

each in their own text window. does the same effect happen as well?

if it doesn't, the function for simultaneous need a bit of re-coding and probably
an alias function while it overwrit the original function.

if the the above does work, than that would be the only way to stop it. (not the ideal way though)
I agree if you think that as well, but I have no clue how to update, or re-code it like that you can
also use the default in the normal way. (I cant help you fix this problem).

the reason it is overwritten is, because alias this function wouldn't work how this plugin should work.
I've tried that before.
Like this.gif
I've tried this one just in case, but it doesn't work the way you want it.
I just want one window without command (\[bottom],\[middle],\[top])
 

Attachments

ShadowDragon

Veteran
Veteran
Joined
Oct 8, 2018
Messages
2,166
Reaction score
710
First Language
Dutch
Primarily Uses
RMMV
while the bottom window = blank after, is a good think though,
while the default show both the text window.

its the update that might be wrong, but a coder and knowledge can help you fix this problem.
the default way wont function 100%, but I try to look later on, but I cant make no promises
becase I dont know which update does exacly what.

Hope someone with knowledge can fix this problem and also upload the update version of it.
because some people might use it for things.
 

Nonameded

Veteran
Veteran
Joined
Jan 10, 2019
Messages
57
Reaction score
8
First Language
not english
Primarily Uses
N/A
I hope this error will be resolved soon, but there is no news...
 

Soulrender

Jack Of All Trades
Veteran
Joined
Jan 12, 2019
Messages
556
Reaction score
295
First Language
Poland
Primarily Uses
RMMV
Can I get a link for that plugin to check further problems?
 

Soulrender

Jack Of All Trades
Veteran
Joined
Jan 12, 2019
Messages
556
Reaction score
295
First Language
Poland
Primarily Uses
RMMV
Thanks, I didn't see that link because of this crappy style.
 

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

Latest Threads

Latest Posts

Latest Profile Posts

Got accepted into the architecture degree. Now I have all the doubting questions. Have to give them an answer in the next few days.
Just realized I have a few Steam gifts floating around. Anyone need RPG Maker MV or XP (Steam only)? Send me a message and I will send them on over!

EDIT: Just an RPG Maker MV gift remaining! XP has been taken.
*when you can do the Unity tutorials, but when you actually try and convert it to your own knowledge, it fails horribly*
Hi, I made a game for a competition. I need some players to help play and vote for the best game.

https://ekamu.itch.io/not4ever
don’t forget to rate the game here


Voting is open until 12 August.

Thanks.
Progresses. Tonight: refinemment, column, pitfall, bump and gutter (I'll leave doors for last, they are scary).

Forum statistics

Threads
100,577
Messages
977,399
Members
132,161
Latest member
vicpalomo
Top