Project1

标题: 战斗时候真移位````(更新攻击完后返回) [打印本页]

作者: 神思    时间: 2007-3-10 19:48
标题: 战斗时候真移位````(更新攻击完后返回)
本帖最后由 凌辰 于 2009-8-15 16:45 编辑

http://rpg.blue/UP_PIC/200705/战斗时候真移位01.rar

http://rpg.blue/UP_PIC/200705/战斗时候真移位02.rar




RT就是战斗时候直接把战斗图移到要攻击的人身边````
感觉可以更真实一些`而且状态动画也跟着一起出去``~~~

以前也发过一个类似这样的东西``不过存在着一些问题```
-____-``所以再发一次```而且副送范例``
包括动态待机 + 动态移动`和一个仿轩辕剑4的CP条``````嗯 ..大概就酱紫```
作者: 神思    时间: 2007-3-10 19:48
标题: 战斗时候真移位````(更新攻击完后返回)
http://rpg.blue/UP_PIC/200705/战斗时候真移位01.rar

http://rpg.blue/UP_PIC/200705/战斗时候真移位02.rar





RT就是战斗时候直接把战斗图移到要攻击的人身边````
感觉可以更真实一些`而且状态动画也跟着一起出去``~~~

以前也发过一个类似这样的东西``不过存在着一些问题```
-____-``所以再发一次```而且副送范例``
包括动态待机 + 动态移动`和一个仿轩辕剑4的CP条``````嗯 ..大概就酱紫```
作者: 海的那边    时间: 2007-3-10 19:53
好像是个好东东~

不过机子不好的刚第一次攻击时会卡卡的~
作者: 亿万星辰    时间: 2007-3-10 19:53
那个CP条也是自己弄的?

如果要我做这样的系统偶一定会用事件来做的~~~~{/hx}{/hx}
作者: 神思    时间: 2007-3-10 19:56
{/gg}自己对事件比较无能```````````{/ll}
恩``其实CP条没有想象的那么难做```
作者: 亿万星辰    时间: 2007-3-10 19:59
只要和战斗类扯上关系的,一律通过事件处理
作者: 神思    时间: 2007-3-10 20:06
{/fd}亿万大人准备转成事件派了``?
作者: 颠倒的彩虹    时间: 2007-3-10 20:11
真位移也.我发现我战斗又可以报废掉了
作者: 絮儿    时间: 2007-3-10 20:18
来膜拜思大人~~
作者: 莫浪语    时间: 2007-3-11 07:01
我都有做rpg的冲动了
作者: 影の騲葉    时间: 2007-3-11 07:17
提示: 作者被禁止或删除 内容自动屏蔽
作者: zhong    时间: 2007-3-11 08:02
真位移~~~感觉很不错~~~~做战斗动画还可以省了位移那部分~~~~~~{/qiang}

另:那个cp槽做华丽华丽的~~~~太羡慕了~~~
作者: 寒灯独夜人    时间: 2007-3-13 18:24
我是初学的,刚刚接触脚本,我想问一下这个脚本主要修改了哪些内容,我想融合到我现在的脚本里面去。

我现在使用的脚本是柳柳《三国凡人传》里面的,然后换上了截图存盘和三层远景,现在这个脚本我不知道怎么添加进去,它里面好像没有特别标示
作者: 神思    时间: 2007-3-13 21:12
因为我是直接在默认的系统上更改```没做成外挂式的脚本``
不介意的话直接拿这个工程做好了`````````
作者: 寒灯独夜人    时间: 2007-3-13 21:18
好的,谢谢,我再仔细研究一下。
作者: 魔剑美神    时间: 2007-3-14 03:56
不错的系统~收藏ing{/hx}
作者: love198959    时间: 2007-3-14 05:47
神恩大人如何再修改攻击完毕再跑回去呢{/gg}
作者: luzhi9    时间: 2007-3-14 05:57

作者: 逍遥天上神    时间: 2007-3-16 04:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: 小雪    时间: 2007-3-16 21:55
好棒的东西~在试用
想问下神思,如果偶想改变战斗动画的张数,比如说要增加一张待机的图,减少移动的图...应该在脚本什么地方改呀=v=
作者: juju2001    时间: 2007-3-16 23:35
好东西支持!
作者: 果汁分你一半    时间: 2007-3-17 00:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: 神思    时间: 2007-3-17 01:10
以下引用小雪于2007-3-16 13:55:34的发言:

好棒的东西~在试用
想问下神思,如果偶想改变战斗动画的张数,比如说要增加一张待机的图,减少移动的图...应该在脚本什么地方改呀=v=


