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

Project1

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

[已经解决] 请教如何实现第五个角色强制使用某技能

[复制链接]

Lv1.梦旅人

梦石
0
星屑
65
在线时间
145 小时
注册时间
2011-7-14
帖子
43
跳转到指定楼层
1
发表于 2014-10-25 00:10:03 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我制作的是五人制游戏
XP默认是4个角色强制技能
请教一下如何用事件脚本实现第五个角色强制使用技能
{:8_459:}
只想完成自己所梦想的游戏!
只要自己努力

Lv1.梦旅人

梦石
0
星屑
65
在线时间
145 小时
注册时间
2011-7-14
帖子
43
2
 楼主| 发表于 2014-10-25 23:25:39 | 只看该作者
难道不能用脚本的方式表达吗{:2_261:}
只想完成自己所梦想的游戏!
只要自己努力
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
145 小时
注册时间
2011-7-14
帖子
43
3
 楼主| 发表于 2014-10-26 14:52:22 | 只看该作者
难道没有人了吗= =~~~~(>_<)~~~~ ,在线等解答!
只想完成自己所梦想的游戏!
只要自己努力
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
145 小时
注册时间
2011-7-14
帖子
43
4
 楼主| 发表于 2014-10-29 13:58:28 | 只看该作者
a
难道这个方法很难吗?????
只想完成自己所梦想的游戏!
只要自己努力
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
145 小时
注册时间
2011-7-14
帖子
43
5
 楼主| 发表于 2014-11-1 11:13:52 | 只看该作者
呜呜~ 如何强制第五个角色 行动 难道真没有办法吗? 求大神
只想完成自己所梦想的游戏!
只要自己努力
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
帖子
1516
6
发表于 2014-11-2 10:22:36 | 只看该作者
本帖最后由 汪汪 于 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)  可以让第五人强制行动吧。

评分

参与人数 2星屑 +110 收起 理由
RyanBern + 100 塞糖
woshinide951 + 10 先谢过了~

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
145 小时
注册时间
2011-7-14
帖子
43
7
 楼主| 发表于 2014-11-4 22:29:36 | 只看该作者
汪汪 发表于 2014-11-2 10:22
默认的强制行动是这个,大概就是给@parameters值进行处理,修改的话大概就是修改这几个值因为不清楚你的五 ...

先谢谢,接着再试试....!
只想完成自己所梦想的游戏!
只要自己努力
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
145 小时
注册时间
2011-7-14
帖子
43
8
 楼主| 发表于 2014-11-4 22:46:07 | 只看该作者
汪汪 发表于 2014-11-2 10:22
默认的强制行动是这个,大概就是给@parameters值进行处理,修改的话大概就是修改这几个值因为不清楚你的五 ...

好像不能 强制 普通攻击......
只想完成自己所梦想的游戏!
只要自己努力
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
32025
在线时间
5081 小时
注册时间
2012-11-19
帖子
4877

开拓者

9
发表于 2014-11-5 02:28:11 | 只看该作者
本帖最后由 芯☆淡茹水 于 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. #==============================================================================
复制代码

评分

参与人数 2星屑 +210 收起 理由
RyanBern + 200 认可答案
woshinide951 + 10 非常感谢!

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
帖子
1516
10
发表于 2014-11-5 12:37:27 | 只看该作者
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, 下载次数: 4)

强制行动的解释

强制行动的解释
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-7 10:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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