Project1

标题: 请教如何实现第五个角色强制使用某技能 [打印本页]

作者: woshinide951    时间: 2014-10-25 00:10
标题: 请教如何实现第五个角色强制使用某技能
我制作的是五人制游戏
XP默认是4个角色强制技能
请教一下如何用事件脚本实现第五个角色强制使用技能
{:8_459:}
作者: woshinide951    时间: 2014-10-25 23:25
难道不能用脚本的方式表达吗{:2_261:}
作者: woshinide951    时间: 2014-10-26 14:52
难道没有人了吗= =~~~~(>_<)~~~~ ,在线等解答!
作者: woshinide951    时间: 2014-10-29 13:58
a
难道这个方法很难吗?????
作者: woshinide951    时间: 2014-11-1 11:13
呜呜~ 如何强制第五个角色 行动 难道真没有办法吗? 求大神
作者: 汪汪    时间: 2014-11-2 10:22
本帖最后由 汪汪 于 2014-11-2 10:28 编辑

默认的强制行动是这个,大概就是给@parameters值进行处理,修改的话大概就是修改这几个值
  1.   def command_339
  2.     # 忽视是否在战斗中
  3.     unless $game_temp.in_battle
  4.       return true
  5.     end
  6.     # 忽视回合数为 0
  7.     if $game_temp.battle_turn == 0
  8.       return true
  9.     end
  10.     # 处理循环 (为了方便、不需要存在复数)
  11.     iterate_battler(@parameters[0], @parameters[1]) do |battler|
  12.       # 战斗者存在的情况下
  13.       if battler.exist?
  14.         # 设置行动
  15.         battler.current_action.kind = @parameters[2]
  16.         if battler.current_action.kind == 0
  17.           battler.current_action.basic = @parameters[3]
  18.         else
  19.           battler.current_action.skill_id = @parameters[3]
  20.         end
  21.         # 设置行动对像
  22.         if @parameters[4] == -2
  23.           if battler.is_a?(Game_Enemy)
  24.             battler.current_action.decide_last_target_for_enemy
  25.           else
  26.             battler.current_action.decide_last_target_for_actor
  27.           end
  28.         elsif @parameters[4] == -1
  29.           if battler.is_a?(Game_Enemy)
  30.             battler.current_action.decide_random_target_for_enemy
  31.           else
  32.             battler.current_action.decide_random_target_for_actor
  33.           end
  34.         elsif @parameters[4] >= 0
  35.           battler.current_action.target_index = @parameters[4]
  36.         end
  37.         # 设置强制标志
  38.         battler.current_action.forcing = true
  39.         # 行动有效并且是 [立即执行] 的情况下
  40.         if battler.current_action.valid? and @parameters[5] == 1
  41.           # 设置强制对像的战斗者
  42.           $game_temp.forcing_battler = battler
  43.           # 推进索引
  44.           @index += 1
  45.           # 结束
  46.           return false
  47.         end
  48.       end
  49.     end
  50.     # 继续
  51.     return true
  52.   end
