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

Project1

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

[已经解决] 角色第二次战斗还是死亡动态图

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1556
在线时间
626 小时
注册时间
2010-8-5
帖子
451
跳转到指定楼层
1
发表于 2014-10-16 22:26:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我把大于20的角色设置成死亡后,第二次战斗时回复全状态.但是问题来了,虽然实现了效果

但是第一场战斗中 角色死亡后 呈现 死亡图,第二次战斗开始的样子还是 死亡图,行动后才变成待机图。

请问要在哪地方修改?这个是第二次战斗时回复全状态脚本
RUBY 代码复制
  1. class Scene_Battle
  2.   def initialize
  3.     #recover_hpsp
  4.   end
  5.  
  6.   def recover_hpsp
  7.     #baby = []
  8.     #for baby_id in 21..50
  9.     #  baby << $game_actors[baby_id]
  10.     #end
  11.     for actor in $game_party.actors# + baby
  12.       if actor.dead?
  13.         actor.states.delete(1)
  14.         if actor.id < 20
  15.           actor.hp = Integer(actor.maxhp * 0.05)
  16.           actor.sp = Integer(actor.maxsp * 0.05)
  17.         elsif actor.id > 20
  18.           actor.hp = actor.maxhp
  19.           actor.sp = actor.maxsp
  20.         end
  21.         actor.hp = 1 if actor.hp < 1
  22.         actor.sp = 1 if actor.sp < 1
  23.       end
  24.     end
  25.   end
  26.  
  27.   alias battle_end_recover_hpsp battle_end
  28.   def battle_end(result)
  29.     battle_end_recover_hpsp(result)
  30.     recover_hpsp
  31.   end
  32. end


