Accueil du SiteAccueil du Site  AccueilAccueil  Dernières imagesDernières images  RechercherRechercher  ConnexionConnexion  S'enregistrerS'enregistrer  



Le Deal du moment :
Pokémon EV06 : où acheter le Bundle Lot ...
Voir le deal

Partagez
 

 [XP] Menu bestiaire

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Creme brulée
Chevalier Mage (niveau 4)
Chevalier Mage (niveau 4)
Creme brulée

Masculin
Messages postés : 465
Date d'inscription : 04/02/2012
Jauge LPC :
[XP] Menu bestiaire 891527140010 / 10010 / 100[XP] Menu bestiaire 8915271400

[XP] Menu bestiaire Membre10
[XP] Menu bestiaire Altrui10
[XP] Menu bestiaire Partag10
[XP] Menu bestiaire Collec10
[XP] Menu bestiaire Collec11
[XP] Menu bestiaire Collec12


[XP] Menu bestiaire Empty
MessageSujet: [XP] Menu bestiaire   [XP] Menu bestiaire EmptyMer 7 Mar 2012 - 12:40

Bonjour, je voulais vous partager ce script car je le trouve assez utile.

Auteur : Momomo, modifié par coolmariners98

Placez le au dessus du script Main :
Code:
#==============================================================================
# ¦ Bestiary
#------------------------------------------------------------------------------
# Created by Momomo
# Modified by coolmariners98
#==============================================================================

module Enemy_Book_Config
  DROP_ITEM_NEED_ANALYZE = false
  EVA_NAME = "Evasion"
  SHOW_COMPLETE_TYPE = 3
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
 
  alias book_info_initialize initialize
  def initialize
    book_info_initialize
    @enemy_info = {}
  end
 
  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
 
  def enemy_book_max
    return $game_temp.enemy_book_data.id_data.size - 1
  end
 
  def enemy_book_now
    now_enemy_info = @enemy_info.keys
    no_add = $game_temp.enemy_book_data.no_add_element
    new_enemy_info = []
    for i in now_enemy_info
      enemy = $data_enemies[i]
      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
 
  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
      unless enemy.hidden
        $game_party.add_enemy_info(enemy.id, 0)
      end
    end
    add_enemy_info_start_phase5
  end
end

class Window_Base < Window
 
  def draw_enemy_drop_item(enemy, x, y)
    self.contents.font.color = normal_color
    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
    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)
      name = treasures[0].name
    else
      self.contents.font.color = disabled_color
      name = "No Item"
    end
    self.contents.draw_text(x+28, y, 212, 32, name)
  end
 
  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)
  end
 
  def draw_enemy_name(enemy, x, y)
    self.contents.font.color = normal_color
    self.contents.draw_text(x, y, 152, 32, enemy.name)
  end
 
  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, 64, 64)
    self.contents.blt(x + 10, y - 270, bitmap, src_rect, opacity)
  end
 
  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)
  end
 
  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)
  end
end

class Game_Enemy_Book < Game_Enemy
 
  def initialize(enemy_id)
    super(2, 1)
    @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
 
  def initialize
    @id_data = enemy_book_id_set
  end
 
  def no_add_element
    no_add = 0
    for i in 1...$data_system.elements.size
      if $data_system.elements[i] =~ /図鑑登録無効/
        no_add = i
        break
      end
    end
    return no_add
  end
 
  def enemy_book_id_set
    data = [0]
    no_add = no_add_element
    for i in 1...$data_enemies.size
      enemy = $data_enemies[i]
      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
 
  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
 
  def data_set
    data = $game_party.enemy_info.keys
    data.sort!
    newdata = []
    for i in data
      next if $game_party.enemy_info[i] == 0
      if book_id(i) != nil
        newdata.push(i)
      end
    end
    return newdata
  end
 
  def show?(id)
    if $game_party.enemy_info[id] == 0 or $game_party.enemy_info[id] == nil
      return false
    else
      return true
    end
  end
 
  def book_id(id)
    return @book_data.index(id)
  end
 
  def item
    return @data[self.index]
  end
 
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    self.contents = Bitmap.new(width - 32, row_max * 32)
    if @item_max > 0
      for i in 0...@item_max
        draw_item(i)
      end
    end
  end
 
  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
    draw_enemy_book_id(enemy, x, y)
    if show?(enemy.id)
      self.contents.draw_text(x + 28+16, y, 212, 32, enemy.name, 0)
    else
      self.contents.draw_text(x + 28+16, y, 212, 32, "-----", 0)
      return
    end
    if analyze?(@data[index])
      self.contents.font.color = text_color(3)
      self.contents.draw_text(x + 256, y, 24, 32, "?", 2)
    end
  end
 
  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
  include Enemy_Book_Config
 
  def initialize
    super(0, 0+64, 640, 480-64)
    self.contents = Bitmap.new(width - 32, height - 32)
  end
 
  def refresh(enemy_id)
    self.contents.clear
    self.contents.font.size = 22
    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, EVA_NAME)
    self.contents.font.color = normal_color
    self.contents.draw_text(288+160 + 120, 32, 36, 32, enemy.eva.to_s, 2)
    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)
    if analyze?(enemy.id) or !DROP_ITEM_NEED_ANALYZE
      self.contents.draw_text(288, 192, 96, 32, "Objet laissé")
      draw_enemy_drop_item(enemy, 288+96+4, 192)
      self.contents.font.color = normal_color
      #draw_element_guard(enemy, 320-32, 160-16+96)
    end
  end
 
  def analyze?(enemy_id)
    if $game_party.enemy_info[enemy_id] == 2
      return true
    else
      return false
    end
  end
