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

Project1

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

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
73 小时
注册时间
2013-7-3
帖子
8
跳转到指定楼层
1
发表于 2013-7-21 17:43:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我想做出单一货币的进位效果,比如网游里常见的: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

Lv1.梦旅人

梦石
0
星屑
50
在线时间
73 小时
注册时间
2013-7-3
帖子
8
2
 楼主| 发表于 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

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



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

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

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21636
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

3
发表于 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
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21636
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

4
发表于 2013-7-21 21:00:32 | 只看该作者
本帖最后由 喵呜喵5 于 2013-9-7 15:31 编辑

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

RUBY 代码复制
  1. sprintf("%03d贯%03d文",value/1000, value % 1000)


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

RUBY 代码复制
  1. =begin
  2.  
  3. ===============================================================================
  4.  元角分 By喵呜喵5
  5. ===============================================================================
  6.  
  7. 【说明】
  8.  
  9. 把金钱的显示方式修改成了XX元XX角XX分这样的形式
  10.  
  11. =end
  12.  
  13. module M5Money
  14. #==============================================================================
  15. #  设定部分
  16. #==============================================================================
  17.  
  18.   RATE  = 10
  19.  
  20.   #设定进制,例如10分=1角、10角=1元的时候就把上方的数字设置成10
  21.  
  22.   FEN = "分"
  23.   #设定游戏中1G所对应的单位,默认获得1G即获得1分钱
  24.  
  25.   JIAO = "角"
  26.   #设定游戏中1G*RATE所对应的单位
  27.  
  28.   YUAN = "元"
  29.   #设定游戏中1G*RATE*RATE所对应的单位
  30.  
  31. #==============================================================================
  32. #  设定结束
  33. #==============================================================================
  34. #==============================================================================
  35. #  脚本部分
  36. #==============================================================================
  37. end
  38.  
  39. class Window_Gold < Window_Base
  40.   def refresh
  41.     contents.clear
  42.     draw_currency_value("",m5_gain_gold($game_party.gold),4, 0,
  43.     contents.width - 8)
  44.   end  
  45.   def m5_gain_gold(gold)
  46.     yuan = gold / ( M5Money::RATE * M5Money::RATE)
  47.     val = (yuan == 0 ? "" : yuan.to_s + M5Money::YUAN )
  48.     jiao = (gold / M5Money::RATE) % M5Money::RATE
  49.     val += (jiao == 0 ? "" : jiao.to_s + M5Money::JIAO )
  50.     fen = gold % ( M5Money::RATE )
  51.     val += fen.to_s + M5Money::FEN
  52.   end
  53. end
  54. class << BattleManager
  55.   def gain_gold
  56.     if $game_troop.gold_total > 0
  57.       gold = $game_troop.gold_total
  58.       yuan = gold / ( M5Money::RATE * M5Money::RATE)
  59.       val = (yuan == 0 ? "" : yuan.to_s + M5Money::YUAN )
  60.       jiao = (gold / M5Money::RATE) % M5Money::RATE
  61.       val += (jiao == 0 ? "" : jiao.to_s + M5Money::JIAO )
  62.       fen = gold % ( M5Money::RATE )
  63.       val += fen.to_s + M5Money::FEN
  64.       text = '获得了' + val
  65.       $game_message.add('\.' + text)
  66.       $game_party.gain_gold($game_troop.gold_total)
  67.     end
  68.     wait_for_message
  69.   end
  70. end

点评

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

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
66 小时
注册时间
2013-9-4
帖子
94
5
发表于 2013-9-7 07:48:52 | 只看该作者
不懂,有完整脚本吗?原脚本我不会改...

点评

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 18:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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