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

Project1

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

星潟的「滚动状态」怎样应用到其他地方

[复制链接]

Lv5.捕梦者

梦石
0
星屑
26259
在线时间
5354 小时
注册时间
2016-3-8
帖子
1655
跳转到指定楼层
1
发表于 2020-8-27 01:12:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 alexncf125 于 2024-1-25 13:09 编辑

现在只会在战斗中的Window_BattleStatus有效果
如何在其它地方也有效果呢??

RUBY 代码复制
  1. #==============================================================================
  2. # ■ RGSS3 滚动状态 Ver1.00 by 星潟
  3. #------------------------------------------------------------------------------
  4. # 默认战斗中显示状态数量有限,状态数量很多时玩家无法知道全部状态。
  5. # 此脚本让所有状态滚动显示。
  6. #
  7. # 此外,会在强化能力、弱化能力中显示数字,表示等级数。
  8. #
  9. # 对于非默认战斗系统兼容性可能较差。
  10. #==============================================================================
  11. module BattleStateScroll
  12.  
  13.   #附加/解除状态时
  14.   #设定不透明度变化的数值。
  15.   #数值越大,不透明度变化越快。
  16.   #数值建议在1~255之间。
  17.  
  18.   FadeIn = 16
  19.  
  20. end
  21. class Window_BattleStatus < Window_Selectable
  22.   #--------------------------------------------------------------------------
  23.   # オブジェクト初期化
  24.   #--------------------------------------------------------------------------
  25.   alias initialize_actor_icons_sprites initialize
  26.   def initialize
  27.     @icons_sprites = []
  28.     initialize_actor_icons_sprites
  29.   end
  30.   #--------------------------------------------------------------------------
  31.   # リフレッシュ
  32.   #--------------------------------------------------------------------------
  33.   alias refresh_actor_icons_sprites refresh
  34.   def refresh
  35.     i1 = $game_party.battle_members.size
  36.     if i1 > 0
  37.       @icons_sprites.each_with_index {|s,i2|
  38.       s.dispose if i2 >= i1}
  39.       @icons_sprites.delete_if {|s| s.disposed?}
  40.     else
  41.       @icons_sprites.each {|s,i2| s.dispose}
  42.       @icons_sprites = []
  43.     end
  44.     refresh_actor_icons_sprites
  45.   end
  46.   #--------------------------------------------------------------------------
  47.   # ステートおよび強化/弱体のアイコンを描画
  48.   #--------------------------------------------------------------------------
  49.   def draw_actor_icons(actor, x, y, width = 96)
  50.     i = actor.index
  51.     @icons_sprites[i] ||= Sprite_StatesIcons.new(self,i,width / 24,self.viewport)
  52.     icons = (actor.state_icons + actor.buff_icons)
  53.     ib = Cache.system("IconSet")
  54.     if width / 24 < icons.size
  55.       ic = icons.clone
  56.       (width / 24).times {icons.push(ic.shift)}
  57.     end
  58.     data_hash = {:icons => icons}
  59.     flag1 = defined? draw_actor_icons_rest_draw
  60.     if flag1
  61.       rest_array = actor.state_rest_array + actor.buff_rest_array
  62.       if width / 24 < icons.size
  63.         rac = rest_array.clone
  64.         (width / 24).times {rest_array.push(rac.shift)}
  65.       end
  66.       data_hash[:rest] = rest_array
  67.     end
  68.     flag2 = defined? draw_actor_icons_level_draw
  69.     if flag2
  70.       level_array = actor.state_level_array
  71.       if width / 24 < level_array.size
  72.         lac = level_array.clone
  73.         (width / 24).times {level_array.push(lac.shift)}
  74.       end
  75.       data_hash[:level] = level_array
  76.     end
  77.     if @icons_sprites[i].data_hash != data_hash
  78.       @icons_sprites[i].bitmap.dispose if @icons_sprites[i].bitmap && !@icons_sprites[i].bitmap.disposed?
  79.       all_reset = (!@icons_sprites[i].data_hash or (@icons_sprites[i].data_hash[:icons] != data_hash[:icons]))
  80.       @icons_sprites[i].data_hash = data_hash
  81.       is = icons.size
  82.       b = Bitmap.new((is > 0 ? is : 1) * 24,24)
  83.       icons.each_with_index {|n, i|
  84.       rect = Rect.new(n % 16 * 24, n / 16 * 24, 24, 24)
  85.       b.blt(i * 24, 0, ib, rect)}
  86.  
  87.       if flag1
  88.         font_data = b.font.clone
  89.         b.font.size = ST_B_REST::FSIZE
  90.         ca1 = ST_B_REST::COLOR
  91.         b.font.color = Color.new(ca1[0],ca1[1],ca1[2],ca1[3])
  92.         ca2 = ST_B_REST::O_CLR
  93.         b.font.out_color = Color.new(ca2[0],ca2[1],ca2[2],ca2[3])
  94.         b.font.shadow = ST_B_REST::SHADOW
  95.         rest_array.each_with_index {|n, i| b.draw_text(24 * i + ST_B_REST::X_POS, ST_B_REST::Y_POS, 24, 24, n, 2) }
  96.         b.font = font_data
  97.       end
  98.  
  99.       if flag2
  100.         font_data = b.font.clone
  101.         b.font.size = StateLevel::FSIZE
  102.         ca1 = StateLevel::COLOR
  103.         b.font.color = Color.new(ca1[0],ca1[1],ca1[2],ca1[3])
  104.         ca2 = StateLevel::O_CLR
  105.         b.font.out_color = Color.new(ca2[0],ca2[1],ca2[2],ca2[3])
  106.         b.font.shadow = StateLevel::SHADOW
  107.         level_array.each_with_index {|n, i| b.draw_text(24 * i + StateLevel::X_POS, StateLevel::Y_POS, 24, 24, n, 2) }
  108.         b.font = font_data
  109.       end
  110.  
  111.       if all_reset
  112.         @icons_sprites[i].bitmap = b
  113.         @icons_sprites[i].opacity = 0
  114.         @icons_sprites[i].src_rect = Rect.new(0,0,width,96)
  115.       else
  116.         src_rect = @icons_sprites[i].src_rect.clone
  117.         @icons_sprites[i].bitmap = b
  118.         @icons_sprites[i].src_rect = src_rect
  119.       end
  120.     end
  121.     @icons_sprites[i].add_x = x
  122.     @icons_sprites[i].add_y = y
  123.   end
  124.   #--------------------------------------------------------------------------
  125.   # 更新
  126.   #--------------------------------------------------------------------------
  127.   unless method_defined?(:update_actor_icons_sprites)
  128.     alias update_actor_icons_sprites update
  129.     def update
  130.       update_actor_icons_sprites
  131.       @icons_sprites.each {|s| s.update}
  132.     end
  133.   end
  134.   #--------------------------------------------------------------------------
  135.   # 解放
  136.   #--------------------------------------------------------------------------
  137.   unless method_defined?(:dispose_actor_icons_sprites)
  138.     alias dispose_actor_icons_sprites dispose
  139.     def dispose
  140.       @icons_sprites.each {|s| s.dispose}
  141.       @icons_sprites.clear
  142.       dispose_actor_icons_sprites
  143.     end
  144.   end
  145. end
  146. class Sprite_StatesIcons < Sprite
  147.   attr_accessor :add_x
  148.   attr_accessor :add_y
  149.   attr_accessor :data_hash
  150.   #--------------------------------------------------------------------------
  151.   # 初期化
  152.   #--------------------------------------------------------------------------
  153.   def initialize(window,index,max_width,viewport = nil)
  154.     @window = window
  155.     @index = index
  156.     @max_width = max_width
  157.     @add_x = 0
  158.     @add_y = 0
  159.     super(viewport)
  160.   end
  161.   #--------------------------------------------------------------------------
  162.   # 更新
  163.   #--------------------------------------------------------------------------
  164.   def update
  165.     super
  166.     self.viewport = @window.viewport if self.viewport != @window.viewport
  167.     self.x = @window.x + @window.standard_padding + add_x
  168.     self.y = @window.y + @window.standard_padding + add_y
  169.     self.z = @window.z
  170.     if @window.close? or !@window.visible
  171.       self.visible = false
  172.       return
  173.     else
  174.       self.visible = true
  175.     end
  176.     self.opacity += BattleStateScroll::FadeIn if self.opacity < 255
  177.     if self.bitmap
  178.       self.src_rect.x += 1 if self.bitmap.width / 24 > @max_width
  179.       self.src_rect.x = 0 if (self.bitmap.width - self.src_rect.x) / 24 - @max_width < 0
  180.     end
  181.   end
  182.   #--------------------------------------------------------------------------
  183.   # 解放
  184.   #--------------------------------------------------------------------------
  185.   def dispose
  186.     self.bitmap.dispose if self.bitmap && !self.bitmap.disposed?
  187.     super
  188.   end
  189. end
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

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

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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