Preserved forum archive. This topic stores the original first post and locally mirrored RPG Maker Web attachments when available. It is posted by the BMMPlay archive account, not by the original creator.
Original Source
- Original title: I'm using Simultaneous Messages...
- Original author: Nonameded
- Original date: July 7, 2020
- Source thread: https://forums.rpgmakerweb.com/threads/im-using-simultaneous-messages.123757/
- Source forum path: Game Development Engines > RPG Maker Javascript Plugins > Javascript/Plugin Support
Summary
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.
Archived First Post
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.
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
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.
Protected download(Window Position :Bottom)Protected downloadProtected download(Window Position: Top)Protected download
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.
(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()
};
Downloads / Referenced Files
Log in to download
Log in, then follow the RPG Maker Developers Group to see these download links.
Log in to downloadReferenced Images / Attachments
Creator Claims / Removal
If you are the original creator and want this listing reassigned, edited, or removed, join BMMPlay and contact the moderators with proof that matches the original RPG Maker Web profile, linked GitHub, itch.io page, or another public creator identity.
Replies (0)
No replies yet.
0
replies
1
view
Topic Summary
Loading summary...



