# 开关条件为 10,且 开关 10 打开时 if switch_id == 10 # SP 的限制条件是低于变量 10 if self.sp > $game_variables[10] # next 表示这个行动被跳过,是否定条件 next end end
if switch_id == 开关ID if 不符合的条件1 next end if 不符合的条件2 next end ... end
XP.gif (43.58 KB, 下载次数: 38)
guoxiaomi 发表于 2017-2-24 12:14
有。
先说几句:
89444640 发表于 2017-2-24 16:50
是不是这样条件分歧里面写脚本,
$game_troop.enemies[1].sp 后面不会写,
一号敌人sp小于多少多少,然后 ...
soulsaga 发表于 2017-2-24 17:00
后面?你SP低于多少?如果按技能消耗的确麻烦..我也不会写..
89444640 发表于 2017-2-24 17:14
好像想的有的复杂了,这么写就能可以了,
技能mp消耗确实不好说,只要mp大于等于该敌人mp消最少消耗的技 ...
XP.gif (37.32 KB, 下载次数: 40)
#-------------------------------------------------------------------------- # ● 生成行动 #-------------------------------------------------------------------------- def make_action # 清除当前行动 self.current_action.clear # 无法行动的情况 unless self.movable? # 过程结束 return end # 抽取现在有效的行动 available_actions = [] rating_max = 0 for action in self.actions # 确认回合条件 n = $game_temp.battle_turn a = action.condition_turn_a b = action.condition_turn_b if (b == 0 and n != a) or (b > 0 and (n < 1 or n < a or n % b != a % b)) next end # 确认 HP 条件 if self.hp * 100.0 / self.maxhp > action.condition_hp next end # 确认等级条件 if $game_party.max_level < action.condition_level next end # 确认开关条件 switch_id = action.condition_switch_id if switch_id > 0 and $game_switches[switch_id] == false next end # ------------------------------------------------------------ # 开关 1 打开时,还需要满足 SP 不足 100 # ------------------------------------------------------------ if switch_id == 1 if self.sp >= 100 next end end # ------------------------------------------------------------ # 符合条件 : 添加本行动 available_actions.push(action) if action.rating > rating_max rating_max = action.rating end end # 最大概率值作为 3 合计计算(0 除外) ratings_total = 0 for action in available_actions if action.rating > rating_max - 3 ratings_total += action.rating - (rating_max - 3) end end # 概率合计不为 0 的情况下 if ratings_total > 0 # 生成随机数 value = rand(ratings_total) # 设置对应生成随机数的当前行动 for action in available_actions if action.rating > rating_max - 3 if value < action.rating - (rating_max - 3) self.current_action.kind = action.kind self.current_action.basic = action.basic self.current_action.skill_id = action.skill_id self.current_action.decide_random_target_for_enemy return else value -= action.rating - (rating_max - 3) end end end end end
话说
敌人行为这里,能不能把菜单加个当敌人mp小于多少多少执行什么操作的选项呢?
# ------------------------------------------------------------ # 开关 1 打开时,还需要满足 SP 不足 100 # ------------------------------------------------------------ if switch_id == 1 if self.sp >= 100 next end end # ------------------------------------------------------------
# ------------------------------------------------------------ # 开关 1 打开时,还需要满足 SP 不足 100 # ------------------------------------------------------------ if switch_id == 1 if not self.sp < 100 next end end # ------------------------------------------------------------
事件脚本怎么得到敌人战斗中的队伍ID
# ------------------------------------------------------------ # 开关 1 打开时,还需要满足 SP 不足 100 # ------------------------------------------------------------ if switch_id == 1 if self.sp > 100 next end end # ------------------------------------------------------------
guoxiaomi 发表于 2017-2-24 22:54
我看了一下之前楼主发的《全动画修正测试》,Game_Enemy#make_action果然没有被修改,这个方法应该是有效的 ...
soulsaga 发表于 2017-2-25 09:43
话说有没回复敌人单人SP量的技能?
89444640 发表于 2017-2-25 09:55
给自己回复还好……对地方其他指定单人对程序不会的咱们好像有困难,还是放弃吧。
要不就设置敌人有群体s ...
soulsaga 发表于 2017-2-25 09:43
话说有没回复敌人单人SP量的技能?
我想到了一个方法是,让敌人使用物品,此物品能回复全体敌人的SP值,但是物品有属性,比如物品自带属性“ ...
#-------------------------------------------------------------------------- # ● 生成行动 #-------------------------------------------------------------------------- def make_action # 清除当前行动 self.current_action.clear # 无法行动的情况 unless self.movable? # 过程结束 return end # 抽取现在有效的行动 available_actions = [] rating_max = 0 for action in self.actions # 确认回合条件 n = $game_temp.battle_turn a = action.condition_turn_a b = action.condition_turn_b if (b == 0 and n != a) or (b > 0 and (n < 1 or n < a or n % b != a % b)) next end # 确认 HP 条件 if self.hp * 100.0 / self.maxhp > action.condition_hp next end # 确认等级条件 if $game_party.max_level < action.condition_level next end # 确认开关条件 switch_id = action.condition_switch_id if switch_id > 0 and $game_switches[switch_id] == false next end # 符合条件 : 添加本行动 available_actions.push(action) if action.rating > rating_max rating_max = action.rating end end # 最大概率值作为 3 合计计算(0 除外) ratings_total = 0 for action in available_actions if action.rating > rating_max - 3 ratings_total += action.rating - (rating_max - 3) end end # 概率合计不为 0 的情况下 if ratings_total > 0 # 生成随机数 value = rand(ratings_total) # 设置对应生成随机数的当前行动 for action in available_actions if action.rating > rating_max - 3 if value < action.rating - (rating_max - 3) self.current_action.kind = action.kind self.current_action.basic = action.basic self.current_action.skill_id = action.skill_id self.current_action.decide_random_target_for_enemy # ------------------------------------------------------------ # 在返回行动前做出修改 # ------------------------------------------------------------ # 此技能标记了属性 17 时 if $data_skills[action.skill_id].element_set.include?(17) # 更改为使用 物品 self.current_action.kind = 2 # 物品 ID 设置为 技能 ID self.current_action.item_id = action.skill_id end # ------------------------------------------------------------ return else value -= action.rating - (rating_max - 3) end end end end end
def make_item_action_result # 获取物品 @item = $data_items[@active_battler.current_action.item_id] # 因为物品耗尽而无法使用的情况下 unless $game_party.item_can_use?(@item.id) || @active_battler.is_a?(Game_Enemy) # 移至步骤 1 @phase4_step = 1 return end # 消耗品的情况下 if @item.consumable # 使用的物品减 1 $game_party.lose_item(@item.id, 1) end ... ...
188.83 KB, 下载次数: 104
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |