不支持1.3版本,不支持1.3版本,奇怪的bug,请勿使用!
代码下载地址:
http://pan.baidu.com/s/1pJVMRl5
不知道是不是大家都选择使用YEP_messageCore,现出一个针对它的优化版本,具体请看注释。[code]//=============================================================================
//fuki.js
//=============================================================================
/**
* @Author: Garfeng Gu
* @Email: [email protected]
* @CreateTime: 2015-12-12 21:44:12
* @LastModified:2015-12-16 20:18:19
* @Description: 呼出对话框 for RPG Maker MV
* 在使用时,添加[文本显示],填写\fuki[eventId]正文内容,即可在游
* 戏里将对话框定位到相应角色上方,eventId设为0时,对应主角。
* 如:\fuki[1]你好,阿尔西斯。
* 强烈推荐使用下方页面的自动换行脚本:
*
https://rpg.blue/thread-386230-1-1.html
* 本代码已适配YEP_Message,使用方法请参考下方对应函数处的注释。
* @License: No part of this source code could be used for commercial/business
* purpose without the express written permission of Garfeng Gu.
*/
/*没有使用YEP_MessageCore则删掉本行
//没有使用YEP_MessageCore的童鞋请将这一段的注释删掉
Window_Message.prototype.startMessage = function()
{
this._textState = {};
this._textState.index = 0;
var text = this.convertEscapeCharacters($gameMessage.allText());
text = this.getFukiId(text);
this._textState.text = text;
this.newPage(this._textState);
this.updatePlacement();
this.updateBackground();
this.open();
}
没有使用YEP_MessageCore则删掉本行*/
/*
//使用了YEP_MessageCore的童鞋请把YEP_MessageCore里的
//Window_Message.prototype.adjustWindowSettings
//和Window_Message.prototype.convertEscapeCharacters做如下修改。
Window_Message.prototype.adjustWindowSettings = function() {
if(this.setfuki == undefined || this.setfuki == 0){ //Add by Garfeng Gu
this.width = this.windowWidth();
this.height = Math.min(this.windowHeight(), Graphics.boxHeight);
if (Math.abs(Graphics.boxHeight - this.height) < this.lineHeight()) {
this.height = Graphics.boxHeight;
}
this.createContents();
this.x = (Graphics.boxWidth - this.width) / 2;
}//Add by Garfeng Gu
};
Window_Message.prototype.convertEscapeCharacters = function(text) {
text = Window_Base.prototype.convertEscapeCharacters.call(this, text);
text = this.getFukiId(text);//Add by Garfeng Gu
text = this.convertNameBox(text);
text = this.convertMessageCharacters(text);
return text;
};
*/
Window_Message.prototype.updatePlacement = function() {
if(this.setfuki == undefined || this.setfuki==0){
this._positionType = $gameMessage.positionType();
this.y = this._positionType * (Graphics.boxHeight - this.height) / 2;
this._goldWindow.y = this.y > 0 ? 0 : Graphics.boxHeight - this._goldWindow.height;
}
};
Window_Message.prototype.getFukiId = function(text)
{
//fuki
var eventid = -1;
text = text.replace(/\x1bFUKI\[(\d+)\]/gi,function(){
eventid = arguments[1];
return "";
});
if(eventid>=0){
this.fukiPalcement(eventid);
}
else
{
this.setfuki = 0;
}
return text;
};
Window_Message.prototype.fukiPalcement = function (eventid)
{
var idx,idy;
if(eventid!=0){
idx = $gameMap._events[eventid]._x;
idy = $gameMap._events[eventid]._y;
}
else
{
idx = $gamePlayer._x;
idy = $gamePlayer._y;
}
idx = $gameMap.adjustX(idx);
idy = $gameMap.adjustY(idy);
var width = this.windowWidth()/2;
var height = this.windowHeight();
var x = idx*48 + 24 - width/2;//
var y = idy*48 - 24 - height;
if(x+width>Graphics.boxWidth) x = (Graphics.boxWidth - width);
else if(xGraphics.boxHeight) y = Graphics.boxHeight - height;
else if(y