[本贴由作者于 2007-3-16 14:11:23 最后编辑]

找到Scene_BattleName

"阿尔西斯" => {
  "待机" => ["辅-待1","辅-待2","辅-待3","辅-待4"],
  "移动" => ["辅-移1","辅-移2","辅-移3","辅-移4","辅-移5","辅-移6","辅-移7","辅-移8"]
  },

格式分别为
"名字" => {
"待机" => [待机的图片..可以有多张``他会循环切换里面的图片]
"移动" => [移动时循环的图片```可以有多张或1张```]
}

自己看一下就明白了``

Move_Duration就是移动的时间
作者: 魔剑美神    时间: 2007-3-17 01:21
以下引用神思于2007-3-16 17:10:58的发言:


以下引用小雪于2007-3-16 13:55:34的发言:

好棒的东西~在试用
想问下神思,如果偶想改变战斗动画的张数,比如说要增加一张待机的图,减少移动的图...应该在脚本什么地方改呀=v=


[本贴由作者于 2007-3-16 14:11:23 最后编辑]


找到Scene_BattleName

"阿尔西斯" => {
"待机" => ["辅-待1","辅-待2","辅-待3","辅-待4"],
"移动" => ["辅-移1","辅-移2","辅-移3","辅-移4","辅-移5","辅-移6","辅-移7","辅-移8"]
},

格式分别为
"名字" => {
"待机" => [待机的图片..可以有多张``他会循环切换里面的图片]
"移动" => [移动时循环的图片```可以有多张或1张```]
}

自己看一下就明白了``

Move_Duration就是移动的时间


感谢指点~{/hx}
作者: 逍遥天上神    时间: 2007-3-17 02:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: 神思    时间: 2007-3-17 02:12
可以啊```

"名字" => {
"待机" => [待机的图片..可以有多张``他会循环切换里面的图片]
"移动" => [移动时循环的图片```可以有多张或1张```]
}

战斗的
敌人也写上```-____-这个东西是2方通用的````
作者: 逍遥天上神    时间: 2007-3-17 02:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: 果汁分你一半    时间: 2007-3-17 03:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: 神思    时间: 2007-3-17 03:46
恩`没办法````这样算是是比较好的方法了``而且又好控制````
作者: love198959    时间: 2007-3-17 06:31
{/ll}实现跑回来行么
作者: 小天天    时间: 2007-3-17 07:58
提示: 作者被禁止或删除 内容自动屏蔽
作者: 小天天    时间: 2007-3-17 08:25
提示: 作者被禁止或删除 内容自动屏蔽
作者: 神思    时间: 2007-3-17 18:22
更新后小顶一下``其实做起来不难```
难的是图片啊```去哪搞那么多图片来`````{/gg}
所以那个范例里的是直接用回默认的移动图片``用的话要自己改点东西``````
作者: 小天天    时间: 2007-3-17 19:06
提示: 作者被禁止或删除 内容自动屏蔽
作者: 神思    时间: 2007-3-17 19:16
把这个替换Scene_Battle 4


