Menu bestiaire avancé
Ce script permet de faire un menu bestiaire, mais celui là n'est pas comme les autres, il y a plus d'informations pour celui-là
Créez un nouveau script au dessus de main que vous nommerez " Scene_Liste_Monstres "
Puis collez ceci dans ce script :
#_/Scene liste Monstre modifie par knigt1[Original venant de KGC]
#Permer d' avoir un livre avec les monstres battus
#==============================================================================
# ★ Customization item ★
#==============================================================================
module KGC
# ◆図鑑から隠すモンスター
# 非表示にしたい敵のIDを配列に格納
MG_HIDE_ENEMIES = [16]
end
class Window_MonsterGuideRight < Window_Base
# ◆属性耐性を調べる範囲(属性ID)
MG_ELEMENT_RANGE = 1..8
# ◆弱点属性文字色
MG_WEEK_COLOR = Color.new(255, 128, 128)
# ◆耐性属性文字色
MG_RESIST_COLOR = Color.new(128, 128, 255)
end
class Scene_MonsterGuide
# ◆カーソル移動で表示内容更新
# false にすると、C ボタンを押すまで再描画しない
# (重く感じない場合は true のままでOK)
MG_MOVE_REFRESH = true
end
class Scene_Battle
# ◆変身前の敵も撃破
# false にすると、変身前の敵は撃破したと見なされない
MG_ORIGINAL_DEFEAT = true
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
$imported["MonsterGuide"] = true
class Object
include KGC
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#--------------------------------------------------------------------------
# ● モンスター図鑑呼び出し
#--------------------------------------------------------------------------
def call_monster_guide
# プレイヤーの姿勢を矯正
$game_player.straighten
# モンスター図鑑画面に切り替え
$scene = Scene_MonsterGuide.new
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_System
#==============================================================================
class Game_System
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :enemy_encountered # 遭遇済みフラグ
attr_accessor :enemy_defeated # 撃破済みフラグ
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias initialize_KGC_MonsterGuide initialize
def initialize
# 元の処理を実行
initialize_KGC_MonsterGuide
@enemy_encountered = []
@enemy_defeated = []
end
#--------------------------------------------------------------------------
# ● エネミー存在チェック
#--------------------------------------------------------------------------
def enemy_exist?(enemy_id)
return $data_enemies[enemy_id] != nil && $data_enemies[enemy_id].name != ""
end
#--------------------------------------------------------------------------
# ● 存在する敵の種類数取得
#--------------------------------------------------------------------------
def all_enemies_count
n = 0
# 存在する敵の種類数を取得
for i in 1...$data_enemies.size
next if !enemy_exist?(i) || MG_HIDE_ENEMIES.include?(i)
n += 1
end
return n
end
#--------------------------------------------------------------------------
# ● 撃破した敵の種類数取得
#--------------------------------------------------------------------------
def defeated_enemies_count
n = 0
# 撃破した敵の種類数を取得
for i in 1...$data_enemies.size
next if !enemy_exist?(i) || !@enemy_encountered[i] ||
!@enemy_defeated[i] || MG_HIDE_ENEMIES.include?(i)
n += 1
end
return n
end
#--------------------------------------------------------------------------
# ● モンスター図鑑完成度の取得
#--------------------------------------------------------------------------
def monster_guide_completion
return defeated_enemies_count * 100 / all_enemies_count
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_reader :original_id # 変身前のID
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# troop_id : トループ ID
# member_index : トループメンバーのインデックス
#--------------------------------------------------------------------------
alias initialize_KGC_MonsterGuide initialize
def initialize(troop_id, member_index)
# 元の処理を実行
initialize_KGC_MonsterGuide(troop_id, member_index)
@original_id = []
# 遭遇済みフラグをオン
unless @hidden
$game_system.enemy_encountered[@enemy_id] = true
end
end
#--------------------------------------------------------------------------
# ● 変身
# enemy_id : 変身先のエネミー ID
#--------------------------------------------------------------------------
alias transform_KGC_MonsterGuide transform
def transform(enemy_id)
# 変身前のIDを保存
@original_id.push(@enemy_id)
# 元の処理を実行
transform_KGC_MonsterGuide(enemy_id)
# 変身後の敵も遭遇済みにする
$game_system.enemy_encountered[@enemy_id] = true
end
#--------------------------------------------------------------------------
# ● 隠れ状態設定
#--------------------------------------------------------------------------
def hidden=(value)
@hidden = value
# 出現した場合は遭遇済みフラグをオン
unless @hidden
$game_system.enemy_encountered[@enemy_id] = true
end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Window_MonsterGuideTop
#------------------------------------------------------------------------------
# モンスター図鑑画面で、完成度を表示するウィンドウです。
#==============================================================================
class Window_MonsterGuideTop < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 0, 240, 96)
self.contents = Bitmap.new(width - 32, height - 32)
self.back_opacity = 160
refresh
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
self.contents.clear
text = "撃破数:#{$game_system.defeated_enemies_count}/#{$game_system.all_enemies_count}"
self.contents.draw_text(0, 0, width - 32, 32, text)
text = "完成度:#{$game_system.monster_guide_completion}%%"
self.contents.draw_text(0, 32, width - 32, 32, text)
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Window_MonsterGuideLeft
#------------------------------------------------------------------------------
# モンスター図鑑画面で、モンスター一覧を表示するウィンドウです。
#==============================================================================
class Window_MonsterGuideLeft < Window_Selectable
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 96, 240, 384)
self.index = 0
self.back_opacity = 160
refresh
end
#--------------------------------------------------------------------------
# ● 選択モンスターの取得
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
# 存在するエネミーを取得
for i in 1...$data_enemies.size
next if !$game_system.enemy_exist?(i) || MG_HIDE_ENEMIES.include?(i)
@data.push($data_enemies[i])
end
# 項目数が 0 でなければビットマップを作成し、全項目を描画
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# ● 項目の描画
# index : 項目番号
#--------------------------------------------------------------------------
def draw_item(index)
enemy = @data[index]
# 撃破していれば通常文字色に、そうでなければ無効文字色に設定
if $game_system.enemy_defeated[enemy.id]
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
x = 4
y = index * 32
rect = Rect.new(x, y, self.width - 40, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
# 遭遇していれば名前、遭遇していなければ?を描画
if $game_system.enemy_encountered[enemy.id]
self.contents.draw_text(x, y, self.width - 40, 32, enemy.name)
else
self.contents.draw_text(x, y, self.width - 40, 32, "Inconnu", 1)
end
end
end #==============================================================================
# ■ Window_MonsterGuideRight
#------------------------------------------------------------------------------
# モンスター図鑑画面で、ステータスを表示するウィンドウです。
#==============================================================================
class Window_MonsterGuideRight < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(240, 0, 400, 480)
self.contents = Bitmap.new(width - 32, height - 32)
self.back_opacity = 160
end
#--------------------------------------------------------------------------
# ● リフレッシュ
# enemy : エネミー
# show_status : ステータス表示
#--------------------------------------------------------------------------
def refresh(enemy, show_status = true)
self.contents.clear
# 遭遇していない場合はNo data