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

Project1

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

[已经解决] 如何能让状态在公共事件之后刷新或者持续回合数减一?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1308
在线时间
354 小时
注册时间
2009-9-14
帖子
328
跳转到指定楼层
发表于 2018-4-22 15:15:50 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
20星屑
要怎么改才能实现?
比如一个技能附带个公共事件
然后公共事件给角色上了一个持续一回合的状态,并有概率强制角色释放一个技能
最后附带的技能释放完后,,把那个状态给消耗掉了。。。
所以怎么才能让状态在角色动作结束后,所有的公共事件都执行完毕后再刷新状态?

Lv3.寻梦者

梦石
0
星屑
1308
在线时间
354 小时
注册时间
2009-9-14
帖子
328
12
 楼主| 发表于 2018-4-24 16:32:48 | 只看该作者
灯笼菜刀王 发表于 2018-4-24 00:53
因为公共事件执行就马上跳到 主回合步骤一, 而步骤一 检测到没有敌人就直接胜利了, 所以只要 ...

咱俩都绕圈子了。。。
其实只需要加一句等待就行了。。。

点评

或者,咱记得的有一句判断动画是否播完的,判断播完后再扣HP就可以了  发表于 2018-4-24 17:19
那也还是要加等待~ 否则HP一扣就胜利了  发表于 2018-4-24 17:17
可以先执行damage,animation_id等设置,最后执行hp的扣除~  发表于 2018-4-24 17:12
嗯,执行公共事件中也是return false的,加上等待让公共事件等到动画完成再结束确实可行  发表于 2018-4-24 16:47
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1308
在线时间
354 小时
注册时间
2009-9-14
帖子
328
11
 楼主| 发表于 2018-4-23 23:29:30 | 只看该作者
灯笼菜刀王 发表于 2018-4-23 22:19
额, 因为状态是在回合开始的时候解除的, 而强制行动-马上行动 会把角色再一次拉到回合开始, 等于他进行了 ...

第一个是现在的效果。。。



第二个是我希望的效果。。。

回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1308
在线时间
354 小时
注册时间
2009-9-14
帖子
328
10
 楼主| 发表于 2018-4-23 23:22:47 | 只看该作者
灯笼菜刀王 发表于 2018-4-23 23:05
CP制的回合本来就比较混乱.....

要不你就用方法2, 设置2回合, 然后用楼上斑竹给的那个方法, 在公共事件 ...

我已经蒙B了

然后我还有个方法,,就是用播放动画和伤害处理还模拟附带的技能

就像这样


然后,,,虽然这么弄基本可以实现,,,就是

第一个是没有技能名的显示,这个倒是无关紧要。。。

第二个是,,被这个动画和伤害处理模拟的技能打死的敌人,,,还没等死透呢结算面板就急着蹦出来。。。
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39016
在线时间
5717 小时
注册时间
2006-11-10
帖子
6619
9
发表于 2018-4-23 23:05:16 | 只看该作者
CR~ 发表于 2018-4-23 22:52
额。。。我一开始弄的跟这样差不多,,,
然后就有这样的问题。。
比如:

CP制的回合本来就比较混乱.....

要不你就用方法2, 设置2回合, 然后用楼上斑竹给的那个方法, 在公共事件里手动调用一次人为制造"第二回合A效果"

这样就变成  回合1, A 有效, B有效,(清除状态) 回合2, A无效, B无效
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1308
在线时间
354 小时
注册时间
2009-9-14
帖子
328
8
 楼主| 发表于 2018-4-23 22:52:51 | 只看该作者
本帖最后由 CR~ 于 2018-4-23 22:55 编辑
灯笼菜刀王 发表于 2018-4-23 22:19
额, 因为状态是在回合开始的时候解除的, 而强制行动-马上行动 会把角色再一次拉到回合开始, 等于他进行了 ...


额。。。我一开始弄的跟这样差不多,,,
然后就有这样的问题。。
比如:
伤害为0的状态持续一回合
第一个技能消耗掉状态,没伤害
强制行动的技能时状态已经没了,所以强制行动的技能有伤害

伤害为0的状态持续两回合
第一回合
第一个技能消耗掉状态一回合,没伤害
强制行动的技能未消耗状态,没伤害
第二回合
第一个技能消耗掉状态,没伤害
强制行动的技能时状态已经没了,所以强制行动的技能有伤害

而且我把    # 自然解除状态   这个放在了步骤6,,因为不放在步骤6的话,角色状态剩余0回合时,积攒CP条时会有状态的动画,,但是没效果,,不知道有没有什么影响。。。

