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

Project1

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

属性修正值的计算方法改动

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
95
在线时间
49 小时
注册时间
2006-5-7
帖子
526
跳转到指定楼层
1
发表于 2006-8-11 16:13:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
RMXP的默认属性修正值计算方法是依次检查所有防具和状态,只要拥有该属性防御那么该属性有效度就减半,这样的计算方法局限性很大,比如本来是正值的属性有效度无论如何也不会变成负值(属性吸收),本来是吸收100%火属性(有效度为-100%)的人再装备上火属性抵抗的装备吸收效果反而会下降,因此,我做了一些改动,自己用的,也发上来给大家看看......

属性修正的计算在Game_Actor107行和Game_Enemy118行处,因此我在这里动了手脚.
Game_Actor里的内容为
  1. #--------------------------------------------------------------------------
  2. # ● 取得属性修正值
  3. #     element_id : 属性 ID
  4. #--------------------------------------------------------------------------
  5. def element_rate(element_id)
  6.    # 获取对应属性有效度的数值
  7.    table = [0,200,150,100,50,0,-100]
  8.    result = table[$data_classes[@class_id].element_ranks[element_id]]
  9.    # 防具能防御本属性的情况下效果减半
  10.    for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  11.      armor = $data_armors[i]
  12.      if armor != nil and armor.guard_element_set.include?(element_id)
  13.        result /= 2
  14.      end
  15.    end
  16.    # 状态能防御本属性的情况下效果减半
  17.    for i in @states
  18.      if $data_states[i].guard_element_set.include?(element_id)
  19.        result /= 2
  20.      end
  21.    end
  22.    # 过程结束
  23.    return result
  24. end
复制代码

我把它改成
  1. #--------------------------------------------------------------------------
  2.   # ● 取得属性修正值
  3.   #     element_id : 属性 ID
  4.   #--------------------------------------------------------------------------
  5.   def element_rate(element_id)
  6.     # 获取对应属性有效度的数值
  7.     table = [0,200,150,100,50,0,-100]
  8.     result = table[$data_classes[@class_id].element_ranks[element_id]]
  9.     # 防具能防御本属性的情况下
  10.     for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  11.       beishu=1
  12.       armor = $data_armors[i]
  13.       if armor != nil and armor.guard_element_set.include?(37)
  14.         beishu=2
  15.       elsif armor != nil and armor.guard_element_set.include?(38)
  16.         beishu=3
  17.       elsif armor != nil and armor.guard_element_set.include?(39)
  18.         beishu=4
  19.       end
  20.       if armor != nil and armor.guard_element_set.include?(40)
  21.         beishu *= -1
  22.       end
  23.       armor = $data_armors[i]
  24.       if armor != nil and armor.guard_element_set.include?(element_id)
  25.         result -= 35*beishu
  26.         if result > 200 then result=200
  27.         elsif result <-100 then result =-100
  28.         end
  29.       end
  30.     end
  31.     # 状态能防御本属性的情况下
  32.     for i in @states
  33.       beishu=1
  34.       if $data_states[i].guard_element_set.include?(37)
  35.         beishu= 2
  36.       elsif $data_states[i].guard_element_set.include?(38)
  37.         beishu= 3
  38.       elsif $data_states[i].guard_element_set.include?(39)
  39.         beishu= 4
  40.       end
  41.       if $data_states[i].guard_element_set.include?(40)
  42.         beishu *= -1
  43.       end
  44.       if $data_states[i].guard_element_set.include?(element_id)
  45.         result -= 35*beishu
  46.         if result > 200 then result=200
  47.         elsif result <-100 then result =-100
  48.         end
  49.       end
  50.     end
  51.     # 过程结束
  52.     return result
  53.   end
复制代码

这样修改的效果是,每个拥有属性防御的装备或者状态会使其防御的属性的属性有效度下降35%,另外如果它的属性防御里包括37号属性,那么效果加倍,如果包括38号,效果3倍,如果包括39号,效果4倍,如果包括40号,效果变成属性有效度增加.
另外,某人物的属性有效度上限为200%,下限为-100%,以防出现不可预期的错误......

例如:
抗炎戒指的属性防御中包括001(炎)和037,那么其装备效果为对该人物火属性有效度下降70%(35%×2)
全金属盔甲的属性防御中包括003(雷)和040,那么其装备效果为对该人物雷属性有效度上升35%(-35%)
状态"神之护盾"的属性防御中包括001~008(所有属性)和039,那么其装备效果为对该人物所有属性有效度下降140%(35%×4)
状态"光暗脆弱"的属性防御中包括007(光)、008(暗)、038、040,那么其装备效果为对该人物光和暗属性有效度上升105(-35%×3)

