The RPG Maker Resource Kit

RMRK RPG Maker Creation => MV => MV Scripts Database => Topic started by: yuyu! on September 13, 2016, 11:46:36 PM

Title: [MV] Change Items By Name
Post by: yuyu! on September 13, 2016, 11:46:36 PM
Change Items By Name
Version: 1.0
Author: yuyu!
Date: September 13, 2016

Version History



Description


If there's one thing I really can't stand about the RPG Maker engines, it's the way IDs are handled for items, weapons, armor...and just about everything, for that matter. I can't tell you how many times I want to go back and tweak the order of my items - which means adjusting every time I've tried to add or remove that item in my events.

This plugin will allow you to add or remove items (items, weapons, armor) by name. That means you can change the order of the items as you please! Huzzah! ^_^

Note: You will have to update your plugin calls if you change the item's name, though.

Instructions

PLUGIN COMMAND
Code: [Select]
YUYU_ITEM add/remove type qty name inc


COMMAND LEGEND
    (1) Add/remove = "add" / "remove" (or "a" / "r")
    (2) Type = "item" / "weapon" / "armor" (or "i", "w", "a")
    (3) Qty = The # amount to add or remove (ex: 3)
    (4) Name = The item's name (ex: "Potion")
        *Note: Use "_" in place of spaces in the name. Ex: "Rusty_Sword"
        *Note: Name IS case sensitive!
    (5) Inc = "include" (or "inc"), to include equipped items
        *Note: Only use this when removing weapons or armor.
        *Note: That means you can leave this blank. :)

EXAMPLES
   YUYU_ITEM add item 10 Magic_Water
      *Will add 10 of "Magic Water" from the items category.
   YUYU_ITEM r a 2 Shield
      *Will remove 2 of "Shield" from the armor category.
   YUYU_ITEM remove weapon 1 Bronze_Sword inc
      *Will remove 1 "Bronze Sword" from weapons (including equipped)
 
ADDITIONAL NOTES
   I don't recommend using this plugin for items that have the same name in your database. If you have multiple items with the same name, the one with the LARGEST id will be added / removed.
      Ex: If item ID 1 and 15 are named "Potion", the plugin will choose #15.

Plugin


