UltimaForum

Skrypty [VX] - Bestiariusz VX

Ayene - Czw 22 Paź, 2009 09:16
Temat postu: Bestiariusz VX
~ Bestiariusz VX ~

Krótki opis
Skrypt dodaje Bestiariusz, czyli wykaz wszystkich napotkanych na drodze przeciwników.
Zawiera on opcje:
- wyłączenia/włączenia bestiariusza w menu
- ukrycia konkretnych bestii (by nie były wyświetlane)
- wykorzystania przełącznika, by wyłączyć gromadzenie informacji o przeciwnikach na wybranym etapie gry (wywołanie odpowiedniego skryptu).

Autor skryptu
Woratana [woratana@hotmail.com]

Tłumaczenie i poprawki
Ayene [yurika@o2.pl]

Kompatybilność
Tylko VX

Skrypt
Spoiler:

Kod:

#===============================================================
# [VX] BESTIARIUSZ
#--------------------------------------------------------------
# by Woratana [woratana@hotmail.com]
# tłumaczenie i korekta by Ayene [yurika@o2.pl]
#--------------------------------------------------------------
# ** ZASTOSOWANIE
#--------------------------------------------------------------
# * By otworzyć Bestiariusz wywołaj skrypt:
#  $scene = Scene_MonsterBook.new

# * Kompletny wykaz potworów:
#  $game_system.set_monbook_complete

# * Zresetowanie wykazu bestii:
#  $game_system.reset_monbook
#--------------------------------------------------------------
# * Pokaż informacje o potworze z ID:
#  $game_system.monbook[id_potwora] = true

# * Ukryj informacje o potworze z ID:
#  $game_system.monbook[id_potwora] = false

# ^ Zmień 'id_potwora' na ID wybranej bestii
# ** e.g. $game_system.monbook[10] = true
#    pokazuje w Bestiariuszu dane potwora Z ID 10
#===============================================================

module Wora_Monbook

#===============================================================
# ** [Część do edycji] - Konfiguracja skryptu
#-------------------------------------------------------------- 
  SHOW_IN_MENU = true # Pokazuj Bestiariusz w Menu? (true / false)
  MENU_COMMAND = 'Bestiariusz' # Nazwa komendy w menu
  MENU_INDEX = 2 # Położenie w menu od góry (2 - czyli na trzeciej pozycji)
 
  TEXT_TITLE = 'Bestiariusz'
  # Tytuł Bestariusza (Wyświetla się w górnym lewym rogu okna)
  TEXT_FOUND = 'Znalezione: '
  # Tekst przed liczbą znalezionych potworów
  TEXT_COMPLETED = 'Pokonane: '
  # Tekst przed wykazem procentowym pokonanych bestii
 
  NO_RECORD_SWITCH = 10
  # Włączony przełącznik na ON -> nowo napotkane potwory nie będą dodawane do
  # bestiariusza.
 
  NO_DATA_MONSTER = [1, 3]
  # Ukrywa bestie w bestariuszu. Wystarczy wpisać ID potwora.
  # np. [1, 3, 5] ukrywa potwory z ID 1, 3 i 5.
 
 
  module AYENE # <-- nie usuwać
   
  TEKST_ZLOTA = 'ZŁ'  # tekst ZŁOTA w bestiariuszu
  TEKST_PD = 'PD' # tekst PUNKTÓW DOŚWIADCZENIA
  TEKST_HIT = 'HIT' # tekst TRAFIENIA
  TEKST_UNIK = 'UNIK' # tekst UNIKU   
  TEKST_PRZEDMIOT_1 = 'Przedmiot 1'  # tekst pierwszego przedmiotu
  TEKST_PRZEDMIOT_2 = 'Przedmiot 2'  # tekst drugiego przedmiotu
 
  end # <-- nie usuwać
 
 
 
#===============================================================
end

# Koniec konfiguracji

#===============================================================
# ** [Alias] Game_System
#--------------------------------------------------------------
class Game_System
  attr_accessor :monbook
  alias :wora_monbook_gamsys_ini :initialize
  def initialize
    wora_monbook_gamsys_ini
    create_monbook
  end
 
  def create_monbook
    @monbook ||= Array.new($data_enemies.size) {false}
  end
 
  def set_monbook_complete
    @monbook = Array.new($data_enemies.size) {true}
    @monbook[0] = false
  end
 
  def reset_monbook
    @monbook = Array.new($data_enemies.size) {false}
  end
end

#===============================================================
# ** [Alias] Game_Troop
#--------------------------------------------------------------
class Game_Troop < Game_Unit
  alias :wora_monbook_gamtroop_setup :setup
  def setup(*args)
    wora_monbook_gamtroop_setup(*args)
    $game_system.create_monbook
    unless $game_switches[Wora_Monbook::NO_RECORD_SWITCH]
      @enemies.each {|e| $game_system.monbook[e.enemy_id] = true }
    end
  end
end

#===============================================================
# ** Window_MonsterBHelp
#--------------------------------------------------------------
class Window_MonsterBHelp < Window_Base
  include Wora_Monbook
 
  def initialize
    super(0, 0, 544, WLH + 32)
    # Wyświetla tytuł Bestiariusza
    contents.font.color = system_color
    contents.draw_text(0, 0, contents.width, WLH, TEXT_TITLE)
    # Wylicza ilość znalezionych i pokonanych
    found_count = 0
    $game_system.monbook.each {|e| found_count += 1 if e }
    percent_count = (found_count * 100) / ($data_enemies.size - 1)   
    found_text = found_count.to_s + '/' + ($data_enemies.size - 1).to_s
    percent_text = percent_count.to_s + '%'
    mid_text = ' | '
    right_text = TEXT_FOUND + found_text + mid_text + TEXT_COMPLETED +
  percent_text
    # Wylicza długość tekstu
    found_t_width = contents.text_size(TEXT_FOUND).width
    found_width = contents.text_size(found_text).width
    percent_t_width = contents.text_size(TEXT_COMPLETED).width
    mid_width = contents.text_size(mid_text).width
    right_width = contents.text_size(right_text).width
    # Wyświetla ilość znalezionych i pokonanych
    contents.font.color = normal_color
    contents.draw_text(contents.width - right_width, 0, contents.width, WLH,
  TEXT_FOUND)
    contents.draw_text(contents.width - right_width + found_t_width +
  found_width, 0, contents.width, WLH, mid_text + TEXT_COMPLETED)
    contents.font.color = crisis_color
    contents.draw_text(contents.width - right_width + found_t_width, 0,
  contents.width, WLH, found_text)
    contents.draw_text(contents.width - right_width + found_t_width +
  found_width + mid_width + percent_t_width, 0, contents.width, WLH,
  percent_text)
  end
end

#===============================================================
# ** Window_MonsterBDetail
#--------------------------------------------------------------
class Window_MonsterBDetail < Window_Base
  def initialize(window_temp)
    super(window_temp.x, window_temp.y, window_temp.width, window_temp.height)
    self.opacity = 0
    @win_image = Window_Base.new(self.x, self.y, self.width, self.height)
    self.z = @win_image.z + 1
    @last_enemy = 0
  end
 
  def visible=(bool)
    super
    @win_image.visible = bool
  end
 
  def dispose
    @win_image.dispose
    super
  end
 
  def write_detail(enemy_id)
    return if @last_enemy == enemy_id
    contents.clear
    @win_image.contents.clear
    @last_enemy = enemy_id
    data = $data_enemies[enemy_id]
    # Grafika potwora
    bitmap = Cache.battler(data.battler_name, data.battler_hue)
    bw = bitmap.width < 160 ? (160 - bitmap.width) / 2 : 0
    bh = contents.height - bitmap.height
    @win_image.contents.blt(bw, bh, bitmap, bitmap.rect)
    bitmap.dispose
    # Wyświetl nazwę
    contents.font.color = normal_color
    contents.draw_text(0, 0, contents.width, WLH,
  data.id.to_s + '. ' + data.name)
    # Wyświetl status potwora
    hpx = 120
    draw_enemy_stat(data, contents.width - (hpx * 2) - 32, 0, hpx, 'hp')
    draw_enemy_stat(data, contents.width - hpx, 0, hpx, 'mp')
    draw_enemy_stat(data, contents.width - (hpx * 2) - 32, WLH * 2, hpx, 'atk')
    draw_enemy_stat(data, contents.width - hpx, WLH * 2, hpx, 'def')
    draw_enemy_stat(data, contents.width - (hpx * 2) - 32, WLH * 3, hpx, 'spi')
    draw_enemy_stat(data, contents.width - hpx, WLH * 3, hpx, 'agi')
    draw_enemy_stat(data, contents.width - (hpx * 2) - 32, WLH * 4, hpx, 'hit')
    draw_enemy_stat(data, contents.width - hpx, WLH * 4, hpx, 'eva')
    draw_enemy_stat(data, contents.width - (hpx * 2) - 32, WLH * 6, hpx, 'exp')
    draw_enemy_stat(data, contents.width - hpx, WLH * 6, hpx, 'gold')
    rect = Rect.new(contents.width - (hpx * 2) - 8, (WLH * 8) - 8, 216,
  (WLH * 4) + 16)
    contents.fill_rect(rect, Color.new(0,0,0,140))
    lsize = 2 # Wielkość linii
    lcolor = Color.new(255,255,255,160) # Kolor linii
    contents.fill_rect(rect.x, rect.y, lsize, rect.height, lcolor)
    contents.fill_rect(rect.x, rect.y, rect.width, lsize, lcolor)
    contents.fill_rect(rect.x + rect.width - lsize, rect.y, lsize,
  rect.height, lcolor)
    contents.fill_rect(rect.x, rect.y + rect.height - lsize, rect.width,
  lsize, lcolor)
    contents.font.color = system_color
    contents.draw_text(contents.width - (hpx * 2), WLH * 8, 200, WLH,
  Wora_Monbook::AYENE::TEKST_PRZEDMIOT_1)
    draw_enemy_drop(data, 1, contents.width - (hpx * 2), WLH * 9)
    contents.font.color = system_color
    contents.draw_text(contents.width - (hpx * 2), WLH * 10, 200, WLH,
  Wora_Monbook::AYENE::TEKST_PRZEDMIOT_2)
    draw_enemy_drop(data, 2, contents.width - (hpx * 2), WLH * 11)
  end
 
  def draw_enemy_info(actor, x, y, width, info)   
 contents.draw_text(270, 25, 80, WLH, Ayene::ENEMY_INFO[actor.id])
   
  end
 

  def draw_enemy_stat(actor, x, y, width, stat)
    color1 = system_color
    color2 = normal_color
    slash = false   
    case stat
    when 'hp'
      vocab = Vocab::hp
      number = actor.maxhp     
      slash = true
    when 'mp'
      vocab = Vocab::mp
      number = actor.maxmp     
      slash = true
    when 'atk'
      vocab = Vocab::atk
      number = actor.atk     
    when 'def'
      vocab = Vocab::def
      number = actor.def     
    when 'spi'
      vocab = Vocab::spi
      number = actor.spi     
    when 'agi'
      vocab = Vocab::agi
      number = actor.agi     
    when 'hit'
      vocab = Wora_Monbook::AYENE::TEKST_HIT
      number = actor.hit     
    when 'eva'
      vocab = Wora_Monbook::AYENE::TEKST_UNIK
      number = actor.eva     
    when 'exp'
      vocab = Wora_Monbook::AYENE::TEKST_PD
      number = actor.exp
      color2 = crisis_color
    when 'gold'
      vocab = Wora_Monbook::AYENE::TEKST_ZLOTA
      number = actor.gold
      color2 = crisis_color
    end   
    contents.font.color = color1
    contents.draw_text(x, y, 50, WLH, vocab)
    xr = x + width
    contents.font.color = color2
    if slash
      contents.draw_text(xr - 95, y, 40, WLH, number, 2)
      contents.draw_text(xr - 55, y, 11, WLH, '/', 2)
    end
    w_ava = slash ? 40 : 80
    contents.draw_text(xr - w_ava, y, w_ava, WLH, number, 2)
  end
 
  def draw_enemy_drop(actor, drop_id, x, y)
    drop = eval('actor.drop_item' + drop_id.to_s)
    if drop.kind.zero?
      contents.font.color = normal_color
      contents.draw_text(x, y, 200, WLH, "  ---------")
    else
      case drop.kind
      when 1; item = $data_items[drop.item_id]
      when 2; item = $data_weapons[drop.weapon_id]
      when 3; item = $data_armors[drop.armor_id]
      end
      draw_item_name(item, x, y)
    end
  end
