设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 6360|回复: 17
打印 上一主题 下一主题

[原创发布] 对话框跟随角色 =-= 改进中(已适配 YEP_MessageCore )

[复制链接]

Lv4.逐梦者

梦石
2
星屑
5550
在线时间
2566 小时
注册时间
2012-2-9
帖子
990

开拓者

跳转到指定楼层
1
发表于 2015-12-12 02:58:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 garfeng 于 2016-9-19 23:31 编辑

不支持1.3版本,不支持1.3版本,奇怪的bug,请勿使用!







代码下载地址:http://pan.baidu.com/s/1pJVMRl5

不知道是不是大家都选择使用YEP_messageCore,现出一个针对它的优化版本,具体请看注释。
  1. //=============================================================================
  2. //fuki.js
  3. //=============================================================================
  4. /**
  5. * @Author:      Garfeng Gu
  6. * @Email:       [email protected]
  7. * @CreateTime:  2015-12-12 21:44:12
  8. * @LastModified:2015-12-16 20:18:19

  9. * @Description: 呼出对话框 for RPG Maker MV
  10. *               在使用时,添加[文本显示],填写\fuki[eventId]正文内容,即可在游
  11. *               戏里将对话框定位到相应角色上方,eventId设为0时,对应主角。
  12. *               如:\fuki[1]你好,阿尔西斯。
  13. *               强烈推荐使用下方页面的自动换行脚本:
  14. *               https://rpg.blue/thread-386230-1-1.html
  15. *               本代码已适配YEP_Message,使用方法请参考下方对应函数处的注释。

  16. * @License:     No part of this source code could be used for commercial/business
  17. *               purpose without the express written permission of Garfeng Gu.
  18. */



  19. /*没有使用YEP_MessageCore则删掉本行
  20. //没有使用YEP_MessageCore的童鞋请将这一段的注释删掉
  21. Window_Message.prototype.startMessage = function()
  22. {
  23.     this._textState = {};
  24.     this._textState.index = 0;
  25.     var text = this.convertEscapeCharacters($gameMessage.allText());
  26.     text = this.getFukiId(text);
  27.     this._textState.text = text;
  28.     this.newPage(this._textState);
  29.     this.updatePlacement();
  30.     this.updateBackground();
  31.     this.open();
  32. }
  33. 没有使用YEP_MessageCore则删掉本行*/

  34. /*
  35. //使用了YEP_MessageCore的童鞋请把YEP_MessageCore里的
  36. //Window_Message.prototype.adjustWindowSettings
  37. //和Window_Message.prototype.convertEscapeCharacters做如下修改。
  38. Window_Message.prototype.adjustWindowSettings = function() {
  39.     if(this.setfuki == undefined || this.setfuki == 0){ //Add by Garfeng Gu
  40.         this.width = this.windowWidth();
  41.         this.height = Math.min(this.windowHeight(), Graphics.boxHeight);
  42.         if (Math.abs(Graphics.boxHeight - this.height) < this.lineHeight()) {
  43.             this.height = Graphics.boxHeight;
  44.         }
  45.         this.createContents();
  46.         this.x = (Graphics.boxWidth - this.width) / 2;
  47.     }//Add by Garfeng Gu
  48. };

  49. Window_Message.prototype.convertEscapeCharacters = function(text) {
  50.     text = Window_Base.prototype.convertEscapeCharacters.call(this, text);
  51.     text = this.getFukiId(text);//Add by Garfeng Gu
  52.     text = this.convertNameBox(text);
  53.     text = this.convertMessageCharacters(text);
  54.     return text;
  55. };
  56. */

  57. Window_Message.prototype.updatePlacement = function() {
  58.     if(this.setfuki == undefined || this.setfuki==0){
  59.     this._positionType = $gameMessage.positionType();
  60.     this.y = this._positionType * (Graphics.boxHeight - this.height) / 2;
  61.     this._goldWindow.y = this.y > 0 ? 0 : Graphics.boxHeight - this._goldWindow.height;
  62. }
  63. };

  64. Window_Message.prototype.getFukiId = function(text)
  65. {
  66.     //fuki
  67.     var eventid = -1;
  68.     text = text.replace(/\x1bFUKI\[(\d+)\]/gi,function(){
  69.         eventid = arguments[1];
  70.         return "";
  71.     });
  72.     if(eventid>=0){
  73.         this.fukiPalcement(eventid);
  74.     }
  75.     else
  76.     {
  77.         this.setfuki = 0;
  78.     }

  79.     return text;
  80. };


  81. Window_Message.prototype.fukiPalcement = function (eventid)
  82. {

  83.         var idx,idy;
  84.         if(eventid!=0){
  85.             idx = $gameMap._events[eventid]._x;
  86.             idy = $gameMap._events[eventid]._y;
  87.         }
  88.         else
  89.         {
  90.             idx = $gamePlayer._x;
  91.             idy = $gamePlayer._y;
  92.         }



  93.         idx = $gameMap.adjustX(idx);
  94.         idy = $gameMap.adjustY(idy);

  95.         var width = this.windowWidth()/2;
  96.         var height = this.windowHeight();
  97.         var x = idx*48 + 24 - width/2;//
  98.         var y = idy*48 - 24 - height;

  99.         
  100.         if(x+width>Graphics.boxWidth) x = (Graphics.boxWidth - width);
  101.         else if(x<0) x = 0;


  102.         if(y+height>Graphics.boxHeight) y = Graphics.boxHeight - height;

  103.         else if(y<0) y=0;

  104.         this.width = width;
  105.         this.height = height;
  106.         this.x = x;
  107.         this.y = y;
  108.         this.setfuki = 1;
  109. };

  110. //=============================================================================
  111. //End of File: fuki.js
  112. //2015-12-16 20:29:07
  113. //=============================================================================