某人物初始所有属性有效度为100%(C),装备全金属盔甲(雷有效+35%)、抗炎戒指(火有效-70%),拥有状态神之护盾(全有效下降140%)、光暗脆弱(光暗有效+105%)。则其最终属性有效度为光、暗65%,雷-5%,火-100%(低于-100%,自动修正),其余属性都是-40%。




              [本贴由 雷欧纳德 于 2006-11-20 18:55:35 进行了编辑]

Lv1.梦旅人

梦石
0
星屑
95
在线时间
49 小时
注册时间
2006-5-7
帖子
526
2
 楼主| 发表于 2006-8-11 16:13:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
RMXP的默认属性修正值计算方法是依次检查所有防具和状态,只要拥有该属性防御那么该属性有效度就减半,这样的计算方法局限性很大,比如本来是正值的属性有效度无论如何也不会变成负值(属性吸收),本来是吸收100%火属性(有效度为-100%)的人再装备上火属性抵抗的装备吸收效果反而会下降,因此,我做了一些改动,自己用的,也发上来给大家看看......

属性修正的计算在Game_Actor107行和Game_Enemy118行处,因此我在这里动了手脚.
Game_Actor里的内容为
  1. #--------------------------------------------------------------------------
  2. # ● 取得属性修正值
  3. #     element_id : 属性 ID
  4. #--------------------------------------------------------------------------
  5. def element_rate(element_id)
  6.    # 获取对应属性有效度的数值
  7.    table = [0,200,150,100,50,0,-100]
  8.    result = table[$data_classes[@class_id].element_ranks[element_id]]
  9.    # 防具能防御本属性的情况下效果减半
  10.    for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  11.      armor = $data_armors[i]
  12.      if armor != nil and armor.guard_element_set.include?(element_id)
  13.        result /= 2
  14.      end
  15.    end
  16.    # 状态能防御本属性的情况下效果减半
  17.    for i in @states
  18.      if $data_states[i].guard_element_set.include?(element_id)
  19.        result /= 2
  20.      end
  21.    end
  22.    # 过程结束
  23.    return result
  24. end
复制代码

我把它改成
  1. #--------------------------------------------------------------------------
  2.   # ● 取得属性修正值
  3.   #     element_id : 属性 ID
  4.   #--------------------------------------------------------------------------
  5.   def element_rate(element_id)
  6.     # 获取对应属性有效度的数值
  7.     table = [0,200,150,100,50,0,-100]
  8.     result = table[$data_classes[@class_id].element_ranks[element_id]]
  9.     # 防具能防御本属性的情况下
  10.     for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  11.       beishu=1
  12.       armor = $data_armors[i]
  13.       if armor != nil and armor.guard_element_set.include?(37)
  14.         beishu=2
  15.       elsif armor != nil and armor.guard_element_set.include?(38)
  16.         beishu=3
  17.       elsif armor != nil and armor.guard_element_set.include?(39)
  18.         beishu=4
  19.       end
  20.       if armor != nil and armor.guard_element_set.include?(40)
  21.         beishu *= -1
  22.       end
  23.       armor = $data_armors[i]
  24.       if armor != nil and armor.guard_element_set.include?(element_id)
  25.         result -= 35*beishu
  26.         if result > 200 then result=200
  27.         elsif result <-100 then result =-100
  28.         end
  29.       end
  30.     end
  31.     # 状态能防御本属性的情况下
  32.     for i in @states
  33.       beishu=1
  34.       if $data_states[i].guard_element_set.include?(37)
  35.         beishu= 2
  36.       elsif $data_states[i].guard_element_set.include?(38)
  37.         beishu= 3
  38.       elsif $data_states[i].guard_element_set.include?(39)
  39.         beishu= 4
  40.       end
  41.       if $data_states[i].guard_element_set.include?(40)
  42.         beishu *= -1
  43.       end
  44.       if $data_states[i].guard_element_set.include?(element_id)
  45.         result -= 35*beishu
  46.         if result > 200 then result=200
  47.         elsif result <-100 then result =-100
  48.         end
  49.       end
  50.     end
  51.     # 过程结束
  52.     return result
  53.   end
复制代码

这样修改的效果是,每个拥有属性防御的装备或者状态会使其防御的属性的属性有效度下降35%,另外如果它的属性防御里包括37号属性,那么效果加倍,如果包括38号,效果3倍,如果包括39号,效果4倍,如果包括40号,效果变成属性有效度增加.
另外,某人物的属性有效度上限为200%,下限为-100%,以防出现不可预期的错误......

