幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3521|回复: 20

[RMVX] [求助] 如何使战斗中被选中的敌人 闪烁

[复制链接]

9

主题

42

帖子

553

积分

⑤进阶

积分
553
发表于 2006-10-13 19:39:26 | 显示全部楼层 |阅读模式
因为我调了脚本坐标  目前可以使用较大的行走图作为战斗图

但因为调了坐标的关系 攻击时选怪的 指针 也随着行走图的大小 上下偏移


所以我想用闪烁代替指针```

如何实现???
回复

使用道具 举报

9

主题

42

帖子

553

积分

⑤进阶

积分
553
 楼主| 发表于 2006-10-13 20:15:21 | 显示全部楼层
发现改坐标实在不好用  弊端好多


可否吧这个脚本的行走图显示从第一行改到最后一行 ???

最后一行行走图为战斗图的画 就不存在图片大小4份1会超出屏幕的问题了




  1. #==============================================================================
  2. # ■ Sprite_Battler
  3. #==============================================================================
  4. class Sprite_Battler < RPG::Sprite
  5. #--------------------------------------------------------------------------
  6. # ● instance变量
  7. #--------------------------------------------------------------------------
  8. attr_accessor :battler             # butler
  9. #--------------------------------------------------------------------------
  10. # ● 初始化
  11. #   viewport : viewport
  12. #   battler : butler(Game_Battler)
  13. #--------------------------------------------------------------------------
  14. def initialize(viewport, battler = nil)
  15.   super(viewport)
  16.   @battler = battler
  17.   @battler_visible = false
  18.   # 定义动画用变量
  19.   @hoko_wait = 0
  20.   @hoko_pattern = 0
  21. end
  22. #--------------------------------------------------------------------------
  23. # ● 解放
  24. #--------------------------------------------------------------------------
  25. def dispose
  26.   if self.bitmap != nil
  27.   self.bitmap.dispose
  28.   end
  29.   super
  30. end
  31. #--------------------------------------------------------------------------
  32. # ● 更新
  33. #--------------------------------------------------------------------------
  34. def update
  35.   super
  36.   # butler nil 的场合
  37.   if @battler == nil
  38.   self.bitmap = nil
  39.   loop_animation(nil)
  40.   return
  41.   end
  42.   # 如果文件名或者色相与现在的东西不同
  43.   if @battler.battler_name != @battler_name or
  44.     @battler.battler_hue != @battler_hue
  45.   # 取得位图设定
  46.   @battler_name = @battler.battler_name
  47.   @battler_hue = @battler.battler_hue
  48.   # battler→character变更
  49.   #self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
  50.   self.bitmap = RPG::Cache.character(@battler_name, @battler_hue)
  51.   @width = bitmap.width / 4
  52.   @height = bitmap.height / 4
  53.   self.ox = @width / 1.3
  54.   self.oy = bitmap.height
  55.   self.src_rect.set(@hoko_pattern * @width, 0, @width, @height)
  56.   
  57.   # 战斗不能再隐藏要是状态把不透明度做为 0
  58.   if @battler.dead? or @battler.hidden
  59.     self.opacity = 0
  60.   end
  61.   end
  62.   # 如果动画ID与现在的东西有差异
  63.   if @battler.damage == nil and
  64.     @battler.state_animation_id != @state_animation_id
  65.   @state_animation_id = @battler.state_animation_id
  66.   loop_animation($data_animations[@state_animation_id])
  67.   end
  68.   # 应该被表示actor的场合
  69.   if @battler.is_a?(Game_Actor) and @battler_visible
  70.   # 不是主要阶段的时候把不透明度稍稍下降
  71.   if $game_temp.battle_main_phase
  72.     self.opacity += 3 if self.opacity < 255
  73.   else
  74.     self.opacity -= 3 if self.opacity > 207
  75.   end
  76.   end
  77.   # 闪烁
  78.   if @battler.blink
  79.   blink_on
  80.   else
  81.   blink_off
  82.   end
  83.   # 不可见的场合
  84.   unless @battler_visible
  85.   # 出现
  86.   if not @battler.hidden and not @battler.dead? and
  87.     (@battler.damage == nil or @battler.damage_pop)
  88.     appear
  89.     @battler_visible = true
  90.   end
  91.   end
  92.   # 可见的场合
  93.   if @battler_visible
  94.   # 逃走
  95.   if @battler.hidden
  96.     $game_system.se_play($data_system.escape_se)
  97.     escape
  98.     @battler_visible = false
  99.   end
  100.   # 白闪光
  101.   if @battler.white_flash
  102.     whiten
  103.     @battler.white_flash = false
  104.   end
  105.   # 动画
  106.   if @battler.animation_id != 0
  107.     animation = $data_animations[@battler.animation_id]
  108.     animation(animation, @battler.animation_hit)
  109.     @battler.animation_id = 0
  110.   end
  111.   # 损坏
  112.   if @battler.damage_pop
  113.     damage(@battler.damage, @battler.critical)
  114.     @battler.damage = nil
  115.     @battler.critical = false
  116.     @battler.damage_pop = false
  117.   end
  118.   # korapusu
  119.   if @battler.damage == nil and @battler.dead?
  120.     if @battler.is_a?(Game_Enemy)
  121.       $game_system.se_play($data_system.enemy_collapse_se)
  122.     else
  123.       $game_system.se_play($data_system.actor_collapse_se)
  124.     end
  125.     collapse
  126.     @battler_visible = false
  127.   end
  128.   # 行走动画
  129.   hoko_anime()
  130.   # p @hoko_pattern
  131.   end
  132.   # 设定行走图位置的坐标
  133.   self.x = @battler.screen_x + 7
  134.   self.y = @battler.screen_y + 108
  135.   self.z = @battler.screen_z
  136. end
  137. #--------------------------------------------------------------------------
  138. # ● 行走动画(@hoko_pattern * @width, 0, @width, @height)能设置行走图方向
  139. #--------------------------------------------------------------------------
  140. def hoko_anime()
  141.   @hoko_wait += 1
  142.   if @hoko_wait > 6
  143.   @hoko_wait = 0
  144.   @hoko_pattern += 1
  145.   if @hoko_pattern > 3
  146.     @hoko_pattern = 0
  147.     # p "0"
  148.   end
  149.   self.src_rect.set(@hoko_pattern * @width, 0, @width, @height)
  150.   end
  151. end
  152. end
  153. #==============================================================================
  154. #冲突脚本:宠物脚本1.2版(66主页拿的宠物脚本应该都会冲突)
  155. #注意:以下一共有两个脚本,插入后就能达到战斗动画。
  156. #插入脚本后先进入游戏进行战斗一下,然后就会明白素材问题了
  157. #素材问题:脚本采用了战斗图自动选择行走图~~~
  158. #==============================================================================
  159. #==============================================================================
  160. # ■ Game_BattleAction
  161. #------------------------------------------------------------------------------
  162. #是处理动作 (战斗中的行动)的级。这个级在 Game_Battler kura# su内部被使用。
  163. #==============================================================================
  164. class Game_BattleAction
  165. #--------------------------------------------------------------------------
  166. # ● instance变量
  167. #--------------------------------------------------------------------------
  168. attr_accessor :speed             # 速度
  169. attr_accessor :kind               # 类别(基本/ 技艺 / 物品)
  170. attr_accessor :basic             # 基本(攻击/防御/逃跑)
  171. attr_accessor :skill_id           # 特技ID
  172. attr_accessor :item_id             # 物品ID
  173. attr_accessor :target_index         # 对象禁书目录
  174. attr_accessor :forcing             # 强制标志
  175. #--------------------------------------------------------------------------
  176. # ● 初始化
  177. #--------------------------------------------------------------------------
  178. def initialize
  179.   clear
  180. end
  181. #--------------------------------------------------------------------------
  182. # ● clearness
  183. #--------------------------------------------------------------------------
  184. def clear
  185.   @speed = 0
  186.   @kind = 0
  187.   @basic = 3
  188.   @skill_id = 0
  189.   @item_id = 0
  190.   @target_index = -1
  191.   @forcing = false
  192. end
  193. #--------------------------------------------------------------------------
  194. # ● 判断
  195. #--------------------------------------------------------------------------
  196. def valid?
  197.   return (not (@kind == 0 and @basic == 3))
  198. end
  199. #--------------------------------------------------------------------------
  200. # ● 单体判断
  201. #--------------------------------------------------------------------------
  202. def for_one_friend?
  203.   # 类别特技,效果范围包含伙伴单体(HP 0 的)场合
  204.   if @kind == 1 and [3, 5].include?($data_skills[@skill_id].scope)
  205.   return true
  206.   end
  207.   # 类别以条款,效果范围包含伙伴单体(HP 0 的)场合
  208.   if @kind == 2 and [3, 5].include?($data_items[@item_id].scope)
  209.   return true
  210.   end
  211.   return false
  212. end
  213. #--------------------------------------------------------------------------
  214. # ● 单体用(HP 0)判断
  215. #--------------------------------------------------------------------------
  216. def for_one_friend_hp0?
  217.   # 特技效果范围单体(HP 0 )的场合
  218.   if @kind == 1 and [5].include?($data_skills[@skill_id].scope)
  219.   return true
  220.   end
  221.   # 物品效果范围单体(HP 0 )的场合
  222.   if @kind == 2 and [5].include?($data_items[@item_id].scope)
  223.   return true
  224.   end
  225.   return false
  226. end
  227. #--------------------------------------------------------------------------
  228. # ● random目标 (actor用)
  229. #--------------------------------------------------------------------------
  230. def decide_random_target_for_actor
  231.   # 效果范围分歧
  232.   if for_one_friend_hp0?
  233.   battler = $game_party.random_target_actor_hp0
  234.   elsif for_one_friend?
  235.   battler = $game_party.random_target_actor
  236.   else
  237.   battler = $game_troop.random_target_enemy
  238.   end
  239. # 如果对象存在取得禁书目录,
  240. # 对象不存在的情况clearness动作
  241.   if battler != nil
  242.   @target_index = battler.index
  243.   else
  244.   clear
  245.   end
  246. end
  247. #--------------------------------------------------------------------------
  248. # ● random目标 (enemy用)
  249. #--------------------------------------------------------------------------
  250. def decide_random_target_for_enemy
  251.   # 效果范围分歧
  252.   if for_one_friend_hp0?
  253.   battler = $game_troop.random_target_enemy_hp0
  254.   elsif for_one_friend?
  255.   battler = $game_troop.random_target_enemy
  256.   else
  257.   battler = $game_party.random_target_actor
  258.   end
  259.   # 如果对象存在取得禁书目录,
  260.   # 对象不存在的情况clearness动作
  261.   if battler != nil
  262.   @target_index = battler.index
  263.   else
  264.   clear
  265.   end
  266. end
  267. #--------------------------------------------------------------------------
  268. # ● 最后目标 (actor)
  269. #--------------------------------------------------------------------------
  270. def decide_last_target_for_actor
  271.   # 单体actor效果范围,(enemy)
  272.   if @target_index == -1
  273.   battler = nil
  274.   elsif for_one_friend?
  275.   battler = $game_party.actors[@target_index]
  276.   else
  277.   battler = $game_troop.enemies[@target_index]
  278.   end
  279.   # 对象不存在的情况clearness动作
  280.   if battler == nil or not battler.exist?
  281.   clear
  282.   end
  283. end
  284. #--------------------------------------------------------------------------
  285. # ● 最后目标 (enemy)
  286. #--------------------------------------------------------------------------
  287. def decide_last_target_for_enemy
  288.   # 单体enemy效果范围 (actor)
  289.   if @target_index == -1
  290.   battler = nil
  291.   elsif for_one_friend?
  292.   battler = $game_troop.enemies[@target_index]
  293.   else
  294.   battler = $game_party.actors[@target_index]
  295.   end
  296.   # 对象不存在的情况clearness动作
  297.   if battler == nil or not battler.exist?
  298.   clear
  299.   end
  300. end
  301. end
复制代码
回复 支持 反对

使用道具 举报

91

主题

3188

帖子

83986万

积分

荣誉群

传说中的Bunny大神~!

积分
839861514
QQ
发表于 2006-10-13 20:53:50 | 显示全部楼层
奇怪,我改了后自己测试居然没反应Orz。。。 [s:5]
其他所有的Bunny神都素我的部下XD~ 小教程范例收集 Orz感谢邪恶萝卜联盟!!!(原因自己去猜)
回复 支持 反对

使用道具 举报

9

主题

42

帖子

553

积分

⑤进阶

积分
553
 楼主| 发表于 2006-10-13 20:54:48 | 显示全部楼层
可能是我rp不好的问题


...........................................
...........................................
其实我又新问题的
回复 支持 反对

使用道具 举报

9

主题

42

帖子

553

积分

⑤进阶

积分
553
 楼主| 发表于 2006-10-13 20:56:26 | 显示全部楼层
这个脚本是这样的  行走图是4X4的
它读取第一行行走图作为战斗图....但是下面3行虽然透明了.不过还是存在的.
如果我想用一个比较大的怪物行走图当战斗图  因为下面3行存在的关系
这个怪物图就会被顶到天花板上=_=

我试着用坐标把它移动下来

可是如果改了坐标 大图是可以用 选小的行走图 那么图超出下面的屏幕


一切都是因为下面3行行走图存在在关系...
所以我想  如果可以改成.显示最后一行为战斗图.那么上面3行为透明.就算存在也不影响什么了

.那样什么问题就斗解决了

..................


我试着改过..可惜啊 我第一次自己改脚本 完全不懂

瓜瓜这么厉害 可以帮我把 行走图读取方位定在最后一个吗
回复 支持 反对

使用道具 举报

0

主题

11

帖子

144

积分

③业余

积分
144
发表于 2006-10-13 21:00:56 | 显示全部楼层
默认脚本 Arrow_Enemy 的 45行下加:

    for e in $game_troop.enemies
      if e == self.enemy
        self.enemy.blink = true
      else
        e.blink = false
      end
    end

Scene_Battle 3   的 354行 下加:

   for enemy in $game_troop.enemies
     enemy.blink = false
   end

闪烁就完成了....
回复 支持 反对

使用道具 举报

9

主题

42

帖子

553

积分

⑤进阶

积分
553
 楼主| 发表于 2006-10-13 21:04:39 | 显示全部楼层
恩 我试试看


PS 谁可以帮我改改那个脚本..让他拿最后一行行走图当战斗图

不然我的游戏没有个子高的怪物了 一高就要调坐标让他不超出屏幕 ..调了坐标 小个子怪物就又去地狱了
回复 支持 反对

使用道具 举报

91

主题

3188

帖子

83986万

积分

荣誉群

传说中的Bunny大神~!

积分
839861514
QQ
发表于 2006-10-13 21:05:07 | 显示全部楼层
看看这样行不?
  1. #==============================================================================
  2. # ■ Sprite_Battler
  3. #==============================================================================
  4. class Sprite_Battler < RPG::Sprite
  5. #--------------------------------------------------------------------------
  6. # ● instance变量
  7. #--------------------------------------------------------------------------
  8. attr_accessor :battler         # butler
  9. #--------------------------------------------------------------------------
  10. # ● 初始化
  11. #   viewport : viewport
  12. #   battler : butler(Game_Battler)
  13. #--------------------------------------------------------------------------
  14. def initialize(viewport, battler = nil)
  15. super(viewport)
  16. @battler = battler
  17. @battler_visible = false
  18. # 定义动画用变量
  19. @hoko_wait = 0
  20. @hoko_pattern = 12
  21. end
  22. #--------------------------------------------------------------------------
  23. # ● 解放
  24. #--------------------------------------------------------------------------
  25. def dispose
  26. if self.bitmap != nil
  27. self.bitmap.dispose
  28. end
  29. super
  30. end
  31. #--------------------------------------------------------------------------
  32. # ● 更新
  33. #--------------------------------------------------------------------------
  34. def update
  35. super
  36. # butler nil 的场合
  37. if @battler == nil
  38. self.bitmap = nil
  39. loop_animation(nil)
  40. return
  41. end
  42. # 如果文件名或者色相与现在的东西不同
  43. if @battler.battler_name != @battler_name or
  44.   @battler.battler_hue != @battler_hue
  45. # 取得位图设定
  46. @battler_name = @battler.battler_name
  47. @battler_hue = @battler.battler_hue
  48. # battler→character变更
  49. #self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
  50. self.bitmap = RPG::Cache.character(@battler_name, @battler_hue)
  51. @width = bitmap.width / 4
  52. @height = bitmap.height / 4
  53. self.ox = @width / 1.3
  54. self.oy = bitmap.height
  55. self.src_rect.set(@hoko_pattern * @width, 0, @width, @height)
  56. # 战斗不能再隐藏要是状态把不透明度做为 0
  57. if @battler.dead? or @battler.hidden
  58.   self.opacity = 0
  59. end
  60. end
  61. # 如果动画ID与现在的东西有差异
  62. if @battler.damage == nil and
  63.   @battler.state_animation_id != @state_animation_id
  64. @state_animation_id = @battler.state_animation_id
  65. loop_animation($data_animations[@state_animation_id])
  66. end
  67. # 应该被表示actor的场合
  68. if @battler.is_a?(Game_Actor) and @battler_visible
  69. # 不是主要阶段的时候把不透明度稍稍下降
  70. if $game_temp.battle_main_phase
  71.   self.opacity += 3 if self.opacity < 255
  72. else
  73.   self.opacity -= 3 if self.opacity > 207
  74. end
  75. end
  76. # 闪烁
  77. if @battler.blink
  78. blink_on
  79. else
  80. blink_off
  81. end
  82. # 不可见的场合
  83. unless @battler_visible
  84. # 出现
  85. if not @battler.hidden and not @battler.dead? and
  86.   (@battler.damage == nil or @battler.damage_pop)
  87.   appear
  88.   @battler_visible = true
  89. end
  90. end
  91. # 可见的场合
  92. if @battler_visible
  93. # 逃走
  94. if @battler.hidden
  95.   $game_system.se_play($data_system.escape_se)
  96.   escape
  97.   @battler_visible = false
  98. end
  99. # 白闪光
  100. if @battler.white_flash
  101.   whiten
  102.   @battler.white_flash = false
  103. end
  104. # 动画
  105. if @battler.animation_id != 0
  106.   animation = $data_animations[@battler.animation_id]
  107.   animation(animation, @battler.animation_hit)
  108.   @battler.animation_id = 0
  109. end
  110. # 损坏
  111. if @battler.damage_pop
  112.   damage(@battler.damage, @battler.critical)
  113.   @battler.damage = nil
  114.   @battler.critical = false
  115.   @battler.damage_pop = false
  116. end
  117. # korapusu
  118. if @battler.damage == nil and @battler.dead?
  119.   if @battler.is_a?(Game_Enemy)
  120.     $game_system.se_play($data_system.enemy_collapse_se)
  121.   else
  122.     $game_system.se_play($data_system.actor_collapse_se)
  123.   end
  124.   collapse
  125.   @battler_visible = false
  126. end
  127. # 行走动画
  128. hoko_anime()
  129. # p @hoko_pattern
  130. end
  131. # 设定行走图位置的坐标
  132. self.x = @battler.screen_x + 7
  133. self.y = @battler.screen_y + 108
  134. self.z = @battler.screen_z
  135. end
  136. #--------------------------------------------------------------------------
  137. # ● 行走动画(@hoko_pattern * @width, 0, @width, @height)能设置行走图方向
  138. #--------------------------------------------------------------------------
  139. def hoko_anime()
  140. @hoko_wait += 1
  141. if @hoko_wait > 6
  142. @hoko_wait = 0
  143. @hoko_pattern += 1
  144. if @hoko_pattern > 15
  145.   @hoko_pattern = 12
  146.   # p "0"
  147. end
  148. self.src_rect.set(@hoko_pattern * @width, 0, @width, @height)
  149. end
  150. end
  151. end
复制代码
[s:5]
其他所有的Bunny神都素我的部下XD~ 小教程范例收集 Orz感谢邪恶萝卜联盟!!!(原因自己去猜)
回复 支持 反对

使用道具 举报

9

主题

42

帖子

553

积分

⑤进阶

积分
553
 楼主| 发表于 2006-10-13 21:17:02 | 显示全部楼层
嘿嘿```` [s:6]
战斗画面中```人全透明不见了 [s:6]
回复 支持 反对

使用道具 举报

91

主题

3188

帖子

83986万

积分

荣誉群

传说中的Bunny大神~!

积分
839861514
QQ
发表于 2006-10-13 21:18:55 | 显示全部楼层
引用第8楼cyzy11112006-10-13 21:17发表的“”:
嘿嘿```` [s:6]
战斗画面中```人全透明不见了 [s:6]

Orz。。。那就不知道该怎么改了。。。 [s:5]
其他所有的Bunny神都素我的部下XD~ 小教程范例收集 Orz感谢邪恶萝卜联盟!!!(原因自己去猜)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2025-6-28 16:46 , Processed in 0.011887 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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