这个是Sprite_Battler
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Sprite_Battler
  3. #------------------------------------------------------------------------------
  4. #  战斗显示用活动块。Game_Battler 类的实例监视、
  5. # 活动块的状态的监视。
  6. #==============================================================================
  7.  
  8. class Sprite_Battler < RPG::Sprite
  9.   #--------------------------------------------------------------------------
  10.   # ● 定义实例变量
  11.   #--------------------------------------------------------------------------
  12.   attr_accessor :battler                  # 战斗者
  13.   attr_accessor :select_index
  14.   #--------------------------------------------------------------------------
  15.   # ● 初始化对像
  16.   #     viewport : 显示端口
  17.   #     battler  : 战斗者 (Game_Battler)
  18.   #--------------------------------------------------------------------------
  19.   def initialize(viewport, battler = nil)
  20.     super(viewport)
  21.     [url=home.php?mod=space&uid=133701]@battler[/url] = battler
  22.     @battler_visible = false
  23.     @number = 0
  24.     @sprite_contens = Sprite.new#(viewport)
  25.     @sprite_contens.x = 0
  26.     @sprite_contens.y = 0
  27.     @sprite_contens.z = 0
  28.     @sprite_contens.bitmap = Bitmap.new(640,480)
  29.     @select_index = -1
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● 释放
  33.   #--------------------------------------------------------------------------
  34.   def dispose
  35.  
  36.     if self.bitmap != nil
  37.       self.bitmap.dispose
  38.     end
  39.     if @sprite_contens.bitmap != nil
  40.       @sprite_contens.bitmap.dispose
  41.     end
  42.     super
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● 战斗中名字的描绘
  46.   #--------------------------------------------------------------------------
  47.   def draw_actor_name(actor, x, y)
  48.     @sprite_contens.bitmap.font.color = Color.new(0, 230, 50, 255)
  49.     @sprite_contens.bitmap.font.size = 16
  50.     @sprite_contens.bitmap.draw_text(x, y, 60, 65, actor.name,1)
  51.     @sprite_contens.z = 9
  52.   end
  53.   #--------------------------------------------------------------------------
  54.   # ● 战斗血条描绘
  55.   #--------------------------------------------------------------------------
  56.   def draw_battle_hp(actor, x, y)
  57.     # 底图描绘
  58.     battle_hp_bitmap = RPG::Cache.picture("战斗条框")
  59.     src_rect = Rect.new(0, 0, battle_hp_bitmap.width, battle_hp_bitmap.height)
  60.     @sprite_contens.bitmap.blt(x+12, y+41, battle_hp_bitmap, src_rect)
  61.     @sprite_contens.z = 999
  62.     # 血条显示
  63.     battle_hp_bitmap = RPG::Cache.picture("战斗血条")
  64.     hp_width = battle_hp_bitmap.width * actor.hp / actor.maxhp
  65.     src_rect = Rect.new(0, 0, hp_width, battle_hp_bitmap.height)
  66.     @sprite_contens.bitmap.blt(x+13, y+42, battle_hp_bitmap, src_rect)
  67.     @sprite_contens.z = 999
  68.  
  69.   end
  70.  
  71.   #--------------------------------------------------------------------------
  72.   # ● 刷新画面
  73.   #--------------------------------------------------------------------------
  74.   def update
  75.     super
  76.  
  77.       #刷新战斗血条
  78.     if @battler.is_a?(Game_Actor)
  79.       if not @sprite_contens.disposed?
  80.         if @battler_hp == 0 and not @battler.dead?
  81.           @sprite_contens.bitmap.clear
  82.           @sprite_contens.x = @battler.screen_x
  83.           @sprite_contens.y = @battler.screen_y
  84.           @sprite_contens.z = @battler.screen_z + 10
  85.           draw_actor_name(@battler, 0, 0)
  86.           #draw_battle_sp(@battler, 0, 27)
  87.           draw_battle_hp(@battler, 0, 0)
  88.           @battler_hp = @battler.hp
  89.         end
  90.         if @wait_count.to_i != 0
  91.           @sprite_contens.visible = false
  92.         else
  93.           @sprite_contens.visible = true
  94.         end
  95.       end
  96.     elsif @battler.is_a?(Game_Enemy)
  97.       unless @sprite_contens.disposed?
  98.         if @battler.hp0?
  99.           @sprite_contens.bitmap.clear
  100.         end
  101.       if @wait_count.to_i != 0
  102.         @sprite_contens.visible = false
  103.       else
  104.         @sprite_contens.visible = true
  105.       end
  106.       end
  107.     end
  108.  
  109.  
  110.     # 战斗者为 nil 的情况下
  111.     if @battler == nil
  112.       self.bitmap = nil
  113.       loop_animation(nil)
  114.       return
  115.     end
  116.     # 文件名和色相与当前情况有差异的情况下
  117.     if @battler.battler_name != @battler_name or
  118.        @battler.battler_hue != @battler_hue
  119.       # 获取、设置位图
  120.       @battler_name = @battler.battler_name
  121.       @battler_hue = @battler.battler_hue
  122.       self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
  123.       @width = bitmap.width
  124.       [url=home.php?mod=space&uid=291977]@height[/url] = bitmap.height
  125.       self.ox = @width / 2
  126.       self.oy = @height
  127.       # 如果是战斗不能或者是隐藏状态就把透明度设置成 0
  128.       if @battler.dead? or @battler.hidden
  129.         self.opacity = 0
  130.       end
  131.     end
  132.     if @battler.startactive == "移动" or @battler.startactive == "返回" or @battler.startactive == "挨打" or @battler.startactive == "防御" or @battler.startactive == "死亡"
  133.       if Graphics.frame_count % 2 == 0
  134.         unless BattlerName[@battler.file_name].nil?
  135.           @number = (@number + 1) % BattlerName[@battler.file_name][@battler.startactive].size
  136.           self.bitmap = RPG::Cache.battler(BattlerName[@battler.file_name][@battler.startactive][@number], @battler_hue)
  137.           #Graphics.update
  138.         end
  139.       end
  140.     else
  141.       if Graphics.frame_count % 3 == 0
  142.         unless BattlerName[@battler.file_name].nil?
  143.           @number = (@number + 1) % BattlerName[@battler.file_name][@battler.startactive].size
  144.           self.bitmap = RPG::Cache.battler(BattlerName[@battler.file_name][@battler.startactive][@number], @battler_hue)
  145.         end
  146.       end
  147.     end
  148.     if @a != 1
  149. Mouse.set_bitmap("4.ani",[0,0,11,1])
  150. @a = 1
  151. end
  152.  
  153.     x, y = Mouse.get_mouse_pos
  154.     if  x >= self.x - self.ox and x <= self.x + self.ox and y >= self.y - self.oy and y <= self.y and
  155.         self.bitmap.get_pixel(x - self.x + self.ox + self.src_rect.x, y - self.y + self.oy + self.src_rect.y).alpha > 0
  156.        self.tone.set(80, 80, 80)
  157.        @sprite_contens.bitmap.font.color = Color.new(0,30, 50, 0)
  158.          if @battler.is_a?(Game_Enemy)
  159.            # 这里修改光标,攻击敌人的光标什么名i在?4
  160.            if $Battle_Skill_Select or $Battle_Item_Select
  161.           #  Mouse.mouse_cursor("5.ani",[0,0,11,1])
  162.            else
  163.           #  Mouse.mouse_cursor("4.ani",[0,0,11,1])
  164.            end
  165.            if Mouse.trigger?(0x01)
  166.              $select_index = @battler.index
  167.            end
  168.          else
  169.           if $Battle_Skill_Select or $Battle_Item_Select
  170.           #  Mouse.mouse_cursor("5.ani",[0,0,11,1])
  171.           end   
  172.          end
  173.     else
  174.        self.tone.set(0, 0, 0)
  175.        # 复原普通鼠标
  176.    #    Mouse.mouse_cursor("mouse.ani",[0,0,11,1])   
  177.     end
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.     # 动画 ID 与当前的情况有差异的情况下
  189.     if @battler.damage == nil and #音乐咩。。。
  190.        @battler.state_animation_id != @state_animation_id
  191.       @state_animation_id = @battler.state_animation_id
  192.       loop_animation($data_animations[@state_animation_id])
  193.     end
  194.  
  195.     # 不可见的情况下
  196.     unless @battler_visible
  197.     # 出现
  198.       if not @battler.hidden and not @battler.dead? and
  199.          (@battler.damage == nil or @battler.damage_pop)
  200.         appear
  201.         @battler_visible = true
  202.       end
  203.     end
  204.     # 可见的情况下
  205.     if @battler_visible
  206.       # 逃跑
  207.       if @battler.hidden
  208.         $game_system.se_play($data_system.escape_se)
  209.         escape
  210.         @battler_visible = false
  211.       end
  212.       # 白色闪烁
  213.       if @battler.white_flash
  214.         whiten
  215.         @battler.white_flash = false
  216.       end
  217.       # 动画
  218.       if @battler.animation_id != 0
  219.         animation = $data_animations[@battler.animation_id]
  220.         animation(animation, @battler.animation_hit)
  221.         @battler.animation_id = 0
  222.       end
  223.       #伤害
  224. if @battler.damage_pop
  225.   if @battler.damage.is_a?(Numeric) and @battler.damage > 0
  226.     for i in 1..5
  227.       self.x += @battler.is_a?(Game_Actor) ? 8 : -8
  228.       self.y += @battler.is_a?(Game_Actor) ? 5 : -5
  229.       Graphics.update
  230.     end
  231.     for i in 1..5
  232.       self.x += @battler.is_a?(Game_Actor) ? -8 : 8
  233.       self.y += @battler.is_a?(Game_Actor) ? -5 : 5
  234.       Graphics.update
  235.     end
  236.   end
  237.   damage(@battler.damage, @battler.critical)
  238.   @battler.damage = nil
  239.   @battler.critical = false
  240.   @battler.damage_pop = false
  241. end
  242.       # korapusu★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  243.       if @battler.damage == nil and @battler.dead?
  244.         if @battler.is_a?(Game_Enemy)
  245.           $game_system.se_play($data_system.enemy_collapse_se)
  246.           @battler.startactive = "静态"
  247.         else
  248.           $game_system.se_play($data_system.actor_collapse_se)
  249.          @battler.startactive = "静态"
  250.         end
  251.         @battler_visible = false
  252.       end
  253.     end
  254. # 设置活动块的坐标
  255.     self.x = @battler.screen_x
  256.     self.y = @battler.screen_y
  257.     self.z = @battler.screen_z
  258.     [url=home.php?mod=space&uid=287812]@mx[/url] = self.bitmap.height
  259.     if @battler.is_a?(Game_Actor)
  260.         @sprite_contens.bitmap.clear
  261.         @sprite_contens.x = @battler.screen_x - 30
  262.         @sprite_contens.y = @battler.screen_y  - @mx -  20
  263.         @sprite_contens.z = self.z
  264.         draw_actor_name(@battler, 0,@mx)
  265.         draw_battle_hp(@battler, 0,0)
  266.       elsif @battler.is_a?(Game_Enemy)
  267.         @sprite_contens.bitmap.clear
  268.         @sprite_contens.x = @battler.screen_x - 30
  269.         @sprite_contens.y = @battler.screen_y - 20
  270.         draw_actor_name(@battler, 0, 0)
  271.       end
  272.     end
  273.    end