-_____-你要给光标我才行啊`````
  1. #==============================================================================
  2. # ■ Scene_Battle (分割定义 4)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的类。
  5. #==============================================================================

  6. class Scene_Battle
  7.   #--------------------------------------------------------------------------
  8.   # ● 开始主回合
  9.   #--------------------------------------------------------------------------
  10.   def start_phase4
  11.     # 转移到回合 4
  12.     @phase = 4
  13.     # 回合数计数
  14.     $game_temp.battle_turn += 1
  15.     # 搜索全页的战斗事件
  16.     for index in 0...$data_troops[@troop_id].pages.size
  17.       # 获取事件页
  18.       page = $data_troops[@troop_id].pages[index]
  19.       # 本页的范围是 [回合] 的情况下
  20.       if page.span == 1
  21.         # 设置已经执行标志
  22.         $game_temp.battle_event_flags[index] = false
  23.       end
  24.     end
  25.     # 设置角色为非选择状态
  26.     @actor_index = -1
  27.     @active_battler = nil
  28.     # 有效化同伴指令窗口
  29.     @party_command_window.active = false
  30.     @party_command_window.visible = false
  31.     # 无效化角色指令窗口
  32.     @actor_command_window.active = false
  33.     @actor_command_window.visible = false
  34.     # 设置主回合标志
  35.     $game_temp.battle_main_phase = true
  36.     # 生成敌人行动
  37.     for enemy in $game_troop.enemies
  38.       enemy.make_action
  39.     end
  40.     # 生成行动顺序
  41.     make_action_orders
  42.     # 移动到步骤 1
  43.     @phase4_step = 1
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 生成行动循序
  47.   #--------------------------------------------------------------------------
  48.   def make_action_orders
  49.     # 初始化序列 @action_battlers
  50.     @action_battlers = []
  51.     # 添加敌人到 @action_battlers 序列
  52.     for enemy in $game_troop.enemies
  53.       if enemy.cp >= enemy.maxcp
  54.         @action_battlers.push(enemy)
  55.       end
  56.     end
  57.     # 添加角色到 @action_battlers 序列
  58.     for actor in $game_party.actors
  59.       if actor.cp >= actor.maxcp
  60.         @action_battlers.push(actor)
  61.       end
  62.     end
  63.     # 确定全体的行动速度
  64.     for battler in @action_battlers
  65.       battler.make_action_speed
  66.     end
  67.     # 按照行动速度从大到小排列
  68.     @action_battlers.sort! {|a,b|
  69.       b.current_action.speed - a.current_action.speed }
  70.   end
  71.   #--------------------------------------------------------------------------
  72.   # ● 刷新画面 (主回合)
  73.   #--------------------------------------------------------------------------
  74.   def update_phase4
  75.     case @phase4_step
  76.     when 1
  77.       update_phase4_step1
  78.     when 2
  79.       update_phase4_step2
  80.     when 3
  81.       update_phase4_step3
  82.     when 4
  83.       update_phase4_step4
  84.     when 5
  85.       update_phase4_step5
  86.     when 6
  87.       update_phase4_step6
  88.     end
  89.   end
  90.   #--------------------------------------------------------------------------
  91.   # ● 刷新画面 (主回合步骤 1 : 准备行动)
  92.   #--------------------------------------------------------------------------
  93.   def update_phase4_step1
  94.     # 隐藏帮助窗口
  95.     @help_window.visible = false
  96.     # 判定胜败
  97.     if judge
  98.       # 胜利或者失败的情况下 : 过程结束
  99.       return
  100.     end
  101.     # 强制行动的战斗者不存在的情况下
  102.     if $game_temp.forcing_battler == nil
  103.       # 设置战斗事件
  104.       setup_battle_event
  105.       # 执行战斗事件中的情况下
  106.       if $game_system.battle_interpreter.running?
  107.         return
  108.       end
  109.     end
  110.     # 强制行动的战斗者存在的情况下
  111.     if $game_temp.forcing_battler != nil
  112.       # 在头部添加后移动
  113.       @action_battlers.delete($game_temp.forcing_battler)
  114.       @action_battlers.unshift($game_temp.forcing_battler)
  115.     end
  116.     # 未行动的战斗者不存在的情况下 (全员已经行动)
  117.     if @action_battlers.size == 0
  118.       # 开始同伴命令回合
  119.       start_phase2
  120.       return
  121.     end
  122.     # 初始化动画 ID 和公共事件 ID
  123.     @animation1_id = 0
  124.     @animation2_id = 0
  125.     @common_event_id = 0
  126.     # 未行动的战斗者移动到序列的头部
  127.     @active_battler = @action_battlers.shift
  128.     # 如果已经在战斗之外的情况下
  129.     if @active_battler.index == nil
  130.       return
  131.     end
  132.     # 连续伤害
  133.     if @active_battler.hp > 0 and @active_battler.slip_damage?
  134.       @active_battler.slip_damage_effect
  135.       @active_battler.damage_pop = true
  136.     end
  137.     # 自然解除状态
  138.     @active_battler.remove_states_auto
  139.     # 刷新状态窗口
  140.     @status_window.refresh
  141.     # 移至步骤 2
  142.     @phase4_step = 2
  143.   end
  144.   #--------------------------------------------------------------------------
  145.   # ● 刷新画面 (主回合步骤 2 : 开始行动)
  146.   #--------------------------------------------------------------------------
  147.   def update_phase4_step2
  148.     # 如果不是强制行动
  149.     unless @active_battler.current_action.forcing
  150.       # 限制为 [敌人为普通攻击] 或 [我方为普通攻击] 的情况下
  151.       if @active_battler.restriction == 2 or @active_battler.restriction == 3
  152.         # 设置行动为攻击
  153.         @active_battler.current_action.kind = 0
  154.         @active_battler.current_action.basic = 0
  155.       end
  156.       # 限制为 [不能行动] 的情况下
  157.       if @active_battler.restriction == 4
  158.         # 清除行动强制对像的战斗者
  159.         $game_temp.forcing_battler = nil
  160.         # 移至步骤 1
  161.         @phase4_step = 1
  162.         return
  163.       end
  164.     end
  165.     # 清除对像战斗者
  166.     @target_battlers = []
  167.     # 行动种类分支
  168.     case @active_battler.current_action.kind
  169.     when 0  # 基本
  170.       make_basic_action_result
  171.     when 1  # 特技
  172.       make_skill_action_result
  173.     when 2  # 物品
  174.       make_item_action_result
  175.     end
  176.     # 移至步骤 3
  177.     if @phase4_step == 2
  178.       @phase4_step = 3
  179.     end
  180.   end
  181.   #--------------------------------------------------------------------------
  182.   # ● 生成基本行动结果
  183.   #--------------------------------------------------------------------------
  184.   def make_basic_action_result
  185.     @battler_cp.stop = true
  186.     # 攻击的情况下
  187.     if @active_battler.current_action.basic == 0
  188.       # 设置攻击 ID
  189.       @animation1_id = @active_battler.animation1_id
  190.       @animation2_id = @active_battler.animation2_id
  191.       # 行动方的战斗者是敌人的情况下
  192.       if @active_battler.is_a?(Game_Enemy)
  193.         if @active_battler.restriction == 3
  194.           target = $game_troop.random_target_enemy
  195.         elsif @active_battler.restriction == 2
  196.           target = $game_party.random_target_actor
  197.         else
  198.           index = @active_battler.current_action.target_index
  199.           target = $game_party.smooth_target_actor(index)
  200.         end
  201.       end
  202.       # 行动方的战斗者是角色的情况下
  203.       if @active_battler.is_a?(Game_Actor)
  204.         if @active_battler.restriction == 3
  205.           target = $game_party.random_target_actor
  206.         elsif @active_battler.restriction == 2
  207.           target = $game_troop.random_target_enemy
  208.         else
  209.           index = @active_battler.current_action.target_index
  210.           target = $game_troop.smooth_target_enemy(index)
  211.         end
  212.       end
  213.       # 设置对像方的战斗者序列
  214.       @target_battlers = [target]
  215.       # 应用通常攻击效果
  216.       for target in @target_battlers
  217.         target.attack_effect(@active_battler)
  218.       end
  219.       return
  220.     end
  221.     # 防御的情况下
  222.     if @active_battler.current_action.basic == 1
  223.       # 帮助窗口显示"防御"
  224.       @help_window.set_text($data_system.words.guard, 1)
  225.       return
  226.     end
  227.     # 逃跑的情况下
  228.     if @active_battler.is_a?(Game_Enemy) and
  229.        @active_battler.current_action.basic == 2
  230.       #  帮助窗口显示"逃跑"
  231.       @help_window.set_text("逃跑", 1)
  232.       # 逃跑
  233.       @active_battler.escape
  234.       return
  235.     end
  236.     # 什么也不做的情况下
  237.     if @active_battler.current_action.basic == 3
  238.       # 清除强制行动对像的战斗者
  239.       $game_temp.forcing_battler = nil
  240.       # 移至步骤 1
  241.       @phase4_step = 1
  242.       return
  243.     end
  244.   end
  245.   #--------------------------------------------------------------------------
  246.   # ● 设置物品或特技对像方的战斗者
  247.   #     scope : 特技或者是物品的范围
  248.   #--------------------------------------------------------------------------
  249.   def set_target_battlers(scope)
  250.     @battler_cp.stop = true
  251.     # 行动方的战斗者是敌人的情况下
  252.     if @active_battler.is_a?(Game_Enemy)
  253.       # 效果范围分支
  254.       case scope
  255.       when 1  # 敌单体
  256.         index = @active_battler.current_action.target_index
  257.         @target_battlers.push($game_party.smooth_target_actor(index))
  258.       when 2  # 敌全体
  259.         for actor in $game_party.actors
  260.           if actor.exist?
  261.             @target_battlers.push(actor)
  262.           end
  263.         end
  264.       when 3  # 我方单体
  265.         index = @active_battler.current_action.target_index
  266.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  267.       when 4  # 我方全体
  268.         for enemy in $game_troop.enemies
  269.           if enemy.exist?
  270.             @target_battlers.push(enemy)
  271.           end
  272.         end
  273.       when 5  # 我方单体 (HP 0)
  274.         index = @active_battler.current_action.target_index
  275.         enemy = $game_troop.enemies[index]
  276.         if enemy != nil and enemy.hp0?
  277.           @target_battlers.push(enemy)
  278.         end
  279.       when 6  # 我方全体 (HP 0)
  280.         for enemy in $game_troop.enemies
  281.           if enemy != nil and enemy.hp0?
  282.             @target_battlers.push(enemy)
  283.           end
  284.         end
  285.       when 7  # 使用者
  286.         @target_battlers.push(@active_battler)
  287.       end
  288.     end
  289.     # 行动方的战斗者是角色的情况下
  290.     if @active_battler.is_a?(Game_Actor)
  291.       # 效果范围分支
  292.       case scope
  293.       when 1  # 敌单体
  294.         index = @active_battler.current_action.target_index
  295.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  296.       when 2  # 敌全体
  297.         for enemy in $game_troop.enemies
  298.           if enemy.exist?
  299.             @target_battlers.push(enemy)
  300.           end
  301.         end
  302.       when 3  # 我方单体
  303.         index = @active_battler.current_action.target_index
  304.         @target_battlers.push($game_party.smooth_target_actor(index))
  305.       when 4  # 我方全体
  306.         for actor in $game_party.actors
  307.           if actor.exist?
  308.             @target_battlers.push(actor)
  309.           end
  310.         end
  311.       when 5  # 我方单体 (HP 0)
  312.         index = @active_battler.current_action.target_index
  313.         actor = $game_party.actors[index]
  314.         if actor != nil and actor.hp0?
  315.           @target_battlers.push(actor)
  316.         end
  317.       when 6  # 我方全体 (HP 0)
  318.         for actor in $game_party.actors
  319.           if actor != nil and actor.hp0?
  320.             @target_battlers.push(actor)
  321.           end
  322.         end
  323.       when 7  # 使用者
  324.         @target_battlers.push(@active_battler)
  325.       end
  326.     end
  327.   end
  328.   #--------------------------------------------------------------------------
  329.   # ● 生成特技行动结果
  330.   #--------------------------------------------------------------------------
  331.   def make_skill_action_result
  332.     @battler_cp.stop = true
  333.     # 获取特技
  334.     @skill = $data_skills[@active_battler.current_action.skill_id]
  335.     # 如果不是强制行动
  336.     unless @active_battler.current_action.forcing
  337.       # 因为 SP 耗尽而无法使用的情况下
  338.       unless @active_battler.skill_can_use?(@skill.id)
  339.         # 清除强制行动对像的战斗者
  340.         $game_temp.forcing_battler = nil
  341.         # 移至步骤 1
  342.         @phase4_step = 1
  343.         return
  344.       end
  345.     end
  346.     # 消耗 SP
  347.     @active_battler.sp -= @skill.sp_cost
  348.     # 刷新状态窗口
  349.     @status_window.refresh
  350.     # 在帮助窗口显示特技名
  351.     @help_window.set_text(@skill.name, 1)
  352.     # 设置动画 ID
  353.     @animation1_id = @skill.animation1_id
  354.     @animation2_id = @skill.animation2_id
  355.     # 设置公共事件 ID
  356.     @common_event_id = @skill.common_event_id
  357.     # 设置对像侧战斗者
  358.     set_target_battlers(@skill.scope)
  359.     # 应用特技效果
  360.     for target in @target_battlers
  361.       target.skill_effect(@active_battler, @skill)
  362.     end
  363.   end
  364.   #--------------------------------------------------------------------------
  365.   # ● 生成物品行动结果
  366.   #--------------------------------------------------------------------------
  367.   def make_item_action_result
  368.     # 获取物品
  369.     @item = $data_items[@active_battler.current_action.item_id]
  370.     # 因为物品耗尽而无法使用的情况下
  371.     unless $game_party.item_can_use?(@item.id)
  372.       # 移至步骤 1
  373.       @phase4_step = 1
  374.       return
  375.     end
  376.     # 消耗品的情况下
  377.     if @item.consumable
  378.       # 使用的物品减 1
  379.       $game_party.lose_item(@item.id, 1)
  380.     end
  381.     # 在帮助窗口显示物品名
  382.     @help_window.set_text(@item.name, 1)
  383.     # 设置动画 ID
  384.     @animation1_id = @item.animation1_id
  385.     @animation2_id = @item.animation2_id
  386.     # 设置公共事件 ID
  387.     @common_event_id = @item.common_event_id
  388.     # 确定对像
  389.     index = @active_battler.current_action.target_index
  390.     target = $game_party.smooth_target_actor(index)
  391.     # 设置对像侧战斗者
  392.     set_target_battlers(@item.scope)
  393.     # 应用物品效果
  394.     for target in @target_battlers
  395.       target.item_effect(@item)
  396.     end
  397.   end
  398.   #--------------------------------------------------------------------------
  399.   # ● 刷新画面 (主回合步骤 3 : 行动方动画)
  400.   #--------------------------------------------------------------------------
  401.   def update_phase4_step3
  402.     if @active_battler.current_action.basic == 0 and
  403.       @active_battler.current_action.kind == 0
  404.       @active_battler.startactive = "移动"
  405.       @_move_duration = Move_Duration
  406.       ox,oy = @active_battler.screen_x,@active_battler.screen_y
  407.       @oldxy = [@active_battler.screen_x,@active_battler.screen_y]
  408.       while @_move_duration > 0
  409.         Graphics.update
  410.         Input.update
  411.         @spriteset.update
  412.         tag = [@target_battlers[0].screen_x,@target_battlers[0].screen_y]
  413.         move(@active_battler, tag, ox, oy)
  414.         @_move_duration -= 1
  415.       end
  416.       @active_battler.startactive = "待机"
  417.     end
  418.     # 行动方动画 (ID 为 0 的情况下是白色闪烁)
  419.     if @animation1_id == 0
  420.       @active_battler.white_flash = true
  421.     else
  422.       @active_battler.animation_id = @animation1_id
  423.       @active_battler.animation_hit = true
  424.     end
  425.     for target in @target_battlers
  426.       target.animation_id = @animation2_id
  427.       target.animation_hit = (target.damage != "Miss")
  428.     end
  429.     # 移至步骤 4
  430.     @phase4_step = 4
  431.   end
  432.   #--------------------------------------------------------------------------
  433.   # ● 刷新画面 (主回合步骤 4 : 对像方动画)
  434.   #--------------------------------------------------------------------------
  435.   def update_phase4_step4
  436.     # 刷新状态窗口
  437.     @status_window.refresh
  438.     # 对像方动画
  439.     for target in @target_battlers
  440.       #target.animation_id = @animation2_id
  441.       #target.animation_hit = (target.damage != "Miss")
  442.       if target.damage != nil
  443.         target.damage_pop = true
  444.         if target.damage != "Miss"
  445.           r = rand(5)+10
  446.           for i in 1..r
  447.             Graphics.update
  448.             Input.update
  449.             update
  450.             target.cp -= 1
  451.             @battler_cp.ttbar[target].y = (142 - (target.cp * 135 / target.maxcp)) + 32-7
  452.           end
  453.         end
  454.       end
  455.     end
  456.     if @active_battler.current_action.basic == 0 and
  457.       @active_battler.current_action.kind == 0
  458.       @active_battler.startactive = "返回"
  459.       @_move_duration = Move_Duration
  460.       ox,oy = @active_battler.screen_x - @active_battler.movex,\
  461.       @active_battler.screen_y - @active_battler.movey
  462.       while @_move_duration > 0
  463.         Graphics.update
  464.         Input.update
  465.         @spriteset.update
  466.         move(@active_battler, @oldxy, ox, oy, true)
  467.         @_move_duration -= 1
  468.       end
  469.       @active_battler.startactive = "待机"
  470.     end
  471.     # 限制动画长度、最低 8 帧
  472.     #@wait_count = 4
  473.     # 移至步骤 5
  474.     @phase4_step = 5
  475.   end
  476.   #--------------------------------------------------------------------------
  477.   # ● 刷新画面 (主回合步骤 5 : 显示伤害)
  478.   #--------------------------------------------------------------------------
  479.   def update_phase4_step5
  480.     # 隐藏帮助窗口
  481.     @help_window.visible = false
  482.     @phase4_step = 6
  483.     return
  484.     # 显示伤害
  485.     for target in @target_battlers
  486.       if target.damage != nil
  487.         target.damage_pop = true
  488.         if target.damage != "Miss"
  489.           r = rand(5)+10
  490.           for i in 1..r
  491.             Graphics.update
  492.             Input.update
  493.             update
  494.             target.cp -= 1
  495.             @battler_cp.ttbar[target].y = (142 - (target.cp * 135 / target.maxcp)) + 32-7
  496.           end
  497.         end
  498.       end
  499.     end
  500.     # 移至步骤 6
  501.     @phase4_step = 6
  502.   end
  503.   #--------------------------------------------------------------------------
  504.   # ● 刷新画面 (主回合步骤 6 : 刷新)
  505.   #--------------------------------------------------------------------------
  506.   def update_phase4_step6
  507.     @battler_cp.stop = false
  508.     # 清除强制行动对像的战斗者
  509.     $game_temp.forcing_battler = nil
  510.     @battler_cp.refresh[@active_battler] = true
  511.     @active_battler.cp = 0
  512.     @active_battler.movex = 0
  513.     @active_battler.movey = 0
  514.     # 公共事件 ID 有效的情况下
  515.     if @common_event_id > 0
  516.       # 设置事件
  517.       common_event = $data_common_events[@common_event_id]
  518.       $game_system.battle_interpreter.setup(common_event.list, 0)
  519.     end
  520.     # 移至步骤 1
  521.     @phase4_step = 1
  522.   end
  523.   #--------------------------------------------------------------------------
  524.   # ● 移动 (攻击者) (被攻击者)#(active_battler.width / 2)
  525.   #--------------------------------------------------------------------------
  526.   def move(active_battler, target, ox, oy, 返回标记 = false)
  527.     ta_x = target[0]
  528.     ta_y = target[1]
  529.     if 返回标记
  530.       active_battler.movex = (active_battler.movex * (@_move_duration - 1) + ta_x.to_f - ox) / @_move_duration
  531.       active_battler.movey = (active_battler.movey * (@_move_duration - 1) + ta_y.to_f - oy) / @_move_duration
  532.     else
  533.       if @active_battler.is_a?(Game_Enemy)
  534.         active_battler.movex = (active_battler.movex * (@_move_duration - 1) + ta_x.to_f - ox - (active_battler.width / 2.5)) / @_move_duration
  535.         active_battler.movey = (active_battler.movey * (@_move_duration - 1) + ta_y.to_f - oy - (active_battler.height / 5.5)) / @_move_duration
  536.       else
  537.         active_battler.movex = (active_battler.movex * (@_move_duration - 1) + ta_x.to_f - ox + (active_battler.width / 2.5)) / @_move_duration
  538.         active_battler.movey = (active_battler.movey * (@_move_duration - 1) + ta_y.to_f - oy + (active_battler.height / 5.5)) / @_move_duration
  539.       end
  540.     end
  541.   end
  542. end
复制代码

作者: 小天天    时间: 2007-3-17 19:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: 神思    时间: 2007-3-17 19:47
发现不好做啊```因为每个人的站斗图大小都不一样````很难准确的找到每一个人脚下的位置
算了`不搞了``等哪个好心人来做吧```
作者: 小天天    时间: 2007-3-18 20:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: doranikofu    时间: 2007-3-19 07:50
唔 45度的 收走看看
感谢LZ~
作者: doranikofu    时间: 2007-3-20 07:59
貌似发现一个BUG
蓄劲条上若不同角色用不同的小头像
实际上会在2号角色上同时显示两个角色的小头像,并且2号角色的头像在下面— —

