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

Project1

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

[已经解决] 如何裝備飾品後暫時提升HP/MP上限?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
448 小时
注册时间
2011-10-9
帖子
184
跳转到指定楼层
1
发表于 2015-11-21 12:58:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
如何裝備飾品後暫時提升HP/MP上限?
例如裝備蝴蝶結,HP上限+300,卸下後-300

先前板上試過的版本有BUG
導致卸下後上限不會復原

同理,提升命中率或閃避率的方法有無可能達成呢?
謝謝

Lv4.逐梦者 (版主)

聪仔

梦石
0
星屑
6187
在线时间
3077 小时
注册时间
2013-12-26
帖子
3145
2
发表于 2015-11-21 19:47:43 | 只看该作者
重定义maxhp就可以了咿咿...

评分

参与人数 1星屑 +20 收起 理由
冷徹心扉 + 20 塞糖

查看全部评分

聪聪全国第三帅...
他们都叫我【人赢聪】
我的RM能力雷达图:

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
898
在线时间
421 小时
注册时间
2015-7-5
帖子
131
3
发表于 2015-11-21 22:13:55 | 只看该作者
  1. module RPG
  2.    class Weapon < BaseItem
  3.      def maxhp
  4.      end
  5.      def maxmp
  6.      end
  7.   end
  8.    class Armor < BaseItem
  9.       def maxhp
  10.       end
  11.       def maxmp
  12.       end
  13.   end
  14. end
复制代码
通过以上方法给武器和防具增加两个属性,当然具体怎么实现,方法不一。例如备注栏,名称栏,描述栏都可以。
然后
  1. class Game_Actor < Game_battler
  2.    def base_maxhp
  3.    end
  4.    def base_maxmp
  5.    end
  6. end
复制代码
以上可以仿照攻击属性(base_atk)来写。

点评

只要裝飾品(第五項裝備) 就可以了  发表于 2015-11-22 00:10
只是初學者,謝謝  发表于 2015-11-22 00:09
不是很了解該如何套用,例如備註欄該如何寫,及如何對應腳本等  发表于 2015-11-22 00:08

评分

参与人数 1星屑 +160 收起 理由
正太君 + 160 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
898
在线时间
421 小时
注册时间
2015-7-5
帖子
131
4
发表于 2015-11-22 03:34:24 | 只看该作者
本帖最后由 梦无笙 于 2015-11-22 03:38 编辑

脚本一(此段脚本很有用,很多地方都能用到,所以请好好领悟)
  1. #==============================================================================
  2. # ■ [VX] 读取rmvx备注栏
  3. #    [VX] ReadNote
  4. #----------------------------------------------------------------------------
  5. # 使用说明:
  6. # 【例】在vx数据库比如1号物品的备注栏里写: 耐久度 = 10
  7. #       读取时使用: p $data_items[1].read_note('耐久度')
  8. # 几点注意:
  9. #       ① 支持汉字,英文忽略大小写
  10. #       ② 等号右边遵循ruby语法格式,例如:
  11. #              test1 = 1              #=> 1
  12. #              test2 = "a"            #=> "a"
  13. #              test3 = true           #=> true
  14. #              test4 = [1,2,3]        #=> [1,2,3]
  15. #              test5 = {"orz"=>1}     #=> {"orz"=>1}
  16. #       ③ 等号忽略空格,以下均正确:
  17. #              test = nil; test= nil; test =nil; test=nil
  18. #----------------------------------------------------------------------------
  19. #    更新作者: 沉影不器
  20. #    许可协议: FSL
  21. #    项目版本: 2.02.1001
  22. #    引用网址: http://rpg.blue/thread-99474-1-1.html
  23. #----------------------------------------------------------------------------
  24. #    - *2.02.1001* (2010-10-01) By 沉影不器
  25. #      *修复引用方法带Binding的错误
  26. #
  27. #    - *2.01.0806* (2010-08-06) By 沉影不器
  28. #      *完全用eval执行文本,进一步简化代码
  29. #
  30. #    - *2.00.0729* (2010-07-29) By 沉影不器
  31. #      *改用eval执行赋值内容,支持浮点.数组.哈希等
  32. #      *强制忽略大小写
  33. #      *简化脚本
  34. #
  35. #    - *1.11.0824* (2008-08-24) By 沉影不器
  36. #      *修正rmvx英文帮助带来的类名错误
  37. #
  38. #    - *1.10.0821* (2008-08-21) By 沉影不器
  39. #      *扩展到支持rmvx数据库内所有带备注栏的选项
  40. #      *改了一下算法,使备注栏的注释也同ruby语法一样忽略空格
  41. #
  42. #    - *1.02.0819* (2008-08-19) By 沉影不器
  43. #      *直接成为RPG::BaseItem内一个函数,简化使用方法
  44. #
  45. #    - *1.00.0818* (2008-08-18) By 沉影不器
  46. #      *初版
  47. #==============================================================================
  48. $fscript = {} if $fscript == nil
  49. $fscript["ReadNote"] = "2.02.1001"
  50. #==============================================================================
  51. # ■ RPG
  52. #==============================================================================
  53. module RPG
  54.   #=============================================================================
  55.   # □ ReadNote
  56.   #=============================================================================
  57.   module ReadNote
  58.     def self.read(str, section, mismatch = nil)
  59.       str.each_line do |line|
  60.         ## 不希望忽略大小写,则删掉下一行最后一个i
  61.         eval("#{line}; return #{section}") if line =~ /^\s*#{section}\s*=/i
  62.       end
  63.       return mismatch
  64.     end
  65.   end
  66.   #=============================================================================
  67.   # ■ BaseItem
  68.   #=============================================================================
  69.   class BaseItem
  70.     #-------------------------------------------------------------------------
  71.     # ○ 读取rmvx备注栏指定字段
  72.     #     section  : 字段名
  73.     #     mismatch : 未匹配时的返回值
  74.     #-------------------------------------------------------------------------
  75.     def read_note(section, mismatch = nil)
  76.       ReadNote.read(self.note, section, mismatch)
  77.     end
  78.   end
  79.   #=============================================================================
  80.   # ■ Enemy
  81.   #=============================================================================
  82.   class Enemy
  83.     def read_note(section, mismatch = nil)
  84.       ReadNote.read(self.note, section, mismatch)
  85.     end
  86.   end
  87.   #=============================================================================
  88.   # ■ State
  89.   #=============================================================================
  90.   class State
  91.     def read_note(section, mismatch = nil)
  92.       ReadNote.read(self.note, section, mismatch)
  93.     end
  94.   end
  95. end
