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

Project1

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

[已经解决] 求解释RPG::UsableItem::Effect

[复制链接]

Lv1.梦旅人

梦石
0
星屑
75
在线时间
40 小时
注册时间
2012-7-3
帖子
98
跳转到指定楼层
1
发表于 2013-9-20 12:58:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 a774741359 于 2013-9-20 13:19 编辑

原型如下:
RUBY 代码复制
  1. class RPG::UsableItem::Effect
  2.   def initialize(code = 0, data_id = 0, value1 = 0, value2 = 0)
  3.     [url=home.php?mod=space&uid=10413]@code[/url] = code
  4.     @data_id = data_id
  5.     @value1 = value1
  6.     @value2 = value2
  7.   end
  8.   attr_accessor :code
  9.   attr_accessor :data_id
  10.   attr_accessor :value1
  11.   attr_accessor :value2
  12. end

日文解释如下:
RUBY 代码复制
  1. code
  2. 使用効果コード。
  3. data_id
  4. 使用効果の種類に応じたデータ (ステート、能力値など) の ID。
  5. value1
  6. 使用効果の種類に応じた設定値 1
  7. value2
  8. 使用効果の種類に応じた設定値 2

@晴兰  就你一个好友,就别介意了= v=
具体不明何意,比如,物品增加500HP,这个使用效果是怎么储存的。

经过大量测试,得出如下结论。
code
效果编号
恢复
11号 恢复体力值
12号 恢复魔力值
13号 增加特技值
状态
21号 附加状态
22号 解除状态
能力
31号 强化能力
32号 弱化能力
33号 解除能力强化
34号 解除能力弱化
其他                                                                                   
41号 特殊效果
42号 能力提升
43号 学会技能
44号 公共事件

data_id
比如 21号附加状态
data_id就储存着附加状态的状态id
但是其首位是普通攻击

value1 value2
两个附加数据
比如 11号恢复体力值
恢复50%体力,value1就=0.5       =>50%
恢复500点体力,value2就为500   =>500

评分

参与人数 1星屑 +30 收起 理由
晴兰 + 30 塞糖

查看全部评分

Lv1.梦旅人

梦石
0
星屑
50
在线时间
79 小时
注册时间
2007-6-23
帖子
154
2
发表于 2013-9-20 13:13:20 | 只看该作者
本帖最后由 fangyc 于 2013-9-20 13:19 编辑

这个是数据结构,在数据库中设定一个道具后,此道具的使用效果就用一个 RPG::UsableItem::Effect 的实例来储存

比如,物品增加500HP,那么他的效果应该以code的某个值保存,恢复量则保存在value1(固定值)或value2(百分比)里

code的值对应什么效果是工具里预先定义好的,它只是一个抽象的值,具体效果会在内置的脚本里体现出来
这个只能自己去内置脚本里找了

Game_Battler里有下面一段内容,意思就是如果code的值等于EFFECT_RECOVER_HP,那么就调用item_effect_recover_hp方法恢复HP,这样……
不知道楼主明白了没有…………
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 应用使用效果
  3.   #--------------------------------------------------------------------------
  4.   def item_effect_apply(user, item, effect)
  5.     method_table = {
  6.       EFFECT_RECOVER_HP    => :item_effect_recover_hp,
  7.       EFFECT_RECOVER_MP    => :item_effect_recover_mp,
  8.       EFFECT_GAIN_TP       => :item_effect_gain_tp,
  9.       EFFECT_ADD_STATE     => :item_effect_add_state,
  10.       EFFECT_REMOVE_STATE  => :item_effect_remove_state,
  11.       EFFECT_ADD_BUFF      => :item_effect_add_buff,
  12.       EFFECT_ADD_DEBUFF    => :item_effect_add_debuff,
  13.       EFFECT_REMOVE_BUFF   => :item_effect_remove_buff,
  14.       EFFECT_REMOVE_DEBUFF => :item_effect_remove_debuff,
  15.       EFFECT_SPECIAL       => :item_effect_special,
  16.       EFFECT_GROW          => :item_effect_grow,
  17.       EFFECT_LEARN_SKILL   => :item_effect_learn_skill,
  18.       EFFECT_COMMON_EVENT  => :item_effect_common_event,
  19.     }
  20.     method_name = method_table[effect.code]
  21.     send(method_name, user, item, effect) if method_name
  22.   end