复制代码

评分

参与人数 2星屑 +10 梦石 +1 收起 理由
余烬之中 + 1 精品文章
binarycake + 10 塞糖

查看全部评分

Lv4.逐梦者

梦石
0
星屑
8028
在线时间
720 小时
注册时间
2013-1-16
帖子
80

开拓者

2
发表于 2015-12-12 11:45:54 | 只看该作者
这个可以给NPC那样显示么
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
491 小时
注册时间
2015-1-7
帖子
124
3
发表于 2015-12-12 13:39:52 | 只看该作者
可以和显示人物名称的自带插件一起使用么

点评

已针对该代码优化 =-=  发表于 2015-12-13 19:14
YEP_MessageCore  发表于 2015-12-13 02:47
求问一下这个插件的名字是啥?或者给个地址?  发表于 2015-12-12 21:51
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
130 小时
注册时间
2010-7-24
帖子
172
4
发表于 2015-12-12 13:54:05 | 只看该作者
这个赞~~~
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
2
星屑
5550
在线时间
2566 小时
注册时间
2012-2-9
帖子
990

开拓者

5
 楼主| 发表于 2015-12-15 01:20:01 | 只看该作者

借楼发个图……
更新手动置顶~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
47 小时
注册时间
2015-12-3
帖子
67
6
发表于 2015-12-15 09:28:56 | 只看该作者
garfeng 发表于 2015-12-15 01:20
借楼发个图……
更新手动置顶~

{:2_269:}大神你上传一下代码下载被,你这个复制完了之后就乱套了,,,,

点评

ok了  发表于 2015-12-16 21:02
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
327 小时
注册时间
2011-9-29
帖子
315
7
发表于 2016-3-6 12:03:48 | 只看该作者
没怎么懂呢、、
使用了YEP_MessageCore是不是只需要改成这样?本js也不用放到plugins里


点评

用了yep_messageCore后,本js也需要放的。  发表于 2016-5-1 18:42
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
27413
在线时间
1535 小时
注册时间
2006-1-10
帖子
2063

开拓者第一届地图绘制大赛RTP组第四名

8
发表于 2016-3-10 22:37:46 | 只看该作者


是怎么使用的? 无论我怎么设置,都没有效果,还是默认的……我没使用YEP那个插件

点评

代码上有注释,把24和38行删除。  发表于 2016-5-1 18:43
MV帮助 http://miaowm5.github.io/RMMV-F1/日复一日,年复一年人还是保留一点自我兴趣的好啊~~~忘记过去 ,这样我就可以  放弃未来了……哭~~终于找回以前的头像了,哎~~原来我是那么的想念阿……
画地图没灵感?很烦?很无聊 【 戳 我 】一 大 波 地 图 在 等 你  \^0^/
我的游戏
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
26 小时
注册时间
2016-10-30
帖子
12
9
发表于 2016-11-2 15:34:25 | 只看该作者
lz lz 还在吗?请问我只用了这个插件,怎么没效果啊{:8_458:}
直接复制了你的范例 也没效果 ..24-38是整段删掉吧?
我没用YEP

点评

请看顶部第一行文字……论坛有其他人写的更好的呼出对话框,请选用。  发表于 2016-11-8 08:17
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
132 小时
注册时间
2010-9-30
帖子
100
10
发表于 2016-11-8 01:52:53 | 只看该作者
感谢楼主分享

点评

请不要使用,论坛有其他人写的更好的呼出对话框,mv的,请选用。  发表于 2016-11-8 08:17
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-26 16:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表