例如:
抗炎戒指的属性防御中包括001(炎)和037,那么其装备效果为对该人物火属性有效度下降70%(35%×2)
全金属盔甲的属性防御中包括003(雷)和040,那么其装备效果为对该人物雷属性有效度上升35%(-35%)
状态"神之护盾"的属性防御中包括001~008(所有属性)和039,那么其装备效果为对该人物所有属性有效度下降140%(35%×4)
状态"光暗脆弱"的属性防御中包括007(光)、008(暗)、038、040,那么其装备效果为对该人物光和暗属性有效度上升105(-35%×3)

某人物初始所有属性有效度为100%(C),装备全金属盔甲(雷有效+35%)、抗炎戒指(火有效-70%),拥有状态神之护盾(全有效下降140%)、光暗脆弱(光暗有效+105%)。则其最终属性有效度为光、暗65%,雷-5%,火-100%(低于-100%,自动修正),其余属性都是-40%。




              [本贴由 雷欧纳德 于 2006-11-20 18:55:35 进行了编辑]

Lv1.梦旅人

梦石
0
星屑
95
在线时间
49 小时
注册时间
2006-5-7
帖子
526
3
 楼主| 发表于 2006-8-11 16:15:26 | 只看该作者
差点忘了,还有敌人部分......
Game_Enemy中118行起
  1. #--------------------------------------------------------------------------
  2. # ● 获取属性修正值
  3. #     element_id : 属性 ID
  4. #--------------------------------------------------------------------------
  5. def element_rate(element_id)
  6.    # 获取对应属性有效度的数值
  7.    table = [0,200,150,100,50,0,-100]
  8.    result = table[$data_enemies[@enemy_id].element_ranks[element_id]]
  9.    # 状态能防御本属性的情况下效果减半
  10.    for i in @states
  11.      if $data_states[i].guard_element_set.include?(element_id)
  12.        result /= 2
  13.      end
  14.    end
  15.    # 过程结束
  16.    return result
  17. end
复制代码

改为
  1. #--------------------------------------------------------------------------
  2.   # ● 获取属性修正值
  3.   #     element_id : 属性 ID
  4.   #--------------------------------------------------------------------------
  5.   def element_rate(element_id)
  6.     # 获取对应属性有效度的数值
  7.     table = [0,200,150,100,50,0,-100]
  8.     result = table[$data_enemies[@enemy_id].element_ranks[element_id]]
  9.     # 状态能防御本属性的情况下效果减半
  10.     for i in @states
  11.       beishu=1
  12.       if $data_states[i].guard_element_set.include?(37)
  13.         beishu= 2
  14.       elsif $data_states[i].guard_element_set.include?(38)
  15.         beishu= 3
  16.       elsif $data_states[i].guard_element_set.include?(39)
  17.         beishu= 4
  18.       end
  19.       if $data_states[i].guard_element_set.include?(40)
  20.         beishu *= -1
  21.       end
  22.       if $data_states[i].guard_element_set.include?(element_id)
  23.         result -= 35*beishu
  24.         if result > 200 then result=200
  25.         elsif result <-100 then result =-100
  26.         end
  27.       end
  28.     end
  29.     # 过程结束
  30.     return result
  31.   end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

匿·蹤

梦石
0
星屑
65
在线时间
99 小时
注册时间
2006-3-19
帖子
456
4
发表于 2006-8-11 20:16:13 | 只看该作者
嗯!不错不错!!!

这个想法很棒!!!!
卐忍 → 解忍 → 元忍 → 隐忍 → 卍忍 → 匿踪(最终)
完全退步到了卐忍阶段
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
95
在线时间
49 小时
注册时间
2006-5-7
帖子
526
5
 楼主| 发表于 2006-8-12 04:01:48 | 只看该作者
问题是这个脚本还是只能实现8个属性变动,不够自由......
而且无法设定单一装备或者状态对多个属性有不同的影响效果(比如火+70%,水-35%......)
想不到这些问题的简单解决方法,盼望高手指导..............
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-8-3
帖子
48
6
发表于 2006-8-12 16:54:26 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
95
在线时间
49 小时
注册时间
2006-5-7
帖子
526
7
 楼主| 发表于 2006-8-12 17:01:35 | 只看该作者
只能如此了..............比如状态"潮湿@火-100@水+100"之类的,可是我不会这方面的代码......
回复 支持 反对

使用道具 举报

Lv1.梦旅人

66RPG站长

梦石
0
星屑
54
在线时间
615 小时
注册时间
2005-10-10
帖子
5734

RMVX自由创作大赛亚军第2届短篇游戏比赛亚军第5届短篇游戏比赛冠军

8
发表于 2006-11-11 12:26:32 | 只看该作者
提前一下……等待发布……
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-3-1
帖子
29
9
发表于 2007-3-2 17:58:39 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-2-4
帖子
13
10
发表于 2007-3-2 18:10:46 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 02:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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