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

Project1

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

[已经解决] 如何设定多次行动的敌人特定类型技能每回合只发动一个?

[复制链接]

Lv4.逐梦者

梦石
0
星屑
7028
在线时间
878 小时
注册时间
2015-2-10
帖子
248
跳转到指定楼层
1
发表于 2021-10-23 23:08:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
50星屑
本帖最后由 fbeds 于 2021-10-25 17:12 编辑

【问题已修改】我找到了之前那个问题的解决办法,就是更改判定敌人选择哪个技能发动的时机。默认敌人的行动是和我方角色一样在回合开始前决定好的,我想把敌人的行动设定成敌人即将行动时再判定选择哪个可以发动的技能发动,而且对于每回合多次行动的敌人来说(比方说行动两次的),它是第一次行动结束后,再进行第二次行动的判定,而不是在轮到它行动时就把两次行动都决定好。在这样的情况下,敌人第一次行动时选择了我想指定的那个类型的技能后,给其附加一个不能再使用这个技能类型的状态,这样其本回合接下来的行动就不会再使用这个类型的技能,而且也不会什么也做不了。这个应该只需要改变脚本的位置就行了吧?懂脚本的知道怎么改吗?

最佳答案

查看完整内容

如果是默认战斗还是挺好改的 在Scene_Battle里修改 def process_action return if scene_changing? if !@subject || [email protected]_action @subject = BattleManager.next_subject end return turn_end unless @subject if @subject.current_action @subject.current_action.prepare if @subject.current_action.valid? @status_window.open execute_action elsi ...

Lv2.观梦者

梦石
0
星屑
768
在线时间
49 小时
注册时间
2020-8-28
帖子
23
2
发表于 2021-10-23 23:08:13 | 只看该作者
本帖最后由 这是一个昵称9 于 2021-10-25 23:54 编辑

如果是默认战斗还是挺好改的
在Scene_Battle里修改
def process_action
    return if scene_changing?
    if !@subject || [email protected]_action
      @subject = BattleManager.next_subject
    end
    return turn_end unless @subject
    if @subject.current_action
      @subject.current_action.prepare
      if @subject.current_action.valid?
        @status_window.open
        execute_action
      elsif [email protected]?#加的
        @subject.make_current_action
        if @subject.current_action.valid?
          @status_window.open
          execute_action
        end#以上是加的
      end
      @subject.remove_current_action
    end
    process_action_end unless @subject.current_action
  end

#在Game_Enemy里加下面这段
  def make_current_action
    action_list = enemy.actions.select {|a| action_valid?(a) }
    return if action_list.empty?
    rating_max = action_list.collect {|a| a.rating }.max
    rating_zero = rating_max - 3
    action_list.reject! {|a| a.rating <= rating_zero }
    @actions[0].set_enemy_action(select_enemy_action(action_list, rating_zero))
  end

评分

参与人数 1星屑 +80 收起 理由
alexncf125 + 80 塞糖

查看全部评分

回复

使用道具 举报

Lv5.捕梦者 (版主)

梦石
22
星屑
11005
在线时间
7336 小时
注册时间
2011-7-2
帖子
380

极短24评委极短23评委极短22评委R考场第七期纪念奖开拓者

3
发表于 2021-10-24 16:06:22 | 只看该作者
两个思路:
1.试试设置让这个敌人免疫该道具附加的状态。
2.额外单独给这个敌人设置一套技能。

比如在使用“道具”后,开一个开关【公共事件设置】,其他技能需要在这个开关开启后才能使用。
【探索解谜游戏】《NULL》
-------------------------------------------------------------
回复

使用道具 举报

Lv4.逐梦者 (版主)

职业の水客

梦石
0
星屑
12980
在线时间
6998 小时
注册时间
2010-6-16
帖子
3475

开拓者

4
发表于 2021-10-24 16:28:00 | 只看该作者
使用yanfly的技能冷却脚本?
一个看图的地方
群爆炸重建后状态:论坛老人最多(只剩下了活跃的老人),技术力很强(依旧不变)的编程灌水群:901540785
专门讨论RM相关的Q群:56875149
PS:第一个群不是专门讨论RM的,第二个才是哦。
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7028
在线时间
878 小时
注册时间
2015-2-10
帖子
248
5
 楼主| 发表于 2021-10-24 21:32:15 | 只看该作者
本帖最后由 fbeds 于 2021-10-24 21:36 编辑
涅炎 发表于 2021-10-24 16:06
两个思路:
1.试试设置让这个敌人免疫该道具附加的状态。
2.额外单独给这个敌人设置一套技能。


1.如果这样设置,那敌人可能会每回合使用两个以上的道具,这样就和每回合只能使用一个道具的设定相违背了。
2.敌人每回合的行动在行动前已经全部决定好了,即使打开了开关,也不会改变本回合其选择的行动。所以如果敌人本回合选择了两次“物品”技能,则其还是会只能行动一次,后一次并不会变成其它可进行的行动,而是直接无法行动。
我想要的效果就是一旦敌人选择了“物品”的技能,那本回合之后的其它行动就不会再是发动“物品”技能。如果把每回合多次行动的敌人选择哪个技能发动的判定时机改为上次行动结束后,那可能可以解决问题。不过这样可能会导致“不公平”:角色的所有行动都是在回合开始时决定的,但敌人的行动是在回合过程中临时决定的。不过这样只是增加了游戏难度而已,其实也没有那么不公平。
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33188
在线时间
10491 小时
注册时间
2009-3-15
帖子
4756
6
发表于 2021-10-24 21:50:57 | 只看该作者
搜一下def conditions_met?
看看能不能在这里动手术..
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7028
在线时间
878 小时
注册时间
2015-2-10
帖子
248
7
 楼主| 发表于 2021-10-26 17:11:38 | 只看该作者
本帖最后由 fbeds 于 2021-10-26 17:16 编辑
这是一个昵称9 发表于 2021-10-25 23:46
如果是默认战斗还是挺好改的
在Scene_Battle里修改
def process_action


谢谢,问题已解决。
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
754
在线时间
105 小时
注册时间
2020-12-13
帖子
13
8
发表于 2021-10-26 20:54:15 | 只看该作者
用公共事件写战斗试试看。
一个敌人只有一个技能,这个技能会触发公共事件,然后在公共事件里写技能发动的序列
这样会比较好控制吧
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-29 08:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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