复制代码
脚本二:
  1. class RPG::Armor < RPG::BaseItem
  2.   def maxhp
  3.     return self.read_note('生命') == nil ? 0 : self.read_note('生命')
  4.   end
  5.   def maxmp
  6.     return self.read_note('魔力') == nil ? 0 : self.read_note('魔力')
  7.   end
  8. end

  9. class RPG::Weapon < RPG::BaseItem
  10.   def maxhp
  11.     return self.read_note('生命') == nil ? 0 : self.read_note('生命')
  12.   end
  13.   def maxmp
  14.     return self.read_note('魔力') == nil ? 0 : self.read_note('魔力')
  15.   end
  16. end

  17. class Game_Actor < Game_Battler
  18.   alias old_maxhp base_maxhp
  19.   def base_maxhp
  20.     n = 0
  21.     for item in equips.compact do
  22.       n += item.maxhp
  23.     end
  24.     return old_maxhp + n
  25.   end
  26.   alias old_maxmp base_maxmp
  27.   def base_maxmp
  28.     n = 0
  29.     for item in equips.compact do
  30.       n += item.maxmp
  31.     end
  32.     return old_maxmp + n
  33.   end
  34.   alias old_change_equip change_equip
  35.   def change_equip(equip_type, item, test = false)
  36.     old_change_equip(equip_type,item, test)
  37.     self.hp = self.maxhp if self.hp > self.maxhp
  38.     self.mp = self.maxmp if self.mp > self.maxmp
  39.   end
  40. end
复制代码
使用方法:在备注栏写上 生命/魔力 = XXX

点评

在你改之前应该要理解语句的意思啊。单纯改+为*肯定是不行的。  发表于 2015-11-23 21:47
感謝你的解答,不過我嘗試了一下午把+改成*的各種方法,但裝備上並沒有效果,謝謝  发表于 2015-11-23 18:39
模板就在这儿,把+改成*是很简单的事情。  发表于 2015-11-23 13:40
已經沒問題了,想再請教一下,生命/魔力的部分若要改成百分比計算的話呢?  发表于 2015-11-23 13:15
至于你说的命中和闪避,依葫芦画瓢就成。如果这样都写不出来,我就拉黑你。  发表于 2015-11-22 03:38

评分

参与人数 3星屑 +152 梦石 +1 收起 理由
怪蜀黍 + 100 + 1 认可答案
冷徹心扉 + 20 感謝解答
正太君 + 32 许东要是看见了又该说你命名无创意了咿咿...

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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