#============================================================================== # ■ VX-RGSS2-5 用語辞典-自動更新Plugin [Ver.2.0.1] by Claimh #------------------------------------------------------------------------------ #用語辞典の内容を自動更新するスクリプトです。 #以下のような場合に自動更新が実行されます。 #・アクターが加わったとき #・エネミーを倒したとき #・アイテム、武器、防具入手時 #・スキル習得時 #・クラスチェンジ時 #------------------------------------------------------------------------------ # [設定]の用語設定で設定した用語IDと各IDが一致するようにする必要があります。 # ・アクター : アクターID = 用語ID # ・エネミー : エネミーID = 用語ID # ・アイテム : アイテムID = 用語ID # ・武器 : 武器ID = 用語ID # ・防具 : 防具ID = 用語ID # ・スキル : スキルID = 用語ID # ・クラス : クラスID = 用語ID # ・場所 : 下記 #------------------------------------------------------------------------------ #【場所情報表示】 #・必須:ワールドマップ # セクション配置は次の順でないと動作しません。 # ワールドマップ -> 自動更新Plugin #・ワールドマップのタウンorリージョン情報の表示を有効化した際に # 用語辞典の表示も有効化します。 #・リージョン情報の用語IDは リージョンID * 1000 です # 用語ID = DictAutoCreate.conv_region_id(リージョンID) #・タウン情報の用語IDは リージョンID * 1000 + タウンID + 1 です # 用語ID = DictAutoCreate.conv_town_id(リージョンID, タウンID) #============================================================================== module DictAutoUpdate include DictDef A_UP = [] class AutoUpdate #------------------------------------------------------------------------- # ●自動更新設定 # flag : true=自動更新有効 / false=自動更新無効 # category_id : 項目番号(カテゴリID) #------------------------------------------------------------------------- def initialize(flag, category_id) @flag = flag; @category_id = category_id end end #---------------------------------------------------------------------------- # カスタマイズSTART #---------------------------------------------------------------------------- =begin 【設定方法】 A_UP[ATC_XXX] = AutoUpdate.new(自動更新の有無, 項目番号) =end # アクター A_UP[ATC_ACTOR] = AutoUpdate.new(false, 0) # エネミー A_UP[ATC_ENEMY] = AutoUpdate.new(false, 1) # エネミー(アナライズ用) A_UP[ATC_ENEMY_A] = AutoUpdate.new(false, 1) # アイテム A_UP[ATC_ITEM] = AutoUpdate.new(false, 3) # 武器 A_UP[ATC_WEAPON] = AutoUpdate.new(false, 4) # 防具(ALL) A_UP[ATC_ARMOR_ALL] = AutoUpdate.new(false, 5) # 防具(盾のみ) A_UP[ATC_ARMOR_S] = AutoUpdate.new(false, 5) # 防具(頭防具のみ) A_UP[ATC_ARMOR_H] = AutoUpdate.new(false, 5) # 防具(身体防具のみ) A_UP[ATC_ARMOR_C] = AutoUpdate.new(false, 5) # 防具(装飾品のみ) A_UP[ATC_ARMOR_A] = AutoUpdate.new(false, 5) # スキル A_UP[ATC_SKILL] = AutoUpdate.new(false, 2) # クラス A_UP[ATC_CLASS] = AutoUpdate.new(false, 6) # 場所(必須:WorldMap) A_UP[ATC_TOWN] = AutoUpdate.new(false, 7) #---------------------------------------------------------------------------- # カスタマイズEND #---------------------------------------------------------------------------- #-------------------------------------------------------------------------- # ● 自動更新クラス [本体] #-------------------------------------------------------------------------- class AutoUpdate attr_reader :flag attr_reader :category_id def permit(word_id, show=true) return unless @flag $game_system.dictionary[@category_id][word_id].show_flg = show end def change_info(word_id, info) return unless @flag $game_system.dictionary[@category_id][word_id].info = info end def add_info(word_id, info) return unless @flag $game_system.dictionary[@category_id][word_id].info += info end end #-------------------------------------------------------------------------- # ● 用語辞典の登録更新 [アクター] #-------------------------------------------------------------------------- def self.[](type) return A_UP[type] end #-------------------------------------------------------------------------- # ● 用語辞典の登録更新 [アクター] #-------------------------------------------------------------------------- def self.dict_permit_actor(actor) A_UP[ATC_ACTOR].permit(actor.id) A_UP[ATC_WEAPON].permit(actor.weapon_id) if actor.weapon_id != 0 A_UP[ATC_ARMOR_ALL].permit(actor.armor1_id) if actor.armor1_id != 0 A_UP[ATC_ARMOR_ALL].permit(actor.armor2_id) if actor.armor2_id != 0 A_UP[ATC_ARMOR_ALL].permit(actor.armor3_id) if actor.armor3_id != 0 A_UP[ATC_ARMOR_ALL].permit(actor.armor4_id) if actor.armor4_id != 0 A_UP[ATC_ARMOR_S].permit(actor.armor1_id) if actor.armor1_id != 0 A_UP[ATC_ARMOR_H].permit(actor.armor2_id) if actor.armor2_id != 0 A_UP[ATC_ARMOR_C].permit(actor.armor3_id) if actor.armor3_id != 0 A_UP[ATC_ARMOR_A].permit(actor.armor4_id) if actor.armor4_id != 0 if A_UP[ATC_SKILL].flag for skill_id in actor.skills A_UP[ATC_SKILL].permit(skill_id) end end A_UP[ATC_CLASS].permit(actor.class_id) end #-------------------------------------------------------------------------- # ● 用語辞典の登録更新 [アイテム/武器/防具] #-------------------------------------------------------------------------- def self.dict_permit_item(item) return if item.id == 0 case item when RPG::Item; A_UP[ATC_ITEM].permit(item.id) when RPG::Weapon; A_UP[ATC_WEAPON].permit(item.id) when RPG::Armor A_UP[ATC_ARMOR_ALL].permit(item.id) case item.kind when 0; A_UP[ATC_ARMOR_S].permit(item.id) when 1; A_UP[ATC_ARMOR_H].permit(item.id) when 2; A_UP[ATC_ARMOR_C].permit(item.id) when 3; A_UP[ATC_ARMOR_A].permit(item.id) end end end #-------------------------------------------------------------------------- # ● ATC_TOWN : リージョンID -> 用語ID変換 #-------------------------------------------------------------------------- def self.conv_region_id(region_id) if defined?(WorldMap) return (region_id * 1000) else p "WorldMapがありません。"; exit end end #-------------------------------------------------------------------------- # ● ATC_TOWN : タウンID -> 用語ID変換 #-------------------------------------------------------------------------- def self.conv_town_id(region_id, town_id) if defined?(WorldMap) return (self.conv_region_id(region_id) + town_id + 1) else p "WorldMapがありません。"; exit end end end class Game_Party #-------------------------------------------------------------------------- # ● 初期パーティのセットアップ #-------------------------------------------------------------------------- alias setup_starting_members_dict_plugin_update setup_starting_members def setup_starting_members setup_starting_members_dict_plugin_update for actor in members DictAutoUpdate.dict_permit_actor(actor) end end #-------------------------------------------------------------------------- # ● アクターを加える # actor_id : アクター ID #-------------------------------------------------------------------------- alias add_actor_dict_plugin_update add_actor def add_actor(actor_id) add_actor_dict_plugin_update(actor_id) DictAutoUpdate.dict_permit_actor($game_actors[actor_id]) end #-------------------------------------------------------------------------- # ● アイテムの増加 (減少) # item : アイテム # n : 個数 # include_equip : 装備品も含める #-------------------------------------------------------------------------- alias gain_item_dict_plugin_update gain_item def gain_item(item, n, include_equip = false) gain_item_dict_plugin_update(item, n) return if (n <= 0) DictAutoUpdate.dict_permit_item(item) end end class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● スキルを覚える # skill_id : スキル ID #-------------------------------------------------------------------------- alias learn_skill_dict_plugin_update learn_skill def learn_skill(skill_id) learn_skill_dict_plugin_update(skill_id) DictAutoUpdate[DictDef::ATC_SKILL].permit(skill_id) end #-------------------------------------------------------------------------- # ● 職業 ID の変更 # class_id : 新しい職業 ID #-------------------------------------------------------------------------- alias class_id_dict_plugin_update class_id= def class_id=(class_id) class_id_dict_plugin_update(class_id) DictAutoUpdate[DictDef::ATC_CLASS].permit(class_id) end end class Scene_Battle #-------------------------------------------------------------------------- # ● ダメージの表示 # target : 対象者 # obj : スキルまたはアイテム #-------------------------------------------------------------------------- alias display_damage_plugin_update display_damage def display_damage(target, obj = nil) display_damage_plugin_update(target, obj) return unless @active_battler.is_a?(Game_Actor) return unless target.is_a?(Game_Enemy) return unless target.dead? DictAutoUpdate[DictDef::ATC_ENEMY].permit(target.enemy_id) DictAutoUpdate[DictDef::ATC_ENEMY_A].permit(target.enemy_id) end end if defined?(WorldMap) # ワールドマップと併用時のみ有効 module WorldMap class RegionInfo alias visible_dict visible= def visible=(v) visible_dict(v) id = DictAutoUpdate.conv_region_id(@region_id) DictAutoUpdate[DictDef::ATC_TOWN].permit(id) if v end alias region_info_dict region_info= def region_info=(t) region_info_dict(t) id = DictAutoUpdate.conv_region_id(@region_id) DictAutoUpdate[DictDef::ATC_TOWN].change_info(id, t) end end class TownInfo alias visible_dict visible= def visible=(v) visible_dict(v) id = DictAutoUpdate.conv_town_id(@region_id, @town_id) DictAutoUpdate[DictDef::ATC_TOWN].permit(id) if v end alias town_info_dict town_info= def town_info=(t) town_info_dict(t) id = DictAutoUpdate.conv_town_id(@region_id, @town_id) DictAutoUpdate[DictDef::ATC_TOWN].change_info(id, t) end end end end # WorldMap =begin if defined?(Quest) # クエストシステムと併用時のみ有効 module Quest class QuestData alias visible_dict visible= def visible=(v) visible_dict(v) DictAutoUpdate[DictDef::ATC_QUEST].permit(@id) if v end alias text_dict text= def text=(t) text_dict(t) DictAutoUpdate[DictDef::ATC_QUEST].change_info(@id, t) end alias quest_start_dict quest_start def quest_start quest_start_dict DictAutoUpdate[DictDef::ATC_QUEST].permit(@id) end end end end # Quest =end