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

Project1

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

[已经解决] 请教DQ技能组别脚本改后的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
116 小时
注册时间
2009-7-17
帖子
139
跳转到指定楼层
1
发表于 2014-11-2 16:04:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
请教各位大大,原脚本为九夜神尊的技能组别范围脚本,我现在改为了读取技能备注,然后改变攻击对象的效果,但是发现只能读取第一个横排的效果,第二个竖排的攻击对象仍旧是横排的,请大大们帮忙看看,谢谢
RUBY 代码复制
  1. #=================================================
  2. # ■ 技能组别范围
  3. #
  4.  
  5.  
  6.  
  7. =begin
  8.  
  9. 使用方法:设置技能的作用范围为四个随机敌人,原有的4随机敌人定义被取消。
  10.  
  11. 改自九夜神尊的技能组别范围
  12.  
  13. =end
  14.  
  15. class RPG::UsableItem < RPG::BaseItem
  16. #------------------------------------------------
  17. # ●需要选择
  18. #------------------------------------------------
  19. def need_selection?
  20. [1, 6,7, 9].include?(@scope)
  21. end
  22. #------------------------------------------------
  23. # ●随机对象
  24. #------------------------------------------------
  25.  
  26. def for_random?
  27. [3, 4, 5].include?(@scope)
  28. end
  29. #------------------------------------------------
  30. # ●组别对象
  31. #------------------------------------------------
  32. def for_group?
  33. @scope==6
  34. end
  35.  
  36.  
  37. end
  38.  
  39. #encoding:utf-8
  40. #==============================================================================
  41. # ■ Game_Action
  42. #------------------------------------------------------------------------------
  43. #  处理战斗中的行动的类。本类在 Game_Battler 类的内部使用。
  44. #==============================================================================
  45.  
  46. class Game_Action
  47. #--------------------------------------------------------------------------
  48. # ● 目标为敌人
  49. #--------------------------------------------------------------------------
  50.  
  51.  
  52. alias swtf_targets_for_opponents targets_for_opponents
  53.   def targets_for_opponents
  54.    if $data_skills[80].note.include?("横排")
  55.       if item.for_group?
  56.       return opponents_unit.group_target1(@target_index)
  57.       end
  58.    else #$data_skills[80].note.include?("竖排")
  59.       if item.for_group?
  60.       return opponents_unit.group_target2(@target_index)
  61.       end
  62.    end
  63.   swtf_targets_for_opponents
  64.   end
  65. end
  66. #encoding:utf-8
  67. #==============================================================================
  68. # ■ Game_Unit
  69. #------------------------------------------------------------------------------
  70. #  管理游戏单位的类。是 Game_Party 和 Game_Troop 类的父类。
  71. #==============================================================================
  72.  
  73. class Game_Unit
  74.  
  75. #--------------------------------------------------------------------------
  76. # ● 决定组别目标
  77. #
  78. #--------------------------------------------------------------------------
  79.  
  80. def group_target1(index)   #横排目标数据
  81.    group1 = []
  82.    member = members[index]
  83.    members.each do |enemy|
  84.    if enemy.enemy_id == $game_troop.members[0].enemy_id  
  85.    group1.push enemy if enemy.alive?
  86.    end
  87.    if enemy.enemy_id == $game_troop.members[1].enemy_id  
  88.    group1.push enemy if enemy.alive?
  89.    end
  90.    if enemy.enemy_id == $game_troop.members[2].enemy_id  
  91.    group1.push enemy if enemy.alive?
  92. end
  93.  
  94. end
  95.    return group1
  96. end
  97.  
  98.  
  99.  
  100. def group_target2(index)    #竖排目标数据
  101.    group2 = []
  102.    member = members[index]
  103.    members.each do |enemy|
  104.    if enemy.enemy_id == $game_troop.members[1].enemy_id  
  105.    group2.push enemy if enemy.alive?
  106.    end
  107.    if enemy.enemy_id == $game_troop.members[4].enemy_id  
  108.    group2.push enemy if enemy.alive?
  109.    end
  110.  
  111. end
  112.    return group2
  113.  
  114. end
  115.  
  116. end



@taroxd   @VIPArcher   @tseyik

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2014-11-2 17:06:01 | 只看该作者
看不懂你的问题。根据脚本来看,只读取80号技能的备注有什么意义?

评分

参与人数 1星屑 +132 收起 理由
VIPArcher + 132 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

3
发表于 2014-11-2 18:55:26 | 只看该作者
看不懂你的问题。根据脚本来看,54行你大概是要这样if item.note.include?("横排")
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
116 小时
注册时间
2009-7-17
帖子
139
4
 楼主| 发表于 2014-11-2 21:00:11 | 只看该作者
taroxd 发表于 2014-11-2 17:06
看不懂你的问题。根据脚本来看,只读取80号技能的备注有什么意义?


只读取80号是为了测试,实际使用此数值与角色ID挂钩,现在的问题就是,此脚本貌似在战斗中只运行一次,选取新的技能时就不再运行了,比如我的80号技能选的类别是随机4人,然后备注横排,战斗中使用效果就是攻击对方1号,2号,3号敌人,然后又随便找了个技能,类别也选随机4人(写不写备注就无所谓了,因为只要for_group就可以了,同样是为了测试),结果攻击的也是对方1号,2号,3号敌人,所以我觉得是脚本只运行了一次,就是如何使其在每次选取我方技能时就判断一次,重新给其攻击目标赋值,请大大赐教
@taroxd
@VIPArcher
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

5
发表于 2014-11-2 21:04:17 | 只看该作者
morningboo 发表于 2014-11-2 21:00
只读取80号是为了测试,实际使用此数值与角色ID挂钩,现在的问题就是,此脚本貌似在战斗中只运行一次,选 ...

你只读取$data_skills[80].note.include?("横排")那么无论你用什么技能,只要80号技能有备注"横排",那么这里永远返回true。这样说你明白了吗?

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
116 小时
注册时间
2009-7-17
帖子
139
6
 楼主| 发表于 2014-11-2 21:33:40 | 只看该作者
VIPArcher 发表于 2014-11-2 21:04
你只读取$data_skills[80].note.include?("横排")那么无论你用什么技能,只要80号技能有备注"横排",那么 ...

嗯,懂了,那么请问大大,应该怎么样写呢?
望不吝赐教,脚本新手。

点评

看地板  发表于 2014-11-2 21:46
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
116 小时
注册时间
2009-7-17
帖子
139
7
 楼主| 发表于 2014-11-3 09:50:41 | 只看该作者
谢谢大大,问题解决了,还有个小问题,就是我用什么判断敌人使用此技能的时候对我方也达到同样效果呢?
我在def targets_for_opponents中用item.for_friend?或item.for_opponent?判断都会出现问题,只能单项实现效果,轮到对方时就会出现没有定义enemy_id或id方法,下面的def group_target2(index)我改写成这样了:
  1. class Game_Unit

  2. #--------------------------------------------------------------------------
  3. # ● 决定组别目标
  4. #
  5. #--------------------------------------------------------------------------

  6. def group_target1(index)   #横排目标数据我方攻击敌方
  7.    group1 = []
  8.    member = members[index]
  9.    members.each do |enemy|
  10.    if enemy.enemy_id == $game_troop.members[0].enemy_id  
  11.    group1.push enemy if enemy.alive?
  12.    end
  13.    if enemy.enemy_id == $game_troop.members[1].enemy_id  
  14.    group1.push enemy if enemy.alive?
  15.    end
  16.    if enemy.enemy_id == $game_troop.members[2].enemy_id  
  17.    group1.push enemy if enemy.alive?
  18. end

  19. end
  20.    return group1
  21. end



  22. def group_target2(index)    #竖排目标数据我方攻击敌方
  23.    group2 = []
  24.    member = members[index]
  25.    members.each do |enemy|
  26.    if enemy.enemy_id == $game_troop.members[1].enemy_id  
  27.    group2.push enemy if enemy.alive?
  28.    end
  29.    if enemy.enemy_id == $game_troop.members[4].enemy_id  
  30.    group2.push enemy if enemy.alive?
  31.    end

  32. end
  33.    return group2

  34. end

  35. def group_target3(index)   #横排目标数据敌方攻击我方
  36.    group3 = []
  37.    member = members[index]
  38.    members.each do |enemy|
  39.    if enemy.id == $game_party.members[0].id
  40.    group3.push enemy if enemy.alive?
  41.    end
  42.    if enemy.id == $game_party.members[1].id
  43.    group3.push enemy if enemy.alive?
  44.    end
  45.    if enemy.id == $game_party.members[2].id
  46.    group3.push enemy if enemy.alive?
  47. end

  48. end
  49.    return group3
  50. end



  51. def group_target4(index)    #竖排目标数据敌方攻击我方
  52.    group4 = []
  53.    member = members[index]
  54.    members.each do |enemy|
  55.    if enemy.id == $game_party.members[1].id
  56.    group4.push enemy if enemy.alive?
  57.    end
  58.    if enemy.id == $game_party.members[4].id
  59.    group4.push enemy if enemy.alive?
  60.    end

  61. end
  62.    return group4

  63. end

  64. end
复制代码
请大大指教
@VIPArcher @taroxd
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

8
发表于 2014-11-3 12:33:13 | 只看该作者
morningboo 发表于 2014-11-3 09:50
谢谢大大,问题解决了,还有个小问题,就是我用什么判断敌人使用此技能的时候对我方也达到同样效果呢?
我 ...


没看出你为什么要读取id。members是一个数组,直接用id索引不就可以了,为什么要each再多绕一圈

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
116 小时
注册时间
2009-7-17
帖子
139
9
 楼主| 发表于 2014-11-3 15:10:11 | 只看该作者
本帖最后由 morningboo 于 2014-11-3 16:18 编辑
taroxd 发表于 2014-11-3 12:33
没看出你为什么要读取id。members是一个数组,直接用id索引不就可以了,为什么要each再多绕一圈 ...


请问,如何不用each,能就我这个举个例子吗?
还有请问技能效果想让敌方对我方产生同样效果怎么做呢?
或者这么问,请教如何判断行动方是敌方还是我方?
@VIPArcher @taroxd @三途亚梦  
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
116 小时
注册时间
2009-7-17
帖子
139
10
 楼主| 发表于 2014-11-3 16:56:56 | 只看该作者
问题解决了,用subject.is_a?(Game_Actor),请版主结贴,谢谢各位的解答。@taroxd @VIPArcher

点评

谢谢版主解答,.actor?我试了的,貌似不能在Game_Action中使用,会出错,显示未定义方法  发表于 2014-11-5 11:24
如果非要这样的话,subject.actor? 就可以  发表于 2014-11-3 17:17
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-5 21:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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