RUBY 代码复制
  1. #==============================================================================
  2. # ■ Scene_Battle (分割定义 4)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的类。
  5. #==============================================================================
  6.  
  7. class Scene_Battle
  8.   #--------------------------------------------------------------------------
  9.   # ● 开始主回合
  10.   #--------------------------------------------------------------------------
  11.   attr_reader   :active_battler
  12.   attr_reader   :target_battlers
  13.   attr_reader   :help_window
  14.   def start_phase4
  15.     # 转移到回合 4
  16.     @phase = 4
  17.     # 回合数计数
  18.     $game_temp.battle_turn += 1
  19.     # 搜索全页的战斗事件
  20.     for index in 0...$data_troops[@troop_id].pages.size
  21.       # 获取事件页
  22.       page = $data_troops[@troop_id].pages[index]
  23.       # 本页的范围是 [回合] 的情况下
  24.       if page.span == 1
  25.         # 设置已经执行标志
  26.         $game_temp.battle_event_flags[index] = false
  27.       end
  28.     end
  29.     # 设置角色为非选择状态
  30.     @actor_index = -1
  31.     @active_battler = nil
  32.     # 有效化同伴指令窗口
  33.     @party_command_window.active = false
  34.     @party_command_window.visible = false
  35.     # 无效化角色指令窗口
  36.     @actor_command_window.active = false
  37.     @actor_command_window.visible = false
  38.     # 设置主回合标志
  39.     $game_temp.battle_main_phase = true
  40.     # 生成敌人行动
  41.     for enemy in $game_troop.enemies
  42.       enemy.make_action
  43.     end
  44.     # 生成行动顺序
  45.     make_action_orders
  46.     # 移动到步骤 1
  47.     @phase4_step = 1
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 生成行动循序
  51.   #--------------------------------------------------------------------------
  52.   def make_action_orders
  53.     # 初始化序列 @action_battlers
  54.     @action_battlers = []
  55.     # 添加敌人到 @action_battlers 序列
  56.     for enemy in $game_troop.enemies
  57.       @action_battlers.push(enemy)
  58.     end
  59.     # 添加角色到 @action_battlers 序列
  60.     for actor in $game_party.actors
  61.       @action_battlers.push(actor)
  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.     # 移至步骤 2
  138.     @phase4_step = 2
  139.   end
  140.   #--------------------------------------------------------------------------
  141.   # ● 刷新画面 (主回合步骤 2 : 开始行动)
  142.   #--------------------------------------------------------------------------
  143.   def update_phase4_step2
  144.     # 如果不是强制行动
  145.     unless @active_battler.current_action.forcing
  146.       # 限制为 [敌人为普通攻击] 或 [我方为普通攻击] 的情况下
  147.       if @active_battler.restriction == 2 or @active_battler.restriction == 3
  148.         # 设置行动为攻击
  149.         @active_battler.current_action.kind = 0
  150.         @active_battler.current_action.basic = 0
  151.       end
  152.       # 限制为 [不能行动] 的情况下
  153.       if @active_battler.restriction == 4
  154.         # 清除行动强制对像的战斗者
  155.         $game_temp.forcing_battler = nil
  156.         # 移至步骤 1
  157.         @phase4_step = 1
  158.         return
  159.       end
  160.     end
  161.     # 清除对像战斗者
  162.     @target_battlers = []
  163.     # 行动种类分支
  164.     case @active_battler.current_action.kind
  165.     when 0  # 基本
  166.       make_basic_action_result
  167.     when 1  # 特技
  168.       make_skill_action_result
  169.     when 2  # 物品
  170.       make_item_action_result
  171.     end
  172.     # 移至步骤 3
  173.     if @phase4_step == 2
  174.       @phase4_step = 3
  175.     end
  176.   end
  177.   #--------------------------------------------------------------------------
  178.   # ● 生成基本行动结果
  179.   #--------------------------------------------------------------------------
  180.   def make_basic_action_result
  181.     # 攻击的情况下
  182.     if @active_battler.current_action.basic == 0
  183.       # 设置攻击 ID
  184.       @animation1_id = @active_battler.animation1_id
  185.       @animation2_id = @active_battler.animation2_id
  186.       # 行动方的战斗者是敌人的情况下
  187.       if @active_battler.is_a?(Game_Enemy)
  188.         if @active_battler.restriction == 3
  189.           target = $game_troop.random_target_enemy
  190.         elsif @active_battler.restriction == 2
  191.           target = $game_party.random_target_actor
  192.         else
  193.           index = @active_battler.current_action.target_index
  194.           target = $game_party.smooth_target_actor(index)
  195.         end
  196.       end
  197.       # 行动方的战斗者是角色的情况下
  198.       if @active_battler.is_a?(Game_Actor)
  199.         if @active_battler.restriction == 3
  200.           target = $game_party.random_target_actor
  201.         elsif @active_battler.restriction == 2
  202.           target = $game_troop.random_target_enemy
  203.         else
  204.           index = @active_battler.current_action.target_index
  205.           target = $game_troop.smooth_target_enemy(index)
  206.         end
  207.       end
  208.       # 设置对像方的战斗者序列
  209.       @target_battlers = [target]
  210.       # 应用通常攻击效果
  211.       for target in @target_battlers
  212.         target.attack_effect(@active_battler)
  213.       end
  214.       return
  215.     end
  216.     # 防御的情况下
  217.     if @active_battler.current_action.basic == 1
  218.       # 帮助窗口显示"防御"
  219.       @help_window.set_text($data_system.words.guard, 1)
  220.       return
  221.     end
  222.     # 逃跑的情况下
  223.     if @active_battler.is_a?(Game_Enemy) and
  224.        @active_battler.current_action.basic == 2
  225.       #  帮助窗口显示"逃跑"
  226.       @help_window.set_text("逃跑", 1)
  227.       # 逃跑
  228.       @active_battler.escape
  229.       return
  230.     end
  231.     # 什么也不做的情况下
  232.     if @active_battler.current_action.basic == 3
  233.       # 清除强制行动对像的战斗者
  234.       $game_temp.forcing_battler = nil
  235.       # 移至步骤 1
  236.       @phase4_step = 1
  237.       return
  238.     end
  239.   end
  240.   #--------------------------------------------------------------------------
  241.   # ● 设置物品或特技对像方的战斗者
  242.   #     scope : 特技或者是物品的范围
  243.   #--------------------------------------------------------------------------
  244.   def set_target_battlers(scope)
  245.     # 行动方的战斗者是敌人的情况下
  246.     if @active_battler.is_a?(Game_Enemy)
  247.       # 效果范围分支
  248.       case scope
  249.       when 1  # 敌单体
  250.         index = @active_battler.current_action.target_index
  251.         @target_battlers.push($game_party.smooth_target_actor(index))
  252.       when 2  # 敌全体
  253.         for actor in $game_party.actors
  254.           if actor.exist?
  255.             @target_battlers.push(actor)
  256.           end
  257.         end
  258.       when 3  # 我方单体
  259.         index = @active_battler.current_action.target_index
  260.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  261.       when 4  # 我方全体
  262.         for enemy in $game_troop.enemies
  263.           if enemy.exist?
  264.             @target_battlers.push(enemy)
  265.           end
  266.         end
  267.       when 5  # 我方单体 (HP 0)
  268.         index = @active_battler.current_action.target_index
  269.         enemy = $game_troop.enemies[index]
  270.         if enemy != nil and enemy.hp0?
  271.           @target_battlers.push(enemy)
  272.         end
  273.       when 6  # 我方全体 (HP 0)
  274.         for enemy in $game_troop.enemies
  275.           if enemy != nil and enemy.hp0?
  276.             @target_battlers.push(enemy)
  277.           end
  278.         end
  279.       when 7  # 使用者
  280.         @target_battlers.push(@active_battler)
  281.       end
  282.     end
  283.     # 行动方的战斗者是角色的情况下
  284.     if @active_battler.is_a?(Game_Actor)
  285.       # 效果范围分支
  286.       case scope
  287.       when 1  # 敌单体
  288.         index = @active_battler.current_action.target_index
  289.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  290.       when 2  # 敌全体
  291.         for enemy in $game_troop.enemies
  292.           if enemy.exist?
  293.             @target_battlers.push(enemy)
  294.           end
  295.         end
  296.       when 3  # 我方单体
  297.         index = @active_battler.current_action.target_index
  298.         @target_battlers.push($game_party.smooth_target_actor(index))
  299.       when 4  # 我方全体
  300.         for actor in $game_party.actors
  301.           if actor.exist?
  302.             @target_battlers.push(actor)
  303.           end
  304.         end
  305.       when 5  # 我方单体 (HP 0)
  306.         index = @active_battler.current_action.target_index
  307.         actor = $game_party.actors[index]
  308.         if actor != nil and actor.hp0?
  309.           @target_battlers.push(actor)
  310.         end
  311.       when 6  # 我方全体 (HP 0)
  312.         for actor in $game_party.actors
  313.           if actor != nil and actor.hp0?
  314.             @target_battlers.push(actor)
  315.           end
  316.         end
  317.       when 7  # 使用者
  318.         @target_battlers.push(@active_battler)
  319.       end
  320.     end
  321.   end
  322.   #--------------------------------------------------------------------------
  323.   # ● 生成特技行动结果
  324.   #--------------------------------------------------------------------------
  325.   def make_skill_action_result
  326.     # 获取特技
  327.     @skill = $data_skills[@active_battler.current_action.skill_id]
  328.     # 如果不是强制行动
  329.     unless @active_battler.current_action.forcing
  330.       # 因为 SP 耗尽而无法使用的情况下
  331.       unless @active_battler.skill_can_use?(@skill.id)
  332.         # 清除强制行动对像的战斗者
  333.         $game_temp.forcing_battler = nil
  334.         # 移至步骤 1
  335.         @phase4_step = 1
  336.         return
  337.       end
  338.     end
  339.     # 消耗 SP
  340.     @active_battler.sp -= @skill.sp_cost
  341.     # 刷新状态窗口
  342.     @status_window.refresh
  343.     # 在帮助窗口显示特技名
  344.     @help_window.set_text(@skill.name, 1)
  345.         #####################################################################
  346.     if @skill.id == 118
  347.       common_event = $data_common_events[71]
  348.       $game_system.battle_interpreter.setup(common_event.list, 0)
  349.     end
  350.     if @skill.id == 127
  351.       common_event = $data_common_events[72]
  352.       $game_system.battle_interpreter.setup(common_event.list, 0)
  353.     end
  354.     if @skill.id == 129
  355.       common_event = $data_common_events[74]
  356.       $game_system.battle_interpreter.setup(common_event.list, 0)
  357.     end
  358.     if @skill.id == 130
  359.       common_event = $data_common_events[73]
  360.       $game_system.battle_interpreter.setup(common_event.list, 0)
  361.     end
  362.     if @skill.id == 131
  363.       common_event = $data_common_events[75]
  364.       $game_system.battle_interpreter.setup(common_event.list, 0)
  365.     end
  366.     if @skill.id == 132
  367.       common_event = $data_common_events[76]
  368.       $game_system.battle_interpreter.setup(common_event.list, 0)
  369.     end
  370.     if @skill.id == 135
  371.       common_event = $data_common_events[77]
  372.       $game_system.battle_interpreter.setup(common_event.list, 0)
  373.     end
  374.     if @skill.id == 152
  375.       common_event = $data_common_events[78]
  376.       $game_system.battle_interpreter.setup(common_event.list, 0)
  377.     end
  378.     if @skill.id == 154
  379.       common_event = $data_common_events[79]
  380.       $game_system.battle_interpreter.setup(common_event.list, 0)
  381.     end
  382.     if @skill.id == 401
  383.       common_event = $data_common_events[45]
  384.       $game_system.battle_interpreter.setup(common_event.list, 0)
  385.     end
  386.     if @skill.id == 168
  387.       common_event = $data_common_events[80]
  388.       $game_system.battle_interpreter.setup(common_event.list, 0)
  389.     end
  390.     if @skill.id == 169
  391.       common_event = $data_common_events[81]
  392.       $game_system.battle_interpreter.setup(common_event.list, 0)
  393.     end
  394.     if @skill.id == 171
  395.       common_event = $data_common_events[82]
  396.       $game_system.battle_interpreter.setup(common_event.list, 0)
  397.     end
  398.     if @skill.id == 172
  399.       common_event = $data_common_events[83]
  400.       $game_system.battle_interpreter.setup(common_event.list, 0)
  401.     end
  402.     if @skill.id == 176
  403.       common_event = $data_common_events[84]
  404.       $game_system.battle_interpreter.setup(common_event.list, 0)
  405.     end
  406.         if @skill.id == 189
  407.       common_event = $data_common_events[85]
  408.       $game_system.battle_interpreter.setup(common_event.list, 0)
  409.     end
  410.         if @skill.id == 190
  411.       common_event = $data_common_events[86]
  412.       $game_system.battle_interpreter.setup(common_event.list, 0)
  413.     end
  414.             if @skill.id == 192
  415.       common_event = $data_common_events[87]
  416.       $game_system.battle_interpreter.setup(common_event.list, 0)
  417.     end
  418.                 if @skill.id == 194
  419.       common_event = $data_common_events[88]
  420.       $game_system.battle_interpreter.setup(common_event.list, 0)
  421.     end
  422.     if @skill.id == 330
  423.       common_event = $data_common_events[89]
  424.       $game_system.battle_interpreter.setup(common_event.list, 0)
  425.     end
  426.         if @skill.id == 332
  427.       common_event = $data_common_events[90]
  428.       $game_system.battle_interpreter.setup(common_event.list, 0)
  429.     end
  430.             if @skill.id == 333
  431.       common_event = $data_common_events[91]
  432.       $game_system.battle_interpreter.setup(common_event.list, 0)
  433.     end
  434.                 if @skill.id == 334
  435.       common_event = $data_common_events[89]
  436.       $game_system.battle_interpreter.setup(common_event.list, 0)
  437.     end
  438.                     if @skill.id == 210
  439.       common_event = $data_common_events[92]
  440.       $game_system.battle_interpreter.setup(common_event.list, 0)
  441.     end
  442.                         if @skill.id == 211
  443.       common_event = $data_common_events[92]
  444.       $game_system.battle_interpreter.setup(common_event.list, 0)
  445.     end
  446.                             if @skill.id == 212
  447.       common_event = $data_common_events[92]
  448.       $game_system.battle_interpreter.setup(common_event.list, 0)
  449.     end
  450.                                 if @skill.id == 851
  451.       common_event = $data_common_events[93]
  452.       $game_system.battle_interpreter.setup(common_event.list, 0)
  453.     end
  454.                                     if @skill.id == 852
  455.       common_event = $data_common_events[93]
  456.       $game_system.battle_interpreter.setup(common_event.list, 0)
  457.     end
  458.                                     if @skill.id == 853
  459.       common_event = $data_common_events[93]
  460.       $game_system.battle_interpreter.setup(common_event.list, 0)
  461.     end
  462.                                     if @skill.id == 854
  463.       common_event = $data_common_events[93]
  464.       $game_system.battle_interpreter.setup(common_event.list, 0)
  465.     end
  466.                                     if @skill.id == 855
  467.       common_event = $data_common_events[93]
  468.       $game_system.battle_interpreter.setup(common_event.list, 0)
  469.     end
  470.                                         if @skill.id == 850
  471.       common_event = $data_common_events[93]
  472.       $game_system.battle_interpreter.setup(common_event.list, 0)
  473.     end
  474.                                             if @skill.id == 871
  475.       common_event = $data_common_events[93]
  476.       $game_system.battle_interpreter.setup(common_event.list, 0)
  477.     end
  478.                                             if @skill.id == 872
  479.       common_event = $data_common_events[93]
  480.       $game_system.battle_interpreter.setup(common_event.list, 0)
  481.     end
  482.                                             if @skill.id == 873
  483.       common_event = $data_common_events[93]
  484.       $game_system.battle_interpreter.setup(common_event.list, 0)
  485.     end
  486.                                             if @skill.id == 874
  487.       common_event = $data_common_events[93]
  488.       $game_system.battle_interpreter.setup(common_event.list, 0)
  489.     end
  490.                                             if @skill.id == 875
  491.       common_event = $data_common_events[93]
  492.       $game_system.battle_interpreter.setup(common_event.list, 0)
  493.     end
  494.                                                 if @skill.id == 876
  495.       common_event = $data_common_events[93]
  496.       $game_system.battle_interpreter.setup(common_event.list, 0)
  497.     end
  498.                                                 if @skill.id == 877
  499.       common_event = $data_common_events[93]
  500.       $game_system.battle_interpreter.setup(common_event.list, 0)
  501.     end
  502.                                                 if @skill.id == 878
  503.       common_event = $data_common_events[93]
  504.       $game_system.battle_interpreter.setup(common_event.list, 0)
  505.     end
  506.                                                 if @skill.id == 879
  507.       common_event = $data_common_events[93]
  508.       $game_system.battle_interpreter.setup(common_event.list, 0)
  509.     end
  510.                                                 if @skill.id == 880
  511.       common_event = $data_common_events[93]
  512.       $game_system.battle_interpreter.setup(common_event.list, 0)
  513.       end
  514.                                                       if @skill.id == 508
  515.       common_event = $data_common_events[94]
  516.       $game_system.battle_interpreter.setup(common_event.list, 0)
  517.     end
  518.                                                           if @skill.id == 510
  519.       common_event = $data_common_events[94]
  520.       $game_system.battle_interpreter.setup(common_event.list, 0)
  521.     end
  522.                                                           if @skill.id == 509
  523.       common_event = $data_common_events[95]
  524.       $game_system.battle_interpreter.setup(common_event.list, 0)
  525.     end
  526.                                                               if @skill.id == 360
  527.       common_event = $data_common_events[96]
  528.       $game_system.battle_interpreter.setup(common_event.list, 0)
  529.     end
  530.                 if @skill.id == 361
  531.       common_event = $data_common_events[96]
  532.       $game_system.battle_interpreter.setup(common_event.list, 0)
  533.     end
  534.                     if @skill.id == 362
  535.       common_event = $data_common_events[97]
  536.       $game_system.battle_interpreter.setup(common_event.list, 0)
  537.     end
  538.                         if @skill.id == 382
  539.       common_event = $data_common_events[98]
  540.       $game_system.battle_interpreter.setup(common_event.list, 0)
  541.     end
  542.                             if @skill.id == 384
  543.       common_event = $data_common_events[98]
  544.       $game_system.battle_interpreter.setup(common_event.list, 0)
  545.     end
  546.                             if @skill.id == 385
  547.       common_event = $data_common_events[98]
  548.       $game_system.battle_interpreter.setup(common_event.list, 0)
  549.     end
  550.                             if @skill.id == 386
  551.       common_event = $data_common_events[98]
  552.       $game_system.battle_interpreter.setup(common_event.list, 0)
  553.     end
  554.                             if @skill.id == 388
  555.       common_event = $data_common_events[99]
  556.       $game_system.battle_interpreter.setup(common_event.list, 0)
  557.     end
  558.                                 if @skill.id == 1515
  559.       common_event = $data_common_events[100]
  560.       $game_system.battle_interpreter.setup(common_event.list, 0)
  561.     end
  562.                                     if @skill.id == 1516
  563.       common_event = $data_common_events[101]
  564.       $game_system.battle_interpreter.setup(common_event.list, 0)
  565.     end
  566.                                         if @skill.id == 1521
  567.       common_event = $data_common_events[102]
  568.       $game_system.battle_interpreter.setup(common_event.list, 0)
  569.     end
  570.                                           if @skill.id == 1522
  571.       common_event = $data_common_events[102]
  572.       $game_system.battle_interpreter.setup(common_event.list, 0)
  573.     end
  574.                                           if @skill.id == 1526
  575.       common_event = $data_common_events[102]
  576.       $game_system.battle_interpreter.setup(common_event.list, 0)
  577.     end
  578.                                           if @skill.id == 1530
  579.       common_event = $data_common_events[102]
  580.       $game_system.battle_interpreter.setup(common_event.list, 0)
  581.     end
  582.                                               if @skill.id == 1547
  583.       common_event = $data_common_events[103]
  584.       $game_system.battle_interpreter.setup(common_event.list, 0)
  585.     end
  586.                                                   if @skill.id == 1549
  587.       common_event = $data_common_events[104]
  588.       $game_system.battle_interpreter.setup(common_event.list, 0)
  589.     end
  590.                                                       if @skill.id == 1550
  591.       common_event = $data_common_events[106]
  592.       $game_system.battle_interpreter.setup(common_event.list, 0)
  593.     end
  594.                                                           if @skill.id == 1553
  595.       common_event = $data_common_events[105]
  596.       $game_system.battle_interpreter.setup(common_event.list, 0)
  597.     end
  598.                                    if @skill.id == 1554
  599.       common_event = $data_common_events[105]
  600.       $game_system.battle_interpreter.setup(common_event.list, 0)
  601.     end
  602.     ########
  603.     ##############################################################
  604.     # 设置动画 ID
  605.     @animation1_id = @skill.animation1_id
  606.     @animation2_id = @skill.animation2_id
  607.     # 设置公共事件 ID
  608.     @common_event_id = @skill.common_event_id
  609.     # 设置对像侧战斗者
  610.     set_target_battlers(@skill.scope)
  611.     # 应用特技效果
  612.     for target in @target_battlers
  613.       target.skill_effect(@active_battler, @skill)
  614.     end
  615.   end
  616.   #--------------------------------------------------------------------------
  617.   # ● 生成物品行动结果
  618.   #--------------------------------------------------------------------------
  619.   def make_item_action_result
  620.     # 获取物品
  621.     @item = $data_items[@active_battler.current_action.item_id]
  622.     # 因为物品耗尽而无法使用的情况下
  623.     unless $game_party.item_can_use?(@item.id)
  624.       # 移至步骤 1
  625.       @phase4_step = 1
  626.       return
  627.     end
  628.     # 消耗品的情况下
  629.     if @item.consumable
  630.       # 使用的物品减 1
  631.       $game_party.lose_item(@item.id, 1)
  632.     end
  633.     # 在帮助窗口显示物品名
  634.     @help_window.set_text(@item.name, 1)
  635.     # 设置动画 ID
  636.     @animation1_id = @item.animation1_id
  637.     @animation2_id = @item.animation2_id
  638.     # 设置公共事件 ID
  639.     @common_event_id = @item.common_event_id
  640.     # 确定对像
  641.     index = @active_battler.current_action.target_index
  642.     target = $game_party.smooth_target_actor(index)
  643.     # 设置对像侧战斗者
  644.     set_target_battlers(@item.scope)
  645.     # 应用物品效果
  646.     for target in @target_battlers
  647.       target.item_effect(@item)
  648.     end
  649.   end
  650. #--------------------------------------------------------------------------
  651.    # ● 刷新画面 (主回合步骤 3 : 行动方动画)
  652.    #--------------------------------------------------------------------------
  653.    def update_phase4_step3
  654.      # 行动方动画 (ID 为 0 的情况下是白色闪烁)
  655.      if @animation1_id == 0
  656.        @active_battler.white_flash = true
  657.      else
  658.        @active_battler.animation_id = @animation1_id
  659.        @active_battler.animation_hit = true
  660.      end
  661.      # 对像方动画
  662.      for target in @target_battlers
  663.        target.animation_id = @animation2_id
  664.        target.animation_hit = (target.damage != "Miss")
  665.      end
  666.      # 移至步骤 4
  667.      @phase4_step = 4
  668.    end
  669.    #--------------------------------------------------------------------------
  670.    # ● 刷新画面 (主回合步骤 4 : 对像方动画)
  671.    #--------------------------------------------------------------------------
  672.    def update_phase4_step4
  673.      # 限制动画长度、最低 8 帧
  674.      @wait_count = 8
  675.      # 移至步骤 5
  676.      @phase4_step = 5
  677.    end
  678.  
  679.   #--------------------------------------------------------------------------
  680.   # ● 刷新画面 (主回合步骤 5 : 显示伤害)
  681.   #--------------------------------------------------------------------------
  682.   def update_phase4_step5
  683.     # 隐藏帮助窗口
  684.     @help_window.visible = false
  685.     # 刷新状态窗口
  686.     @status_window.refresh
  687.     # 显示伤害
  688.     for target in @target_battlers
  689.       if target.damage != nil
  690.         target.damage_pop = true
  691.       end
  692.     end
  693.     # 移至步骤 6
  694.     @phase4_step = 6
  695.   end
  696.   #--------------------------------------------------------------------------
  697.   # ● 刷新画面 (主回合步骤 6 : 刷新)
  698.   #--------------------------------------------------------------------------
  699.   def update_phase4_step6
  700.     # 清除强制行动对像的战斗者
  701.     $game_temp.forcing_battler = nil
  702.         # 公共事件 ID 有效的情况下
  703.     if @common_event_id > 0
  704.       # 设置事件
  705.       common_event = $data_common_events[@common_event_id]
  706.       $game_system.battle_interpreter.setup(common_event.list, 0)
  707.     end
  708.         # 自然解除状态
  709. if  $game_switches[107] == false
  710.     # 自然解除状态
  711.     @active_battler.remove_states_auto
  712. end
  713.     # 刷新状态窗口
  714.     $game_switches[107] =false
  715.     @status_window.refresh
  716.     # 移至步骤 1
  717.     @phase4_step = 1
  718.   end
  719. end

