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

Project1

 找回密码
 注册会员
搜索
楼主: VIPArcher
打印 上一主题 下一主题

[原创发布] 【玩家|事件吹出气泡式对话框】ver 1.0

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1044
在线时间
251 小时
注册时间
2016-9-2
帖子
126
1
发表于 2017-11-3 18:40:02 | 显示全部楼层
在原有的基础上添加了一个战斗时气泡(横向专属)
近期放出
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1044
在线时间
251 小时
注册时间
2016-9-2
帖子
126
2
发表于 2018-4-16 21:43:50 | 显示全部楼层
本帖最后由 雪在燃 于 2018-4-17 20:19 编辑


哇靠
这都能翻出来…
我居然遗忘了这个事,毕竟社畜 1个星期内必定撸个出来



更新,从js库翻出了这个版本,使用上有bug直接论坛呼我
版权当然是楼主大大所有
更新在楼下

点评

你终于看到了···谢谢!  发表于 2018-4-16 23:15
只支持横屏战斗,bm改为战斗角色,bmf仍然是普通角色  发表于 2018-4-16 22:29

评分

参与人数 1+1 收起 理由
2256538860 + 1 认可答案

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1044
在线时间
251 小时
注册时间
2016-9-2
帖子
126
3
发表于 2018-4-17 20:19:14 | 显示全部楼层
2256538860 发表于 2018-4-16 23:38
@雪在燃 尝试了各种使用方法 绝对对话框还是处于底部 , 并未修改过js数据 复制35楼提供的原版的粘贴的
插 ...

这个版本是从历史记录里面拿出来的,有问题很正常,直接call我就是
如果不回复的话可以尝试加我qq1396336279(一些脚本问题可以问我)

