幻想森林

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

求rpg make xv的战斗横向战斗脚本

[复制链接]

1

主题

2

帖子

23

积分

②入门

积分
23
发表于 2010-4-4 15:57:44 | 显示全部楼层 |阅读模式
求rpg make xv的战斗横向战斗脚本 拜托各位大哥,,,版主 我有急用
回复

使用道具 举报

0

主题

6

帖子

91

积分

②入门

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 02:54 , Processed in 0.021502 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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