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

Project1

 找回密码
 注册会员
搜索
查看: 2984|回复: 7
打印 上一主题 下一主题

[已经解决] 这个护盾的脚本,请大家伙看看

[复制链接]

Lv2.观梦者

梦石
0
星屑
644
在线时间
830 小时
注册时间
2016-7-24
帖子
649

开拓者

1
发表于 2017-2-22 13:33:48 | 显示全部楼层
你之前解這一題的時候不是就會加實例變量了嗎~
https://rpg.blue/forum.php?mod=v ... peid%26typeid%3D479
2016/07/17 加入RPG製作,勿忘初衷!
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
644
在线时间
830 小时
注册时间
2016-7-24
帖子
649

开拓者

2
发表于 2017-2-22 14:31:38 | 显示全部楼层
    class Game_Actor

      attr_accessor :description
      def description
        @description || actor.description
      end

    end

可以依樣畫葫蘆阿
把說明改成護盾 (變數名)
文字改成數字而已 (變數值)

計算傷害的時候調用 傷害-self.護盾值方法           (此為理解用的偽代碼)

你想加判斷可以創一個方法  (理解用偽代碼)

def 護盾?
@護盾值 > 0
end
(類似你上面用全局變量$Magic_Shield做的事情)


總之就是你把$Hurt_Shield改成@Hurt_Shield就可以個別判斷了
2016/07/17 加入RPG製作,勿忘初衷!
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
644
在线时间
830 小时
注册时间
2016-7-24
帖子
649

开拓者

3
发表于 2017-2-27 07:44:16 | 显示全部楼层
本帖最后由 QQ蚊子湯 于 2017-2-27 07:45 编辑

連假早上有點空閒,寫個給你參考
我沒怎麼改你的結構,只改我想吐血的部分www

你可以感受一下實例變量和全局變量的不同之處

RUBY 代码复制
  1. class Game_Actor
  2.        attr_accessor  :game_Shield
  3.        attr_accessor  :magic_Shield
  4.        def add_state(state_id)
  5.       super
  6.      self.game_Shield =500  if state_id == 50
  7.     end
  8.       def apply_guard(value)
  9.         super
  10.         if state?(50) && value > 0   # 50 号状态
  11.           v = @game_Shield   
  12.           if v >= value      
  13.             @hurt_Shield = value
  14.             @magic_Shield = true
  15.             @game_Shield -= value.to_i
  16.             return 0
  17.           else
  18.             value -= v
  19.             @hurt_Shield = value
  20.             @magic_Shield = true
  21.             @game_Shield  = 0
  22.             self.remove_state(50)
  23.             value
  24.           end
  25.         else
  26.           @magic_Shield = false
  27.           value
  28.         end
  29.       end
  30.     end
  31.     class Game_ActionResult
  32.       #--------------------------------------------------------------------------
  33.       # ● 获取 HP 伤害的文字
  34.       #--------------------------------------------------------------------------
  35.       def hp_damage_text
  36.         if @hp_drain > 0
  37.           fmt = @battler.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
  38.           sprintf(fmt, @battler.name, Vocab::hp, @hp_drain)
  39.         elsif @hp_damage > 0
  40.           fmt = @battler.actor? ? Vocab::ActorDamage : Vocab::EnemyDamage
  41.           sprintf(fmt, @battler.name, @hp_damage)
  42.         elsif @hp_damage < 0
  43.           fmt = @battler.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
  44.           sprintf(fmt, @battler.name, Vocab::hp, -hp_damage)
  45.         elsif @battler.magic_Shield == true
  46.           fmt = "护盾抵消了%s点伤害,还剩下#{@battler.game_Shield}点护盾。"
  47.           @battler.magic_Shield = false
  48.           sprintf(fmt,@Hurt_Shield.to_i)
  49.         else
  50.           fmt = @battler.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage
  51.           sprintf(fmt, @battler.name)
  52.         end
  53.       end
  54.     end

点评

嗯,我弄下来先研究下  发表于 2017-2-27 16:17

评分

参与人数 1梦石 +1 收起 理由
RaidenInfinity + 1 版主认可的答案

查看全部评分

2016/07/17 加入RPG製作,勿忘初衷!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-22 10:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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