1)Salve avrei bisogno di un aiutino per questo script di un Bestiario, chiedo se qualcuno è capace ad integrare nella visualizzazione, oltre che dei parametri etc., anche delle debolezze agli status alterati e agli elementi... se ci riuscite postatemi lo script completo grazie.
2)Altra cosa che vi chiedo, sapete come fare per far si che un mostro quando venga sconfitto ad ottenere più di 1 solo oggetto cm nel database e che venga visualizzato a fine battaglia?
# Bestiario Prima versione
# Descrizione script :
# Ci tengo a precisare che questo script non è stato inventato da me ma io mi sono
# solo preocupato di modificarlo lo script che è stato preso dal sito giapponese momomomo
# l'autore non è stato immesso nello script o almeno io non sono riuscito a leggerlo
# (essendo uno script jappo xD)
# Script Bestiario Modificato da: dad e con la parteciapazione speciale di RagnarokM
module Enemy_Book_Config
#Analisi dell'oggetto attiva oppure no
DROP_ITEM_NEED_ANALYZE = false
#Nome del valore di evasione del mostro
EVA_NAME = "Evasione"
#Tipo di calcolo della percentuale dei nemici incontrati:
# 1- numero incontrati / numero massimo
# 2- percentuale dei nemici incontrati e percentuale dei nemici incontrati
# 3- numero incontrati / numero massimo
SHOW_COMPLETE_TYPE = 3
#Sistema dei commenti attivato oppure no
COMMENT_SYSTEM = false
end
class Game_Temp
attr_accessor :enemy_book_data
alias temp_enemy_book_data_initialize initialize
def initialize
temp_enemy_book_data_initialize
@enemy_book_data = Data_MonsterBook.new
end
end
class Game_Party
attr_accessor :enemy_info # Informazioni sul nemico
Question
BabboNatale
1)Salve avrei bisogno di un aiutino per questo script di un Bestiario, chiedo se qualcuno è capace ad integrare nella visualizzazione, oltre che dei parametri etc., anche delle debolezze agli status alterati e agli elementi... se ci riuscite postatemi lo script completo grazie.
2)Altra cosa che vi chiedo, sapete come fare per far si che un mostro quando venga sconfitto ad ottenere più di 1 solo oggetto cm nel database e che venga visualizzato a fine battaglia?
# Bestiario Prima versione
# Descrizione script :
# Ci tengo a precisare che questo script non è stato inventato da me ma io mi sono
# solo preocupato di modificarlo lo script che è stato preso dal sito giapponese momomomo
# l'autore non è stato immesso nello script o almeno io non sono riuscito a leggerlo
# (essendo uno script jappo xD)
# Script Bestiario Modificato da: dad e con la parteciapazione speciale di RagnarokM
module Enemy_Book_Config
#Analisi dell'oggetto attiva oppure no
DROP_ITEM_NEED_ANALYZE = false
#Nome del valore di evasione del mostro
EVA_NAME = "Evasione"
#Tipo di calcolo della percentuale dei nemici incontrati:
# 1- numero incontrati / numero massimo
# 2- percentuale dei nemici incontrati e percentuale dei nemici incontrati
# 3- numero incontrati / numero massimo
SHOW_COMPLETE_TYPE = 3
#Sistema dei commenti attivato oppure no
COMMENT_SYSTEM = false
end
class Game_Temp
attr_accessor :enemy_book_data
alias temp_enemy_book_data_initialize initialize
def initialize
temp_enemy_book_data_initialize
@enemy_book_data = Data_MonsterBook.new
end
end
class Game_Party
attr_accessor :enemy_info # Informazioni sul nemico
#--------------------------------------------------------------------------
# Acquisisce le informazioni
#--------------------------------------------------------------------------
alias book_info_initialize initialize
def initialize
book_info_initialize
@enemy_info = {}
end
#--------------------------------------------------------------------------
# Acquisisce le informazioni in base al tipo:
# 1:
# 0:
#--------------------------------------------------------------------------
def add_enemy_info(enemy_id, type = 0)
case type
when 0
if @enemy_info[enemy_id] == 2
return false
end
@enemy_info[enemy_id] = 1
when 1
@enemy_info[enemy_id] = 2
when -1
@enemy_info[enemy_id] = 0
end
end
#--------------------------------------------------------------------------
# Numero massimo di nemici da scrivere nel bestiario
#--------------------------------------------------------------------------
def enemy_book_max
return $game_temp.enemy_book_data.id_data.size - 1
end
#--------------------------------------------------------------------------
# Numero di nemici incontrati fino a quel momento
#--------------------------------------------------------------------------
def enemy_book_now
now_enemy_info = @enemy_info.keys
# 登録無視�属性IDを�得
no_add = $game_temp.enemy_book_data.no_add_element
new_enemy_info = []
for i in now_enemy_info
enemy = $data_enemies
next if enemy.name == ""
if enemy.element_ranks[no_add] == 1
next
end
new_enemy_info.push(enemy.id)
end
return new_enemy_info.size
end
#--------------------------------------------------------------------------
# Calcola la percentuale dei nemici incontrati
#--------------------------------------------------------------------------
def enemy_book_complete_percentage
e_max = enemy_book_max.to_f
e_now = enemy_book_now.to_f
comp = e_now / e_max * 100
return comp.truncate
end
end
class Interpreter
def enemy_book_max
return $game_party.enemy_book_max
end
def enemy_book_now
return $game_party.enemy_book_now
end
def enemy_book_comp
return $game_party.enemy_book_complete_percentage
end
end
class Scene_Battle
alias add_enemy_info_start_phase5 start_phase5
def start_phase5
for enemy in $game_troop.enemies
# Continua fino a quando il nemico è vivo; quando muore ne aggiunge le informazioni
unless enemy.hidden
# Aggiunge le informazioni sul nemico
$game_party.add_enemy_info(enemy.id, 0)
end
end
add_enemy_info_start_phase5
end
end
class Window_Base < Window
#--------------------------------------------------------------------------
# Disegna gli oggetti persi dai nemici
#--------------------------------------------------------------------------
def draw_enemy_drop_item(enemy, x, y)
self.contents.font.color = normal_color
self.contents.font.name = "Cataneo BT"
treasures = []
if enemy.item_id > 0
treasures.push($data_items[enemy.item_id])
end
if enemy.weapon_id > 0
treasures.push($data_weapons[enemy.weapon_id])
end
if enemy.armor_id > 0
treasures.push($data_armors[enemy.armor_id])
end
# Se i tesori sono più di 0 li disegna
if treasures.size > 0
item = treasures[0]
bitmap = RPG::Cache.icon(item.icon_name)
opacity = 255
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.font.name = "Cataneo BT"
name = treasures[0].name
else
self.contents.font.color = disabled_color
self.contents.font.name = "Cataneo BT"
name = "Nessuno"
end
self.contents.draw_text(x+28, y, 212, 32, name)
end
#--------------------------------------------------------------------------
# Trova l'id del nemico
#--------------------------------------------------------------------------
def draw_enemy_book_id(enemy, x, y)
self.contents.font.color = normal_color
id = $game_temp.enemy_book_data.id_data.index(enemy.id)
self.contents.draw_text(x, y, 32, 32, id.to_s)
self.contents.font.name = "Cataneo BT"
end
#--------------------------------------------------------------------------
# Scrive il nome del nemico
# enemy : nemico
# x : coordinata X in cui scrivere
# y : coordinata Y in cui scrivere
#--------------------------------------------------------------------------
def draw_enemy_name(enemy, x, y)
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 152, 32, enemy.name)
self.contents.font.name = "Cataneo BT"
end
#--------------------------------------------------------------------------
# Disegna l'immagine del nemico
# enemy : nemico
# x : coordinata X in cui scrivere
# y : coordinata Y in cui scrivere
#--------------------------------------------------------------------------
def draw_enemy_graphic(enemy, x, y, opacity = 255)
bitmap = RPG::Cache.battler(enemy.battler_name, enemy.battler_hue)
cw = bitmap.width
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
x = x + (cw / 2 - x) if cw / 2 > x
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect, opacity)
self.contents.font.name = "Cataneo BT"
end
#--------------------------------------------------------------------------
# Scrive l'esperienza che si ottiene dal nemico
# enemy : nemico
# x : coordinata X in cui scrivere
# y : coordinata Y in cui scrivere
#--------------------------------------------------------------------------
def draw_enemy_exp(enemy, x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, 32, "EXP")
self.contents.font.color = normal_color
self.contents.draw_text(x + 120, y, 36, 32, enemy.exp.to_s, 2)
self.contents.font.name = "Cataneo BT"
end
#--------------------------------------------------------------------------
# Scrive il totale dei soldi che si ottengono dal nemico
# enemy : nemico
# x : coordinata X in cui scrivere
# y : coordinata Y in cui scrivere
#--------------------------------------------------------------------------
def draw_enemy_gold(enemy, x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, 32, $data_system.words.gold)
self.contents.font.color = normal_color
self.contents.draw_text(x + 120, y, 36, 32, enemy.gold.to_s, 2)
self.contents.font.name = "Cataneo BT"
end
#--------------------------------------------------------------------------
# Scrive a quali elementi il nemico è debole
# enemy : nemico
# x : coordinata X in cui scrivere
# y : coordinata Y in cui scrivere
#--------------------------------------------------------------------------
#def draw_element_guard(enemy, x, y)
#self.contents.font.color = system_color
#self.contents.draw_text(x, y, 120, 32, "Elemnti:")
#@data = $Game_Enemy.element_ranks.size
#for i in 1..@data
#if $Game_Enemy.element_ranks == 0
#self.contents.font.color = Color.new(255, 0, 0, 255)
#else
#if $Game_Enemy.element_ranks == 1
#self.contents.font.color = Color.new(255, 100, 0, 255)
#else
#if $Game_Enemy.element_ranks == 2
#self.contents.font.color = Color.new(214, 214, 214, 255)
#else
#if $Game_Enemy.element_ranks == 3
#self.contents.font.color = Color.new(0, 255, 0, 255)
#else
#if $Game_Enemy.element_ranks == 4
#self.contents.font.color = Color.new(0, 0, 255, 255)
#else
#if $Game_Enemy.element_ranks == 5
#self.contents.font.color = Color.new(180, 0, 255, 255)
#end
#end
#end
#end
#end
#end
#self.contents.font.name = "Arial"
#self.contents.draw_text(x + 120, y, 36, 32, $Game_Enemy.element_ranks, 2)
#end
#end
end
class Game_Enemy_Book < Game_Enemy
#--------------------------------------------------------------------------
# INIZIALIZZAZIONE
#--------------------------------------------------------------------------
def initialize(enemy_id)
super(2, 1)#Super del nemico
@enemy_id = enemy_id
enemy = $data_enemies[@enemy_id]
@battler_name = enemy.battler_name
@battler_hue = enemy.battler_hue
@hp = maxhp
@sp = maxsp
end
end
class Data_MonsterBook
attr_reader :id_data
#--------------------------------------------------------------------------
# INIZIALIZZAZIONE
#--------------------------------------------------------------------------
def initialize
@id_data = enemy_book_id_set
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def no_add_element
no_add = 0
# 登録無視�属性IDを�得
for i in 1...$data_system.elements.size
if $data_system.elements =~ /図鑑登録無効/
no_add = i
break
end
end
return no_add
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def enemy_book_id_set
data = [0]
no_add = no_add_element
# Setta il nemico all'interno del libro
for i in 1...$data_enemies.size
enemy = $data_enemies
next if enemy.name == ""
if enemy.element_ranks[no_add] == 1
next
end
data.push(enemy.id)
end
return data
end
end
class Window_MonsterBook < Window_Selectable
attr_reader :data
#--------------------------------------------------------------------------
# Inizializza la finestra del bestiario
#--------------------------------------------------------------------------
def initialize(index=0)
super(0, 64, 640, 416)
@column_max = 2
@book_data = $game_temp.enemy_book_data
@data = @book_data.id_data.dup
@data.shift
#@data.sort!
@item_max = @data.size
self.index = 0
refresh if @item_max > 0
end
#--------------------------------------------------------------------------
# Dispone i nemici nella finestra
#--------------------------------------------------------------------------
def data_set
data = $game_party.enemy_info.keys
data.sort!
newdata = []
for i in data
next if $game_party.enemy_info == 0
# Se il menico non è nel libro lo aggiunge
if book_id(i) != nil
newdata.push(i)
end
end
return newdata
end
#--------------------------------------------------------------------------
# Mostra i nemici
#--------------------------------------------------------------------------
def show?(id)
if $game_party.enemy_info[id] == 0 or $game_party.enemy_info[id] == nil
return false
else
return true
end
end
#--------------------------------------------------------------------------
# la posizione nel libro
#--------------------------------------------------------------------------
def book_id(id)
return @book_data.index(id)
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# REFRESH
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
self.contents.font.name = "Cataneo BT"
end
self.contents = Bitmap.new(width - 32, row_max * 32)
# Se il numero degli oggetti è maggiore di 0 li disegna
if @item_max > 0
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# Disegna l'oggetto
# index : posizione dell'oggetto nell'array
#--------------------------------------------------------------------------
def draw_item(index)
enemy = $data_enemies[@data[index]]
return if enemy == nil
x = 4 + index % 2 * (288 + 32)
y = index / 2 * 32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.font.color = normal_color
self.contents.font.name = "Cataneo BT"
draw_enemy_book_id(enemy, x, y)
if show?(enemy.id)
self.contents.draw_text(x + 28+16, y, 212, 32, enemy.name, 0)
self.contents.font.name = "Cataneo BT"
else
self.contents.draw_text(x + 28+16, y, 212, 32, "-----------", 0)
self.contents.font.name = "Cataneo BT"
return
end
if analyze?(@data[index])
self.contents.font.color = text_color(3)
self.contents.draw_text(x + 256, y, 24, 32, "", 2)
self.contents.font.name = "Cataneo BT"
end
end
#--------------------------------------------------------------------------
# Analizza le informazioni
#--------------------------------------------------------------------------
def analyze?(enemy_id)
if $game_party.enemy_info[enemy_id] == 2
return true
else
return false
end
end
end
class Window_MonsterBook_Info < Window_Base
#--------------------------------------------------------------------------
# INIZIALIZZAZIONE
#--------------------------------------------------------------------------
def initialize
super(0, 0+64, 640, 480-64)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Cataneo BT"
end
#--------------------------------------------------------------------------
# REFRESH
#--------------------------------------------------------------------------
def refresh(enemy_id)
self.contents.clear
self.contents.font.size = 22
self.contents.font.name = "Cataneo BT"
enemy = Game_Enemy_Book.new(enemy_id)
draw_enemy_graphic(enemy, 96, 240+48+64, 200)
draw_enemy_book_id(enemy, 4, 0)
draw_enemy_name(enemy, 48, 0)
draw_actor_hp(enemy, 288, 0)
draw_actor_sp(enemy, 288+160, 0)
draw_actor_parameter(enemy, 288 , 32, 0)
self.contents.font.color = system_color
self.contents.draw_text(288+160, 32, 120, 32, Enemy_Book_Config::EVA_NAME)
self.contents.font.color = normal_color
self.contents.draw_text(288+160 + 120, 32, 36, 32, enemy.eva.to_s, 2)
self.contents.font.name = "Cataneo BT"
draw_actor_parameter(enemy, 288 , 64, 3)
draw_actor_parameter(enemy, 288+160, 64, 4)
draw_actor_parameter(enemy, 288 , 96, 5)
draw_actor_parameter(enemy, 288+160, 96, 6)
draw_actor_parameter(enemy, 288 , 128, 1)
draw_actor_parameter(enemy, 288+160, 128, 2)
draw_enemy_exp(enemy, 288, 160)
draw_enemy_gold(enemy, 288+160, 160)
self.contents.font.name = "Cataneo BT"
if analyze?(enemy.id) or !Enemy_Book_Config::DROP_ITEM_NEED_ANALYZE
self.contents.draw_text(288, 192, 96, 32, "Oggetti ricevuti")
draw_enemy_drop_item(enemy, 288+96+4, 192)
self.contents.font.color = normal_color
self.contents.font.name = "Cataneo BT"
#draw_element_guard(enemy, 320-32, 160-16+96)
end
end
#--------------------------------------------------------------------------
# Analizza le informazioni
#--------------------------------------------------------------------------
def analyze?(enemy_id)
if $game_party.enemy_info[enemy_id] == 2
return true
else
return false
end
end
end
class Scene_MonsterBook
#-----------------------------------------------------------------------------
# Scene del bestiario
# ----------------------------------------------------------------------------
def main
$game_temp.enemy_book_data = Data_MonsterBook.new
# Creo la finestra del titolo
@title_window = Window_Base.new(0, 0, 640, 64)
@title_window.contents = Bitmap.new(640 - 32, 64 - 32)
@title_window.contents.font.name = "Cataneo BT"
@title_window.contents.font.size = 24
@title_window.contents.draw_text(100, 0, 320, 32, "Bestiario", 0)
if Enemy_Book_Config::SHOW_COMPLETE_TYPE != 0
case Enemy_Book_Config::SHOW_COMPLETE_TYPE
when 1
e_now = $game_party.enemy_book_now
e_max = $game_party.enemy_book_max
text = e_now.to_s + " / " + e_max.to_s
when 2
comp = $game_party.enemy_book_complete_percentage
text = comp.to_s + " %"
when 3
e_now = $game_party.enemy_book_now
e_max = $game_party.enemy_book_max
comp = $game_party.enemy_book_complete_percentage
text = e_now.to_s + " / " + e_max.to_s + " " + comp.to_s + " %"
end
if text != nil
@title_window.contents.draw_text(280, 0, 288, 32, text, 2)
end
end
@main_window = Window_MonsterBook.new
@main_window.active = true
# Creo la finestra delle informazioni
@info_window = Window_MonsterBook_Info.new
@info_window.z = 110
@info_window.visible = false
@info_window.active = false
@visible_index = 0
# Cambio di grafica
Graphics.transition
# Inizio Ciclo
loop do
# Aggiorno la grafica
Graphics.update
# Update dell'input
Input.update
# update
update
# se la scene è diversa interrompo il ciclo
if $scene != self
break
end
end
# Congelo la grafica
Graphics.freeze
# Cancellazione finestre
@main_window.dispose
@info_window.dispose
@title_window.dispose
@comment_window.dispose if @comment_window != nil
end
#--------------------------------------------------------------------------
# Update
#--------------------------------------------------------------------------
def update
# Update delle finestre
@main_window.update
@info_window.update
if @info_window.active
update_info
return
end
# Se è attiva la finestra principale la aggiorno
if @main_window.active
update_main
return
end
end
#--------------------------------------------------------------------------
# Update della finestra principale
#--------------------------------------------------------------------------
def update_main
# Se il tasto premuto è la B torno alla mappa
if Input.trigger?(Input::B)
# Suono se è il tasto premuto
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
# Se il tasto premuto è C scrivo la pagina del bestiario
if Input.trigger?(Input::C)
if @main_window.item == nil or @main_window.show?(@main_window.item) == false
# Suono se premuto
$game_system.se_play($data_system.buzzer_se)
return
end
# faccio comparire la pagina del bestiario
$game_system.se_play($data_system.decision_se)
@main_window.active = false
@info_window.active = true
@info_window.visible = true
@visible_index = @main_window.index
@info_window.refresh(@main_window.item)
if @comment_window != nil
@comment_window.refresh(@main_window.item)
if @comment_on
@comment_window.visible = true
else
@comment_window.visible = false
end
end
return
end
end
#--------------------------------------------------------------------------
# Aggiorno le informazioni
#--------------------------------------------------------------------------
def update_info
# Se il tasto premuto è B ritorno alla pagina principale del bestiario
if Input.trigger?(Input::B)
# Suono SE
$game_system.se_play($data_system.cancel_se)
@main_window.active = true
@info_window.active = false
@info_window.visible = false
@comment_window.visible = false if @comment_window != nil
return
end
# Se il tasto premuto è C apro la pagina dei commenti
if Input.trigger?(Input::C)
if @comment_window != nil
# Suono SE
$game_system.se_play($data_system.decision_se)
if @comment_on
@comment_on = false
@comment_window.visible = false
else
@comment_on = true
@comment_window.visible = true
end
return
end
end
if Input.trigger?(Input::L)
# Suono SE
$game_system.se_play($data_system.decision_se)
loop_end = false
while loop_end == false
if @visible_index != 0
@visible_index -= 1
else
@visible_index = @main_window.data.size - 1
end
loop_end = true if @main_window.show?(@main_window.data[@visible_index])
end
id = @main_window.data[@visible_index]
@info_window.refresh(id)
@comment_window.refresh(id) if @comment_window != nil
return
end
if Input.trigger?(Input::R)
# Suono SE
$game_system.se_play($data_system.decision_se)
loop_end = false
while loop_end == false
if @visible_index != @main_window.data.size - 1
@visible_index += 1
else
@visible_index = 0
end
loop_end = true if @main_window.show?(@main_window.data[@visible_index])
end
id = @main_window.data[@visible_index]
@info_window.refresh(id)
@comment_window.refresh(id) if @comment_window != nil
return
end
end
end
# Note by dad;
#--------------------------------------------------------------------------
# ISTRUZIONI
# Ecco alcune istruzioni per l'uso :
# 1)Per richiamare questo script dovrete scrivere nell'apposito comando di rpg maker xp
# cioè call script,questo "$scene = Scene_MonsterBook.new"
# 2)Questo codice è utile per far apparire la percentuale di mostri scoperti ed inseriti
# nel proprio bestiario eccolo qui il codice che deve essere sempre inserito nel comando call scrirt:
# Script
# $game_variables[10] = enemy_book_max
# $game_variables[11] = enemy_book_now
# $game_variables[12] = enemy_book_comp
# Fine script.
# 3)Questo codice permette la visuallizzazione subito di tutti i mostri nel bestiario
# (piu' che altro serve per vedere le potenzialita del bestiario.
# Ecco il pezzo di codice da inserire nell'evento :
# Script
# data = Data_MonsterBook.new
# for i in data.id_data
# next if i == 0
# $game_party.add_enemy_info(i, 0)
# end
#Il tasto L corrisponde alla lettera Q e il tasto R alla lettera W
#
# Fine script
#-----------------------------------------------------------------------
http://i59.tinypic.com/n37n6e.png
http://i57.tinypic.com/29lokti.png
Link to comment
Share on other sites
0 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now