本帖最后由 guoxiaomi 于 2014-12-25 20:18 编辑
第二个问题我可以回答,最近正好在研究这个。
immortal出现在这里:- #--------------------------------------------------------------------------
- # ● 战斗不能判定
- #--------------------------------------------------------------------------
- def dead?
- return (@hp == 0 and not @immortal)
- end
- #--------------------------------------------------------------------------
- # ● 存在判定
- #--------------------------------------------------------------------------
- def exist?
- return (not [url=home.php?mod=space&uid=292300]@Hidden[/url] and (@hp > 0 or @immortal))
- end
复制代码 所以如果设置角色或敌人的immortal为true的话,生命值为0的时候是不会附加上“战斗不能”状态的。并且以HP0目标为对象的及技能和物品不能对immortal的角色或敌人使用,相反,正常的技能、物品可以对immortal的角色或敌人使用。
current_action是class Game_BattleAction下的对象,用来记录每回合各角色的行动。下面有7个实例变量:- #--------------------------------------------------------------------------
- # ● 定义实例变量
- #--------------------------------------------------------------------------
- attr_accessor :speed # 速度
- attr_accessor :kind # 种类 (基本 / 特技 / 物品)
- attr_accessor :basic # 基本 (攻击 / 防御 / 逃跑)
- attr_accessor :skill_id # 特技 ID
- attr_accessor :item_id # 物品 ID
- attr_accessor :target_index # 对像索引
- attr_accessor :forcing # 强制标志
复制代码 speed是用来决定动作的先后;
kind(0,1,2)是决定动作类型,kind=0要设置basic的值,=1要设置skill_id的值,=2要设置item_id的值。
target_index是一个数,决定了技能或物品的目标对象。要是对象是“全体XX”或使用者就不需要设置。
forcing是强制标志,forcing为false的时候,如果技能没学习或者物品不存在,这个action是不会生效的。
至少有一个作用是在物品/技能的公共事件里加上如下代码:- if rand(100) < 25
- @a = $scene.active_battler
- @action = @a.current_action
- @action.kind = 2
- @action.item_id = 34
- $game_temp.forcing_battler = @a
- end
复制代码 那么在技能/物品释放完毕后,有25%的概率立即使用34号物品,我的工程里34号物品对象是“使用者”,所以没有设置target_index
请在战斗中测试,并自行设置class Scene_Battle attr_reader :active_battler end
class Scene_Battle
attr_reader :active_battler
end
|