Project1
标题:
【VX】请问如何制作嘲讽的状态。
[打印本页]
作者:
woaizhazha521
时间:
2011-12-23 13:47
标题:
【VX】请问如何制作嘲讽的状态。
关于嘲讽这个技能 就是 发动后 一定回合内 敌人全部攻击 状态被施加着
请问这个技能该怎么做好 我在资料库里没有发现这类的状态 请前辈们指教1! dsu_plus_rewardpost_czw
作者:
小白玩家
时间:
2011-12-23 13:56
本帖最后由 小白玩家 于 2011-12-23 13:58 编辑
VX版仇恨系统,使用方法见↓
http://rpg.blue/portal.php?mod=view&aid=40291
最关键的,它能实现嘲讽
嘲讽的实现:
怪物中了特定的状态后(默认20到23号状态),自动寻找与它有相同状态(20到23号)的角色,找到后就以该角色为目标,找不到就照原样(按照仇恨高低选择目标)行动。
使用方法:
1.创建4个状态,默认分别为20至23号(要改的话改脚本开头的常量)
2.4个状态设置成两两互斥(例如20号状态在右边状态栏里的21,22,23号状态全部设置成“-”)
3.设置n个回合xx%解除(注意:只有被嘲讽者和嘲讽者同时存在这个状态时,嘲讽才生效)
4.带有嘲讽效果的特技,数据库里设定附加状态20到23号状态其中一个,带公共事件:给使用者加上同一个状态,上状态的方法如下:脚本指令 $scene.active_battler.add_state(状态ID)
=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
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1