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

Project1

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

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
28 小时
注册时间
2008-12-23
帖子
35
跳转到指定楼层
1
发表于 2015-1-31 23:11:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

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

希望各位可以支持,也多多提出意见。

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

RUBY 代码复制
  1. #==============================================================================
  2. # ■ Window_Gold
  3. #------------------------------------------------------------------------------
  4. #  显示金钱的窗口。 (更有条理)
  5. # By 风中的翔 (第一次做)
  6. #==============================================================================
  7. class Window_Gold < Window_Base
  8.   def initialize
  9.     super(0,0,160,64)
  10.     self.contents=Bitmap.new(width-32,height-32)
  11.     refresh
  12.   end
  13.   def refresh
  14.     self.contents.clear #清除内容
  15.     size=contents.text_size($data_system.words.gold).width #取得金钱宽度
  16.     self.contents.font.color=normal_color
  17.     gold_fenhao
  18.     self.contents.draw_text(4,0,120-size-2,32,@goldshu, 2) #描绘钱数
  19.     self.contents.font.color=system_color
  20.     self.contents.draw_text(124-size,0,size,32,$data_system.words.gold,2) #描绘单位
  21.   end
  22.   def gold_fenhao
  23.     a = $game_party.gold.to_s
  24.     @fenhaoshu = a.size/3
  25.     @fenhaoyu = a.size%3
  26.     @d=[]
  27.     @d_n=0
  28.     a.scan(/./).each {|a| qudu_gold(a) }
  29.     @goldshu=""
  30.     b=0
  31.     while b<@d_n
  32.       if @fenhaoshu==0 #当钱单位个数小于三时
  33.         @goldshu+=@d[b]
  34.         b+=1
  35.       else #当钱单位数大于三时
  36.         if @fenhaoyu !=0 #当钱单位个数不为三位数倍数时
  37.           while @fenhaoyu != 0
  38.            @goldshu+=@d[b]
  39.            b+=1
  40.            @fenhaoyu-=1
  41.           end
  42.          @goldshu+=","
  43.         else #当钱单位个数为三位数倍数时
  44.           d=0
  45.           while d != 3
  46.            @goldshu+=@d[b]
  47.            break if b==@d_n
  48.            b+=1
  49.            d+=1
  50.           end
  51.           @goldshu+="," if b != @d_n
  52.         end
  53.       end
  54.     end
  55.   end
  56.   def qudu_gold(a)
  57.     @d[@d_n]=a
  58.     @d_n+=1
  59.   end
  60. end

评分

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

查看全部评分

我的游戏我自己做

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

2
发表于 2015-1-31 23:59:42 | 只看该作者
本帖最后由 RyanBern 于 2015-2-1 00:06 编辑

支持LZ写脚本,而且顺便回答了XP区的一个问题!
其实可以这样:
RUBY 代码复制
  1. def make_gold_text
  2.   num = $game_party.gold
  3.   output = ""
  4.   while num > 0
  5.     output = "," + output if output != ""
  6.     output = (num % 1000).to_s + output
  7.     num /= 1000
  8.   end
  9.   return output == "" ? "0" : output
  10. end

然后直接调用make_gold_text就好了,能少几行是几行。

点评

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

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
3
发表于 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 讨论奖励

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

4
发表于 2015-2-1 07:48:52 | 只看该作者
RyanBern 发表于 2015-1-31 23:59
支持LZ写脚本,而且顺便回答了XP区的一个问题!
其实可以这样:
def make_gold_text

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

RUBY 代码复制
  1. gold.to_s.reverse.scan(/.{1,3}/).join(',').reverse

点评

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

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
325
在线时间
855 小时
注册时间
2014-5-5
帖子
948
5
发表于 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
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

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

使用道具 举报

Lv1.梦旅人

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
14 小时
注册时间
2015-7-29
帖子
7
8
发表于 2015-7-30 15:08:34 | 只看该作者
都是大神~~~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-30 15:03

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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