查看: 4133|回复: 6

[已经解决] 請教一下關於這個物品百科腳本,有辦法更改嗎??

[复制链接]
梦石
0
星屑
562
在线时间
465 小时
注册时间
2009-10-11
回帖
322
发表于 2013-3-5 01:27:41 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 a000b1745 于 2013-3-19 00:33 编辑

我在日本站找到這個腳本↓

http://izumiwhite.web.fc2.com/rgss3/rgss3_001.html

但是他的"特徴:" 這一欄是需要自己手動打字添上去的,
有辦法改成自動顯示武器/裝備的特性(命中、迴避等...)嗎??

求腳本達人幫忙~{:2_249:}

如果網頁打不開,以下是我複製的RGSS3碼(共兩個)↓

[pre lang="ruby" line="1"]#==============================================================================
# ■ RGSS3 アイテム図鑑 ver 1.00 初期設定
#------------------------------------------------------------------------------
#  配布元:
#     白の魔 http://izumiwhite.web.fc2.com/
#
#  利用規約:
#     RPGツクールVXの正規の登録者のみご利用になれます。
#     利用報告・著作権表示とかは必要ありません。
#     改造もご自由にどうぞ。
#     何か問題が発生しても責任は持ちません。
#==============================================================================

#-------------------------------------------------------------------------------
# ★ 初期設定。
#-------------------------------------------------------------------------------
module WD_itemdictionary_layout

#=== 各項目のレイアウト設定項目 ================================================
#
#   *_***_display       : trueで表示。falseで非表示。
#   *_***_display_x     : 表示位置のx座標
#   *_***_display_y     : 表示位置のy座標
#   *_***_display_width : 表示テキストの幅
#   *_***_display_text* : 表示テキスト
#
#===============================================================================

#===全図鑑共通設定==============================================================

  #フォントサイズ
  C_font_size = 20

#===道具図鑑設定================================================================

  #番号の表示
  I_id_display        = true
  I_id_display_x      = 0
  I_id_display_y      = 0
  I_id_display_width  = 60
  I_id_display_digit  = 3 #桁数
  
  #名前の表示
  I_name_display        = true
  I_name_display_x      = 84
  I_name_display_y      = 0
  I_name_display_width  = 172

  #価格の表示
  I_price_display        = true
  I_price_display_x      = 150
  I_price_display_y      = 32
  I_price_display_width  = 136
  I_price_display_text1  = "価格"

  #使用可能時の表示
  I_occasion_display        = true
  I_occasion_display_x      = 0
  I_occasion_display_y      = 62
  I_occasion_display_width  = 140
  I_occasion_display_text1  = "使用"
  I_occasion_display_text2  = "常時"
  I_occasion_display_text3  = "戦闘時"
  I_occasion_display_text4  = "移動時"
  I_occasion_display_text5  = "-"

  #消耗の表示
  I_consumable_display        = true
  I_consumable_display_x      = 150
  I_consumable_display_y      = 62
  I_consumable_display_width  = 140
  I_consumable_display_text1  = "消耗"
  I_consumable_display_text2  = "消耗する"
  I_consumable_display_text3  = "消耗しない"

  #特徴の表示
  I_option_display       = true
  I_option_display_x     = 0
  I_option_display_y     = 92
  I_option_display_width = 286
  I_option_display_text1 = "特徴"
  I_option_display_text2 = "なし"

#===武器図鑑設定================================================================

  #番号の表示
  W_id_display        = true
  W_id_display_x      = 0
  W_id_display_y      = 0
  W_id_display_width  = 60
  W_id_display_digit  = 3 #桁数

  #名前の表示
  W_name_display        = true
  W_name_display_x      = 84
  W_name_display_y      = 0
  W_name_display_width  = 172

  #タイプの表示
  W_type_display        = true
  W_type_display_x      = 0
  W_type_display_y      = 32
  W_type_display_width  = 136
  W_type_display_text1  = "タイプ"

  #価格の表示
  W_price_display       = true
  W_price_display_x     = 150
  W_price_display_y     = 32
  W_price_display_width = 136
  W_price_display_text1 = "価格"

  #攻撃力の表示
  W_atk_display         = true
  W_atk_display_x       = 0
  W_atk_display_y       = 62
  W_atk_display_width   = 136

  #防御力の表示
  W_def_display         = true
  W_def_display_x       = 150
  W_def_display_y       = 62
  W_def_display_width   = 136

  #魔法力の表示
  W_mat_display         = true
  W_mat_display_x       = 0
  W_mat_display_y       = 82
  W_mat_display_width   = 136

  #魔法防御の表示
  W_mdf_display         = true
  W_mdf_display_x       = 150
  W_mdf_display_y       = 82
  W_mdf_display_width   = 136

  #敏捷性の表示
  W_agi_display         = true
  W_agi_display_x       = 0
  W_agi_display_y       = 102
  W_agi_display_width   = 136

  #運の表示
  W_luk_display         = true
  W_luk_display_x       = 150
  W_luk_display_y       = 102
  W_luk_display_width   = 136

  #最大HPの表示
  W_mhp_display         = true
  W_mhp_display_x       = 0
  W_mhp_display_y       = 122
  W_mhp_display_width   = 136

  #最大MPの表示
  W_mmp_display         = true
  W_mmp_display_x       = 150
  W_mmp_display_y       = 122
  W_mmp_display_width   = 136

  #特徴の表示
  W_option_display       = true
  W_option_display_x     = 0
  W_option_display_y     = 152
  W_option_display_width = 286
  W_option_display_text1 = "特徴"
  W_option_display_text2 = "なし"


