设为首页收藏本站同能贴吧 切换语言 繁体中文
开启辅助访问 切换到窄版
扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 62|回复: 0

[转载发布] ItemBook

[复制链接]
累计送礼:
0 个
累计收礼:
1 个
  • TA的每日心情
    开心
    2026-7-12 04:10
  • 签到天数: 209 天

    连续签到: 2 天

    [LV.7]常住居民III

    5778

    主题

    864

    回帖

    3万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    7
    卡币
    25563
    OK点
    16
    推广点
    0
    同能卷
    50
    积分
    32235

    灌水之王

    发表于 昨天 10:10 | 显示全部楼层 |阅读模式
    ItemBook V1.4a
    by Skotty TV

    Introduction
    ItemBook is a Plugin to show the items you have collected through your adventures! (and thier stats, abilities, skills, etc.. that they have attached to them.

    Features


    Previous Updates

     * - Decide if items will get an entry automaticly when they collected!

     * - Decide how many items appear in one row!

     * - Decide if you want to use the Gold Icon from Yanflys Core Engine!

     * - Decide if you want to half the Index height.

     * - Decide if you want to show Key Items.

     * - Use switches to enable different information!

     *   (Price, Equip/Type, Stats)

     *

     * SkottyTV v1.4a ->

     *

     * - Advanced Visual upgrades!

     * - Added traits and effects window!

     * - Use switches to enable different windows and information!

     *   (Price, Equip/Type, Effects, Parameters)

     * - Added Max Character Length for Skills and States text.(see bottom of help)

     * - Bug fixes!



    Screenshots

    Spoiler





    Download

    Dropbox V1.4a

    How to Use

    Plug and play.

    Script



    //=============================================================================

    // ItemBook.js

    //=============================================================================

     

    /*:

     * @plugindesc v1.4a by SkottyTV // Displays detailed statuses of items.

     * @author Yoji Ojima & SkottyTV (thx to DragonPC)

     *

     * @param ----- Functions -----

     *

     * @param Unknown Data

     * @desc The index name for an unknown item.

     * @default ??????

     *

     * @param AutoFill

     * @desc Decide if items will automaticly show up in the book

     * when collected. (true or false)

     * @default true

     *

     * @param Gold Icon

     * @desc Decide if you want to use the Gold Icon from

     * Yanfly Core Engine. (true or false)

     * @default true

     *

     * @param Items in Row

     * @desc Decide how many items you want to show up in one row.

     * (default 1)

     * @default 1

     *

     * @param Show Key Items

     * @desc Decide if you want to show the Key Items.

     * (default true)

     * @default true

     *

     * @param Half Index Height

     * @desc Decide if you want to half the Index Window height.

     * (default - true) (false will get overwritten by the damage window!)

     * @default true

     *

     * @param Max Effects Count

     * @desc Decide how many skills will be shown.

     * (default - 7) (7 is recommended for small resolutions!)

     * @default 7

     *

     * @param Max Skill Characters

     * @desc Maximun amount of Characters displayed before "...".

     * @default 17

     *

     * @param ----- Switches -----

     *

     * @param Show Price Switch

     * @desc Choose the switch ID that shows the price.

     * (default 0)

     * @default 0

     *

     * @param Show Effects Switch

     * @desc Choose the switch ID that shows the effects.

     * (default 0)

     * @default 0

     *

     * @param Show Equip/Type Switch

     * @desc Choose the switch ID that shows the equip/type.

     * (default 0)

     * @default 0

     *

     * @param Show Parameters Switch

     * @desc Choose the switch ID that shows the parameters.

     * (default 0)

     * @default 0

     *

     * @param ----- Visuals -----

     *

     * @param Line Opacity

     * @desc Choose the opacity for the lines.

     * (default - 120)

     * @default 120

     *

     * @param Effects Values Color

     * @desc Choose the color for the effects values.

     * (default - 3)

     * @default 3

     *

     * @param ----- Text -----

     *

     * @param Effects Text

     * @desc The text for "Effects".

     * @default Effects

     * 

     * @param Parameter Text

     * @desc The text for "Parameter".

     * @default Parameter

     * 

     * @param HP Regeneration Text

     * @desc The text for "HP Regen".

     * @default HP Regen:

     *

     * @param MP Regeneration Text

     * @desc The text for "MP Regen".

     * @default MP Regen:

     *

     * @param TP Gain Text

     * @desc The text for "TP Gain".

     * @default TP Gain:

     *

     * @param Add State Text

     * @desc The text for "Add State".

     * @default Add State:

     *

     * @param Remove State Text

     * @desc The text for "Remove State".

     * @default Remove State:

     *

     * @param Element Text

     * @desc The text for "Element".

     * @default Element:

     *

     * @param Element Rate Text

     * @desc The text for "Element Rate".

     * @default Element Rate:

     *

     * @param Attack Speed Text

     * @desc The text for "Attack Speed".

     * @default Attack Speed:

     *

     * @param Learn Skill Text

     * @desc The text for "Learn Skill".

     * @default Learn Skill:

     *

     * @param Equip Text

     * @desc The text for "Equip".

     * @default Equip:

     *

     * @param Type Text

     * @desc The text for "Type".

     * @default Type:

     *

     * @param Item Type Text

     * @desc The text for "Item Type".

     * @default Item Type:

     *

     * @param Success Rate Text

     * @desc The text for "Success Rate".

     * @default Success Rate:

     *

     * @help

     *

     * ============================================================================

     * SkottyTV v1.1 ->

     *     

     * - Decide if items will get an entry automaticly when they collected!

     * - Decide how many items appear in one row!

     * - Decide if you want to use the Gold Icon from Yanflys Core Engine!

     * - Advanced Visual upgrades!

     *

     * SkottyTV v1.2 ->

     *

     * - Visual upgrades!

     *

     * SkottyTV v1.3 ->

     *

     * - Decide if you want to half the Index height.

     * - Decide if you want to show Key Items.

     * - Advanced Visual upgrades!

     * - Use switches to enable different information!

     *   (Price, Equip/Type, Stats)

     *

     * SkottyTV v1.4a ->

     *

     * - Advanced Visual upgrades!

     * - Added traits and effects window!

     * - Use switches to enable different windows and informations!

     *   (Price, Equip/Type, Effects, Parameters)

     * - Added Max Character Length for Skills and States text.(see bottom of help)

     * - Bug fixes!

     * 

     * ============================================================================

     *

     * Plugin Command:

     *   ItemBook open             # Open the item book screen

     *   ItemBook add item 1       # Add item #1 to the item book

     *   ItemBook add weapon 2     # Add weapon #2 to the item book

     *   ItemBook add armor 3      # Add armor #3 to the item book

     *   ItemBook remove item 4    # Remove item #4 from the item book

     *   ItemBook remove weapon 5  # Remove weapon #5 from the item book

     *   ItemBook remove armor 6   # Remove armor #6 from the item book

     *   ItemBook complete         # Complete the item book

     *   ItemBook clear            # Clear the item book

     *

     * Item (Weapon, Armor) Note:

     *   <book:no>                # This item does not appear in the item book

     *   

     * ============================================================================

     * 

     *   How to get Max Character Length for Skills and States text.

     *   (to prevent Clipping, customizable by your for your skills and states.)

     *   (keep in mind your longest skills and stats, count characters AND spaces

     *   to get the number then subtract 3(for the dots) and you get your max

     *   displayable characters)

     *   

     */

     

    (function() {

     

        var parameters = PluginManager.parameters('ItemBook');

        var unknownData = String(parameters['Unknown Data'] || '??????');

        var autoFill = String(parameters['AutoFill'] || 'true');

        var goldIcon = String(parameters['Gold Icon'] || 'true');

        var ShowKeyItems = String(parameters['Show Key Items'] || 'true');

        var IndexHeight = String(parameters['Half Index Height'] || 'true');

        var listRow = Number(parameters['Items in Row'] || 1);

        var maxEffects = Number(parameters['Max Effects Count'] || 7);

        

        var ShowPrice = Number(parameters['Show Price Switch'] || 0);

        var ShowEffects = Number(parameters['Show Effects Switch'] || 0);

        var ShowTypes = Number(parameters['Show Equip/Type Switch'] || 0);

        var ShowParams = Number(parameters['Show Parameters Switch'] || 0);

     

        var lineOpac = Number(parameters['Line Opacity'] || 120);

        var posColor = Number(parameters['Effects Values Color'] || 3);

        

        var Effects = String(parameters['Effects Text'] || 'Effects');

        var parText = String(parameters['Parameter Text'] || 'Parameter');

        var hpReg = String(parameters['HP Regeneration Text'] || 'HP Regen:');

        var mpReg = String(parameters['MP Regeneration Text'] || 'MP Regen:');

        var tpReg = String(parameters['TP Gain Text'] || 'TP Gain:');

        var addState = String(parameters['Add State Text'] || 'Add State:');

        var remState = String(parameters['Remove State Text'] || 'Remove State:');

        var elementText = String(parameters['Element Text'] || 'Element:');

        var elementRate = String(parameters['Element Rate Text'] || 'Element Rate:');

        var attackSpeed = String(parameters['Attack Speed Text'] || 'Attack Speed:');

        var learnSkill = String(parameters['Learn Skill Text'] || 'Learn Skill:');

        var max = Number(parameters['Max Skill Characters'] || 17);

        

        var equipText = String(parameters['Equip Text'] || 'Equip:');

        var typeText = String(parameters['Type Text'] || 'Type:');

        var itemTypeText = String(parameters['Item Type Text'] || 'Item Type:');

        var sucRateText = String(parameters['Success Rate Text'] || 'Success Rate:');

        

            var arr = [0,1,2,3,4,5,6,7,8,9,10,hpReg,mpReg,tpReg,

                       14,15,16,17,18,19,20,addState,remState,23,24,25,26,27,28,29,

                       30,31,32,33,34,35,36,37,38,39,40,41,42,learnSkill,44,45,46,47,48,49,50];

            var arr2 = [0,1,2,3,4,5,6,7,8,9,10,elementRate,12,13,

                       14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,

                       30,elementText,32,attackSpeed,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50];

            var arrl = [hpReg,mpReg,tpReg,addState,remState,learnSkill,elementRate,elementText,sucRateText,itemTypeText,attackSpeed]

            

            var lgth = 0;

            var longest

            var distance = 10;

     

            for(var i=0; i < arrl.length; i++){

                if(arrl.length > lgth){

                    var lgth = arrl.length;

                    var longest = arrl;

                }      

            }

        

        var _Game_Interpreter_pluginCommand =

                Game_Interpreter.prototype.pluginCommand;

        Game_Interpreter.prototype.pluginCommand = function(command, args) {

            _Game_Interpreter_pluginCommand.call(this, command, args);

            if (command === 'ItemBook') {

                switch (args[0]) {

                case 'open':

                    SceneManager.push(Scene_ItemBook);

                    break;

                case 'add':

                    $gameSystem.addToItemBook(args[1], Number(args[2]));

                    break;

                case 'remove':

                    $gameSystem.removeFromItemBook(args[1], Number(args[2]));

                    break;

                case 'complete':

                    $gameSystem.completeItemBook();

                    break;

                case 'clear':

                    $gameSystem.clearItemBook();

                    break;

                }

            }

        };

     

        Game_System.prototype.addToItemBook = function(type, dataId) {

            if (!this._ItemBookFlags) {

                this.clearItemBook();

            }

            var typeIndex = this.itemBookTypeToIndex(type);

            if (typeIndex >= 0) {

                this._ItemBookFlags[typeIndex][dataId] = true;

            }

        };

     

        Game_System.prototype.removeFromItemBook = function(type, dataId) {

            if (this._ItemBookFlags) {

                var typeIndex = this.itemBookTypeToIndex(type);

                if (typeIndex >= 0) {

                    this._ItemBookFlags[typeIndex][dataId] = false;

                }

            }

        };

     

        Game_System.prototype.itemBookTypeToIndex = function(type) {

            switch (type) {

            case 'item':

                return 0;

            case 'weapon':

                return 1;

            case 'armor':

                return 2;

            default:

                return -1;

            }

        };

     

        Game_System.prototype.completeItemBook = function() {

            var i;

            this.clearItemBook();

            for (i = 1; i < $dataItems.length; i++) {

                this._ItemBookFlags[0] = true;

            }

            for (i = 1; i < $dataWeapons.length; i++) {

                this._ItemBookFlags[1] = true;

            }

            for (i = 1; i < $dataArmors.length; i++) {

                this._ItemBookFlags[2] = true;

            }

        };

     

        Game_System.prototype.clearItemBook = function() {

            this._ItemBookFlags = [[], [], []];

        };

     

        Game_System.prototype.isInItemBook = function(item) {

            if (this._ItemBookFlags && item) {

                var typeIndex = -1;

                if (DataManager.isItem(item)) {

                    typeIndex = 0;

                } else if (DataManager.isWeapon(item)) {

                    typeIndex = 1;

                } else if (DataManager.isArmor(item)) {

                    typeIndex = 2;

                }

                if (typeIndex >= 0) {

                    return !!this._ItemBookFlags[typeIndex][item.id];

                } else {

                    return false;

                }

            } else {

                return false;

            }

        };

     

        var _Game_Party_gainItem = Game_Party.prototype.gainItem;

        Game_Party.prototype.gainItem = function(item, amount, includeEquip) {

            _Game_Party_gainItem.call(this, item, amount, includeEquip);

            if (item && amount > 0) {

                var type;

                if (DataManager.isItem(item)) {

                    type = 'item';

                } else if (DataManager.isWeapon(item)) {

                    type = 'weapon';

                } else if (DataManager.isArmor(item)) {

                    type = 'armor';

                }

               

                if (autoFill === 'true') {

                    $gameSystem.addToItemBook(type, item.id);

                }

            }

        };

     

        function Scene_ItemBook() {

            this.initialize.apply(this, arguments);

        }

     

        Scene_ItemBook.prototype = Object.create(Scene_MenuBase.prototype);

        Scene_ItemBook.prototype.constructor = Scene_ItemBook;

     

        Scene_ItemBook.prototype.initialize = function() {

            Scene_MenuBase.prototype.initialize.call(this);

        };

     

        Scene_ItemBook.prototype.create = function() {

           

            var w3 = Graphics.boxWidth / 3;

            var ww = (Graphics.boxWidth / 3)*2 + 2;

            var wh = Graphics.boxHeight / 10;

           

            Scene_MenuBase.prototype.create.call(this);

            this._indexWindow = new Window_ItemBookIndex(0, 0);

            this._indexWindow.setHandler('cancel', this.popScene.bind(this));

     

            this._statusWindow = new Window_ItemBookStatus(w3, 0, ww, wh*3);

            this._statusWindow2 = new Window_ItemBookStatus2(w3, wh*3, ww, wh*5.5);

            

            if ($gameSwitches.value(ShowEffects) === true || ShowEffects === 0) {

                this._statusWindow3 = new Window_ItemBookStatus3(w3, wh*8.5, ww, wh*1.5); }

            else {

                this._statusWindow3 = new Window_ItemBookStatus3(w3, wh*3, ww, wh*1.5); }

                

            this._statusWindow4 = new Window_ItemBookStatus4(0, wh*5, Graphics.boxWidth/3, wh*5);

            this.addWindow(this._indexWindow);

            this.addWindow(this._statusWindow);

            

            if ($gameSwitches.value(ShowEffects) === true || ShowEffects === 0) {

                this.addWindow(this._statusWindow2); }

                

            if ($gameSwitches.value(ShowTypes) === true || ShowTypes === 0) {

                this.addWindow(this._statusWindow3); }

                

            if ($gameSwitches.value(ShowParams) === true || ShowParams === 0) {    

            this.addWindow(this._statusWindow4); }

            

            this._indexWindow.setStatusWindow(this._statusWindow);

            this._indexWindow.setStatusWindow2(this._statusWindow2);

            this._indexWindow.setStatusWindow3(this._statusWindow3);

            this._indexWindow.setStatusWindow4(this._statusWindow4);

        };

     

        function Window_ItemBookIndex() {

            this.initialize.apply(this, arguments);

        }

     

        Window_ItemBookIndex.prototype = Object.create(Window_Selectable.prototype);

        Window_ItemBookIndex.prototype.constructor = Window_ItemBookIndex;

     

        Window_ItemBookIndex.lastTopRow = 0;

        Window_ItemBookIndex.lastIndex  = 0;

     

        Window_ItemBookIndex.prototype.initialize = function(x, y) {

            var width = Graphics.boxWidth / 3;

            if ($gameSwitches.value(ShowParams) === true || ShowParams === 0 || IndexHeight === "true") { 

                var height = Graphics.boxHeight/2;

            }

            else{

                var height = Graphics.boxHeight;

            }

            Window_Selectable.prototype.initialize.call(this, x, y, width, height);

            this.refresh();

            this.setTopRow(Window_ItemBookIndex.lastTopRow);

            this.select(Window_ItemBookIndex.lastIndex);

            this.activate();

        };

     

        Window_ItemBookIndex.prototype.maxCols = function() {

            return listRow;

        };

     

        Window_ItemBookIndex.prototype.maxItems = function() {

            return this._list ? this._list.length : 0;

        };

     

        Window_ItemBookIndex.prototype.setStatusWindow = function(statusWindow) {

            this._statusWindow = statusWindow;

            this.updateStatus();

        };

        Window_ItemBookIndex.prototype.setStatusWindow2 = function(statusWindow2) {

            this._statusWindow2 = statusWindow2;

            this.updateStatus();

        };

        Window_ItemBookIndex.prototype.setStatusWindow3 = function(statusWindow3) {

            this._statusWindow3 = statusWindow3;

            this.updateStatus();

        };

        Window_ItemBookIndex.prototype.setStatusWindow4 = function(statusWindow4) {

            this._statusWindow4 = statusWindow4;

            this.updateStatus();

        };

     

        Window_ItemBookIndex.prototype.update = function() {

            Window_Selectable.prototype.update.call(this);

            this.updateStatus();

        };

     

        Window_ItemBookIndex.prototype.updateStatus = function() {

            if (this._statusWindow) {

                var item = this._list[this.index()];

                this._statusWindow.setItem(item);

            }

            if (this._statusWindow2) {

                var item = this._list[this.index()];

                this._statusWindow2.setItem(item);

            }

            if (this._statusWindow3) {

                var item = this._list[this.index()];

                this._statusWindow3.setItem(item);

            }

            if (this._statusWindow4) {

                var item = this._list[this.index()];

                this._statusWindow4.setItem(item);

            }

        };

     

        Window_ItemBookIndex.prototype.refresh = function() {

            var i, item;

            this._list = [];

            for (i = 1; i < Math.min(2000, $dataItems.length); i++) {

                item = $dataItems;

                if (item && item.name && item.itypeId === 1 && item.meta.book !== 'no') {

                    this._list.push(item);

                }

            }

            if (ShowKeyItems === 'true') {                

            for (i = 1; i < Math.min(2000, $dataItems.length); i++) {

                item = $dataItems;

                if (item && item.name && item.itypeId === 2 && item.meta.book !== 'no') {

                    this._list.push(item);

                }

            }

            }

            for (i = 1; i < Math.min(2000, $dataWeapons.length); i++) {

                item = $dataWeapons;

                if (item && item.name && item.meta.book !== 'no') {

                    this._list.push(item);

                }

            }

            for (i = 1; i < Math.min(2000, $dataArmors.length); i++) {

                item = $dataArmors;

                if (item && item.name && item.meta.book !== 'no') {

                    this._list.push(item);

                }

            }

            this.createContents();

            this.drawAllItems();

        };

     

        Window_ItemBookIndex.prototype.drawItem = function(index) {

            var item = this._list[index];

            var rect = this.itemRect(index);

            var width = rect.width - this.textPadding();

            if ($gameSystem.isInItemBook(item)) {

                this.drawItemName(item, rect.x, rect.y, width);

            } else {

                var iw = Window_Base._iconWidth + 4;

                this.drawText(unknownData, rect.x + iw, rect.y, width - iw);

            }

        };

     

        Window_ItemBookIndex.prototype.processCancel = function() {

            Window_Selectable.prototype.processCancel.call(this);

            Window_ItemBookIndex.lastTopRow = this.topRow();

            Window_ItemBookIndex.lastIndex = this.index();

        };

     

        function Window_ItemBookStatus() {

            this.initialize.apply(this, arguments);

        }

        function Window_ItemBookStatus2() {

            this.initialize.apply(this, arguments);

        }

        function Window_ItemBookStatus3() {

            this.initialize.apply(this, arguments);

        }

        function Window_ItemBookStatus4() {

            this.initialize.apply(this, arguments);

        }

     

        Window_ItemBookStatus.prototype = Object.create(Window_Base.prototype);

        Window_ItemBookStatus.prototype.constructor = Window_ItemBookStatus;

       

        Window_ItemBookStatus2.prototype = Object.create(Window_Base.prototype);

        Window_ItemBookStatus2.prototype.constructor = Window_ItemBookStatus2;

       

        Window_ItemBookStatus3.prototype = Object.create(Window_Base.prototype);

        Window_ItemBookStatus3.prototype.constructor = Window_ItemBookStatus3;

     

        Window_ItemBookStatus4.prototype = Object.create(Window_Base.prototype);

        Window_ItemBookStatus4.prototype.constructor = Window_ItemBookStatus4;

     

        Window_ItemBookStatus.prototype.initialize = function(x, y, width, height) {

            Window_Base.prototype.initialize.call(this, x, y, width, height);

        };

     

        Window_ItemBookStatus.prototype.setItem = function(item) {

            if (this._item !== item) {

                this._item = item;

                this.refresh();

            }

        };

        Window_ItemBookStatus2.prototype.setItem = function(item) {

            if (this._item !== item) {

                this._item = item;

                this.refresh();

            }

        };

        Window_ItemBookStatus3.prototype.setItem = function(item) {

            if (this._item !== item) {

                this._item = item;

                this.refresh();

            }

        };

        Window_ItemBookStatus4.prototype.setItem = function(item) {

            if (this._item !== item) {

                this._item = item;

                this.refresh();

            }

        };

     

        Window_ItemBookStatus.prototype.refresh = function() {

            var item = this._item;

            var x = 0;

            var y = 0;

            var lineHeight = this.lineHeight();

     

            this.contents.clear();

     

            if (!item || !$gameSystem.isInItemBook(item)) {

                return;

            }

           

            this.drawItemName(item, x-1, y);

            

            this.contents.paintOpacity = lineOpac;

            this.contents.fillRect(x, 40, this.contents.width, 2, this.normalColor());

            this.contents.paintOpacity = 255;

            

            this.drawTextEx(item.description, x, (lineHeight)+10);

            

            if ($gameSwitches.value(ShowPrice) === true || ShowPrice === 0) {

                var price = item.price > 0 ? item.price : '-';

           

                if (goldIcon === 'true') {     

                    this.drawText(price, this.contents.width - 42 - this.textWidth(price), this.contents.height - lineHeight);

                    this.drawIcon(Yanfly.Icon.Gold, this.contents.width - 32, this.contents.height - lineHeight);

                } else {

                    this.drawText(price, this.contents.width - this.textWidth(price) - this.textWidth(TextManager.currencyUnit) - 10, this.contents.height - lineHeight);

                    this.changeTextColor(this.systemColor());

                    this.drawText(TextManager.currencyUnit, this.contents.width - this.textWidth(TextManager.currencyUnit), this.contents.height - lineHeight);

                    this.resetTextColor();

                }

            }   

     

        };

     

        Window_ItemBookStatus2.prototype.refresh = function() {

            var item = this._item;

            var x = 0;

            var y = 0;

            var lineHeight = this.lineHeight();

     

            this.contents.clear();

     

            if (!item || !$gameSystem.isInItemBook(item)) {

                return;

            }

                

            this.drawText(Effects, this.contents.width/2 - this.textWidth(Effects)/2, y);

            y += lineHeight + 6;

            

            this.contents.paintOpacity = lineOpac;

            this.contents.fillRect(x, lineHeight, this.contents.width, 2, this.normalColor());

            this.contents.paintOpacity = 255;   

            

            var x1 = x + distance + this.textWidth(longest);

                

            if (DataManager.isWeapon(item) || DataManager.isArmor(item)) {

                

                for (var j = 0; j < item.traits.length && j < maxEffects; j++) {

                

    //---------------------------------------------------------- Is -> Element / Rate ---------------------------------------------  

                    var it = item.traits[j];

                        if (it.code === 11 || it.code === 31) {

                            

                            this.changeTextColor(this.systemColor());

                            this.drawText(arr2[it.code], x, y);

                            this.resetTextColor();

                            

                            if (it.code === 31) {

                            var x2 = x1;

                            }else{

                            var x2 = x1 + 56;

                            this.changeTextColor(this.textColor(posColor));

                            this.drawText(Math.round(it.value*100) + "%", x1, y);

                            }

                            this.resetTextColor();

                            this.drawText($dataSystem.elements[it.dataId] + " ", x2, y);

     

                         y += lineHeight; 

                        }

    //---------------------------------------------------------- Is -> Attack Speed --------------------------------------------- 

                        if (it.code === 33) {

                            

                            this.changeTextColor(this.systemColor());

                            this.drawText(arr2[it.code], x, y);

                            this.resetTextColor();

                            

                            var x2 = x1 + 56;

                            this.changeTextColor(this.textColor(posColor));

                            this.drawText(Math.round(it.value), x1, y);

                            this.resetTextColor();

     

                         y += lineHeight; 

                        }

    //---------------------------------------------------------- Is -> Learn Skill --------------------------------------------- 

                        if (it.code === 43) {

                            

                            var Icon = $dataSkills[it.dataId].iconIndex;

                            var Name = $dataSkills[it.dataId].name;

                            

                            this.changeTextColor(this.systemColor());

                            this.drawText(arr[it.code], x, y);

                            this.resetTextColor();

                            

                            this.drawIcon(Icon, x1, y);

                            this.drawText(Name, x1+40, y);    

                         y += lineHeight;   

                        }

    //---------------------------------------------------------------------------------------------------------------------------------

                }

                

            }

            else{

                

    //---------------------------------------------------------- ITEM EFFECTS Create ----------------------------------------------------       

            

            for (var j = 0; j < item.effects.length && j < maxEffects; j++) {

                

    //---------------------------------------------------------- Is -> HP / MP / TP - Regen ---------------------------------------------  

                    var ie = item.effects[j];

                        if (ie.code === 11 || ie.code === 12 || ie.code === 13) {

                            var x2 = x1 + this.textWidth("+" + Math.round(ie.value1*100) + "% ");

                            var x3 = x2 + this.textWidth("- ");

                            

                            this.changeTextColor(this.systemColor());

                            this.drawText(arr[ie.code ], x, y);

                            this.resetTextColor();

                            

                            if (ie.value1 > 0 && ie.value2 > 0) {

                                this.changeTextColor(this.textColor(posColor));

                                this.drawText("+" + Math.round(ie.value1*100) + "%",x1, y);

                                this.resetTextColor();

                                

                                this.changeTextColor(this.systemColor());

                                this.drawText(",", x2, y);

                                this.resetTextColor();

                                

                                this.changeTextColor(this.textColor(posColor));

                                this.drawText("+" + Math.round(ie.value2), x3, y);

                                this.resetTextColor();

                            }

                            else if (ie.value1 > 0) {

                                this.changeTextColor(this.textColor(posColor));

                                if (ie.code === 13) {

                                    this.drawText("+" + Math.round(ie.value1), x1, y);

                                }

                                else {

                                    this.drawText("+" + Math.round(ie.value1*100) + "%", x1, y);

                                }

                                this.resetTextColor();

                            }

                            else if (ie.value2 > 0) {

                                this.changeTextColor(this.textColor(posColor));

                                this.drawText("+" + Math.round(ie.value2), x1, y);

                                this.resetTextColor();

                            }

                         y += lineHeight; 

                        }

    //----------------------------------------------------------------------------------------------------------------------------------                       

             

    //---------------------------------------------------------- Is -> Add/Remove State ------------------------------------------------                    

                        if (ie.code === 21 ||ie.code === 22) {

                            

                            var Icon = $dataStates[ie.dataId].iconIndex;

                            var Name = $dataStates[ie.dataId].name;

                            

                            this.changeTextColor(this.systemColor());

                            this.drawText(arr[ie.code], x, y);

                            this.resetTextColor();

                            

                            this.drawText(Math.round(ie.value1*100) + "% ", x1, y, 60, "right"); 

                            this.drawIcon(Icon, x1+56, y);

                                if (Name.length >= max) {

                                var newLength = name.length - (Name.length - max) - 4

                                this.drawText(Name.slice(0,newLength) + "...", x1+96, y)

                            }

                            else {

                            this.drawText(Name, x1+96, y);}

                         y += lineHeight;   

                        }

    //---------------------------------------------------------------------------------------------------------------------------------

     

    //---------------------------------------------------------- Is -> Learn Skill ----------------------------------------------------                   

                        if (ie.code === 43) {

                            

                            var Icon = $dataSkills[ie.dataId].iconIndex;

                            var Name = $dataSkills[ie.dataId].name;

     

                            this.changeTextColor(this.systemColor());

                            this.drawText(arr[ie.code], x, y);

                            this.resetTextColor();

                            

                            this.drawIcon(Icon, x1, y);

                            if (Name.length >= max) {

                                var newLength = name.length - (Name.length - max)

                                this.drawText(Name.slice(0,newLength) + "...", x1+40, y)

                            }

                            else {

                            this.drawText(Name, x1+40, y); }   

                         y += lineHeight;   

                        }

    //---------------------------------------------------------------------------------------------------------------------------------

                } 

                

            }

        };

      

        Window_ItemBookStatus3.prototype.refresh = function() {

            var item = this._item;

            var x = 0;

            var y = -5;

            var lineHeight = this.lineHeight();

     

            this.contents.clear();

     

            if (!item || !$gameSystem.isInItemBook(item)) {

                return;

            }

            

                if (DataManager.isWeapon(item) || DataManager.isArmor(item)) {

                

                    var etype = $dataSystem.equipTypes[item.etypeId];

                    var type;

                

                    if (DataManager.isWeapon(item)) {

                        type = $dataSystem.weaponTypes[item.wtypeId];

                    } else {

                        type = $dataSystem.armorTypes[item.atypeId];

                    }

                

                    this.changeTextColor(this.systemColor());

                    this.drawText(equipText, x, y);

                    this.drawText(typeText, x, y+lineHeight-5);

                    this.resetTextColor();

                    this.drawText(etype, x + this.textWidth(longest) + distance, y);

                    this.drawText(type, x + this.textWidth(longest) + distance, y+lineHeight-5);

     

                }

                else {

                

                    this.changeTextColor(this.systemColor());

                    this.drawText(itemTypeText, x, y);

                    this.drawText(sucRateText, x, y+lineHeight-5);

                    this.resetTextColor();

                

                    if (item.itypeId === 1) {

                        this.drawText(TextManager.item, x + this.textWidth(longest) + distance, y);

                    }

                    else{

                        this.drawText(TextManager.keyItem, x + this.textWidth(longest) + distance, y);

                    }

                    this.drawText(item.successRate + "%", x + this.textWidth(longest) + distance, y+lineHeight-5);

                } 

        };

        

        Window_ItemBookStatus4.prototype.refresh = function() {

            var item = this._item;

            var lineHeight = this.lineHeight();

            var x = 0;

            var y = lineHeight-8;

     

            this.contents.clear();

     

            if (!item || !$gameSystem.isInItemBook(item)) {

                return;

            }

            

            if (DataManager.isWeapon(item) || DataManager.isArmor(item)) {

                

                this.drawText(parText, this.contents.width/2-this.textWidth(parText)/2, -8);

                

                this.contents.paintOpacity = lineOpac;

                this.contents.fillRect(x, 25, this.contents.width, 2, this.normalColor());

                this.contents.paintOpacity = 255;

                

                for (var i = 0; i < 8; i++) {

                    this.changeTextColor(this.systemColor());

                    this.drawText(TextManager.param(i), x, y);

                    this.resetTextColor();

                    if (item.params === 0) {

                        this.drawText("-", x + 170, y, 60, 'right');

                    } else{

                        this.drawText(item.params, x + 170, y, 60, 'right');

                    }

                    y += lineHeight-5;

                }

            }

            

        };

     

    })();




    Credit and Thanks
    SkottyTV

    DragonPC

    Author's Notes
    Enjoy!

    This Plugin can be used for Commercial and non-commercial games provided due credit. (SkottyTV / DragonPC) + Yoji Ojima


    本贴来自国际rpgmaker官方论坛作者:dragonpc处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/itembook.50449/

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    简体中文
    繁體中文
    English(英语)
    日本語(日语)
    Deutsch(德语)
    Русский язык(俄语)
    بالعربية(阿拉伯语)
    Türkçe(土耳其语)
    Português(葡萄牙语)
    ภาษาไทย(泰国语)
    한어(朝鲜语/韩语)
    Français(法语)
    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2026-7-26 03:51 , Processed in 0.083828 second(s), 58 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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