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

Project1

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

[RMVA发布] 货币的金银铜化

[复制链接]

Lv2.观梦者

梦石
0
星屑
642
在线时间
165 小时
注册时间
2012-4-18
帖子
264
跳转到指定楼层
1
发表于 2013-10-26 18:26:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 salvareless 于 2013-10-29 18:39 编辑

本脚本已经将菜单窗口商店窗口的货币金银铜化(图标化),以及获得物品无视窗口的金银铜化(文字化)。有序很多年没碰过编程了,代码有些冗余,资深脚本大神和程序员请见谅,如能出手优化,感激不尽。

使用本脚本请务必认真阅读脚本头部说明。

另外,由于各人需要,本脚本还包括两种特殊货币的显示。这两种货币是背包中的物品,(这个脚本中有说明)如果不希望特殊货币在背包中显示需要另行使用武平种类扩展脚本,将特殊货币对应的物品设为一类扩展的物品,并修该脚本,让其在背包窗口中不显示那种扩展物品。举个例子:我用物品种类扩展脚本来设置两种扩展的物品:任务品和货币。但是我修改脚本的绘制指令部分,让其只在背包窗口中显示任务品这个指令而不显示货币指令,则对应的货币类型的物品也就不会在包包中显示,但是你的包包中确实有这个东西。

一下附上脚本:

