/*: * @plugindesc v1.04 LiuYue_GainItemTips 获取道具显示 * @author 流逝的岁月 * * @help * ============================================================================ * 介绍 * ============================================================================ * * * * * 这款插件提供了在游戏中获取或丢失新的道具会在地图界面显示 * * *--------------------------------------------------------- * *使用条例:本插件完全免费,随意魔改 * *--------------------------------------------------------- * * * * 如果装有YEP_ItemCore YEP独立物品核心 这款插件时,请将本插件位于这款插件之下,已获取更好的兼容性 * * * *以下是一些插件用到的脚本函数 *---------------------Script-------------------- * * Zzy.GIT.IsEnable(enable) //这会 开启/禁用 插件的功能 * Zzy.GIT.ClearList() //清理所有的消息表 * Zzy.GIT.SurplusCount() //获取未显示的剩余消息数量 * Zzy.GIT.GainPromptOfID(ID,type,amount) //这将会主动发送一条获取物品的消息,不过并不会实际获取物品 * -ID:替换为对应物品的ID值,如果是金币,则此参数可以输任意值 * -type:可选字符串item/weapon/armor/icon 分别代表物品/武器/防具/金币 * -amount:代表输入的数量 * * 例: Zzy.GIT.GainPromptOfID(3,'weapon',1) //将会显示一把ID为3的武器提示文本 * 例: Zzy.GIT.GainPromptOfID(0,'coin',1000) //将会显示获得1000金币的提示文本 * * *以下是一些插件指令的信息 *---------------------Plugin Command-------------------- * * ZzyGIT IsEnable x(true/false) //这会 开启/禁用 插件的功能 * * * *---------------------------------------------------------- * * *以下是一些插件用到的备注信息 * *---------------------Data Note-------------------- * 请将此备注信息写在 数据库 - 物品/武器/防具 下 * * //这会使得获得的道具具备颜色信息,x可替换为颜色代码 范围#000000 ~ #ffffff * * * 例: 获取这个道具时,其名称会显示为白色 * 获取这个道具时,其名称会显示为淡红色 * * * //这会使获取到的道具播放自定义的音效,优先级大于插件参数中的设置 * x1:填写audio/se 文件夹中的音效名称,不包含后缀名,必填参数 * x2:填写音量,范围0~100之间,这是一个选填参数,不填写时值为100 * x3:填写音调,范围0~100之间,这是一个选填参数,不填写时值为0 * x4:填写声道,范围0~100之间,这是一个选填参数,不填写时值为0 * * 例: 当显示获取这个道具时,优先播放Attack1音效,而不是插件参数中的声音配置 * * * //这会设置SE的优先级,代表如果同时显示多个特殊SE道具时,将会播放优先级最高的SE声音,x需要填写一个正整数,所有SE默认优先级为0 * * 例: 设置这个SE的优先级为3级,当同时显示的道具中优先级全部低于3时,将会播放本道具设置的SE声音 * * * //设置排列的优先级,代表再同时显示的道具信息界面中,优先级越高的道具信息将会越向上显示,x可以填写一个正负整数,默认优先级为0 * * * *---------------------------------------------------------- * * * * 我叫坂本:v1.04 添加文本宽度自适应功能 * 我叫坂本:v1.03 修改结构代码,减少冲突,修复一个字体过大导致图标文本重叠的bug * 我叫坂本:v1.02 修复单独插件测试报错,修复拆卸装备出现信息的逻辑问题,添加排序显示优先级 * 我叫坂本:v1.01 增加了与YEP_ItemCore物品核心的兼容问题,修复了图标重叠问题,添加了金币显示以及图标相关功能 * 我叫坂本:v1.00 完成插件功能 * * * *---------------------------------------------------------- * * * * @param ---插件--- * @default * * * * @param IsPluginEnable * @text 插件是否启用 * @parent ---插件--- * @type boolean * @on YES * @off NO * @desc 这会使获取道具出现窗口功能是否有效 * YES - true NO - false * @default true * * * * @param ---功能--- * @default * * @param IsAdaptionWidth * @text 提示自适应宽度 * @parent ---功能--- * @type boolean * @on YES * @off NO * @desc 是否让窗口宽度每次显示都会自适应匹配显示的文本长度,开启此功能后窗口宽度参数将会失效 * YES - true NO - false * @default false * * * @param IsArrangeCount * @text 是否合并数量 * @parent ---功能--- * @type boolean * @on YES * @off NO * @desc 在获取道具时,同类型未显示的道具数量将会被自动合并 * YES - true NO - false * @default false * * * * * * * * * * @param ---窗口--- * @default * * * @param BasePos * @text 窗口位置基准点 * @parent ---窗口--- * @type combo * @option center * @option left-top * @option top * @option right-top * @option left * @option right * @option left-bottom * @option bottom * @option right-bottom * @desc 窗口位置将会被固定在九个方向,center代表中心,left代表左,right代表右,top代表上,bottom代表下 * @default center * * * @param WindowOfx * @text 窗口偏移位置X * @parent ---窗口--- * @type text * @desc 窗口的偏移位置X * @default 0 * * @param WindowOfy * @text 窗口偏移位置Y * @parent ---窗口--- * @desc 窗口的偏移位置Y * @default 0 * * @param WindowW * @text 窗口宽度 * @parent ---窗口--- * @type text * @desc 窗口显示的宽度,这可以输入一个表达式,也可以是一个准确数值 * @default 440 * * @param LineNum * @text 窗口显示行数 * @parent ---窗口--- * @type number * @desc 窗口显示的行数,对应的是高度值,默认值为1 * @default 1 * * * @param WindowShowFrame * @text 消息显示时长 * @parent ---窗口--- * @type number * @desc 窗口弹出消息会显示的时长,单位为帧数 * @default 60 * * @param WindowOpacity * @text 窗口透明度 * @parent ---窗口--- * @type number * @min 0 * @max 255 * @desc 这是默认窗口的透明度,范围0~255,默认值为255 * @default 255 * * * @param WindowFontSize * @text 窗口字体大小 * @parent ---窗口--- * @type number * @min 1 * @desc 窗口弹出消息的文本大小,这必须是一个正整数,默认值是28 * @default 28 * * @param WindowOpenSpeed * @text 窗口打开速度 * @parent ---窗口--- * @type number * @min 1 * @desc 窗口从无到完全打开的速度,同时也决定了图标和文字出现的时间,这个值越大速度越快,默认值是32 * @default 32 * * @param WindowBkPic * @text 窗口背景图片 * @parent ---窗口--- * @type file * @dir img/pictures * @desc 窗口的背景图片,图片将在窗口之下,图片需存放在img/pictures/文件夹内 * @default * * @param BkOpFollowOpenSpeed * @text 图片透明度等同打开速度 * @parent ---窗口--- * @type boolean * @on YES * @off NO * @desc 这会让窗口的图片的透明度跟随窗口打开的速度一同变化 * YES - true NO - false * @default true * * * @param ---金币--- * @default * * * @param IsGoldShow * @text 是否显示获取金币 * @parent ---金币--- * @type boolean * @on YES * @off NO * @desc 这会让金币相关内容也添加到显示队列中,默认值为true * YES - true NO - false * @default true * * @param AddGFormat * @text 获取金币文本格式 * @parent ---金币--- * @type text * @desc 显示获取的文本 * @default 获得金币 * * @param SubGFormat * @text 失去金币文本格式 * @parent ---金币--- * @type text * @desc 显示失去的文本 * @default 失去金币 * * @param GTextColor * @text 金币颜色文本 * @parent ---金币--- * @type text * @desc 这是获取金币颜色的文本颜色 * @default #ffffff * * @param GIconID * @text 金币图标 * @parent ---金币--- * @type text * @desc 这是显示金币的图标ID值 * @default 313 * * @param GSERank * @text 金币SE优先级 * @parent ---金币--- * @type text * @desc 这会设置同屏出现的所有提示中,将播放优先级最高的道具音效,这可以是一个正整数 * @default 0 * * @param GLRank * @text 金币列表优先级 * @parent ---金币--- * @type text * @desc 这会设置同屏出现的所有提示中,将排列优先级最高的道具为最上方,这可以是一个正负整数 * @default 0 * * @param ---图标--- * @default * * @param IconScale * @text 图标比例 * @parent ---图标--- * @type text * @desc 这会设置出现的默认图标的比例大小,默认值为1将会跟随文字一般大小 * @default 1 * * @param IsIconFlash * @text 是否图标出现时闪烁 * @parent ---图标--- * @type boolean * @on YES * @off NO * @desc 图标出现后,将会进行闪白 * YES - true NO - false * @default true * * @param IconFlashFrame * @text 图标闪烁时长 * @parent ---图标--- * @type number * @min 1 * @desc 图标进入到闪白的状态持续的帧数 * @default 10 * * * * * @param ---文本--- * @default * * @param AddFormat * @text 获取文本格式 * @parent ---文本--- * @type text * @desc 显示获取的文本格式,%1会被替换为道具名称 * @default 获得 ["%1"] * * @param SubFormat * @text 失去文本格式 * @parent ---文本--- * @type text * @desc 显示失去的文本格式,%1会被替换为道具名称 * @default 失去 ["%1"] * * @param NumberFormat * @text 文本数量格式 * @parent ---文本--- * @type text * @desc 显示数量的文本格式,%1会被替换为道具数量 * @default x %1 * * @param ---音效--- * @default * * @param EarnSound * @text 获取道具名称 * @parent ---音效--- * @type file * @dir audio/se * @desc 执行获取道具时,会播放的获取道具,BGM应放在audio/bgm文件夹中,不填写会使用默认的播放音效 * @default Sound1 * * @param EarnVolume * @text 获取道具音量 * @parent ---音效--- * @type Number * @desc 音量大小,默认100 * @default 100 * @param EarnPitch * @text 获取道具声调 * @parent ---音效--- * @type Number * @desc 声调,默认100 * @default 100 * @param EarnBGSPan * @text 获取道具声道 * @parent ---音效--- * @type Number * @desc 声道,默认0 * @default 0 * * * @param GSound * @text 金币道具名称 * @parent ---音效--- * @type file * @dir audio/se * @desc 执行获取道具时,会播放的获取道具,BGM应放在audio/bgm文件夹中,不填写会使用默认的播放音效 * @default Coin * * @param GVolume * @text 金币道具音量 * @parent ---音效--- * @type Number * @desc 音量大小,默认100 * @default 100 * @param GPitch * @text 金币道具声调 * @parent ---音效--- * @type Number * @desc 声调,默认100 * @default 100 * @param GBGSPan * @text 金币道具声道 * @parent ---音效--- * @type Number * @desc 声道,默认0 * @default 0 * * * */ var LiuYue = LiuYue || {}; LiuYue.LiuYue_GainItemTips = true;//插件启动 var Zzy = Zzy || {}; Zzy.GIT = Zzy.GIT || {}; Zzy.GIT.version = 1.04; Zzy.Parameters = PluginManager.parameters('LiuYue_GainItemTips'); Zzy.Param = Zzy.Param || {}; Zzy.GIT.BasePosToID = function(str) { switch(str) { case 'left-top':return 1; case 'top':return 2; case 'right-top':return 3; case 'left':return 4; case 'center':return 5; case 'right':return 6; case 'left-bottom':return 7; case 'bottom':return 8; case 'right-bottom':return 9; } console.log('一个错误:来自LiuYue_GainItemTips(获取道具提示):检查输入窗口位置基准点参数是否正确'); return 5; } Zzy.Param.GITIsPluginEnable = eval(String(Zzy.Parameters['IsPluginEnable']));//插件开启状态 Zzy.Param.GITIsAdaptionWidth = eval(String(Zzy.Parameters['IsAdaptionWidth']));//自适应 Zzy.Param.GITIsArrangeCount = eval(String(Zzy.Parameters['IsArrangeCount']));//归并 Zzy.Param.GITBasePos = Zzy.GIT.BasePosToID(String(Zzy.Parameters['BasePos']));//窗口基准点 Zzy.Param.GITWindowOfx = Number(Zzy.Parameters['WindowOfx']);//位置偏移X Zzy.Param.GITWindowOfy = Number(Zzy.Parameters['WindowOfy']);//位置偏移Y Zzy.Param.GITWindowW = String(Zzy.Parameters['WindowW']);//强化窗口W Zzy.Param.GITLineNum = parseInt(Zzy.Parameters['LineNum']);//强化窗口H Zzy.Param.GITWindowShowFrame = parseInt(Zzy.Parameters['WindowShowFrame']);//消息显示时长 Zzy.Param.GITWindowFontSize = parseInt(Zzy.Parameters['WindowFontSize']);//窗口字体大小 Zzy.Param.GITWindowOpacity = parseInt(Zzy.Parameters['WindowOpacity']);//窗口透明度 Zzy.Param.GITWindowOpenSpeed = parseInt(Zzy.Parameters['WindowOpenSpeed']);//窗口速度 Zzy.Param.GITWindowBkPic = String(Zzy.Parameters['WindowBkPic']);//窗口图片 Zzy.Param.GITBkOpFollowOpenSpeed = eval(Zzy.Parameters['BkOpFollowOpenSpeed']);//透明度跟随打开速度 Zzy.Param.GITAddFormat = String(Zzy.Parameters['AddFormat']);//显示文本格式 Zzy.Param.GITSubFormat = String(Zzy.Parameters['SubFormat']);//显示文本格式 Zzy.Param.GITNumberFormat = String(Zzy.Parameters['NumberFormat']);//显示文本格式 Zzy.Param.GITIsGoldShow = eval(Zzy.Parameters['IsGoldShow']);//是否获取失去金币显示 Zzy.Param.GITAddGFormat = String(Zzy.Parameters['AddGFormat']);//获取金币文本格式 Zzy.Param.GITSubGFormat = String(Zzy.Parameters['SubGFormat']);//失去金币文本格式 Zzy.Param.GITGTextColor = String(Zzy.Parameters['GTextColor']); Zzy.Param.GITGIconID = parseInt(Zzy.Parameters['GIconID']); Zzy.Param.GITGSERank = parseInt(Zzy.Parameters['GSERank']); Zzy.Param.GITGLRank = parseInt(Zzy.Parameters['GLRank']); Zzy.Param.GITIconScale = Number(Zzy.Parameters['IconScale']);//图标大小 Zzy.Param.GITIsIconFlash = eval(Zzy.Parameters['IsIconFlash']); Zzy.Param.GITIconFlashFrame = parseInt(Zzy.Parameters['IconFlashFrame']); //--------------------------------------声音------------------------------------- Zzy.Param.GITMakeSE = function(seName,seVolume,sePitch,sePan) { if(!seName)return undefined; var se = { name:seName, volume:(seVolume ? seVolume : 100), pitch:(sePitch ? sePitch : 100), pan:(sePan ? sePan : 0) }; return se; } Zzy.Param.GITEarnSound = String(Zzy.Parameters['EarnSound']);//背景BGM名称 Zzy.Param.GITEarnVolume = parseInt(Zzy.Parameters['EarnVolume']);//背景BGM音量 Zzy.Param.GITEarnPitch = parseInt(Zzy.Parameters['EarnPitch']);//背景BGM声调 Zzy.Param.GITEarnBGSPan = parseInt(Zzy.Parameters['EarnPan']);//背景BGM声道 Zzy.Param.GITEarnSE = Zzy.Param.GITMakeSE(Zzy.Param.GITEarnSound,Zzy.Param.GITEarnVolume,Zzy.Param.GITEarnPitch,Zzy.Param.GITEarnBGSPan); Zzy.Param.GITGSound = String(Zzy.Parameters['GSound']);//金币BGM名称 Zzy.Param.GITGVolume = parseInt(Zzy.Parameters['GVolume']);//金币BGM音量 Zzy.Param.GITGPitch = parseInt(Zzy.Parameters['GPitch']);//金币BGM声调 Zzy.Param.GITGBGSPan = parseInt(Zzy.Parameters['GPan']);//金币BGM声道 Zzy.Param.GITGSE = Zzy.Param.GITMakeSE(Zzy.Param.GITGSound,Zzy.Param.GITGVolume,Zzy.Param.GITGPitch,Zzy.Param.GITGBGSPan); Zzy.Param.GITAllSE = []; Zzy.Param.GITAllSE = [undefined, Zzy.Param.GITEarnSE,//获取文本 Zzy.Param.GITGSE//金币文本 ]; var Imported = Imported || {}; //================================================================= //DataManager //================================================================= Zzy.GIT.DataManager_loadGame = DataManager.loadGame; DataManager.loadGame = function(savefileId) //旧存档兼容 { var result = Zzy.GIT.DataManager_loadGame.call(this,savefileId); this.ZzyGITInitData(); return result; } DataManager.ZzyGITInitData = function()//初始化参数 { if(!$gameSystem.GetIsZzyGITLoaded()) { //初始化 $gameSystem.ZzyGITInitData();//初始化数据 $gameSystem.SetIsZzyGITLoaded(true); } } //============================================================================= //Game_System //============================================================================= Zzy.GIT.Game_System_initialize = Game_System.prototype.initialize; Game_System.prototype.initialize = function() { Zzy.GIT.Game_System_initialize.call(this); this.ZzyGITInitData();//初始化数据 this._IsZzyGITLoaded = true;//是否载入完成 }; Game_System.prototype.GetIsZzyGITLoaded = function() { if(this._IsZzyGITLoaded === undefined) {this._IsZzyGITLoaded = false;} return this._IsZzyGITLoaded; } Game_System.prototype.SetIsZzyGITLoaded = function(enable) { this._IsZzyGITLoaded = enable; } Game_System.prototype.ZzyGITInitData = function()//清除链表 { this._zzyGITList = [];//显示列表 this._zzyGITIndex = 0;//显示下标 this._zzyGITPluginEnable = Zzy.Param.GITIsPluginEnable; } Game_System.prototype.ClearZzyGITList = function()//清除链表 { this._zzyGITList = [];//显示列表 this._zzyGITIndex = 0;//显示下标 } Game_System.prototype.ZzyGITSurplusCount = function() { if(!this._zzyGITList.length)return 0; var len = this._zzyGITList.length; return this._zzyGITIndex - len; } Game_System.prototype.PushZzyGITList = function(info) { //如果是开启归并功能,则压入到归并队列里 if(this.ZzyGITArrangeInfo(info))return;//自动归并 this._zzyGITList.push(info); } Game_System.prototype.ZzyGITArrangeInfo = function(info) { if(!Zzy.Param.GITIsArrangeCount)return false; var len = this._zzyGITList.length; if(len) { for(var i=this._zzyGITIndex;i/i)) { var color = String(RegExp.$1); obj.zzyGIT.textColor = color; } else if(lineStr.match(//i)) { var seStr = String(RegExp.$1); var seArr = seStr.split(' '); var name = String(seArr[0]); var volume = parseInt(seArr[1]); var pitch = parseInt(seArr[2]); var pan = parseInt(seArr[3]); var se = { name:name, volume:(volume ? volume : 100), pitch:(pitch ? pitch : 100), pan:(pan ? pan : 0) } obj.zzyGIT.se = se; } else if(lineStr.match(//i)) { var seRank = parseInt(RegExp.$1); obj.zzyGIT.seRank = seRank;//设置等级 } else if(lineStr.match(//i)) { var lRank = parseInt(RegExp.$1); obj.zzyGIT.lRank = lRank;//设置排列等级 } } } } //======================================================================= //Scene_Map //======================================================================= Zzy.GIT.Scene_Map_start = Scene_Map.prototype.start; Scene_Map.prototype.start = function() { Zzy.GIT.Scene_Map_start.call(this); this.CreateZzyGITTipsWindow(); }; Scene_Map.prototype.CreateZzyGITTipsWindow = function() { this._zzyGITWindow = new Window_ZzyGITTips(); this.addChild(this._zzyGITWindow); } //======================================================================= //Window_ZzyGITTips //======================================================================= function Window_ZzyGITTips() { this.initialize.apply(this, arguments); } Window_ZzyGITTips.prototype = Object.create(Window_Base.prototype); Window_ZzyGITTips.prototype.constructor = Window_ZzyGITTips; Window_ZzyGITTips.prototype.initialize = function() { var w = this.DefaultWidth(); var h = this.DefaultHeight(); Window_Base.prototype.initialize.call(this, 0, 0, w, h); this.iconSprArr = [];//图标池子 this.opacity = Zzy.Param.GITWindowOpacity; this.AutoInitPos(); this.InitData(); this.hide();//进行隐藏 this.openness = 0; this.CreaterBkSpr();//创造背景 this.opennessRate = 0;//比率 }; Window_ZzyGITTips.prototype.CreaterBkSpr = function() { var picName = Zzy.Param.GITWindowBkPic; if(picName)//存在背景图片 { this._zzyGITBackSpr = new Sprite_ZzyGITBkPic(this,picName);//添加背景 this.addChildToBack(this._zzyGITBackSpr); } } Window_ZzyGITTips.prototype.AutoInitPos = function() { var pos = this.SetWindowPos(); this.x = pos.x; this.y = pos.y; } Window_ZzyGITTips.prototype.InitData = function() { this.showFrame = Zzy.Param.GITWindowShowFrame; this.cShowFrame = 0;//计数 this._list = [];//列表 this.isCanGet = true; } Window_ZzyGITTips.prototype.ResetInfo = function() { this.showFrame = Zzy.Param.GITWindowShowFrame; this.cShowFrame = 0;//计数 this._list = [];//列表 this.isCanGet = true; } Window_ZzyGITTips.prototype.update = function() { Window_Base.prototype.update.call(this); if(!this.isWindowReady())return;//不满足判断 this.updateGetList();//获取队列 this.updateShowFrame();//更新显示帧数 this.updateOpennessRate(); } Window_ZzyGITTips.prototype.updateOpennessRate = function() { this.opennessRate = Math.max(1,Math.min(0,this.openness/255)); } Window_ZzyGITTips.prototype.isWindowReady = function() { if(this.isClosing())return false; if(this.isOpening())return false; return true; } Window_ZzyGITTips.prototype.updateGetList = function() { if(!$gameSystem._zzyGITList.length)return false; if(this.isCanGet) { this.isCanGet = false; this.cShowFrame = 0; this._list = this.GetNextList();//获取下一层队列 if(this._list === undefined)//不存在下层对象 { $gameSystem.ClearZzyGITList();//清理存储 } else { this.DisVisibleAllSpr();//隐藏图标 this.Refresh();//刷新显示 this.open();//执行开启 this.AutoPlaySE(); } } } Window_ZzyGITTips.prototype.AutoPlaySE = function() { var len = this._list.length; var mRankIndex = -1; for(var i=len-1;i>=0;i--)//播放最后一个压入且优先级最高的特殊音效 { var seRank = this.GetSERankInfo(this._list[i]); if(mRankIndex<0){mRankIndex = i;} else { var prSeRank = this.GetSERankInfo(this._list[mRankIndex]); if(seRank > prSeRank) { mRankIndex = i;//目前SE的下标 } } } var se = undefined; if(mRankIndex>=0) { se = this.GetSEInfo(this._list[mRankIndex]); } if(!se) { for(var i=len-1;i>=0;i--)//播放最后一个压入且优先级最高的特殊音效 { se = this.GetSEInfo(this._list[i]); if(se){break;} } } if(se){AudioManager.playSe(se);return;}//播放选中的SE //播放默认音效 Zzy.GIT.PlaySE(1); } Window_ZzyGITTips.prototype.GetListRankInfo = function(info)//获取排列等级 { if(info.type === 0) { var item = info.item; if(item.zzyGIT) { return item.zzyGIT.lRank ? item.zzyGIT.lRank : 0; } } else if(info.type === 1) { return Zzy.Param.GITGLRank; } return 0; } Window_ZzyGITTips.prototype.GetSERankInfo = function(info)//获取SE优先级 { if(info.type === 0) { var item = info.item; if(item.zzyGIT) { return item.zzyGIT.seRank ? item.zzyGIT.seRank : 0; } } else if(info.type === 1) { return Zzy.Param.GITGSERank; } return 0; } Window_ZzyGITTips.prototype.GetSEInfo = function(info) { if(info.type === 0) { var item = info.item; if(item.zzyGIT) { return item.zzyGIT.se ? item.zzyGIT.se : undefined; } } else if(info.type === 1) { return Zzy.Param.GITAllSE[2]; } return undefined; } Window_ZzyGITTips.prototype.updateShowFrame = function() { if(this.cShowFrame < this.showFrame) {this.cShowFrame++;} else { this.isCanGet = true; this.cShowFrame = 0; if(this._list === undefined && this.visible) { this.close();//关闭 } } } Window_ZzyGITTips.prototype.GetNextList = function() { if($gameSystem._zzyGITIndex >= $gameSystem._zzyGITList.length)return undefined; var list = []; var maxLen = $gameSystem._zzyGITList.length; var maxNum = Zzy.Param.GITLineNum;//显示最大数量 var curIndex = $gameSystem._zzyGITIndex; var limitIndex = $gameSystem._zzyGITIndex + maxNum;//限制级坐标 limitIndex = limitIndex > maxLen ? maxLen : limitIndex; for(var i=curIndex;i/.exec(textState.text.slice(textState.index)); if (arr) { textState.index += arr[0].length; return arr[1]; } else { return ''; } }; Window_ZzyGITTips.prototype.showNameText = function(info)//制作文本 { var formatStr = undefined; if(this.IsItemInfo(info))//代表道具 { //显示格式 if(info.isGain){formatStr = Zzy.Param.GITAddFormat;} else{formatStr = Zzy.Param.GITSubFormat;} var nameStr = info.item.name; nameStr = nameStr + '\\C[0]'; if(info.item.zzyGIT && info.item.zzyGIT.textColor)//存在特殊颜色 { var colorCode = info.item.zzyGIT.textColor; nameStr = '\\ZTC<' + colorCode + '>' + nameStr; } var str = formatStr.format(nameStr); return str; } else if(this.IsGoldInfo(info))//代表金币 { //显示格式 if(info.isGain){formatStr = Zzy.Param.GITAddGFormat;} else{formatStr = Zzy.Param.GITSubGFormat;} var str = '\\ZTC<' + Zzy.Param.GITGTextColor + '>' + formatStr; return str; } return ''; } Window_ZzyGITTips.prototype.IsItemInfo = function(info) { return info.type === 0; } Window_ZzyGITTips.prototype.IsGoldInfo = function(info) { return info.type === 1; } Window_ZzyGITTips.prototype.showNumberText = function(info) { var formatStr = Zzy.Param.GITNumberFormat; var num = info.num; var str = formatStr.format(num); return str; } Window_ZzyGITTips.prototype.SetWindowPos = function() { var pos = {}; pos.x = 0; pos.y = 0; var ax = Graphics.boxWidth; var ay = Graphics.boxHeight; var cx = Graphics.boxWidth/2; var cy = Graphics.boxHeight/2; //计算位置 1~9 var line = Math.floor((Zzy.Param.GITBasePos-1)/3); var list = (Zzy.Param.GITBasePos-1) % 3; //计算每个位置的数值 pos.x = list * cx - (list)*this.width/2; pos.y = line * cy - (line)*this.height/2; pos.x += Zzy.Param.GITWindowOfx; pos.y += Zzy.Param.GITWindowOfy return pos; } Window_ZzyGITTips.prototype.DefaultWidth = function() { if(Zzy.Param.GITIsAdaptionWidth)return Graphics.width;//因为调整成自适应,要求画布宽度够长才可以 return eval(Zzy.Param.GITWindowW); } Window_ZzyGITTips.prototype.DefaultHeight = function() { return this.fittingHeight(Zzy.Param.GITLineNum); } Window_ZzyGITTips.prototype.updateOpen = function() { if (this._opening) { this.openness += Zzy.Param.GITWindowOpenSpeed; if (this.isOpen()) { this._opening = false; } } }; Window_ZzyGITTips.prototype.updateClose = function() { if (this._closing) { this.openness -= Zzy.Param.GITWindowOpenSpeed; if (this.isClosed()) { this._closing = false; this.visible = false; } } }; Window_ZzyGITTips.prototype.open = function() { if (!this.isOpen()) { this._opening = true; } this._closing = false; this.visible = true; }; Window_ZzyGITTips.prototype.close = function() { if (!this.isClosed()) { this._closing = true; } this._opening = false; }; Window_ZzyGITTips.prototype.isOpening = function() { return this._opening; }; Window_ZzyGITTips.prototype.isClosing = function() { return this._closing; }; Window_ZzyGITTips.prototype.setup = function() { this.open();//启动 } Window_ZzyGITTips.prototype.standardFontSize = function() //改变字体大小 { return Zzy.Param.GITWindowFontSize; }; Window_ZzyGITTips.prototype.lineHeight = function() { return this.standardFontSize()+8; }; //======================================================================= //Game_Interpreter //======================================================================= Zzy.GIT.Game_Interpreter_command126 = Game_Interpreter.prototype.command126; Game_Interpreter.prototype.command126 = function() { var result = Zzy.GIT.Game_Interpreter_command126.call(this); var value = this.operateValue(this._params[1], this._params[2], this._params[3]); if($gameSystem.GetZzyGITPluginEnable()) { Zzy.GIT.GainPrompt($dataItems[this._params[0]], value); } return result; }; Zzy.GIT.Game_Interpreter_command127 = Game_Interpreter.prototype.command127; Game_Interpreter.prototype.command127 = function() { var result = Zzy.GIT.Game_Interpreter_command127.call(this); var value = this.operateValue(this._params[1], this._params[2], this._params[3]); if($gameSystem.GetZzyGITPluginEnable()) { Zzy.GIT.GainPrompt($dataWeapons[this._params[0]], value); } return result; }; Zzy.GIT.Game_Interpreter_command128 = Game_Interpreter.prototype.command128; Game_Interpreter.prototype.command128 = function() { var result = Zzy.GIT.Game_Interpreter_command128.call(this); var value = this.operateValue(this._params[1], this._params[2], this._params[3]); if($gameSystem.GetZzyGITPluginEnable()) { Zzy.GIT.GainPrompt($dataArmors[this._params[0]], value); } return result; }; //======================================================================= //Game_Party //======================================================================= Zzy.GIT.Game_Party_gainGold = Game_Party.prototype.gainGold; Game_Party.prototype.gainGold = function(amount) { Zzy.GIT.Game_Party_gainGold.call(this,amount); if($gameSystem.GetZzyGITPluginEnable()) { Zzy.GIT.GainGoldPrompt(amount); } } //======================================================================= //Sprite_ZzyGITIcon //======================================================================= function Sprite_ZzyGITIcon() { this.initialize.apply(this, arguments); } Sprite_ZzyGITIcon.prototype = Object.create(Sprite.prototype); Sprite_ZzyGITIcon.prototype.constructor = Sprite_ZzyGITIcon; Sprite_ZzyGITIcon.iconWidth = 32; Sprite_ZzyGITIcon.iconHeight = 32; Sprite_ZzyGITIcon.StandFontSize = 28;//标准字体大小 Sprite_ZzyGITIcon.prototype.initialize = function(pointer) { Sprite.prototype.initialize.call(this); this.myParent = pointer; this.free = false;//自由属性 this.iconId = 0; this.rx = 0; this.ry = 0; this.visible = false;//防止闪烁 this.cFlashFrame = 0;//闪烁 this.eFlashFrame = 0;//闪烁结束长度 this.isFlashing = false;//闪烁中 this.NewEmptyBitmap(); }; Sprite_ZzyGITIcon.prototype.NewEmptyBitmap = function() { var nw = Sprite_ZzyGITIcon.iconWidth; var nh = Sprite_ZzyGITIcon.iconHeight; this.bitmap = new Bitmap(nw,nh); } Sprite_ZzyGITIcon.prototype.ResetInfo = function(ID,x,y,info)//重新设置 { this.iconId = ID; this.bltMyIcon();//绘制图标 this.ResetPos(x,y); this.ResetScale(info.fontSize);//缩放倍率 this.startFlash();//进行闪烁 } Sprite_ZzyGITIcon.prototype.stopFlash = function()//停止闪烁 { this.cFlashFrame = 0; this.eFlashFrame = 0; this.isFlashing = false; this.setColorTone([0,0,0,0]); } Sprite_ZzyGITIcon.prototype.startFlash = function()//开始 { if(Zzy.Param.GITIsIconFlash)//可以闪烁 { this.cFlashFrame = 0; this.eFlashFrame = Zzy.Param.GITIconFlashFrame; this.isFlashing = true; } } Sprite_ZzyGITIcon.prototype.ResetPos = function(x,y)//更新位置 { this.rx = x; this.ry = y; this.x = this.RealX(); this.y = this.RealY(); } Sprite_ZzyGITIcon.prototype.ResetScale = function(fSize) { var ds = fSize - Sprite_ZzyGITIcon.StandFontSize; var isw = Sprite_ZzyGITIcon.iconWidth + ds; var ish = Sprite_ZzyGITIcon.iconHeight + ds; this.scale.x = isw * Zzy.Param.GITIconScale / Sprite_ZzyGITIcon.iconWidth; this.scale.y = ish * Zzy.Param.GITIconScale / Sprite_ZzyGITIcon.iconHeight; } Sprite_ZzyGITIcon.prototype.GetRealSize = function() { return this.scale.x * Sprite_ZzyGITIcon.iconWidth;; } Sprite_ZzyGITIcon.prototype.bltMyIcon = function() { this.bitmap.clear();//清理 var bp = ImageManager.loadSystem('IconSet'); var pw = Sprite_ZzyGITIcon.iconWidth; var ph = Sprite_ZzyGITIcon.iconHeight; var sx = this.iconId % 16 * pw; var sy = Math.floor(this.iconId / 16) * ph; this.bitmap.blt(bp, sx, sy, pw, ph, 0, 0); } Sprite_ZzyGITIcon.prototype.standardPadding = function() //标准距离 { return this.myParent.standardPadding(); }; Sprite_ZzyGITIcon.prototype.RealX = function()//应该出现的位置X { var posX = this.rx + this.standardPadding(); return posX; } Sprite_ZzyGITIcon.prototype.RealY = function()//应该出现的位置Y { var posY = this.ry + this.standardPadding(); return posY; } Sprite_ZzyGITIcon.prototype.update = function() { Sprite.prototype.update.call(this); //判断自由属性 if(this.free){this.visible = false;return;} this.updateFlash();//更新闪烁 this.updateOpenVisible(); } Sprite_ZzyGITIcon.prototype.updateFlash = function() { if(!this.visible)return;//不显示则不刷新 if(this.isFlashing) { if(this.cFlashFrame > this.eFlashFrame) { this.stopFlash(); } else { this.cFlashFrame++; } var rate = this.cFlashFrame / this.eFlashFrame;//比率 var vtone = Math.round(255 - 255*rate); this.setColorTone([vtone,vtone,vtone,0]); } } Sprite_ZzyGITIcon.prototype.updateOpenVisible = function()//更新显示情况 { this.visible = !!this.myParent.isOpen();//完全打开时显示 } //======================================================================= //Sprite_ZzyGITBkPic //======================================================================= function Sprite_ZzyGITBkPic() { this.initialize.apply(this, arguments); } Sprite_ZzyGITBkPic.prototype = Object.create(Sprite.prototype); Sprite_ZzyGITBkPic.prototype.constructor = Sprite_ZzyGITBkPic; Sprite_ZzyGITBkPic.prototype.initialize = function(pointer,name) { Sprite.prototype.initialize.call(this); this.myParent = pointer; this.picName = name; this.picBitmap = undefined;//缓存 this.isNeedAutoScale = true; this.CreaterBitmap();//创建背景图片 }; Sprite_ZzyGITBkPic.prototype.CreaterBitmap = function() { this.picBitmap = ImageManager.loadPicture(this.picName); } Sprite_ZzyGITBkPic.prototype.update = function() { Sprite.prototype.update.call(this); this.updateOpacity(); this.AutoSetScale(); } Sprite_ZzyGITBkPic.prototype.updateOpacity = function()//更新透明度 { if(Zzy.Param.GITBkOpFollowOpenSpeed) { this.opacity = this.myParent._openness; } } Sprite_ZzyGITBkPic.prototype.AutoSetScale = function() { if(!this.isNeedAutoScale)return;//不用刷新长款比例 if(this.IsReady()) { this.bitmap = this.picBitmap; var bw = this.bitmap.width; var bh = this.bitmap.height; var pw = this.myParent.width; var ph = this.myParent.height; this.scale.x = pw / bw; this.scale.y = ph / bh; this.isNeedAutoScale = false; } } Sprite_ZzyGITBkPic.prototype.IsReady = function() { if(this.picBitmap && this.picBitmap.width && this.picBitmap.height) {return true;} return false; } //-----------------------------Zzy.GIT.Function---------------------------- Zzy.GIT.PlaySE = function(soundID)//播放声音 { var se = Zzy.Param.GITAllSE[soundID]; if(se && se.name) { AudioManager.playSe(se); } } Zzy.GIT.ClearList = function()//清理所有的消息表 { $gameSystem.ClearZzyGITList(); } Zzy.GIT.SurplusCount = function()//获取未显示的剩余消息 { return $gameSystem.ZzyGITSurplusCount();//剩余消息数量 } Zzy.GIT.IsEnable = function(isEnable) { $gameSystem.SetZzyGITPluginEnable(isEnable); } Zzy.GIT.GainPrompt = function(item, amount) { if(item && amount) { var info = {}; info.isGain = amount >= 0 ? true : false; info.item = item; info.num = Math.abs(amount); info.type = 0;//代表道具 $gameSystem.PushZzyGITList(info);//压入信息 } } Zzy.GIT.GainGoldPrompt = function(amount) { if(Zzy.Param.GITIsGoldShow && amount) { var info = {}; info.isGain = amount >= 0 ? true : false; info.item = undefined; info.num = Math.abs(amount); info.type = 1;//代表金币 $gameSystem.PushZzyGITList(info);//压入信息 } } Zzy.GIT.GainPromptOfID = function(ID,type,amount) { var item = undefined; switch(type) { case 'item': item = $dataItems[ID]; Zzy.GIT.GainPrompt(item,amount); break; case 'weapon': item = $dataWeapons[ID]; Zzy.GIT.GainPrompt(item,amount); break; case 'armor': item = $dataArmors[ID]; Zzy.GIT.GainPrompt(item,amount); break; case 'coin': Zzy.GIT.GainGoldPrompt(amount); break; } }