#===防具図鑑設定================================================================

  #番号の表示
  A_id_display        = true
  A_id_display_x      = 0
  A_id_display_y      = 0
  A_id_display_width  = 60
  A_id_display_digit  = 3 #桁数

  #名前の表示
  A_name_display        = true
  A_name_display_x      = 84
  A_name_display_y      = 0
  A_name_display_width  = 172

  #タイプの表示
  A_type_display        = true
  A_type_display_x      = 0
  A_type_display_y      = 32
  A_type_display_width  = 136
  A_type_display_text1  = "タイプ"

  #価格の表示
  A_price_display       = true
  A_price_display_x     = 150
  A_price_display_y     = 32
  A_price_display_width = 136
  A_price_display_text1 = "価格"

  #攻撃力の表示
  A_atk_display         = true
  A_atk_display_x       = 0
  A_atk_display_y       = 62
  A_atk_display_width   = 136

  #防御力の表示
  A_def_display         = true
  A_def_display_x       = 150
  A_def_display_y       = 62
  A_def_display_width   = 136

  #魔法力の表示
  A_mat_display         = true
  A_mat_display_x       = 0
  A_mat_display_y       = 82
  A_mat_display_width   = 136

  #魔法防御の表示
  A_mdf_display         = true
  A_mdf_display_x       = 150
  A_mdf_display_y       = 82
  A_mdf_display_width   = 136

  #敏捷性の表示
  A_agi_display         = true
  A_agi_display_x       = 0
  A_agi_display_y       = 102
  A_agi_display_width   = 136

  #運の表示
  A_luk_display         = true
  A_luk_display_x       = 150
  A_luk_display_y       = 102
  A_luk_display_width   = 136

  #最大HPの表示
  A_mhp_display         = true
  A_mhp_display_x       = 0
  A_mhp_display_y       = 122
  A_mhp_display_width   = 136

  #最大MPの表示
  A_mmp_display         = true
  A_mmp_display_x       = 150
  A_mmp_display_y       = 122
  A_mmp_display_width   = 136

  #特徴の表示
  A_option_display       = true
  A_option_display_x     = 0
  A_option_display_y     = 152
  A_option_display_width = 286
  A_option_display_text1 = "特徴"
  A_option_display_text2 = "なし"


end
#-------------------------------------------------------------------------------
# ★ 初期設定おわり
#-------------------------------------------------------------------------------[/pre]

[pre lang="ruby" line="1"]#==============================================================================
# ■ RGSS3 アイテム図鑑 ver 1.00 本体プログラム
#------------------------------------------------------------------------------
#  配布元:
#     白の魔 http://izumiwhite.web.fc2.com/
#
#  利用規約:
#     RPGツクールVXの正規の登録者のみご利用になれます。
#     利用報告・著作権表示とかは必要ありません。
#     改造もご自由にどうぞ。
#     何か問題が発生しても責任は持ちません。
#==============================================================================

#==============================================================================
# ■ WD_itemdictionary
#------------------------------------------------------------------------------
#  アイテム図鑑用の共通メソッドです。
#==============================================================================

module WD_itemdictionary
  def i_dictionary_switch_on(id)
    $game_system.i_dic_sw = [] if $game_system.i_dic_sw == nil
    $game_system.i_dic_sw[id] = false if $game_system.i_dic_sw[id] == nil
    $game_system.i_dic_sw[id] = true
  end
  def i_dictionary_switch_off(id)
    $game_system.i_dic_sw = [] if $game_system.i_dic_sw == nil
    $game_system.i_dic_sw[id] = false if $game_system.i_dic_sw[id] == nil
    $game_system.i_dic_sw[id] = false
  end
  def i_dictionary_switch_on?(id)
    $game_system.i_dic_sw = [] if $game_system.i_dic_sw == nil
    $game_system.i_dic_sw[id] = false if $game_system.i_dic_sw[id] == nil
    return $game_system.i_dic_sw[id]
  end
  def w_dictionary_switch_on(id)
    $game_system.w_dic_sw = [] if $game_system.w_dic_sw == nil
    $game_system.w_dic_sw[id] = false if $game_system.w_dic_sw[id] == nil
    $game_system.w_dic_sw[id] = true
  end
  def w_dictionary_switch_off(id)
    $game_system.w_dic_sw = [] if $game_system.w_dic_sw == nil
    $game_system.w_dic_sw[id] = false if $game_system.w_dic_sw[id] == nil
    $game_system.w_dic_sw[id] = false
  end
  def w_dictionary_switch_on?(id)
    $game_system.w_dic_sw = [] if $game_system.w_dic_sw == nil
    $game_system.w_dic_sw[id] = false if $game_system.w_dic_sw[id] == nil
    return $game_system.w_dic_sw[id]
  end
  def a_dictionary_switch_on(id)
    $game_system.a_dic_sw = [] if $game_system.a_dic_sw == nil
    $game_system.a_dic_sw[id] = false if $game_system.a_dic_sw[id] == nil
    $game_system.a_dic_sw[id] = true
  end
  def a_dictionary_switch_off(id)
    $game_system.a_dic_sw = [] if $game_system.a_dic_sw == nil
    $game_system.a_dic_sw[id] = false if $game_system.a_dic_sw[id] == nil
    $game_system.a_dic_sw[id] = false
  end
  def a_dictionary_switch_on?(id)
    $game_system.a_dic_sw = [] if $game_system.a_dic_sw == nil
    $game_system.a_dic_sw[id] = false if $game_system.a_dic_sw[id] == nil
    return $game_system.a_dic_sw[id]
  end
  def t_dictionary_switch_on(item)
    if item.is_a?(RPG::Item)
      i_dictionary_switch_on(item.id)
    end
    if item.is_a?(RPG::Weapon)
      w_dictionary_switch_on(item.id)
    end
    if item.is_a?(RPG::Armor)
      a_dictionary_switch_on(item.id)
    end
  end
  def t_dictionary_switch_on?(item)
    if item.is_a?(RPG::Item)
      return i_dictionary_switch_on?(item.id)
    end
    if item.is_a?(RPG::Weapon)
      return w_dictionary_switch_on?(item.id)
    end
    if item.is_a?(RPG::Armor)
      return a_dictionary_switch_on?(item.id)
    end
  end
  def print_dictionary?(item)
    if item != nil
      if item.name.size > 0
        hantei = /<図鑑無効>/ =~ item.note
        if hantei == nil
          return true
        end
      end
    end
    return false
  end
  def item_dictionary_perfection
    dic_max = 0
    dic_num = 0
    $data_items.each do |item|
      if print_dictionary?(item)
        dic_max += 1
        if i_dictionary_switch_on?(item.id) == true
          dic_num += 1
        end
      end
    end
    $data_weapons.each do |item|
      if print_dictionary?(item)
        dic_max += 1
        if w_dictionary_switch_on?(item.id) == true
          dic_num += 1
        end
      end
    end
    $data_armors.each do |item|
      if print_dictionary?(item)
        dic_max += 1
        if a_dictionary_switch_on?(item.id) == true
          dic_num += 1
        end
      end
    end
    return (100*dic_num)/dic_max
  end
