RPGツクールに人工無脳を登場させる
先日、ためしにやってみたらできたのでこんなエントリを投下しようかな。
RPGツクールXPでやりました。
まず、人工無脳エンジンししゃもを用意します。
次に、sixamo.rbをちょっとだけ加工します。
sixamo.rbの7行目
$KCODE = 'u'
sixamo.rbの203行目〜210行目あたり
=begin if $DEBUG sum = result_hash.values.sum.to_f tmp = result_hash.sort_by{ |k,v| [-v,k] } puts "-(候補数: #{result_hash.size})----" tmp[0,10].each do |k,v| printf("%5.2f%%: %s\n", v/sum*100, k) end end =end
次に、RPGツクールXPで新規プロジェクトを作ります。
仮に、「Project1」とします。
このプロジェクトのディレクトリに、ディレクトリを追加します。
こんな感じです。
Project1\lib\sixamo.rb
Project1\sixamo\sixamo.txt
Project1\sixamo\sixamo.dic
次に、RPGツクールXPから外部のライブラリを読み込めるようにします。
RPGツクールXPのスクリプトエディタで、GameTempの上にSixamoというスクリプトを作成します。
$LOAD_PATH.unshift('./lib/') require 'sixamo' $sixamo = Sixamo.new('sixamo')
次に、RPGツクールXPのスクリプトエディタでInterpreter7を編集します。
Interpreter7の281行目あたりに次のコードを追加する
#-------------------------------------------------------------------------- # ● 人工無脳がしゃべる #-------------------------------------------------------------------------- def command_356 # 人工無能の発言を格納 str = $sixamo.talk.scan(/.{1,20}/).join("\n") # メッセージ終了待機中フラグおよびコールバックを設定 @message_waiting = true $game_temp.message_proc = Proc.new { @message_waiting = false } # message_text に 1 行目を設定 $game_temp.message_text = str line_count = 1 # ループ loop do # 次のイベントコマンドが文章 2 行目以降の場合 if @list[@index+1].code == 401 # message_text に 2 行目以降を追加 $game_temp.message_text += @list[@index+1].parameters[0] + "\n" line_count += 1 # イベントコマンドが文章 2 行目以降ではない場合 else # 次のイベントコマンドが選択肢の表示の場合 if @list[@index+1].code == 102 # 選択肢が画面に収まる場合 if @list[@index+1].parameters[0].size <= 4 - line_count # インデックスを進める @index += 1 # 選択肢のセットアップ $game_temp.choice_start = line_count setup_choices(@list[@index].parameters) end # 次のイベントコマンドが数値入力の処理の場合 elsif @list[@index+1].code == 103 # 数値入力ウィンドウが画面に収まる場合 if line_count < 4 # インデックスを進める @index += 1 # 数値入力のセットアップ $game_temp.num_input_start = line_count $game_temp.num_input_variable_id = @list[@index].parameters[0] $game_temp.num_input_digits_max = @list[@index].parameters[1] end end # 継続 return true end # インデックスを進める @index += 1 end end
仕上げに、RPGツクールXPのコモンイベントとして
スクリプトで「command_356」を実行するようにするとできあがりです。
このコモンイベントを実行すると人工無脳がしゃべってくれます。