设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1168|回复: 1
打印 上一主题 下一主题

帮助我汉化一下这个脚本

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
79
在线时间
6 小时
注册时间
2006-7-10
帖子
76
跳转到指定楼层
1
发表于 2008-7-28 20:11:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
帮助我汉化一下这个脚本并将使用方法及脚本功能告诉我一下。
只汉化使用方法及脚本功能就行,注释可以不汉化。
多谢!!!!!!!!!!!!!!!!!!!!!!!!!
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ アイテム合成 - KGC_ComposeItem ◆ VX ◆
  3. #_/    ◇ Last update : 2008/06/22 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  複数のアイテムを合成し、新たなアイテムを作り出す機能を作成します。
  6. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  7. #==============================================================================
  8. # ★ カスタマイズ項目 - Customize ★
  9. #==============================================================================

  10. module KGC
  11. module ComposeItem
  12.   # ◆ 合成画面呼び出しフラグを表すスイッチ番号
  13.   #  このスイッチを ON にすると、通常のショップの代わりに合成屋が開きます。
  14.   COMPOSE_CALL_SWITCH = 2

  15.   # ◆ 合成レシピ
  16.   #  ≪費用, "タイプ:ID,個数", ...≫
  17.   #  【 費用 】合成費用
  18.   #  【タイプ】合成素材の種類 (I..アイテム  W..武器  A..防具)
  19.   #  【  ID  】合成素材のID (↑と対応)
  20.   #  【 個数 】合成素材の必要数
  21.   #  "タイプ:ID,個数" はいくつでも指定できます。
  22.   #  個数を省略して "タイプ:ID" と書いた場合、個数は 1 扱いとなります。
  23.   #  個数を 0 にした場合、1 個以上持っていれば何度でも合成できます。
  24.   #  レシピ配列は、添字がアイテム・武器・防具IDに対応しています。
  25.   RECIPE_ITEM   = []  # アイテム
  26.   RECIPE_WEAPON = []  # 武器
  27.   RECIPE_ARMOR  = []  # 防具
  28.   # ここから下に、合成レシピを定義。
  29.   #  <設定例>
  30.   #  アイテムID:8 の合成レシピ
  31.   #  アイテムID 2, 4, 7 を 1 個ずつ消費。無料。
  32.   RECIPE_ITEM[8] = [0, "I:2", "I:4", "I:7"]
  33.   #  武器ID:16 の合成レシピ
  34.   #  武器ID:10 を 1 個、アイテムID:16 を 2 個消費。800 G。
  35.   RECIPE_WEAPON[16] = [800, "W:10", "I:16,2"]

  36.   # ◆ 合成コマンド名
  37.   #  "購入する" コマンドの位置に表示されます。
  38.   #  ※ 他のコマンド名は [Vocab] で変更可能。
  39.   VOCAB_COMPOSE_ITEM = "合成する"
  40.   # ◆ 合成アイテム情報切り替えボタン
  41.   #  「素材リスト <--> 能力値変化(装備品のみ)」を切り替えるボタン。
  42.   #  使用しない場合は nil を指定。
  43.   SWITCH_INFO_BUTTON = Input::X

  44.   # ◆ 必要素材リストをコンパクトにする
  45.   #  素材数が多い場合は true にしてください。
  46.   COMPACT_MATERIAL_LIST = true
  47.   # ◆ コマンドウィンドウを表示しない
  48.   #  XP 版と同様のスタイルになります。
  49.   HIDE_COMMAND_WINDOW   = false
  50.   # ◆ 所持金ウィンドウを表示しない
  51.   #  HIDE_COMMAND_WINDOW が false のときは常に表示します。
  52.   HIDE_GOLD_WINDOW      = false
  53.   # ◆ 合成費用が 0 の場合、費用を表示しない
  54.   HIDE_ZERO_COST        = true

  55.   # ◆ 費用・素材不足のレシピを表示しない
  56.   #  一度でも合成したことがあるものは常に表示されます。
  57.   HIDE_SHORTAGE_RECIPE     = false
  58.   # ◆ 合成したことがないレシピのアイテム名を隠す
  59.   MASK_UNKNOWN_RECIPE_NAME = true
  60.   # ◆ 合成したことがないレシピに表示する名前
  61.   #  1文字だけ指定すると、アイテム名と同じ文字数に拡張されます。
  62.   UNKNOWN_NAME_MASK        = "?"
  63.   # ◆ 合成したことがないレシピのヘルプを隠す
  64.   HIDE_UNKNOWN_RECIPE_HELP = true
  65.   # ◆ 合成したことがないレシピに表示するヘルプ
  66.   UNKNOWN_RECIPE_HELP      = "合成したことがありません。"
  67. end
  68. end

  69. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  70. $imported = {} if $imported == nil
  71. $imported["ComposeItem"] = true

  72. module KGC::ComposeItem
  73.   module Regexp
  74.     # レシピ
  75.     RECIPE = /([IWA])\s*:\s*(\d+)(\s*,\s*\d+)?/i
  76.   end
  77. end

  78. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  79. #==============================================================================
  80. # ■ Vocab
  81. #==============================================================================

  82. module Vocab
  83.   # 合成画面
  84.   ComposeItem = KGC::ComposeItem::VOCAB_COMPOSE_ITEM
  85. end

  86. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  87. #==============================================================================
  88. # ■ RPG::BaseItem
  89. #==============================================================================

  90. class RPG::BaseItem
  91.   #--------------------------------------------------------------------------
  92.   # ○ クラス変数
  93.   #--------------------------------------------------------------------------
  94.   @@__masked_name =
  95.     KGC::ComposeItem::UNKNOWN_NAME_MASK  # マスク名
  96.   @@__expand_masked_name = false         # マスク名拡張表示フラグ

  97.   if @@__masked_name != nil
  98.     @@__expand_masked_name = (@@__masked_name.scan(/./).size == 1)
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # ○ アイテム合成のキャッシュ生成
  102.   #--------------------------------------------------------------------------
  103.   def create_compose_item_cache
  104.     @__compose_cost = 0
  105.     @__compose_materials = []

  106.     # レシピ取得
  107.     recipe = nil
  108.     case self
  109.     when RPG::Item    # アイテム
  110.       recipe = KGC::ComposeItem::RECIPE_ITEM[self.id]
  111.     when RPG::Weapon  # 武器
  112.       recipe = KGC::ComposeItem::RECIPE_WEAPON[self.id]
  113.     when RPG::Armor   # 防具
  114.       recipe = KGC::ComposeItem::RECIPE_ARMOR[self.id]
  115.     end
  116.     return if recipe == nil
  117.     recipe = recipe.dup

  118.     @__compose_cost = recipe.shift
  119.     # 素材リストを作成
  120.     recipe.each { |r|
  121.       if r =~ KGC::ComposeItem::Regexp::RECIPE
  122.         material = Game_ComposeMaterial.new
  123.         material.kind = $1.upcase                    # 素材の種類を取得
  124.         material.id = $2.to_i                        # 素材の ID を取得
  125.         if $3 != nil
  126.           material.number = [$3[/\d+/].to_i, 0].max  # 必要数を取得
  127.         end
  128.         @__compose_materials << material
  129.       end
  130.     }
  131.   end
  132.   #--------------------------------------------------------------------------
  133.   # ○ マスク名
  134.   #--------------------------------------------------------------------------
  135.   def masked_name
  136.     if KGC::ComposeItem::MASK_UNKNOWN_RECIPE_NAME
  137.       if @@__expand_masked_name
  138.         # マスク名を拡張して表示
  139.         return @@__masked_name * self.name.scan(/./).size
  140.       else
  141.         return @@__masked_name
  142.       end
  143.     else
  144.       return self.name
  145.     end
  146.   end
  147.   #--------------------------------------------------------------------------
  148.   # ○ 合成用費用
  149.   #--------------------------------------------------------------------------
  150.   def compose_cost
  151.     create_compose_item_cache if @__compose_cost == nil
  152.     return @__compose_cost
  153.   end
  154.   #--------------------------------------------------------------------------
  155.   # ○ 合成用素材リスト
  156.   #--------------------------------------------------------------------------
  157.   def compose_materials
  158.     create_compose_item_cache if @__compose_materials == nil
  159.     return @__compose_materials
  160.   end
  161.   #--------------------------------------------------------------------------
  162.   # ○ 合成アイテムか
  163.   #--------------------------------------------------------------------------
  164.   def is_compose?
  165.     return !compose_materials.empty?
  166.   end
  167. end

  168. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  169. #==============================================================================
  170. # ■ Game_Party
  171. #==============================================================================

  172. class Game_Party < Game_Unit
  173.   #--------------------------------------------------------------------------
  174.   # ○ 合成済みフラグをクリア
  175.   #--------------------------------------------------------------------------
  176.   def clear_composed_flag
  177.     @item_composed = {}
  178.     @weapon_composed = {}
  179.     @armor_composed = {}
  180.   end
  181.   #--------------------------------------------------------------------------
  182.   # ○ アイテムの合成済みフラグを設定
  183.   #     item : アイテム
  184.   #     flag : true..合成済み  false..未合成
  185.   #--------------------------------------------------------------------------
  186.   def set_item_composed(item, flag = true)
  187.     return false unless item.is_a?(RPG::BaseItem)  # アイテム以外
  188.     return false unless item.is_compose?           # 合成アイテム以外

  189.     # 合成済みフラグを格納するハッシュを作成
  190.     clear_composed_flag if @item_composed == nil

  191.     # 合成済みフラグをセット
  192.     case item
  193.     when RPG::Item    # アイテム
  194.       @item_composed[item.id] = flag
  195.     when RPG::Weapon  # 武器
  196.       @weapon_composed[item.id] = flag
  197.     when RPG::Armor   # 防具
  198.       @armor_composed[item.id] = flag
  199.     end
  200.   end
  201.   #--------------------------------------------------------------------------
  202.   # ○ アイテムの合成済み判定
  203.   #     item : アイテム
  204.   #--------------------------------------------------------------------------
  205.   def item_composed?(item)
  206.     return false unless item.is_a?(RPG::BaseItem)  # アイテム以外
  207.     return false unless item.is_compose?           # 合成アイテム以外

  208.     # 合成済みフラグを格納するハッシュを作成
  209.     clear_composed_flag if @item_composed == nil

  210.     # 合成済み判定
  211.     case item
  212.     when RPG::Item    # アイテム
  213.       return @item_composed[item.id]
  214.     when RPG::Weapon  # 武器
  215.       return @weapon_composed[item.id]
  216.     when RPG::Armor   # 防具
  217.       return @armor_composed[item.id]
  218.     end
  219.     return false
  220.   end
  221.   #--------------------------------------------------------------------------
  222.   # ○ アイテムの合成可能判定
  223.   #     item : アイテム
  224.   #--------------------------------------------------------------------------
  225.   def item_can_compose?(item)
  226.     return false unless item.is_a?(RPG::BaseItem)  # アイテム以外は不可
  227.     return false unless item.is_compose?           # 合成アイテム以外は不可

  228.     return false if gold < item.compose_cost       # 資金不足なら不可

  229.     item.compose_materials.each { |material|
  230.       num = item_number(material.item)
  231.       # 素材不足なら不可
  232.       return false if num < material.number || num == 0
  233.     }
  234.     return true
  235.   end
  236.   #--------------------------------------------------------------------------
  237.   # ○ アイテムの合成可能数を取得
  238.   #     item : アイテム
  239.   #--------------------------------------------------------------------------
  240.   def number_of_composable(item)
  241.     return 0 unless item.is_a?(RPG::BaseItem)  # アイテム以外
  242.     return 0 unless item.is_compose?           # 合成アイテム以外

  243.     number = ($imported["LimitBreak"] ? item.number_limit : 99)
  244.     if item.compose_cost > 0
  245.       number = [number, gold / item.compose_cost].min
  246.     end
  247.     # 素材数判定
  248.     item.compose_materials.each { |material|
  249.       next if material.number == 0  # 必要数 0 は無視
  250.       n = item_number(material.item) / material.number
  251.       number = [number, n].min
  252.     }
  253.     return number
  254.   end
  255. end

  256. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  257. #==============================================================================
  258. # □ Game_ComposeMaterial
  259. #------------------------------------------------------------------------------
  260. #   合成素材の情報を格納するクラスです。
  261. #==============================================================================

  262. class Game_ComposeMaterial
  263.   #--------------------------------------------------------------------------
  264.   # ○ 公開インスタンス変数
  265.   #--------------------------------------------------------------------------
  266.   attr_accessor :kind                     # アイテムの種類 (/[IWA]/)
  267.   attr_accessor :id                       # アイテムの ID
  268.   attr_accessor :number                   # 必要数
  269.   #--------------------------------------------------------------------------
  270.   # ○ オブジェクト初期化
  271.   #--------------------------------------------------------------------------
  272.   def initialize
  273.     @kind = "I"
  274.     @id = 0
  275.     @number = 1
  276.   end
  277.   #--------------------------------------------------------------------------
  278.   # ○ アイテム取得
  279.   #--------------------------------------------------------------------------
  280.   def item
  281.     case @kind
  282.     when "I"  # アイテム
  283.       return $data_items[@id]
  284.     when "W"  # 武器
  285.       return $data_weapons[@id]
  286.     when "A"  # 防具
  287.       return $data_armors[@id]
  288.     else
  289.       return nil
  290.     end
  291.   end
  292. end

  293. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  294. #==============================================================================
  295. # ■ Window_Base
  296. #==============================================================================

  297. class Window_Base < Window
  298.   #--------------------------------------------------------------------------
  299.   # ○ 合成アイテム名の描画
  300.   #     item    : アイテム (スキル、武器、防具でも可)
  301.   #     x       : 描画先 X 座標
  302.   #     y       : 描画先 Y 座標
  303.   #     enabled : 有効フラグ。false のとき半透明で描画
  304.   #--------------------------------------------------------------------------
  305.   def draw_compose_item_name(item, x, y, enabled = true)
  306.     return if item == nil

  307.     draw_icon(item.icon_index, x, y, enabled)
  308.     self.contents.font.color = normal_color
  309.     self.contents.font.color.alpha = enabled ? 255 : 128
  310.     self.contents.draw_text(x + 24, y, 172, WLH,
  311.       $game_party.item_composed?(item) ? item.name : item.masked_name)
  312.   end
  313. end
  314.   
  315. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  316. #==============================================================================
  317. # □ Window_ComposeNumber
  318. #------------------------------------------------------------------------------
  319. #   合成画面で、合成するアイテムの個数を入力するウィンドウです。
  320. #==============================================================================

  321. class Window_ComposeNumber < Window_ShopNumber
  322.   #--------------------------------------------------------------------------
  323.   # ○ 公開インスタンス変数
  324.   #--------------------------------------------------------------------------
  325.   attr_accessor :sell_flag                # 売却フラグ
  326.   #--------------------------------------------------------------------------
  327.   # ● オブジェクト初期化
  328.   #     x : ウィンドウの X 座標
  329.   #     y : ウィンドウの Y 座標
  330.   #--------------------------------------------------------------------------
  331.   alias initialize_KGC_ComposeItem initialize unless $@
  332.   def initialize(x, y)
  333.     @sell_flag = false

  334.     initialize_KGC_ComposeItem(x, y)
  335.   end
  336.   #--------------------------------------------------------------------------
  337.   # ● リフレッシュ
  338.   #--------------------------------------------------------------------------
  339.   def refresh
  340.     y = 96
  341.     self.contents.clear
  342.     if @sell_flag
  343.       draw_item_name(@item, 0, y)
  344.     else
  345.       draw_compose_item_name(@item, 0, y)
  346.     end
  347.     self.contents.font.color = normal_color
  348.     self.contents.draw_text(212, y, 20, WLH, "×")
  349.     self.contents.draw_text(248, y, 20, WLH, @number, 2)
  350.     self.cursor_rect.set(244, y, 28, WLH)
  351.     if !KGC::ComposeItem::HIDE_ZERO_COST || @price > 0
  352.       draw_currency_value(@price * @number, 4, y + WLH * 2, 264)
  353.     end
  354.   end
  355. end

  356. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  357. #==============================================================================
  358. # □ Window_ComposeItem
  359. #------------------------------------------------------------------------------
  360. #   合成画面で、合成できる商品の一覧を表示するウィンドウです。
  361. #==============================================================================

  362. class Window_ComposeItem < Window_ShopBuy
  363.   #--------------------------------------------------------------------------
  364.   # ● リフレッシュ
  365.   #--------------------------------------------------------------------------
  366.   def refresh
  367.     @data = []
  368.     for goods_item in @shop_goods
  369.       case goods_item[0]
  370.       when 0
  371.         item = $data_items[goods_item[1]]
  372.       when 1
  373.         item = $data_weapons[goods_item[1]]
  374.       when 2
  375.         item = $data_armors[goods_item[1]]
  376.       end
  377.       # 合成アイテムのみ追加
  378.       @data.push(item) if include?(item)
  379.     end
  380.     @item_max = @data.size
  381.     create_contents
  382.     for i in 0...@item_max
  383.       draw_item(i)
  384.     end
  385.   end
  386.   #--------------------------------------------------------------------------
  387.   # ○ アイテムをリストに含めるかどうか
  388.   #     item : アイテム
  389.   #--------------------------------------------------------------------------
  390.   def include?(item)
  391.     return false if item == nil                # アイテムが nil なら含めない
  392.     return false unless item.is_compose?       # 合成アイテムでなければ含めない
  393.     if KGC::ComposeItem::HIDE_SHORTAGE_RECIPE  # 費用・素材不足を隠す場合
  394.       if !$game_party.item_composed?(item) && !enable?(item)
  395.         return false  # 未合成かつ合成不可なら含めない
  396.       end
  397.     end

  398.     return true
  399.   end
  400.   #--------------------------------------------------------------------------
  401.   # ○ アイテムを許可状態で表示するかどうか
  402.   #     item : アイテム
  403.   #--------------------------------------------------------------------------
  404.   def enable?(item)
  405.     return $game_party.item_can_compose?(item)
  406.   end
  407.   #--------------------------------------------------------------------------
  408.   # ● 項目の描画
  409.   #     index : 項目番号
  410.   #--------------------------------------------------------------------------
  411.   def draw_item(index)
  412.     item = @data[index]
  413.     number = $game_party.item_number(item)
  414.     limit = ($imported["LimitBreak"] ? item.number_limit : 99)
  415.     rect = item_rect(index)
  416.     self.contents.clear_rect(rect)
  417.     draw_compose_item_name(item, rect.x, rect.y, enable?(item))
  418.     # 費用を描画
  419.     if !KGC::ComposeItem::HIDE_ZERO_COST || item.compose_cost > 0
  420.       rect.width -= 4
  421.       self.contents.draw_text(rect, item.compose_cost, 2)
  422.     end
  423.   end

  424.   if KGC::ComposeItem::HIDE_UNKNOWN_RECIPE_HELP
  425.   #--------------------------------------------------------------------------
  426.   # ● ヘルプテキスト更新
  427.   #--------------------------------------------------------------------------
  428.   def update_help
  429.     item = (index >= 0 ? @data[index] : nil)
  430.     if item == nil || $game_party.item_composed?(item)
  431.       # アイテムが nil か、合成済みなら [Window_ShopBuy] に任せる
  432.       super
  433.     else
  434.       @help_window.set_text(KGC::ComposeItem::UNKNOWN_RECIPE_HELP)
  435.     end
  436.   end
  437.   end
  438. end

  439. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  440. #==============================================================================
  441. # □ Window_ComposeStatus
  442. #------------------------------------------------------------------------------
  443. #  合成画面で、素材の所持数や必要数を表示するウィンドウです。
  444. #==============================================================================

  445. class Window_ComposeStatus < Window_ShopStatus
  446.   #--------------------------------------------------------------------------
  447.   # ○ 表示モード
  448.   #--------------------------------------------------------------------------
  449.   MODE_MATERIAL = 0  # 素材リスト
  450.   MODE_STATUS   = 1  # パーティのステータス
  451.   #--------------------------------------------------------------------------
  452.   # ● オブジェクト初期化
  453.   #     x : ウィンドウの X 座標
  454.   #     y : ウィンドウの Y 座標
  455.   #--------------------------------------------------------------------------
  456.   def initialize(x, y)
  457.     @mode = MODE_MATERIAL
  458.     super(x, y)
  459.   end
  460.   #--------------------------------------------------------------------------
  461.   # ○ モード変更
  462.   #--------------------------------------------------------------------------
  463.   def change_mode
  464.     case @mode
  465.     when MODE_MATERIAL
  466.       @mode = MODE_STATUS
  467.     when MODE_STATUS
  468.       @mode = MODE_MATERIAL
  469.     end
  470.     self.oy = 0
  471.     refresh
  472.   end
  473.   #--------------------------------------------------------------------------
  474.   # ● ウィンドウ内容の作成
  475.   #--------------------------------------------------------------------------
  476.   def create_contents
  477.     if @mode == MODE_STATUS
  478.       super
  479.       return
  480.     end

  481.     self.contents.dispose
  482.     ch = height - 32
  483.     if @item != nil
  484.       mag = (KGC::ComposeItem::COMPACT_MATERIAL_LIST ? 1 : 2)
  485.       ch = [ch, WLH * (mag + @item.compose_materials.size * mag)].max
  486.     end
  487.     self.contents = Bitmap.new(width - 32, ch)
  488.   end
  489.   #--------------------------------------------------------------------------
  490.   # ● リフレッシュ
  491.   #--------------------------------------------------------------------------
  492.   def refresh
  493.     create_contents
  494.     self.contents.font.size = Font.default_size
  495.     case @mode
  496.     when MODE_MATERIAL
  497.       draw_material_list
  498.     when MODE_STATUS
  499.       super
  500.     end
  501.   end
  502.   #--------------------------------------------------------------------------
  503.   # ○ 素材リストを描画
  504.   #--------------------------------------------------------------------------
  505.   def draw_material_list
  506.     return if @item == nil
  507.     number = $game_party.item_number(@item)
  508.     self.contents.font.color = system_color
  509.     self.contents.draw_text(4, 0, 200, WLH, Vocab::Possession)
  510.     self.contents.font.color = normal_color
  511.     self.contents.draw_text(4, 0, 200, WLH, number, 2)
  512.     self.contents.font.size = 16 if KGC::ComposeItem::COMPACT_MATERIAL_LIST
  513.     mag = (KGC::ComposeItem::COMPACT_MATERIAL_LIST ? 1 : 2)
  514.     @item.compose_materials.each_with_index { |material, i|
  515.       y = WLH * (mag + i * mag)
  516.       draw_material_info(0, y, material)
  517.     }
  518.   end
  519.   #--------------------------------------------------------------------------
  520.   # ○ 素材情報を描画
  521.   #--------------------------------------------------------------------------
  522.   def draw_material_info(x, y, material)
  523.     m_item = material.item
  524.     return if m_item == nil
  525.     number = $game_party.item_number(m_item)
  526.     enabled = (number > 0 && number >= material.number)
  527.     draw_item_name(m_item, x, y, enabled)
  528.     if KGC::ComposeItem::COMPACT_MATERIAL_LIST
  529.       m_number = (material.number == 0 ? "-" : sprintf("%d", material.number))
  530.       self.contents.draw_text(x, y, width - 32, WLH,
  531.         sprintf("%s/%d", m_number, number), 2)
  532.     else
  533.       m_number = (material.number == 0 ? "-" : sprintf("%2d", material.number))
  534.       self.contents.draw_text(x, y + WLH, width - 32, WLH,
  535.         sprintf("%2s/%2d", m_number, number), 2)
  536.     end
  537.   end
  538. end

  539. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  540. #==============================================================================
  541. # ■ Scene_Map
  542. #==============================================================================

  543. class Scene_Map < Scene_Base
  544.   #--------------------------------------------------------------------------
  545.   # ● ショップ画面への切り替え
  546.   #--------------------------------------------------------------------------
  547.   alias call_shop_KGC_ComposeItem call_shop
  548.   def call_shop
  549.     # 合成画面を呼び出した場合
  550.     if $game_switches[KGC::ComposeItem::COMPOSE_CALL_SWITCH]
  551.       # 合成画面に移行
  552.       $game_temp.next_scene = nil
  553.       $game_switches[KGC::ComposeItem::COMPOSE_CALL_SWITCH] = false
  554.       $scene = Scene_ComposeItem.new
  555.     else
  556.       call_shop_KGC_ComposeItem
  557.     end
  558.   end
  559. end

  560. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  561. #==============================================================================
  562. # □ Scene_ComposeItem
  563. #------------------------------------------------------------------------------
  564. #  合成画面の処理を行うクラスです。
  565. #==============================================================================

  566. class Scene_ComposeItem < Scene_Shop
  567.   #--------------------------------------------------------------------------
  568.   # ● 開始処理
  569.   #--------------------------------------------------------------------------
  570.   def start
  571.     super
  572.     # コマンドウィンドウ非表示
  573.     if KGC::ComposeItem::HIDE_COMMAND_WINDOW
  574.       @command_window.visible = false
  575.       @gold_window.y = Graphics.height - @gold_window.height
  576.       @gold_window.z = @status_window.z + 100
  577.       @gold_window.visible = !KGC::ComposeItem::HIDE_GOLD_WINDOW

  578.       @dummy_window.y = @command_window.y
  579.       @dummy_window.height += @command_window.height
  580.     end

  581.     # [Scene_Shop] 再利用のため、合成リストに @buy_window を使用
  582.     @buy_window.dispose
  583.     @buy_window = Window_ComposeItem.new(0, @dummy_window.y)
  584.     @buy_window.height = @dummy_window.height
  585.     @buy_window.active = false
  586.     @buy_window.visible = false
  587.     @buy_window.help_window = @help_window

  588.     # その他のウィンドウを再構成
  589.     @number_window.dispose
  590.     @number_window = Window_ComposeNumber.new(0, @buy_window.y)
  591.     @number_window.height = @buy_window.height
  592.     @number_window.create_contents
  593.     @number_window.active = false
  594.     @number_window.visible = false

  595.     @status_window.dispose
  596.     @status_window = Window_ComposeStatus.new(@buy_window.width, @buy_window.y)
  597.     @status_window.height = @buy_window.height
  598.     @status_window.create_contents
  599.     @status_window.visible = false

  600.     # コマンドウィンドウ非表示の場合、合成ウィンドウに切り替え
  601.     if KGC::ComposeItem::HIDE_COMMAND_WINDOW
  602.       @command_window.active = false
  603.       @dummy_window.visible = false
  604.       @buy_window.active = true
  605.       @buy_window.visible = true
  606.       @buy_window.update_help
  607.       @status_window.visible = true
  608.       @status_window.item = @buy_window.item
  609.     end
  610.   end
  611.   #--------------------------------------------------------------------------
  612.   # ● コマンドウィンドウの作成
  613.   #--------------------------------------------------------------------------
  614.   def create_command_window
  615.     s1 = Vocab::ComposeItem
  616.     s2 = Vocab::ShopSell
  617.     s3 = Vocab::ShopCancel
  618.     @command_window = Window_Command.new(384, [s1, s2, s3], 3)
  619.     @command_window.y = 56
  620.     if $game_temp.shop_purchase_only
  621.       @command_window.draw_item(1, false)
  622.     end
  623.   end
  624.   #--------------------------------------------------------------------------
  625.   # ● フレーム更新
  626.   #--------------------------------------------------------------------------
  627.   def update
  628.     super
  629.     if KGC::ComposeItem::SWITCH_INFO_BUTTON != nil &&
  630.         Input.trigger?(KGC::ComposeItem::SWITCH_INFO_BUTTON)
  631.       Sound.play_cursor
  632.       @status_window.change_mode
  633.     end
  634.   end
  635.   #--------------------------------------------------------------------------
  636.   # ● 購入アイテム選択の更新
  637.   #--------------------------------------------------------------------------
  638.   def update_buy_selection
  639.     @number_window.sell_flag = false

  640.     # コマンドウィンドウ非表示で B ボタンが押された場合
  641.     if KGC::ComposeItem::HIDE_COMMAND_WINDOW && Input.trigger?(Input::B)
  642.       Sound.play_cancel
  643.       $scene = Scene_Map.new
  644.       return
  645.     end

  646.     @status_window.item = @buy_window.item
  647.     if Input.trigger?(Input::C)
  648.       @item = @buy_window.item
  649.       # アイテムが無効なら選択不可
  650.       if @item == nil
  651.         Sound.play_buzzer
  652.         return
  653.       end

  654.       # 合成不可能 or 限界数まで所持している場合は選択不可
  655.       number = $game_party.item_number(@item)
  656.       limit = ($imported["LimitBreak"] ? @item.number_limit : 99)
  657.       if !$game_party.item_can_compose?(@item) || number == limit
  658.         Sound.play_buzzer
  659.         return
  660.       end

  661.       # 個数入力に切り替え
  662.       Sound.play_decision
  663.       max = $game_party.number_of_composable(@item)
  664.       max = [max, limit - number].min
  665.       @buy_window.active = false
  666.       @buy_window.visible = false
  667.       @number_window.set(@item, max, @item.compose_cost)
  668.       @number_window.active = true
  669.       @number_window.visible = true
  670.       return
  671.     end

  672.     super
  673.   end
  674.   #--------------------------------------------------------------------------
  675.   # ● 売却アイテム選択の更新
  676.   #--------------------------------------------------------------------------
  677.   def update_sell_selection
  678.     @number_window.sell_flag = true
  679.     super
  680.   end
  681.   #--------------------------------------------------------------------------
  682.   # ● 個数入力の決定
  683.   #--------------------------------------------------------------------------
  684.   def decide_number_input
  685.     if @command_window.index != 0  # 「合成する」以外
  686.       super
  687.       return
  688.     end

  689.     Sound.play_shop
  690.     @number_window.active = false
  691.     @number_window.visible = false
  692.     # 合成処理
  693.     operation_compose
  694.     @gold_window.refresh
  695.     @buy_window.refresh
  696.     @status_window.refresh
  697.     @buy_window.active = true
  698.     @buy_window.visible = true
  699.   end
  700.   #--------------------------------------------------------------------------
  701.   # ○ 合成の処理
  702.   #--------------------------------------------------------------------------
  703.   def operation_compose
  704.     $game_party.lose_gold(@number_window.number * @item.compose_cost)
  705.     $game_party.gain_item(@item, @number_window.number)
  706.     # 素材を減らす
  707.     @item.compose_materials.each { |material|
  708.       $game_party.lose_item(material.item,
  709.         material.number * @number_window.number)
  710.     }
  711.     # 合成済みにする
  712.     $game_party.set_item_composed(@item)
  713.   end
  714. end
复制代码


版务信息:本贴由楼主自主结贴~

Lv1.梦旅人

很傻很天真

梦石
0
星屑
55
在线时间
3 小时
注册时间
2007-3-13
帖子
3667
2
发表于 2008-7-28 20:13:59 | 只看该作者
http://rpgyz.5d6d.com/thread-22-1-1.html
物品合成……八云仓库有汉化的……
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-27 10:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表