Project1
标题: 如何在敌人释放技能时【也】变化变量? [打印本页]
作者: 眼中目之瞳 时间: 2016-11-15 14:00
标题: 如何在敌人释放技能时【也】变化变量?
本帖最后由 眼中目之瞳 于 2016-11-15 14:24 编辑
以前有问过如何让我方角色设置不同的变量来触发不同的分歧条件——
https://rpg.blue/forum.php?mod=viewthread&tid=396576
所以现在想解决的问题是让敌人在释放技能时,也根据敌人的编号来控制变量……
以下是我方人物的,不知道有没有用ORZ
- class Scene_Battle < Scene_Base
- #--------------------------------------------------------------------------
- # ● 使用技能/物品
- #--------------------------------------------------------------------------
- alias sny46_161005_use_item use_item
- def use_item
- # 如果使用者是我方角色,11号变量在释放的时候赋值为使用者ID
- $game_variables[11] = @subject.id if @subject.is_a?(Game_Actor)
- sny46_161005_use_item
- end
- end
复制代码
还有敌人的强制战斗指令是不是只能针对于在某一个位置上的敌人,而不是使用上一个技能的敌人?
作者: QQ蚊子湯 时间: 2016-11-15 14:26
本帖最后由 QQ蚊子湯 于 2016-11-15 14:28 编辑
改造完成
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
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
現在角色ID會改變1號變量
敵人ID會改變2號變量
不過其實都放同一個變量也可以,這邊方便觀看
回答你的追問
敵人的強制行動也有上一個目標
作者: 眼中目之瞳 时间: 2016-11-16 10:53
本帖最后由 眼中目之瞳 于 2016-11-16 11:05 编辑
感谢~~
不过追问可能理解错了……敌人可以强制攻击上一目标这我是知道的(因为强制攻击里有这项),但我不知道如何让同一个敌人触发,“强制行动”的敌人列表显示的是编号“1~8”,而不是在场内的敌人,打个比方就是我设定了两个一模一样的敌人,2号位的敌人释放技能时,之后的强制行动只会让我在公共事件里指定的“*”号位的敌人强制行动。
作者: QQ蚊子湯 时间: 2016-11-16 15:18
本帖最后由 QQ蚊子湯 于 2016-11-16 15:19 编辑
現在3號變數會變成敵人的編號
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
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
順帶一提,編號是從0開始,不要設定錯了哦!
作者: 眼中目之瞳 时间: 2016-11-17 22:36
抱歉我还是没看懂怎么设置, $game_variables[1]对应的时我方角色,我把1改成了11; $game_variables[2]对应地方角色,2我改成了12;那么 $game_variables[3]对应的是啥?
作者: QQ蚊子湯 时间: 2016-11-18 02:16
本帖最后由 QQ蚊子湯 于 2016-11-18 04:02 编辑
非常抱歉,我花了比改腳本多好幾倍的時間都不能理解您的追問想要什麼
變數3會變成當前行動的敵人場內的編號
難道您不是想要取得現在行動的敵人是幾號位嗎?
把這段放在公共事件中,變數3號位的敵人會發動10號技能至上一個目標
@params[0] = 0
@params[1] = $game_variables[3] #配合上方的檢索編號
@params[2] = 10 #技能編號
@params[3] = -2 #至上一個目標
command_339
@params[0] = 0
@params[1] = $game_variables[3] #配合上方的檢索編號
@params[2] = 10 #技能編號
@params[3] = -2 #至上一個目標
command_339
PS:您的提問方式令我十分困擾,請不要再追加新問題,如果需要追加問題請另開新帖,由其他人來回答,補充上述的問題依然可以提問!
作者: 眼中目之瞳 时间: 2016-11-18 22:18
本帖最后由 眼中目之瞳 于 2016-11-18 22:31 编辑
我是这样做的
这个是我在数据库里关于技能和变量的修改
但是,我的敌人是从上往下排列的,最上面的敌人正常攻击了,下面的敌人就出现了
这样的问题。
作者: QQ蚊子湯 时间: 2016-11-18 22:50
本帖最后由 QQ蚊子湯 于 2016-11-18 22:56 编辑
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
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
從原本的command_339下去改
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
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
參照6樓
params[0] 0敵 1我
params[1] 號位
params[2] 技能
params[3] 對象號位,-1隨機, -2上一個目標
作者: QQ蚊子湯 时间: 2016-11-19 22:42
範例在這裡,如果無法理解的話只要複製貼上,
然後公共事件改一下技能ID
Project9.rar
(1.41 MB, 下载次数: 64)
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |