查看: 2698|回复: 12

[已经解决] 如何在敌人释放技能时【也】变化变量?

[复制链接]
梦石
0
星屑
325
在线时间
252 小时
注册时间
2014-4-11
回帖
184
发表于 2016-11-15 14:00:08 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 眼中目之瞳 于 2016-11-15 14:24 编辑

以前有问过如何让我方角色设置不同的变量来触发不同的分歧条件——
https://rpg.blue/forum.php?mod=viewthread&tid=396576
所以现在想解决的问题是让敌人在释放技能时,也根据敌人的编号来控制变量……
以下是我方人物的,不知道有没有用ORZ

  1. class Scene_Battle < Scene_Base
  2.   #--------------------------------------------------------------------------
  3.   # ● 使用技能/物品
  4.   #--------------------------------------------------------------------------
  5.   alias sny46_161005_use_item use_item
  6.   def use_item
  7.     # 如果使用者是我方角色,11号变量在释放的时候赋值为使用者ID
  8.     $game_variables[11] = @subject.id if @subject.is_a?(Game_Actor)
  9.     sny46_161005_use_item
  10.   end
  11. end
复制代码



还有敌人的强制战斗指令是不是只能针对于在某一个位置上的敌人,而不是使用上一个技能的敌人?

评分

参与人数 1星屑 +50 收起 理由
RaidenInfinity + 50 结帖

查看全部评分

梦石
0
星屑
644
在线时间
830 小时
注册时间
2016-7-24
回帖
644

开拓者

发表于 2016-11-15 14:26:05 | 显示全部楼层
本帖最后由 QQ蚊子湯 于 2016-11-15 14:28 编辑

改造完成
[pre lang="ruby"]    class Scene_Battle < Scene_Base
      #--------------------------------------------------------------------------
      # ● 使用技能/物品
      #--------------------------------------------------------------------------
      alias sny46_161005_use_item use_item
      def use_item
        # 如果使用者是我方角色,11号变量在释放的时候赋值为使用者ID
        $game_variables[1] = @subject.id if @subject.is_a?(Game_Actor)
        $game_variables[2] = @subject.enemy_id if @subject.is_a?(Game_Enemy)
        sny46_161005_use_item
      end
    end[/pre]

現在角色ID會改變1號變量
敵人ID會改變2號變量

不過其實都放同一個變量也可以,這邊方便觀看

回答你的追問
敵人的強制行動也有上一個目標
2016/07/17 加入RPG製作,勿忘初衷!
回复 1 0

使用道具 举报

梦石
0
星屑
325
在线时间
252 小时
注册时间
2014-4-11
回帖
184
 楼主| 发表于 2016-11-16 10:53:35 | 显示全部楼层
本帖最后由 眼中目之瞳 于 2016-11-16 11:05 编辑
QQ蚊子湯 发表于 2016-11-15 14:26
改造完成
    class Scene_Battle < Scene_Base
      #------------------------------------------------ ...


感谢~~

不过追问可能理解错了……敌人可以强制攻击上一目标这我是知道的(因为强制攻击里有这项),但我不知道如何让同一个敌人触发,“强制行动”的敌人列表显示的是编号“1~8”,而不是在场内的敌人,打个比方就是我设定了两个一模一样的敌人,2号位的敌人释放技能时,之后的强制行动只会让我在公共事件里指定的“*”号位的敌人强制行动。
回复

使用道具 举报

梦石
0
星屑
644
在线时间
830 小时
注册时间
2016-7-24
回帖
644

开拓者

发表于 2016-11-16 15:18:00 | 显示全部楼层
本帖最后由 QQ蚊子湯 于 2016-11-16 15:19 编辑
眼中目之瞳 发表于 2016-11-16 10:53
感谢~~

不过追问可能理解错了……敌人可以强制攻击上一目标这我是知道的(因为强制攻击里有这项),但我 ...


現在3號變數會變成敵人的編號

[pre lang="ruby"]    class Scene_Battle < Scene_Base
      #--------------------------------------------------------------------------
      # ● 使用技能/物品
      #--------------------------------------------------------------------------
      alias sny46_161005_use_item use_item
      def use_item
        $game_variables[1] = @subject.id if @subject.is_a?(Game_Actor)
        if @subject.is_a?(Game_Enemy)
        $game_variables[2] = @subject.enemy_id
        $game_variables[3] = @subject.index  
        end
        sny46_161005_use_item
      end
    end[/pre]
順帶一提,編號是從0開始,不要設定錯了哦!
2016/07/17 加入RPG製作,勿忘初衷!
回复

使用道具 举报

梦石
0
星屑
325
在线时间
252 小时
注册时间
2014-4-11
回帖
184
 楼主| 发表于 2016-11-17 22:36:59 | 显示全部楼层
