查看: 4392|回复: 7

[原创发布] 让金钱窗口的金钱每三位用逗号隔开

[复制链接]
梦石
0
星屑
50
在线时间
28 小时
注册时间
2008-12-23
回帖
24
发表于 2015-1-31 23:11:57 | 显示全部楼层 |阅读模式

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

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

×
LZ鼓捣了几个月的RGSS后,终于开始动手做自己的脚本了。

希望各位可以支持,也多多提出意见。
捕获.JPG
如图,像这样的让金钱的每三位以逗号隔开,看起来更有条理。
LZ鼓捣了几个小时才弄出来的……是我第一个纯自主非仿照脚本,希望支持。
可能有很多累赘的东西,各位如果有什么意见尽管提。
使用方法:
①新人:在main上按Insert插入空白脚本,然后将该脚本复制进去。
②大神:直接在原Window_Gold中进行修改。

[pre lang="ruby" line="1"]#==============================================================================
# ■ Window_Gold
#------------------------------------------------------------------------------
#  显示金钱的窗口。 (更有条理)
# By 风中的翔 (第一次做)
#==============================================================================
class Window_Gold < Window_Base
  def initialize
    super(0,0,160,64)
    self.contents=Bitmap.new(width-32,height-32)
    refresh
  end
  def refresh
    self.contents.clear #清除内容
    size=contents.text_size($data_system.words.gold).width #取得金钱宽度
    self.contents.font.color=normal_color
    gold_fenhao
    self.contents.draw_text(4,0,120-size-2,32,@goldshu, 2) #描绘钱数
    self.contents.font.color=system_color
    self.contents.draw_text(124-size,0,size,32,$data_system.words.gold,2) #描绘单位
  end
  def gold_fenhao
    a = $game_party.gold.to_s
    @fenhaoshu = a.size/3
    @fenhaoyu = a.size%3
    @d=[]
    @d_n=0
    a.scan(/./).each {|a| qudu_gold(a) }
    @goldshu=""
    b=0
    while b<@d_n
      if @fenhaoshu==0 #当钱单位个数小于三时
        @goldshu+=@d
        b+=1
      else #当钱单位数大于三时
        if @fenhaoyu !=0 #当钱单位个数不为三位数倍数时
          while @fenhaoyu != 0
           @goldshu+=@d
           b+=1
           @fenhaoyu-=1
          end
         @goldshu+=","
        else #当钱单位个数为三位数倍数时
          d=0
          while d != 3
           @goldshu+=@d
           break if b==@d_n
           b+=1
           d+=1
          end
          @goldshu+="," if b != @d_n
        end
      end
    end
  end
  def qudu_gold(a)
    @d[@d_n]=a
    @d_n+=1
  end
end
[/pre]

评分

参与人数 3星屑 +195 收起 理由
timiesea + 15 塞糖
怪蜀黍 + 175 发布鼓励
zmz6668 + 5 塞糖

查看全部评分

我的游戏我自己做
梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2015-1-31 23:59:42 | 显示全部楼层
本帖最后由 RyanBern 于 2015-2-1 00:06 编辑

支持LZ写脚本,而且顺便回答了XP区的一个问题!
其实可以这样:
[pre lang="Ruby"]def make_gold_text
  num = $game_party.gold
  output = ""
  while num > 0
    output = "," + output if output != ""
    output = (num % 1000).to_s + output
    num /= 1000
  end
  return output == "" ? "0" : output
end[/pre]
然后直接调用make_gold_text就好了,能少几行是几行。

点评

多谢指教!  发表于 2015-2-1 13:24

评分

参与人数 1星屑 +125 收起 理由
怪蜀黍 + 125 喵呜

查看全部评分

回复

使用道具 举报

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
回帖
1223
发表于 2015-2-1 06:47:50 | 显示全部楼层
taroxd已经给过方法了。。
sprintf('%03d,%03d,%03d', gold/1000000, gold/1000%1000, gold%1000)

%是固定格式
0用0补位
3是宽度
d使用十进制
(以上参考 F1)


在rgss1中 读取地图文件,计时器都使用到了这种方法!
“一个参数”对应“一个字符组”
是把 gold/1000000 , gold/1000%1000, gold%1000 转化十进制并用0补位 最后返回一个字符串

点评

忘了说了,不需要开始的0的话可以对结果 gsub(/^(000,)*0*/, '')  发表于 2015-2-1 07:39

评分

参与人数 1星屑 +100 收起 理由
怪蜀黍 + 100 讨论奖励

查看全部评分

回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-2-1 07:48:52 | 显示全部楼层
RyanBern 发表于 2015-1-31 23:59
支持LZ写脚本,而且顺便回答了XP区的一个问题!
其实可以这样:
def make_gold_text

关于能少几行是几行的想法我还是挺赞同的

[pre lang="ruby" line="1"]gold.to_s.reverse.scan(/.{1,3}/).join(',').reverse[/pre]

点评

太厉害了!谢指教。  发表于 2015-2-1 13:24

评分

参与人数 3星屑 +140 收起 理由
怪蜀黍 + 100 一行奖励
英顺的马甲 + 20 正想回复正则的说...
RyanBern + 20 一行

查看全部评分

回复

使用道具 举报

梦石
0
星屑
462
在线时间
871 小时
注册时间
2014-5-5
回帖
914
发表于 2015-2-1 21:36:01 | 显示全部楼层
taroxd 发表于 2015-2-1 07:48
关于能少几行是几行的想法我还是挺赞同的

gold.to_s.reverse.scan(/.{1,3}/).join(',').reverse[/pre] ...

小白请问版主
这句脚本要怎么用
不知道要插在哪个地方

点评

我没用过XP我什么都不知道  发表于 2015-2-1 21:37
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2015-2-2 11:25:36 | 显示全部楼层
邪月长啸 发表于 2015-2-1 04:36
小白请问版主
这句脚本要怎么用
不知道要插在哪个地方

当然是在显示gold的地方用
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

梦石
0
星屑
105
在线时间
297 小时
注册时间
2009-1-7
回帖
155
发表于 2015-2-3 17:02:27 | 显示全部楼层
感觉好强大啊!我那个脚本好像过时了呢。不过同样是新手,很好!塞点糖以资鼓励!
游戏群组:https://rpg.blue/forum.php?mod=group&fid=565在这里你可以看到我在制作游戏过程中分享的内容。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
14 小时
注册时间
2015-7-29
回帖
7
发表于 2015-7-30 15:08:34 | 显示全部楼层
都是大神~~~
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部