=begin ▼ 名前の重複禁止 ver. 1.0 RPGツクールVXAce用スクリプト 制作 : 木星ペンギン URL : http://woodpenguin.blog.fc2.com/ ------------------------------------------------------------------------------ 概要 □ 特定の名前や、同じ名前を入力できないようにします。 =end module Wooden module NameErr #////////////////////////////////////////////////////////////////////////////// # # 設定項目 # #////////////////////////////////////////////////////////////////////////////// #-------------------------------------------------------------------------- # ● 重複禁止スイッチ # この番号のスイッチが ON になると、重複禁止が機能します。 # 0 の場合は常時重複禁止となります。 # (パスワードの入力イベントなどを想定してつけた機能です) #-------------------------------------------------------------------------- SWITCH_ID = 0 #-------------------------------------------------------------------------- # ● 全アクターの判定フラグ # パーティに加わったことのないアクターも判定します。 # false の場合、Game_Actors 内に入っているアクターのみで判定します。 # (味方が全てキャラクターメイキングによって作られたアクターであれば # false にしたほうがいいです) #-------------------------------------------------------------------------- ALL_ACTERS = true #-------------------------------------------------------------------------- # ● 使用できない名前のエネミー # 配列にエネミーの ID を入れると、 # そのエネミーの名前が使用できなくなります。 # (例 : [1, 4, 5] でエネミー ID 1 と 4 と 5 の名前が使えなくなります) #-------------------------------------------------------------------------- ENEMIES = [] #-------------------------------------------------------------------------- # ● 使用できない名前 # 配列に文字列を入れると、その前が使用できなくなります。 # (例 : ["エリック", "ナタリー"] で エリック と ナタリー という # 名前が使えなくなります) #-------------------------------------------------------------------------- NAMES = [] #-------------------------------------------------------------------------- # ● 重複時のメッセージ #-------------------------------------------------------------------------- MESSAGE = "その名前は既に使われています。" #////////////////////////////////////////////////////////////////////////////// # # 以降、変更する必要なし # #////////////////////////////////////////////////////////////////////////////// def self.used_names result = $game_actors.used_names(ALL_ACTERS) result.concat(ENEMIES.collect {|id| $data_enemies[id] ? $data_enemies[id].name : "" }) result.concat(NAMES) end end end #============================================================================== # ■ Game_Actors #============================================================================== class Game_Actors #-------------------------------------------------------------------------- # ● 使用した名前の取得 #-------------------------------------------------------------------------- def used_names(all) if all (1...$data_actors.size).collect {|i| self[i].name } else @data.compact.collect! {|actor| actor.name } end end end #============================================================================== # ■ Scene_Name #============================================================================== class Scene_Name < Scene_MenuBase #-------------------------------------------------------------------------- # ◯ 開始処理 #-------------------------------------------------------------------------- alias _wooden_nameerr_start start def start super _wooden_nameerr_start create_message_window @message_count = 0 end #-------------------------------------------------------------------------- # ● メッセージウィンドウの作成 #-------------------------------------------------------------------------- def create_message_window wx = (Graphics.width - 432) / 2 @message_window = Window_Base.new(wx, 160, 432, 48) @message_window.back_opacity = 200 @message_window.z = 120 @message_window.openness = 0 end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update super update_message if @message_count > 0 end #-------------------------------------------------------------------------- # ● メッセージ表示の更新 #-------------------------------------------------------------------------- def update_message @message_count -= 1 if @message_count == 0 @message_window.close elsif @message_window.openness == 0 @message_window.open end end #-------------------------------------------------------------------------- # ◯ 入力[決定] #-------------------------------------------------------------------------- alias _wooden_nameerr_on_input_ok on_input_ok def on_input_ok if (Wooden::NameErr::SWITCH_ID == 0 || $game_switches[Wooden::NameErr::SWITCH_ID]) && @actor.name != @edit_window.name && Wooden::NameErr.used_names.include?(@edit_window.name) RPG::SE.stop Sound.play_buzzer @message_window.contents.clear @message_window.contents.draw_text(0, 0, 416, 24, Wooden::NameErr::MESSAGE) @message_count = 100 return end _wooden_nameerr_on_input_ok end end