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

Project1

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

[已经过期] 怎么在复杂装备系统中加入ATB制、CP制

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
149 小时
注册时间
2010-8-10
帖子
53
跳转到指定楼层
1
发表于 2013-10-25 16:36:13 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 jqkice1 于 2013-10-25 17:04 编辑

怎么在P叔的那个复杂装备整合系统中加入CP制、ATB啊~~能不能做成魂之轮回/没神的世界的那中国战斗画面,我不懂脚本啊,弄了各种跳错,各种啊……,有知道的人帮帮我吧。

QQ截图20131025163340.png (160.53 KB, 下载次数: 26)

QQ截图20131025163340.png

点评

改成求助也是不合格 2333  发表于 2013-10-25 16:46
呃……  发表于 2013-10-25 16:39

Lv1.梦旅人

梦石
0
星屑
50
在线时间
149 小时
注册时间
2010-8-10
帖子
53
2
 楼主| 发表于 2013-10-25 17:05:12 | 只看该作者
咋撤销啊
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
196
在线时间
835 小时
注册时间
2012-9-16
帖子
1811
3
发表于 2013-10-25 17:37:46 | 只看该作者
以你现在的水平,还不能使用横战。

——旧坑欢迎戳
回复 支持 反对

使用道具 举报

Lv2.观梦者

会吐槽的画师

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
帖子
6535
4
发表于 2013-10-25 18:15:43 | 只看该作者
好巧,整合了四天把这两个系统弄在一起了,不过ATB系统和施法速度无关这点超级蛋疼……另外我也想弄个轮子……

点评

甭弄了,兼容性很差,远不如原来的  发表于 2013-10-25 18:26
能帮我弄一下吗?  发表于 2013-10-25 18:22
长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
149 小时
注册时间
2010-8-10
帖子
53
5
 楼主| 发表于 2013-10-28 10:04:35 | 只看该作者
本帖最后由 铃仙·优昙华院·因幡 于 2013-10-28 10:12 编辑