Lv1.梦旅人

梦石
0
星屑
55
在线时间
218 小时
注册时间
2013-12-17
帖子
386
2
发表于 2014-10-17 20:33:53 | 只看该作者
尝试在第二次战斗回复的时候修改战斗者的状态。

点评

脚本贴上来了。。  发表于 2014-10-17 21:57
RM脚本定制/修改/整合 群:143356012(入群注明来意)
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

3
发表于 2014-10-18 15:45:07 | 只看该作者
先试试看第一次战斗死亡用技能物品复活后会不会变吧
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

幻想天神

梦石
0
星屑
55
在线时间
166 小时
注册时间
2012-3-24
帖子
404
4
发表于 2014-10-18 17:49:54 | 只看该作者
应该是提前修改战斗图吧。。吼吼
回复 支持 反对

使用道具 举报

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
5
发表于 2014-10-19 07:29:22 | 只看该作者
本帖最后由 恐惧剑刃 于 2014-10-19 07:31 编辑

如果删掉复活脚本可以恢复正常的话(我总觉得不太可能!!!!)请删掉def initialize 以及下方的end
可能是重定义了方法。其实这个复活脚本和真移位一点边都不沾不会冲突。


初始化检测
  1. class Scene_Battle
  2.   def initialize
  3.     for actor in $game_party.actors
  4.       if actor.exist?
  5.         actor.startactive = "待机"
  6.       end
  7.     end
  8.   end
  9. end
复制代码
如果加入此脚本可以修复此BUG说明是初始化的问题,
看看Game_Battler 1中initialize部分的 @startactive = "待机"。


除此以外想不到其他可能!

点评

代入那个代码就OK了  发表于 2014-10-20 17:06

评分

参与人数 1星屑 +150 收起 理由
RyanBern + 150 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 05:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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