RUBY 代码复制下载
  1. #encoding:utf-8
  2. #==============================================================================
  3. #                            货币金银铜模式
  4.  
  5. #本脚本有永月极圣(Salvareless)编写,转载使用请保留
  6. #本脚本包含游戏内置游戏币的金银铜化,以及两种自定义特殊货币的显示
  7. #本脚本包含商店界面的货币金银铜化。
  8.  
  9.  
  10.                               #!!!!!!!!!!
  11. #请务必认真阅读脚本下方的脚本说明,根据自己需要选择脚本功能,谢谢。
  12.                               #!!!!!!!!!!
  13.  
  14.  
  15. #==============================================================================
  16. =begin
  17. 注意事项:
  18. 1·本脚本仅适用于横向指令菜单,若非横向菜单,请解除“定义状态窗口高度”部分的屏蔽。
  19. 2·凡是只用过数据库破限脚本需要将破限脚本第631行,即:
  20.   #--------------------------------------------------------------------------
  21.   # draw_currency_value
  22.   #--------------------------------------------------------------------------
  23.   部分中的text = value.group替换为:text = value
  24.   PS.此条只是用于下一条的使用者。
  25. 3·凡是使用了“Yanfly Engine Ace - Event Window v1.01”的物品得失提示脚本
  26. 请用脚本尾部屏蔽区内容替换其脚本的“  def event_window_make_gold_text(value)”部分
  27. 4·如果不需要扩充特殊货币可以屏蔽特殊货币区段。
  28. 5·如果使用特殊货币区段,为求完美效果,还需要物品分类脚本。添加“货币”物品分类,
  29. 并将其设置为不显示的分类,另外再将用作货币的物品设置为“货币”分类。即达到完美效果。
  30. 6·虽然对不起大学编程老师,但是真的很久没碰编程了,技术有限,
  31. 如果你是程序员,请顺手帮忙优化冗余部分。
  32. 7·由于上一条所说的,使用脚本时,需自行替换每一处“draw_icon(142, ××, ××,)”
  33. 图标绘制语句中的第一个数值,即图标ID。
  34. 8·如果只需要商店货物价格金银铜化,请屏蔽或删除商店部分以外的区域。
  35. =end
  36.  
  37. =begin
  38. #--------------------------------------------------------------------------
  39. # ● 菜单界面定义状态窗口高度
  40. #--------------------------------------------------------------------------
  41. class Window_MenuStatus < Window_Selectable
  42.   #--------------------------------------------------------------------------
  43.   # ● 获取窗口的高度
  44.   #--------------------------------------------------------------------------
  45.   def window_height
  46.     Graphics.height - line_height * 2
  47.   end
  48. end
  49. =end
  50.  
  51. #--------------------------------------------------------------------------
  52. # ● 菜单界面定义金币显示窗口
  53. #--------------------------------------------------------------------------
  54. class Window_Gold < Window_Base
  55.  
  56.   #--------------------------------------------------------------------------
  57.   # ● 重新定义金币窗口的宽度
  58.   #--------------------------------------------------------------------------
  59.   def window_width
  60.     return Graphics.width
  61.   end
  62.  
  63.   #--------------------------------------------------------------------------
  64.   # ● 刷新,菜单界面金银铜模式主体
  65.   #--------------------------------------------------------------------------
  66.   def refresh
  67.     contents.clear
  68.     #开始金银铜模式
  69.     if value > 9999     #持有钱币是否达到金币级
  70.       values = value/100    #计算中间变量
  71.       draw_currency_value(value % 100, "" , 4, 0, contents.width - 18)    #绘制铜币数量
  72.       draw_currency_value(values % 100, "" , 4, 0, contents.width - 58)   #绘制银币数量
  73.       draw_currency_value(values/100, "" , 4, 0, contents.width - 98)     #绘制金币数量
  74.       draw_icon(142, contents.width - 20, 0,)   #绘制铜币图标(142为铜币图标ID)
  75.       draw_icon(141, contents.width - 60, 0,)   #绘制银币图标(141为银币图标ID)
  76.       draw_icon(140, contents.width - 100, 0,)  #绘制金币图标(140为金币图标ID)
  77.     elsif value > 99    #持有钱币是否达到银币级
  78.       draw_currency_value(value % 100, "", 4, 0, contents.width - 18)   #绘制铜币数量
  79.       draw_currency_value(value/100, "", 4, 0, contents.width - 58)     #绘制银币数量
  80.       draw_icon(142, contents.width - 20, 0,)   #绘制铜币图标
  81.       draw_icon(141, contents.width - 60, 0,)   #绘制银币图标
  82.     else
  83.       draw_currency_value(value, "", 4, 0, contents.width - 18)   #绘制铜币数量
  84.       draw_icon(142, contents.width - 20, 0,)   #绘制铜币图标
  85.     end
  86.     #结束金银铜模式
  87.  
  88.     #开始物品货币区
  89.     #格式如下
  90.     #draw_currency_value(自定义变量名, "" , 4, 0, contents.width - 423)
  91.     #draw_icon(图标ID, contents.width - 425, 0,)
  92.     #第一种
  93.       draw_currency_value(value1, "" , 4, 0, contents.width - 423)  #绘制特殊货币一的数量
  94.       draw_icon(138, contents.width - 425, 0,)  #绘制特殊货币一的图标
  95.     #第二种
  96.       draw_currency_value(value2, "" , 4, 0, contents.width - 323)  #绘制特殊货币二的数量
  97.       draw_icon(139, contents.width - 325, 0,)  #绘制特殊货币二的图标
  98.     #结束物品货币区
  99.  
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   # ● 定义特殊货币(物品货币)
  103.   # 格式如下
  104.   # def 自定义变量名   
  105.   #   $game_party.item_number($data_items[物品ID])  
  106.   # end
  107.   #--------------------------------------------------------------------------
  108.   #第一种
  109.   def value1   
  110.     $game_party.item_number($data_items[83])  
  111.   end
  112.   #第二种
  113.   def value2   
  114.     $game_party.item_number($data_items[84])  
  115.   end
  116. end
  117.  
  118.  
  119. #--------------------------------------------------------------------------
  120. # ● 商店窗口部分开始
  121. #--------------------------------------------------------------------------
  122. class Window_ShopCommand < Window_HorzCommand
  123.   #--------------------------------------------------------------------------
  124.   # ● 获取窗口的宽度
  125.   #--------------------------------------------------------------------------
  126.   def window_width
  127.     return Graphics.width
  128.   end
  129. end
  130.  
  131. # ● 持有数窗口调整
  132. class Window_ShopStatus < Window_Base
  133.   def draw_possession(x, y)
  134.     rect = Rect.new(x, y, contents.width - 4 - x, line_height)
  135.     change_color(system_color)
  136.     draw_text(rect, Vocab::Possession)
  137.     rect = Rect.new(x + 10, y + line_height, contents.width - 4 - x, line_height)
  138.     change_color(normal_color)
  139.     draw_text(rect, $game_party.item_number(@item))
  140.   end
  141. end
  142.  
  143. #--------------------------------------------------------------------------
  144. # ● 商店金银铜化
  145. #--------------------------------------------------------------------------
  146.  
  147.   #----出售列表部分----
  148. class Window_ShopBuy < Window_Selectable
  149.   #--------------------------------------------------------------------------
  150.   # ● 获取窗口的宽度
  151.   #--------------------------------------------------------------------------
  152.   def window_width
  153.     return 430
  154.   end
  155.   #--------------------------------------------------------------------------
  156.   # ● 绘制项目
  157.   #--------------------------------------------------------------------------
  158.   def draw_item(index)
  159.     item = @data[index]
  160.     rect = item_rect(index)
  161.     draw_item_name(item, rect.x, rect.y, enable?(item))
  162.     rect.width -= 4
  163.     #开始金银铜模式
  164.     value = price(item)
  165.       if value > 9999
  166.         valuex = value / 100    #金币级运算中间变量
  167.         valueg = valuex / 100   #金币数量
  168.         values = valuex % 100   #银币数量
  169.         valuec = value % 100    #铜币数量
  170.         draw_currency_value(valuec, "" , 4, rect.y, contents.width - 18)  #绘制铜币数量
  171.         draw_currency_value(values, "" , 4, rect.y, contents.width - 58)  #绘制银币数量
  172.         draw_currency_value(valueg, "" , 4, rect.y, contents.width - 98)  #绘制金币数量   
  173.         draw_icon(142, contents.width - 20, rect.y,)    #绘制铜币图标
  174.         draw_icon(141, contents.width - 60, rect.y,)    #绘制银币图标
  175.         draw_icon(140, contents.width - 100, rect.y,)   #绘制金币图标
  176.       elsif value > 99
  177.         values = value / 100   #银币数量
  178.         valuec = value % 100   #铜币数量
  179.         draw_currency_value(values, "" , 4, rect.y, contents.width - 58)  #绘制铜币数量
  180.         draw_currency_value(valuec, "" , 4, rect.y, contents.width - 18)  #绘制银币数量   
  181.         draw_icon(142, contents.width - 20, rect.y,)    #绘制铜币图标
  182.         draw_icon(141, contents.width - 60, rect.y,)    #绘制银币图标
  183.       else
  184.         draw_currency_value(value, "" , 4, rect.y, contents.width - 18)   #绘制铜币数量   
  185.         draw_icon(142, contents.width - 20, rect.y,)    #绘制铜币图标
  186.       end
  187.     #结束金银铜模式
  188.   end
  189. end
  190.  
  191.   #----显示总价部分----
  192. class Window_ShopNumber < Window_Selectable
  193.   #--------------------------------------------------------------------------
  194.   # ● 获取窗口的宽度
  195.   #--------------------------------------------------------------------------
  196.   def window_width
  197.     return 430
  198.   end
  199.   #--------------------------------------------------------------------------
  200.   # ● 绘制总价
  201.   #--------------------------------------------------------------------------
  202.   def draw_total_price
  203.     width = contents_width
  204.     value = @price * @number
  205.     if value > 9999
  206.       valuex = value / 100    #金币级运算中间变量
  207.       valueg = valuex / 100   #金币数量
  208.       values = valuex % 100   #银币数量
  209.       valuec = value % 100    #铜币数量
  210.       draw_currency_value(valueg, "", 4, price_y, width - 98)   #绘制金币数量
  211.       draw_currency_value(values, "", 4, price_y, width - 58)   #绘制银币数量
  212.       draw_currency_value(valuec, "", 4, price_y, width - 18)   #绘制铜币数量
  213.       draw_icon(142, contents.width - 20, price_y,)   #绘制铜币图标
  214.       draw_icon(141, contents.width - 60, price_y,)   #绘制银币图标
  215.       draw_icon(140, contents.width - 100, price_y,)  #绘制金币图标
  216.     elsif value > 99
  217.       values = value / 100   #银币数量
  218.       valuec = value % 100   #铜币数量
  219.       draw_currency_value(values, "", 4, price_y, width - 58)   #绘制银币数量
  220.       draw_currency_value(valuec, "", 4, price_y, width - 18)   #绘制铜币数量
  221.       draw_icon(142, contents.width - 20, price_y,)   #绘制铜币图标
  222.       draw_icon(141, contents.width - 60, price_y,)   #绘制银币图标
  223.     else
  224.       draw_currency_value(value, "", 4, price_y, width - 18)    #绘制铜币数量
  225.       draw_icon(142, contents.width - 20, price_y,)   #绘制铜币图标
  226.     end
  227.   end
  228. end
  229. #--------------------------------------------------------------------------
  230. #商店部分结束
  231. #--------------------------------------------------------------------------
  232.  
  233. #--------------------------------------------------------------------------
  234. # ● 金币窗口修正
  235. #--------------------------------------------------------------------------
  236. class Scene_Shop < Scene_MenuBase
  237.   #--------------------------------------------------------------------------
  238.   # ● 生成金钱窗口
  239.   #--------------------------------------------------------------------------
  240.   def create_gold_window
  241.     @gold_window = Window_Gold.new
  242.     @gold_window.viewport = @viewport
  243.     @gold_window.x = Graphics.width - @gold_window.width
  244.     @gold_window.y = Graphics.height - @gold_window.height
  245.   end
  246. end
  247.  
  248. =begin
  249. #--------------------------------------------------------------------------
  250. # ● 屏蔽部分(请根据脚本头部提示使用此屏蔽区)得失金币提示金银铜模式
  251. #--------------------------------------------------------------------------
  252.  
  253.   def event_window_make_gold_text(value)
  254.     return unless SceneManager.scene_is?(Scene_Map)
  255.     return if Switch.hide_event_window
  256.     if value > 0
  257.       text = YEA::EVENT_WINDOW::FOUND_TEXT
  258.     elsif value < 0
  259.       text = YEA::EVENT_WINDOW::LOST_TEXT
  260.       value = 0 - value    #失去金币转化为正值
  261.     else; return
  262.       end
  263.   #开始金银铜模式
  264.       if value > 9999
  265.         valuex = value / 100    #金币级运算中间变量
  266.         valueg = valuex / 100   #金币数量
  267.         values = valuex % 100   #银币数量
  268.         valuec = value % 100    #铜币数量
  269.         valuep = valueg.abs.group + "金" + values.abs.group + "银" + valuec.abs.group
  270.         text += sprintf("%s%s", valuep, "铜")
  271.       elsif value > 99
  272.         values = value / 100   #银币数量
  273.         valuec = value % 100   #铜币数量
  274.         valuep = values.abs.group + "银" + valuec.abs.group
  275.         text += sprintf("%s%s", valuep, "铜")
  276.       else
  277.         #原始代码区开始
  278.         text += sprintf("%s%s", value.abs.group, "铜")  
  279.         #原始代码区结束
  280.       end
  281.   #结束金银铜模式
  282.     event_window_add_text(text)
  283.   end
  284.  
  285. #--------------------------------------------------------------------------
  286. # ● 屏蔽部分(请根据脚本头部提示使用此屏蔽区)得失金币提示金银铜模式
  287. #--------------------------------------------------------------------------
  288. =end
   

评分

参与人数 2星屑 +382 收起 理由
怪蜀黍 + 375 奖励条例!
我在孤岛等你 + 7 好人有好糖

查看全部评分

Lv1.梦旅人

梦石
0
星屑
68
在线时间
208 小时
注册时间
2013-8-8
帖子
1296
2
发表于 2013-10-26 21:26:39 | 只看该作者
能做多一种游戏货币吗?比如历练什么的
我已经没有兴趣认真做游戏了……只能胡扯
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
642
在线时间
165 小时
注册时间
2012-4-18
帖子
264
3
 楼主| 发表于 2013-10-26 21:39:12 | 只看该作者
如果能够接受物品货币的话,用87行到97行部分的代码就可以实现,你是要再增加一种(一共三种特殊货币)还是增加一种(一共一种?)要三种就像87-97行那样再定义一句,,只要一种的话就删除一种,然后改改坐标就行了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 10:11

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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