点评

那你就把整个句子挪到步骤6那去, 然后开关关闭放到步骤1, 就是咱上面说的两个地方对调, 让状态到步骤6去恢复  发表于 2018-4-23 22:56
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39016
在线时间
5717 小时
注册时间
2006-11-10
帖子
6619
7
发表于 2018-4-23 22:19:44 | 只看该作者
本帖最后由 灯笼菜刀王 于 2018-4-23 22:30 编辑
CR~ 发表于 2018-4-23 21:55
可能是我没太说明白吧。。。


额, 因为状态是在回合开始的时候解除的, 而强制行动-马上行动 会把角色再一次拉到回合开始, 等于他进行了第二回合的行动

这样的话,可以试试给它加个开关,当开关开启的时候, 不自动解除状态

在scene battle4   找到下面 连续伤害的地方

if not $game_switches[编号]
    # 连续伤害
    if @active_battler.hp > 0 and @active_battler.slip_damage?
      @active_battler.slip_damage_effect
      @active_battler.damage_pop = true
    end
    # 自然解除状态
    @active_battler.remove_states_auto
end

把中间的那段用红色的字框起来,  这样 XX号开关关闭的时候,才正常消耗状态回合,顺便毒效果也一起套起来,免得出现一回合重复挨毒=.=

然后,在你的这个技能引用的公共事件里, 强制角色出招之前把XX号开关打开,就不会消耗状态了

