Project1

标题: 如何临时更改特技无效显示的字? [打印本页]

作者: Password    时间: 2012-7-17 13:10
标题: 如何临时更改特技无效显示的字?

如何通过事件中插入脚本来临时修改这句话?

还有,如何设定被攻击的敌人附加某状态?dsu_plus_rewardpost_czw
作者: fxwd    时间: 2012-7-17 13:18
事件中直接插入那句话试试,插入的时候文字改成你想要的文字(未测试,不知道行不行,不过字体可以这样改)
作者: 幻想中的鸡蛋    时间: 2012-7-17 23:46
前面加上 域作用符 Vocab::   试试?
即 Vocab::ActionFailure= ”XXXXX“  XXXXX写成你想要的文字

作者: 幻想中的鸡蛋    时间: 2012-7-18 10:33
因为公共事件的执行滞后于技能效果的显示,所以事件中插入脚本修改后,会在下一个技能显示……
貌似只能脚本
稍微写了一个,插入到main前试一下……
class Scene_Battle < Scene_Base  
#--------------------------------------------------------------------------
  # ● 执行战斗行动:使用技能
  #--------------------------------------------------------------------------
  def execute_action_skill
    skill = @active_battler.action.skill
  #--------------------------------------------
   case @active_battler.action.skill.id
   when 59  #技能id
     @Action_Failure = "aa"  #引号中表示想要的文字
  when 1   #技能id
     @Action_Failure = "bb"  #引号中表示想要的文字

     #按照上面的格式随意添加

   else
     @Action_Failure = Vocab::ActionFailure
   end
  #--------------------------------------------
    text = @active_battler.name + skill.message1
    @message_window.add_instant_text(text)
    unless skill.message2.empty?
      wait(10)
      @message_window.add_instant_text(skill.message2)
    end
    targets = @active_battler.action.make_targets
    display_animation(targets, skill.animation_id)
    @active_battler.mp -= @active_battler.calc_mp_cost(skill)
    $game_temp.common_event_id = skill.common_event_id
    for target in targets
      target.skill_effect(@active_battler, skill)
      display_action_effects(target, skill)
    end
  end
  #--------------------------------------------------------------------------
  # ● 显示落空
  #     target : 目标
  #     obj    : 技能或物品
  #--------------------------------------------------------------------------
  def display_miss(target, obj = nil)
    if obj == nil or obj.physical_attack
      if target.actor?
        text = sprintf(Vocab::ActorNoHit, target.name)
      else
        text = sprintf(Vocab::EnemyNoHit, target.name)
      end
      Sound.play_miss
    else
      text = sprintf(@Action_Failure, target.name)
    end
    @message_window.add_instant_text(text)
    wait(30)
  end
end
作者: 铅笔描绘的思念    时间: 2012-7-18 12:20
事件脚本中 Vocab::ActionFailure = "xx"  测试有效
作者: 幻想中的鸡蛋    时间: 2012-7-18 13:11
本帖最后由 幻想中的鸡蛋 于 2012-7-18 17:28 编辑

你的要求好诡异……好吧,首先确定一点,公共事件内脚本修改文字说明滞后于文字显示,所以不可行。
按照你的要求,非要用公共事件的话(看上去不单是随机数的问题吧),可以让这段文字显示为空,然后公共事件内添加显示文章。依然使用上面给出的脚本方案(稍微有些修改,用下面这个),第九行填写你需要的技能id,引号内为空,调用公共事件时,条件分歧用脚本$Skill_miss==true判定为技能miss,里面写你想要的内容。
公共事件最后一行加上脚本$Skill_miss = false 大致上应该就没有问题了。
因为不知道你想要的具体效果是什么,所以我也只能给到这种方案建议。
  1. class Scene_Battle < Scene_Base  
  2. #--------------------------------------------------------------------------
  3.   # ● 执行战斗行动:使用技能
  4.   #--------------------------------------------------------------------------
  5.   def execute_action_skill
  6.     skill = @active_battler.action.skill
  7.   #--------------------------------------------
  8.    case @active_battler.action.skill.id
  9.    when 59
  10.      @Action_Failure = ""
  11.    else
  12.      @Action_Failure = Vocab::ActionFailure
  13.    end
  14.   #--------------------------------------------
  15.     text = @active_battler.name + skill.message1
  16.     @message_window.add_instant_text(text)
  17.     unless skill.message2.empty?
  18.       wait(10)
  19.       @message_window.add_instant_text(skill.message2)
  20.     end
  21.     targets = @active_battler.action.make_targets
  22.     display_animation(targets, skill.animation_id)
  23.     @active_battler.mp -= @active_battler.calc_mp_cost(skill)
  24.     $game_temp.common_event_id = skill.common_event_id
  25.     for target in targets
  26.       target.skill_effect(@active_battler, skill)
  27.       display_action_effects(target, skill)
  28.     end
  29.   end
  30.   #--------------------------------------------------------------------------
  31.   # ● 显示落空
  32.   #     target : 目标
  33.   #     obj    : 技能或物品
  34.   #--------------------------------------------------------------------------
  35.   def display_miss(target, obj = nil)
  36.     if obj == nil or obj.physical_attack
  37.       if target.actor?
  38.         text = sprintf(Vocab::ActorNoHit, target.name)
  39.       else
  40.         text = sprintf(Vocab::EnemyNoHit, target.name)
  41.       end
  42.       Sound.play_miss
  43.     else
  44.       $Skill_miss = true
  45.       text = sprintf(@Action_Failure, target.name)
  46.     end
  47.     @message_window.add_instant_text(text)
  48.     wait(30)
  49.   end
  50.   #--------------------------------------------------------------------------
  51.   # ● 显示失败
  52.   #     target : 目标(角色)
  53.   #     obj    : 技能或物品
  54.   #--------------------------------------------------------------------------
  55.   def display_failure(target, obj)
  56.     $Skill_miss = true
  57.     text = sprintf(@Action_Failure, target.name)
  58.     @message_window.add_instant_text(text)
  59.     wait(20)
  60.   end
  61. end
复制代码

作者: 幻想中的鸡蛋    时间: 2012-7-18 15:54
我很想吐槽如果你想要的是伤害为0时的伤害显示,为什么一开始给出Miss时显示的文字的图片……
另外,我感觉我还是没有明白你的意思。你是指技能17伤害一定为0,而且希望显示的文字是空格么?
如果是这样,技能需要伤害值定为0与技能成功率调为0,效果上不会有什么区别的。(除非你的技能还要附加什么诡异的状态)

作者: 铅笔描绘的思念    时间: 2012-7-18 16:31
本帖最后由 铅笔描绘的思念 于 2012-7-18 19:11 编辑

此楼已被处理。。
作者: Password    时间: 2012-7-18 17:08
铅笔描绘的思念 发表于 2012-7-18 16:31
如果是临时的话。。。全局搜索一下display_miss把改一下。。加一下条件分歧比较简单。。当然还有display_fa ...

还是永久改了……另一个技能的成功率是40%,但是未成功时也一起改了……而且第一回合会迟滞。
作者: Password    时间: 2012-7-18 18:53
铅笔描绘的思念 发表于 2012-7-18 16:31
如果是临时的话。。。全局搜索一下display_miss把改一下。。加一下条件分歧比较简单。。当然还有display_fa ...

还是不管用 T T      

