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

Project1

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

[已经过期] 金银铜系统·仅需一个icon·比例1:100

[复制链接]

Lv2.观梦者

梦石
0
星屑
701
在线时间
511 小时
注册时间
2012-4-8
帖子
255
跳转到指定楼层
1
发表于 2015-2-13 20:33:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 黑白界 于 2015-3-8 11:01 编辑

https://rpg.blue/forum.php?mod=viewthread&tid=344109
已经有前辈做过了类似的,不过需要三张图片

于是我做了一个只需一个icon的,不需要素材,商店显示有效
在最开始设置 $icon_jinqian = 你选择的icon的编号 就好



RUBY 代码复制
  1. $icon_jinqian=  361  #金钱图标的编号
  2. class Window_Base
  3.   def draw_icon2(icon_index,xx,yy)
  4.     bitmap = Cache.system("Iconset")
  5.     rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
  6.     b = Bitmap.new(24,24)
  7.     b.blt(0, 0, bitmap, rect, 255)
  8.     for x in 0..23
  9.       for y in 0..23
  10.         next if b.get_pixel(x, y).alpha == 0
  11.         c=b.get_pixel(x, y)
  12.         m = (c.red + c.green + c.blue) / 3
  13.         b.set_pixel(x, y, Color.new(m, m, m, c.alpha))
  14.       end
  15.     end
  16.     rect2 = Rect.new(0, 0, 24, 24)
  17.     contents.blt(xx, yy, b,rect2, 255)
  18.   end
  19.   def draw_icon3(icon_index,xx,yy)
  20.     bitmap = Cache.system("Iconset")
  21.     rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
  22.     b = Bitmap.new(24,24)
  23.     b.blt(0, 0, bitmap, rect, 255)
  24.     for x in 0..23
  25.       for y in 0..23
  26.         next if b.get_pixel(x, y).alpha == 0
  27.         c = b.get_pixel(x, y)
  28.         m = (c.red + c.green + c.blue) / 3-30
  29.         b.set_pixel(x, y, Color.new(c.red, m, m, c.alpha))
  30.       end
  31.     end
  32.     rect2 = Rect.new(0, 0, 24, 24)
  33.     contents.blt(xx, yy, b,rect2, 255)
  34.   end
  35.   def draw_currency_value(unit,s,x,y,width)
  36.     if unit >=10000
  37.       i1=unit/10000
  38.       i2=(unit-i1*10000)/100
  39.       i3=unit-i1*10000-i2*100
  40.     elsif unit >=100
  41.       i1=0
  42.       i2=unit/100
  43.       i3=unit-i2*100
  44.     else
  45.       i1=0
  46.       i2=0
  47.       i3=unit
  48.     end
  49.     cx1 = text_size(i1).width+4
  50.     cx2 = text_size(i2).width+4
  51.     cx3 = text_size(i3).width+4
  52.     self.contents.fill_rect(x, y,width, 24, Color.new(0,0,0,200))
  53.     self.contents.fill_rect(x, y,width, 1, Color.new(200,200,200,200))
  54.     self.contents.fill_rect(x, y,1, 24, Color.new(200,200,200,200))
  55.     self.contents.fill_rect(x, y+23,width, 1, Color.new(200,200,200,200))
  56.     self.contents.fill_rect(x+width, y,1, 24, Color.new(200,200,200,200))
  57.     draw_icon($icon_jinqian, x+width-60-cx3-cx2, y)
  58.     draw_icon2($icon_jinqian, x+width-42-cx3, y)
  59.     draw_icon3($icon_jinqian, x+width-24, y)
  60.     self.contents.font.color=Color.new(150,150,50)
  61.     self.contents.font.size=20
  62.     draw_text(x+width-cx3-54-cx2-cx1, y, cx1, 24,i1)
  63.     draw_text(x+width-cx3-36-cx2, y, cx2, 24,i2)
  64.     draw_text(x+width-cx3-18, y, cx3, 24,i3)
  65.   end
  66. end

