Project1
标题:
【急】RMVX如何使人物在使用某种物品的时候无敌?
[打印本页]
作者:
思数冉
时间:
2011-7-23 23:46
标题:
【急】RMVX如何使人物在使用某种物品的时候无敌?
我的做法是增加一个无敌状态,然后使用物品的时候增加这个状态,再用公共事件处理,公共事件是并行处理,开关是开着的,内容是(简记):
循环
{
如果 (一个主角的名字)无敌
{
自动回复
}
否则
{
跳出循环
}
}
之前没有写跳出循环结果没法切换场景了,写了之后没有效果啊,于是我觉得这种方法不可行,就想到在条件分支里放脚本做到敌人攻击不减血,吸取不减魔,问题是我不怎么会脚本!= =|
于是求助各位有什么办法?(上面的自动回复只是为了模拟出效果,但是没成功,加循环是为了每次被攻击都自动回复)
谢谢了 dsu_plus_rewardpost_czw
作者:
仲秋启明
时间:
2011-7-24 09:13
并行处理不用循环
作者:
絀神入化
时间:
2011-7-24 11:33
{:nm_5:}我认为最直接的方法是对方攻击、精神清零~
作者:
思数冉
时间:
2011-7-25 18:58
2L没有用啊
作者:
怪蜀黍
时间:
2011-7-25 21:06
假设你的无敌状态编号为10,那么在Game_Battler类下的def make_attack_damage_value(attacker)和def make_obj_damage_value(user, obj)这个两定义的最后一个end前都分别加上:
if self.state?(10)
@hp_damage = 0
@mp_damage = 0
end
复制代码
这样你的无敌就实现了。这样可以使他HP、MP不变,但是会中状态。要彻底无敌,连状态也不中就还需要改脚本。
作者:
fux2
时间:
2011-7-26 08:05
卧槽VX的战斗系统= =
module Fux2
INVINCIBLE_INDEX = 17 #无敌状态编号
end
class Scene_Battle < Scene_Base
def update_target_enemy_selection
@target_enemy_window.update
if Input.trigger?(Input::B)
Sound.play_cancel
end_target_enemy_selection
elsif Input.trigger?(Input::C)
if @target_enemy_window.enemy.state?(Fux2::INVINCIBLE_INDEX)
$data_system.sounds[3].play
return
end
Sound.play_decision
@active_battler.action.target_index = @target_enemy_window.enemy.index
end_target_enemy_selection
end_skill_selection
end_item_selection
next_actor
end
end
end
class Game_Unit
def existing_members_bat
result = []
for battler in members
next unless battler.exist?
next if battler.state?(Fux2::INVINCIBLE_INDEX)
result.push(battler)
end
return result
end
end
class Game_BattleAction
def make_obj_targets(obj)
targets = []
if obj.for_opponent?
if obj.for_random?
if obj.for_one?
number_of_targets = 1
elsif obj.for_two?
number_of_targets = 2
else
number_of_targets = 3
end
number_of_targets.times do
targets.push(opponents_unit.random_target)
end
elsif obj.dual?
targets.push(opponents_unit.smooth_target(@target_index))
targets += targets
elsif obj.for_one?
targets.push(opponents_unit.smooth_target(@target_index))
targets.push(friends_unit.smooth_target(@target_index))
else
targets += opponents_unit.existing_members_bat
end
elsif obj.for_user?
targets.push(battler)
elsif obj.for_dead_friend?
if obj.for_one?
targets.push(friends_unit.smooth_dead_target(@target_index))
else
targets += friends_unit.dead_members
end
elsif obj.for_friend?
if obj.for_one?
targets.push(friends_unit.smooth_target(@target_index))
else
targets += friends_unit.existing_members
end
end
return targets.compact
end
end
复制代码
作者:
思数冉
时间:
2011-7-28 19:37
楼上谢了
不过顺便问下,如果要状态无敌呢?就是负面状态在一定时间内无效
作者:
fux2
时间:
2011-7-29 07:47
思数冉 发表于 2011-7-28 19:37
楼上谢了
不过顺便问下,如果要状态无敌呢?就是负面状态在一定时间内无效 ...
增加一个移除所有状态好了{:nm_7:}
反正用了这个脚本之后该状态的敌人根本不受战斗影响.
作者:
冰舞蝶恋
时间:
2011-7-29 20:01
物品施加【无敌状态】,属性为空,过几回合解除神马的自己设定。
战斗并行公共事件判断:角色如果进入【无敌】状态,如果开关XXX没被打开,则用变量代入血量、DEF(防御力),并加到满,开关XXX打开。否则的场合(则角色无无敌状态),血量、防御力减到0,再各自加上之前被代入的变量。
嗯。。就这样了,表达能力甚差,T。T希望能听得懂。
作者:
思数冉
时间:
2011-7-29 20:15
-8L:这个我知道,可我的意思是一定时间内无效,举个例子,增加了某个状态后,几个回合内,当敌人使用可以让我方角色中毒的技能时,无法服加【毒】状态,其他状态攻击也是这样,除了那几个提升还有无敌状态以为,其他状态全部无效化,这个要怎么做,咱对脚本研究不深,战斗测试,上面的无敌脚本好像可以达到这个效果,就是不知道怎么单独达到这个效果,谢谢
-9L,用7L脚本我已经搞定无敌了,不过还是谢谢你
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1