其实就是当技能17使用时伤害为零的显示变为空格,不影响其他技能。
作者: 怪蜀黍    时间: 2012-7-18 21:42
修改2处脚本。
第一处:
  1.   #--------------------------------------------------------------------------
  2.   # ● 显示落空
  3.   #     target : 目标
  4.   #     obj    : 技能或物品
  5.   #--------------------------------------------------------------------------
  6.   def display_miss(target, obj = nil)
  7.     if obj == nil or obj.physical_attack
  8.       if target.actor?
  9.         text = sprintf(Vocab::ActorNoHit, target.name)
  10.       else
  11.         text = sprintf(Vocab::EnemyNoHit, target.name)
  12.       end
  13.       Sound.play_miss
  14.     else
  15.       text = sprintf(Vocab::ActionFailure, target.name)
  16.       #以下3行是增加的内容,在中括号内添加需要改变技能语句的技能ID,这里假定是1,3,10号技能:
  17.       if [1,3,10].include?(obj.id) and obj.is_a?(RPG::Skill)
  18.         text = sprintf("在这里添加特殊的语句", target.name)
  19.       end
  20.     end
  21.     @message_window.add_instant_text(text)
  22.     wait(30)
  23.   end
复制代码
第二处:
  1.   #--------------------------------------------------------------------------
  2.   # ● 显示失败
  3.   #     target : 目标(角色)
  4.   #     obj    : 技能或物品
  5.   #--------------------------------------------------------------------------
  6.   def display_failure(target, obj)
  7.     text = sprintf(Vocab::ActionFailure, target.name)
  8.     #以下3行是增加的内容,在中括号内添加需要改变技能语句的技能ID,这里假定是1,3,10号技能:
  9.     if [1,3,10].include?(obj.id) and obj.is_a?(RPG::Skill)
  10.       text = sprintf("在这里添加特殊的语句", target.name)
  11.     end
  12.     @message_window.add_instant_text(text)
  13.     wait(20)
  14.   end
复制代码

作者: Password    时间: 2012-7-19 08:36
protosssonny 发表于 2012-7-18 21:42
修改2处脚本。
第一处:第二处:



如何指定被攻击者附加状态?(有这个需要,直接附加不行)
作者: 怪蜀黍    时间: 2012-7-19 09:01
本帖最后由 protosssonny 于 2012-7-19 09:02 编辑

Game_Battler类下的649行,这里的self就是被攻击者,加一行变成:
  1.   #--------------------------------------------------------------------------
  2.   # ● 计算特技以及物品造成的伤害
  3.   #     user : 使用特技以及物品的人
  4.   #     obj  : 特技以及物品
  5.   #    将结果代入 @hp_damage 或 @mp_damage。
  6.   #--------------------------------------------------------------------------
  7.   def make_obj_damage_value(user, obj)
  8.     damage = obj.base_damage                        # 获取基本伤害
  9.     if damage > 0                                   # 伤害为正数
  10.       damage += user.atk * 4 * obj.atk_f / 100      # 打击关系度: 使用者
  11.       damage += user.spi * 2 * obj.spi_f / 100      # 精神关系度: 使用者
  12.       unless obj.ignore_defense                     # 无视防御力以外
  13.         damage -= self.def * 2 * obj.atk_f / 100    # 打击关系度: 对象者
  14.         damage -= self.spi * 1 * obj.spi_f / 100    # 精神关系度: 对象者
  15.       end
  16.       damage = 0 if damage < 0                      # 减少为 0
  17.     elsif damage < 0                                # 伤害为负数
  18.       damage -= user.atk * 4 * obj.atk_f / 100      # 打击关系度: 使用者
  19.       damage -= user.spi * 2 * obj.spi_f / 100      # 精神关系度: 使用者
  20.     end
  21.     damage *= elements_max_rate(obj.element_set)    # 属性修正
  22.     damage /= 100
  23.     damage = apply_variance(damage, obj.variance)   # 分散
  24.     damage = apply_guard(damage)                    # 防御修正
  25.     #加下面一行。如果技能或物品的ID为15并且它是一个技能,则被攻击者附加1号状态:
  26.     self.add_state(1) if obj.id == 15 and obj.is_a?(RPG::Skill)
  27.     if obj.damage_to_mp  
  28.       @mp_damage = damage                           # MP 伤害
  29.     else
  30.       @hp_damage = damage                           # HP 伤害
  31.     end
  32.   end
复制代码





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