end
#===============================================================
# ** Scene_MonsterBook
#--------------------------------------------------------------
class Scene_MonsterBook < Scene_Base
  def initialize(from_menu = false)
    @from_menu = from_menu
  end
 
  def start
    super
    create_menu_background
    $game_system.create_monbook
    @window_help = Window_MonsterBHelp.new
    # Tworzenie listy potworów
    monlist = []
    $game_system.monbook.each_index do |i|
      next if i == 0
      # Jeśli gracz znalazł potwora
      if $game_system.monbook[i] and
    !Wora_Monbook::NO_DATA_MONSTER.include?(i)
        montext = i.to_s + '. ' + $data_enemies[i].name
      else # Jeśli gracz nie znalazł
        montext = i.to_s + '.'       
      end
      monlist << montext
    end
    @window_monlist = Window_Command.new(544, monlist, 2)
    @window_monlist.y = @window_help.height
    @window_monlist.height = Graphics.height - @window_help.height
    @window_monlist.active = true
    @window_mondetail = Window_MonsterBDetail.new(@window_monlist)
    @window_mondetail.visible = false
  end
 
  def update
    super
    if @window_monlist.active
      @window_monlist.update
      if Input.trigger?(Input::C)
        # Wyświetlenie informacji o potworze
        if $game_system.monbook[@window_monlist.index + 1] and
        !Wora_Monbook::NO_DATA_MONSTER.include?(@window_monlist.index + 1)
          Sound.play_decision
          @window_monlist.active = false
          @window_monlist.visible = false
          @window_mondetail.active = true
          @window_mondetail.visible = true
          @window_mondetail.write_detail(@window_monlist.index + 1)
        else
          Sound.play_cancel
        end
      elsif Input.trigger?(Input::B)
        Sound.play_cancel
        # Powrót
        $scene = @from_menu ? Scene_Menu.new(Wora_Monbook::MENU_INDEX) :
      Scene_Map.new
      end
    elsif @window_mondetail.active
      if Input.trigger?(Input::B)
        Sound.play_cancel
        @window_monlist.active = true
        @window_monlist.visible = true
        @window_mondetail.active = false
        @window_mondetail.visible = false
      end
    end
  end
 
  def terminate
    super
    dispose_menu_background
    @window_help.dispose
    @window_monlist.dispose
    @window_mondetail.dispose
  end
end

#=============================================================
# * Window_Command Insert Tool
#=============================================================
class Window_Command < Window_Selectable
  unless method_defined? :wora_cominstool_wincom_ini
    alias wora_cominstool_wincom_ini initialize
    alias wora_cominstool_wincom_drawitem draw_item
  end
 
  #------------------------------------
  # * [Alias] Initialize
  #------------------------------------
  def initialize(*args)
    @disabled_commands = []
    wora_cominstool_wincom_ini(*args)
  end
 
  #------------------------------------
  # * [Alias] Draw_Item
  #------------------------------------
  def draw_item(*args)
    wora_cominstool_wincom_drawitem(*args)   
    @disabled_commands[args[0]] = args[1].nil? || args[1] ? nil : true
  end
 
  #------------------------------------
  # * Insert Command
  #------------------------------------
  def ins_command(index, text)
    @commands.insert(index, text)
    @disabled_commands.insert(index, nil)   
    old_disabled_commands = @disabled_commands.dup
    self.height = (@commands.size + @column_max - 1) / @column_max * WLH + 32
    @item_max = @commands.size
    create_contents           
    refresh                   
    old_disabled_commands.each_index do |i|
      if !old_disabled_commands[i].nil?
        draw_item(i, false)   
      end
    end
  end
 
  #------------------------------------
  # * Add Command
  #------------------------------------
  def add_command(text)
    ins_command(@commands.size, text)
  end
end

#=============================================================
# * Dodanie Komendy w Menu
#=============================================================
if Wora_Monbook::SHOW_IN_MENU
  class Scene_Menu < Scene_Base 
    #--------------------------------------------------------------------------
    # * Sortowanie Komend w Menu
    #--------------------------------------------------------------------------
    def wsort_newcommand
      @wsorted_command ||= []
      wnewcommand = @wnewcommand - @wsorted_command
      wnewcommand.sort.each {|i| @menu_index += 1 if @menu_index >= i }
      @command_window.index = @menu_index
      @wsorted_command = @wsorted_command + @wnewcommand
    end

    #--------------------------------------------------------------------------
    # * [Alias] Create Command Window
    #--------------------------------------------------------------------------
    alias wora_menucomorg_scemenu_crecomwin create_command_window
    def create_command_window(*args)
      wora_menucomorg_scemenu_crecomwin(*args)     
      @command_window.ins_command(Wora_Monbook::MENU_INDEX,
    Wora_Monbook::MENU_COMMAND)     
      @wnewcommand ||= []
      @wnewcommand << Wora_Monbook::MENU_INDEX
      wsort_newcommand
    end

    #--------------------------------------------------------------------------
    # * [Alias] Update Command Selection
    #--------------------------------------------------------------------------
    alias wora_menucomorg_scemenu_updcomsel update_command_selection
    def update_command_selection(*args)
      @menucomorpg_change = false     
      if Input.trigger?(Input::C) and @command_window.index ==
      Wora_Monbook::MENU_INDEX
        Sound.play_decision
        $scene = Scene_MonsterBook.new(true)
      else
        if Input.trigger?(Input::C) and @command_window.index >
        Wora_Monbook::MENU_INDEX
          @command_window.index -= 1
          @menucomorpg_change = true
        end
        wora_menucomorg_scemenu_updcomsel(*args)
      end
      @command_window.index += 1 if @menucomorpg_change
    end
   
    #--------------------------------------------------------------------------
    # * [Alias] Update Actor Selection
    #--------------------------------------------------------------------------
    alias wora_menucomorg_scemenu_updactsel update_actor_selection
    def update_actor_selection(*args)
      @menucomorpg_change = false     
      if Input.trigger?(Input::C) and @command_window.index >
      Wora_Monbook::MENU_INDEX
        @command_window.index -= 1
        @menucomorpg_change = true
      end
      wora_menucomorg_scemenu_updactsel(*args)
      @command_window.index += 1 if @menucomorpg_change
    end
  end
end


Demo
niepotrzebne

Screenshot




Instrukcja
1. Wklej skrypt nad "Main" w Edytorze Skryptu.
2. Reszta instrukcji znajduje się w treści skryptu.

Konfiguracja skryptu
Spoiler:


Kod:
#--------------------------------------------------------------
# ** ZASTOSOWANIE (ręczne wywoływanie skryptów)
#--------------------------------------------------------------
# * By otworzyć Bestiariusz wywołaj skrypt:
#  $scene = Scene_MonsterBook.new

# * Kompletny wykaz potworów:
#  $game_system.set_monbook_complete

# * Zresetowanie wykazu bestii:
#  $game_system.reset_monbook
#--------------------------------------------------------------
# * Pokaż informacje o potworze z ID:
#  $game_system.monbook[id_potwora] = true

# * Ukryj informacje o potworze z ID:
#  $game_system.monbook[id_potwora] = false

# ^ Zmień 'id_potwora' na ID wybranej bestii
# ** e.g. $game_system.monbook[10] = true
#    pokazuje w Bestiariuszu dane potwora Z ID 10
#===============================================================



Piszcie w razie problemów.

Greed - Czw 22 Paź, 2009 12:37

Wow! Ten skrypt jest świetny. dzięki!
Czegoś takiego mi brakowało :)

Szczurek - Czw 22 Paź, 2009 15:44

No, właśnie ten skrypt znalazłem i spolszczyłem :D
Jak na razie spisuje się nieźle.
Mam tylko jeden kłopot - w common events dodałem, że po wciśnięciu klawisza "x" ma wywoływać bestiariusz, zrobiłem proces równoległy, który uruchamia ten event i owszem, bestiariusz się odpala, ale po wciśnięciu "a" :shock: Gdy podpisałem pod "c", uruchamiał się po wciśnięciu shifta :/
Że tak zapytam ocb ?

Lartarin - Czw 22 Paź, 2009 16:30

Podczas gry wciśnij F1 i tam spróbuj ustawić
Ayene - Czw 22 Paź, 2009 20:35

Tak jak napisała Lartarin. Zmiany przycisków możesz dokonać po wciśnięciu F1 i po przejściu na odpowiednią zakładkę. Klawisze odpowiadają poszczególnym "triggerom" (bo tak się one nazywają w Rubym).

I tak domyślnie:
- trigger C - to Enter / Spacja / Z na klawiaturze (OK)
- trigger B - to ESC / X / Num0 / Insert na klawiaturze (Anuluj)
- trigger A - Shift na klawiaturze (szybkie chodzenie na mapie)
- trigger x - A na klawiaturze
- trigger Y - S na klawiaturze
- trigger Z - D na klawiaturze
- trigger R - W na klawiaturze (następny bohater)
- trigger L - Q na klawiaturze (poprzedni bohater)

Wykorzystanie triggerów może być dowolne. Domyślnie jednak w skryptach używa się triggera C dla wszystkich komend zatwierdzających oraz triggera B dla komend wyjścia.
Reszta zależy od autora.

Po wciśnięciu F1 można również ustawić przyciski na pada.

Szczurek - Czw 22 Paź, 2009 20:48

Mhmmmm... Dziękuję za profesjonalną pomoc ;)
Mam nadzieję, że niedługo dołączę do szanownego grona speców RM'a :)