把原本的显示剔除了!
  1. //=============================================================================
  2. // VIPArcher_Bubble_Message.js
  3. //=============================================================================
  4. /*:
  5. * @plugindesc VIPArcher_气泡对话框
  6. * @author VIPArcher
  7. *
  8. * @param BubbleTagName
  9. * @desc 使用的气泡箭头素材文件名(请保存在 /img/system文件夹下)
  10. * @default BubbleTag
  11. *
  12. * @param TopMessageReviseY
  13. * @desc 气泡在人物上方时对话框Y轴的修正量(可以为负)
  14. * @default 0
  15. *
  16. * @param TopTagReviseY
  17. * @desc 气泡在人物上方时气泡箭头Y轴的修正量(可以为负)
  18. * @default 0
  19. *
  20. * @param BottomMessageReviseY
  21. * @desc 气泡在人物下方时对话框Y轴的修正量(可以为负)
  22. * @default 0
  23. *
  24. * @param BottomTagReviseY
  25. * @desc 气泡在人物下方时气泡箭头Y轴的修正量(可以为负)
  26. * @default 0
  27. *
  28. * @help 使用\BM[ID]来指定吹出气泡的事件ID。大小写不敏感。
  29. * ID 为 0 时代表本事件,为其他值时代表对应编号ID的事件。
  30. * 请确保吹出气泡的事件是存在的。
  31. *
  32. * 使用\BMF[ID]来指定吹出气泡的角色。大小写不敏感。
  33. * ID 为 0 时代表玩家,为其他值时代表对应编号跟随队员。
  34. * 请确保吹出气泡的角色是存在的。
  35. *
  36. * ver 1.0.0 最后更新于2015/12/19 最新版地址见:
  37. * https://github.com/VIPArcher/RMMV-JS
  38. */
  39. (function () {
  40.     var parameters = PluginManager.parameters('VIPArcher_Bubble_Message');
  41.     var topTagReviseY = String(parameters['TopTagReviseY'] || '0');
  42.     var bottomTagReviseY = String(parameters['BottomTagReviseY'] || '0');
  43.     var topMessageReviseY = String(parameters['TopMessageReviseY'] || '0');
  44.     var bottomMessageReviseY = String(parameters['BottomMessageReviseY'] || '0');
  45.     var bubbleTagName = String(parameters['BubbleTagName'] || 'BubbleTag');
  46.     function Window_Message_Face() {
  47.         this.initialize.apply(this, arguments);
  48.     };
  49.     Window_Message_Face.prototype = Object.create(Window_Base.prototype);
  50.     Window_Message_Face.prototype.constructor = Window_Message_Face;
  51.     Window_Message_Face.prototype.initialize = function (messageWindow) {
  52.         var width = this.windowWidth();
  53.         var height = this.windowHeight();
  54.         this._messageWindow = messageWindow;
  55.         Window_Base.prototype.initialize.call(this, 0, 0, width, height);
  56.         this._faceBitmap = null;
  57.         this.visible = false;
  58.         this.opacity = 0;
  59.     };
  60.     Window_Message_Face.prototype.windowWidth = function () {
  61.         return 180;
  62.     };
  63.     Window_Message_Face.prototype.windowHeight = function () {
  64.         return 180;
  65.     };
  66.     Window_Message_Face.prototype.updateLoading = function () {
  67.         if (this._faceBitmap) {
  68.             if (ImageManager.isReady()) {
  69.                 this.drawMessageFace();
  70.                 this._faceBitmap = null;
  71.                 return false;
  72.             } else { return true; };
  73.         } else { return false; };
  74.     };
  75.     Window_Message_Face.prototype.loadMessageFace = function () {
  76.         this._faceBitmap = ImageManager.loadFace($gameMessage.faceName());
  77.     };
  78.     Window_Message_Face.prototype.drawMessageFace = function () {
  79.         this.drawFace($gameMessage.faceName(), $gameMessage.faceIndex(), 0, 0);
  80.     };
  81.     Window_Message_Face.prototype.update = function () {
  82.         Window_Base.prototype.update.call(this);
  83.         this.updateLoading();
  84.         if (this.contentsOpacity < 255) { this.contentsOpacity += 15 };
  85.         if (this.move_x >= 0) {
  86.             this.x += 4;
  87.             this.move_x -= 4;
  88.         }
  89.     };
  90.     Window_Message_Face.prototype.setFace = function () {
  91.         this.contents.clear();
  92.         if (!!this._messageWindow && $gameMessage.faceName() != '') {
  93.             this.loadMessageFace();
  94.             this.setPosition();
  95.             this.show();
  96.             this.open();
  97.         } else { this.hide(); };
  98.     };
  99.     Window_Message_Face.prototype.setPosition = function () {
  100.         this.y = this._messageWindow.height - this.windowHeight();
  101.         this.contentsOpacity = 0;
  102.         if (this.face_name != $gameMessage.faceName() || this.face_index != $gameMessage.faceIndex()) {
  103.             if (!!this._messageWindow._event_pop_id || this._messageWindow._event_pop_id === 0) {
  104.                 this.x = -60;
  105.                 this.move_x = 60;
  106.             };
  107.             this.face_name = $gameMessage.faceName();
  108.             this.face_index = $gameMessage.faceIndex();
  109.         };
  110.     };
  111.     var _messageWindowUpdateOpen = Window_Message.prototype.updateOpen;
  112.     Window_Message.prototype.updateOpen = function () {
  113.         if (SceneManager._scene.constructor === Scene_Map || SceneManager._scene.constructor === Scene_Battle) { //判断地图
  114.             if (this._opening) { //判断是否正在打开
  115.                 this.openness += 32;
  116.                 if (this.isOpen()) {
  117.                     this._opening = false;
  118.                     if (this._messageBubbleTag._isShow) {
  119.                         this._messageBubbleTag.visible = true;
  120.                         this._messageBubbleTag._isShow = false;
  121.                     };
  122.                 };
  123.             };
  124.         } else {
  125.             _messageWindowUpdateOpen.call(this);
  126.         };
  127.     };
  128.     var _messageWindowClose = Window_Message.prototype.close;
  129.     Window_Message.prototype.close = function () {//关闭资源
  130.         _messageWindowClose.call(this);
  131.         if (SceneManager._scene.constructor === Scene_Map || SceneManager._scene.constructor === Scene_Battle) {
  132.             this._messageBubbleTag.visible = false;
  133.             this._faceWindow.contents.clear();
  134.             this._faceWindow.close();
  135.         };
  136.     };
  137.     var _messageWindowInitialize = Window_Message.prototype.initialize
  138.     Window_Message.prototype.initialize = function () {//初始化
  139.         _messageWindowInitialize.call(this);
  140.         this._faceWindow = new Window_Message_Face(this);
  141.         this.addChild(this._faceWindow);
  142.     };
  143.     var _messageWindowUpdate = Window_Message.prototype.update
  144.     Window_Message.prototype.update = function () { //更新
  145.         _messageWindowUpdate.call(this);
  146.         if (this._faceWindow) { this._faceWindow.update() };
  147.     };
  148.     var _createMessageWindowBubbleTag = Scene_Map.prototype.createMessageWindow
  149.     Scene_Map.prototype.createMessageWindow = function () {        //创建对话窗口
  150.         _createMessageWindowBubbleTag.call(this);
  151.         //创建精灵类
  152.         var bubbleTag = new Sprite();
  153.         bubbleTag.bitmap = ImageManager.loadSystem(bubbleTagName);
  154.         this._messageWindow._messageBubbleTag = bubbleTag;
  155.         this.addChild(bubbleTag);
  156.         this._messageWindow._messageBubbleTag.visible = false;
  157.     };
  158.     var _battleCreateWindowBubbleTag = Scene_Battle.prototype.createMessageWindow;
  159.     Scene_Battle.prototype.createMessageWindow = function () {
  160.         _battleCreateWindowBubbleTag.call(this);
  161.         var bubbleTag = new Sprite();
  162.         bubbleTag.bitmap = ImageManager.loadSystem(bubbleTagName);
  163.         this._messageWindow._messageBubbleTag = bubbleTag;
  164.         this.addChild(bubbleTag);
  165.         this._messageWindow._messageBubbleTag.visible = false;
  166.     }
  167.     var _convertEscapeCharacters = Window_Message.prototype.convertEscapeCharacters;
  168.     Window_Message.prototype.convertEscapeCharacters = function (text) {
  169.         this.resetWindowMessage();
  170.         text = _convertEscapeCharacters.call(this, text);
  171.         text = text.replace(/\x1bBM\[(\d+)\]/gi, function () {
  172.             console.log("测试1");
  173.             return this.event_pop_message_setup(parseInt(arguments[1]));
  174.         }.bind(this));
  175.         text = text.replace(/\x1bBMF\[(\d+)\]/gi, function () {
  176.             return this.event_pop_message_setup(parseInt(arguments[1]), true);
  177.         }.bind(this));
  178.         text = text.replace(/\x1bCBM/gi, function () {
  179.             return this.event_pop_message_setup(false, true);
  180.         }.bind(this));
  181.         return text;
  182.     };
  183.     function getCharacter(id, isActor) {
  184.         function obj_fun(c){
  185.             this.x = 0;
  186.             this.y = 0;
  187.         }
  188.         obj_fun.prototype.screenX = function(){
  189.             return this.x;
  190.         }
  191.         obj_fun.prototype.screenY = function(){
  192.             return this.y;
  193.         }
  194.         if (isActor) {
  195.             var temp = SceneManager._scene._spriteset._actorSprites[id];
  196.             var obj = new obj_fun(temp);
  197.             obj.x = temp._homeX;
  198.             obj.y = temp._homeY;
  199.             obj.height = 85;
  200.             return obj;
  201.         } else {
  202.             var temp = SceneManager._scene._spriteset._enemySprites[id];
  203.             var obj = new obj_fun(temp);
  204.             obj.x = temp._homeX;
  205.             obj.y = temp._homeY;
  206.             obj.height = temp.height;
  207.             return obj;
  208.         }
  209.     }
  210.     var _updatePlacement = Window_Message.prototype.updatePlacement;
  211.     Window_Message.prototype.updatePlacement = function () {
  212.         if (SceneManager._scene.constructor === Scene_Map) {
  213.             if (this._event_pop_id === 0) {
  214.                 this._character = !!this._follower ? $gamePlayer : $gameMap.event($gameMap._interpreter.eventId());
  215.                 this.popSetPopPlacement(this._character);
  216.             } else if (this._event_pop_id > 0) {
  217.                 if (!!this._follower) {
  218.                     this._character = $gamePlayer.followers().follower(this._event_pop_id - 1);
  219.                 } else {
  220.                     this._character = $gameMap.event(this._event_pop_id);
  221.                 }; this.popSetPopPlacement(this._character);
  222.             } else {
  223.                 _updatePlacement.call(this);
  224.             };
  225.         } else if (SceneManager._scene.constructor === Scene_Battle) {
  226.             if (this._event_pop_id === 0 || this._event_pop_id > 0) {
  227.                 this._character = getCharacter(this._event_pop_id, !!this._follower);
  228.                 this.popSetPopPlacement(this._character,true);
  229.             } else {
  230.                 _updatePlacement.call(this);
  231.             };
  232.         }
  233.         else {
  234.             _updatePlacement.call(this);
  235.         };
  236.         if (this._faceWindow) {
  237.             this._faceWindow.setFace();
  238.         };
  239.     };
  240.     Window_Message.prototype.resetWindowMessage = function () {
  241.         this.x = 0;
  242.         this._follower = false;
  243.         this._character = false;
  244.         this._event_pop_id = false;
  245.         this.width = this.windowWidth();
  246.         this.height = this.windowHeight();
  247.     }
  248.     Window_Message.prototype.event_pop_message_setup = function (event_id, follower) {
  249.         if (follower && !$gamePlayer.followers().follower(event_id - 1)) {
  250.             this._event_pop_id = follower ? 0 : false;
  251.             this._follower = true;
  252.         } else {
  253.             this._event_pop_id = event_id;
  254.             this._follower = follower;
  255.         }; return "";
  256.     };
  257.     Window_Message.prototype.popSetPopPlacement = function (character, isBattle) {
  258.         var setHeight = 60;
  259.         if (isBattle) {
  260.             setHeight = character.height;
  261.         }
  262.         this.popcaltextStateHW($gameMessage.allText());
  263.         this._messageBubbleTag._isShow = true;
  264.         var x = character.screenX() - this.width / 2;
  265.         var endX = character.screenX() + this.width / 2;
  266.         this.x = x > 0 ? x : 0;
  267.         if (endX > Graphics.boxWidth) { this.x = Graphics.boxWidth - this.width };
  268.         this._bubblePosTag = character.screenY() > Graphics.boxHeight / 2 ? true : false;
  269.         if (this._bubblePosTag) {
  270.             this.y = character.screenY() - this.height - setHeight + parseInt(topMessageReviseY);
  271.             this._messageBubbleTag.y = character.screenY() - (setHeight+5) + parseInt(topTagReviseY);
  272.         } else {
  273.             this.y = character.screenY() + 14 + parseInt(bottomMessageReviseY);
  274.             this._messageBubbleTag.y = character.screenY() + parseInt(bottomTagReviseY);
  275.         };
  276.         this.setBubbleTag(character);
  277.     };
  278.     Window_Message.prototype.setBubbleTag = function (character) {
  279.         var width = this._messageBubbleTag.width;
  280.         var height = this._messageBubbleTag.bitmap.height / 2;
  281.         var y = !this._bubblePosTag ? height : 0;
  282.         this._opening = true;
  283.         this._messageBubbleTag.setFrame(0, y, width, height);
  284.         this._messageBubbleTag.x = character.screenX() - width / 2;
  285.     };
  286.     Window_Message.prototype.popcaltextStateHW = function (text) {
  287.         var leftX = $gameMessage.faceName() === '' ? 0 : 172;
  288.         var textState = { index: 0, x: leftX, y: 0, width: 0, left: leftX };
  289.         textState.text = this.convertEscapeCharacters(text);
  290.         textState.y = this.calcTextHeight(textState, false);
  291.         while (textState.index < textState.text.length) {
  292.             this.popReadCharacter(textState);
  293.         };
  294.         this.resetFontSettings();
  295.         this.height = textState.height + 36;
  296.         this.width = textState.width + 36;
  297.     };
  298.     Window_Message.prototype.popReadCharacter = function (textState) {
  299.         switch (textState.text[textState.index]) {
  300.             case '\n':
  301.                 textState.x = textState.left;
  302.                 textState.y += this.calcTextHeight(textState, false);
  303.                 textState.index++;
  304.                 break;
  305.             case '\f':
  306.                 textState.index++;
  307.                 break;
  308.             case '\x1b':
  309.                 switch (this.obtainEscapeCode(textState)) {
  310.                     case 'C':
  311.                         this.obtainEscapeParam(textState);
  312.                         break;
  313.                     case 'I':
  314.                         this.obtainEscapeParam(textState);
  315.                         textState.x += Window_Base._iconWidth + 4;
  316.                         break;
  317.                     case '{':
  318.                         if (this.contents.fontSize <= 96) { this.contents.fontSize += 12; };
  319.                         break;
  320.                     case '}':
  321.                         if (this.contents.fontSize >= 24) { this.contents.fontSize -= 12; };
  322.                         break;
  323.                 };
  324.                 break;
  325.             default:
  326.                 textState.x += this.textWidth(textState.text[textState.index++]);
  327.                 textState.width = textState.width > textState.x ? textState.width : textState.x;
  328.                 textState.height = textState.height > textState.y ? textState.height : textState.y;
  329.                 break;
  330.         };
  331.     };
  332.     var _drawMessageFace = Window_Message.prototype.drawMessageFace;
  333.     Window_Message.prototype.drawMessageFace = function () { };
  334. })();
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-2 12:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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