评分

参与人数 1梦石 +1 收起 理由
熊喵酱 + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
75
在线时间
40 小时
注册时间
2012-7-3
帖子
98
3
 楼主| 发表于 2013-9-20 13:21:13 | 只看该作者
本帖最后由 a774741359 于 2013-9-20 13:24 编辑
fangyc 发表于 2013-9-20 13:13
这个是数据结构,在数据库中设定一个道具后,此道具的使用效果就用一个 RPG::UsableItem::Effect 的实例来 ...


感谢回复
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 常量(使用效果)
  3.   #--------------------------------------------------------------------------
  4.   EFFECT_RECOVER_HP     = 11              # 恢复 HP
  5.   EFFECT_RECOVER_MP     = 12              # 恢复 MP
  6.   EFFECT_GAIN_TP        = 13              # 增加 TP
  7.   EFFECT_ADD_STATE      = 21              # 附加状态
  8.   EFFECT_REMOVE_STATE   = 22              # 解除状态
  9.   EFFECT_ADD_BUFF       = 31              # 强化能力
  10.   EFFECT_ADD_DEBUFF     = 32              # 弱化能力
  11.   EFFECT_REMOVE_BUFF    = 33              # 解除能力强化
  12.   EFFECT_REMOVE_DEBUFF  = 34              # 解除能力弱化
  13.   EFFECT_SPECIAL        = 41              # 特殊效果
  14.   EFFECT_GROW           = 42              # 能力提升
  15.   EFFECT_LEARN_SKILL    = 43              # 学会技能
  16.   EFFECT_COMMON_EVENT   = 44              # 公共事件

点评

恩恩……碰巧我也贴了……  发表于 2013-9-20 13:27
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
79 小时
注册时间
2007-6-23
帖子
154
4
发表于 2013-9-20 13:26:53 | 只看该作者
额,实际上内置脚本里已经有一部分的效果定义了……
不过这点我觉得确实不太友好,如果在帮助文档里有更详细的说明,用起来会更方便
RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Game_Battler
  4. #------------------------------------------------------------------------------
  5. #  处理战斗者的类。Game_Actor 和 Game_Enemy 类的父类。
  6. #==============================================================================
  7.  
  8. class Game_Battler < Game_BattlerBase
  9.   #--------------------------------------------------------------------------
  10.   # ● 常量(使用效果)
  11.   #--------------------------------------------------------------------------
  12.   EFFECT_RECOVER_HP     = 11              # 恢复 HP
  13.   EFFECT_RECOVER_MP     = 12              # 恢复 MP
  14.   EFFECT_GAIN_TP        = 13              # 增加 TP
  15.   EFFECT_ADD_STATE      = 21              # 附加状态
  16.   EFFECT_REMOVE_STATE   = 22              # 解除状态
  17.   EFFECT_ADD_BUFF       = 31              # 强化能力
  18.   EFFECT_ADD_DEBUFF     = 32              # 弱化能力
  19.   EFFECT_REMOVE_BUFF    = 33              # 解除能力强化
  20.   EFFECT_REMOVE_DEBUFF  = 34              # 解除能力弱化
  21.   EFFECT_SPECIAL        = 41              # 特殊效果
  22.   EFFECT_GROW           = 42              # 能力提升
  23.   EFFECT_LEARN_SKILL    = 43              # 学会技能
  24.   EFFECT_COMMON_EVENT   = 44              # 公共事件
  25.   #--------------------------------------------------------------------------
  26.   # ● 常量(特殊效果)
  27.   #--------------------------------------------------------------------------
  28.   SPECIAL_EFFECT_ESCAPE = 0               # 撤退
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-5 10:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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