end

class Game_Interpreter
  include WD_itemdictionary
end

class Game_System
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :i_dic_sw
  attr_accessor :w_dic_sw
  attr_accessor :a_dic_sw
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias wd_orig_initialize001 initialize
  def initialize
    wd_orig_initialize001
    @i_dic_sw = []
    @w_dic_sw = []
    @a_dic_sw = []
  end
end

class Game_Party < Game_Unit
  include WD_itemdictionary
  #--------------------------------------------------------------------------
  # ● アイテムの増加(減少)
  #     include_equip : 装備品も含める
  #--------------------------------------------------------------------------
  alias wd_orig_gain_item001 gain_item
  def gain_item(item, amount, include_equip = false)   
    wd_orig_gain_item001(item, amount, include_equip = false)
    if amount > 0
      t_dictionary_switch_on(item)
    end
  end
end


#==============================================================================
# ■ Scene_ItemDictionary
#------------------------------------------------------------------------------
#  アイテム図鑑画面の処理を行うクラスです。
#==============================================================================

class Scene_ItemDictionary < Scene_ItemBase
  #--------------------------------------------------------------------------
  # ● 開始処理
  #--------------------------------------------------------------------------
  def start
    super
    create_help_window
    create_category_window
    create_status_window
    create_item_window
    create_perfection_window
  end
  #--------------------------------------------------------------------------
  # ● カテゴリウィンドウの作成
  #--------------------------------------------------------------------------
  def create_category_window
    @category_window = Window_ItemCategory.new
    @category_window.viewport = @viewport
    @category_window.help_window = @help_window
    @category_window.y = @help_window.height
    @category_window.set_handler(:ok,     method(:on_category_ok))
    @category_window.set_handler(:cancel, method(:return_scene))
  end
  #--------------------------------------------------------------------------
  # ● アイテムウィンドウの作成
  #--------------------------------------------------------------------------
  def create_item_window
    wy = @category_window.y + @category_window.height
    wh = Graphics.height - wy - 48
    @item_window = Window_ItemDictionaryList.new(Graphics.width-172-48, wy, 172+48, wh)
    @item_window.viewport = @viewport
    @item_window.help_window = @help_window
    @item_window.status_window = @status_window
    @item_window.set_handler(:cancel, method(:on_item_cancel))
    @category_window.item_window = @item_window
  end
  #--------------------------------------------------------------------------
  # ● アイテムステータスウィンドウの作成
  #--------------------------------------------------------------------------
  def create_status_window
    wy = @category_window.y + @category_window.height
    wh = Graphics.height - wy
    @status_window = Window_ItemDictionaryStatus.new(0, wy, Graphics.width-172-48, wh)
    @status_window.viewport = @viewport
    @status_window.set_item(nil)
  end
  #--------------------------------------------------------------------------
  # ● 図鑑完成度ウィンドウの作成
  #--------------------------------------------------------------------------
  def create_perfection_window
    wy = @item_window.y + @item_window.height
    wh = 48
    @perfection_window = Window_ItemDictionaryPerfection.new(Graphics.width-172-48, wy, 172+48, wh)
    @perfection_window.viewport = @viewport
  end
  #--------------------------------------------------------------------------
  # ● カテゴリ[決定]
  #--------------------------------------------------------------------------
  def on_category_ok
    @item_window.activate
    @item_window.select_last
  end
  #--------------------------------------------------------------------------
  # ● アイテム[キャンセル]
  #--------------------------------------------------------------------------
  def on_item_cancel
    @item_window.unselect
    @category_window.activate
    @status_window.set_item(nil)
  end
end


#==============================================================================
# ■ Window_ItemDictionaryList
#------------------------------------------------------------------------------
#  アイテム図鑑画面で、アイテムの一覧を表示するウィンドウです。
#==============================================================================

class Window_ItemDictionaryList < Window_Selectable
  include WD_itemdictionary
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height)
    super
    @category = :none
    @data = []
  end
  #--------------------------------------------------------------------------
  # ● カテゴリの設定
  #--------------------------------------------------------------------------
  def category=(category)
    return if @category == category
    @category = category
    refresh
    self.oy = 0
  end
  #--------------------------------------------------------------------------
  # ● 桁数の取得
  #--------------------------------------------------------------------------
  def col_max
    return 1
  end
  #--------------------------------------------------------------------------
  # ● 項目数の取得
  #--------------------------------------------------------------------------
  def item_max
    @data ? @data.size : 1
  end
  #--------------------------------------------------------------------------
  # ● アイテムの取得
  #--------------------------------------------------------------------------
  def item
    @data && index >= 0 ? @data[index] : nil
  end
  #--------------------------------------------------------------------------
  # ● 選択項目の有効状態を取得
  #--------------------------------------------------------------------------
  def current_item_enabled?
    enable?(@data[index])
  end
  #--------------------------------------------------------------------------
  # ● アイテムをリストに含めるかどうか
  #--------------------------------------------------------------------------
  def include?(item)
    case @category
    when :item
      item.is_a?(RPG::Item) && !item.key_item?
    when :weapon
      item.is_a?(RPG::Weapon)
    when :armor
      item.is_a?(RPG::Armor)
    when :key_item
      item.is_a?(RPG::Item) && item.key_item?
    else
      false
    end
  end
  #--------------------------------------------------------------------------
  # ● アイテムリストの作成
  #--------------------------------------------------------------------------
  def make_item_list
    @data = []
    $data_items.each do |item|
      if print_dictionary?(item)
        @data.push(item) if include?(item)
      end
    end
    $data_weapons.each do |item|
      if print_dictionary?(item)
        @data.push(item) if include?(item)
      end
    end
    $data_armors.each do |item|
      if print_dictionary?(item)
        @data.push(item) if include?(item)
      end
    end
    @data.push(nil) if include?(nil)
  end
  #--------------------------------------------------------------------------
  # ● 前回の選択位置を復帰
  #--------------------------------------------------------------------------
  def select_last
    select(0)
  end
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    if item
      rect = item_rect(index)
      rect.width -= 4
      if t_dictionary_switch_on?(item)
        change_color(normal_color, true)
        draw_item_name(item, rect.x, rect.y, true)
      else
        change_color(normal_color, false)
        draw_text(rect.x + 24, rect.y, 172, line_height, "???????")
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● ヘルプテキスト更新
  #--------------------------------------------------------------------------
  def update_help
    if t_dictionary_switch_on?(item)
      @help_window.set_item(item)
      @status_window.set_item(item, @index, true)
    else
      @help_window.set_text("???????")
      @status_window.set_item(item, @index, false)
    end
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    make_item_list
    create_contents
    draw_all_items
  end
  #--------------------------------------------------------------------------
  # ● ステータスウィンドウの設定
  #--------------------------------------------------------------------------
  def status_window=(status_window)
    @status_window = status_window
  end
end

#==============================================================================
# ■ Window_ItemDictionaryPerfection
#------------------------------------------------------------------------------
#  アイテム図鑑画面で、図鑑の完成度を表示するウィンドウです。
#==============================================================================

class Window_ItemDictionaryPerfection < Window_Selectable
  include WD_itemdictionary
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height)
    super
    refresh(width)
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh(width)
    contents.clear
    draw_text(0, 0, width-24, line_height, "図鑑完成度: #{item_dictionary_perfection} %", 1)
  end
end


#==============================================================================
# ■ Window_ItemDictionaryStatus
#------------------------------------------------------------------------------
#  アイテム図鑑画面で、アイテムの詳細を表示するウィンドウです。
#==============================================================================

class Window_ItemDictionaryStatus < Window_Selectable
  include WD_itemdictionary
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height)
    super
    @item = nil
    refresh
  end
  #--------------------------------------------------------------------------
  # ● アイテムの設定
  #--------------------------------------------------------------------------
  def set_item(item, index=-1, print=false)
    return if ((@item == item) and (@index == index))
    @item = item
    @index = index
    @print = print
    refresh
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    contents.font.size = 24

    if @print

      if @item.is_a?(RPG::Item)
        if WD_itemdictionary_layout::I_id_display
          text1  = sprintf("%0#{WD_itemdictionary_layout::I_id_display_digit}d",@index+1)
          x      = WD_itemdictionary_layout::I_id_display_x
          y      = WD_itemdictionary_layout::I_id_display_y
          width  = WD_itemdictionary_layout::I_id_display_width
          height = line_height
          draw_text(x, y, width, height, text1, 0)
        end
        if WD_itemdictionary_layout::I_name_display
          x      = WD_itemdictionary_layout::I_name_display_x
          y      = WD_itemdictionary_layout::I_name_display_y
          draw_item_name(@item, x, y, true)
        end
        font_size = WD_itemdictionary_layout::C_font_size
        contents.font.size = font_size
        if WD_itemdictionary_layout::I_price_display
          text1  = WD_itemdictionary_layout::I_price_display_text1
          text2  = @item.price
          text3  = Vocab::currency_unit
          x      = WD_itemdictionary_layout::I_price_display_x
          y      = WD_itemdictionary_layout::I_price_display_y
          width  = WD_itemdictionary_layout::I_price_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          cx = text_size(Vocab::currency_unit).width
          change_color(normal_color)
          draw_text(x, y, width - cx - 2, font_size, text2, 2)
          change_color(system_color)
          draw_text(x, y, width, font_size, text3, 2)
          change_color(normal_color)
        end
        if WD_itemdictionary_layout::I_occasion_display
          text1  = WD_itemdictionary_layout::I_occasion_display_text1
          text2  = WD_itemdictionary_layout::I_occasion_display_text2
          text3  = WD_itemdictionary_layout::I_occasion_display_text3
          text4  = WD_itemdictionary_layout::I_occasion_display_text4
          text5  = WD_itemdictionary_layout::I_occasion_display_text5
          x      = WD_itemdictionary_layout::I_occasion_display_x
          y      = WD_itemdictionary_layout::I_occasion_display_y
          width  = WD_itemdictionary_layout::I_occasion_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          case @item.occasion
          when 0
            draw_text(x, y, width, font_size, text2, 2)
          when 1
            draw_text(x, y, width, font_size, text3, 2)
          when 2
            draw_text(x, y, width, font_size, text4, 2)
          when 3
            draw_text(x, y, width, font_size, text5, 2)
          end
        end
        if WD_itemdictionary_layout::I_consumable_display
          text1  = WD_itemdictionary_layout::I_consumable_display_text1
          text2  = WD_itemdictionary_layout::I_consumable_display_text2
          text3  = WD_itemdictionary_layout::I_consumable_display_text3
          x      = WD_itemdictionary_layout::I_consumable_display_x
          y      = WD_itemdictionary_layout::I_consumable_display_y
          width  = WD_itemdictionary_layout::I_consumable_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          if @item.consumable
            draw_text(x, y, width, font_size, text2, 2)
          else
            draw_text(x, y, width, font_size, text3, 2)
          end
        end  
        if WD_itemdictionary_layout::I_option_display
          text1  = WD_itemdictionary_layout::I_option_display_text1
          text2  = WD_itemdictionary_layout::I_option_display_text2
          x      = WD_itemdictionary_layout::I_option_display_x
          y      = WD_itemdictionary_layout::I_option_display_y
          width  = WD_itemdictionary_layout::I_option_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          i = 0
          @item.note.scan(/<図鑑特徴:(.*)>/){|matched|
            i += 1
            self.contents.draw_text(x + font_size, y + font_size * i, width - font_size, font_size, matched[0], 0)
           }
          if i == 0
            self.contents.draw_text(x + font_size, y + font_size, width - font_size, font_size, text2, 0)
          end
        end

      elsif @item.is_a?(RPG::Weapon)
        if WD_itemdictionary_layout::W_id_display
          text1  = sprintf("%0#{WD_itemdictionary_layout::W_id_display_digit}d",@index+1)
          x      = WD_itemdictionary_layout::W_id_display_x
          y      = WD_itemdictionary_layout::W_id_display_y
          width  = WD_itemdictionary_layout::W_id_display_width
          height = line_height
          draw_text(x, y, width, height, text1, 0)
        end
        if WD_itemdictionary_layout::W_name_display
          x      = WD_itemdictionary_layout::W_name_display_x
          y      = WD_itemdictionary_layout::W_name_display_y
          draw_item_name(@item, x, y, true)
        end
        font_size = WD_itemdictionary_layout::C_font_size
        contents.font.size = font_size
        if WD_itemdictionary_layout::W_type_display
          text1  = WD_itemdictionary_layout::W_type_display_text1
          text2  = $data_system.weapon_types[@item.wtype_id]
          x      = WD_itemdictionary_layout::W_type_display_x
          y      = WD_itemdictionary_layout::W_type_display_y
          width  = WD_itemdictionary_layout::W_type_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          draw_text(x, y, width, font_size, text2, 2)
        end
        if WD_itemdictionary_layout::W_price_display
          text1  = WD_itemdictionary_layout::W_price_display_text1
          text2  = @item.price
          text3  = Vocab::currency_unit
          x      = WD_itemdictionary_layout::W_price_display_x
          y      = WD_itemdictionary_layout::W_price_display_y
          width  = WD_itemdictionary_layout::W_price_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          cx = text_size(Vocab::currency_unit).width
          change_color(normal_color)
          draw_text(x, y, width - cx - 2, font_size, text2, 2)
          change_color(system_color)
          draw_text(x, y, width, font_size, text3, 2)
          change_color(normal_color)
        end
        if WD_itemdictionary_layout::W_atk_display
          text1  = Vocab::param(2)
          text2  = @item.params[2]
          x      = WD_itemdictionary_layout::W_atk_display_x
          y      = WD_itemdictionary_layout::W_atk_display_y
          width  = WD_itemdictionary_layout::W_atk_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          draw_text(x, y, width, font_size, text2, 2)
        end
        if WD_itemdictionary_layout::W_def_display
          text1  = Vocab::param(3)
          text2  = @item.params[3]
          x      = WD_itemdictionary_layout::W_def_display_x
          y      = WD_itemdictionary_layout::W_def_display_y
          width  = WD_itemdictionary_layout::W_def_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          draw_text(x, y, width, font_size, text2, 2)
        end
        if WD_itemdictionary_layout::W_mat_display
          text1  = Vocab::param(4)
          text2  = @item.params[4]
          x      = WD_itemdictionary_layout::W_mat_display_x
          y      = WD_itemdictionary_layout::W_mat_display_y
          width  = WD_itemdictionary_layout::W_mat_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          draw_text(x, y, width, font_size, text2, 2)
        end
        if WD_itemdictionary_layout::W_mdf_display
          text1  = Vocab::param(5)
          text2  = @item.params[5]
          x      = WD_itemdictionary_layout::W_mdf_display_x
          y      = WD_itemdictionary_layout::W_mdf_display_y
          width  = WD_itemdictionary_layout::W_mdf_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          draw_text(x, y, width, font_size, text2, 2)
        end
        if WD_itemdictionary_layout::W_agi_display
          text1  = Vocab::param(6)
          text2  = @item.params[6]
          x      = WD_itemdictionary_layout::W_agi_display_x
          y      = WD_itemdictionary_layout::W_agi_display_y
          width  = WD_itemdictionary_layout::W_agi_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          draw_text(x, y, width, font_size, text2, 2)
        end
        if WD_itemdictionary_layout::W_luk_display
          text1  = Vocab::param(7)
          text2  = @item.params[7]
          x      = WD_itemdictionary_layout::W_luk_display_x
          y      = WD_itemdictionary_layout::W_luk_display_y
          width  = WD_itemdictionary_layout::W_luk_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          draw_text(x, y, width, font_size, text2, 2)
        end
        if WD_itemdictionary_layout::W_mhp_display
          text1  = Vocab::param(0)
          text2  = @item.params[0]
          x      = WD_itemdictionary_layout::W_mhp_display_x
          y      = WD_itemdictionary_layout::W_mhp_display_y
          width  = WD_itemdictionary_layout::W_mhp_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          draw_text(x, y, width, font_size, text2, 2)
        end
        if WD_itemdictionary_layout::W_mmp_display
          text1  = Vocab::param(1)
          text2  = @item.params[1]
          x      = WD_itemdictionary_layout::W_mmp_display_x
          y      = WD_itemdictionary_layout::W_mmp_display_y
          width  = WD_itemdictionary_layout::W_mmp_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          draw_text(x, y, width, font_size, text2, 2)
        end
        if WD_itemdictionary_layout::W_option_display
          text1  = WD_itemdictionary_layout::W_option_display_text1
          text2  = WD_itemdictionary_layout::W_option_display_text2
          x      = WD_itemdictionary_layout::W_option_display_x
          y      = WD_itemdictionary_layout::W_option_display_y
          width  = WD_itemdictionary_layout::W_option_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          i = 0
          @item.note.scan(/<図鑑特徴:(.*)>/){|matched|
            i += 1
            self.contents.draw_text(x + font_size, y + font_size * i, width - font_size, font_size, matched[0], 0)
           }
          if i == 0
            self.contents.draw_text(x + font_size, y + font_size, width - font_size, font_size, text2, 0)
          end
        end

      elsif @item.is_a?(RPG::Armor)
        if WD_itemdictionary_layout::A_id_display
          text1  = sprintf("%0#{WD_itemdictionary_layout::A_id_display_digit}d",@index+1)
          x      = WD_itemdictionary_layout::A_id_display_x
          y      = WD_itemdictionary_layout::A_id_display_y
          width  = WD_itemdictionary_layout::A_id_display_width
          height = line_height
          draw_text(x, y, width, height, text1, 0)
        end
        if WD_itemdictionary_layout::A_name_display
          x      = WD_itemdictionary_layout::A_name_display_x
          y      = WD_itemdictionary_layout::A_name_display_y
          draw_item_name(@item, x, y, true)
        end
        font_size = WD_itemdictionary_layout::C_font_size
        contents.font.size = font_size
        if WD_itemdictionary_layout::A_type_display
          text1  = WD_itemdictionary_layout::A_type_display_text1
          text2  = $data_system.armor_types[@item.atype_id]
          x      = WD_itemdictionary_layout::A_type_display_x
          y      = WD_itemdictionary_layout::A_type_display_y
          width  = WD_itemdictionary_layout::A_type_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          draw_text(x, y, width, font_size, text2, 2)
        end
        if WD_itemdictionary_layout::A_price_display
          text1  = WD_itemdictionary_layout::A_price_display_text1
          text2  = @item.price
          text3  = Vocab::currency_unit
          x      = WD_itemdictionary_layout::A_price_display_x
          y      = WD_itemdictionary_layout::A_price_display_y
          width  = WD_itemdictionary_layout::A_price_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          cx = text_size(Vocab::currency_unit).width
          change_color(normal_color)
          draw_text(x, y, width - cx - 2, font_size, text2, 2)
          change_color(system_color)
          draw_text(x, y, width, font_size, text3, 2)
          change_color(normal_color)
        end
        if WD_itemdictionary_layout::A_atk_display
          text1  = Vocab::param(2)
          text2  = @item.params[2]
          x      = WD_itemdictionary_layout::A_atk_display_x
          y      = WD_itemdictionary_layout::A_atk_display_y
          width  = WD_itemdictionary_layout::A_atk_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          draw_text(x, y, width, font_size, text2, 2)
        end
        if WD_itemdictionary_layout::A_def_display
          text1  = Vocab::param(3)
          text2  = @item.params[3]
          x      = WD_itemdictionary_layout::A_def_display_x
          y      = WD_itemdictionary_layout::A_def_display_y
          width  = WD_itemdictionary_layout::A_def_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          draw_text(x, y, width, font_size, text2, 2)
        end
        if WD_itemdictionary_layout::A_mat_display
          text1  = Vocab::param(4)
          text2  = @item.params[4]
          x      = WD_itemdictionary_layout::A_mat_display_x
          y      = WD_itemdictionary_layout::A_mat_display_y
          width  = WD_itemdictionary_layout::A_mat_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          draw_text(x, y, width, font_size, text2, 2)
        end
        if WD_itemdictionary_layout::A_mdf_display
          text1  = Vocab::param(5)
          text2  = @item.params[5]
          x      = WD_itemdictionary_layout::A_mdf_display_x
          y      = WD_itemdictionary_layout::A_mdf_display_y
          width  = WD_itemdictionary_layout::A_mdf_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          draw_text(x, y, width, font_size, text2, 2)
        end
        if WD_itemdictionary_layout::A_agi_display
          text1  = Vocab::param(6)
          text2  = @item.params[6]
          x      = WD_itemdictionary_layout::A_agi_display_x
          y      = WD_itemdictionary_layout::A_agi_display_y
          width  = WD_itemdictionary_layout::A_agi_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          draw_text(x, y, width, font_size, text2, 2)
        end
        if WD_itemdictionary_layout::A_luk_display
          text1  = Vocab::param(7)
          text2  = @item.params[7]
          x      = WD_itemdictionary_layout::A_luk_display_x
          y      = WD_itemdictionary_layout::A_luk_display_y
          width  = WD_itemdictionary_layout::A_luk_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          draw_text(x, y, width, font_size, text2, 2)
        end
        if WD_itemdictionary_layout::A_mhp_display
          text1  = Vocab::param(0)
          text2  = @item.params[0]
          x      = WD_itemdictionary_layout::A_mhp_display_x
          y      = WD_itemdictionary_layout::A_mhp_display_y
          width  = WD_itemdictionary_layout::A_mhp_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          draw_text(x, y, width, font_size, text2, 2)
        end
        if WD_itemdictionary_layout::A_mmp_display
          text1  = Vocab::param(1)
          text2  = @item.params[1]
          x      = WD_itemdictionary_layout::A_mmp_display_x
          y      = WD_itemdictionary_layout::A_mmp_display_y
          width  = WD_itemdictionary_layout::A_mmp_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          draw_text(x, y, width, font_size, text2, 2)
        end
        if WD_itemdictionary_layout::A_option_display
          text1  = WD_itemdictionary_layout::A_option_display_text1
          text2  = WD_itemdictionary_layout::A_option_display_text2
          x      = WD_itemdictionary_layout::A_option_display_x
          y      = WD_itemdictionary_layout::A_option_display_y
          width  = WD_itemdictionary_layout::A_option_display_width
          change_color(system_color)
          draw_text(x, y, width, font_size, text1, 0)
          change_color(normal_color)
          i = 0
          @item.note.scan(/<図鑑特徴:(.*)>/){|matched|
            i += 1
            self.contents.draw_text(x + font_size, y + font_size * i, width - font_size, font_size, matched[0], 0)
           }
          if i == 0
            self.contents.draw_text(x + font_size, y + font_size, width - font_size, font_size, text2, 0)
          end
        end

      end

    elsif @item != nil
      if @item.is_a?(RPG::Item)
        if WD_itemdictionary_layout::I_id_display
          text1  = sprintf("%0#{WD_itemdictionary_layout::I_id_display_digit}d",@index+1)
          x      = WD_itemdictionary_layout::I_id_display_x
          y      = WD_itemdictionary_layout::I_id_display_y
          width  = WD_itemdictionary_layout::I_id_display_width
          height = line_height
          draw_text(x, y, width, height, text1, 0)
        end
        if WD_itemdictionary_layout::I_name_display
          text1  = "- No Data -"
          x      = WD_itemdictionary_layout::I_name_display_x
          y      = WD_itemdictionary_layout::I_name_display_y
          width  = WD_itemdictionary_layout::I_name_display_width
          height = line_height
          draw_text(x, y, width, height, text1, 0)
        end
      end
      if @item.is_a?(RPG::Weapon)
        if WD_itemdictionary_layout::W_id_display
          text1  = sprintf("%0#{WD_itemdictionary_layout::W_id_display_digit}d",@index+1)
          x      = WD_itemdictionary_layout::W_id_display_x
          y      = WD_itemdictionary_layout::W_id_display_y
          width  = WD_itemdictionary_layout::W_id_display_width
          height = line_height
          draw_text(x, y, width, height, text1, 0)
        end
        if WD_itemdictionary_layout::W_name_display
          text1  = "- No Data -"
          x      = WD_itemdictionary_layout::W_name_display_x
          y      = WD_itemdictionary_layout::W_name_display_y
          width  = WD_itemdictionary_layout::W_name_display_width
          height = line_height
          draw_text(x, y, width, height, text1, 0)
        end
      end
      if @item.is_a?(RPG::Armor)
        if WD_itemdictionary_layout::A_id_display
          text1  = sprintf("%0#{WD_itemdictionary_layout::A_id_display_digit}d",@index+1)
          x      = WD_itemdictionary_layout::A_id_display_x
          y      = WD_itemdictionary_layout::A_id_display_y
          width  = WD_itemdictionary_layout::A_id_display_width
          height = line_height
          draw_text(x, y, width, height, text1, 0)
        end
        if WD_itemdictionary_layout::A_name_display
          text1  = "- No Data -"
          x      = WD_itemdictionary_layout::A_name_display_x
          y      = WD_itemdictionary_layout::A_name_display_y
          width  = WD_itemdictionary_layout::A_name_display_width
          height = line_height
          draw_text(x, y, width, height, text1, 0)
        end
      end

    end
  end
end
[/pre]

P.S 以上這兩個腳本要一起存在才有效果!!
因为现实太残酷、所以我们都在打造虚幻的天堂。如果现实不再残酷,也是因为有这快乐的天堂。
梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
回帖
1526
发表于 2013-3-5 08:43:34 | 显示全部楼层
改倒是能改,大约 518 行:
  1.         if WD_itemdictionary_layout::I_option_display
  2.           text1  = WD_itemdictionary_layout::I_option_display_text1
  3.           text2  = WD_itemdictionary_layout::I_option_display_text2
  4.           x      = WD_itemdictionary_layout::I_option_display_x
  5.           y      = WD_itemdictionary_layout::I_option_display_y
  6.           width  = WD_itemdictionary_layout::I_option_display_width
  7.           change_color(system_color)
  8.           draw_text(x, y, width, font_size, text1, 0)
  9.           change_color(normal_color)
  10.           i = 0
  11.           @item.note.scan(/<図鉴特徴:(.*)>/){|matched|
  12.             i += 1
  13.             self.contents.draw_text(x + font_size, y + font_size * i, width - font_size, font_size, matched[0], 0)
  14.            }
  15.           if i == 0
  16.             self.contents.draw_text(x + font_size, y + font_size, width - font_size, font_size, text2, 0)
  17.           end
  18.         end
复制代码
这就是做特征表示的程式码,但是我不知道您说的命中、回避资料要去哪抓?

好比数据库中的武器页,手斧的名称和价格那些都好说,现成订定好的,

但命中率在能力值变化量中没有看到,难道要自己取特性内容去作运算?

那还不如原本在备注栏中写明的好使。
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复

使用道具 举报

梦石
0
星屑
562
在线时间
465 小时
注册时间
2009-10-11
回帖
322
 楼主| 发表于 2013-3-5 17:16:46 | 显示全部楼层
就是設定武器/裝備/道具右邊那欄啊~
有追加能力值(譬如命中率+3%. 最大HP*120. 增加攻擊次數1 等等...)
因为现实太残酷、所以我们都在打造虚幻的天堂。如果现实不再残酷,也是因为有这快乐的天堂。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
回帖
1526
发表于 2013-3-5 22:55:25 | 显示全部楼层
a000b1745 发表于 2013-3-5 17:16
就是設定武器/裝備/道具右邊那欄啊~
有追加能力值(譬如命中率+3%. 最大HP*120. 增加攻擊次數1 等等...) ...

晕,我举个例子,武器中的手斧,特性栏中有


加入能力         [物理命中机率] -10 %


那特征命中率直接这样写吗?或者还是要计算出命中率的实际值?

如果直接读特性栏内的设定还好些,计算结果就没辄了,

因为我不懂这个计算方式,所以也无法去试着改改看。

修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复

使用道具 举报

梦石
0
星屑
562
在线时间
465 小时
注册时间
2009-10-11
回帖
322
 楼主| 发表于 2013-3-5 23:52:11 | 显示全部楼层
就是直接寫的~ 不用再計算什麼~!
有辦法嗎?? 我不需要什麼計算公式{:2_263:}
只要簡單顯示" [物理命中机率] -10 %" 就好了!
因为现实太残酷、所以我们都在打造虚幻的天堂。如果现实不再残酷,也是因为有这快乐的天堂。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
回帖
1526
发表于 2013-3-6 07:53:50 | 显示全部楼层
本帖最后由 j433463 于 2013-3-6 12:20 编辑

呃,好像做到了,不过是土方法,之前说的那一段注释后用这个取代:


[pre lang="ruby" line="1"]          #道具图鉴
          i = 0
         @item.effects.each {|effect|
            i += 1
    case effect.code
    when 11 #
      text2 = "恢复体力值 :" + (effect.value2.to_i).to_s
    when 12
      text2 = "恢复魔力值 :" + (effect.value2.to_i).to_s
    when 13
      text2 = "恢复特技值 :" + (effect.value2.to_i).to_s

    when 21
      text2 = "附加状态  :[" + $data_states[effect.data_id].name + "]" + sprintf("%02d", effect.value1 * 100) + "%"
    when 22
      text2 = "解除状态  :[" + $data_states[effect.data_id].name + "]" + sprintf("%02d", effect.value1 * 100) + "%"

    when 31
      text2 = "强化能力  :[" + @param_name[effect.data_id] + "] " + (effect.value1.to_i).to_s + " 回合"
    when 32
      text2 = "弱化能力  :[" + @param_name[effect.data_id] + "] " + (effect.value1.to_i).to_s + " 回合"
    when 33
      text2 = "解除能力强化:[" + @param_name[effect.data_id] + "] "
    when 34
      text2 = "解除能力弱化:[" + @param_name[effect.data_id] + "] "
               
    when 41
      text2 = "特殊效果  :撤退"
    when 42
      text2 = "能力提升  :[" + @param_name[effect.data_id] + "] + " + (effect.value1.to_i).to_s
              
    when 43
      text2 = "学会技能  :[" + $data_skills[effect.data_id].name + "]"
    when 44
      text2 = "公共事件  :[" + $data_common_events[effect.data_id].name + "]"
    end
            self.contents.draw_text(x + font_size, y + font_size * i, width - font_size, font_size, text2 , 0)
          }
          if i == 0
            self.contents.draw_text(x + font_size, y + font_size, width - font_size, font_size, text2, 0)
          end
[/pre]


s2.png

s1.png


不过,code 和 data_id 有那些值,又代表哪个特性,不试不知道,要把它写完全还真不是简单的工作,这还只是道具的部份,

我只完成物品的部份,脚本下方还有 武器 和 防具 也要做,方式一样,这是个大工程,我偷懒了,您自己搞定吧,

武器和物品的 code 不能共同,貌似防具也不同,无法用物品的复制过去,都要重做,而且更多,

不是我不负责,要把它们全部弄出来,我还不如用原来方法在备注栏手动添加呢,没省多少力。

而且,貌似显示特征的空间不够,我测试默认分辨率 544*416 下只能放四行,第五行会盖掉下半部,

默认的物品武器防具其特性超过四行的不少,必须再调整出空间来才行。

对了,补充一下,武器要用 features 而不是 effects,所以是 @item.features.each

点评

你說的對! 的確只能放下四行,就算自己添加也要挑重要的來寫!!  发表于 2013-3-6 13:26
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复

使用道具 举报

梦石
0
星屑
562
在线时间
465 小时
注册时间
2009-10-11
回帖
322
 楼主| 发表于 2013-3-6 13:24:17 | 显示全部楼层
哇! 還真是大工程~
讓我好好回去研究一下!!
非常謝謝你啊大獅子{:2_249:}

点评

這腳本不錯,算是提供玩家的小百科。但有辦法直接讓內容都顯示嗎?? i_dictionary_switch_on(1) 是開通ID=1的物品~我想開通全部的~非要一個一個打嗎??  发表于 2013-3-6 15:52
改这脚本我有兴趣,只是后面整理那些资料太累了,只好暂时偷懒,不过基本架构已经写出来,剩下只有整理而已,应该不会太难了,有空再继续做。  发表于 2013-3-6 13:34
因为现实太残酷、所以我们都在打造虚幻的天堂。如果现实不再残酷,也是因为有这快乐的天堂。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部