截了张图 我改成横板的了
只有蓄满时才会正常显示 实际上这个时候1号角色的头像还在下面 只是z变化让他到前面来了。仔细看下半张 当前活动角色的脑袋下面实际上还看得见拓跋玉儿的头发= =


作者: 小天天    时间: 2007-3-20 18:58
提示: 作者被禁止或删除 内容自动屏蔽
作者: doranikofu    时间: 2007-3-20 22:32
以下引用doranikofu于2007-3-19 23:59:37的发言:
[本贴由作者于 2007-3-20 10:31:18 最后编辑]


仔细看了下是最上面显示index最大的人物小头像
应该是累加似的

还有一个BUG就是如果主角死亡,再复活时出错
在dispose里面把Actor的部分也给dispose掉了
应该弄个条件分歧把actor分开处理
作者: 果汁分你一半    时间: 2007-3-23 01:22
提示: 作者被禁止或删除 内容自动屏蔽
作者: 神思    时间: 2007-3-23 06:05
以下引用doranikofu于2007-3-19 23:59:37的发言:

貌似发现一个BUG
蓄劲条上若不同角色用不同的小头像
实际上会在2号角色上同时显示两个角色的小头像,并且2号角色的头像在下面— —

截了张图 我改成横板的了
只有蓄满时才会正常显示 实际上这个时候1号角色的头像还在下面 只是z变化让他到前面来了。仔细看下半张 当前活动角色的脑袋下面实际上还看得见拓跋玉儿的头发= =




