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

Project1

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

[原创发布] 偷懶必備-建立全局属性相剋關係表

 关闭 [复制链接]

Lv3.寻梦者

酱油的

梦石
0
星屑
970
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

跳转到指定楼层
1
发表于 2008-4-12 22:17:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 后知后觉 于 2009-12-29 16:31 编辑

因爲希望遊戲當中屬性之間有複雜的相剋關係
因此填寫敵人的屬性有效度的時候填到幾乎到崩潰
RM真是不够人性化……
於是就花費了少少時間寫了這個腳本

作用是産生一個統一的屬性相剋關係表,而非獨自每人的屬性有效度設置。

A:自身屬性如何設置
Q:任何有效度不為 "C" 的屬性都視爲自身屬性

A:屬性相剋關係表如何編寫
Q:
格式爲:data[攻擊方屬性ID] = {受害方屬性ID=>有效度, 受害方屬性ID=>有效度, 受害方屬性ID=>有效度.....}

當有效度 爲負數的時候 吸收 攻擊×有效度/100
         爲零的時候            攻擊無效
         爲正數的時候      攻擊×有效度/100
Xp用
  1. class Game_Battler
  2.   def data
  3.     data = {}
  4.     #------------------------------------------------------------------------
  5.     # ● 屬性相尅關係表
  6.     #------------------------------------------------------------------------
  7.     data[1]={2=>437}
  8.     return data
  9.   end

  10.   #--------------------------------------------------------------------------
  11.   # ● 属性修正计算
  12.   #     element_set : 属性
  13.   #--------------------------------------------------------------------------
  14.   def elements_correct(element_set)
  15.     if element_set.size > 0
  16.       result = 0
  17.       element_set.each{|i|result += self.elements(i)}
  18.       result = result/element_set.size
  19.     else
  20.       result = 100
  21.     end
  22.     return result
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 取得自身屬性
  26.   #--------------------------------------------------------------------------
  27.   def get_elements(ranks)
  28.     set = []
  29.     for i in 1...$data_system.elements.size
  30.       set << i unless ranks[i] == 3
  31.     end
  32.     return set
  33.   end
  34. #----------------------------------------------------------------------------
  35. # ● 取得属性修正值
  36. #----------------------------------------------------------------------------
  37.   def elements(attack_element_id, battler_elements, armors, states)
  38.     #-------------------
  39.     # ● 計算總效果
  40.     #-------------------
  41.     unless self.data[attack_element_id].nil?
  42.       for i in battler_elements
  43.         if self.data[attack_element_id][i].nil?
  44.           next
  45.         elsif self.data[attack_element_id][i].zero?
  46.           break
  47.           result = 0
  48.         elsif
  49.           result||= 0
  50.           result += self.data[attack_element_id][i]
  51.         end
  52.       end
  53.     end
  54.     #-------------------
  55.     # ● 修正結果
  56.     #-------------------
  57.     result||= 100
  58.     #--------------------------------------
  59.     # ● 防具能防御本属性的情况下效果减半
  60.     #--------------------------------------
  61.     for i in armors
  62.       armor = $data_armors[i]
  63.       if armor != nil and armor.guard_element_set.include?(attack_element_id)
  64.         result /= 2
  65.       end
  66.     end
  67.     #--------------------------------------
  68.     # ● 状态能防御本属性的情况下效果减半
  69.     #--------------------------------------
  70.     for i in states
  71.       result /= 2 if $data_states[i].guard_element_set.include?(attack_element_id)
  72.     end
  73.     #-------------------
  74.     # ● 返回結果
  75.     #-------------------
  76.     return result
  77.   end
  78. end
  79. class Game_Actor < Game_Battler
  80.   #--------------------------------------------------------------------------
  81.   # ● 取得自身所有属性
  82.   #--------------------------------------------------------------------------
  83.   def elements(attack_element_id)
  84.     actor = $data_actors[@actor_id]
  85.     if actor.elements.nil?
  86.       ranks = $data_classes[@class_id].element_ranks
  87.       actor.elements = get_elements(ranks)
  88.     end
  89.     battler_elements = actor.elements
  90.     armors = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  91.     states = @states
  92.     super(attack_element_id, battler_elements, armors, states)
  93.   end
  94. end
  95. class Game_Enemy < Game_Battler
  96.   #--------------------------------------------------------------------------
  97.   # ● 取得自身所有属性
  98.   #--------------------------------------------------------------------------
  99.   def elements(attack_element_id)
  100.     enemy = $data_enemies[@enemy_id]
  101.     if enemy.elements.nil?
  102.       ranks = $data_enemies[@enemy_id].element_ranks
  103.       enemy.elements = get_elements(ranks)
  104.     end
  105.     battler_elements = enemy.elements
  106.     armors = []
  107.     states = @states
  108.     super(attack_element_id, battler_elements, armors, states)
  109.   end
  110. end
  111. module RPG
  112.   class Enemy
  113.     attr_accessor :elements
  114.   end
  115.   class Actor
  116.     attr_accessor :elements
  117.   end
  118. end