最后,把这个脚本拉到最下面, 步骤6 清除强制行动者下面 加上这句   $game_switches[编号] = false   把开关关上,让状态恢复正常工作.

搞定收工~~

至于,想有几率出现强制攻击, 那只要用一个变量带入随机数, 然后判断这个变量是不是大于你要的几率,

是的话强制,不是的话解除状态, 就可以了. 你不是都做N多赌博事件了, 随机数用法应该很清楚了吧?

------------------------

你是想要一直随机连续下去, A用完后 50%可以接B,B用完后50%可以接C这样?

那可以用个变量来控制, A用完后, 变量+1, 然后随机数, 同时满足 随机判定成功 和变量==1的时候,才强制B, 然后变量再+1, 接着随机.........
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1308
在线时间
354 小时
注册时间
2009-9-14
帖子
328
6
 楼主| 发表于 2018-4-23 21:55:16 | 只看该作者
本帖最后由 CR~ 于 2018-4-23 21:58 编辑
灯笼菜刀王 发表于 2018-4-23 18:49
很难理解你要的效果

首先楼上那个问题, 状态是每回合-1的,你又要给它加1 干嘛呢... 真要这样,  ...


可能是我没太说明白吧。。。



就像图片这样,第一个技能带有公共事件,强制角色释放第二个技能。
图片上,主角身上有一个持续一回合的攻击力为0的状态,
但是第一个技能就把这个一回合的状态消耗掉了,导致通过公共事件释放的第二个技能没有这个状态的加成。


所以我想要的效果,,就是想让这两个技能加在一起只消耗了一个回合的状态。
然后这个技能的公共事件,是有一定概率释放第二个技能,,所以不知道该怎么弄。。。



点评

强制行动就可以了 再加个随机数 如果是单个角色的话 多个角色可以用脚本判断是不是这个角色  发表于 2024-10-31 18:30
画面感觉不错 设计的挺有趣的  发表于 2024-10-31 18:29
= =公共事件这么多不会卡么..........  发表于 2018-4-23 22:25
回复

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23994
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

5
发表于 2018-4-23 19:19:24 | 只看该作者
Game_Battler 第 216行:
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 状态自然解除 (回合改变时调用)
  3.   #--------------------------------------------------------------------------
  4.   def remove_states_auto
  5.     for i in @states_turn.keys.clone
  6.       if @states_turn[i] > 0
  7.         @states_turn[i] -= 1
  8.       elsif rand(100) < $data_states[i].auto_release_prob
  9.         remove_state(i)
  10.       end
  11.     end
  12.   end

直接调用一次 actor.remove_states_auto 就行了
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39016
在线时间
5717 小时
注册时间
2006-11-10
帖子
6619
4
发表于 2018-4-23 18:49:44 | 只看该作者
很难理解你要的效果

首先楼上那个问题, 状态是每回合-1的,你又要给它加1 干嘛呢... 真要这样, 就把状态设置为不会自然消除不就好了?

然后主楼, 1 技能附带公共事件, 这个是默认功能

2 公共事件给角色上状态,这个直接用默认事件设置就行

4 强制有状态的角色释放一个技能
  这个可以放到战斗事件 +1回合条件里, 每回合判断有没有角色有这个状态, 如果有的话, rand一下概率,然后强制行动 该角色 用XX技能攻击最后的目标还是什么目标, 按顺序行动.

5,消除状态, 上面那条设置完成后,再加上,清除XXX角色的这个状态

6,所有公共事件执行完毕刷新状态, 这样做是想干嘛? 你要的效果需要改动任何默认脚本,用以上的方法就可以做出来
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1308
在线时间
354 小时
注册时间
2009-9-14
帖子
328
3
 楼主| 发表于 2018-4-23 13:56:37 | 只看该作者
myaa475 发表于 2018-4-22 16:40
给那个强制发动的技能添上公共事件:再加一次BUFF不就行了?

主要是不只是持续一回合的状态,,还有些持续一回合以上的状态就不好办了,话说能不能通过公共事件让所有状态回合数加一?

点评

让公共事件的执行调整到行动的时候,默认是行动后才执行公共事件,通过修改战斗脚本中的公共事件的执行位置即可。  发表于 2018-4-23 17:35
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-25 23:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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