diff --git a/Readme.md b/Readme.md index a28ab32..9153186 100644 --- a/Readme.md +++ b/Readme.md @@ -2,7 +2,7 @@ 异常生物见闻录 rpg 第二版 仓库 ## 使用者锁 - +不明枪兵 ## 使用流程 1. 在你进行你的内容更新之前,先执行一次拉取操作。正常情况下不会提示内容冲突,如果有,则VS code右上角点击文件,选择关闭文件夹。然后再把你本地那个同步文件夹删掉,重新从Github克隆。 diff --git a/js/plugins/LiuYue_GainItemTips.js b/js/plugins/LiuYue_GainItemTips.js new file mode 100644 index 0000000..64d0d4d --- /dev/null +++ b/js/plugins/LiuYue_GainItemTips.js @@ -0,0 +1,1638 @@ +/*: + * @plugindesc v1.02 LiuYue_GainItemTips 获取道具显示 + * @author 流逝的岁月 + * + * @help + * ============================================================================ + * 介绍 + * ============================================================================ * + * + * + * + * 这款插件提供了在游戏中获取或丢失新的道具会在地图界面显示 + * + * + * + *--------------------------------------------------------- + * + *使用条例:本插件完全免费,随意魔改 + * + *--------------------------------------------------------- + * + * + * + * 如果装有YEP_ItemCore YEP独立物品核心 这款插件时,请将本插件位于这款插件之下,已获取更好的兼容性 + * + * + * + *以下是一些插件用到的脚本函数 + *---------------------Script-------------------- + * + * Zzy.GIT.IsEnable(enable) //这会 开启/禁用 插件的功能 + * Zzy.GIT.ClearList() //清理所有的消息表 + * Zzy.GIT.SurplusCount() //获取未显示的剩余消息数量 + * + * + * + *以下是一些插件指令的信息 + *---------------------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.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 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 0 + * + * @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.02; +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.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//金币文本 + ]; + + +Zzy.GIT.ChangeEquipFlag = false;//改变装备标记 + + +Zzy.GIT.YEPItemCoreConstraints = false; //插件兼容-限制 +Zzy.GIT.YEPItemCoreConstraints2 = false; //插件兼容-限制 + + +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) +{ + this._zzyGITList.push(info); +} + + +Game_System.prototype.SetZzyGITPluginEnable = function(isEnable) +{ + this._zzyGITPluginEnable = isEnable; + +} + +Game_System.prototype.GetZzyGITPluginEnable = function() +{ + if(this._zzyGITPluginEnable === undefined) + { + this._zzyGITPluginEnable = Zzy.Param.GITIsPluginEnable; + } + + return this._zzyGITPluginEnable; +} + +//================================================================ +//Game_Interpreter +//================================================================ + +Zzy.GIT.Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand; +Game_Interpreter.prototype.pluginCommand = function(command, args)//插件命令 +{ + Zzy.GIT.Game_Interpreter_pluginCommand.call(this,command,args); + + if(command === 'ZzyGIT') + { + this.ZzyGITCommand(args); + } + + +} + +Game_Interpreter.prototype.ZzyGITCommand = function(args) +{ + var command = String(args[0]); + + switch(command) + { + case 'IsEnable': + var isEnable = eval(args[1]); + Zzy.GIT.IsEnable(isEnable); + break; + } +} + +//================================================================ +//DataManager +//================================================================ +Zzy.GIT.DataManager_isDatabaseLoaded = DataManager.isDatabaseLoaded; +DataManager.isDatabaseLoaded = function() +{ + if (!Zzy.GIT.DataManager_isDatabaseLoaded.call(this)) return false; + + this.ZzyGITLoadNoteCase1($dataItems);//道具 + this.ZzyGITLoadNoteCase1($dataWeapons);//武器 + this.ZzyGITLoadNoteCase1($dataArmors);//护甲 + + return true; +} + +DataManager.ZzyGITLoadNoteCase1 = function(objArr) +{ + for (var i = 1; i < objArr.length; i++) + { + var obj = objArr[i]; + var noteData = obj.note.split(/[\r\n]+/); + + obj.zzyGIT = {}; + + for(var j=0;j/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;//设置排列等级 + } + + } + } +} + +//======================================================================= +//Game_Party +//======================================================================= +//初始化时,如果有YEP装备核心将暂时关闭添加显示功能 +Zzy.GIT.Game_Party_setupStartingMembers = Game_Party.prototype.setupStartingMembers; +Game_Party.prototype.setupStartingMembers = function() +{ + if(Imported && Imported.YEP_ItemCore){Zzy.GIT.YEPItemCoreConstraints2 = true;} + Zzy.GIT.Game_Party_setupStartingMembers.call(this); + Zzy.GIT.YEPItemCoreConstraints2 = false; +}; + + + + +//======================================================================= +//Game_Actor +//======================================================================= +Zzy.GIT.Game_Actor_setup = Game_Actor.prototype.setup; +Game_Actor.prototype.setup = function(actorId) +{ + if(Imported && Imported.YEP_ItemCore){Zzy.GIT.YEPItemCoreConstraints = true;} + Zzy.GIT.Game_Actor_setup.call(this,actorId); + Zzy.GIT.YEPItemCoreConstraints = false; +}; + +Zzy.GIT.Game_Actor_changeEquip = Game_Actor.prototype.changeEquip; +Game_Actor.prototype.changeEquip = function(slotId, item) +{ + Zzy.GIT.ChangeEquipFlag = true; + Zzy.GIT.Game_Actor_changeEquip.call(this,slotId,item); + Zzy.GIT.ChangeEquipFlag = false; +}; + +Zzy.GIT.Game_Actor_forceChangeEquip = Game_Actor.prototype.forceChangeEquip; +Game_Actor.prototype.forceChangeEquip = function(slotId, item) +{ + Zzy.GIT.ChangeEquipFlag = true; + Zzy.GIT.Game_Actor_forceChangeEquip.call(this,slotId,item) + Zzy.GIT.ChangeEquipFlag = false; +}; + + + +//======================================================================= +//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() +{ + 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_Party +//======================================================================= +Zzy.GIT.Game_Party_gainItem = Game_Party.prototype.gainItem; +Game_Party.prototype.gainItem = function(item, amount, includeEquip) +{ + var result = Zzy.GIT.Game_Party_gainItem.call(this,item, amount, includeEquip); + + if(Zzy.GIT.IsCanVisible() && Zzy.GIT.IsCompatibleComp()) + { + if($gameSystem.GetZzyGITPluginEnable())//插件开启 + { + 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);//压入信息 + } + } + } + + return result; +}; + + + + +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())//插件开启 + { + 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);//压入信息 + } + + } + + +} + +//======================================================================= +//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.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.IsCompatibleComp = function()//其他插件的兼容限制完成 +{ + if(Zzy.GIT.YEPItemCoreConstraints)return false;//YEP独立物品核心 + if(Zzy.GIT.YEPItemCoreConstraints2)return false;//YEP独立物品核心 + + return true; +} + +Zzy.GIT.IsCanVisible = function() +{ + if(Zzy.GIT.ChangeEquipFlag)return false; + + return true; +} +