[本贴由作者于 2007-3-20 10:31:18 最后编辑]

那是因为高速缓存会把Bitmap对象里的东西给保存起来```更新后的那个没这个问题`



关系dispose后会出错的那个问题``你把那个dispose去掉```加上一个把visible设置为假`
然后复活后再显示出来```最近没空-____-看看哪个好心帮你改吧``
作者: 美兽    时间: 2007-3-23 06:09
那是因为高速缓存会把Bitmap对象里的东西给保存起来```更新后的那个没这个问题`


高速缓存返回的是对象引用,MS不进行显示是不会出来的.

作者: doranikofu    时间: 2007-3-23 07:29
以下引用神思于2007-3-22 22:05:32的发言:
那是因为高速缓存会把Bitmap对象里的东西给保存起来```更新后的那个没这个问题`

关系dispose后会出错的那个问题``你把那个dispose去掉```加上一个把visible设置为假`
然后复活后再显示出来```最近没空-____-看看哪个好心帮你改吧``

OTL…我还以为那个是另外一个工程{/gg}
多谢了
那个dispose的我改好了的说—3—
只是我战斗测试结束的时候还是会莫名其妙的出现程序未响应...

  1. #第一处
  2.         if @ttbar.include?(battler) and battler.is_a?(Game_Enemy)
  3.           @ttbar[battler].collapse
  4.           #@ttbar[battler].dispose
  5.           #@ttbar.delete(battler)
  6.         end
  7. ##############
  8.         if battler.is_a?(Game_Actor)
  9.           @ttbar[battler].blend_type = 1
  10.           @ttbar[battler].x = 45 #横板CP条 回到初始坐标
  11.         end
  12. ##########
  13. #第二处
  14.       @ttbar[battler].visible = true if @ttbar[battler].visible == false
  15. ###########
  16.       @ttbar[battler].blend_type = 0 if !battler.dead?
  17. ###########
  18.       @ttbar[battler].x  = ( 514 * battler.cp / 65535 + 45) if !battler.dead?
