Project1

标题: 求一个效果,战斗中把角色隐藏的说。 [打印本页]

作者: 永劫的咎人    时间: 2007-6-23 19:53
提示: 作者被禁止或删除 内容自动屏蔽
作者: 永劫的咎人    时间: 2007-6-23 19:53
提示: 作者被禁止或删除 内容自动屏蔽
作者: 幻の飞鱼    时间: 2007-6-23 21:18
想起来是不错的效果
不知道以前有没有有人做过]

MS有个参数

@battler.hidden

类似默认死亡后的消失状态
作者: 暗之影    时间: 2007-6-23 21:35
提示: 作者被禁止或删除 内容自动屏蔽
作者: C0DE=6667    时间: 2007-6-23 21:41
提示: 作者被禁止或删除 内容自动屏蔽
作者: 幻の飞鱼    时间: 2007-6-23 21:48
哈哈,做了个类似的,默认只要使用特技就用这效果

只要再设置具体是几号特技就可以了

看范例~~~

不过……我自己也快搞不清楚具体改了哪里了

引如了新的参数,hidd

http://rpg.blue/upload_program/files/单P特效.rar
作者: 精灵使者    时间: 2007-6-23 21:53
能不能让人物有的在图片之上,有的在图片之下?我想要用这个。
作者: 幻の飞鱼    时间: 2007-6-23 21:58
以下引用精灵使者于2007-6-23 13:53:22的发言:

能不能让人物有的在图片之上,有的在图片之下?我想要用这个,

直接修改图片透明度就可以了,我那一基本已经做出效果了
作者: 精灵使者    时间: 2007-6-23 22:03
以下引用幻の飞鱼于2007-6-23 13:48:29的发言:

哈哈,做了个类似的,默认只要使用特技就用这效果

只要再设置具体是几号特技就可以了

看范例~~~

不过……我自己也快搞不清楚具体改了哪里了

引如了新的参数,hidd

http://rpg.blue/upload_program/files/单P特效.rar


[本贴由作者于 2007-6-23 13:52:12 最后编辑]

我用的是显示图片……因为r剧里面主角可能要放超杀
作者: 幻の飞鱼    时间: 2007-6-23 22:05
如果有主脚特写,那用显示图片方便
作者: 幻の飞鱼    时间: 2007-6-23 22:06
修改的部分如下
#==============================================================================
# ■ Sprite_Battler
#------------------------------------------------------------------------------
#  战斗显示用活动块。Game_Battler 类的实例监视、
# 活动块的状态的监视。
#==============================================================================

class Sprite_Battler < RPG::Sprite
…………
…………
…………
      # 如果是战斗不能或者是隐藏状态就把透明度设置成 0
      if @battler.dead? or @battler.hidden or @battler.hidd
        self.opacity = 0
      end
    end
…………
…………

      if not @battler.hidd and not @battler.hidden and not @battler.dead? and
         (@battler.damage == nil or @battler.damage_pop)
        appear
        @battler_visible = true
      end
    end
    # 可见的情况下
    if @battler_visible
      # 逃跑
     if @battler.hidd
        $game_system.se_play($data_system.escape_se)
        escape
        @battler_visible = false
      end

      if @battler.hidden
        $game_system.se_play($data_system.escape_se)
        escape
        @battler_visible = false
      end
……
……
……
作者: 幻の飞鱼    时间: 2007-6-23 22:09
class Game_Battler
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_reader   :battler_name             # 战斗者 文件名
  attr_reader   :battler_hue              # 战斗者 色相
  attr_reader   :hp                       # HP
  attr_reader   :sp                       # SP
  attr_reader   :states                   # 状态
  attr_accessor :hidden                   # 隐藏标志
  attr_accessor :hidd
  attr_accessor :immortal                 # 不死身标志
  attr_accessor :damage_pop               # 显示伤害标志
  attr_accessor :damage                   # 伤害值
  attr_accessor :critical                 # 会心一击标志
  attr_accessor :animation_id             # 动画 ID
  attr_accessor :animation_hit            # 动画 击中标志
  attr_accessor :white_flash              # 白色屏幕闪烁标志
  attr_accessor :blink                    # 闪烁标志

……

这下面要不要初始化一下不知道~我没写
作者: 幻の飞鱼    时间: 2007-6-23 22:09
Scene_Battle 4的

………………
  #--------------------------------------------------------------------------
  # ● 刷新画面 (主回合步骤 1 : 准备行动)
  #--------------------------------------------------------------------------
  def update_phase4_step1
    allshow
    # 隐藏帮助窗口
    @help_window.visible = false
    # 判定胜败
    if judge
      # 胜利或者失败的情况下 : 过程结束
      return
    end
……
……
  #--------------------------------------------------------------------------
  # ● 生成特技行动结果
  #--------------------------------------------------------------------------
  def make_skill_action_result
    # 获取特技
    @skill = $data_skills[@active_battler.current_action.skill_id]
……
……
    # 应用特技效果
    allhidd
    for target in @target_battlers
      target.hidd = false
      target.skill_effect(@active_battler, @skill)
    end
  end

然后再添加两个方法



  def allhidd
    for actor in $game_party.actors
      next if actor == @active_battler
      actor.hidd = true
    end
    for enemy in $game_troop.enemies
      enemy.hidd = true
    end
  end
  
  def allshow
    for actor in $game_party.actors
      next if actor == @active_battler
      actor.hidd = false
    end
    for enemy in $game_troop.enemies
      enemy.hidd = false
    end
  end

作者: 永劫的咎人    时间: 2007-6-23 22:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2007-6-23 22:16
看来r剧里面有必要作一个黑屏来单独显示特效了……我这里地图战斗的说……
作者: 幻の飞鱼    时间: 2007-6-23 22:23

Scene_Battle 4
那里的allhide写成这样
就可以选择是哪些特技用这个效果
比如7号和57号就这样,其他的继续加就可以了

allhidd if [7,57].include?(@skill.id)
作者: 永劫的咎人    时间: 2007-6-23 23:05
提示: 作者被禁止或删除 内容自动屏蔽
作者: 幻の飞鱼    时间: 2007-6-23 23:06
以下引用永劫的咎人于2007-6-23 15:05:21的发言:

敌人使用特技出错。

晕,我拿幽灵做的测试,忘了敌人用特技的问题了
作者: 幻の飞鱼    时间: 2007-6-23 23:09
修复了,把allhidd里加一句
  def allhidd
    for actor in $game_party.actors
      next if actor == @active_battler
      actor.hidd = true
    end
    for enemy in $game_troop.enemies
      next if enemy == @active_battler
      enemy.hidd = true
    end
  end [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 永劫的咎人    时间: 2007-6-23 23:34
提示: 作者被禁止或删除 内容自动屏蔽
作者: 神思    时间: 2007-6-23 23:47
以下引用永劫的咎人于2007-6-23 15:34:04的发言:


next if enemy == @active_battler

不好意思这句是什么意思的说?
为什么不加上就会出错?
麻烦解答一下下了,感谢。

for enemy in $game_troop.enemies
     next if enemy == @active_battler
     enemy.hidd = true
   end
@active_battler
这个东西就是攻击中的角色
这个分歧则是
如果敌人是攻击中的角色的话就跳过过这次循环不将敌人的hidd属性设置为真




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