MaTe - Sob 23 Sty, 2010 12:03

Bardzo potrzebuje tego bestiariusza, a robię grę na XP i Bestiariusz XP tam niedziała. I mam pytanei czy jeśli ściągnę VX'a, będę mógł otworzyć Projekt z XP ?? I czy się w nim nic nie pozmienia.
Ayene - Sob 23 Sty, 2010 13:33

Projektów utworzonych w VX'ie nie można otworzyć w XP i vice versa. Podobnie ze skryptami - te z XP nie działają po VX i odwrotnie ;-)
MaTe - Sob 23 Sty, 2010 17:25

Wiem, że Google nie gryzie, ale Czy moglby mi ktoś podać SPRAWDZONY link do SPRAWDZONEGO RPG Maker VX (najlepiej ten link, z którego wy ściągaliście), bo jak dzisiaj ściągnąłem, to instalacja zatrzymywała się na 0 %. I jescze (już ostatnie) pytanko:
- Czy mogę mieć naraz zainstalowane RPG Maker XP i RPG Maker VX ??

bionicl - Sob 23 Sty, 2010 17:30

i VX i Xp na raz można... A z tym zaufanym linkiem, to ja nie pamiętam...
Pr0mes - Sro 27 Sty, 2010 13:32

Skrypt bardzo przydatny, a do Xp jest już skrypt podany
Agumon - Sob 30 Sty, 2010 19:41

ej a jak umieścić bestiariusz żeby nie pokazywał się w menu gracza tylko jak się da zdarzenie książki to dopiero sie pokaże???
Ayene - Sob 30 Sty, 2010 20:10

Wyłączasz Bestiariusz w skrypcie:
Kod:
SHOW_IN_MENU = false


Dajesz zdarzenie z grafiką książki. Przechodzisz na trzecią stronę poleceń i wybierasz Script.
Następnie wpisujesz:
Kod:
$scene = Scene_MonsterBook.new

Agumon - Sob 30 Sty, 2010 21:58

Wyświetla się błąd :

Ayene - Sob 30 Sty, 2010 22:07

Hmm... ciekawe... a spróbuj zamienić fragment:

Kod:
  alias :wora_monbook_gamsys_ini :initialize
  def initialize
    wora_monbook_gamsys_ini
    create_monbook
  end

na poniższy:
Kod:
  def initialize
    @timer = 0
    @timer_working = false
    @save_disabled = false
    @menu_disabled = false
    @encounter_disabled = false
    @save_count = 0
    @version_id = 0
    create_monbook
  end

Agumon - Nie 31 Sty, 2010 11:43

Wszystko dobrze tylko jeszcze ten wyskakuje...

Inna linijka

PS : Ayene Pomożesz w tym proszę :
http://www.ultimateam.pl/viewtopic.php?t=2404

Ayene - Nie 31 Sty, 2010 13:24

A spróbuj podmienić wcześniejszy skrypt w całości na poniższy:
Spoiler:

Kod:
#===============================================================
# [VX] BESTIARIUSZ
#--------------------------------------------------------------
# by Woratana [woratana@hotmail.com]
# tłumaczenie i korekta by Ayene [yurika@o2.pl]
#--------------------------------------------------------------
# ** ZASTOSOWANIE
#--------------------------------------------------------------
# * By otworzyć Bestiariusz wywołaj skrypt:
#  $scene = Scene_MonsterBook.new

# * Kompletny wykaz potworów:
#  $game_system.set_monbook_complete

# * Zresetowanie wykazu bestii:
#  $game_system.reset_monbook
#--------------------------------------------------------------
# * Pokaż informacje o potworze z ID:
#  $game_system.monbook[id_potwora] = true

# * Ukryj informacje o potworze z ID:
#  $game_system.monbook[id_potwora] = false

# ^ Zmień 'id_potwora' na ID wybranej bestii
# ** e.g. $game_system.monbook[10] = true
#    pokazuje w Bestiariuszu dane potwora Z ID 10
#===============================================================

module Wora_Monbook

#===============================================================
# ** [Część do edycji] - Konfiguracja skryptu
#--------------------------------------------------------------
  SHOW_IN_MENU = false # Pokazuj Bestiariusz w Menu? (true / false)
  MENU_COMMAND = 'Bestiariusz' # Nazwa komendy w menu
  MENU_INDEX = 2 # Położenie w menu od góry (2 - czyli na trzeciej pozycji)
 
  TEXT_TITLE = 'Bestiariusz'
  # Tytuł Bestariusza (Wyświetla się w górnym lewym rogu okna)
  TEXT_FOUND = 'Znalezione: '
  # Tekst przed liczbą znalezionych potworów
  TEXT_COMPLETED = 'Pokonane: '
  # Tekst przed wykazem procentowym pokonanych bestii
 
  NO_RECORD_SWITCH = 10
  # Włączony przełącznik na ON -> nowo napotkane potwory nie będą dodawane do
  # bestiariusza.
 
  NO_DATA_MONSTER = [3]
  # Ukrywa bestie w bestariuszu. Wystarczy wpisać ID potwora.
  # np. [1, 3, 5] ukrywa potwory z ID 1, 3 i 5.
 
 
  module AYENE # <-- nie usuwać
   
  TEKST_ZLOTA = 'ZŁ'  # tekst ZŁOTA w bestiariuszu
  TEKST_PD = 'PD' # tekst PUNKTÓW DOŚWIADCZENIA
  TEKST_HIT = 'HIT' # tekst TRAFIENIA
  TEKST_UNIK = 'UNIK' # tekst UNIKU   
  TEKST_PRZEDMIOT_1 = 'Przedmiot 1'  # tekst pierwszego przedmiotu
  TEKST_PRZEDMIOT_2 = 'Przedmiot 2'  # tekst drugiego przedmiotu
 
  end # <-- nie usuwać
 
 
 
#===============================================================
end

# Koniec konfiguracji

#===============================================================
# ** [Alias] Game_System
#--------------------------------------------------------------
class Game_System
  attr_accessor :monbook
 
  def initialize
    @timer = 0
    @timer_working = false
    @save_disabled = false
    @menu_disabled = false
    @encounter_disabled = false
    @save_count = 0
    @version_id = 0
    create_monbook
  end
 
  def create_monbook
    @monbook ||= Array.new($data_enemies.size) {false}
  end
 
  def set_monbook_complete
    @monbook = Array.new($data_enemies.size) {true}
    @monbook[0] = false
  end
 
  def reset_monbook
    @monbook = Array.new($data_enemies.size) {false}
  end
end

#===============================================================
# ** [Alias] Game_Troop
#--------------------------------------------------------------
class Game_Troop < Game_Unit
  alias :wora_monbook_gamtroop_setup :setup
  def setup(*args)
    wora_monbook_gamtroop_setup(*args)
    $game_system.create_monbook
    unless $game_switches[Wora_Monbook::NO_RECORD_SWITCH]
      @enemies.each {|e| $game_system.monbook[e.enemy_id] = true }
    end
  end
end

#===============================================================
# ** Window_MonsterBHelp
#--------------------------------------------------------------
class Window_MonsterBHelp < Window_Base
  include Wora_Monbook
 
  def initialize
    super(0, 0, 544, WLH + 32)
    # Wyświetla tytuł Bestiariusza
    contents.font.color = system_color
    contents.draw_text(0, 0, contents.width, WLH, TEXT_TITLE)
    # Wylicza ilość znalezionych i pokonanych
    found_count = 0
    $game_system.monbook.each {|e| found_count += 1 if e }
    percent_count = (found_count * 100) / ($data_enemies.size - 1)   
    found_text = found_count.to_s + '/' + ($data_enemies.size - 1).to_s
    percent_text = percent_count.to_s + '%'
    mid_text = ' | '
    right_text = TEXT_FOUND + found_text + mid_text + TEXT_COMPLETED +
  percent_text
    # Wylicza długość tekstu
    found_t_width = contents.text_size(TEXT_FOUND).width
    found_width = contents.text_size(found_text).width
    percent_t_width = contents.text_size(TEXT_COMPLETED).width
    mid_width = contents.text_size(mid_text).width
    right_width = contents.text_size(right_text).width
    # Wyświetla ilość znalezionych i pokonanych
    contents.font.color = normal_color
    contents.draw_text(contents.width - right_width, 0, contents.width, WLH,
  TEXT_FOUND)
    contents.draw_text(contents.width - right_width + found_t_width +
  found_width, 0, contents.width, WLH, mid_text + TEXT_COMPLETED)
    contents.font.color = crisis_color
    contents.draw_text(contents.width - right_width + found_t_width, 0,
  contents.width, WLH, found_text)
    contents.draw_text(contents.width - right_width + found_t_width +
  found_width + mid_width + percent_t_width, 0, contents.width, WLH,
  percent_text)
  end
end

