赞 | 0 |
VIP | 10 |
好人卡 | 49 |
积分 | 10 |
经验 | 22958 |
最后登录 | 2020-8-1 |
在线时间 | 2161 小时 |
Lv3.寻梦者 酱油的
- 梦石
- 0
- 星屑
- 970
- 在线时间
- 2161 小时
- 注册时间
- 2007-12-22
- 帖子
- 3271
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 后知后觉 于 2009-12-29 16:31 编辑
因爲希望遊戲當中屬性之間有複雜的相剋關係
因此填寫敵人的屬性有效度的時候填到幾乎到崩潰
RM真是不够人性化……
於是就花費了少少時間寫了這個腳本
作用是産生一個統一的屬性相剋關係表,而非獨自每人的屬性有效度設置。
A:自身屬性如何設置
Q:任何有效度不為 "C" 的屬性都視爲自身屬性
A:屬性相剋關係表如何編寫
Q:
格式爲:data[攻擊方屬性ID] = {受害方屬性ID=>有效度, 受害方屬性ID=>有效度, 受害方屬性ID=>有效度.....}
當有效度 爲負數的時候 吸收 攻擊×有效度/100
爲零的時候 攻擊無效
爲正數的時候 攻擊×有效度/100
Xp用- class Game_Battler
- def data
- data = {}
- #------------------------------------------------------------------------
- # ● 屬性相尅關係表
- #------------------------------------------------------------------------
- data[1]={2=>437}
- return data
- end
- #--------------------------------------------------------------------------
- # ● 属性修正计算
- # element_set : 属性
- #--------------------------------------------------------------------------
- def elements_correct(element_set)
- if element_set.size > 0
- result = 0
- element_set.each{|i|result += self.elements(i)}
- result = result/element_set.size
- else
- result = 100
- end
- return result
- end
- #--------------------------------------------------------------------------
- # ● 取得自身屬性
- #--------------------------------------------------------------------------
- def get_elements(ranks)
- set = []
- for i in 1...$data_system.elements.size
- set << i unless ranks[i] == 3
- end
- return set
- end
- #----------------------------------------------------------------------------
- # ● 取得属性修正值
- #----------------------------------------------------------------------------
- def elements(attack_element_id, battler_elements, armors, states)
- #-------------------
- # ● 計算總效果
- #-------------------
- unless self.data[attack_element_id].nil?
- for i in battler_elements
- if self.data[attack_element_id][i].nil?
- next
- elsif self.data[attack_element_id][i].zero?
- break
- result = 0
- elsif
- result||= 0
- result += self.data[attack_element_id][i]
- end
- end
- end
- #-------------------
- # ● 修正結果
- #-------------------
- result||= 100
- #--------------------------------------
- # ● 防具能防御本属性的情况下效果减半
- #--------------------------------------
- for i in armors
- armor = $data_armors[i]
- if armor != nil and armor.guard_element_set.include?(attack_element_id)
- result /= 2
- end
- end
- #--------------------------------------
- # ● 状态能防御本属性的情况下效果减半
- #--------------------------------------
- for i in states
- result /= 2 if $data_states[i].guard_element_set.include?(attack_element_id)
- end
- #-------------------
- # ● 返回結果
- #-------------------
- return result
- end
- end
- class Game_Actor < Game_Battler
- #--------------------------------------------------------------------------
- # ● 取得自身所有属性
- #--------------------------------------------------------------------------
- def elements(attack_element_id)
- actor = $data_actors[@actor_id]
- if actor.elements.nil?
- ranks = $data_classes[@class_id].element_ranks
- actor.elements = get_elements(ranks)
- end
- battler_elements = actor.elements
- armors = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
- states = @states
- super(attack_element_id, battler_elements, armors, states)
- end
- end
- class Game_Enemy < Game_Battler
- #--------------------------------------------------------------------------
- # ● 取得自身所有属性
- #--------------------------------------------------------------------------
- def elements(attack_element_id)
- enemy = $data_enemies[@enemy_id]
- if enemy.elements.nil?
- ranks = $data_enemies[@enemy_id].element_ranks
- enemy.elements = get_elements(ranks)
- end
- battler_elements = enemy.elements
- armors = []
- states = @states
- super(attack_element_id, battler_elements, armors, states)
- end
- end
- module RPG
- class Enemy
- attr_accessor :elements
- end
- class Actor
- attr_accessor :elements
- end
- end
复制代码 Vx用- class Game_Battler
- #--------------------------------------------------------------------------
- # ● VX接入
- # element_set : 属性
- #--------------------------------------------------------------------------
- def elements_max_rate(element_set)
- return elements_correct(element_set)
- end
- def data
- data = {}
- #------------------------------------------------------------------------
- # ● 屬性相尅關係表
- #------------------------------------------------------------------------
- data[1]={2=>437}
- return data
- end
- #--------------------------------------------------------------------------
- # ● 属性修正计算
- # element_set : 属性
- #--------------------------------------------------------------------------
- def elements_correct(element_set)
- if element_set.size > 0
- result = 0
- element_set.each{|i|result += self.elements(i)}
- result = result/element_set.size
- else
- result = 100
- end
- return result
- end
- #--------------------------------------------------------------------------
- # ● 取得自身屬性
- #--------------------------------------------------------------------------
- def get_elements(ranks)
- set = []
- for i in 1...$data_system.elements.size
- set << i unless ranks[i] == 3
- end
- return set
- end
- #----------------------------------------------------------------------------
- # ● 取得属性修正值
- #----------------------------------------------------------------------------
- def elements(attack_element_id, battler_elements, armors, states)
- #-------------------
- # ● 計算總效果
- #-------------------
- unless self.data[attack_element_id].nil?
- for i in battler_elements
- if self.data[attack_element_id][i].nil?
- next
- elsif self.data[attack_element_id][i].zero?
- break
- result = 0
- elsif
- result||= 0
- result += self.data[attack_element_id][i]
- end
- end
- end
- #-------------------
- # ● 修正結果
- #-------------------
- result||= 100
- #--------------------------------------
- # ● 防具能防御本属性的情况下效果减半
- #--------------------------------------
- for i in armors
- armor = $data_armors[i]
- if armor != nil and armor.guard_element_set.include?(attack_element_id)
- result /= 2
- end
- end
- #--------------------------------------
- # ● 状态能防御本属性的情况下效果减半
- #--------------------------------------
- for i in states
- result /= 2 if $data_states[i].guard_element_set.include?(attack_element_id)
- end
- #-------------------
- # ● 返回結果
- #-------------------
- return result
- end
- end
- class Game_Actor < Game_Battler
- #--------------------------------------------------------------------------
- # ● 取得自身所有属性
- #--------------------------------------------------------------------------
- def elements(attack_element_id)
- actor = $data_actors[@actor_id]
- if actor.elements.nil?
- ranks = $data_classes[@class_id].element_ranks
- actor.elements = get_elements(ranks)
- end
- battler_elements = actor.elements
- armors = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
- states = @states
- super(attack_element_id, battler_elements, armors, states)
- end
- end
- class Game_Enemy < Game_Battler
- #--------------------------------------------------------------------------
- # ● 取得自身所有属性
- #--------------------------------------------------------------------------
- def elements(attack_element_id)
- enemy = $data_enemies[@enemy_id]
- if enemy.elements.nil?
- ranks = $data_enemies[@enemy_id].element_ranks
- enemy.elements = get_elements(ranks)
- end
- battler_elements = enemy.elements
- armors = []
- states = @states
- super(attack_element_id, battler_elements, armors, states)
- end
- end
- module RPG
- class Enemy
- attr_accessor :elements
- end
- class Actor
- attr_accessor :elements
- end
- end
复制代码
十分廢柴的腳本,感覺上又在浪費數據庫的用途了==||| |
|