Menu bestiaire avancé

Publié le par Cidragon6

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

Publicité

Publié dans Scripts RPG Makers XP

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article
U
<br /> <br /> Sa bug également a la ligne 296 pour moi.<br /> <br /> <br /> <br />
Répondre
C
<br /> Je pense que ce n'est qu'une affaire d'intégration du script dans votre projet, car j'ai testé et même utilisé ce script, il fonctionne.<br /> <br /> <br />
Q
il marche pas ton script
Répondre
@
Alors pour le faire 'fonctionner' il faut rajouter deux fois " end" à la fin de ce script... et pour l'appeler à partir d'un évènement il faudrait écrire : "$scene = Scene_MonsterGuide.new" (ajouter un script), mais la encore ça ne fonctionne pas > ça empiète sur le MAIN   "$scene.main"A corriger donc ? :S
Répondre
D
I ME MET ERREUR A LA LAIGNE 296
Répondre