#===============================================================
# ** Window_MonsterBDetail
#--------------------------------------------------------------
class Window_MonsterBDetail < Window_Base
  def initialize(window_temp)
    super(window_temp.x, window_temp.y, window_temp.width, window_temp.height)
    self.opacity = 0
    @win_image = Window_Base.new(self.x, self.y, self.width, self.height)
    self.z = @win_image.z + 1
    @last_enemy = 0
  end
 
  def visible=(bool)
    super
    @win_image.visible = bool
  end
 
  def dispose
    @win_image.dispose
    super
  end
 
  def write_detail(enemy_id)
    return if @last_enemy == enemy_id
    contents.clear
    @win_image.contents.clear
    @last_enemy = enemy_id
    data = $data_enemies[enemy_id]
    # Grafika potwora
    bitmap = Cache.battler(data.battler_name, data.battler_hue)
    bw = bitmap.width < 160 ? (160 - bitmap.width) / 2 : 0
    bh = contents.height - bitmap.height
    @win_image.contents.blt(bw, bh, bitmap, bitmap.rect)
    bitmap.dispose
    # Wyświetl nazwę
    contents.font.color = normal_color
    contents.draw_text(0, 0, contents.width, WLH,
  data.id.to_s + '. ' + data.name)
    # Wyświetl status potwora
    hpx = 120
    draw_enemy_stat(data, contents.width - (hpx * 2) - 32, 0, hpx, 'hp')
    draw_enemy_stat(data, contents.width - hpx, 0, hpx, 'mp')
    draw_enemy_stat(data, contents.width - (hpx * 2) - 32, WLH * 2, hpx, 'atk')
    draw_enemy_stat(data, contents.width - hpx, WLH * 2, hpx, 'def')
    draw_enemy_stat(data, contents.width - (hpx * 2) - 32, WLH * 3, hpx, 'spi')
    draw_enemy_stat(data, contents.width - hpx, WLH * 3, hpx, 'agi')
    draw_enemy_stat(data, contents.width - (hpx * 2) - 32, WLH * 4, hpx, 'hit')
    draw_enemy_stat(data, contents.width - hpx, WLH * 4, hpx, 'eva')
    draw_enemy_stat(data, contents.width - (hpx * 2) - 32, WLH * 6, hpx, 'exp')
    draw_enemy_stat(data, contents.width - hpx, WLH * 6, hpx, 'gold')
    rect = Rect.new(contents.width - (hpx * 2) - 8, (WLH * 8) - 8, 216,
  (WLH * 4) + 16)
    contents.fill_rect(rect, Color.new(0,0,0,140))
    lsize = 2 # Wielkość linii
    lcolor = Color.new(255,255,255,160) # Kolor linii
    contents.fill_rect(rect.x, rect.y, lsize, rect.height, lcolor)
    contents.fill_rect(rect.x, rect.y, rect.width, lsize, lcolor)
    contents.fill_rect(rect.x + rect.width - lsize, rect.y, lsize,
  rect.height, lcolor)
    contents.fill_rect(rect.x, rect.y + rect.height - lsize, rect.width,
  lsize, lcolor)
    contents.font.color = system_color
    contents.draw_text(contents.width - (hpx * 2), WLH * 8, 200, WLH,
  Wora_Monbook::AYENE::TEKST_PRZEDMIOT_1)
    draw_enemy_drop(data, 1, contents.width - (hpx * 2), WLH * 9)
    contents.font.color = system_color
    contents.draw_text(contents.width - (hpx * 2), WLH * 10, 200, WLH,
  Wora_Monbook::AYENE::TEKST_PRZEDMIOT_2)
    draw_enemy_drop(data, 2, contents.width - (hpx * 2), WLH * 11)
  end
 
  def draw_enemy_info(actor, x, y, width, info)   
 contents.draw_text(270, 25, 80, WLH, Ayene::ENEMY_INFO[actor.id])
   
  end
 

  def draw_enemy_stat(actor, x, y, width, stat)
    color1 = system_color
    color2 = normal_color
    slash = false   
    case stat
    when 'hp'
      vocab = Vocab::hp
      number = actor.maxhp     
      slash = true
    when 'mp'
      vocab = Vocab::mp
      number = actor.maxmp     
      slash = true
    when 'atk'
      vocab = Vocab::atk
      number = actor.atk     
    when 'def'
      vocab = Vocab::def
      number = actor.def     
    when 'spi'
      vocab = Vocab::spi
      number = actor.spi     
    when 'agi'
      vocab = Vocab::agi
      number = actor.agi     
    when 'hit'
      vocab = Wora_Monbook::AYENE::TEKST_HIT
      number = actor.hit     
    when 'eva'
      vocab = Wora_Monbook::AYENE::TEKST_UNIK
      number = actor.eva     
    when 'exp'
      vocab = Wora_Monbook::AYENE::TEKST_PD
      number = actor.exp
      color2 = crisis_color
    when 'gold'
      vocab = Wora_Monbook::AYENE::TEKST_ZLOTA
      number = actor.gold
      color2 = crisis_color
    end   
    contents.font.color = color1
    contents.draw_text(x, y, 50, WLH, vocab)
    xr = x + width
    contents.font.color = color2
    if slash
      contents.draw_text(xr - 95, y, 40, WLH, number, 2)
      contents.draw_text(xr - 55, y, 11, WLH, '/', 2)
    end
    w_ava = slash ? 40 : 80
    contents.draw_text(xr - w_ava, y, w_ava, WLH, number, 2)
  end
 
  def draw_enemy_drop(actor, drop_id, x, y)
    drop = eval('actor.drop_item' + drop_id.to_s)
    if drop.kind.zero?
      contents.font.color = normal_color
      contents.draw_text(x, y, 200, WLH, "  ---------")
    else
      case drop.kind
      when 1; item = $data_items[drop.item_id]
      when 2; item = $data_weapons[drop.weapon_id]
      when 3; item = $data_armors[drop.armor_id]
      end
      draw_item_name(item, x, y)
    end
  end
end
#===============================================================
# ** Scene_MonsterBook
#--------------------------------------------------------------
class Scene_MonsterBook < Scene_Base
  def initialize(from_menu = false)
    @from_menu = from_menu
  end
 
  def start
    super
    create_menu_background
    $game_system.create_monbook
    @window_help = Window_MonsterBHelp.new
    # Tworzenie listy potworów
    monlist = []
    $game_system.monbook.each_index do |i|
      next if i == 0
      # Jeśli gracz znalazł potwora
      if $game_system.monbook[i] and
    !Wora_Monbook::NO_DATA_MONSTER.include?(i)
        montext = i.to_s + '. ' + $data_enemies[i].name
      else # Jeśli gracz nie znalazł
        montext = i.to_s + '.'       
      end
      monlist << montext
    end
    @window_monlist = Window_Command.new(544, monlist, 2)
    @window_monlist.y = @window_help.height
    @window_monlist.height = Graphics.height - @window_help.height
    @window_monlist.active = true
    @window_mondetail = Window_MonsterBDetail.new(@window_monlist)
    @window_mondetail.visible = false
  end
 
  def update
    super
    if @window_monlist.active
      @window_monlist.update
      if Input.trigger?(Input::C)
        # Wyświetlenie informacji o potworze
        if $game_system.monbook[@window_monlist.index + 1] and
        !Wora_Monbook::NO_DATA_MONSTER.include?(@window_monlist.index + 1)
          Sound.play_decision
          @window_monlist.active = false
          @window_monlist.visible = false
          @window_mondetail.active = true
          @window_mondetail.visible = true
          @window_mondetail.write_detail(@window_monlist.index + 1)
        else
          Sound.play_cancel
        end
      elsif Input.trigger?(Input::B)
        Sound.play_cancel
        # Powrót
        $scene = @from_menu ? Scene_Menu.new(Wora_Monbook::MENU_INDEX) :
      Scene_Map.new
      end
    elsif @window_mondetail.active
      if Input.trigger?(Input::B)
        Sound.play_cancel
        @window_monlist.active = true
        @window_monlist.visible = true
        @window_mondetail.active = false
        @window_mondetail.visible = false
      end
    end
  end
 
  def terminate
    super
    dispose_menu_background
    @window_help.dispose
    @window_monlist.dispose
    @window_mondetail.dispose
  end
end


cj2 - Sro 10 Mar, 2010 14:35

A można zmienić nazwę bestiaurusza na np. Spis wrogów ?
Ayene - Sro 10 Mar, 2010 22:00

Tak, można w linijce:
Kod:
MENU_COMMAND = 'Bestiariusz' # Nazwa komendy w menu

FireBlade - Wto 04 Maj, 2010 23:04

A mi nie wyświetla pokonanego potwora ale pisze że znalezione 1/30 po jego pokonaniu
jak to naprawić ? :/

Ayene - Sro 05 Maj, 2010 09:01

Jesteś pewna, że ID potworka nie jest wymienione tutaj:
Kod:
NO_DATA_MONSTER = [1, 3]

Jak wiadomo w powyższej tablicy wpisuje się ID potworów z Bazy danych po to, aby ich dane się nie wyświetlały.

sitax5 - Wto 20 Lip, 2010 15:59

