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

Project1

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

[已经过期] 战斗中如何让角色死亡后变成死亡图块,而不是消失?

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
735
在线时间
4 小时
注册时间
2011-8-1
帖子
4
跳转到指定楼层
1
发表于 2011-9-4 10:06:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以下是工程的Spriteset_Battle和行走图作战斗图两个脚本,
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================


  4. #==============================================================================
  5. #冲突脚本:宠物脚本1.2版(66主页拿的宠物脚本应该都会冲突)
  6. #注意:以下一共有两个脚本,插入后就能达到战斗动画。
  7. #插入脚本后先进入游戏进行战斗一下,然后就会明白素材问题了
  8. #素材问题:脚本采用了战斗图自动选择行走图~~~
  9. #使用方法:插module RPG入main前即可
  10. #==============================================================================
  11. #==============================================================================
  12. # ■ Sprite_Battler
  13. #==============================================================================

  14. class Sprite_Battler < RPG::Sprite
  15. #--------------------------------------------------------------------------
  16. # ● instance变量
  17. #--------------------------------------------------------------------------
  18. attr_accessor :battler                  # butler
  19. #--------------------------------------------------------------------------
  20. # ● 初始化
  21. #     viewport : viewport
  22. #     battler  : butler(Game_Battler)
  23. #--------------------------------------------------------------------------
  24. def initialize(viewport, battler = nil)
  25.    super(viewport)
  26.    @battler = battler
  27.    @battler_visible = false
  28.    # 定义动画用变量
  29.    @hoko_wait = 0
  30.    @hoko_pattern = 0
  31. end
  32. #--------------------------------------------------------------------------
  33. # ● 解放
  34. #--------------------------------------------------------------------------
  35. def dispose
  36.    if self.bitmap != nil
  37.      self.bitmap.dispose
  38.    end
  39.    super
  40. end


  41. #--------------------------------------------------------------------------
  42. # ● 更新
  43. #--------------------------------------------------------------------------
  44. def update
  45.    super
  46.      # butler nil 的场合
  47.    if @battler == nil
  48.      self.bitmap = nil
  49.      loop_animation(nil)
  50.      return
  51.    end
  52.      # 如果文件名或者色相与现在的东西不同
  53.    if @battler.battler_name != @battler_name or
  54.       @battler.battler_hue != @battler_hue
  55.      # 取得位图设定
  56.      @battler_name = @battler.battler_name
  57.      @battler_hue = @battler.battler_hue

  58.      # battler→character变更
  59.      #self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
  60.      self.bitmap = RPG::Cache.character(@battler_name, @battler_hue)
  61.      @width = bitmap.width / 4
  62.      @height = bitmap.height / 4
  63.      self.ox = @width / 1.3
  64.      self.oy = bitmap.height - 28

  65.      if @battler.is_a?(Game_Actor)
  66.      self.src_rect.set(@hoko_pattern * @width, 96, @width, @height)
  67.      else  
  68.      self.src_rect.set(@hoko_pattern * @width, 48, @width, @height)
  69.      end
  70.    
  71.      # 战斗不能再隐藏要是状态把不透明度做为 0
  72.      if @battler.dead? or @battler.hidden and @_collapse_duration > 0
  73.        self.opacity = 255
  74.      end
  75.    end
  76.    # 如果动画ID与现在的东西有差异
  77.    if @battler.damage == nil and
  78.       @battler.state_animation_id != @state_animation_id
  79.      @state_animation_id = @battler.state_animation_id
  80.      loop_animation($data_animations[@state_animation_id])
  81.    end
  82.    # 应该被表示actor的场合
  83.    if @battler.is_a?(Game_Actor) and @battler_visible
  84.      # 不是主要阶段的时候把不透明度稍稍下降
  85.      if $game_temp.battle_main_phase
  86.        self.opacity += 3 if self.opacity < 255
  87.      else
  88.        self.opacity -= 3 if self.opacity > 207
  89.      end
  90.    end
  91.    # 闪烁
  92.    if @battler.blink
  93.      @battler.screen_x += 8 if @battler.is_a?(Game_Actor) and @battler.screen_x < 200
  94.      blink_on
  95.    elsif [email protected]
  96.      @battler.screen_x -= 8 if @battler.is_a?(Game_Actor) and @battler.screen_x > 160
  97.      @battler.screen_x += 8 if @battler.is_a?(Game_Enemy) and @battler.screen_x < 480
  98.      blink_off
  99.    end
  100.    
  101.    if @battler.is_a?(Game_Actor)
  102.    if @battler.forward and @battler.screen_x < 200
  103.    @battler.screen_x += 8  
  104.    end
  105.    elsif @battler.forward and @battler.screen_x > 440
  106.    @battler.screen_x -= 8
  107.    end

  108.    if @battler.zero
  109.    @hoko_pattern = 0
  110.    @battler.zero = false
  111.    end   
  112.    
  113.    
  114.    # 不可见的场合
  115.    unless @battler_visible
  116.      # 出现
  117.      if not @battler.hidden and not @battler.dead? and
  118.         (@battler.damage == nil or @battler.damage_pop)
  119.        appear
  120.        @battler_visible = true
  121.      end
  122.    end
  123.    # 可见的场合
  124.    if @battler_visible
  125.      # 逃走
  126.      if @battler.hidden
  127.        $game_system.se_play($data_system.escape_se)
  128.        escape
  129.        @battler_visible = false
  130.      end
  131.      # 白闪光
  132.      if @battler.white_flash
  133.        whiten
  134.        @battler.white_flash = false
  135.      end
  136.      # 动画
  137.      if @battler.animation_id != 0
  138.        animation = $data_animations[@battler.animation_id]
  139.        animation(animation, @battler.animation_hit)
  140.        @battler.animation_id = 0
  141.      end
  142.      # 损坏
  143.      if @battler.damage_pop
  144.        damage(@battler.damage, @battler.critical)
  145.        @battler.damage = nil
  146.        @battler.critical = false
  147.        @battler.damage_pop = false
  148.      end
  149.      # korapusu
  150.      if @battler.damage == nil and @battler.dead?
  151.        if @battler.is_a?(Game_Enemy)
  152.          $game_system.se_play($data_system.enemy_collapse_se)
  153.        else
  154.          $game_system.se_play($data_system.actor_collapse_se)
  155.        end
  156.        collapse
  157.        @battler_visible = false
  158.      end
  159.      # 行走动画
  160.      hoko_anime()
  161.      # p @hoko_pattern
  162.    end
  163.    # 设定行走图位置的坐标

  164.    self.x = @battler.screen_x + 7
  165.    self.y = @battler.screen_y + 108
  166.    self.z = @battler.screen_z
  167. end
  168. #--------------------------------------------------------------------------
  169. # ● 行走动画(@hoko_pattern * @width, 0, @width, @height)能设置行走图方向
  170. #--------------------------------------------------------------------------
  171. def hoko_anime()
  172.    @hoko_wait += 1
  173.    if @hoko_wait > 6
  174.      @hoko_wait = 0
  175.      @hoko_pattern += 1
  176.      if @hoko_pattern > 3
  177.        @hoko_pattern = 0
  178.      end
  179.     # if @battler.is_a?(Game_Actor)
  180.      self.src_rect.set(@hoko_pattern * @width, @battler.up_row, @width, @height)
  181.     # else  
  182.    #  self.src_rect.set(@hoko_pattern * @width, @battler.up_row, @width, @height)
  183.     # end
  184.     # self.src_rect.set(@hoko_pattern * @width, 0, @width, @height)
  185.    end
  186. end
  187. end
  188. #==============================================================================
  189. #冲突脚本:宠物脚本1.2版(66主页拿的宠物脚本应该都会冲突)
  190. #注意:以下一共有两个脚本,插入后就能达到战斗动画。
  191. #插入脚本后先进入游戏进行战斗一下,然后就会明白素材问题了
  192. #素材问题:脚本采用了战斗图自动选择行走图~~~
  193. #==============================================================================
  194. #==============================================================================
  195. # ■ Game_BattleAction
  196. #------------------------------------------------------------------------------
  197. #是处理动作 (战斗中的行动)的级。这个级在 Game_Battler kura# su内部被使用。
  198. #==============================================================================

  199. class Game_BattleAction
  200. #--------------------------------------------------------------------------
  201. # ● instance变量
  202. #--------------------------------------------------------------------------
  203. attr_accessor :speed                    # 速度
  204. attr_accessor :kind                     # 类别(基本/ 技艺 / 物品)
  205. attr_accessor :basic                    # 基本(攻击/防御/逃跑)
  206. attr_accessor :skill_id                 # 特技ID
  207. attr_accessor :item_id                  # 物品ID
  208. attr_accessor :target_index             # 对象禁书目录
  209. attr_accessor :forcing                  # 强制标志
  210. #--------------------------------------------------------------------------
  211. # ● 初始化
  212. #--------------------------------------------------------------------------
  213. def initialize
  214.    clear
  215. end
  216. #--------------------------------------------------------------------------
  217. # ● clearness
  218. #--------------------------------------------------------------------------
  219. def clear
  220.    @speed = 0
  221.    @kind = 0
  222.    @basic = 3
  223.    @skill_id = 0
  224.    @item_id = 0
  225.    @target_index = -1
  226.    @forcing = false
  227. end
  228. #--------------------------------------------------------------------------
  229. # ● 判断
  230. #--------------------------------------------------------------------------
  231. def valid?
  232.    return (not (@kind == 0 and @basic == 3))
  233. end
  234. #--------------------------------------------------------------------------
  235. # ● 单体判断
  236. #--------------------------------------------------------------------------
  237. def for_one_friend?
  238.    # 类别特技,效果范围包含伙伴单体(HP 0 的)场合
  239.    if @kind == 1 and [3, 5].include?($data_skills[@skill_id].scope)
  240.      return true
  241.    end
  242.    # 类别以条款,效果范围包含伙伴单体(HP 0 的)场合
  243.    if @kind == 2 and [3, 5].include?($data_items[@item_id].scope)
  244.      return true
  245.    end
  246.    return false
  247. end
  248. #--------------------------------------------------------------------------
  249. # ● 单体用(HP 0)判断
  250. #--------------------------------------------------------------------------
  251. def for_one_friend_hp0?
  252.    # 特技效果范围单体(HP 0 )的场合
  253.    if @kind == 1 and [5].include?($data_skills[@skill_id].scope)
  254.      return true
  255.    end
  256.    # 物品效果范围单体(HP 0 )的场合
  257.    if @kind == 2 and [5].include?($data_items[@item_id].scope)
  258.      return true
  259.    end
  260.    return false
  261. end
  262. #--------------------------------------------------------------------------
  263. # ● random目标 (actor用)
  264. #--------------------------------------------------------------------------
  265. def decide_random_target_for_actor
  266.    # 效果范围分歧
  267.    if for_one_friend_hp0?
  268.      battler = $game_party.random_target_actor_hp0
  269.    elsif for_one_friend?
  270.      battler = $game_party.random_target_actor
  271.    else
  272.      battler = $game_troop.random_target_enemy
  273.    end
  274. # 如果对象存在取得禁书目录,
  275. # 对象不存在的情况clearness动作
  276.    if battler != nil
  277.      @target_index = battler.index
  278.    else
  279.      clear
  280.    end
  281. end
  282. #--------------------------------------------------------------------------
  283. # ● random目标 (enemy用)
  284. #--------------------------------------------------------------------------
  285. def decide_random_target_for_enemy
  286.    # 效果范围分歧
  287.    if for_one_friend_hp0?
  288.      battler = $game_troop.random_target_enemy_hp0
  289.    elsif for_one_friend?
  290.      battler = $game_troop.random_target_enemy
  291.    else
  292.      battler = $game_party.random_target_actor
  293.    end
  294.    # 如果对象存在取得禁书目录,
  295.    # 对象不存在的情况clearness动作
  296.    if battler != nil
  297.      @target_index = battler.index
  298.    else
  299.      clear
  300.    end
  301. end
  302. #--------------------------------------------------------------------------
  303. # ● 最后目标 (actor)
  304. #--------------------------------------------------------------------------
  305. def decide_last_target_for_actor
  306.    # 单体actor效果范围,(enemy)
  307.    if @target_index == -1
  308.      battler = nil
  309.    elsif for_one_friend?
  310.      battler = $game_party.actors[@target_index]
  311.    else
  312.      battler = $game_troop.enemies[@target_index]
  313.    end
  314.    # 对象不存在的情况clearness动作
  315.    if battler == nil or not battler.exist?
  316.      clear
  317.    end
  318. end
  319. #--------------------------------------------------------------------------
  320. # ● 最后目标 (enemy)
  321. #--------------------------------------------------------------------------
  322. def decide_last_target_for_enemy
  323.    # 单体enemy效果范围 (actor)
  324.    if @target_index == -1
  325.      battler = nil
  326.    elsif for_one_friend?
  327.      battler = $game_troop.enemies[@target_index]
  328.    else
  329.      battler = $game_party.actors[@target_index]
  330.    end
  331.    # 对象不存在的情况clearness动作
  332.    if battler == nil or not battler.exist?
  333.      clear
  334.    end
  335. end
  336. end

  337. #==============================================================================
  338. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  339. #==============================================================================