我只想要那个界面,还有血槽的动态扣减,直接加在横版里的话会有很多问题(动态血槽在行动时无法刷新等),只能把脚本里涉及到ATB制去掉,帮偶看下吧,脚本如下:
RUBY 代码复制
  1. #==============================================================================
  2. # ★RGSS2
  3. # STR11e_バトルステータス++ 1.3 09/08/07
  4. #
  5. # ・STR11c_XP風バトル#メインのステータスレイアウトを大改造
  6. # ・セクションの位置はSTR11cより下
  7. # ・デザインや演出にこだわりたい人におすすめ
  8. # ・素材規格とか設定とかややこしいけどがんばってください!
  9. #
  10. # ※v1.1で数字素材の規格が変更になりました。ご注意ください。
  11. #
  12. # ◇機能一覧
  13. # ・格ゲー風味のHP/MPゲージ
  14. # ・高速回転(?)する数値
  15. # ・流れるステートアイコン/何もステートが掛かっていない時は非表示に
  16. #
  17. # ◇素材規格
  18. # このスクリプトの動作には複数のスキン画像が必要になります。
  19. # スキン画像はSystemフォルダにインポートしてください。
  20. #
  21. # ・メインスキン
  22. #  HP/MPゲージの下地になるスキンです。
  23. #  サイズ制限無し
  24. # ・HP/MPゲージ
  25. #  通常ゲージと追尾ゲージの二つをひとつの画像にまとめたものです。
  26. #   幅 = 無制限
  27. #  高さ = ゲージの高さ(任意のサイズ) * 2
  28. #  一列目に通常ゲージ、二列目に追尾ゲージを配置します。
  29. # ・数字
  30. #  0123456789の数値を横に並べたものを
  31. #  HPMPの数値が通常、1/4未満、0の順に縦に並べます。
  32. #   幅 = 数字1コマの幅(任意のサイズ) * 10
  33. #  高さ = 任意の高さ * 3
  34. # ・ステートスキン
  35. #  ステートアイコンの下地になるスキンです。
  36. #  なにもステートが掛かっていない時は非表示になる仕様の為、
  37. #  メインスキンとは別に用意します。
  38. #  サイズ制限無し
  39. #
  40. #------------------------------------------------------------------------------
  41. #
  42. # 更新履歴
  43. # ◇1.2→1.3
  44. # STR11dを最新VER(2.2)にするとレベルアップポップが出ないバグを修正
  45. #  ※STR11cもバージョンアップしてください
  46. # ◇1.1→1.2
  47. # 数字の回転速度を変化量に応じて可変するようにした
  48. # ◇1.0→1.1
  49. # 残りHPMPに応じて数字グラフィック(色)を変えることができるようになった
  50. # アクターの名前表示機能を追加。STR11c側で設定してください
  51. # ◇0.9→1.0
  52. # ステート更新時の挙動が気に入らないのを修正
  53. # ◇0.8→0.9
  54. # 最大MPが0だと動作しないバグを修正
  55. # 細かいミスを修正
  56. #
  57. #==============================================================================
  58. # ■ Window_BattleStatus
  59. #==============================================================================
  60. class Window_BattleStatus < Window_Selectable
  61.   # Skin File name
  62.   BTSKIN_00 = "Btskin_main"   # Main Skin
  63.   BTSKIN_01 = "Btskin_hp"     # HP(Gauge)
  64.   BTSKIN_02 = "Btskin_mp"     # MP(Gauge)
  65.   BTSKIN_04 = "Btskin_n00"    # HP(Numbers)
  66.   BTSKIN_05 = "Btskin_n00"    # MP(Numbers)
  67.   BTSKIN_03 = ""  # State
  68.   # Skin coordinates[  x,  y]
  69.   BTSKIN_B_XY = [-16, 52]     # 基準座標
  70.   BTSKIN_00XY = [  0,  0]     # メインスキン
  71.   BTSKIN_01XY = [  0,  3]     # HP(ゲージ)
  72.   BTSKIN_02XY = [  0, 20]     # MP(ゲージ)
  73.   BTSKIN_04XY = [ 48, -8]     # HP(数字)
  74.   BTSKIN_05XY = [ 48, 10]     # MP(数字)
  75.   BTSKIN_03XY = [ 44,-54]     # ステートスキン
  76.   BTSKIN_06XY = [ 44,-60]     # ステート
  77.   # Various Settings
  78.   BTSKIN_01GS = 1       # HP Gauge Speed (Low values are fast)
  79.   BTSKIN_02GS = 1       # MP Gauge Speed(Low values are fast)
  80.   BTSKIN_04SS = 1       # HP Rolling Numbers Speed(Low values are fast)
  81.   BTSKIN_05SS = 1       # MP Rolling Numbers Speed(Low values are fast)
  82.   BTSKIN_04NS = 4             # HP Maximum Digits
  83.   BTSKIN_05NS = 4             # MP Maximum Digits
  84.   BTSKIN_06WH = [72,72]       # [State Width, Height]
  85.   BTSKIN_06SC = 4             # State Icon Scroll Speed
  86.                               # (Values close to 1 are fast)
  87.   # バトルステータス座標
  88.   def set_xy
  89.     @x = []
  90.     @y = []
  91.     for i in 0...$game_party.members.size
  92.       x = (i * 160) + 40
  93.       y = 3
  94.       @x[i] = x + 16#+ STRRGSS2::ST_SX
  95.       @y[i] = y + 16#+ STRRGSS2::ST_SY
  96.     end
  97.   end
  98.   # 設定箇所ここまで
  99.   @@f = false
  100.  
  101.  
  102.   #--------------------------------------------------------------------------
  103.   # ★ エイリアス
  104.   #--------------------------------------------------------------------------
  105.   alias initialize_str33 initialize
  106.   def initialize(f = false)
  107.     initialize_str33
  108.     unless @@f
  109.       @f = @@f = true
  110.     else
  111.       @f = false
  112.     end
  113.     set_xy
  114.     @s_sprite = []
  115.     @s_party = []
  116.     @s_lv = []
  117.     [url=home.php?mod=space&uid=316553]@opacity[/url] = 0
  118.     self.contents.dispose
  119.     self.create_contents
  120.     self.back_opacity = 0
  121.     self.opacity = 0
  122.     #@column_max = $game_party.actors.size
  123.     @viewport = Viewport.new(0, 480-128, 640, 128)
  124.     @hpgw = (Cache.system(BTSKIN_01)).width
  125.     @mpgw = (Cache.system(BTSKIN_02)).width
  126.     @viewport.z = self.z - 1
  127.     @state_opacity = []
  128.     @item_max = $game_party.members.size
  129.     return unless @f
  130.     for i in 0...@item_max
  131.       draw_item(i)
  132.     end
  133.     update
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # ● リフレッシュ潰し
  137.   #--------------------------------------------------------------------------
  138.   def refresh
  139.     # :-)
  140.   end
  141.   #--------------------------------------------------------------------------
  142.   # ● ステートの描画
  143.   #--------------------------------------------------------------------------
  144.   def draw_actor_state(actor)
  145.     icon = Cache.system("Iconset")
  146.     w = actor.states.size * 24
  147.     w = 24 if w < 1
  148.     bitmap = Bitmap.new(w, BTSKIN_06WH[1])
  149.     count = 0
  150.     for state in actor.states
  151.       icon_index = state.icon_index
  152.       x = 24 * count
  153.       rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
  154.       bitmap.blt(x, 0, icon, rect)
  155.       count += 1
  156.     end
  157.     return bitmap
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # ● 名前作成
  161.   #--------------------------------------------------------------------------
  162.   #def name_bitmap(actor)
  163.   #end
  164.   #--------------------------------------------------------------------------
  165.   # ● ステート数取得
  166.   #--------------------------------------------------------------------------
  167.   def state_size(actor)
  168.     return actor.states.size
  169.   end
  170.   #--------------------------------------------------------------------------
  171.   # ● アイテム作成
  172.   #--------------------------------------------------------------------------
  173.   def draw_item(index)
  174.     return unless @f
  175.     actor = $game_party.members[index]
  176.     #
  177.     @s_sprite[index] = []
  178.     s = @s_sprite[index]
  179.     # メインスキン
  180.     s[0] = Sprite.new(@viewport)
  181.     s[0].bitmap = Cache.system(BTSKIN_00)
  182.     s[0].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_00XY[0]
  183.     s[0].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_00XY[1]
  184.     s[0].z = 0
  185.     # HP
  186.     s[1] = Sprite.new(@viewport)
  187.     s[1].bitmap = Cache.system(BTSKIN_01)
  188.     s[1].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_01XY[0]
  189.     s[1].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_01XY[1]
  190.     s[1].z = 4
  191.     w = s[1].bitmap.width
  192.     h = s[1].bitmap.height / 2
  193.     s[1].src_rect.set(0, 0, w, h)
  194.     s[2] = Sprite.new(@viewport)
  195.     s[2].bitmap = Cache.system(BTSKIN_01)
  196.     s[2].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_01XY[0]
  197.     s[2].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_01XY[1]
  198.     s[2].z = 3
  199.     s[2].src_rect.set(0, h, w, h)
  200.     s[11] = 96
  201.     s[6] = Sprite_strNumbers.new(@viewport, BTSKIN_04, BTSKIN_04NS)
  202.     s[6].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_04XY[0]
  203.     s[6].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_04XY[1]
  204.     s[6].z = 5
  205.     s[13] = actor.hp
  206.     s[6].update(s[13])
  207.     # MP
  208.     s[3] = Sprite.new(@viewport)
  209.     s[3].bitmap = Cache.system(BTSKIN_02)
  210.     s[3].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_02XY[0]
  211.     s[3].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_02XY[1]
  212.     s[3].z = 4
  213.     w = s[3].bitmap.width
  214.     h = s[3].bitmap.height / 2
  215.     s[3].src_rect.set(0, 0, w, h)
  216.     s[4] = Sprite.new(@viewport)
  217.     s[4].bitmap = Cache.system(BTSKIN_02)
  218.     s[4].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_02XY[0]
  219.     s[4].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_02XY[1]
  220.     s[4].z = 3
  221.     s[4].src_rect.set(0, h, w, h)
  222.     s[12] = 56
  223.     s[7] = Sprite_strNumbers.new(@viewport, BTSKIN_05, BTSKIN_05NS)
  224.     s[7].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_05XY[0]
  225.     s[7].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_05XY[1]
  226.     s[7].z = 5
  227.     s[14] = actor.mp
  228.     s[7].update(s[14])
  229.     # ステート
  230.     s[5] = Viewport.new(0, 0, BTSKIN_06WH[0], BTSKIN_06WH[1])
  231.     s[5].rect.x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_06XY[0] + @viewport.rect.x
  232.     s[5].rect.y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_06XY[1] + @viewport.rect.y
  233.     s[5].z = @viewport.z + 1
  234.     s[8] = Sprite.new(@viewport)
  235.     s[8].bitmap = Cache.system(BTSKIN_03)
  236.     s[8].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_03XY[0]
  237.     s[8].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_03XY[1]
  238.     s[8].z = -2
  239.     s[9] = Plane.new(s[5])
  240.     s[9].bitmap = draw_actor_state(actor)
  241.     s[10] = state_size(actor)
  242.     # 現在のステータスに
  243.     s[11] = ((@hpgw * (actor.hp / (actor.maxhp * 1.0))) + 1).truncate
  244.     if actor.maxmp != 0
  245.       s[12] = ((@mpgw * (actor.mp / (actor.maxmp * 1.0))) + 1).truncate
  246.     else
  247.       s[12] = 0
  248.     end
  249.     #s[15] = Sprite.new(@viewport)
  250.     #s[15].bitmap = name_bitmap(actor)
  251.     #s[15].x = @x[index] + 4
  252.     #s[15].y = @y[index] + 2
  253.     #s[15].z = 0
  254.     s[1].src_rect.width = s[11]
  255.     s[2].src_rect.width = s[11]
  256.     s[3].src_rect.width = s[12]
  257.     s[4].src_rect.width = s[12]
  258.     s[6].update(s[13])
  259.     s[7].update(s[14])
  260.     # 不可視に
  261.     for l in [0,1,2,3,4,8,9]
  262.       s[l].opacity = 0
  263.     end
  264.     for l in [6,7]
  265.       s[l].o = 0
  266.     end
  267.     # 情報記憶(actor, x, y, size = 151)
  268.     @s_lv[index] = actor.level
  269.     @s_party[index] = [actor.name, actor.hp, actor.maxhp,
  270.                        actor.mp, actor.maxmp, actor.states]
  271.     #
  272.     x = index * 161 - 20
  273.     y = 15
  274.     #draw_actor_baselevel(actor, x - 30, y + 67)
  275.     s[16] = Sprite.new
  276.     s[16].bitmap = Cache.system("Battle.Status_" + actor.name)
  277.     s[16].x = @x[index] - 56
  278.     s[16].y = @y[index] + 221
  279.     s[16].z = 0
  280.     end
  281.   #--------------------------------------------------------------------------
  282.   # ● オブジェクト開放
  283.   #--------------------------------------------------------------------------
  284.   def dispose      
  285.     super
  286.     return unless @f
  287.     for i in [email]0...@s_sprite.size[/email]
  288.       #for l in [0,1,2,3,4,8,9,15,16]
  289.       if @s_sprite[i][0]
  290.          @s_sprite[i][0].bitmap.dispose
  291.          @s_sprite[i][0].dispose
  292.       end
  293.       if @s_sprite[i][1]
  294.          @s_sprite[i][1].bitmap.dispose
  295.          @s_sprite[i][1].dispose
  296.       end
  297.       if @s_sprite[i][2]
  298.          @s_sprite[i][2].bitmap.dispose
  299.          @s_sprite[i][2].dispose
  300.       end
  301.       if @s_sprite[i][3]
  302.          @s_sprite[i][3].bitmap.dispose
  303.          @s_sprite[i][3].dispose
  304.       end
  305.       if @s_sprite[i][4]
  306.          @s_sprite[i][4].bitmap.dispose
  307.          @s_sprite[i][4].dispose
  308.       end
  309.       if @s_sprite[i][8]
  310.          @s_sprite[i][8].bitmap.dispose
  311.          @s_sprite[i][8].dispose
  312.       end
  313.       if @s_sprite[i][9]
  314.          @s_sprite[i][9].bitmap.dispose
  315.          @s_sprite[i][9].dispose
  316.       end
  317.       if @s_sprite[i][16]
  318.          @s_sprite[i][16].bitmap.dispose
  319.          @s_sprite[i][16].dispose
  320.       end
  321.       for l in [5,6,7]
  322.         @s_sprite[i][l].dispose
  323.       end
  324.     end
  325.     @@f = false
  326.   end
  327.   #--------------------------------------------------------------------------
  328.   # ● フレーム更新
  329.   #--------------------------------------------------------------------------
  330.   def update
  331.     super
  332.     return unless @f
  333.     for i in [email]0...@s_sprite.size[/email]
  334.       s = @s_sprite[i]
  335.       a = $game_party.members[i]
  336.       m = @s_party[i]
  337.       @state_opacity[i] = 0 if @state_opacity[i] == nil
  338.       # 不透明度アップ
  339.       @state_opacity[i] += 8
  340.       if [url=home.php?mod=space&uid=316553]@opacity[/url] < 272
  341.         @opacity += 8
  342.         for l in [0,1,2,3,4]
  343.           s[l].opacity = @opacity
  344.         end
  345.         for l in [6,7]
  346.           s[l].o = @opacity
  347.         end
  348.       end
  349.       # 名前更新
  350.       #if a.name != m[0]
  351.       #  s[15].bitmap.dispose
  352.       #  s[15].bitmap = name_bitmap(a)
  353.       #  m[0] = a.name
  354.       #end
  355.       # HP/MP更新
  356.       update_hp(s,a,m)
  357.       update_mp(s,a,m)
  358.       # ステート更新
  359.       if s[10] > BTSKIN_06WH[0] / 24 and (Graphics.frame_count % BTSKIN_06SC) == 0
  360.         s[9].ox += 1
  361.       end
  362.       if s[10] > 0 and @state_opacity[i] < 272
  363.         for l in [8,9]
  364.           s[l].opacity = @state_opacity[i]
  365.         end
  366.       end
  367.       if a.states != m[5]
  368.         m[5] = a.states
  369.         s[9].ox = 0
  370.         s[9].bitmap.dispose
  371.         s[9].bitmap = draw_actor_state($game_party.members[i])
  372.         s[10] = state_size($game_party.members[i])
  373.         @state_opacity[i] = 0
  374.         for l in [8,9]
  375.           s[l].opacity = @state_opacity[i]
  376.         end
  377.       end
  378.     end
  379.   end
  380.   #--------------------------------------------------------------------------
  381.   # ● フレーム更新 (HP)
  382.   #--------------------------------------------------------------------------
  383.   def update_hp(s,a,m)
  384.     # HPくるくる
  385.     if a.hp != s[13]
  386.       c = 0; c = 1 if a.hp < a.maxhp / 4; c = 2 if a.hp == 0
  387.       if s[13] > a.hp
  388.         s[13] -= BTSKIN_04SS
  389.         s[13] = a.hp if s[13] < a.hp
  390.       else
  391.         s[13] += BTSKIN_04SS
  392.         s[13] = a.hp if s[13] > a.hp
  393.       end
  394.       s[6].update(s[13], c)
  395.     end
  396.     # HP
  397.     if a.hp != m[1]
  398.       s[11] = ((@hpgw * (a.hp / (a.maxhp * 1.0))) + 1).truncate
  399.       m[1] = a.hp
  400.     end
  401.     sr = s[1].src_rect
  402.     if sr.width != s[11]
  403.       sp = BTSKIN_01GS
  404.       sr.width = (s[11] + (s[1].src_rect.width * (sp - 1))) / sp
  405.       sr.width = 2 if sr.width <= 1 and a.hp > 0
  406.     end
  407.     sr = s[2].src_rect
  408.     sp = 2
  409.     if sr.width != s[1].src_rect.width and (Graphics.frame_count % sp) == 0
  410.       if sr.width < s[1].src_rect.width
  411.         sr.width += 1
  412.       else
  413.         sr.width -= 1
  414.       end
  415.     end
  416.     sr.width = 2 if sr.width <= 1 and a.hp > 0
  417.   end
  418.   #--------------------------------------------------------------------------
  419.   # ● フレーム更新 (MP)
  420.   #--------------------------------------------------------------------------
  421.   def update_mp(s,a,m)
  422.     # MPくるくる
  423.     if a.mp != s[14]
  424.       c = 0; c = 1 if a.mp < a.maxmp / 4
  425.       if s[14] > a.mp
  426.         s[14] -= BTSKIN_05SS
  427.         s[14] = a.mp if s[14] < a.mp
  428.       else
  429.         s[14] += BTSKIN_05SS
  430.         s[14] = a.mp if s[14] > a.mp
  431.       end
  432.       s[7].update(s[14], c)
  433.     end
  434.     # MP
  435.     if a.mp != m[3]
  436.       if a.maxmp != 0
  437.         s[12] = ((@mpgw * (a.mp / (a.maxmp * 1.0))) + 1).truncate
  438.       else
  439.         s[12] = 0
  440.       end
  441.       m[3] = a.mp
  442.     end
  443.     sr = s[3].src_rect
  444.     if sr.width != s[12]
  445.       sp = BTSKIN_02GS
  446.       sr.width = (s[12] + (s[3].src_rect.width * (sp - 1))) / sp
  447.       sr.width = 2 if sr.width <= 1 and a.mp > 0
  448.     end
  449.     sr = s[4].src_rect
  450.     sp = 2
  451.     if sr.width != s[3].src_rect.width and (Graphics.frame_count % sp) == 0
  452.       if sr.width < s[3].src_rect.width
  453.         sr.width += 1
  454.       else
  455.         sr.width -= 1
  456.       end
  457.     end
  458.     sr.width = 2 if sr.width <= 1 and a.mp > 0
  459.   end
  460. end
  461.  
  462. #==============================================================================
  463. # ■ Sprite_strNumber
  464. #==============================================================================
  465. class Sprite_strNumber < Sprite
  466.   #--------------------------------------------------------------------------
  467.   # ● オブジェクト初期化
  468.   #--------------------------------------------------------------------------
  469.   def initialize(v, gra, n = 0)
  470.     @n = n
  471.     super(v)
  472.     self.bitmap = Cache.system(gra)
  473.     [url=home.php?mod=space&uid=133944]@w[/url] = self.bitmap.width/10
  474.     @h = self.bitmap.height/3
  475.     self.src_rect = Rect.new(@n*@w, 0, @w, @h)
  476.   end
  477.   #--------------------------------------------------------------------------
  478.   # ● フレーム更新
  479.   #--------------------------------------------------------------------------
  480.   def update(n = -1, c = 0)
  481.     @n = n
  482.     self.src_rect.x = @n*@w
  483.     self.src_rect.y = c*@h
  484.   end
  485. end
  486. #==============================================================================
  487. # ■ Sprite_strNumbers
  488. #==============================================================================
  489. class Sprite_strNumbers
  490.   attr_accessor :x
  491.   attr_accessor :y
  492.   attr_accessor :z
  493.   attr_accessor :o
  494.   #--------------------------------------------------------------------------
  495.   # ● オブジェクト初期化
  496.   #--------------------------------------------------------------------------
  497.   def initialize(v, gra, n = 4, s = 0)
  498.     @n = n # 桁数
  499.     @x = 0
  500.     @y = 0
  501.     @z = 0
  502.     @o = 255
  503.     [url=home.php?mod=space&uid=114926]@sprite[/url] = []
  504.     # 字間設定
  505.     b = Cache.system(gra)
  506.     @s = b.width / 10 - s
  507.     # スプライト作成
  508.     for i in 0...n
  509.       @sprite[i] = Sprite_strNumber.new(v, gra)
  510.     end
  511.     update
  512.   end
  513.   #--------------------------------------------------------------------------
  514.   # ● フレーム更新
  515.   #--------------------------------------------------------------------------
  516.   def update(v = 0, c = 0)
  517.     val = []
  518.     # 数値を配列に格納
  519.     for i in 0...@n
  520.       if (10 ** (i)) == 0
  521.         val[i] = v % 10
  522.       else
  523.         val[i] = v / (10 ** (i)) % 10
  524.       end
  525.     end
  526.     val = val.reverse
  527.     # 先頭の0を取り除く
  528.     for i in 0...@n
  529.       if val[i] == 0 and @n != i + 1
  530.         val[i] = -1
  531.       else
  532.         break
  533.       end
  534.     end
  535.     # スプライト更新
  536.     for i in 0...@n
  537.       @sprite[i].update(val[i], c)
  538.       @sprite[i].x = @x + (i * @s)
  539.       @sprite[i].y = @y
  540.       @sprite[i].z = @z
  541.       @sprite[i].opacity = @o
  542.     end
  543.   end
  544.   #--------------------------------------------------------------------------
  545.   # ● 不透明度の適用
  546.   #--------------------------------------------------------------------------
  547.   def o=(val)
  548.     @o = val
  549.     for i in 0...@n
  550.       @sprite[i].opacity = @o
  551.     end
  552.   end
  553.   #--------------------------------------------------------------------------
  554.   # ● オブジェクト開放
  555.   #--------------------------------------------------------------------------
  556.   def dispose
  557.     for i in [email]0...@sprite.size[/email]
  558.       @sprite[i].bitmap.dispose
  559.       @sprite[i].dispose
  560.     end
  561.   end
  562. end
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-13 16:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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