Project1

标题: 夜想曲的血條圖 [打印本页]

作者: fgsky    时间: 2008-11-17 02:09
标题: 夜想曲的血條圖
大家好。我想請問,就是夜想曲啊,它的血條圖是直式的。由上往下扣血的。

那我嘗試把圖改成橫條圖。想要由右向左扣血。結果我改了後,發現變成由左往右扣。

請問要怎麼改成從右往左扣呢?

  1. class Game_Actor < Game_Battler
  2. def now_exp
  3.    return @exp - @exp_list[@level]
  4. end
  5. def next_exp
  6.    return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
  7. end
  8. end
  9. #==============================================================================
  10. # ■ ARPG_Actor
  11. #------------------------------------------------------------------------------
  12. #  处理ARPG角色的类。
  13. #==============================================================================
  14. class ARPG_Actor
  15.   #--------------------------------------------------------------------------
  16.   # ● 初始化对象
  17.   #--------------------------------------------------------------------------
  18.   def initialize
  19.     @actor = $game_party.actors[0]
  20.     @hp = $game_party.actors[0].hp
  21.     @sp = $game_party.actors[0].sp
  22.     @exp = $game_party.actors[0].now_exp
  23.     @states = $game_party.actors[0].states
  24.     @parameter = []
  25.     #Mess_Text.visible = true
  26.     #Mess_Text.ini
  27.     steup
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 主处理
  31.   #--------------------------------------------------------------------------
  32.   def steup
  33.     make_sprite
  34.     if !$scene.is_a?(Scene_Key)
  35.       @key_window = Window_KeyCommand.new
  36.       @key_window.refresh($game_party.actors[0])
  37.     end
  38.     if !$scene.is_a?(Scene_Item_Key)
  39.       @item_window = Window_Item_KeyCommand.new
  40.       @item_window.refresh($game_party.actors[0])
  41.     end
  42.   end
  43.   def visible=(val)
  44.     @key_window.visible = val if !@key_window.nil?
  45.     @item_window.visible = val if !@item_window.nil?
  46.     @parameter.each{|pict|pict.visible = val}
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # ● 释放
  50.   #--------------------------------------------------------------------------
  51.   def dispose
  52.     #Mess_Text.dispose
  53.     #Mess_Text.visible = false
  54.     @key_window.dispose if !@key_window.nil?
  55.     @item_window.dispose if !@item_window.nil?
  56.     @parameter.each{|pict|pict.dispose}
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● 生成精灵的实例
  60.   #--------------------------------------------------------------------------
  61.   def make_sprite
  62.    
  63.     @parameter[0] = Sprite.new
  64.     @parameter[0].bitmap = Bitmap.new(100,100)
  65.     @parameter[0].bitmap.blt(0,0,RPG::Cache.picture("l1"),Rect.new(0,0,150,120))
  66.     @parameter[0].x = -10;@parameter[0].y = 10
  67.    
  68.     @parameter[1] = Sprite.new
  69.     @parameter[1].bitmap = Bitmap.new(150,120)
  70.     @parameter[1].bitmap.blt(0,0,RPG::Cache.picture("bar"),Rect.new(0,0,150,120))
  71.    
  72.     @parameter[2] = Sprite.new
  73.     @parameter[2].bitmap = Bitmap.new(61,83)
  74.     @parameter[2].bitmap.blt(0,0,RPG::Cache.picture("HP"),Rect.new(0,0,61,83))
  75.     h = $game_party.actors[0].hp * 82 / $game_party.actors[0].maxhp
  76.     @parameter[2].bitmap.blt(0,0,RPG::Cache.picture("HPoo"),Rect.new(0,0,61,82-h))
  77.     @parameter[2].x = 37;@parameter[2].y = 36
  78.    
  79.     @parameter[3] = Sprite.new
  80.     @parameter[3].bitmap = Bitmap.new(59,82)
  81.     @parameter[3].bitmap.blt(0,0,RPG::Cache.picture("SP"),Rect.new(0,0,59,82))
  82.     h = $game_party.actors[0].sp * 82 / $game_party.actors[0].maxsp
  83.     @parameter[3].bitmap.blt(0,0,RPG::Cache.picture("SPoo"),Rect.new(0,0,59,82-h))
  84.     @parameter[3].x = 64;@parameter[3].y = 36
  85.    
  86.     @parameter[4] = Sprite.new
  87.     @parameter[4].bitmap = Bitmap.new(59,82)
  88.     @parameter[4].bitmap.blt(0,0,RPG::Cache.picture("EXP"),Rect.new(0,0,59,82))
  89.     h = $game_party.actors[0].now_exp * 82 / $game_party.actors[0].next_exp
  90.     @parameter[4].bitmap.blt(0,0,RPG::Cache.picture("EXPoo"),Rect.new(0,0,59,82-h))
  91.     @parameter[4].x = 88;@parameter[4].y = 36
  92.    
  93.     @parameter.each{|e|e.z += 1}
  94.    
  95.     @parameter[5] = Sprite.new
  96.     @parameter[5].bitmap = Bitmap.new(128,32)
  97.     @parameter[5].x = 128
  98.     @parameter[5].y = 480 - 32
  99.    
  100.     draw_actor_state(@actor,0,0)
  101.    
  102.     @parameter.each{|e|e.z += 2}
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ● 描绘状态
  106.   #     actor : 角色
  107.   #     x     : 描画目标 X 坐标
  108.   #     y     : 描画目标 Y 坐标
  109.   #     width : 描画目标的宽
  110.   #--------------------------------------------------------------------------
  111.   def draw_actor_state(actor, x, y, width = 120)
  112.     pos = 0
  113.     for i in @actor.states
  114.       if $data_states[i].name == "战斗不能"
  115.         next
  116.       end
  117.       bitmap = RPG::Cache.icon($data_states[i].name)
  118.       @parameter[5].bitmap.blt(x+pos*bitmap.width, y, bitmap, Rect.new(0,0,bitmap.width,bitmap.height))
  119.     pos += 1
  120.     end
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● 更新数值变化
  124.   #--------------------------------------------------------------------------
  125.   def refresh(type)
  126.     case type
  127.     when 0
  128.       @parameter[2].bitmap.clear
  129.       @parameter[2].bitmap.blt(0,0,RPG::Cache.picture("HP"),Rect.new(0,0,61,83))
  130.       h = @hp * 82 / $game_party.actors[0].maxhp
  131.       @parameter[2].bitmap.blt(0,0,RPG::Cache.picture("HPoo"),Rect.new(0,0,61,82-h))
  132.       return
  133.     when 1
  134.       @parameter[3].bitmap.clear
  135.       @parameter[3].bitmap.blt(0,0,RPG::Cache.picture("SP"),Rect.new(0,0,59,82))
  136.       h = @sp * 82 / $game_party.actors[0].maxsp
  137.       @parameter[3].bitmap.blt(0,0,RPG::Cache.picture("SPoo"),Rect.new(0,0,59,82-h))
  138.       return
  139.     when 2
  140.       @parameter[4].bitmap.clear
  141.       @parameter[4].bitmap.blt(0,0,RPG::Cache.picture("EXP"),Rect.new(0,0,59,82))
  142.       h = @exp * 82 / $game_party.actors[0].next_exp
  143.       @parameter[4].bitmap.blt(0,0,RPG::Cache.picture("EXPoo"),Rect.new(0,0,59,82-h))
  144.       return
  145.      when 3
  146.        @parameter[5].bitmap.clear
  147.        draw_actor_state(@actor,0,0)
  148.        @states = $game_party.actors[0].states
  149.       return
  150.     end
  151.   end
  152.   #--------------------------------------------------------------------------
  153.   # ● 刷新
  154.   #--------------------------------------------------------------------------
  155.   def update
  156.     Mess_Text.update
  157.     if $refresh["states"]
  158.       refresh(3)
  159.       $refresh["states"] = false
  160.     end
  161.     if $refresh["item"]
  162.       @item_window.refresh(@actor)
  163.       $refresh["item"] = false
  164.     end
  165.     if $refresh["skill"]
  166.       @key_window.refresh(@actor)
  167.       $refresh["skill"] = false
  168.     end
  169.     if @actor.states.size > 0
  170.       for i in @actor.states
  171.         if @actor.states_time[i] > 0
  172.           @actor.states_time[i] -= 1
  173.         end
  174.         if @actor.states_time[i] <= 0
  175.           @actor.remove_state(i)
  176.         end
  177.       end
  178.       if @actor.states.size > 0 and Graphics.frame_count%10 == 0
  179.         $game_party.check_map_slip_damage
  180.       end
  181.     end
  182.     if Input.trigger?(Input::CTRL)
  183.       Mess_Text.clear
  184.       return
  185.     end
  186.     if Input.trigger?(Input::SHIFT)
  187.       Mess_Text.visible = !Mess_Text.visible
  188.       return
  189.     end
  190.     if @hp != $game_party.actors[0].hp
  191.       if @hp > $game_party.actors[0].hp
  192.         @hp -= 1
  193.       end
  194.       if @hp < $game_party.actors[0].hp
  195.         @hp += 1
  196.       end
  197.       refresh(0)
  198.     end
  199.     if @sp != $game_party.actors[0].sp
  200.       if @sp > $game_party.actors[0].sp
  201.         @sp -= 1
  202.       end
  203.       if @sp < $game_party.actors[0].sp
  204.         @sp += 1
  205.       end
  206.       refresh(1)
  207.     end
  208.     if @exp != $game_party.actors[0].now_exp
  209.       if @exp > $game_party.actors[0].now_exp
  210.         @exp -= 1
  211.       end
  212.       if @exp < $game_party.actors[0].now_exp
  213.         @exp += 1
  214.       end
  215.       refresh(2)
  216.     end
  217.   end
  218. end
复制代码


有用過夜想曲的朋友,幫忙解答一下吧。

[LINE]1,#dddddd[/LINE]此贴于 2008-11-19 12:17:15 被版主darkten提醒,请楼主看到后对本贴做出回应。
作者: hitlerson    时间: 2008-11-19 01:31
直接把整个东西再转180度算了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1