复制代码
因为不清楚你的五人制是哪一种,所以只是做了一个对原来的简单修改
额……我也不太清楚这几个值到底是什么,大概 i1 应该是处理 第几个 角色强制行动的,比如 xingdong(1,2,1,28,-1,0) 就是让第三个角色使用黑暗。
在原来的 强制行动里 加上 p @parameters 试试看这几个值是什么意思吧。
  1.   

  2. class Interpreter
  3. def xingdong(i0=0,i1=0,i2=0,i3=0,i4=0,i5=0,i6=0)
  4.       # 忽视是否在战斗中
  5.     unless $game_temp.in_battle
  6.       return true
  7.     end
  8.     # 忽视回合数为 0
  9.     if $game_temp.battle_turn == 0
  10.       return true
  11.     end
  12.     # 处理循环 (为了方便、不需要存在复数)
  13.     iterate_battler(i0, i1) do |battler|
  14.       # 战斗者存在的情况下
  15.       if battler.exist?
  16.         # 设置行动
  17.         battler.current_action.kind = i2
  18.         if battler.current_action.kind == 0
  19.           battler.current_action.basic = i3
  20.         else
  21.           battler.current_action.skill_id = i3
  22.         end
  23.         # 设置行动对像
  24.         if i4 == -2
  25.           if battler.is_a?(Game_Enemy)
  26.             battler.current_action.decide_last_target_for_enemy
  27.           else
  28.             battler.current_action.decide_last_target_for_actor
  29.           end
  30.         elsif i4 == -1
  31.           if battler.is_a?(Game_Enemy)
  32.             battler.current_action.decide_random_target_for_enemy
  33.           else
  34.             battler.current_action.decide_random_target_for_actor
  35.           end
  36.         elsif i4 >= 0
  37.           battler.current_action.target_index = i4
  38.         end
  39.         # 设置强制标志
  40.         battler.current_action.forcing = true
  41.         # 行动有效并且是 [立即执行] 的情况下
  42.         if battler.current_action.valid? and i5 == 1
  43.           # 设置强制对像的战斗者
  44.           $game_temp.forcing_battler = battler
  45.           # 推进索引
  46.           @index += 1
  47.           # 结束
  48.           return false
  49.         end
  50.       end
  51.     end
  52.     # 继续
  53.     return true
  54.   end
  55. end

复制代码
额,调用的话直接在事件的脚本里输入  xingdong(1,2,1,28,-1,0)  这样的代码
你的五人制大概应该是用  xingdong(1,4,1,28,-1,0)  可以让第五人强制行动吧。
作者: woshinide951    时间: 2014-11-4 22:29
汪汪 发表于 2014-11-2 10:22
默认的强制行动是这个,大概就是给@parameters值进行处理,修改的话大概就是修改这几个值因为不清楚你的五 ...

先谢谢,接着再试试....!
作者: woshinide951    时间: 2014-11-4 22:46
汪汪 发表于 2014-11-2 10:22
默认的强制行动是这个,大概就是给@parameters值进行处理,修改的话大概就是修改这几个值因为不清楚你的五 ...

好像不能 强制 普通攻击......
作者: 芯☆淡茹水    时间: 2014-11-5 02:28
本帖最后由 芯☆淡茹水 于 2014-11-5 02:36 编辑

仿照解释器写了个简单版的,未测试
  1. #==============================================================================
  2. # 强制行动的行动类型的变量ID。(变量值为:0 普通攻击; 1 使用技能)
  3. ACTION_KIND_VAR = 1
  4. # 行动为 使用技能 时的技能变量ID。(技能ID 为变量值)
  5. ACTION_SKILL_VAR = 2
  6. # 确定攻击对象的变量ID。(变量值为 0 时随机,大于 0 时依变量值确定敌人队伍目标)
  7. ACTION_TARGET_VAR = 3
  8. # 强制行动的开关ID,打开后 第五人 自动设置强制行动。
  9. FORCING_SWICH_ID = 1
  10. # 以上在战斗中使用时,先设置好行动类型的变量值,再打开强制行动开关。
  11. #==============================================================================
  12. class Scene_Battle
  13.   #--------------------------------------------------------------------------
  14.   alias add_update_xdrs update
  15.   def update
  16.     set_forcing_battler5 if $game_switches[FORCING_SWICH_ID]
  17.     add_update_xdrs
  18.   end
  19.   #--------------------------------------------------------------------------
  20.   def set_forcing_battler5
  21.     battle = $game_party.actors[4]
  22.     if battle.nil? or $game_temp.battle_turn == 0
  23.       $game_switches[FORCING_SWICH_ID] = false
  24.       return
  25.     end
  26.     if battler.exist?
  27.       battler.current_action.kind = $game_variables[ACTION_KIND_VAR]
  28.       if battler.current_action.kind == 0
  29.         battler.current_action.basic = 0
  30.       else
  31.         battler.current_action.skill_id = $game_variables[ACTION_SKILL_VAR]
  32.       end
  33.       if $game_variables[ACTION_TARGET_VAR] == 0
  34.         battler.current_action.decide_random_target_for_actor
  35.       else
  36.         battler.current_action.target_index = $game_variables[ACTION_TARGET_VAR]
  37.       end
  38.       battler.current_action.forcing = true
  39.       $game_temp.forcing_battler = battler
  40.     end
  41.     $game_switches[FORCING_SWICH_ID] = false
  42.   end
  43. end
  44. #==============================================================================
复制代码

作者: 汪汪    时间: 2014-11-5 12:37
woshinide951 发表于 2014-11-4 22:46
好像不能 强制 普通攻击......

先问一下,其他应该可以吧……
  1.   

  2. class Interpreter
  3. def xingdong(i0=0,i1=0,i2=0,i3=0,i4=0,i5=0)
  4.       # 忽视是否在战斗中
  5.     unless $game_temp.in_battle
  6.       return true
  7.     end
  8.     # 忽视回合数为 0
  9.     if $game_temp.battle_turn == 0
  10.       return true
  11.     end
  12.     # 处理循环 (为了方便、不需要存在复数)
  13.     iterate_battler(i0, i1) do |battler|
  14.       # 战斗者存在的情况下
  15.       if battler.exist?
  16.         # 设置行动
  17.         battler.current_action.kind = i2
  18.         if battler.current_action.kind == 0
  19.           battler.current_action.basic = i3
  20.         else
  21.           battler.current_action.skill_id = i3
  22.         end
  23.         # 设置行动对像
  24.         if i4 == -2
  25.           if battler.is_a?(Game_Enemy)
  26.             battler.current_action.decide_last_target_for_enemy
  27.           else
  28.             battler.current_action.decide_last_target_for_actor
  29.           end
  30.         elsif i4 == -1
  31.           if battler.is_a?(Game_Enemy)
  32.             battler.current_action.decide_random_target_for_enemy
  33.           else
  34.             battler.current_action.decide_random_target_for_actor
  35.           end
  36.         elsif i4 >= 0
  37.           battler.current_action.target_index = i4
  38.         end
  39.         # 设置强制标志
  40.         battler.current_action.forcing = true
  41.         # 行动有效并且是 [立即执行] 的情况下
  42.         if battler.current_action.valid? and i5 == 1
  43.           # 设置强制对像的战斗者
  44.           $game_temp.forcing_battler = battler
  45.           # 推进索引
  46.           @index += 1
  47.           # 结束
  48.           return false
  49.         end
  50.       end
  51.     end
  52.     # 继续
  53.     return true
  54.   end
  55. end
复制代码
修改了一下,原来多了个i6   ̄□ ̄||

新建位图图像.png (11.15 KB, 下载次数: 12)

强制行动的解释

强制行动的解释

作者: woshinide951    时间: 2014-11-5 16:57
汪汪 发表于 2014-11-5 12:37
先问一下,其他应该可以吧……修改了一下,原来多了个i6   ̄□ ̄||

晚上再试下,谢谢!
作者: woshinide951    时间: 2014-11-5 16:57
芯☆淡茹水 发表于 2014-11-5 02:28
仿照解释器写了个简单版的,未测试

大神,你又来了...! 晚上试试!
作者: woshinide951    时间: 2014-11-6 00:54
芯☆淡茹水 发表于 2014-11-5 02:28
仿照解释器写了个简单版的,未测试

第14行错误......!
作者: woshinide951    时间: 2014-11-6 00:57
汪汪 发表于 2014-11-5 12:37
先问一下,其他应该可以吧……修改了一下,原来多了个i6   ̄□ ̄||

没有作用?难道我的设置出问题了吗  是不是在事件脚本里 直接写 xingdong(1,4,1,67,-1,1) 哪里有错?
作者: 汪汪    时间: 2014-11-6 06:41
woshinide951 发表于 2014-11-6 00:57
没有作用?难道我的设置出问题了吗  是不是在事件脚本里 直接写 xingdong(1,4,1,67,-1,1) 哪里有错? ...

……可能是我水平不够,写错了吧。如果可以把你那个5人制的脚本发过来,我想仔细研究一下。
作者: woshinide951    时间: 2014-11-17 13:58
汪汪 发表于 2014-11-6 06:41
……可能是我水平不够,写错了吧。如果可以把你那个5人制的脚本发过来,我想仔细研究一下。 ...

谢谢了 我放弃了这个功能!




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