Project1

标题: [VA] 图标式描绘多货币 / 价格和敌人掉钱上限突破 [打印本页]

作者: 柍若    时间: 2014-2-8 16:35
标题: [VA] 图标式描绘多货币 / 价格和敌人掉钱上限突破
本帖最后由 柍若 于 2014-2-8 22:30 编辑



因为多货币,所以商店窗口可能位置不够。稍微改了一下,确认键之后选择购买个数的地方会显示物品价格。
同时金钱窗口会宽一些,用系统默认的菜单的话可能被角色窗口覆盖。调整坐标即可。

货币图标、货币数目、货币进制支持自定义。

  1. # ■ 伪·多货币系统Ver 1.0 - By 柍若
  2. #-------------------------------------------------------------
  3. class Window_Base < Window

  4. # 请在此处设置参数
  5.   
  6. UNIT_NUMBER = 3           # 货币数目
  7.   UNIT_RATE = 100           # 单位进制
  8.   UNIT_ICON = [343,347,344] # 货币图标(单位从小到大)
  9.   
  10.   # 要突破物品最大价格,在备注里写"<价格 n>" 不能省去空格
  11.   # 突破敌人最大掉落金钱,在备注里写"<金钱 n>" 不能省去空格
  12.   
  13.   # 事件获取金钱直接用变量就可以了。
  14.   # 好像持有的金钱最大是八位数。

  15.   def draw_currency_value(value, unit = "这个值没什么必要,保留是为了兼容原系统", x, y, width)
  16.     a = unit_conversion(value,UNIT_RATE,UNIT_NUMBER)
  17.     cx = [20,48]
  18.     change_color(normal_color)
  19.     for i in 0..UNIT_NUMBER-1
  20.       k = 24 if i == UNIT_NUMBER-1
  21.       draw_text(x-k.to_i, y+2, width-cx[0]-cx[1]*i+k.to_i, line_height, a[i].to_s, 2)
  22.       draw_icon(UNIT_ICON[i].to_i,x+width-cx[0]-cx[1]*i-2,y)
  23.     end
  24.   end
  25.   def unit_conversion(number, unit, unit_number)
  26.     times = 1
  27.     unit_number -= 1
  28.     b = []
  29.     d = []
  30.     for i in 0..unit_number
  31.       if i != unit_number
  32.         b[i] = number/times % unit
  33.       else
  34.         b[i] = number/times
  35.       end
  36.       times *= unit
  37.     end
  38.     return b
  39.   end
  40. end  
  41. class RPG::BaseItem
  42.   def price
  43.     if @note.split(/<价格 /)[1]
  44.       a = @note.split(/<价格 /)[1]
  45.       a = a.split(/>/)[0]
  46.       return a.to_i
  47.     else
  48.       return @price
  49.     end
  50.   end
  51. end
  52. class RPG::EquipItem < RPG::BaseItem
  53.   def price
  54.     if @note.split(/<价格 /)[1]
  55.       a = @note.split(/<价格 /)[1]
  56.       a = a.split(/>/)[0]
  57.       return a.to_i
  58.     else
  59.       return @price
  60.     end
  61.   end
  62. end
  63. class RPG::Enemy
  64.   def gold
  65.     if @note.split(/<金钱 /)[1]
  66.       a = @note.split(/<金钱 /)[1]
  67.       a = a.split(/>/)[0]
  68.       return a.to_i
  69.     else
  70.       return @gold
  71.     end
  72.   end
  73. end
  74. class Window_ShopBuy < Window_Selectable
  75.   def draw_item(index)
  76.     item = @data[index]
  77.     rect = item_rect(index)
  78.     draw_item_name(item, rect.x, rect.y, enable?(item))
  79.     rect.width -= 4
  80.     change_color(system_color)
  81.     draw_text(rect.x,rect.y,rect.width,rect.height, "#{Vocab::Possession} ",2)
  82.     change_color(normal_color)
  83.     draw_text(rect.x,rect.y,rect.width,rect.height, $game_party.item_number(item).to_s, 2)
  84.   end
  85. end  
  86. class Window_Gold < Window_Base
  87.   def window_width
  88.     return 52+48*UNIT_NUMBER
  89.   end
  90. end
  91. class Window_ShopStatus < Window_Base
  92.   def draw_possession(x, y)
  93.   end
  94. end
复制代码
有BUG请回馈,看到后会及时修改更正。
最后:新人求糖~  
作者: 蓝儿    时间: 2014-2-9 16:41
很棒呢。。没糖了喔……
作者: 柍若    时间: 2014-2-22 10:51
我发什么脚本都没人……
求问改RPG::Enemy和Game_Enemy的def gold到底有啥区别,试了一下貌似是一样的啊…?_(:з」∠)_
作者: ziemo375    时间: 2014-2-28 11:34
谢谢楼主分享.正需要这个呢




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1