复制代码
  1. #==============================================================================
  2. # ■ Spriteset_Battle
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的活动块的类。本类在 Scene_Battle 类
  5. # 的内部使用。
  6. #==============================================================================

  7. class Spriteset_Battle
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_reader   :viewport1                # 敌人方的显示端口
  12.   attr_reader   :viewport2                # 角色方的显示端口
  13.   #--------------------------------------------------------------------------
  14.   # ● 初始化变量
  15.   #--------------------------------------------------------------------------
  16.   def initialize
  17.     # 生成显示端口
  18.     @viewport1 = Viewport.new(0, 0, 640, 320)
  19.     @viewport2 = Viewport.new(0, 0, 640, 480)
  20.     @viewport3 = Viewport.new(0, 0, 640, 480)
  21.     @viewport4 = Viewport.new(0, 0, 640, 480)
  22.     @viewport2.z = 101
  23.     @viewport3.z = 200
  24.     @viewport4.z = 5000
  25.     # 生成战斗背景活动块
  26.     @battleback_sprite = Sprite.new(@viewport1)
  27.     # 生成敌人活动块
  28.     @enemy_sprites = []
  29.     for enemy in $game_troop.enemies.reverse
  30.       @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  31.     end
  32.     # 生成敌人活动块
  33.     @actor_sprites = []
  34.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  35.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  36.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  37.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  38.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  39.     # 生成天候
  40.     @weather = RPG::Weather.new(@viewport1)
  41.     # 生成图片活动块
  42.     @picture_sprites = []
  43.     for i in 51..100
  44.       @picture_sprites.push(Sprite_Picture.new(@viewport3,
  45.         $game_screen.pictures[i]))
  46.     end
  47.     # 生成计时器块
  48.     @timer_sprite = Sprite_Timer.new
  49.     # 刷新画面
  50.     update
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● 释放
  54.   #--------------------------------------------------------------------------
  55.   def dispose
  56.     # 如果战斗背景位图存在的情况下就释放
  57.     if @battleback_sprite.bitmap != nil
  58.       @battleback_sprite.bitmap.dispose
  59.     end
  60.     # 释放战斗背景活动块
  61.     @battleback_sprite.dispose
  62.     # 释放敌人活动块、角色活动块
  63.     for sprite in @enemy_sprites + @actor_sprites
  64.       sprite.dispose
  65.     end
  66.     # 释放天候
  67.     @weather.dispose
  68.     # 释放图片活动块
  69.     for sprite in @picture_sprites
  70.       sprite.dispose
  71.     end
  72.     # 释放计时器活动块
  73.     @timer_sprite.dispose
  74.     # 释放显示端口
  75.     @viewport1.dispose
  76.     @viewport2.dispose
  77.     @viewport3.dispose
  78.     @viewport4.dispose
  79.   end
  80.   #--------------------------------------------------------------------------
  81.   # ● 显示效果中判定
  82.   #--------------------------------------------------------------------------
  83.   def effect?
  84.     # 如果是在显示效果中的话就返回 true
  85.     for sprite in @enemy_sprites + @actor_sprites
  86.       return true if sprite.effect?
  87.     end
  88.     return false
  89.   end
  90.   #--------------------------------------------------------------------------
  91.   # ● 刷新画面
  92.   #--------------------------------------------------------------------------
  93.   def update
  94.     # 刷新角色的活动块 (对应角色的替换)
  95.     @actor_sprites[0].battler = $game_party.actors[0]
  96.     @actor_sprites[1].battler = $game_party.actors[1]
  97.     @actor_sprites[2].battler = $game_party.actors[2]
  98.     @actor_sprites[3].battler = $game_party.actors[3]
  99.     @actor_sprites[4].battler = $game_party.actors[4]
  100.     # 战斗背景的文件名与现在情况有差异的情况下
  101.     if @battleback_name != $game_temp.battleback_name
  102.       @battleback_name = $game_temp.battleback_name
  103.       if @battleback_sprite.bitmap != nil
  104.         @battleback_sprite.bitmap.dispose
  105.       end
  106.       @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
  107.       @battleback_sprite.src_rect.set(0, 0, 640, 320)
  108.     end
  109.     # 刷新战斗者的活动块
  110.     for sprite in @enemy_sprites + @actor_sprites
  111.       sprite.update
  112.     end
  113.     # 刷新天气图形
  114.     @weather.type = $game_screen.weather_type
  115.     @weather.max = $game_screen.weather_max
  116.     @weather.update
  117.     # 刷新图片活动块
  118.     for sprite in @picture_sprites
  119.       sprite.update
  120.     end
  121.     # 刷新计时器活动块
  122.     @timer_sprite.update
  123.     # 设置画面的色调与震动位置
  124.     @viewport1.tone = $game_screen.tone
  125.     @viewport1.ox = $game_screen.shake
  126.     # 设置画面的闪烁色
  127.     @viewport4.color = $game_screen.flash_color
  128.     # 刷新显示端口
  129.     @viewport1.update
  130.     @viewport2.update
  131.     @viewport4.update
  132.   end
  133. end
复制代码
我想让角色死亡后变成死亡图块,而不是消失。

Lv1.梦旅人

梦石
0
星屑
735
在线时间
4 小时
注册时间
2011-8-1
帖子
4
2
 楼主| 发表于 2011-9-4 10:08:12 | 只看该作者
忘了一点,队员战斗虚弱后,显示虚弱图块,但加满血后开始战斗还是虚弱图块,战斗一回合后才能恢复。
求助各位帮忙解决,我是新手。
回复

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
136 小时
注册时间
2011-8-15
帖子
321
3
发表于 2011-9-4 12:31:29 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-26 11:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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