end


class Scene_MonsterBook
  include Enemy_Book_Config
 
  def main
    $game_temp.enemy_book_data = Data_MonsterBook.new
    @title_window = Window_Base.new(0, 0, 640, 64)
    @title_window.contents = Bitmap.new(640 - 32, 64 - 32)
    @title_window.contents.draw_text(4, 0, 320, 32, "Bestiaire", 0)
    if SHOW_COMPLETE_TYPE != 0
      case 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(320, 0, 288, 32, text, 2)
      end
    end
    @main_window = Window_MonsterBook.new
    @main_window.active = true
    @info_window = Window_MonsterBook_Info.new
    @info_window.z = 110
    @info_window.visible = false
    @info_window.active = false
    @visible_index = 0
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @main_window.dispose
    @info_window.dispose
    @title_window.dispose
  end
 
  def update
    @main_window.update
    @info_window.update
    if @info_window.active
      update_info
      return
    end
    if @main_window.active
      update_main
      return
    end
  end
 
  def update_main
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new
      return
    end
    if Input.trigger?(Input::C)
      if @main_window.item == nil or @main_window.show?(@main_window.item) == false
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $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)
      return
    end
  end
 
  def update_info
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @main_window.active = true
      @info_window.active = false
      @info_window.visible = false
      return
    end
    if Input.trigger?(Input::C)
      #$game_system.se_play($data_system.decision_se)
      return
    end
    if Input.trigger?(Input::L)
      $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)
      return
    end
    if Input.trigger?(Input::R)
      $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)
      return
    end
  end
end



Nommé le comme vous voulez. Pour appeler le script utilisez ce code :
Code:
$scene = Scene_MonsterBook.new

Des images du rendu :
[XP] Menu bestiaire Mini_120307124945709181



et

[XP] Menu bestiaire Mini_120307125115318619
Revenir en haut Aller en bas
Elekami
Fondateur
Fondateur
Elekami

Masculin
Messages postés : 19071
Date d'inscription : 19/07/2008
Jauge LPC :
[XP] Menu bestiaire 8915271400100 / 100100 / 100[XP] Menu bestiaire 8915271400

[XP] Menu bestiaire Pater_10
[XP] Menu bestiaire Staffe10
[XP] Menu bestiaire Mythe_10
[XP] Menu bestiaire Membre11
[XP] Menu bestiaire Doyen10
[XP] Menu bestiaire Scanar10
[XP] Menu bestiaire Compos10
[XP] Menu bestiaire Testeu10
[XP] Menu bestiaire Membre15
[XP] Menu bestiaire Partag10
[XP] Menu bestiaire Projet10
[XP] Menu bestiaire Projet16
[XP] Menu bestiaire Riche_10
[XP] Menu bestiaire Travai10
[XP] Menu bestiaire Collec10
[XP] Menu bestiaire Collec11
[XP] Menu bestiaire Collec12
[XP] Menu bestiaire Collec13
[XP] Menu bestiaire Connar10


[XP] Menu bestiaire Empty
MessageSujet: Re: [XP] Menu bestiaire   [XP] Menu bestiaire EmptyMer 7 Mar 2012 - 13:12

Merci du partage, +2 points LPDM.
Revenir en haut Aller en bas
https://www.ledijonshow.fr https://twitter.com/EleKoptes
 
[XP] Menu bestiaire
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [XP] Menu Bestiaire par Krazplay
» [XP] Menu
» [XP] Menu FF7
» [XP]Menu A-RPG
» Script Bestiaire avec combat CBS [XP] Résolu

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Le Palais Créatif :: ~ PARTAGE ~ :: Scripts et plugins :: RPG Maker XP :: Menu-
Sauter vers: