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

Project1

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

[已经解决] 根据装备总数让商店购买窗口装备字体变灰

[复制链接]

Lv1.梦旅人

梦石
0
星屑
57
在线时间
131 小时
注册时间
2008-8-12
帖子
184
跳转到指定楼层
1
发表于 2015-9-19 12:59:01 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 兔毛鹿 于 2015-9-19 13:05 编辑

在Window_ShopBuy修改了脚本,我希望:当前携带的武器和防具总数相加如果超过60件,购买窗口所有装备字体的颜色就显示为灰色,我测试买了60个铜铳,结果只有铜铳和防具的字体颜色变灰了,而其它武器的名字没有变灰,应该怎么改才能让所有的装备都变灰??



在Window_ShopBuy 的● 描绘项目 部分修改的脚本
  1.   def draw_item(index)
  2.     item = @data[index]
  3.     # 获取物品所持数
  4.     case item
  5.     when RPG::Item
  6.       number = $game_party.item_number(item.id)
  7.     # 价格在所持金以下、并且所持数不是 99 的情况下为普通颜色
  8.     # 除此之外的情况设置为无效文字色
  9.       if item.price <= $game_party.gold and number < 99
  10.         self.contents.font.color = normal_color
  11.       else
  12.         self.contents.font.color = disabled_color
  13.       end
  14.     when RPG::Weapon
  15.       number = $game_party.weapon_number(item.id)

  16. b = 0
  17. for j in 1..$data_armors.size
  18.   b += $game_party.armor_number(j)
  19. end
  20.       if item.price <= $game_party.gold and number < 60 - b
  21.         self.contents.font.color = normal_color
  22.       else
  23.         self.contents.font.color = disabled_color
  24.       end
  25.     when RPG::Armor
  26.       number = $game_party.armor_number(item.id)

  27. a = 0
  28. for j in 1..$data_weapons.size
  29.   a += $game_party.weapon_number(j)
  30. end
  31.       if item.price <= $game_party.gold and number < 60 - a
  32.         self.contents.font.color = normal_color
  33.       else
  34.         self.contents.font.color = disabled_color
  35.       end
  36.     end

  37.     x = 4
  38.     y = index * 32
  39.     rect = Rect.new(x, y, self.width - 32, 32)
  40.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  41.     bitmap = RPG::Cache.icon(item.icon_name)
  42.     opacity = self.contents.font.color == disabled_color ? 128 : 255
  43.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  44.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  45.     self.contents.draw_text(x + 240, y, 88, 32, item.price.to_s, 2)
  46.   end
复制代码

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

Tomorrow

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

2
发表于 2015-9-19 13:44:52 | 只看该作者
本帖最后由 cinderelmini 于 2015-9-19 14:35 编辑

【Window_ShopBuy】改成这样(添加的东西放到了顶格,然后draw_item方法改了):
  1. #==============================================================================
  2. # ■ Window_ShopBuy
  3. #------------------------------------------------------------------------------
  4. #  商店画面、浏览显示可以购买的商品的窗口。
  5. #==============================================================================
  6. # 公开背包武器防具
  7. class Game_Party
  8. attr_accessor  :weapons
  9. attr_accessor  :armors
  10. end

  11. class Window_ShopBuy < Window_Selectable
  12.   #--------------------------------------------------------------------------
  13.   # ● 初始化对像
  14.   #     shop_goods : 商品
  15.   #--------------------------------------------------------------------------
  16.   def initialize(shop_goods)
  17.     super(0, 128, 368, 352)
  18.     @shop_goods = shop_goods
  19.     refresh
  20.     self.index = 0
  21.   end
  22.   
  23. # 刷新背包持有数
  24. def reset_wea_arm_number
  25. @wea_arm_number = 0
  26. $game_party.weapons.each_value{|value| @wea_arm_number += value}
  27. $game_party.armors.each_value{|value| @wea_arm_number += value}
  28. end

  29. # 不可购买的场合
  30. def cant_buy(item)
  31. return (item == nil || item.price > $game_party.gold) if item.is_a?(RPG::Item)
  32. return (item == nil || item.price > $game_party.gold || @wea_arm_number >= 60) if (item.is_a?(RPG::Weapon) || item.is_a?(RPG::Armor))
  33. end

  34.   #--------------------------------------------------------------------------
  35.   # ● 获取物品
  36.   #--------------------------------------------------------------------------
  37.   def item
  38.     return @data[self.index]
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 刷新
  42.   #--------------------------------------------------------------------------
  43.   def refresh
  44.     if self.contents != nil
  45.       self.contents.dispose
  46.       self.contents = nil
  47.     end
  48. reset_wea_arm_number
  49.     @data = []
  50.     for goods_item in @shop_goods
  51.       case goods_item[0]
  52.       when 0
  53.         item = $data_items[goods_item[1]]
  54.       when 1
  55.         item = $data_weapons[goods_item[1]]
  56.       when 2
  57.         item = $data_armors[goods_item[1]]
  58.       end
  59.       if item != nil
  60.         @data.push(item)
  61.       end
  62.     end
  63.     # 如果项目数不是 0 就生成位图、描绘全部项目
  64.     @item_max = @data.size
  65.     if @item_max > 0
  66.       self.contents = Bitmap.new(width - 32, row_max * 32)
  67.       for i in 0...@item_max
  68.         draw_item(i)
  69.       end
  70.     end
  71.   end

  72.   #--------------------------------------------------------------------------
  73.   # ● 描绘项目
  74.   #     index : 项目编号
  75.   #--------------------------------------------------------------------------
  76.   def draw_item(index)
  77.     item = @data[index]
  78.     # 获取物品所持数
  79.     case item
  80.     when RPG::Item
  81.       number = $game_party.item_number(item.id)
  82.     # 价格在所持金以下、并且所持数不是 99 的情况下为普通颜色
  83.     # 除此之外的情况设置为无效文字色
  84.       if item.price <= $game_party.gold and number < 99
  85.         self.contents.font.color = normal_color
  86.       else
  87.         self.contents.font.color = disabled_color
  88.       end
  89.     when RPG::Weapon
  90.       number = $game_party.weapon_number(item.id)
  91.       
  92.       if item.price <= $game_party.gold && @wea_arm_number < 60
  93.         self.contents.font.color = normal_color
  94.       else
  95.         self.contents.font.color = disabled_color
  96.       end
  97.       
  98.     when RPG::Armor
  99.       number = $game_party.armor_number(item.id)
  100.       
  101.       if item.price <= $game_party.gold && @wea_arm_number < 60
  102.         self.contents.font.color = normal_color
  103.       else
  104.         self.contents.font.color = disabled_color
  105.       end
  106.     end

  107.     x = 4
  108.     y = index * 32
  109.     rect = Rect.new(x, y, self.width - 32, 32)
  110.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  111.     bitmap = RPG::Cache.icon(item.icon_name)
  112.     opacity = self.contents.font.color == disabled_color ? 128 : 255
  113.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  114.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  115.     self.contents.draw_text(x + 240, y, 88, 32, item.price.to_s, 2)
  116.   end
  117.   
  118.   #--------------------------------------------------------------------------
  119.   # ● 刷新帮助文本
  120.   #--------------------------------------------------------------------------
  121.   def update_help
  122.     @help_window.set_text(self.item == nil ? "" : self.item.description)
  123.   end
  124. end
复制代码
然后到【Scene_Shop】里面的【update_buy】方法里面,
把按下C键的场合的第一个不能购买的分歧条件改成:
  1. if @buy_window.cant_buy(@item)
复制代码
大概就可以了。

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-29 00:11

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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