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

Project1

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

[已经过期] 行走战斗脚本问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
13 小时
注册时间
2010-8-9
帖子
27
跳转到指定楼层
1
发表于 2010-12-5 17:58:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 fux2 于 2010-12-5 18:37 编辑

老手来解问题,新手就可以顺手捞脚本
我发现用了这个脚本以后,人物在战斗图上移动是在血量槽里移动,能把任务移到战斗图画里吗?
脚本为:
  1. #==============================================================================
  2. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  3. #==============================================================================


  4. #==============================================================================
  5. #冲突脚本:宠物脚本1.2版(66主页拿的宠物脚本应该都会冲突)
  6. #注意:以下一共有两个脚本,插入后就能达到战斗动画。
  7. #插入脚本后先进入游戏进行战斗一下,然后就会明白素材问题了
  8. #素材问题:脚本采用了战斗图自动选择行走图~~~
  9. #使用方法:插入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→宽度  height→高度
  62.      @width = bitmap.width / 4
  63.      @height = bitmap.height / 4
  64.      self.ox = @width / 2
  65.      self.oy = @height
  66.      self.src_rect.set(@hoko_pattern * @width, 0, @width, @height)
  67.      # 战斗不能再隐藏要是状态把不透明度做为 0
  68.      if @battler.dead? or @battler.hidden
  69.        self.opacity = 0
  70.      end
  71.    end
  72.    # 如果动画ID与现在的东西有差异
  73.    if @battler.damage == nil and
  74.       @battler.state_animation_id != @state_animation_id
  75.      @state_animation_id = @battler.state_animation_id
  76.      loop_animation($data_animations[@state_animation_id])
  77.    end
  78.    # 应该被表示actor的场合
  79.    if @battler.is_a?(Game_Actor) and @battler_visible
  80.      # 不是主要阶段的时候把不透明度稍稍下降
  81.      if $game_temp.battle_main_phase
  82.        self.opacity += 3 if self.opacity < 255
  83.      else
  84.        self.opacity -= 3 if self.opacity > 207
  85.      end
  86.    end
  87.    # 闪烁
  88.    if @battler.blink
  89.      blink_on
  90.    else
  91.      blink_off
  92.    end
  93.    # 不可见的场合
  94.    unless @battler_visible
  95.      # 出现
  96.      if not @battler.hidden and not @battler.dead? and
  97.         (@battler.damage == nil or @battler.damage_pop)
  98.        appear
  99.        @battler_visible = true
  100.      end
  101.    end
  102.    # 可见的场合
  103.    if @battler_visible
  104.      # 逃走
  105.      if @battler.hidden
  106.        $game_system.se_play($data_system.escape_se)
  107.        escape
  108.        @battler_visible = false
  109.      end
  110.      # 白闪光
  111.      if @battler.white_flash
  112.        whiten
  113.        @battler.white_flash = false
  114.      end
  115.      # 动画
  116.      if @battler.animation_id != 0
  117.        animation = $data_animations[@battler.animation_id]
  118.        animation(animation, @battler.animation_hit)
  119.        @battler.animation_id = 0
  120.      end
  121.      # 损坏
  122.      if @battler.damage_pop
  123.        damage(@battler.damage, @battler.critical)
  124.        @battler.damage = nil
  125.        @battler.critical = false
  126.        @battler.damage_pop = false
  127.      end
  128.      # korapusu
  129.      if @battler.damage == nil and @battler.dead?
  130.        if @battler.is_a?(Game_Enemy)
  131.          $game_system.se_play($data_system.enemy_collapse_se)
  132.        else
  133.          $game_system.se_play($data_system.actor_collapse_se)
  134.        end
  135.        collapse
  136.        @battler_visible = false
  137.      end
  138.      # 行走动画
  139.      hoko_anime()
  140.      # p @hoko_pattern
  141.    end
  142.    # 设定行走图位置的坐标
  143.    self.x = @battler.screen_x
  144.    self.y = @battler.screen_y - 43
  145.    self.z = @battler.screen_z
  146. end
  147. #--------------------------------------------------------------------------
  148. # ● 行走动画(@hoko_pattern * @width, 0, @width, @height)能设置行走图方向
  149. #--------------------------------------------------------------------------
  150. def hoko_anime()
  151.    @hoko_wait += 1
  152.    if @hoko_wait > 6   # wait 等待
  153.      @hoko_wait = 0
  154.      @hoko_pattern += 1
  155.      if @hoko_pattern > 3
  156.        @hoko_pattern = 0
  157.        # p "0"
  158.      end                   #pattern图案/width宽度/height高度
  159.      self.src_rect.set(@hoko_pattern * @width, @height * 2, @width, @height)
  160.      if battler.is_a?(Game_Actor)
  161.      self.src_rect.set(@hoko_pattern * @width, @height, @width, @height)
  162.    end
  163.   end
  164. end
  165. end            #enemy敌人
  166. #==============================================================================
  167. #冲突脚本:宠物脚本1.2版(66主页拿的宠物脚本应该都会冲突)
  168. #注意:以下一共有两个脚本,插入后就能达到战斗动画。
  169. #插入脚本后先进入游戏进行战斗一下,然后就会明白素材问题了
  170. #素材问题:脚本采用了战斗图自动选择行走图~~~
  171. #==============================================================================
  172. #==============================================================================
  173. # ■ Game_BattleAction
  174. #------------------------------------------------------------------------------
  175. #是处理动作 (战斗中的行动)的级。这个级 在 Game_Battler kura# su内部被使用。
  176. #==============================================================================

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

  315. #==============================================================================
  316. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  317. #==============================================================================
复制代码


2daye于2010-12-11 11:39补充以下内容:
- -心灰意冷(附录这不算自顶)

点评

任务……移到……战斗图里……不懂啊……  发表于 2010-12-5 20:13
这里是技术论坛不要说什么看了要顶之类的话,这里是严肃的地方  发表于 2010-12-5 18:38
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-24 04:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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