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

Project1

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

[已经过期] 物品合成的脚本列表时空白的

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
142 小时
注册时间
2012-3-4
帖子
66
跳转到指定楼层
1
发表于 2012-4-30 15:54:14 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 z1012572747 于 2012-4-30 16:35 编辑
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/ ◆ 物品合成 - KGC_ComposeItem ◆ VX ◆
  3. #_/ ◇ Last update : 2008/01/25 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/ 可制作合成物品。
  6. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  7. #==============================================================================
  8. # ★ 定做項目 - Customize ★
  9. #==============================================================================
  10. module KGC
  11. module ComposeItem
  12. # ◆ 将合成画面调用的开关号码
  13. # 把这个开关设定为 ON 的话,可代替通常的店铺并使用合成功能。
  14. COMPOSE_CALL_SWITCH = 999
  15. # ◆ 合成物素材设定,通常格式:
  16. # ?费用,"物品类型:ID,个数",... ?
  17. # 【 费用 】合成物品所需的费用
  18. # 【 物品种类 】合成素材的种类 (I..物品 W..武器 A..防具)
  19. # 【 ID 】合成素材的ID (↑要与以上相对应)
  20. # 【 个数 】合成物品所需素材的数目
  21. # "物品种类:ID,個数" 。多个的时候也可以这样设定。
  22. # 可省略数目。写成 "物品类型:ID" 。如果没写的话,将用默认设定个数为1。
  23. # 如果把个数设定为0的话,持有1个以上时也可以合成,但是合成成功的话,将
  24. #不会扣除所设定的物品。
  25. # 按一下设定的排列,添加的顺序与物品?武器?防具的ID相对应。
  26. RECIPE_ITEM = [] # 物品

  27. RECIPE_WEAPON = [] # 武器

  28. RECIPE_ARMOR = [] # 防具
  29. # 从这里开始,自定义合成公式(找不到好的词)。
  30. # <例如>
  31. # 物品ID为8的合成公式
  32. # 物品ID 2, 4, 7 各消耗1个,免费合成。
  33. RECIPE_ITEM[10] = [0,"I:11,10"]
  34. # 武器ID:16 的合成公式
  35. # 武器ID:10 消耗1个、物品ID:16 消耗 2 个,合成费用800 G。

  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 = true
  50. # ◆ 不显示所持金钱数
  51. HIDE_GOLD_WINDOW = false
  52. # ◆ 当合成费用是0时, 不显示费用。
  53. HIDE_ZERO_COST = true
  54. # ◆ 不表示费用与素材不足的合成列表。
  55. # 之前合成过的物品的显名表示。
  56. HIDE_SHORTAGE_RECIPE = true
  57. # ◆ 没有合成的物品隐藏物品名字, true为隐藏。
  58. MASK_UNKNOWN_RECIPE_NAME = false
  59. # ◆ 没有合成过的物品在列表上的表示方法
  60. # 以下设定隐藏名,当物品名字为多个时,按以下设定扩展名字。
  61. UNKNOWN_NAME_MASK = "?"
  62. # ◆ 没有合成过的物品,隐藏帮助信息。
  63. HIDE_UNKNOWN_RECIPE_HELP = true
  64. # ◆ 没有合成过在物品在列表上的帮助 信息。
  65. UNKNOWN_RECIPE_HELP = "合成列表"
  66. end
  67. end
  68. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  69. $imported = {} if $imported == nil
  70. $imported["ComposeItem"] = true
  71. module KGC::ComposeItem
  72. # 定义正则表达式
  73. module Regexp
  74. # 合成列表
  75. RECIPE = /([IWA])[ ]*:[ ]*(\d+)([ ]*,[ ]*\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. # □ Window_ComposeNumber
  317. #------------------------------------------------------------------------------
  318. # 合成画面で、合成するアイテムの個数を入力するウィンドウです。
  319. #==============================================================================
  320. class Window_ComposeNumber < Window_ShopNumber
  321. #--------------------------------------------------------------------------
  322. # ● リフレッシュ
  323. #--------------------------------------------------------------------------
  324. def refresh
  325. y = 96
  326. self.contents.clear
  327. draw_compose_item_name(@item, 0, y)
  328. self.contents.font.color = normal_color
  329. self.contents.draw_text(212, y, 20, WLH, "×")
  330. self.contents.draw_text(248, y, 20, WLH, @number, 2)
  331. self.cursor_rect.set(244, y, 28, WLH)
  332. if !KGC::ComposeItem::HIDE_ZERO_COST || @price > 0
  333. draw_currency_value(@price * @number, 4, y + WLH * 2, 264)
  334. end
  335. end
  336. end
  337. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  338. #==============================================================================
  339. # □ Window_ComposeItem
  340. #------------------------------------------------------------------------------
  341. # 合成画面で、合成できる商品の一覧を表示するウィンドウです。
  342. #==============================================================================
  343. class Window_ComposeItem < Window_ShopBuy
  344. #--------------------------------------------------------------------------
  345. # ● リフレッシュ
  346. #--------------------------------------------------------------------------
  347. def refresh
  348. @data = []
  349. for goods_item in @shop_goods
  350. case goods_item[0]
  351. when 0
  352. item = $data_items[goods_item[1]]
  353. when 1
  354. item = $data_weapons[goods_item[1]]
  355. when 2
  356. item = $data_armors[goods_item[1]]
  357. end
  358. # 合成アイテムのみ追加
  359. @data.push(item) if include?(item)
  360. end
  361. @item_max = @data.size
  362. create_contents
  363. for i in 0...@item_max
  364. draw_item(i)
  365. end
  366. end
  367. #--------------------------------------------------------------------------
  368. # ○ アイテムをリストに含めるかどうか
  369. # item : アイテム
  370. #--------------------------------------------------------------------------
  371. def include?(item)
  372. return false if item == nil # アイテムが nil なら含めない
  373. return false unless item.is_compose? # 合成アイテムでなければ含めない
  374. if KGC::ComposeItem::HIDE_SHORTAGE_RECIPE # 費用?素材不足を隠す場合
  375. if !$game_party.item_composed?(item) && !enable?(item)
  376. return false # 未合成かつ合成不可なら含めない
  377. end
  378. end
  379. return true
  380. end
  381. #--------------------------------------------------------------------------
  382. # ○ アイテムを許可状態で表示するかどうか
  383. # item : アイテム
  384. #--------------------------------------------------------------------------
  385. def enable?(item)
  386. return $game_party.item_can_compose?(item)
  387. end
  388. #--------------------------------------------------------------------------
  389. # ● 項目の描画
  390. # index : 項目番号
  391. #--------------------------------------------------------------------------
  392. def draw_item(index)
  393. item = @data[index]
  394. number = $game_party.item_number(item)
  395. limit = ($imported["LimitBreak"] ? item.number_limit : 99)
  396. rect = item_rect(index)
  397. self.contents.clear_rect(rect)
  398. draw_compose_item_name(item, rect.x, rect.y, enable?(item))
  399. # 費用を描画
  400. if !KGC::ComposeItem::HIDE_ZERO_COST || item.compose_cost > 0
  401. rect.width -= 4
  402. self.contents.draw_text(rect, item.compose_cost, 2)
  403. end
  404. end
  405. if KGC::ComposeItem::HIDE_UNKNOWN_RECIPE_HELP
  406. #--------------------------------------------------------------------------
  407. # ● ヘルプテキスト更新
  408. #--------------------------------------------------------------------------
  409. def update_help
  410. item = (index >= 0 ? @data[index] : nil)
  411. if item == nil || $game_party.item_composed?(item)
  412. # アイテムが nil か、合成済みなら [Window_ShopBuy] に任せる
  413. super
  414. else
  415. @help_window.set_text(KGC::ComposeItem::UNKNOWN_RECIPE_HELP)
  416. end
  417. end
  418. end
  419. end
  420. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  421. #==============================================================================
  422. # □ Window_ComposeStatus
  423. #------------------------------------------------------------------------------
  424. #  合成画面で、素材の所持数や必要数を表示するウィンドウです。
  425. #==============================================================================
  426. class Window_ComposeStatus < Window_ShopStatus
  427. #--------------------------------------------------------------------------
  428. # ○ 表示モード
  429. #--------------------------------------------------------------------------
  430. MODE_MATERIAL = 0 # 素材リスト
  431. MODE_STATUS = 1 # パーティのステータス
  432. #--------------------------------------------------------------------------
  433. # ● オブジェクト初期化
  434. # x : ウィンドウの X 座標
  435. # y : ウィンドウの Y 座標
  436. #--------------------------------------------------------------------------
  437. def initialize(x, y)
  438. @mode = MODE_MATERIAL
  439. super(x, y)
  440. end
  441. #--------------------------------------------------------------------------
  442. # ○ モード変更
  443. #--------------------------------------------------------------------------
  444. def change_mode
  445. case @mode
  446. when MODE_MATERIAL
  447. @mode = MODE_STATUS
  448. when MODE_STATUS
  449. @mode = MODE_MATERIAL
  450. end
  451. self.oy = 0
  452. refresh
  453. end
  454. #--------------------------------------------------------------------------
  455. # ● ウィンドウ内容の作成
  456. #--------------------------------------------------------------------------
  457. def create_contents
  458. if @mode == MODE_STATUS
  459. super
  460. return
  461. end
  462. self.contents.dispose
  463. ch = height - 32
  464. if @item != nil
  465. mag = (KGC::ComposeItem::COMPACT_MATERIAL_LIST ? 1 : 2)
  466. ch = [ch, WLH * (mag + @item.compose_materials.size * mag)].max
  467. end
  468. self.contents = Bitmap.new(width - 32, ch)
  469. end
  470. #--------------------------------------------------------------------------
  471. # ● リフレッシュ
  472. #--------------------------------------------------------------------------
  473. def refresh
  474. create_contents
  475. self.contents.font.size = Font.default_size
  476. case @mode
  477. when MODE_MATERIAL
  478. draw_material_list
  479. when MODE_STATUS
  480. super
  481. end
  482. end
  483. #--------------------------------------------------------------------------
  484. # ○ 素材リストを描画
  485. #--------------------------------------------------------------------------
  486. def draw_material_list
  487. return if @item == nil
  488. number = $game_party.item_number(@item)
  489. self.contents.font.color = system_color
  490. self.contents.draw_text(4, 0, 200, WLH, Vocab::Possession)
  491. self.contents.font.color = normal_color
  492. self.contents.draw_text(4, 0, 200, WLH, number, 2)
  493. self.contents.font.size = 16 if KGC::ComposeItem::COMPACT_MATERIAL_LIST
  494. mag = (KGC::ComposeItem::COMPACT_MATERIAL_LIST ? 1 : 2)
  495. @item.compose_materials.each_with_index { |material, i|
  496. y = WLH * (mag + i * mag)
  497. draw_material_info(0, y, material)
  498. }
  499. end
  500. #--------------------------------------------------------------------------
  501. # ○ 素材情報を描画
  502. #--------------------------------------------------------------------------
  503. def draw_material_info(x, y, material)
  504. m_item = material.item
  505. return if m_item == nil
  506. number = $game_party.item_number(m_item)
  507. enabled = (number > 0 && number >= material.number)
  508. draw_item_name(m_item, x, y, enabled)
  509. if KGC::ComposeItem::COMPACT_MATERIAL_LIST
  510. m_number = (material.number == 0 ? "-" : sprintf("%d", material.number))
  511. self.contents.draw_text(x, y, width - 32, WLH,
  512. sprintf("%s/%d", m_number, number), 2)
  513. else
  514. m_number = (material.number == 0 ? "-" : sprintf("%2d", material.number))
  515. self.contents.draw_text(x, y + WLH, width - 32, WLH,
  516. sprintf("%2s/%2d", m_number, number), 2)
  517. end
  518. end
  519. end
  520. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  521. #==============================================================================
  522. # ■ Scene_Map
  523. #==============================================================================
  524. class Scene_Map < Scene_Base
  525. #--------------------------------------------------------------------------
  526. # ● ショップ画面への切り替え
  527. #--------------------------------------------------------------------------
  528. alias call_shop_KGC_ComposeItem call_shop
  529. def call_shop
  530. # 合成画面を呼び出した場合
  531. if $game_switches[KGC::ComposeItem::COMPOSE_CALL_SWITCH]
  532. # 合成画面に移行
  533. $game_temp.next_scene = nil
  534. $game_switches[KGC::ComposeItem::COMPOSE_CALL_SWITCH] = false
  535. $scene = Scene_ComposeItem.new
  536. else
  537. call_shop_KGC_ComposeItem
  538. end
  539. end
  540. end
  541. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  542. #==============================================================================
  543. # □ Scene_ComposeItem
  544. #------------------------------------------------------------------------------
  545. #  合成画面の処理を行うクラスです。
  546. #==============================================================================
  547. class Scene_ComposeItem < Scene_Shop
  548. #--------------------------------------------------------------------------
  549. # ● 開始処理
  550. #--------------------------------------------------------------------------
  551. def start
  552. super
  553. # コマンドウィンドウ非表示
  554. if KGC::ComposeItem::HIDE_COMMAND_WINDOW
  555. @command_window.visible = false
  556. @gold_window.y = Graphics.height - @gold_window.height
  557. @gold_window.z = @status_window.z + 100
  558. @gold_window.visible = !KGC::ComposeItem::HIDE_GOLD_WINDOW
  559. @dummy_window.y = @command_window.y
  560. @dummy_window.height += @command_window.height
  561. end
  562. # [Scene_Shop] 再利用のため、合成リストに @buy_window を使用
  563. @buy_window.dispose
  564. @buy_window = Window_ComposeItem.new(0, @dummy_window.y)
  565. @buy_window.height = @dummy_window.height
  566. @buy_window.active = false
  567. @buy_window.visible = false
  568. @buy_window.help_window = @help_window
  569. # その他のウィンドウを再構成
  570. @number_window.dispose
  571. @number_window = Window_ComposeNumber.new(0, @buy_window.y)
  572. @number_window.height = @buy_window.height
  573. @number_window.create_contents
  574. @number_window.active = false
  575. @number_window.visible = false
  576. @status_window.dispose
  577. @status_window = Window_ComposeStatus.new(@buy_window.width, @buy_window.y)
  578. @status_window.height = @buy_window.height
  579. @status_window.create_contents
  580. @status_window.visible = false
  581. # コマンドウィンドウ非表示の場合、合成ウィンドウに切り替え
  582. if KGC::ComposeItem::HIDE_COMMAND_WINDOW
  583. @command_window.active = false
  584. @dummy_window.visible = false
  585. @buy_window.active = true
  586. @buy_window.visible = true
  587. @buy_window.update_help
  588. @status_window.visible = true
  589. @status_window.item = @buy_window.item
  590. end
  591. end
  592. #--------------------------------------------------------------------------
  593. # ● コマンドウィンドウの作成
  594. #--------------------------------------------------------------------------
  595. def create_command_window
  596. s1 = Vocab::ComposeItem
  597. s2 = Vocab::ShopSell
  598. s3 = Vocab::ShopCancel
  599. @command_window = Window_Command.new(384, [s1, s2, s3], 3)
  600. @command_window.y = 56
  601. if $game_temp.shop_purchase_only
  602. @command_window.draw_item(1, false)
  603. end
  604. end
  605. #--------------------------------------------------------------------------
  606. # ● フレーム更新
  607. #--------------------------------------------------------------------------
  608. def update
  609. super
  610. if KGC::ComposeItem::SWITCH_INFO_BUTTON != nil &&
  611. Input.trigger?(KGC::ComposeItem::SWITCH_INFO_BUTTON)
  612. Sound.play_cursor
  613. @status_window.change_mode
  614. end
  615. end
  616. #--------------------------------------------------------------------------
  617. # ● 購入アイテム選択の更新
  618. #--------------------------------------------------------------------------
  619. def update_buy_selection
  620. # コマンドウィンドウ非表示で B ボタンが押された場合
  621. if KGC::ComposeItem::HIDE_COMMAND_WINDOW && Input.trigger?(Input::B)
  622. Sound.play_cancel
  623. $scene = Scene_Map.new
  624. return
  625. end
  626. @status_window.item = @buy_window.item
  627. if Input.trigger?(Input::C)
  628. @item = @buy_window.item
  629. # アイテムが無効なら選択不可
  630. if @item == nil
  631. Sound.play_buzzer
  632. return
  633. end
  634. # 合成不可能 or 限界数まで所持している場合は選択不可
  635. number = $game_party.item_number(@item)
  636. limit = ($imported["LimitBreak"] ? @item.number_limit : 99)
  637. if !$game_party.item_can_compose?(@item) || number == limit
  638. Sound.play_buzzer
  639. return
  640. end
  641. # 個数入力に切り替え
  642. Sound.play_decision
  643. max = $game_party.number_of_composable(@item)
  644. max = [max, limit - number].min
  645. @buy_window.active = false
  646. @buy_window.visible = false
  647. @number_window.set(@item, max, @item.compose_cost)
  648. @number_window.active = true
  649. @number_window.visible = true
  650. return
  651. end
  652. super
  653. end
  654. #--------------------------------------------------------------------------
  655. # ● 個数入力の決定
  656. #--------------------------------------------------------------------------
  657. def decide_number_input
  658. if @command_window.index != 0 # 「合成する」以外
  659. super
  660. return
  661. end
  662. Sound.play_shop
  663. @number_window.active = false
  664. @number_window.visible = false
  665. # 合成処理
  666. operation_compose
  667. @gold_window.refresh
  668. @buy_window.refresh
  669. @status_window.refresh
  670. @buy_window.active = true
  671. @buy_window.visible = true
  672. end
  673. #--------------------------------------------------------------------------
  674. # ○ 合成の処理
  675. #--------------------------------------------------------------------------
  676. def operation_compose
  677. $game_party.lose_gold(@number_window.number * @item.compose_cost)
  678. $game_party.gain_item(@item, @number_window.number)
  679. # 素材を減らす
  680. @item.compose_materials.each { |material|
  681. $game_party.lose_item(material.item,
  682. material.number * @number_window.number)
  683. }
  684. # 合成済みにする
  685. $game_party.set_item_composed(@item)
  686. end
  687. end
复制代码
就是这个   我公式放得位置对么,现在合成的内个列表是空的,我背包里放了需要的材料也是空的
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-12-26 12:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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