复制代码
Vx用
  1. class Game_Battler
  2.   #--------------------------------------------------------------------------
  3.   # ● VX接入
  4.   #     element_set : 属性
  5.   #--------------------------------------------------------------------------
  6.   def elements_max_rate(element_set)
  7.     return elements_correct(element_set)
  8.   end
  9.   def data
  10.     data = {}
  11.     #------------------------------------------------------------------------
  12.     # ● 屬性相尅關係表
  13.     #------------------------------------------------------------------------
  14.     data[1]={2=>437}
  15.     return data
  16.   end
  17.   #--------------------------------------------------------------------------
  18.   # ● 属性修正计算
  19.   #     element_set : 属性
  20.   #--------------------------------------------------------------------------
  21.   def elements_correct(element_set)
  22.     if element_set.size > 0
  23.       result = 0
  24.       element_set.each{|i|result += self.elements(i)}
  25.       result = result/element_set.size
  26.     else
  27.       result = 100
  28.     end
  29.     return result
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● 取得自身屬性
  33.   #--------------------------------------------------------------------------
  34.   def get_elements(ranks)
  35.     set = []
  36.     for i in 1...$data_system.elements.size
  37.       set << i unless ranks[i] == 3
  38.     end
  39.     return set
  40.   end
  41. #----------------------------------------------------------------------------
  42. # ● 取得属性修正值
  43. #----------------------------------------------------------------------------
  44.   def elements(attack_element_id, battler_elements, armors, states)
  45.     #-------------------
  46.     # ● 計算總效果
  47.     #-------------------
  48.     unless self.data[attack_element_id].nil?
  49.       for i in battler_elements
  50.         if self.data[attack_element_id][i].nil?
  51.           next
  52.         elsif self.data[attack_element_id][i].zero?
  53.           break
  54.           result = 0
  55.         elsif
  56.           result||= 0
  57.           result += self.data[attack_element_id][i]
  58.         end
  59.       end
  60.     end
  61.     #-------------------
  62.     # ● 修正結果
  63.     #-------------------
  64.     result||= 100
  65.     #--------------------------------------
  66.     # ● 防具能防御本属性的情况下效果减半
  67.     #--------------------------------------
  68.     for i in armors
  69.       armor = $data_armors[i]
  70.       if armor != nil and armor.guard_element_set.include?(attack_element_id)
  71.         result /= 2
  72.       end
  73.     end
  74.     #--------------------------------------
  75.     # ● 状态能防御本属性的情况下效果减半
  76.     #--------------------------------------
  77.     for i in states
  78.       result /= 2 if $data_states[i].guard_element_set.include?(attack_element_id)
  79.     end
  80.     #-------------------
  81.     # ● 返回結果
  82.     #-------------------
  83.     return result
  84.   end
  85. end
  86. class Game_Actor < Game_Battler
  87.   #--------------------------------------------------------------------------
  88.   # ● 取得自身所有属性
  89.   #--------------------------------------------------------------------------
  90.   def elements(attack_element_id)
  91.     actor = $data_actors[@actor_id]
  92.     if actor.elements.nil?
  93.       ranks = $data_classes[@class_id].element_ranks
  94.       actor.elements = get_elements(ranks)
  95.     end
  96.     battler_elements = actor.elements
  97.     armors = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  98.     states = @states
  99.     super(attack_element_id, battler_elements, armors, states)
  100.   end
  101. end
  102. class Game_Enemy < Game_Battler
  103.   #--------------------------------------------------------------------------
  104.   # ● 取得自身所有属性
  105.   #--------------------------------------------------------------------------
  106.   def elements(attack_element_id)
  107.     enemy = $data_enemies[@enemy_id]
  108.     if enemy.elements.nil?
  109.       ranks = $data_enemies[@enemy_id].element_ranks
  110.       enemy.elements = get_elements(ranks)
  111.     end
  112.     battler_elements = enemy.elements
  113.     armors = []
  114.     states = @states
  115.     super(attack_element_id, battler_elements, armors, states)
  116.   end
  117. end
  118. module RPG
  119.   class Enemy
  120.     attr_accessor :elements
  121.   end
  122.   class Actor
  123.     attr_accessor :elements
  124.   end
  125. end
复制代码


十分廢柴的腳本,感覺上又在浪費數據庫的用途了==|||
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-4-6
帖子
28
2
发表于 2008-4-12 23:32:25 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-3-4
帖子
66
3
发表于 2008-4-15 07:38:16 | 只看该作者
属性这个数据的确是很头痛的东西,有时候自己都弄糊涂了……
支持!收藏,以后兴许用得上~辛苦LZ了~多谢分享~
爱生活~爱动漫~好好工作/学习~
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
610
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

4
发表于 2008-4-17 20:41:13 | 只看该作者
{/qiang}

不过有没有范例上传

顺便问一下:我能不能把它加进我的懒人脚本中?{/hx}

我的懒人脚本本来就想弄类似的东西
没想到禾西先弄出来了
还弄了VX版的
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
970
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

5
 楼主| 发表于 2008-4-17 21:16:46 | 只看该作者
這麽簡單的設置就不用範例了
只是把這個東西填滿而已:
    #------------------------------------------------------------------------
    # ● 屬性相尅關係表
    #------------------------------------------------------------------------
    data[1]={2=>437}



懶人腳本哦?禾西也一直打算寫耶-v-+
如果用得上就加吧。
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

雷欧纳德的宠物

梦石
0
星屑
50
在线时间
769 小时
注册时间
2006-8-6
帖子
3778

贵宾

6
发表于 2008-5-24 07:50:49 | 只看该作者
发布完毕。
http://rpg.blue/web/htm/news1063.htm
vip+3
打酱油的- -b
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-3-8
帖子
144
7
发表于 2008-6-14 03:22:06 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

為愛゛執著℡

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-12-15
帖子
657
8
发表于 2008-6-15 01:17:06 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-29 17:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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