QQ蚊子湯 发表于 2016-11-16 15:18
現在3號變數會變成敵人的編號

    class Scene_Battle < Scene_Base

抱歉我还是没看懂怎么设置, $game_variables[1]对应的时我方角色,我把1改成了11;   $game_variables[2]对应地方角色,2我改成了12;那么  $game_variables[3]对应的是啥?

点评

$game_variables[3]对应敌人编号,设置的话变量3的值0~7分别对应数据库中的编号1~8,(只是目测,不对的话表理我=w=)<--  发表于 2016-11-18 00:07
回复

使用道具 举报

梦石
0
星屑
644
在线时间
830 小时
注册时间
2016-7-24
回帖
644

开拓者

发表于 2016-11-18 02:16:05 | 显示全部楼层
本帖最后由 QQ蚊子湯 于 2016-11-18 04:02 编辑

非常抱歉,我花了比改腳本多好幾倍的時間都不能理解您的追問想要什麼

變數3會變成當前行動的敵人場內的編號

難道您不是想要取得現在行動的敵人是幾號位嗎?

把這段放在公共事件中,變數3號位的敵人會發動10號技能至上一個目標
[pre lang="ruby"]@params[0] = 0
@params[1] = $game_variables[3]  #配合上方的檢索編號
@params[2] = 10  #技能編號
@params[3] = -2  #至上一個目標
command_339[/pre]




PS:您的提問方式令我十分困擾,請不要再追加新問題,如果需要追加問題請另開新帖,由其他人來回答,補充上述的問題依然可以提問!

点评

可能是我表达不好吧……我另外开贴提问好了。  发表于 2016-11-18 21:23
2016/07/17 加入RPG製作,勿忘初衷!
回复

使用道具 举报

梦石
0
星屑
325
在线时间
252 小时
注册时间
2014-4-11
回帖
184
 楼主| 发表于 2016-11-18 22:18:29 | 显示全部楼层
本帖最后由 眼中目之瞳 于 2016-11-18 22:31 编辑
QQ蚊子湯 发表于 2016-11-18 02:16
非常抱歉,我花了比改腳本多好幾倍的時間都不能理解您的追問想要什麼

變數3會變成當前行動的敵人場內的編 ...


我是这样做的
bandicam 2016-11-18 22-29-43-298.jpg
这个是我在数据库里关于技能和变量的修改
bandicam 2016-11-18 22-13-00-931.jpg bandicam 2016-11-18 22-13-23-684.jpg
但是,我的敌人是从上往下排列的,最上面的敌人正常攻击了,下面的敌人就出现了
bandicam 2016-11-18 22-14-58-118.jpg
这样的问题。
回复

使用道具 举报

梦石
0
星屑
644
在线时间
830 小时
注册时间
2016-7-24
回帖
644

开拓者

发表于 2016-11-18 22:50:54 | 显示全部楼层
本帖最后由 QQ蚊子湯 于 2016-11-18 22:56 编辑

Zagfa未命名.png

[pre lang="ruby"]iterate_battler( 0, $game_variables[3]) do
|battler|
      next if battler.death_state?
  battler.force_action(10, -2)
      BattleManager.force_action(battler)
      Fiber.yield while
BattleManager.action_forced?
    end[/pre]

Zagfa未命名.png

從原本的command_339下去改
[pre lang="ruby"]    iterate_battler(@params[0], @params[1]) do |battler|
      next if battler.death_state?
      battler.force_action(@params[2], @params[3])
      BattleManager.force_action(battler)
      Fiber.yield while BattleManager.action_forced?
    end[/pre]
參照6樓
params[0] 0敵 1我
params[1] 號位
params[2] 技能
params[3] 對象號位,-1隨機, -2上一個目標

点评

我这里还是弄不好ORZ,我放弃了,要是以后有人想做类似系统的话给他例子好了  发表于 2016-11-19 22:03
2016/07/17 加入RPG製作,勿忘初衷!
回复 1 0

使用道具 举报

梦石
0
星屑
644
在线时间
830 小时
注册时间
2016-7-24
回帖
644

开拓者

发表于 2016-11-19 22:42:47 | 显示全部楼层
範例在這裡,如果無法理解的話只要複製貼上,
然後公共事件改一下技能ID
Project9.rar (1.41 MB, 下载次数: 64)

点评

感谢,看着范例才弄好了ORZ  发表于 2016-11-21 22:37

评分

参与人数 1星屑 +500 梦石 +1 收起 理由
RaidenInfinity + 500 + 1 认可答案

查看全部评分

2016/07/17 加入RPG製作,勿忘初衷!
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部