kiedy włączam kod do normalnego spisu wszystkich potworów i otwieram w menu przedmioty(bo zrobiłem książke z listą wszystkich potworów) to pojawia się błąd o takiej treści:
??? 'MonsterBook' ? 459 ??? NoMethodError ????????
undefined method `index' for nil:NilClass

Flanagan - Wto 20 Lip, 2010 16:18

napisałeś "MonsterBook
napisz to i będzie dobrze:
$scene = Scene_MonsterBook.new

sitax5 - Wto 20 Lip, 2010 17:31

chodzi mi oto żebym nie musiał pokonywać potworów tylko odrazu będą wszystkie z informacjami i żeby niebyło napisów: Pokonane 0% Znalezione 0/30 bo jak próbuje wpisać kod aktywujący pełną liste potworów to nic się nie dzieje
Ayene - Wto 20 Lip, 2010 18:43

Używając polecenia "Script" w edycji zdarzeń, wywołaj:
Kod:
$game_system.set_monbook_complete

sitax5 - Sro 21 Lip, 2010 07:59

Songoxyz
Hyba skrypt koliduje z ring menu bo jak klikam przedmioty albo coś to mi to wyskakuje
Ayene
Cały czas używam tego kodu ale nic się nie dzieje jak by projekt wogóle nie zwracał uwagi na to

Karlos - Nie 01 Sie, 2010 10:50

A jak zrobić tak, aby niektóre potwory nie pojawiały się w Bestiariuszu wogóle? Żeby nie było informcji Pokonane 10% Znalezione 1/10 gdy wygra się walkę z nowym stworem oraz żeby nie było miejsca na nie?
pokpo - Sob 06 Lis, 2010 22:38

da się zrobić żeby ten skrypt działał ze skryptem WALKA W CZASIE RZECZYWISTYM
tzn. jak zabije potwora w czasie rzeczywistym to wyświetla się on w bestariuszu

Itaki - Wto 23 Lis, 2010 14:15

A można ten skrypt skonfigurować na menu środkowe??
kylu31 - Wto 23 Lis, 2010 19:31

mam pytanie co do tego bo fajnie i pięknie wszystko ale jak daje aby w bestariuszu nie widać jak dam putworka nr.1 nie wiem jak to wysłumaczyć jak jest :
1. 2.
3. 4.
5. 6.

to nie moge dac potworków pod 1,3,5 itd a z prawej stronie 1,4,6 itd. widać (nazwy ?) no ;p i lepiej tego wytłumaczyć nie umiem :D

PaKiTos - Nie 28 Lis, 2010 10:27

na samej górze skryptu masz
Spoiler:

Kod:

#===============================================================
# [VX] BESTIARIUSZ
#--------------------------------------------------------------
# by Woratana [woratana@hotmail.com]
# tłumaczenie i korekta by Ayene [yurika@o2.pl]
#--------------------------------------------------------------
# ** ZASTOSOWANIE
#--------------------------------------------------------------
# * By otworzyć Bestiariusz wywołaj skrypt:
#  $scene = Scene_MonsterBook.new

# * Kompletny wykaz potworów:
#  $game_system.set_monbook_complete

# * Zresetowanie wykazu bestii:
#  $game_system.reset_monbook
#--------------------------------------------------------------
# * Pokaż informacje o potworze z ID:
#  $game_system.monbook[id_potwora] = true

# * Ukryj informacje o potworze z ID:
#  $game_system.monbook[id_potwora] = false

# ^ Zmień 'id_potwora' na ID wybranej bestii
# ** e.g. $game_system.monbook[10] = true
#    pokazuje w Bestiariuszu dane potwora Z ID 10
#===============================================================

module Wora_Monbook

#===============================================================
# ** [Część do edycji] - Konfiguracja skryptu
#--------------------------------------------------------------
  SHOW_IN_MENU = true # Pokazuj Bestiariusz w Menu? (true / false)
  MENU_COMMAND = 'Bestiariusz' # Nazwa komendy w menu
  MENU_INDEX = 2 # Położenie w menu od góry (2 - czyli na trzeciej pozycji)
 
  TEXT_TITLE = 'Bestiariusz'
  # Tytuł Bestariusza (Wyświetla się w górnym lewym rogu okna)
  TEXT_FOUND = 'Znalezione: '
  # Tekst przed liczbą znalezionych potworów
  TEXT_COMPLETED = 'Pokonane: '
  # Tekst przed wykazem procentowym pokonanych bestii
 
  NO_RECORD_SWITCH = 10
  # Włączony przełącznik na ON -> nowo napotkane potwory nie będą dodawane do
  # bestiariusza.
 
  NO_DATA_MONSTER = [1, 3]
  # Ukrywa bestie w bestariuszu. Wystarczy wpisać ID potwora.
  # np. [1, 3, 5] ukrywa potwory z ID 1, 3 i 5.


Zamień to na
Spoiler:

Kod:

#===============================================================
# [VX] BESTIARIUSZ
#--------------------------------------------------------------
# by Woratana [woratana@hotmail.com]
# tłumaczenie i korekta by Ayene [yurika@o2.pl]
#--------------------------------------------------------------
# ** ZASTOSOWANIE
#--------------------------------------------------------------
# * By otworzyć Bestiariusz wywołaj skrypt:
#  $scene = Scene_MonsterBook.new

# * Kompletny wykaz potworów:
#  $game_system.set_monbook_complete

# * Zresetowanie wykazu bestii:
#  $game_system.reset_monbook
#--------------------------------------------------------------
# * Pokaż informacje o potworze z ID:
#  $game_system.monbook[id_potwora] = true

# * Ukryj informacje o potworze z ID:
#  $game_system.monbook[id_potwora] = false

# ^ Zmień 'id_potwora' na ID wybranej bestii
# ** e.g. $game_system.monbook[10] = true
#    pokazuje w Bestiariuszu dane potwora Z ID 10
#===============================================================

module Wora_Monbook

#===============================================================
# ** [Część do edycji] - Konfiguracja skryptu
#--------------------------------------------------------------
  SHOW_IN_MENU = true # Pokazuj Bestiariusz w Menu? (true / false)
  MENU_COMMAND = 'Bestiariusz' # Nazwa komendy w menu
  MENU_INDEX = 2 # Położenie w menu od góry (2 - czyli na trzeciej pozycji)
 
  TEXT_TITLE = 'Bestiariusz'
  # Tytuł Bestariusza (Wyświetla się w górnym lewym rogu okna)
  TEXT_FOUND = 'Znalezione: '
  # Tekst przed liczbą znalezionych potworów
  TEXT_COMPLETED = 'Pokonane: '
  # Tekst przed wykazem procentowym pokonanych bestii
 
  NO_RECORD_SWITCH = 10
  # Włączony przełącznik na ON -> nowo napotkane potwory nie będą dodawane do
  # bestiariusza.
 
  NO_DATA_MONSTER = []
  # Ukrywa bestie w bestariuszu. Wystarczy wpisać ID potwora.
  # np. [1, 3, 5] ukrywa potwory z ID 1, 3 i 5.


Cloudziuszek - Sob 12 Lut, 2011 00:24

Hej. Mam drobny problem. Jak mam zwiększyć bestiariusz? Chciałbym aby było miejsce na około 56 wrogów. Jak to zrobić?
Pytanie numer dwa. Jak zrobić aby JAKIŚ wróg był na przykład na 15 miejscu. Powiedzmy, że jest bossem i chciałbym by miał wyznaczone miejsce. Jak mam to zrobić? *-*

Ayene - Sob 12 Lut, 2011 01:22

Cloudziuszek, bestiariusz dopasowuje się automatycznie do ilości potworów w bazie danych. Jeśli nie wypiszesz ID bestii, których ma nie wyświetlać, to wyświetli wszystkie. Żeby 'wróg' był na 15 miejscu wystarczy w bazie danych przypisać go pod ID 15.
Cloudziuszek - Sob 12 Lut, 2011 01:57

Dziękuję. ♥ Nie ma to jak szybka pomoc. <3
reshi - Pią 18 Mar, 2011 18:38

Ja mam taki problem że wklejam skrypt nad main potem ok biję potwora gdy go pobiję wchodzę w bestariusz to mam 1/45 2% czy tam 4% lecz idę na dół i szukam nazwy tego potwora (pełzak czy tam palzak) i nie ma jej ! Co zrobić żeby była ? I gdzie wkleić Konfiguracja skryptu ? Pliz szybko potrzebuje pomocy bo teraz skrypty wklejam i z tym mam problem .
Angius - Pią 18 Mar, 2011 19:24

Pełzak. I bardzo możliwe, że w konfiguracji jest on ustawiony jako potwór, którego nie zlicza.
Konfiguracji nigdzie nie wklejasz, to przecież fragmenty skryptu! Skoro masz skrypt nad main, to kilka jego linijek jest właśnie konfiguracją.

Edit:
Dokładnie. Masz linijkę
Kod:
NO_DATA_MONSTER = [1, 3]
, która sprawia, że nie wyświetla się potwór o ID 1 oraz 3. Po prostu wpisz tam 0, albo zostaw puste.

Masz to samo napisane w poście Ayene wyżej. Jest tam, ze jeśli nie podasz ID, to wyświetli wszystkie.

reshi - Sob 19 Mar, 2011 10:17

Aha dzięki teraz już czaję ale mam nowy problem nie mam bestariusza w menu a oto screen
aha a mam pytanie da się żeby to menu dało się przesuwać paskiem tak jak np na stronie po prawej tym paskiem się przesuwa (góra,dół) bo mi się wydaję że ja tam nie mam miejsca już na bestariusz i dlatego go nie czyta a jak miałbym ten suwak to może by go czytało . Wkleiłem bestariusz nad main .

MrSturm94 - Sob 09 Lip, 2011 11:36

Cześć mam coś takiego

"SHOW_IN_MENU = true # Pokazuj Bestiariusz w Menu? (true / false)"

a bestsariusza dale nie ma :/ czy ja coś robię źle bo męcze się z tym a skrypt jak by nie reagował :/ ;-(

Ayene - Sob 09 Lip, 2011 12:41

Pewnie masz inne skrypty, które ingerują w Menu. Może jakieś rozdawanie punktów albo dodatkowe opcje?
MrSturm94 - Nie 10 Lip, 2011 11:10

pobawię się coś w opcjach

nie ma co się dziwić skryptów dodałem że hoho :D

jak nic nie znajdę to odpuszcze sobie ten skrypt


*EDIT

heh jak daje nowy projekt to jest ten bestsariusz :D

przerzucę skrypt po skrypcie i sprawdzę co było tego przyczyną.



*EDIT


Odnalazłem skrypt który nie współpracuje z bestsariuszem jest to "Menu z dodatkami" czyli ile trzeba expa itp

wystarczy go usunąć i znów jest bestsariusz, mam nadzieję że komuś to pomoże w przyszłości ^ ^

PaayJer - Pon 10 Paź, 2011 19:15

http://www.ultimateam.pl/...p?p=63208#63208

Czy ktoś mógłby pomóc? Bardzo mi zależy...

Michu_1999 - Nie 06 Lis, 2011 12:35

A co zrobić żeby po naciśnięciu przycisku "B" pokazywał się Bestiariusz
Ogr78 - Nie 06 Lis, 2011 12:39

yyyyyyyyyyy Ayene tylko zrob tak zeby sie odrazu wszystkie potwory wywietlaly bo wszystko jest puste!
tracersgta - Nie 06 Lis, 2011 12:47

@Michu Typowe Zdarzenie(równoległe!): Warunek: gdy przycisk B jest naciśnięty(w programie jest to inny, ale nie paamiętam jaki) to wywołaj skrypt Scene_MonsterBook.new ;-)
Killerczyc - Nie 06 Lis, 2011 15:59

Ogr78 napisał/a:
yyyyyyyyyyy Ayene tylko zrob tak zeby sie odrazu wszystkie potwory wywietlaly bo wszystko jest puste!

Ten skrypt zapisuje wszystkie potworki jakie spotkałeś tzn. z którymi walczyłeś -.-

Michu_1999 - Nie 06 Lis, 2011 16:18

Sprawdzałem wszystkie przyciski i nic. ;-(
Ogr78 - Nie 06 Lis, 2011 17:04

Chodzi mi o to ze nie jak pokonasz tylko odrazu wszystkie sa!
Ayene - Nie 06 Lis, 2011 17:56

Czytajcie konfigurację ze zrozumieniem:
Kod:
# * Kompletny wykaz potworów:
$game_system.set_monbook_complete

Wystarczy na początku gry wywołać polecenie 'Script' za pomocą zdarzenia, w jego treści wpisując powyższą frazę.

Danbo - Pon 05 Gru, 2011 21:02

Może odkopuje ten temat po miesiącu, ale mam pytanie. Ponieważ skrypt nie jest komaptybilny z obrotowym menu, mógłby ktoś go napisać tak by się wyświetlał w obrotowym menu?
Finwe - Wto 06 Gru, 2011 15:38

Masz, łap. Ring menu z bestiariuszem, powinieneś poprosić tam, ale to nic ;-)

Spoiler:

Kod:
# =====================================================
# ~ Ring Menu VX ~
# Data publikacji: 23.10.2009
# Autor: DouglasMF
# Tłumaczenie i poprawki: Ayene [yurika@o2.pl]
# Zapraszamy na stronę Ultima Forum - http://www.ultimateam.pl
# =========================================================
# Instalacja: Umieść ten skrypt nad Main w Edytorze Skryptu.
# =========================================================
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# --------------------------- POCZĄTEK SKRYPTU -------------------------------
module AYENE
# ---------------------------- POCZĄTEK EDYCJI -------------------------------
  IKONA_PRZEDMIOT = 144    # Ikona przedmiotu
  IKONA_UMIEJETNOSC = 128  # Ikona umiejętności
  IKONA_EKWIPUNEK = 40     # Ikona ekwipunku
  IKONA_STATUS = 137       # Ikona statusu
  IKONA_ZAPIS = 149        # Ikona zapisu
  IKONA_WYJSCIE = 112      # Ikona wyjścia
  IKONA_BESTIARIUSZ = 179  # Ikona bestiariusza
 
# ----------------------------- KONIEC EDYCJI --------------------------------
end

# -----------NIE EDYTUJ PONIŻEJ, CHYBA ŻE WIESZ CO ROBISZ ^^------------------
#========================================================
# Scene_Menu
#-----------------------------------------------------------------------------
class Scene_Menu < Scene_Base
  #--------------------------------------------------------------------------
  # Rozpoczęcie
  #--------------------------------------------------------------------------
  def initialize(menu_index = 0)
    @menu_index = menu_index
  end
  #--------------------------------------------------------------------------
  # Start
  #--------------------------------------------------------------------------
  def start
    super
    @spriteset = Spriteset_Map.new
    @gold_window = Window_Gold.new(0, 360)
    @win_local = Window_Local.new(0,0)
    @status_window = Window_MenuStatus.new(160, 0)
    px = $game_player.screen_x - 16
    py = $game_player.screen_y - 28
    @ring_menu = Window_RingMenu_Comando.new(px,py)
    @status_window.z = @ring_menu.z + 20
    @status_window.visible = false
  end
  #--------------------------------------------------------------------------
  # Zakończenie
  #--------------------------------------------------------------------------
  def terminate
    super
    @spriteset.dispose
    @ring_menu.dispose
    @gold_window.dispose
    @win_local.dispose
    @status_window.dispose
  end
  #--------------------------------------------------------------------------
  # Aktualizacja menu
  #--------------------------------------------------------------------------
  def update
    super
    @ring_menu.update
    @gold_window.update
    @win_local.update
    @spriteset.update
    @status_window.update
    if @ring_menu.active
      update_command_selection
    elsif @status_window.active
      update_actor_selection
    end
  end
  #--------------------------------------------------------------------------
  # Aktualizacja komend w menu
  #--------------------------------------------------------------------------
  def update_command_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $scene = Scene_Map.new
    elsif Input.trigger?(Input::C)
      if $game_party.members.size == 0 and @ring_menu.index < 3
        Sound.play_buzzer
        return
      elsif $game_system.save_disabled and @ring_menu.index == 3
        Sound.play_buzzer
        return
      end
      Sound.play_decision
      case @ring_menu.indice
      when 0
        $scene = Scene_Item.new
      when 1,2,3
        start_actor_selection
      when 4
        $scene = Scene_MonsterBook.new
   
      when 5
        $scene = Scene_File.new(true, false, false)
      when 6
        $scene = Scene_End.new
      end
    end
    if Input.trigger?(Input::UP) or  Input.trigger?(Input::LEFT)
      Sound.play_cursor
      @ring_menu.girar(3)
      return
    end
    if Input.trigger?(Input::DOWN) or  Input.trigger?(Input::RIGHT)
      Sound.play_cursor
      @ring_menu.girar(4)
      return
    end
  end
  #--------------------------------------------------------------------------
  # Rozpoczęcie wyboru postaci
  #--------------------------------------------------------------------------
  def start_actor_selection
    @ring_menu.active = false
    @status_window.visible = true
    @status_window.active = true
    if $game_party.last_actor_index < @status_window.item_max
      @status_window.index = $game_party.last_actor_index
    else
      @status_window.index = 0
    end
  end
  #--------------------------------------------------------------------------
  # Zakończenie wyboru postaci
  #--------------------------------------------------------------------------
  def end_actor_selection
    @ring_menu.active = true
    @status_window.active = false
    @status_window.visible = false
    @status_window.index = -1
  end
  #--------------------------------------------------------------------------
  # Aktualizacja wyboru postaci
  #--------------------------------------------------------------------------
  def update_actor_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      end_actor_selection
    elsif Input.trigger?(Input::C)
      $game_party.last_actor_index = @status_window.index
      Sound.play_decision
      case @ring_menu.indice
      when 1
        $scene = Scene_Skill.new(@status_window.index)
      when 2
        $scene = Scene_Equip.new(@status_window.index)
      when 3
        $scene = Scene_Status.new(@status_window.index)
      end
    end
  end
end

#=========================================================
# Window_RingMenu_Comando
#=========================================================

class Window_RingMenu_Comando < Window_Base
 
  DurIni = 30
  DurMov = 15
  RaioAnel = 64
  ModoIni = 1
  ModoEsp = 2
  ModoMD = 3
  ModoME = 4
  SE_Inicio = ""
 
  attr_accessor :indice
  #--------------------------------------------------------------------------
  # Rozpoczęcie
  #--------------------------------------------------------------------------
  def initialize(centro_x,centro_y)
    super(0, 0, 544, 416)
    self.opacity = 0
    self.contents.font.size = 16
    s1 = Vocab::item
    s2 = Vocab::skill
    s3 = Vocab::equip
    s4 = Vocab::status
    s5 = 'Bestiariusz'     
    s6 = Vocab::save
    s7 = Vocab::game_end
    @item_name = [s1,s2,s3,s4,s5,s6,s7]
    @item_max = 8
    @item_icon = [AYENE::IKONA_PRZEDMIOT,
    AYENE::IKONA_UMIEJETNOSC,AYENE::IKONA_EKWIPUNEK,
    AYENE::IKONA_STATUS, AYENE::IKONA_BESTIARIUSZ, AYENE::IKONA_ZAPIS, AYENE::IKONA_WYJSCIE]
    @item_hab = [true,true,true,true,true,true,true]
    @indice = 0
    @cx = centro_x - 12
    @cy = centro_y - 12
    inicia_menu
    refresh
  end
  #--------------------------------------------------------------------------
  # Aktualizacja
  #--------------------------------------------------------------------------
  def update
    super
    refresh
  end
  #--------------------------------------------------------------------------
  # Odświeżenie
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    case @modo
    when ModoIni
      refresh_inicio
    when ModoEsp
      refresh_espera
    when ModoMD
      refresh_mover(1)
    when ModoME
      refresh_mover(0)
    end
    sw = self.contents.width
    rect = Rect.new((@cx - ((sw-32)/2))+12, @cy - 40, sw-32, 32)
    self.contents.draw_text(rect, @item_name[@indice],1)
  end
  #--------------------------------------------------------------------------
  # Odświeżenie menu
  #--------------------------------------------------------------------------
  def refresh_inicio
    d1 = 2.0 * Math::PI / @item_max
    d2 = 1.0 * Math::PI / DurIni
    r = RaioAnel - 1.0 * RaioAnel * @passos / DurIni
    for i in 0...@item_max
      j = i - @indice
      d = d1 * j + d2 * @passos
      x = @cx + ( r * Math.sin( d ) ).to_i
      y = @cy - ( r * Math.cos( d ) ).to_i
      desenha_item(x, y, i)
    end
    @passos -= 1
    if @passos < 1
      @modo = ModoEsp
    end
  end
  #--------------------------------------------------------------------------
  # Aktualizacja menu
  #--------------------------------------------------------------------------
  def refresh_espera
    d = 2.0 * Math::PI / @item_max
    for i in 0...@item_max
      j = i - @indice
      x = @cx + ( RaioAnel * Math.sin( d * j ) ).to_i
      y = @cy - ( RaioAnel * Math.cos( d * j ) ).to_i
      desenha_item(x, y, i)
    end
  end
  #--------------------------------------------------------------------------
  # Odświeżenie wskaźnika
  #--------------------------------------------------------------------------
  def refresh_mover(modo)
    d1 = 2.0 * Math::PI / @item_max
    d2 = d1 / DurMov
    d2 *= -1 if modo != 0
    for i in 0...@item_max
      j = i - @indice
      d = d1 * j + d2 * @passos
      x = @cx + ( RaioAnel * Math.sin( d ) ).to_i
      y = @cy - ( RaioAnel * Math.cos( d ) ).to_i
      desenha_item(x, y, i)
    end
    @passos -= 1
    if @passos < 1
      @modo = ModoEsp
    end
  end
  #--------------------------------------------------------------------------
  # Wyświetlanie ikon
  #--------------------------------------------------------------------------
  def desenha_item(x, y, i)
    if @indice == i
      self.cursor_rect.set(x-4, y-4, 32, 32)
      draw_icon(@item_icon[i], x, y, @item_hab[i])
    else
      draw_icon(@item_icon[i], x, y, @item_hab[i])
    end
  end
  #--------------------------------------------------------------------------
  # Menu
  #--------------------------------------------------------------------------
  def inicia_menu
    @modo = ModoIni
    @passos = DurIni
    if  SE_Inicio != nil and SE_Inicio != ""
      Audio.se_play("Audio/SE/" + SE_Inicio, 80, 100)
    end
  end
  #--------------------------------------------------------------------------
  # Menu
  #--------------------------------------------------------------------------
  def girar(modo)
    if modo == ModoMD
      @indice -= 1
      @indice = @item_hab.size - 1 if @indice < 0
    elsif modo == ModoME
      @indice += 1
      @indice = 0 if @indice >= @item_hab.size
    else
      return
    end
    @modo = modo
    @passos = DurMov
  end
 
end

#========================================================
# Scene_Title
#========================================================

class Scene_Title
  alias load_database_old load_database
  def load_database
    load_database_old
    $data_mapinfo = load_data("Data/MapInfos.rvdata")
  end
end

#========================================================
# Window_Local
#========================================================

class Window_Local < Window_Base
  #--------------------------------------------------------------------------
  # Rozpoczęcie
  #--------------------------------------------------------------------------
  def initialize(x, y)
    super(x, y, 160, 96)
    refresh
  end
  #--------------------------------------------------------------------------
  # Aktualizacja
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 0, 120, 32, "Lokacja:")
    self.contents.font.color = system_color
    self.contents.draw_text(4, 32, 120, 32, $data_mapinfo[$game_map.map_id].name, 2)
  end
end


Theron - Sro 07 Gru, 2011 11:25

Niby wszystko ok... tylko takie pytanie... czy działa on z lewelowaniem potworów
?

Ayene - Sro 07 Gru, 2011 12:28

Wytłumacz proszę, o jakie lewelowanie chodzi? Zresztą zawsze możesz sprawdzić ;-)
jmielczarek7 - Czw 05 Sty, 2012 22:50
Temat postu: inny bestariusz nie wiem skąd
Spoiler:

Kod:
#====================================================================#
#  #*****************#           Dinamic bestiary V 1 Falcao script  #
#  #*** By Falcao ***#           Permite mostrar un albun de cada    #
#  #*****************#           mostruo que derrotas   V 1.5        #
#         RMVX                                                       #
# makerpalace.onlinegoo.com      Date: 10/29/2009                    #
#====================================================================#

#---------------------------------------------------------------------
# * Instructions
#
# Solo copiar y pegar el script encima de main luego llamarlo con
# tecla 'A' puesta por defecto. Editar el modulo de abajo a su gusto
#
# Place the script above main, then call it with key 'A' by deafault
# Edit the module below as you prefer.
#
# License: Puede ser usado en juegos comerciales o no comerciales
#          This script can be used in comercial or non-comercial games
#---------------------------------------------------------------------

module Falcao

# Descripcion Para cada enemigo / Enemy desciption
# A = Id del enemigo / Enemy ID
# B = Description
Description = {

 1=>  '',
 2=>  '',
 3=>  'Ten rodzaj szczura wystepuje najczęściej w lasach i jaskiniach',
 4=>  '',
 5=>  '',
 21=> '',
 
}

# Tecla que llama el script / Key to call script
# Puesdes elejir entre las siguientes / choose between the followings keys
# Z, A, S, D, Q, W, ALT
TeclaBestiary = 'A'

# Interruptor que desabilita llamar el script con la tecla especificada
# Disable script call by input key
KeyDisable_Switch = 100

# Tocar musica / play music   (true o false)
PlayMusic = true

# Declaracion de arrays / Arrays declaration 
$derrotados = [] 
$enemy_counter = []
EnemyLevel = []

# Vocabulario / Vocabulary
FalVocab = ['Nie spotkano',  # No datos /  No data
            'Przedmiot',          # Tesoro 1 /  Treasure 1
            'Przedmiot',         # tesoro 2 /  Treasure 2
            'Brak',            # Sin tesoro /  No treasure
            '????',            # Enemigo no derrotado / Enemy no defeated
            'Bestiary',        # Titulo /  Title
            'Pokonany',       # Derrotado / defeated
            'Rodzaj Wroga',           # Clase de enemigo / enemy class
            'Moc',           # Energia maxima / Power 
            'Ilość',           # Veces derrotado / times defeated
            'Postęp']        # Progreso / Progress

# Clases de enemigos / enemy classes
# Calculos basados en parametros / Values based on parameters(Def, atk, etc.)
EnemyLevel[1] = "Noob"             
EnemyLevel[2] = "Łatwy"
EnemyLevel[3] = "Średni"
EnemyLevel[4] = "Trudny"
EnemyLevel[5] = "Bardzo Trudny"
EnemyLevel[6] = "Boski"

#-----------------------------------------------------------------------------
# Cuando un enemigo es derrotado es automaticamente agregado al invetario pero
# puedes administrarlos manualmente con los siguientes comandos

# When you defeat an enemy automaticly is added, but you can add or remove
# enemies manualy with the following comands

# Falcao.add_enemy(X)       Agrega enemigo X, en ves de X poner ID de enemigo
#                           Add enemy X, instead X put enemy ID       
#
# Falcao.remove_enemy(X)    remueve enemigo X, En ves de X poner ID de enemigo
#                           Remove Enemy X, Instead X put enemy ID
#
# Falcao.fill_bestiary      Agrega todos los monstruos al bestiario
#                           Fill bestiary
#
# Para llamar el script manualmente llamarlo directamente asi
# To call the script manually call it
#
# $scene = Scene_Monsters.new
#
# * Creditos: 
#
# Script creado por Falcao, puede ser publicado en cualquier foro siempre
# y cuando los creditos sean mencionados
#-----------------------------------------------------------------------------

 def self.fill_bestiary
   for enemy in $data_enemies
     next if enemy == nil
     unless $derrotados.include?(enemy.id)
       $derrotados.push(enemy.id)
       $enemy_counter.push(enemy.id)
     end
    end
  end
 
  def self.add_enemy(id)
    unless $derrotados.include?(id)
      $derrotados.push(id)
      $enemy_counter.push(id)
    end
  end
 
  def self.remove_enemy(id)
    if $derrotados.include?(id)
      $derrotados.delete(id)
      $enemy_counter.push(id)
    end
  end
end

#--------------------------------------------------------------------------
# * Crear informacion general y parametros enemigos
#--------------------------------------------------------------------------
class Moster_Info < Window_Base
  include Falcao
  def initialize(x, y)
    super(x, y, 385, 380)
    self.opacity = 0
  end
 
  def refresh(enemy_id)
    self.contents.clear
    @enemigo = $data_enemies[enemy_id]
    if $derrotados.include?(@enemigo.id)
      contents.font.size = 20
      draw_enemy_hp(0, 205)
      draw_enemy_mp(0, 230)
      enemy_parametros
      draw_drop_item1
      draw_drop_item2
    else
      contents.font.size = 30
      contents.draw_text(100, 100, 500, 92, FalVocab[0])
    end
  end
 
  def enemy_parametros
    y1 = 0; y2 = 0; y3 = 0; y4 = 0
    terms = $data_system.terms
    param1={1=>@enemigo.maxhp,2=>@enemigo.maxmp,3=>@enemigo.spi,4=>@enemigo.exp}
    name1 = {1=> terms.hp, 2=> terms.mp, 3=> terms.spi, 4=> "Exp"}
    param2={1=>@enemigo.atk,2=>@enemigo.def,3=>@enemigo.agi,4=> @enemigo.gold}
    name2 = {1=> terms.atk, 2=> terms.def, 3=> terms.agi, 4=> terms.gold}
    param1.sort.each do |keys, values|
      y1 += 25
      contents.draw_text(100, y1 + 134, 92, 92, values)
    end
    param2.sort.each do |keys, values|
      y2 += 25
      contents.draw_text(300, y2 + 134, 92, 92, values)
    end
    name1.sort.each do |keys, values|
      y3 += 25
      contents.draw_text(0, y3 + 134, 102, 92, values)
    end
    name2.sort.each do |keys, values|
      y4 += 25
      contents.draw_text(200, y4 + 134, 102, 92, values)
    end
  end
 
  def draw_drop_item1
    item = @enemigo.drop_item1
    contents.draw_text(35, 260, 92, 92, FalVocab[1])
    if item.kind == 0
      contents.draw_text(0, 284, 92, 92, FalVocab[3])
      return
    end
    case item.kind
    when 1; drop_item = $data_items[item.item_id]
    when 2; drop_item = $data_weapons[item.item_id]
    when 3; drop_item = $data_armors[item.armor_id]
    end
    draw_icon(drop_item.icon_index,94, 318)
    contents.draw_text(0, 284, 92, 92, drop_item.name)
  end
 
  def draw_drop_item2
    item = @enemigo.drop_item2
    contents.draw_text(226, 260, 92, 92, FalVocab[2])
    if item.kind == 0
      contents.draw_text(200, 284, 92, 92, FalVocab[3])
      return
    end
    case item.kind
    when 1; drop_item = $data_items[item.item_id]
    when 2; drop_item = $data_weapons[item.item_id]
    when 3; drop_item = $data_armors[item.armor_id]
    end
    draw_icon(drop_item.icon_index,300, 318)
    contents.draw_text(200, 284, 92, 92, drop_item.name)
  end
 
  def draw_enemy_hp(x, y)
    self.contents.fill_rect(x, y, 102, 10, Color.new(0,0,0))
    self.contents.fill_rect(x+1, y+1, 100*@enemigo.maxhp/@enemigo.maxhp, 4,
    Color.new(205,255,205))
    self.contents.fill_rect(x+1, y+5, 100*@enemigo.maxhp/@enemigo.maxhp, 4,
    Color.new(10,220,45))
  end
 
  def draw_enemy_mp(x, y)
    if @enemigo.maxmp != 0
      self.contents.fill_rect(x, y, 102, 10, Color.new(0,0,0))
      self.contents.fill_rect(x+1, y+1, 100*@enemigo.maxmp/@enemigo.maxmp, 4,
      Color.new(180,225,245))
      self.contents.fill_rect(x+1, y+5, 100*@enemigo.maxmp/@enemigo.maxmp, 4,
      Color.new(20,160,225))
    else
      self.contents.fill_rect(x, y, 102, 10, Color.new(0,0,0))
    end
  end
end

#--------------------------------------------------------------------------
# * Objeto creador de las descripciones y el progreso en porcentaje
#--------------------------------------------------------------------------
class Moster_Description < Window_Base
  include Falcao
  def initialize(x, y, ancho = 544, alto = 56)
    super(x, y, ancho, alto)
    @tiempo = 0
    @scroll = 0
  end
 
  def set_texto(texto)
    self.contents.clear
    self.contents.draw_text(0, -4, 92, 32, texto)
    for i in 0...$derrotados.size
      number = i + 1
    end
    texto2 = "#{FalVocab[10]}   #{number * 100/$all_mosnters}%" rescue texto2 =
    "#{FalVocab[10]}   0 %"
    self.contents.draw_text(0, 24, self.width, 32, texto2)
  end
 
  def refresh(enemy_id)
    self.contents.clear
    @enemigo = $data_enemies[enemy_id]
    if $derrotados.include?(@enemigo.id)
      draw_descriptions
    else
      self.contents.draw_text(-130, -4, 600, 32 , FalVocab[0],1)
    end
  end
 
  def draw_descriptions
    if Description.has_key?(@enemigo.id)
      Description.each do |id, value|
        if id == @enemigo.id
          cx = contents.text_size(value).width
          scroll_text(value)
          self.contents.draw_text(@scroll, -4, cx + 10, 32 , value)
        end
      end
    else
    text = ["                                             ",
            "                                             ",
            "Description no available                     ",
            "Falcao script Bestiary V 1.5        "
            ]
      scroll_text(text,false)
      cx = contents.text_size(text).width
      self.contents.draw_text(@scroll, -4, cx + 10, 32, text )
    end
  end
 
  def scroll_text(texto, result_ok=true)
    cx = contents.text_size(texto).width
    if cx > 350
      @tiempo += 1
      if @tiempo > 60
        @scroll -= 1 if @result == nil
        if @scroll == -cx
          @result = true
        end
      end
    end
    if @result
      result_ok ? @scroll += 10 :  @scroll = 0
      if @scroll >= 0
        @scroll = 0;  @tiempo = 0
        @result = nil
      end
    end
    if Input.press?(Input::UP) or Input.press?(Input::DOWN)
      @scroll = 0; @tiempo = 0; @result = nil
    end
  end
end

#--------------------------------------------------------------------------
# * Objeto que dibuja el indice de los enemigos con su nombre
#--------------------------------------------------------------------------
class Monster_indice < Window_Selectable
  def initialize(y)
    super(0, y, 160, 334)
    @column_max = 1
    refresh
    self.index = 0
  end
 
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    for i in 1...$data_enemies.size
      @data.push($data_enemies[i])
    end
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 26)
      for i in 0...@item_max
        draw_item(i)
        $all_mosnters = i + 1
      end
    end
  end
 
  def draw_item(index)
    enemy = @data[index]
    self.contents.font.color = normal_color
    x, y = 4, index * 24
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    opacity = self.contents.font.color == normal_color ? 255 : 128
    if $derrotados.include?(index+1)
      contents.draw_text(x, y, 212, 24, enemy.name)
    else
      contents.draw_text(x, y, 212, 24, Falcao::FalVocab[4])
    end
  end
end

#--------------------------------------------------------------------------
# * Objeto que dibuja el Power y el conteo de mostruos derrotados
#--------------------------------------------------------------------------
class Adicional_Data < Window_Base
  include Falcao
  attr_accessor :number
  attr_accessor :counter
  def initialize
    super(0, 0, 160, 334)
    @number = 0.0
    @counter = 0.0
    @color = [Color.new(180,225,245), Color.new(20,160,225)]
  end
 
  def refresh(enemy_id)
    self.contents.clear
    @enemigo = $data_enemies[enemy_id]
    if $derrotados.include?(@enemigo.id)
      draw_enemy_counter
      draw_enemy_power(0,186)
      contents.font.color = Color.new(255, 140, 0)
      contents.draw_text(30, 0, 212, 24, @enemigo.name)
    else
      contents.font.color = normal_color
      self.contents.draw_text(2, 50, 600, 32 , FalVocab[0])
    end
  end
 
  def draw_enemy_counter
    i = 0
    for c in $enemy_counter
      if c == @enemigo.id
        i += 1
        number = i
      end
    end
    contents.font.color = normal_color
    contents.draw_text(0, 40, 212, 24, FalVocab[6])
    contents.draw_text(80, 70, 212, 24, number.to_s)
    contents.draw_text(0, 70, 212, 24, FalVocab[9])
  end
 
  def get_power(enemy)
    add = 0
    number1 = enemy.spi + enemy.agi
    number2 = enemy.atk + enemy.def
    case enemy.maxhp
    when 1...400
      add = 60
    when 400...1000
      add = 100
    when 1000...10000
      add = 140
    when 10000...999999
      add = 200
    end
    @number = number1 + number2 + add
    @counter = @number
    @number = 1
  end
 
  def draw_enemy_power(x,y)
    case @counter
    when 1...150
      value = 150; add = 1; level = EnemyLevel[1]
      @color = [Color.new(180,225,245), Color.new(20,160,225)]
    when 150...350
      value = 350; add = 3;  level = EnemyLevel[2]
      @color = [Color.new(255, 120, 0), Color.new(255, 80, 50)]
    when 350...600
      value = 600; add = 6; level = EnemyLevel[3]
      @color = [Color.new(205,255,205), Color.new(10,220,45)]
    when 600...1000
      value = 1000; add = 10; level = EnemyLevel[4]
      @color = [Color.new(255,255,100), Color.new(255,200,0) ]
    when 1000...4196
      value = 3996; add = 20; level = EnemyLevel[5]
      @color = [Color.new(255,255,100), Color.new(255,200,0) ]
    end
    @number = @counter if @number >= @counter
    @number += add if @number < @counter
    contents.font.color = Color.new(255, 140, 0)
    contents.draw_text(30, 120, 212, 24, FalVocab[7])
    contents.font.color = normal_color
    contents.draw_text(0, 150, 212, 24, level)
    self.contents.fill_rect(x, y, 128, 14, Color.new(0,0,0))
    self.contents.fill_rect(x+1, y+1, 126*@number/value, 6, @color[0])
    self.contents.fill_rect(x+1, y+7, 126*@number/value, 6, @color[1])
    contents.draw_text(0, 210, 212, 24, FalVocab[8])
    contents.draw_text(80, 210, 212, 24, @number.to_s)
  end
end

#--------------------------------------------------------------------------
# * Clase que agrega los enemigos al bestiario automaticamente
#--------------------------------------------------------------------------
class Game_Enemy < Game_Battler
  alias falcao_collapse  perform_collapse
  def perform_collapse
    falcao_collapse
    unless $derrotados.include?(enemy.id)
      $derrotados.push(enemy.id)
    end
    if $game_temp.in_battle and dead?
      $enemy_counter.push(enemy.id)
    end
  end
end

#--------------------------------------------------------------------------
# * Clase que define la fuente del bestiario
#--------------------------------------------------------------------------
class Font
  alias falcaoBest_font initialize
  def initialize
    falcaoBest_font
    if $scene.is_a?(Scene_Monsters)
      self.name = "Georgia"
      self.size = 20
    end
  end
end

#--------------------------------------------------------------------------
# * Aqui se crea la scene que organiza todo en conjunto
#--------------------------------------------------------------------------
class Scene_Monsters < Scene_Base
  def start
    super
    @spriteset = Spriteset_Bestiary.new
    @mostruos_index = Monster_indice.new(84)
    @info_mosters = Moster_Info.new(160,56)
    @help = Moster_Description.new(160,0, 386)
    @title = Moster_Description.new(0,0, 160, 84)
    @title.set_texto(Falcao::FalVocab[5])
    @info_mosters.refresh(@mostruos_index.index + 1)
    @help.refresh(@mostruos_index.index + 1)
    @extra_data = Adicional_Data.new
    @extra_data.y = 84
    @extra_data.visible = false
    @moster_graphic = Sprite.new
    @moster_graphic.bitmap = Cache.battler("",0)
    @moster_graphic.z = 99
    @moster_graphic.y = 65
    @time = 0
    if Falcao::PlayMusic
      $game_temp.map_bgm = RPG::BGM.last
      $game_temp.map_bgs = RPG::BGS.last
      $game_system.battle_bgm.play
    end
    create_enemy_graphics
  end
  def terminate
    super
    @mostruos_index.dispose
    @info_mosters.dispose
    @help.dispose
    @spriteset.dispose
    @title.dispose
    @moster_graphic.dispose
  end
  def update
    super
    @spriteset.update
    @mostruos_index.update
    @help.refresh(@mostruos_index.index + 1)
    animate_graphic
    if Input.press?(Input::DOWN) or Input.press?(Input::UP)
      @info_mosters.refresh(@mostruos_index.index + 1)
      create_enemy_graphics
      if @extra_data.visible
        @extra_data.get_power($data_enemies[@mostruos_index.index + 1])
      end
    end
    if Input.trigger?(Input::C) and @extra_data.visible == false
      Sound.play_decision
      @extra_data.get_power($data_enemies[@mostruos_index.index + 1])
      @extra_data.refresh(@mostruos_index.index + 1)
      @extra_data.visible = true
      @mostruos_index.y = 600
    end
    if @extra_data.visible
      if @extra_data.number < @extra_data.counter
        @extra_data.refresh(@mostruos_index.index + 1)
      end
    end
    if Input.trigger?(Input::B)
      if @extra_data.visible
        Sound.play_cancel
        @extra_data.visible = false
        @mostruos_index.y = 84
      else
        Sound.play_cancel
        if Falcao::PlayMusic
          $game_temp.map_bgm.play
          $game_temp.map_bgs.play
        end
        $scene = Scene_Map.new
      end
    end
  end
 
  def create_enemy_graphics
    enemy = $data_enemies[@mostruos_index.index + 1]
    if $derrotados.include?(enemy.id)
      @moster_graphic.bitmap = Cache.battler(enemy.battler_name,
      enemy.battler_hue)
      cw = @moster_graphic.width
      @moster_graphic.x = 360 - cw / 2
      @moster_graphic.visible = true
    else
      @moster_graphic.visible = false
   end
 end
 
 def animate_graphic
   if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
     @moster_graphic.zoom_x = 1
     @moster_graphic.zoom_y = 1
     @time = 0
   end
   h = 240; @time += 1
   if @time < 40
     if @moster_graphic.height <= h
       @moster_graphic.zoom_x += 0.002
       @moster_graphic.zoom_y += 0.002
     elsif @moster_graphic.height > h
       @moster_graphic.zoom_x += 0.001
       @moster_graphic.zoom_y += 0.001
     end
   elsif @time > 40
     if @moster_graphic.height <= h
       @moster_graphic.zoom_x -= 0.002
       @moster_graphic.zoom_y -= 0.002
     elsif @moster_graphic.height > h
       @moster_graphic.zoom_x -= 0.001
       @moster_graphic.zoom_y -= 0.001
     end
     if @time == 80
       @moster_graphic.zoom_x = 1
       @moster_graphic.zoom_y = 1
       @time = 0
     end
   end
 end
end

#--------------------------------------------------------------------------
# * Objeto que define la tecla para acceder al bestiario
#--------------------------------------------------------------------------
class Scene_Map
  alias falcao_bestiary_update update
  def update
    falcao_bestiary_update
    update_finput
  end
  def update_finput
    return if $game_switches[Falcao::KeyDisable_Switch]
    case Falcao::TeclaBestiary
    when 'Z';    key = Input::C    #C
    when 'A';    key = Input::X    #X
    when 'S';    key = Input::Y    #Y   
    when 'D';    key = Input::Z    #Z
    when 'Q';    key = Input::L    #L 
    when 'W';    key = Input::R    #R
    when 'ALT';  key = Input::ALT  #alt 
    end
   if Input.trigger?(key)
      $scene = Scene_Monsters.new
    end
  end
end

#--------------------------------------------------------------------------
# * Guardar variables de enemigos derrotados
#--------------------------------------------------------------------------
class Scene_File < Scene_Base
  alias falcaosave_data write_save_data
  def write_save_data(file)
    falcaosave_data(file)
    Marshal.dump($derrotados,   file)
    Marshal.dump($enemy_counter,   file)
  end
end

#--------------------------------------------------------------------------
# * Cargar variables de enemigos derrotados
#--------------------------------------------------------------------------
class Scene_File < Scene_Base
  alias falcaoload_data read_save_data
  def read_save_data(file)
    falcaoload_data(file)
    $derrotados    = Marshal.load(file)
    $enemy_counter = Marshal.load(file)
  end
end

#--------------------------------------------------------------------------
# * Objeto que crea el fondo animado usando el mapa
#--------------------------------------------------------------------------
class Spriteset_Bestiary
  def initialize
    create_battleback
    update
  end
  def create_battleback
    @viewport1 = Viewport.new(0, 0, 544, 416)
    source = $game_temp.background_bitmap
    bitmap = Bitmap.new(640, 480)
    bitmap.stretch_blt(bitmap.rect, source, source.rect)
    bitmap.radial_blur(90, 12)
    @battleback_sprite = Sprite.new(@viewport1)
    @battleback_sprite.bitmap = bitmap
    @battleback_sprite.ox = 320
    @battleback_sprite.oy = 240
    @battleback_sprite.x = 272
    @battleback_sprite.y = 176
    @battleback_sprite.wave_amp = 8
    @battleback_sprite.wave_length = 240
    @battleback_sprite.wave_speed = 120
  end
  def dispose
    @battleback_sprite.bitmap.dispose
    @battleback_sprite.dispose
    @viewport1.dispose
  end
  def update
    @battleback_sprite.update
    @viewport1.update
  end
end



mam nadzieje, że się przyda

Theron - Pią 20 Sty, 2012 22:04

Jeśłi tylko mi się uda wejśc na twój profil to chętnie dam pomógł , ale chodzi o ten skrypt...

http://www.ultimateam.pl/...p?p=70987#70987

TheMrMinish - Sob 21 Kwi, 2012 07:29
Temat postu: Skrypty VX Ace
A jak się da do RPG makera VX Ace skrypty z VX (nie Ace) to beda mi działać? plz o szybka odpowiedź!
Vrona - Sob 21 Kwi, 2012 08:09

Nie.
kamokeg - Sob 21 Kwi, 2012 21:31

Ej a jest jakiś bestiariusz współpracujący z walką w czasie rzeczywistym?
Abercjusz - Sob 28 Kwi, 2012 12:29

Ciekawe , lecz w wypadku Takentai'a i animowanych battlerów...
Niemniej jednak polecam.

kolkav5 - Pon 25 Cze, 2012 19:40

Ale, gdy dodałem bestiariusz, to mi zaczęło wyskakiwać. ;-(
barti2287 - Sob 04 Sie, 2012 00:46

Cytat:
Wiem, że Google nie gryzie, ale Czy moglby mi ktoś podać SPRAWDZONY link do SPRAWDZONEGO RPG Maker VX (najlepiej ten link, z którego wy ściągaliście), bo jak dzisiaj ściągnąłem, to instalacja zatrzymywała się na 0 %. I jescze (już ostatnie) pytanko:
- Czy mogę mieć naraz zainstalowane RPG Maker XP i RPG Maker VX ??


Ściągnij sobie z Twierdzy RPG Maker


Powered by phpBB modified by Przemo © 2003 phpBB Group