Project1

标题: 问个关于技能对象的问题 [打印本页]

作者: 青梅不酸    时间: 2021-5-3 15:22
标题: 问个关于技能对象的问题
事情是这样的:我设置一个技能,可以在平时使用,效果是不遇敌,技能对象设置成了“无”,然后我想在战斗中也能使用该技能,效果为提升我方单体回避率。一言以蔽之就是如何使技能在战斗与非战斗时对象范围不一样。通过脚本应该能实现的的吧,就发帖问了,拜托~~~~~~
作者: saiya酱    时间: 2021-5-3 18:25
不是很明白,非战斗中就算设置技能对象也可以实现不遇敌吧,也有可能是我的理解错误(
作者: 任小雪    时间: 2021-5-3 18:35
你可以将这个技能变成两个技能(阴阳两个面)
作者: enghao_lim    时间: 2021-5-3 23:00
最好的方法就是分成两个技能,然后用脚本实现在战斗时替换技能,这样就可以区分战斗与非战斗时效果。
使用以下重定义技能脚本就可实现,例子是1号技能在战斗时会替换成80号,可以自行追加与更改。
  1. class Game_Actor < Game_Battler
  2.   def skills
  3.     # 非战斗技能编号 => 战斗时技能编号
  4.     skillDef = {
  5.       1 => 80
  6.     }
  7.     skills = []
  8.     @skills.each{|skillId|
  9.       if $scene.is_a?(Scene_Battle) and skillDef[skillId] != nil
  10.         skills.push(skillDef[skillId])
  11.       else
  12.         skills.push(skillId)
  13.       end
  14.     }
  15.     return skills
  16.   end
  17. end
复制代码

作者: RPGzh500223    时间: 2021-5-4 06:54
本帖最后由 RPGzh500223 于 2021-5-4 07:06 编辑

如果是多个这种技能,使用楼上的会好点。
说明:
首先说明,并没有更改技能 战时与非战时的 的 对象范围,只是现实你描述的效果。
假设为100号特技,数据库中设置按 战时所需效果(可能使用:平时)进行设置, 可参考 056:闪避;
至于非战时使用时,不会执行 数据库 的 效果,至于技能对象“无”,就当是无需选择目标,
该技能为开关效果,用1次禁止遇敌,再用1次开启遇敌。
脚本:
脚本插入的地方——默认RMXP脚本  Scene_Skill 的 98行,注释 # 效果范围是我方的情况下 的上面。

  1.       if @skill.id == 100
  2.         $scene = Scene_Map.new
  3.         bool = $game_system.encounter_disabled
  4.         $game_system.encounter_disabled = !bool
  5.         $game_player.make_encounter_count
  6.         $game_temp.message_text = bool ? "开始遇敌" : "禁止遇敌"
  7.         $game_system.map_interpreter.instance_variable_set(
  8.           "@message_waiting", true)
  9.         $game_temp.message_proc = Proc.new { @message_waiting = false }
  10.         return
  11.       end
复制代码




作者: 青梅不酸    时间: 2021-5-4 18:32
感谢两支招,问题解决了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1