设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

如何临时更改特技无效显示的字?

查看数: 2386 | 评论数: 12 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2012-7-17 13:10

正文摘要:

如何通过事件中插入脚本来临时修改这句话? 还有,如何设定被攻击的敌人附加某状态?

回复

怪蜀黍 发表于 2012-7-19 09:01:37
本帖最后由 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
复制代码

点评

算了我以后再问吧,不是这个效果。  发表于 2012-7-19 09:10

评分

参与人数 1梦石 +2 收起 理由
Luciffer + 2 辛苦回答

查看全部评分

怪蜀黍 发表于 2012-7-18 21:42:54
修改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
复制代码

点评

不是你想象的那样简单,那我也会 = = 比如增减的角色的HP如何指定被攻击者?  发表于 2012-7-19 08:26
至于被攻击的敌人附加状态这样直接改数据库的这种小儿科问题,还是请大家帮助回答吧,我不献丑了。  发表于 2012-7-18 21:45
Password 发表于 2012-7-18 18:53:32
铅笔描绘的思念 发表于 2012-7-18 16:31
如果是临时的话。。。全局搜索一下display_miss把改一下。。加一下条件分歧比较简单。。当然还有display_fa ...

还是不管用 T T      

其实就是当技能17使用时伤害为零的显示变为空格,不影响其他技能。

点评

有关系啊,在Vocab里面改了有效的……  发表于 2012-7-18 19:50
毫无办法。。。等高人。。  发表于 2012-7-18 19:26
我真的不想说什么了。。。。我试了无数次也无法将伤害为0  发表于 2012-7-18 19:22
伤害为0的话。。貌似和ActionFailure木有半毛钱关系。。  发表于 2012-7-18 19:16
不过应该不会错啊。。。等等哈。  发表于 2012-7-18 18:54
Password 发表于 2012-7-18 17:08:17
铅笔描绘的思念 发表于 2012-7-18 16:31
如果是临时的话。。。全局搜索一下display_miss把改一下。。加一下条件分歧比较简单。。当然还有display_fa ...

还是永久改了……另一个技能的成功率是40%,但是未成功时也一起改了……而且第一回合会迟滞。
铅笔描绘的思念 发表于 2012-7-18 16:31:32
本帖最后由 铅笔描绘的思念 于 2012-7-18 19:11 编辑

此楼已被处理。。

点评

而且搜索结果有两个  发表于 2012-7-18 16:54
加到哪一行前面(后面)? = =  发表于 2012-7-18 16:51
能具体说一下加到哪里么?具体位置?脚本盲没办法……  发表于 2012-7-18 16:42
不是miss 是伤害为0.  发表于 2012-7-18 16:32
幻想中的鸡蛋 发表于 2012-7-18 15:54:31
我很想吐槽如果你想要的是伤害为0时的伤害显示,为什么一开始给出Miss时显示的文字的图片……
另外,我感觉我还是没有明白你的意思。你是指技能17伤害一定为0,而且希望显示的文字是空格么?
如果是这样,技能需要伤害值定为0与技能成功率调为0,效果上不会有什么区别的。(除非你的技能还要附加什么诡异的状态)

点评

= =  发表于 2012-7-18 16:41
行了,我放弃了,等大神来解决吧……  发表于 2012-7-18 16:31
效果就像口袋妖怪里的气合拳技能类似。  发表于 2012-7-18 16:08
你猜对了 = = 要不然随机数是干嘛的……简单讲是判定,1、3、5是必死 还有如果直接附加濒死状态也不能满足需求:如果中途受到攻击则技能打断。  发表于 2012-7-18 16:08
幻想中的鸡蛋 发表于 2012-7-18 13:11:28
本帖最后由 幻想中的鸡蛋 于 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
复制代码

点评

好吧我说简单点……可以无视随机数,就是在技能id为17时显示为空格,不是Miss 是伤害为0时,因为技能需要所以伤害值定为0不会出现逻辑问题。  发表于 2012-7-18 15:17
铅笔描绘的思念 发表于 2012-7-18 12:20:26
事件脚本中 Vocab::ActionFailure = "xx"  测试有效

点评

是临时改动,不是永久改  发表于 2012-7-18 15:22
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-24 09:13

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表