Code: [Select]
/*
#=============================================================================
# Change Items By Name
# Yuyu_ChangeItemsByName.js
# By yuyu!
# Version 1.00
#=============================================================================
/*:
 * @plugindesc Allows adding / removing items by name and type.
 * @author Yuyu
 * @version 1.0
 *
 * @help
 *
 * == PLUGIN COMMAND ==
 *
 *  YUYU_ITEM add/remove type qty name inc
 *
 *  COMMAND LEGEND:
 *   (1) Add/remove = "add" / "remove" (or "a" / "r")
 *   (2) Type = "item" / "weapon" / "armor" (or "i", "w", "a")
 *   (3) Qty = The # amount to add or remove (ex: 3)
 *   (4) Name = The item's name (ex: "Potion")
 *       *Note: Use "_" in place of spaces in the name. Ex: "Rusty_Sword"
 *       *Note: Name IS case sensitive!
 *   (5) Inc = "include" (or "inc"), to include equipped items
 *       *Note: Only use this when removing weapons or armor.
 *       *Note: That means you can leave this blank. :)
 *
 * == EXAMPLES ==
 *
 *  YUYU_ITEM add item 10 Magic_Water
 *     *Will add 10 of "Magic Water" from the items category.
 *  YUYU_ITEM r a 2 Shield
 *     *Will remove 2 of "Shield" from the armor category.
 *  YUYU_ITEM remove weapon 1 Bronze_Sword inc
 *     *Will remove 1 "Bronze Sword" from weapons (including equipped)
 *
 * == ADDITIONAL NOTES ==
 *
 *  I don't recommend using this plugin for items that have the same name in
 *  your database. If you have multiple items with the same name, the one with
 *  the LARGEST id will be added / removed.
 *     Ex: If item ID 1 and 15 are named "Potion", the plugin will choose #15.
 *
 * == TERMS OF USE ==
 *
 *  Free for non-commercial and commercial use (credit would be appreciated!).
 *
*/
//#=============================================================================

    //  ----------------------------
    //  PLUGIN COMMANDS CHECK
    //  ----------------------------

    var yuyu_ChangeItemByName_Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
    Game_Interpreter.prototype.pluginCommand = function(command, args) {
        yuyu_ChangeItemByName_Game_Interpreter_pluginCommand.call(this, command, args);

        if (command.toLowerCase() === 'yuyu_item') {

            // Set Variables
            var command = args[0];
            var type = args[1];
            var qty = parseInt(args[2]);
            var name = args[3];
            var inc = args[4];

            this.yuyuItemMain(command, type, qty, name, inc);

        }

    };

    //  ----------------------------
    //  MAIN METHOD
    //  ----------------------------

    Game_Interpreter.prototype.yuyuItemMain = function(command, type, qty, name, inc) {

        // add/remove type qty name inc

        var newName = this.yuyuItemChangeSpaces(name);

    // If Item
    if (type.toLowerCase() == 'item' || type.toLowerCase() == 'i') {

            var id = this.yuyuItemGetItemId(newName);
            this.yuyuItemChangeItem(command, id, qty);

        }

        // If Weapon
        if (type.toLowerCase() == 'weapon' || type.toLowerCase() == 'w') {

            var id = this.yuyuItemGetWeaponId(newName);
            this.yuyuItemChangeWeapon(command, id, qty, inc);

        }

        // If Armor
        if (type.toLowerCase() == 'armor' || type.toLowerCase() == 'a') {

            var id = this.yuyuItemGetArmorId(newName);
            this.yuyuItemChangeArmor(command, id, qty, inc);

        }
       
    };

    //  ----------------------------
    //  CHANGE SPACES
    //  ----------------------------
    // Replaces underscores in the item's name with spaces.

    Game_Interpreter.prototype.yuyuItemChangeSpaces = function(name) {

        if (name.contains("_"))
            return name.replace(/_/g , " ");
        else
            return name;

    };

    //  ----------------------------
    //  GET ITEM ID
    //  ----------------------------

    Game_Interpreter.prototype.yuyuItemGetItemId = function(name) {

        // Get item ID from name (checks all items for a name match)
        for (var i = 0; i < $dataItems.length; i++) {
            if ( $dataItems[i] != null ) {
                if ( $dataItems[i].name == name )
                    return $dataItems[i].id;
            }
        }

    };

    //  ----------------------------
    //  GET WEAPON ID
    //  ----------------------------

    Game_Interpreter.prototype.yuyuItemGetWeaponId = function(name) {

        // Get weapon ID from name (checks all weapons for a name match)
        for (var i = 0; i < $dataWeapons.length; i++) {
            if ( $dataWeapons[i] != null ) {
                if ( $dataWeapons[i].name == name )
                    return $dataWeapons[i].id;
            }
        }

    };


    //  ----------------------------
    //  GET ARMOR ID
    //  ----------------------------

    Game_Interpreter.prototype.yuyuItemGetArmorId = function(name) {

        // Get armor ID from name (checks all armors for a name match)
        for (var i = 0; i < $dataArmors.length; i++) {
            if ( $dataArmors[i] != null ) {
                if ( $dataArmors[i].name == name )
                    return $dataArmors[i].id;
            }
        }

    };

    //  ----------------------------
    //  CHANGE ITEM
    //  ----------------------------

    Game_Interpreter.prototype.yuyuItemChangeItem = function(command, id, qty) {

        // Add item
        if (command.toLowerCase() == "add" || command.toLowerCase() == "a")
            $gameParty.gainItem($dataItems[id], qty);

        // Remove item
        if (command.toLowerCase() == "remove" || command.toLowerCase() == "r")
            $gameParty.gainItem($dataItems[id], -qty);

    };

    //  ----------------------------
    //  CHANGE WEAPON
    //  ----------------------------

    Game_Interpreter.prototype.yuyuItemChangeWeapon = function(command, id, qty, inc) {

        // Check for including equipment.
        if (inc != undefined) {
            if (inc.toLowerCase() == "include" || inc.toLowerCase() == "inc")
                var incE = true;
            else
                var incE = false;
        }

        // Add weapon
        if (command.toLowerCase() == "add" || command.toLowerCase() == "a")
            $gameParty.gainItem($dataWeapons[id], qty);

        // Remove weapon
        if (command.toLowerCase() == "remove" || command.toLowerCase() == "r")
            $gameParty.gainItem($dataWeapons[id], -qty, incE);

    };

    //  ----------------------------
    //  CHANGE ARMOR
    //  ----------------------------

    Game_Interpreter.prototype.yuyuItemChangeArmor = function(command, id, qty, inc) {

        // Check for including equipment.
        if (inc != undefined) {
            if (inc.toLowerCase() == "include" || inc.toLowerCase() == "inc")
                var incE = true;
            else
                var incE = false;
        }

        // Add armor
        if (command.toLowerCase() == "add" || command.toLowerCase() == "a")
            $gameParty.gainItem($dataArmors[id], qty);

        // Remove armor
        if (command.toLowerCase() == "remove" || command.toLowerCase() == "r")
            $gameParty.gainItem($dataArmors[id], -qty, incE);

    };


Thanks



Terms of Use


Free for commercial and non-commercial use. Credit always appreciated! ^o^