兼容VIPArcher装备帮助增强的脚本
RUBY 代码复制
  1. $huobijin=      "金"
  2. $huobiyin=      "银"
  3. $huobitong=     "铜"
  4. class Window_Help_Ex < Window_Base
  5.   def set_item(item)
  6.  
  7.     if item == nil
  8.  
  9.       set_text("")
  10.  
  11.       return
  12.  
  13.     end
  14.  
  15.     @xtext = ""
  16.  
  17.     if $VIPArcherScript[:itemcolor] # require 物品描绘颜色脚本
  18.  
  19.       @xtext = "\\c[16]名称:\\c[#{VIPArcher::ItemColor::Color_Lv[item.color]}]" +
  20.  
  21.       "#{item.name}  #{item.color if item.color != 0}#{"" if item.color != 0}\\c[0]\n"
  22.  
  23.     else
  24.  
  25.       @xtext = "\\c[16]名称:\\c[0]#{item.name}\n"
  26.  
  27.     end
  28.  
  29.     @xtext += "\\c[16]介绍:\\c[0]#{item.description}\n"
  30.  
  31.     if $VIPArcherScript[:load]      # require 队伍负重脚本
  32.  
  33.       @xtext += "\\c[16]售价:#{item.price} 重量:#{item.load}\\c[0]\n"
  34.  
  35.     else
  36.     unit=item.price
  37.     if unit >=10000
  38.       i1=unit/10000
  39.       i2=(unit-i1*10000)/100
  40.       i3=unit-i1*10000-i2*100
  41.     elsif unit >=100
  42.       i1=0
  43.       i2=unit/100
  44.       i3=unit-i2*100
  45.     else
  46.       i1=0
  47.       i2=0
  48.       i3=unit
  49.     end
  50.     a1="#{$huobijin}"
  51.     a2="#{$huobiyin}"
  52.     a3="#{$huobitong}"
  53.     if i1==0
  54.       i1=nil
  55.       a1=nil
  56.     end
  57.     if i2==0
  58.       i2=nil
  59.       a2=nil
  60.     end
  61.     if i3==0
  62.       i3=nil
  63.       a3=nil
  64.     end
  65.     @xtext += item.price == 0 ? "\\c[16]售价:\\c[14]无法出售\\c[0]\n":"\\c[16]售价:#{i1}#{a1}#{i2}#{a2}#{i3}#{a3}\\c[0]\n"
  66.  
  67.     end if item.is_a?(RPG::EquipItem) || item.is_a?(RPG::Item)
  68.  
  69.     @xtext += VIPArcher::Equipplus.getequiphelp(item) if item.is_a?(RPG::EquipItem)
  70.  
  71.     @xtext += VIPArcher::Equipplus.getskillhelp(item) if item.is_a?(RPG::Skill)
  72.  
  73.     @xtext += VIPArcher::Equipplus.getitemhelp(item) if item.is_a?(RPG::Item)
  74.  
  75.     if $VIPArcherScript[:exdrop_rate]   # require 队伍掉率扩展
  76.  
  77.       @xtext += "\\c[#{$2.to_i > 0 ? UP : DOWN}]#{$1}掉率: #{$2}%\\c[0]\n" if
  78.  
  79.       item.note =~ /<(\W+)掉率:\s*([0-9+.-]+)%>/i
  80.  
  81.     end if item.is_a?(RPG::EquipItem) || item.is_a?(RPG::Skill)
  82.  
  83.     @xtext = @xtext[0,@text.size - 2] if @xtext[@xtext.size - 2,2] == "\n"
  84.  
  85.   end
  86. end
武侠|养成|战棋游戏《以武证道》头秃开发中...
开发日记在此

Lv3.寻梦者 (版主)

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

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

开拓者贵宾

2
发表于 2015-2-13 20:41:22 | 只看该作者
所以说不要用 for 循环…… 你看,越界了吧

bitmap.width.times 明明更好用的= =
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
701
在线时间
511 小时
注册时间
2012-4-8
帖子
255
3
 楼主| 发表于 2015-2-13 20:43:34 | 只看该作者
taroxd 发表于 2015-2-13 20:41
所以说不要用 for 循环…… 你看,越界了吧

bitmap.width.times 明明更好用的= = ...

没太懂。。什么叫越界?
bitmap.width.times也不懂是什么意思,945的教程里没提过。。
武侠|养成|战棋游戏《以武证道》头秃开发中...
开发日记在此
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

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

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

开拓者贵宾

4
发表于 2015-2-13 20:44:52 | 只看该作者
本帖最后由 taroxd 于 2015-2-13 20:46 编辑
黑白界 发表于 2015-2-13 20:43
没太懂。。什么叫越界?
bitmap.width.times也不懂是什么意思,945的教程里没提过。。 ...


bitmap 宽度只有 24,你却访问到了 25。
这个错误应该是被 RM 抑制了,所以你才没有发现。但如果你用数组,这种基本上是要报错的。

评分

参与人数 1星屑 +1 收起 理由
黑白界 + 1 忘了从0开始数了..话说那教程也写错了...

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33479
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

5
发表于 2015-2-14 07:54:13 | 只看该作者
直接弄三张不同颜色的 ICON 显示,也不用这样麻烦的去逐一取得颜色并改变。
如果金钱窗口刷新比较频繁的话,掉帧可能会很严重的。

点评

可是做三张不同颜色的icon,还要塞进一个iconset,好麻烦的。。我比较喜欢即插即用。。。  发表于 2015-2-14 12:51
正常情况不会去刷新金钱窗口的吧= =  发表于 2015-2-14 08:09
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv4.逐梦者

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

开拓者

6
发表于 2015-2-14 17:50:30 | 只看该作者
taroxd 发表于 2015-2-13 03:44
bitmap 宽度只有 24,你却访问到了 25。
这个错误应该是被 RM 抑制了,所以你才没有发现。但如果你用数组 ...

bitmap.width.times的times是数量还是什么···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-25 08:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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