赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 14848 |
最后登录 | 2017-11-25 |
在线时间 | 45 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 60
- 在线时间
- 45 小时
- 注册时间
- 2006-8-23
- 帖子
- 303
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
在main前加入以下脚本
- class Game_Actor < Game_Battler
- def now_exp
- return @exp - @exp_list[@level]
- end
- def next_exp
- return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
- end
- end
- #==============================================================================
- # ■ ARPG_Actor
- #------------------------------------------------------------------------------
- # 处理ARPG角色的类。
- #==============================================================================
- class ARPG_Actor
- #--------------------------------------------------------------------------
- # ● 初始化对象
- #--------------------------------------------------------------------------
- def initialize
- @actor = $game_party.actors[0]
- @hp = $game_party.actors[0].hp
- @sp = $game_party.actors[0].sp
- @exp = $game_party.actors[0].now_exp
- @states = $game_party.actors[0].states
- @parameter = []
- #Mess_Text.visible = true
- #Mess_Text.ini
- end
- #--------------------------------------------------------------------------
- # ● 生成精灵的实例
- #--------------------------------------------------------------------------
- def make_sprite
-
- @parameter[0] = Sprite.new
- @parameter[0].bitmap = Bitmap.new(150,120)
- @parameter[0].bitmap.blt(0,0,RPG::Cache.picture("l1"),Rect.new(0,0,150,120))
- @parameter[0].x = 30;@parameter[0].y = 355
-
- @parameter[1] = Sprite.new
- @parameter[1].bitmap = Bitmap.new(400,300)
- @parameter[1].bitmap.blt(0,0,RPG::Cache.picture("01"),Rect.new(0,0,400,300))
- @parameter[1].x = 0;@parameter[1].y = 180
-
- @parameter[2] = Sprite.new
- @parameter[2].bitmap = Bitmap.new(400,300)
- @parameter[2].bitmap.blt(0,0,RPG::Cache.picture("04"),Rect.new(0,0,233,300))
- h = $game_party.actors[0].hp * 233 / $game_party.actors[0].maxhp
- @parameter[2].bitmap.blt(0,0,RPG::Cache.picture("042"),Rect.new(0,0,h,300))
- @parameter[2].x = 143;@parameter[2].y = 180
-
- @parameter[3] = Sprite.new
- @parameter[3].bitmap = Bitmap.new(400,300)
- @parameter[3].bitmap.blt(0,0,RPG::Cache.picture("03"),Rect.new(0,0,237 ,300))
- h = $game_party.actors[0].sp * 237 / $game_party.actors[0].maxsp
- @parameter[3].bitmap.blt(0,0,RPG::Cache.picture("032"),Rect.new(0,0,h,300))
- @parameter[3].x = 143;@parameter[3].y = 180
-
- @parameter[4] = Sprite.new
- @parameter[4].bitmap = Bitmap.new(400,300)
- @parameter[4].bitmap.blt(0,0,RPG::Cache.picture("02"),Rect.new(0,0,256,300))
- h = $game_party.actors[0].now_exp * 256 / $game_party.actors[0].next_exp
- @parameter[4].bitmap.blt(0,0,RPG::Cache.picture("022"),Rect.new(0,0,h,300))
- @parameter[4].x = 125;@parameter[4].y = 180
-
- @parameter[5] = Sprite.new
- @parameter[5].bitmap = Bitmap.new(400,300)
- @parameter[5].bitmap.blt(0,0,RPG::Cache.picture("001"),Rect.new(0,0,400,300))
- @parameter[5].x = 0;@parameter[5].y = 180
-
-
- @parameter.each{|e|e.z += 1}
-
- @parameter[6] = Sprite.new
- @parameter[6].bitmap = Bitmap.new(128,32)
- @parameter[6].x = 128
- @parameter[6].y = 480 - 32
-
- draw_actor_state(@actor,0,0)
-
- @parameter.each{|e|e.z += 2}
-
- end
- #--------------------------------------------------------------------------
- # ● 描绘状态
- # actor : 角色
- # x : 描画目标 X 坐标
- # y : 描画目标 Y 坐标
- # width : 描画目标的宽
- #--------------------------------------------------------------------------
- def draw_actor_state(actor, x, y, width = 120)
- pos = 0
- for i in @actor.states
- if $data_states[i].name == "战斗不能"
- next
- end
- bitmap = RPG::Cache.icon($data_states[i].name)
- @parameter[6].bitmap.blt(x+pos*bitmap.width, y, bitmap, Rect.new(0,0,bitmap.width,bitmap.height))
- pos += 1
- end
- end
- #--------------------------------------------------------------------------
- # ● 更新数值变化
- #--------------------------------------------------------------------------
- def refresh(type)
- case type
- when 0
- @parameter[2].bitmap.clear
- @parameter[2].bitmap.blt(0,0,RPG::Cache.picture("04"),Rect.new(0,0,233,300))
- h = @hp * 233 / $game_party.actors[0].maxhp
- @parameter[2].bitmap.blt(0,0,RPG::Cache.picture("042"),Rect.new(0,0,h,300))
- return
- when 1
- @parameter[3].bitmap.clear
- @parameter[3].bitmap.blt(0,0,RPG::Cache.picture("03"),Rect.new(0,0,237,300))
- h = @sp * 237 / $game_party.actors[0].maxsp
- @parameter[3].bitmap.blt(0,0,RPG::Cache.picture("032"),Rect.new(0,0,h,300))
- return
- when 2
- @parameter[4].bitmap.clear
- @parameter[4].bitmap.blt(0,0,RPG::Cache.picture("02"),Rect.new(0,0,256,300))
- h = @exp * 256 / $game_party.actors[0].next_exp
- @parameter[4].bitmap.blt(0,0,RPG::Cache.picture("022"),Rect.new(0,0,h,300))
- return
- when 3
- @parameter[6].bitmap.clear
- draw_actor_state(@actor,0,0)
- @states = $game_party.actors[0].states
- return
- end
- end
-
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def update
- Mess_Text.update
- if $refresh["states"]
- refresh(3)
- $refresh["states"] = false
- end
- if $refresh["item"]
- @item_window.refresh(@actor)
- $refresh["item"] = false
- end
- if $refresh["skill"]
- @key_window.refresh(@actor)
- $refresh["skill"] = false
- end
- if @actor.states.size > 0
- for i in @actor.states
- if @actor.states_time[i] > 0
- @actor.states_time[i] -= 1
- end
- if @actor.states_time[i] <= 0
- @actor.remove_state(i)
- end
- end
- if @actor.states.size > 0 and Graphics.frame_count%10 == 0
- $game_party.check_map_slip_damage
- end
- end
- if Input.trigger?(Input::CTRL)
- Mess_Text.clear
- return
- end
- if Input.trigger?(Input::SHIFT)
- Mess_Text.visible = !Mess_Text.visible
- return
- end
- if @hp != $game_party.actors[0].hp
- if @hp > $game_party.actors[0].hp
- @hp -= 1
- end
- if @hp < $game_party.actors[0].hp
- @hp += 1
- end
- refresh(0)
- end
- if @sp != $game_party.actors[0].sp
- if @sp > $game_party.actors[0].sp
- @sp -= 1
- end
- if @sp < $game_party.actors[0].sp
- @sp += 1
- end
- refresh(1)
- end
- if @exp != $game_party.actors[0].now_exp
- if @exp > $game_party.actors[0].now_exp
- @exp -= 1
- end
- if @exp < $game_party.actors[0].now_exp
- @exp += 1
- end
- refresh(2)
- end
- end
-
- end
复制代码
和
- module RPG
- class Sprite < ::Sprite
- def initialize(viewport = nil)
- super(viewport)
- @_whiten_duration = 0
- @_appear_duration = 0
- @_escape_duration = 0
- @_collapse_duration = 0
- @_damage_duration = 0
- @_animation_duration = 0
- @_blink = false
- @_damage = []
- end
- def dispose_damage
- for damage in @_damage
- damage[0].bitmap.dispose
- damage[0].dispose
- @_damage.delete(damage)
- end
- end
- def damage(value, critical)
- dispose_damage
- if value.is_a?(Numeric)
- damage_string = value.abs.to_s
- else
- damage_string = value.to_s
- end
- bitmap = Bitmap.new(160, 48)
- bitmap.font.name = "Arial Black"
- bitmap.font.size = 20
- bitmap.font.color.set(0, 0, 0)
- bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
- bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
- bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
- bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
- if value.is_a?(Numeric) and value < 0
- bitmap.font.color.set(176, 255, 144)
- else
- bitmap.font.color.set(255, 0, 0)
- end
- bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
- if critical
- bitmap.font.size = 20
- bitmap.font.color.set(0, 0, 0)
- bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
- bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
- bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
- bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
- bitmap.font.color.set(255, 255, 255)
- bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
- end
- num = @_damage.size
- @_damage.push([::Sprite.new, 40, 0, rand(20) - 10, rand(20) + 40])
- @_damage[num][0].bitmap = bitmap
- @_damage[num][0].ox = 80 + self.viewport.ox
- @_damage[num][0].oy = 20 + self.viewport.oy
- @_damage[num][0].x = self.x
- @_damage[num][0].y = self.y - self.oy / 2
- end
- def dispose_animation
- if @_animation_sprites != nil
- #sprite = @_animation_sprites[0]
- #if sprite != nil
- # @@_reference_count[sprite.bitmap] -= 1
- #if @@_reference_count[sprite.bitmap] == 0
- # sprite.bitmap.dispose
- #end
- #end
- for sprite in @_animation_sprites
- sprite.dispose
- end
- @_animation_sprites = nil
- @_animation = nil
- end
- end
- def dispose_animation
- if @_animation_sprites != nil
- #sprite = @_animation_sprites[0]
- #if sprite != nil
- # @@_reference_count[sprite.bitmap] -= 1
- #if @@_reference_count[sprite.bitmap] == 0
- # sprite.bitmap.dispose
- #end
- #end
- for sprite in @_animation_sprites
- sprite.dispose
- end
- @_animation_sprites = nil
- @_animation = nil
- end
- end
- def update
- super
- if @_whiten_duration > 0
- @_whiten_duration -= 1
- self.color.alpha = 128 - (16 - @_whiten_duration) * 10
- end
- if @_appear_duration > 0
- @_appear_duration -= 1
- self.opacity = (16 - @_appear_duration) * 16
- end
- if @_escape_duration > 0
- @_escape_duration -= 1
- self.opacity = 256 - (32 - @_escape_duration) * 10
- end
- if @_collapse_duration > 0
- @_collapse_duration -= 1
- self.opacity = 256 - (48 - @_collapse_duration) * 6
- end
- for damage in @_damage
- if damage[1] > 0
- damage[1] -= 1
- damage[4] -= 3
- damage[2] -= damage[4]
- damage[0].x = self.x + (40 - damage[1]) * damage[3] / 10
- damage[0].y = self.y - self.oy / 2 + damage[2] / 10
- damage[0].z = 2960 + damage[1]
- damage[0].opacity = 256 - (12 - damage[1]) * 32
- if damage[1] == 0
- damage[0].bitmap.dispose
- damage[0].dispose
- @_damage.delete(damage)
- end
- end
- end
- if @_animation != nil and (Graphics.frame_count % 2 == 0)
- @_animation_duration -= 1
- update_animation
- end
- if @_loop_animation != nil and (Graphics.frame_count % 2 == 0)
- update_loop_animation
- @_loop_animation_index += 1
- @_loop_animation_index %= @_loop_animation.frame_max
- end
- if @_blink
- @_blink_count = (@_blink_count + 1) % 32
- if @_blink_count < 16
- alpha = (16 - @_blink_count) * 6
- else
- alpha = (@_blink_count - 16) * 6
- end
- self.color.set(255, 255, 255, alpha)
- end
- @@_animations.clear
- end
- end
- end
复制代码
而运行游戏时也看不到血条,
还差些什么? |
|