查看: 3539|回复: 4

[已经解决] 求教货币单位进位的处理方式

[复制链接]
梦石
0
星屑
50
在线时间
73 小时
注册时间
2013-7-3
回帖
6
发表于 2013-7-21 17:43:32 | 显示全部楼层 |阅读模式

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

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

×
我想做出单一货币的进位效果,比如网游里常见的:1金币=100银币=10000铜币(百进制),或者在古代背景里适用的:1贯=1000文(千进制),或者现实背景下的:1元=10角=100分(十进制)

在论坛搜了一下,关于货币的帖子都是第二货币的,跟我的想法不是一回事

我想做的单一货币不需要兑换,也没有分别使用的商店系统,只需要在积累到进位数量后能显示新的单位就可以;在获得和失去金钱的时候也能自动计算(比如获得了1金10银,系统知道这等于110银或11000铜)

点评

参考用 sprintf("%02d金%02d银%02d铜", value/ 10000, (value% 10000)/ 100,value % 100)  发表于 2013-7-21 18:29
梦石
0
星屑
50
在线时间
73 小时
注册时间
2013-7-3
回帖
6
 楼主| 发表于 2013-7-21 20:24:49 | 显示全部楼层
本帖最后由 deerdeer 于 2013-7-21 20:31 编辑

抱歉,我是脚本小白,不是太明白,可否麻烦你再指教一下 @ 345912390

我现在的理解是,游戏数据库中仍然使用基础单位(暂时用“文”来做例子)来设定价格,然后在每一个需要显示金钱的地方(主菜单、商店、战斗报酬等)都加上这句,来实现显示时的换算

我在windows_gold 里加了这句:
#--------------------------------------------------------------------------
  # ● 获取货币单位
  #--------------------------------------------------------------------------
  def currency_unit
    Vocab::currency_unit
     sprintf("%02d贯%02d文",value/1000, value % 1000)
  end

确实可以换算了,但是显示上还是有问题:

未命名.JPG

在换算过的数字之前还有个真实数字存在,请问这个该如何消除

另外一点是,当没持有金钱的情况下,文这个单位前面显示的是2位“0”而非3位,而获得金钱后就能正常显示3位数字,请问这个能改么:

111.JPG
回复

使用道具 举报

梦石
1
星屑
23236
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2013-7-21 20:36:38 | 显示全部楼层
消除真实数字把Window_Gold第27行改成
  1. draw_currency_value("", currency_unit, 4, 0, contents.width - 8)
复制代码
应该就可以了……

点评

成功了,非常感谢!  发表于 2013-7-21 20:41
回复

使用道具 举报

梦石
1
星屑
23236
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2013-7-21 21:00:32 | 显示全部楼层
本帖最后由 喵呜喵5 于 2013-9-7 15:31 编辑

关于你的第二个问题,把脚本改成这样就好了

[pre lang="ruby" line="1"]sprintf("%03d贯%03d文",value/1000, value % 1000)[/pre]

当然,我个人是喜欢这么来显示,你可以试试看(把脚本插到main以上你的脚本以下就可以了)

[pre lang="ruby" line="1"]=begin

===============================================================================
元角分 By喵呜喵5
===============================================================================

【说明】

把金钱的显示方式修改成了XX元XX角XX分这样的形式

=end

module M5Money
#==============================================================================
#  设定部分
#==============================================================================

  RATE  = 10
  
  #设定进制,例如10分=1角、10角=1元的时候就把上方的数字设置成10
  
  FEN = "分"
  #设定游戏中1G所对应的单位,默认获得1G即获得1分钱
  
  JIAO = "角"
  #设定游戏中1G*RATE所对应的单位
  
  YUAN = "元"
  #设定游戏中1G*RATE*RATE所对应的单位

#==============================================================================
#  设定结束
#==============================================================================
#==============================================================================
#  脚本部分
#==============================================================================
end

class Window_Gold < Window_Base
  def refresh
    contents.clear
    draw_currency_value("",m5_gain_gold($game_party.gold),4, 0,
    contents.width - 8)
  end  
  def m5_gain_gold(gold)
    yuan = gold / ( M5Money::RATE * M5Money::RATE)
    val = (yuan == 0 ? "" : yuan.to_s + M5Money::YUAN )
    jiao = (gold / M5Money::RATE) % M5Money::RATE
    val += (jiao == 0 ? "" : jiao.to_s + M5Money::JIAO )
    fen = gold % ( M5Money::RATE )
    val += fen.to_s + M5Money::FEN
  end
end
class << BattleManager
  def gain_gold
    if $game_troop.gold_total > 0
      gold = $game_troop.gold_total
      yuan = gold / ( M5Money::RATE * M5Money::RATE)
      val = (yuan == 0 ? "" : yuan.to_s + M5Money::YUAN )
      jiao = (gold / M5Money::RATE) % M5Money::RATE
      val += (jiao == 0 ? "" : jiao.to_s + M5Money::JIAO )
      fen = gold % ( M5Money::RATE )
      val += fen.to_s + M5Money::FEN
      text = '获得了' + val
      $game_message.add('\.' + text)
      $game_party.gain_gold($game_troop.gold_total)
    end
    wait_for_message
  end
end[/pre]

点评

说的也是,稍微修改了一下……  发表于 2013-9-7 15:32
還要修改戦鬥後處理,不然戦鬥後所得可能顕示幾千幾万文  发表于 2013-9-7 08:48
感谢!效果很好,弄明白了不少  发表于 2013-7-21 21:21

评分

参与人数 1梦石 +1 收起 理由
Sion + 1 效果很好

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
66 小时
注册时间
2013-9-4
回帖
91
发表于 2013-9-7 07:48:52 | 显示全部楼层
不懂,有完整脚本吗?原脚本我不会改...

点评

然後4樓就是完整腳本阿....  发表于 2013-9-7 10:26
你挖坟了..........  发表于 2013-9-7 10:25
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部