复制代码


作者: 超越时空    时间: 2007-4-7 05:36
能弄些 受伤、死亡 图之类的吗?
作者: ls_ryan    时间: 2007-4-7 09:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: gpra8764    时间: 2007-4-8 00:20
提示: 作者被禁止或删除 内容自动屏蔽
作者: 懒散王    时间: 2007-6-1 23:59
不知道原理,不会用
作者: 冻咖啡    时间: 2007-6-21 03:47
问个问题,如果要让跑过去和跑回来的图像不一样要怎么弄。。。
作者: FDevil    时间: 2007-6-23 01:14
{/se}谢了~ 这个真是个好东西!!!
作者: koalli    时间: 2007-6-28 17:41
怎么把CP条移到下面点的地方啊?
作者: angelc    时间: 2007-6-30 23:37
我提取的CP条
为什么都是图标全部上升到了顶部,才能攻击~~~
作者: yicixing    时间: 2007-8-17 04:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: 败笔    时间: 2007-8-18 09:10
我又重新下载了,攻击后怎么不返回?
作者: qwqw9300    时间: 2007-9-3 00:54
我用的1.02RM,
为什么我打不开?
作者: 心情de对白    时间: 2007-12-20 01:24
下载连接链为0
作者: 空气    时间: 2008-2-10 23:57
横版战斗,自己制作动画
作者: 花王子    时间: 2008-2-15 10:28
可不可以改成横版的????
作者: Jousun    时间: 2008-2-28 16:49
神思大人能否实现普通攻击也采用待机和移动这样的方式......
作者: 好凑或不孬    时间: 2008-8-27 22:07
有一个错误!战斗时不能复活,请改一下。{/wx}
作者: 好凑或不孬    时间: 2008-8-27 23:38
神思大人,不知道有个BUG发现没有?
就是在战斗时一复活就会出现脚本错误,我以前看到过类似BUG得修改,但自己还是不会
,请神思大人有空时修改一下。{/wx}
作者: 19层地狱    时间: 2009-2-8 18:03
提示: 作者被禁止或删除 内容自动屏蔽
作者: 苏维埃战士    时间: 2009-7-17 20:47
提示: 作者被禁止或删除 内容自动屏蔽
作者: luanbu    时间: 2009-10-23 15:33
CP系统存在问题,当主角和魔物方同时到达攻击时,主角优先攻击。
如果主角攻击当前CP值满的魔物,按理说魔物被攻击时CP值应该向后推移。
但脚本判定魔物CP值已经满啦,魔物没能做出攻击动作,魔物CP值也没减游戏就卡住啦。
作者: 火儿    时间: 2010-7-28 07:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: zsqw209    时间: 2010-7-28 09:54
。。。。。。。。。。。。。。。怎么。。。。。。。。。我打开不了
作者: 涂鸦boy    时间: 2010-8-1 14:33
回复 苏维埃战士 的帖子

这个真移位系统是在基础系统上改的
不是外挂式的脚本
要用的话最好直接使用LZ的工程上做游戏
   
作者: 谷绿    时间: 2010-8-14 16:01
先瞻仰神思大大一个~`:kiss:
引用:
CP系统存在问题,当主角和魔物方同时到达攻击时,主角优先攻击。
如果主角攻击当前CP值满的魔物,按理说魔物被攻击时CP值应该向后推移。
但脚本判定魔物CP值已经满啦,魔物没能做出攻击动作,魔物CP值也没减游戏就卡住啦。

求解决办法````:'(




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