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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: zhaoxun96
打印 上一主题 下一主题

[已经解决] 关于变量护盾,求脚本大神帮助

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
115 小时
注册时间
2012-11-15
帖子
119
11
 楼主| 发表于 2014-7-23 20:15:49 | 只看该作者
taroxd 发表于 2014-7-23 19:31
class Game_Actor

  alias apply_guard_without_state apply_guard

感谢!就是怎么让变量值去掉小数部分?

点评

v[30] -= value.to_i  发表于 2014-7-23 20:27
我试过在脚本的end前加 v[30] = v[30].to_i 但是不行,要报错... 脚本定义过v = $game_variables  发表于 2014-7-23 20:25
.to_i  发表于 2014-7-23 20:21
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
9997
在线时间
5019 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

12
发表于 2014-7-24 02:16:03 | 只看该作者
zhaoxun96 发表于 2014-7-23 20:15
感谢!就是怎么让变量值去掉小数部分?

喵,我又想到点东西,现在这样没提示是不是感觉不科学?于是随便写了一下,我感觉没啥问题,你最好自己再看看有没别的问题,(死
  1. class Game_Battler

  2.   alias apply_guard_without_state apply_guard
  3.   def apply_guard(value)
  4.     value = apply_guard_without_state(value)
  5.     var_id = @actor_id #+ 30      # @actor_id + 30 号变量
  6.     if state?(27) && value > 0   # 50 号状态
  7.       v = $game_variables      
  8.       if v[var_id] >= value
  9.         $Hurt_Shield = value
  10.         $Magic_Shield = "have"
  11.         v[var_id] -= value.to_i
  12.         0
  13.       else
  14.         value -= v[var_id]
  15.         $Hurt_Shield = value
  16.         $Magic_Shield = "have"
  17.         v[var_id] = 0
  18.         remove_state(27)
  19.         value
  20.       end
  21.     else
  22.       $Magic_Shield = ""
  23.       value
  24.     end
  25.   end
  26. end
  27. class Game_ActionResult
  28.   #--------------------------------------------------------------------------
  29.   # ● 获取 HP 伤害的文字
  30.   #--------------------------------------------------------------------------
  31.   def hp_damage_text
  32.     if @hp_drain > 0
  33.       fmt = @battler.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
  34.       sprintf(fmt, @battler.name, Vocab::hp, @hp_drain)
  35.     elsif @hp_damage > 0
  36.       fmt = @battler.actor? ? Vocab::ActorDamage : Vocab::EnemyDamage
  37.       sprintf(fmt, @battler.name, @hp_damage)
  38.     elsif @hp_damage < 0
  39.       fmt = @battler.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
  40.       sprintf(fmt, @battler.name, Vocab::hp, -hp_damage)
  41.     elsif $Magic_Shield == "have"
  42.       fmt = "魔法之盾抵消了%s点伤害"
  43.       sprintf(fmt,$Hurt_Shield.to_i)
  44.     else
  45.       fmt = @battler.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage
  46.       sprintf(fmt, @battler.name)
  47.     end
  48.   end
  49. end
复制代码
未详细测试,出大问题请放弃或者再修改。

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 酷爱互糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
115 小时
注册时间
2012-11-15
帖子
119
13
 楼主| 发表于 2014-7-26 14:06:24 | 只看该作者
VIPArcher 发表于 2014-7-24 02:16
喵,我又想到点东西,现在这样没提示是不是感觉不科学?于是随便写了一下,我感觉没啥问题,你最好自己再 ...
  1. class Game_Actor

  2.   alias apply_guard_without_state apply_guard
  3.   def apply_guard(value)
  4.     value = apply_guard_without_state(value)
  5.     if state?(50) && value > 0   # 50 号状态
  6.       v = $game_variables      
  7.       if v[30] >= value       # 30 号变量
  8.         $Hurt_Shield = value
  9.         $Magic_Shield = "have"
  10.         v[30] -= value
  11.         0
  12.       else
  13.         value -= v[30]
  14.         $Hurt_Shield = value
  15.         $Magic_Shield = "have"
  16.         v[30] = 0
  17.         $game_party.members.each {|actor| actor.remove_state(50) }
  18.         value
  19.       end
  20.     else
  21.       $Magic_Shield = ""
  22.       value
  23.     end
  24.   end
  25. end
  26. class Game_ActionResult
  27.   #--------------------------------------------------------------------------
  28.   # ● 获取 HP 伤害的文字
  29.   #--------------------------------------------------------------------------
  30.   def hp_damage_text
  31.     if @hp_drain > 0
  32.       fmt = @battler.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
  33.       sprintf(fmt, @battler.name, Vocab::hp, @hp_drain)
  34.     elsif @hp_damage > 0
  35.       fmt = @battler.actor? ? Vocab::ActorDamage : Vocab::EnemyDamage
  36.       sprintf(fmt, @battler.name, @hp_damage)
  37.     elsif @hp_damage < 0
  38.       fmt = @battler.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
  39.       sprintf(fmt, @battler.name, Vocab::hp, -hp_damage)
  40.     elsif $Magic_Shield == "have"
  41.       fmt = "魔法之盾抵消了%s点伤害"
  42.       sprintf(fmt,$Hurt_Shield.to_i)
  43.     else
  44.       fmt = @battler.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage
  45.       sprintf(fmt, @battler.name)
  46.     end
  47.   end
  48. end
复制代码
感谢!将9L和11L的脚本融合过后完全没问题了并且完美解决了我的问题,此贴可以改为“已经解决”了....
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
89
在线时间
900 小时
注册时间
2012-11-13
帖子
893
14
发表于 2014-7-31 15:50:39 | 只看该作者
废弃
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-6-16 03:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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