赞 | 0 |
VIP | 0 |
好人卡 | 3 |
积分 | 1 |
经验 | 1064 |
最后登录 | 2013-5-16 |
在线时间 | 518 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 518 小时
- 注册时间
- 2010-6-16
- 帖子
- 1073
|
心情好,直接给你VX的……- =begin
- 設置方法
- 請在戰鬥畫面中使用(戰鬥事件或是在戰鬥畫面觸發的公共事件)
- 仇恨值變量
- $game_actors[角色編號].current_action.hatred # 我方指定角色的仇恨值變量
- --------------------------------------------------------------------------------
- $game_party.actors.[我方順序].current_action.hatred # 我方指定隊伍位置的仇恨值變量
- --------------------------------------------------------------------------------
- $game_troop.enemies[敵人順序].current_action.hatred # 敵方指定隊伍位置的仇恨值變量
- --------------------------------------------------------------------------------
- ★以下是使用範例☆
- $game_actors[7].current_action.hatred = 10 # 我方隊伍中角色編號為7的角色仇恨值變為10
- $game_party.actors.[2].current_action.hatred += 5 # 我方第3個角色(0為第1個)仇恨值增加5
- $game_troop.enemies[4].current_action.hatred -= 3 # 敵方第4個角色仇恨值減少3
-
- --------------------------------------------------------------------------------
-
- 使用者自定設置說明
- 【1】Sword51_AddHatred = [仇恨值增加量]
- 【2】Sword51_AddHatred = [每少多少血, 仇恨值增加量]
- 設定被攻擊的角色對發動攻擊的角色增加的仇恨值多寡設定
- 使用設置法1表示一律增加 仇恨值增加量 的仇恨值
- 使用設置法2表示每受到 每少多少血 的血量,各增加 仇恨值增加量 的仇恨值
-
- 【1】Sword51_RedHatred = [仇恨值減少量]
- 【2】Sword51_RedHatred = [每少多少血, 仇恨值減少量]
- 設定攻擊者攻擊指定目標時,則對那個目標的仇恨減少(簡單來說就是報仇後仇恨降低)
- 使用設置法1表示一律增加 仇恨值增少量 的仇恨值
- 使用設置法2表示每受到 每少多少血 的血量,各增加 仇恨值增少量 的仇恨值
-
- Sword51_Max = 0
- 設定仇恨值最高的上限,如果設定0則表示無上限,仇恨值可以不斷的增加
-
- Sword51_SkillHatred[技能編號] = 額外增減量 NEW
- 當發動指定的技能時,敵方所有怪將對那技能發動者增加仇恨
- 可以製作出像是敵人看到某角色幫其他角色或自己補血時,敵人不是就白打了
- 所以用這個效果,快速增加使用指定技能的角色的仇恨,讓對手集中火力攻擊補血者
- 可自行添加多個Sword51_SkillHatred設置,不使用該效果也可以全數移除掉
- 技能編號:設定會額外增減仇恨值的技能編號,設定0則沒設定的技能都採用0號的設定
- 額外增減量:設定使用指定技能所增加的仇恨值,如果是扣仇恨值可以指定負數即可(全體扣除)
-
- Sword51_ItemHatred[物品編號] = 額外增減量 NEW
- 效果同Sword51_SkillHatred設置的相同,只不過這個是針對物品的效果
- 也就是看到使用指定物品的角色,則敵方所有怪對物品使用者的仇恨將會額外增加
- 可自行添加多個Sword51_ltemHatred設置,不使用該效果也可以全數移除掉
- 物品編號:設定會額外增減仇恨值的技能編號,設定0則沒設定的技能都採用0號的設定
- 額外增減量:設定使用指定技能所增加的仇恨值,如果是扣仇恨值可以指定負數即可(全體扣除)
- =end
- module Sword
- #=======================================
- #★ 魔劍工舖 - 仇恨系統 1.00 (VX)
- # http://blog.yam.com/a870053jjkj/
- #=======================================
- Sword51_SkillHatred, Sword51_ItemHatred = [], []
- =begin
- ========================================
- ● 設置方法(限戰鬥畫面使用)
- 已方仇恨值變量(人物順序):$game_actors[角色編號].action.hatred
- 已方仇恨值變量(隊伍順序):$game_party.members[我方順序].action.hatred
- 敵方仇恨值變量(隊伍順序):$game_troop.members[敵人順序].action.hatred
- ========================================
- =end
- #=======================================
- #● 使用者自定設置
- Sword51_AddHatred = [10, 1] # 增加仇恨的數量 [增加量] 或 [每扣血量, 增加量]
- Sword51_RedHatred = [10, 1] # 減少仇恨的數量 [減少量] 或 [每扣血量, 減少量]
- Sword51_Max = 0 # 設定仇恨值的最大值,設0表示無限制
- #--------------------------------------------------------------
- #○ 技能仇恨增減表(Sword51_SkillHatred[技能編號] = 增減量)
- Sword51_SkillHatred[1] = 50
- #--------------------------------------------------------------
- #○ 物品仇恨增減表(Sword51_ItemHatred[物品編號] = 增減量)
- Sword51_ItemHatred[0] = 0
- #=======================================
- $Sword ? $Sword[51] = true : $Sword = {51=>true} # 腳本使用標誌
- end
- #=======================================
- #■ 處理行動 (戰鬥中的行動) 的類別
- class Game_BattleAction
- include Sword # 連接自動設置
- attr_accessor :hatred # 仇恨值記錄表
- #-------------------------------------------------------------
- #● 初始化物件(戰鬥者)
- # 定義一個資料表,負責儲存敵人對我方角色的仇恨值數值列表
- alias sword51_initialize initialize
- def initialize(battler) ; sword51_initialize(battler)
- @hatred = Hash.new{|a, b| a[b] = 0} # 定義仇恨紀錄表
- end
- #-------------------------------------------------------------
- #● 隨機目標
- # 將預設的敵人目標選擇來計算誰的仇恨值最高,最高仇恨者為攻擊目標
- alias sword51_decide_random_target decide_random_target
- def decide_random_target
- hatred = [0, 0] # 目前仇恨最高的角色紀錄
- @hatred.each{|k, v| hatred[1] == v ? # 計算攻擊目標
- (hatred = [k, v] if rand(2) == 1) : hatred = [k, v] if hatred[1] <= v}
- if hatred[0] == 0 ; sword51_decide_random_target # 隨機目標
- else ; $game_party.members.each_index{|i| next unless $game_party.members[i]
- @target_index = i if $game_party.members[i].id == hatred[0]}
- end ; @target_index
- end
- end
- #=======================================
- #■ 處理戰鬥畫面的類別
- class Scene_Battle
- include Sword # 連接自動設置
- #-------------------------------------------------------------
- #● 執行戰鬥行動:使用技能
- # 使用指定技能就增加或減少仇恨值的處理
- alias sword51_execute_action_skill execute_action_skill
- def execute_action_skill
- skill_id = @active_battler.action.skill.id
- hatred = Sword51_SkillHatred[skill_id] ? Sword51_SkillHatred[skill_id] :
- (Sword51_SkillHatred[0] ? Sword51_SkillHatred[0] : nil)
- $game_troop.members.each{|enemy| enemy.action.hatred[
- @active_battler.id] += hatred} if hatred # 有使用指定技能時增加憤怒值
- sword51_execute_action_skill
- end
- #-------------------------------------------------------------
- #● 執行戰鬥行動:物品
- # 使用指定物品就增加或減少仇恨值的處理
- alias sword51_execute_action_item execute_action_item
- def execute_action_item
- item_id = @active_battler.action.item.id
- hatred = Sword51_ItemHatred[item_id] ? Sword51_ItemHatred[item_id] :
- (Sword51_ItemHatred[0] ? Sword51_ItemHatred[0] : nil)
- $game_troop.members.each{|enemy| enemy.action.hatred[
- @active_battler.id] += hatred} if hatred # 有使用指定物品時增加憤怒值
- sword51_execute_action_item
- end
- #-------------------------------------------------------------
- #● 顯示攻擊動畫
- # 在顯示動畫的時候,順便增加或減少敵人對我方角色的仇恨值
- alias sword51_display_attack_animation display_attack_animation
- def display_attack_animation(targets)
- targets.each do |target| if target.hp_damage.is_a?(Numeric) ; if target.hp_damage > 0
- ahatred = Sword51_AddHatred.size == 1 ? Sword51_AddHatred[0] : # 計算仇恨增加值
- target.hp_damage / Sword51_AddHatred[0] * Sword51_AddHatred[1]
- rhatred = Sword51_RedHatred.size == 1 ? Sword51_RedHatred[0] : # 計算仇恨減少值
- target.hp_damage / Sword51_RedHatred[0] * Sword51_RedHatred[1]
- if @active_battler.is_a?(Game_Actor) # 攻擊者是同伴時
- current = $Sword_VX ? target.action.hatred[@active_battler.id] :
- target.action.hatred[@active_battler.id]
- next if target.is_a?(Game_Actor) # 如果我方對我方行動的話就跳過該目標
- current += ahatred ; current = [current, Sword51_Max].min if Sword51_Max > 0
- $Sword_VX ? target.action.hatred[@active_battler.id] = current :
- target.action.hatred[@active_battler.id] = current
- else # 攻擊者是敵人時
- troop = $game_troop.members.index(@active_battler)
- current = $Sword_VX ? target.action.hatred[troop] : target.action.hatred[troop]
- next if target.is_a?(Game_Enemy) # 如果敵方對敵方行動的話就跳過該目標
- current += ahatred ; current = [current, Sword51_Max].min if Sword51_Max > 0
- $Sword_VX ? target.action.hatred[troop] = current :
- target.action.hatred[troop] = current
- end ; @active_battler.action.hatred[target.id] -= rhatred
- @active_battler.action.hatred[target.id] =
- [@active_battler.action.hatred[target.id], 0].max # 控制底線下限
- end ; end ; end
- sword51_display_attack_animation(targets)
- p $game_troop.members[0].action.hatred, $game_troop.members[1].action.hatred
- end
- end
复制代码 |
|