//============================================================================= // MrLiu_AutoBalloon.js //============================================================================= /*: * @plugindesc 在RMMV游戏中地图界面的人物头顶自动显示气球 * @author MrLiu-过眼云烟 * * @help 事件页的说明下加入“autoballoon_11”,即显示第11行的表情,需将Balloon_1.png * 文件放在\img\system目录下,该文件默认大小为96*352,默认每格表情大小为32,每行3格 * 后续版本将提供修改格式,显示速度等功能,敬请期待,如有问题欢迎给我留言。 */ //----------------------------------------------------------------------------- var Imported = Imported || {}; Imported.MrLiu_AutoBalloon = true; var Lmd = Lmd || {}; Lmd.MrLiu_AutoBalloon = Lmd.MrLiu_AutoBalloon || {}; var parameters = PluginManager.parameters('MrLiu_Shadow'); var displayAutoBalloon = String(parameters['displayAutoBalloon']); var shadowOpacity = Number(parameters['shadowOpacity']); displayAutoBalloon = false; Lmd.MrLiu_AutoBalloon.Game_Character_initialize = Game_Character.prototype.initialize; Game_Character.prototype.initialize = function() { Lmd.MrLiu_AutoBalloon.Game_Character_initialize.call(this); this._auto_balloon = 0; }; Game_Character.prototype._auto_balloon = function() { return this._auto_balloon; }; Lmd.MrLiu_AutoBalloon.Game_Event_refresh = Game_Event.prototype.refresh; Game_Event.prototype.refresh = function() { Lmd.MrLiu_AutoBalloon.Game_Event_refresh.call(this); if((this._erased == false)&&(this._trigger == 0)){ var list = this.list(); for(var i=0 ;i<list.length;i++){ if (list[i].code == 108){ var num =list[i].parameters[0].match(/autoballoon_(\d+)/g); if (num){ var num1 = Number((String(num)).match(/\d+(\.\d+)?/g)); this._auto_balloon = num1; } } } } }; Game_Event.prototype.setupPage = function() { if (this._pageIndex >= 0) { this._auto_balloon = 0; this.setupPageSettings(); } else { this._auto_balloon = 0; this.clearPageSettings(); } this.refreshBushDepth(); this.clearStartingFlag(); this.checkEventTriggerAuto(); }; Lmd.MrLiu_AutoBalloon.Sprite_Character_initialize = Sprite_Character.prototype.initialize; Sprite_Character.prototype.initialize = function(character) { Lmd.MrLiu_AutoBalloon.Sprite_Character_initialize.call(this,character); this.createAutoBalloon(); this._dis_flag = 0; this._flag = 0; this._bx = 0 this.character = character; }; Sprite_Character.prototype.createAutoBalloon = function() { this._auto_balloon_sprite = new Sprite(); this._auto_balloon_sprite.bitmap = ImageManager.loadSystem('Balloon_1'); this._auto_balloon_sprite.opacity = 0; this._auto_balloon_sprite.z = 7; this._auto_balloon_sprite.x = this.x; this._auto_balloon_sprite.y = this.y-40;//-this.patternHeight();// ;//- this.height*2; this._auto_balloon_sprite.anchor.x = 0.5; this._auto_balloon_sprite.anchor.y = 1; //this.addChild(this._auto_balloon_sprite); this.addChild(this._auto_balloon_sprite); if (displayAutoBalloon){ this._p_balloon_sprite = new Sprite(); this._p_balloon_sprite.bitmap = ImageManager.loadSystem('Balloon_1'); this._p_balloon_sprite.opacity = 0; this._p_balloon_sprite.z = 7; this.parent.addChild(this._p_balloon_sprite);//this.addChild(this._p_balloon_sprite); } } Lmd.MrLiu_AutoBalloon.Sprite_Character_update = Sprite_Character.prototype.update; Sprite_Character.prototype.update = function() { Lmd.MrLiu_AutoBalloon.Sprite_Character_update.call(this); if ((this.character._auto_balloon == 0) || ! (this._balloonDuration == 0 ) || ($gameMap._interpreter.isRunning()) || ($gameSwitches[212] == true)){ this.clear_auto_balloon(); } else{ this.update_auto_balloon(); } } Sprite_Character.prototype.face_to_event = function() { var data = new Array(); var w = 1; var h = 1 * 2; for (var i=0;i<(h+1);i++) { for (var j=0;j<(h+1);j++) { data.push([(this.character.x-w)+i,(this.character.y-w)+j]); } } for(var i =0;i<data.length;i++) { if((String(data[i])) == (String([$gamePlayer.x , $gamePlayer.y]))) { return true; } } return false; } Sprite_Character.prototype.distance_balloom_opacity = function() { this._auto_balloon_sprite.opacity += 70; if (displayAutoBalloon){ this._p_balloon_sprite.opacity += 70; } } Sprite_Character.prototype.clear_auto_balloon = function() { if (this._auto_balloon_sprite.opacity == 0){ this._dis_flag = 255; return; } this._auto_balloon_sprite.opacity = this._dis_flag; if (displayAutoBalloon){ this._p_balloon_sprite.opacity = this._dis_flag; } this._dis_flag -= 35; } Sprite_Character.prototype.start_auto_balloon = function() { this._flag = 1; this._balloon_id = this.character._auto_balloon; this._ry = (this.character._auto_balloon - 1) * 32; } Sprite_Character.prototype.set_rect = function(index) { this._auto_balloon_sprite.setFrame(32 * index, this._ry, 32, 32); if (displayAutoBalloon){ this._p_balloon_sprite.setFrame(32 * index, this._ry, 32, 32); } } Sprite_Character.prototype.update_auto_balloon = function() { if ((!this._auto_balloon_sprite) || (this._balloon_id != this._character._auto_balloon) || (this._flag == 0)){ this.start_auto_balloon(); } //console.log(this.height); //console.log(this.character.y); //this._auto_balloon_sprite.y = this.character.y - this.height; //console.log(this._auto_balloon_sprite.y); if (displayAutoBalloon){ this._p_balloon_sprite.x = $gamePlayer.x; this._p_balloon_sprite.y = $gamePlayer.y; } if (this.face_to_event()){ this.distance_balloom_opacity(); }else{ this.clear_auto_balloon(); } if (this._flag == 10){ this._flag = 0; if(this._bx == 2){ this._bx = 0; } else{ this._bx++; } } else{ this._flag++; } this.set_rect(this._bx); }
1.93 KB, 下载次数: 1267
Balloon_1.png (9.98 KB, 下载次数: 114)
wy129308 发表于 2021-3-19 19:04
你好,请问怎么设置距离?
Sprite_Character.prototype.start_auto_balloon = function() { this._flag = 1; this._balloon_id = this.character._auto_balloon; this._ry = (this.character._auto_balloon - 1) * 32; } Sprite_Character.prototype.set_rect = function(index) { this._auto_balloon_sprite.setFrame(32 * index, this._ry, 32, 32); if (displayAutoBalloon){ this._p_balloon_sprite.setFrame(32 * index, this._ry, 32, 32); } }
if (this._flag == 10){ this._flag = 0; if(this._bx == 2){ this._bx = 0; } else{ this._bx++; } } else{ this._flag++; } this.set_rect(this._bx); }
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |