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

Project1

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

[已经解决] 怎样将技能的效果范围设置成敌我双方?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2009-9-17
帖子
29
跳转到指定楼层
1
发表于 2012-9-28 20:06:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 Zale 于 2012-9-29 13:58 编辑

在创造最基本的补血技能设置的时候发现,效果范围只能限定在我方或是敌方,没有办法将范围拓展成双方吗?

Lv1.梦旅人

梦石
0
星屑
38
在线时间
1165 小时
注册时间
2012-3-16
帖子
5336
2
发表于 2012-9-28 20:50:25 | 只看该作者
你要打敌人或者帮敌人补血- -?

点评

楼主的意思可以这样:打别人大量HP同时自己减少少量HP这样类型的技能。  发表于 2012-9-28 22:06
是打自己人和帮敌人加血= =  发表于 2012-9-28 20:50
我想要到的是保护同伴的力量,能与同伴一起欢笑的未来的力量,如果无法做到的话,那就无需继承,如果是这样的彭格列的话,那我亲手毁掉它!
  
                       欢迎加入我们的家族~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2009-9-17
帖子
29
3
 楼主| 发表于 2012-9-28 20:56:03 | 只看该作者
彭格列第XI代 发表于 2012-9-28 20:50
你要打敌人或者帮敌人补血- -?

嗯啊,因为如果把指定敌人的属性有效度改成F的话,回复系技能不就可以对其造成伤害了吗?这样一来就实现了神圣系的补血技能也可以对不死系的怪物造成伤害这一设定>_<~

点评

话说以后求助点[发表求助]不要点[发表帖子]~这货就一直米点= =  发表于 2012-9-28 21:10
剑与电的浪漫由自己创造~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
38
在线时间
1165 小时
注册时间
2012-3-16
帖子
5336
4
发表于 2012-9-28 21:09:45 | 只看该作者


嘛- -ME是新手只会笨方法~伤害啥的改成用变量计算下就好了加个动画效果啥的就可以了= =
算了还是叫P叔吧
@protosssonny

点评

恩恩- -所以说ME是新手啦~  发表于 2012-10-1 15:02
这样貌似就没减血的效果了,要添加动画,麻烦  发表于 2012-9-28 22:07
嘛- -等P叔吧~他用脚本就方便很多0 0[小心写一半给乃=_=]  发表于 2012-9-28 21:40
在给队里补血的同时会给敌人造成伤害吗?好像...在设定不太合理诶,那还不如多建一个作用对象为敌人范围的补血技能呢...总之还是谢谢你的建议~!  发表于 2012-9-28 21:29
去掉我写的事件里的给队友加血,然后技能改成我方全体,事件里的条件改成卧房状态为[中了神圣]时敌人-血,然后去掉那个状态[就是反过来啦- -]  发表于 2012-9-28 21:22
我想要到的是保护同伴的力量,能与同伴一起欢笑的未来的力量,如果无法做到的话,那就无需继承,如果是这样的彭格列的话,那我亲手毁掉它!
  
                       欢迎加入我们的家族~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2009-9-17
帖子
29
5
 楼主| 发表于 2012-9-28 21:16:21 | 只看该作者
本帖最后由 Zale 于 2012-9-28 21:17 编辑
彭格列第XI代 发表于 2012-9-28 21:09
嘛- -ME是新手只会笨方法~伤害啥的改成用变量计算下就好了加个动画效果啥的就可以了= =
算了还是叫P叔吧{ ...


那个...我的初衷是在不影响技能原本给队友补血的效果下,同时也能释放在敌人身上,给那些对此属性有效度为F的敌人造成伤害,XI代巨巨这样的设定好像没啥意义?

点评

果然难滴找P叔吧- -已经召唤了~脚本的问他0 0  发表于 2012-9-28 21:20
剑与电的浪漫由自己创造~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
47
在线时间
62 小时
注册时间
2012-9-26
帖子
216
6
发表于 2012-9-28 22:09:45 | 只看该作者
建议利用公共事件。

使用技能时触发公共事件,公共事件里面设定再使用个技能(触发效果,技能名字要和原来的相同)

这样很简单耶  ~~

点评

那样的话无法由自己判断对方是不是想要技能作用的对象啊  发表于 2012-9-29 09:03
P.S效果不是太理想  发表于 2012-9-28 22:10
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2009-9-17
帖子
29
7
 楼主| 发表于 2012-9-29 09:19:52 | 只看该作者
再次明确下我的疑问,如何将一回合内的技能对象拓展为敌方或者我方,而不是同时释放在双方上,而且能由自己自由地决定释放在哪一方上
剑与电的浪漫由自己创造~
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4679
在线时间
5240 小时
注册时间
2009-4-29
帖子
14318

贵宾

8
发表于 2012-9-29 12:49:46 | 只看该作者
本帖最后由 protosssonny 于 2012-9-29 15:02 编辑

收到召唤,P叔来了
使用方法:在需要以所有人为范围目标的技能的注释栏中输入<范围为所有人>,尖括号不能省略
拉尔夫的圣光对非不死系有恢复效果,对不死系有伤害效果。
所有主角和史莱姆均为非不死系,骷髅为不死系。
范例附件: Project1.rar (240.11 KB, 下载次数: 58)
脚本:
  1. #==============================================================================
  2. # ■ Scene_Title
  3. #------------------------------------------------------------------------------
  4. #  处理标题画面的类。
  5. #==============================================================================
  6. class Scene_Title
  7.   # 载入数据库时调用
  8.   # 将描述中带有 <范围为所有人> 的技能的范围设置为所有人
  9.   def check_special_skill_scope
  10.     for i in $data_skills
  11.       next if i == nil
  12.       if i.note.match("<范围为所有人>")
  13.         i.scope = "ALL_SCOPE"
  14.       end
  15.     end
  16.   end
  17.   #--------------------------------------------------------------------------
  18.   # ● 载入数据库
  19.   #--------------------------------------------------------------------------
  20.   alias load_database_old load_database if
  21.     !method_defined? :load_database_old
  22.   def load_database
  23.     load_database_old
  24.     check_special_skill_scope
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   # ● 载入战斗测试用的数据库
  28.   #--------------------------------------------------------------------------
  29.   alias load_bt_database_old load_bt_database if
  30.     !method_defined? :load_bt_database_old
  31.   def load_bt_database
  32.     load_bt_database_old
  33.     check_special_skill_scope
  34.   end
  35. end

  36. #==============================================================================
  37. # ■ Window_TargetAll
  38. #------------------------------------------------------------------------------
  39. #  战斗画面中选择行动对象的所有角色(照猫画虎,仿照 Window_TargetEnemy 写就行了)
  40. #==============================================================================

  41. class Window_TargetAll < Window_Command
  42.   #--------------------------------------------------------------------------
  43.   # ● 初始化对象
  44.   #--------------------------------------------------------------------------
  45.   def initialize
  46.     commands = []
  47.     @targets = []
  48.     for target in $game_troop.members + $game_party.members
  49.       next unless target.exist?
  50.       commands.push(target.name)
  51.       @targets.push(target)
  52.     end
  53.     super(416, commands, 2, 4)
  54.   end
  55.   #--------------------------------------------------------------------------
  56.   # ● 获取角色对象
  57.   #--------------------------------------------------------------------------
  58.   def target
  59.     return @targets[@index]
  60.   end
  61. end

  62. #==============================================================================
  63. # ■ Scene_Battle
  64. #------------------------------------------------------------------------------
  65. #  处理战斗画面的类。
  66. #==============================================================================

  67. class Scene_Battle
  68.   #--------------------------------------------------------------------------
  69.   # ● 确定特技
  70.   #--------------------------------------------------------------------------
  71.   def determine_skill
  72.     @active_battler.action.set_skill(@skill.id)
  73.     @skill_window.active = false
  74.     # 范围为所有人时开始选择所有人
  75.     if @skill.scope == "ALL_SCOPE"
  76.       start_target_all_selection
  77.     elsif @skill.need_selection?
  78.       if @skill.for_opponent?
  79.         start_target_enemy_selection
  80.       else
  81.         start_target_actor_selection
  82.       end
  83.     else
  84.       end_skill_selection
  85.       next_actor
  86.     end
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ● 开始选择对象的所有角色
  90.   #--------------------------------------------------------------------------
  91.   def start_target_all_selection
  92.     @target_all_window = Window_TargetAll.new
  93.     @target_all_window.y = @info_viewport.rect.y
  94.     @info_viewport.rect.x += @target_all_window.width
  95.     @info_viewport.ox += @target_all_window.width
  96.     @actor_command_window.active = false
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # ● 选择对象所有角色结束
  100.   #--------------------------------------------------------------------------
  101.   def end_target_all_selection
  102.     @info_viewport.rect.x -= @target_all_window.width
  103.     @info_viewport.ox -= @target_all_window.width
  104.     @target_all_window.dispose
  105.     @target_all_window = nil
  106.     if @actor_command_window.index == 0
  107.       @actor_command_window.active = true
  108.     end
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● 更新选择对象敌方角色
  112.   #--------------------------------------------------------------------------
  113.   def update_target_all_selection
  114.     @target_all_window.update
  115.     if Input.trigger?(Input::B)
  116.       Sound.play_cancel
  117.       end_target_all_selection
  118.     elsif Input.trigger?(Input::C)
  119.       Sound.play_decision
  120.       # 默认系统传递给 action 的是角色或敌人在队伍中的索引
  121.       # 这里传递的是窗口选项的索引
  122.       # 具体见下面对于 Game_BattleAction 的修改
  123.       @active_battler.action.target_index = @target_all_window.index
  124.       end_target_all_selection
  125.       end_skill_selection
  126.       end_item_selection
  127.       next_actor
  128.     end
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # ● 更新画面
  132.   #--------------------------------------------------------------------------
  133.   def update
  134.     super
  135.     update_basic(true)
  136.     update_info_viewport                  # 更新显示信息的视区
  137.     if $game_message.visible
  138.       @info_viewport.visible = false
  139.       @message_window.visible = true
  140.     end
  141.     unless $game_message.visible          # 在显示消息以外的情况
  142.       return if judge_win_loss            # 判断胜败
  143.       update_scene_change
  144.       # 选择所有人的窗口存在时更新
  145.       if @target_all_window != nil
  146.         update_target_all_selection       # 选择所有对象
  147.       elsif @target_enemy_window != nil
  148.         update_target_enemy_selection     # 选择敌方对象
  149.       elsif @target_actor_window != nil
  150.         update_target_actor_selection     # 选择对象角色
  151.       elsif @skill_window != nil
  152.         update_skill_selection            # 选择特技
  153.       elsif @item_window != nil
  154.         update_item_selection             # 选择物品
  155.       elsif @party_command_window.active
  156.         update_party_command_selection    # 选择同伴指令
  157.       elsif @actor_command_window.active
  158.         update_actor_command_selection    # 选择角色指令
  159.       else
  160.         process_battle_event              # 战斗处理
  161.         process_action                    # 战斗行动
  162.         process_battle_event              # 处理战斗事件
  163.       end
  164.     end
  165.   end
  166. end

  167. #==============================================================================
  168. # ■ Game_BattleAction
  169. #------------------------------------------------------------------------------
  170. #  处理行动 (战斗中的行动) 的类。这个类在 Game_Battler 类
  171. # 的内部使用。
  172. #==============================================================================

  173. class Game_BattleAction
  174. #--------------------------------------------------------------------------
  175. # ● 生成特技以及物品目标
  176. #     obj : 特技以及物品
  177. #--------------------------------------------------------------------------

  178.   def make_obj_targets(obj)
  179.     targets = []
  180.     # 范围为所有人时
  181.     if obj.scope == "ALL_SCOPE"
  182.       if @target_index < $game_troop.existing_members.size
  183.         targets.push($game_troop.existing_members[@target_index])
  184.       else
  185.         party_index = @target_index - $game_troop.existing_members.size
  186.         targets.push($game_party.existing_members[party_index])
  187.       end  
  188.     elsif obj.for_opponent?
  189.       if obj.for_random?
  190.         if obj.for_one?         # 敌随机单体
  191.           number_of_targets = 1
  192.         elsif obj.for_two?      # 敌随机二体
  193.           number_of_targets = 2
  194.         else                    # 敌随机三体
  195.           number_of_targets = 3
  196.         end
  197.         number_of_targets.times do
  198.           targets.push(opponents_unit.random_target)
  199.         end
  200.       elsif obj.dual?           # 敌单体连续
  201.         targets.push(opponents_unit.smooth_target(@target_index))
  202.         targets += targets
  203.       elsif obj.for_one?        # 敌单体
  204.         targets.push(opponents_unit.smooth_target(@target_index))
  205.       else                      # 敌全体
  206.         targets += opponents_unit.existing_members
  207.       end
  208.     elsif obj.for_user?         # 使用者
  209.       targets.push(battler)
  210.     elsif obj.for_dead_friend?
  211.       if obj.for_one?           # 我方单体(无法行动)
  212.         targets.push(friends_unit.smooth_dead_target(@target_index))
  213.       else                      # 我方全体(无法行动)
  214.         targets += friends_unit.dead_members
  215.       end
  216.     elsif obj.for_friend?
  217.       if obj.for_one?           # 我方单体
  218.         targets.push(friends_unit.smooth_target(@target_index))
  219.       else                      # 我方全体
  220.         targets += friends_unit.existing_members
  221.       end
  222.     end
  223.     return targets.compact
  224.   end
  225. end
复制代码

点评

BUG已经修复  发表于 2012-9-29 15:03
啊是我自己的问题,可以了!谢谢  发表于 2012-9-29 13:58
为什么我复制了P叔你的脚本,也复制了你的技能(注释有加),但是触发战斗时选择目标里却没有己方队员 Q口Q??  发表于 2012-9-29 13:53

评分

参与人数 1星屑 +240 收起 理由
咕噜 + 240 认可答案

查看全部评分

《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2009-9-17
帖子
29
9
 楼主| 发表于 2012-9-29 13:58:23 | 只看该作者
谢谢P叔,问题解决了

点评

如果我告诉你我应该可以用事件解决……  发表于 2012-9-29 15:24
剑与电的浪漫由自己创造~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-10 17:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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