Project1
标题:
一个任务脚本求用法
[打印本页]
作者:
负零
时间:
2012-8-30 18:10
标题:
一个任务脚本求用法
这是一个任务脚本(VA脚本整合工程里的),关于敌人击破数的,大意就是接任务后,去打指定ID的怪达到指定数量时可以完成任务。
问题来了,无论我是踩暗雷随机遇敌还是事件直接指定,战斗胜利后都无法增长这个击破数量,永远为0。任务设定那块绝对没有问题,而且即使是原工程里也一样存在这个现象,是不是少了什么地方没有设置?求指导解决。
#==============================================================================
# ■ VXAce-RGSS3-6 撃破数カウンタ [Ver.1.0.0] by Claimh
#------------------------------------------------------------------------------
# 各アクターが倒したエネミーの数をカウントします。
#------------------------------------------------------------------------------
#・ウィンドウ上に表示させる
#Widow_Statusなどに追記してください。
#<記述>
# draw_defeat_count(actor_id, enemy_id, x, y)
# actor_id :対象アクターID(0を指定すると全アクター)
# enemy_id :対象エネミーID(0を指定すると全エネミー)
# x :横方向の表示位置
# y :縦方向の表示位置
#------------------------------------------------------------------------------
#・変数に入れる
#イベントのスクリプト上に記述してください。
#<記述>
# input_defeat_count(actor_id, enemy_id, variable_id)
# actor_id :対象アクターID(0を指定すると全アクター)
# enemy_id :対象エネミーID(0を指定すると全エネミー)
# variable_id :撃破数を入れる変数
#==============================================================================
module DefeatCounter ## 他スクリプトとの併用のために残す
#--------------------------------------------------------------------------
# ● 指定アクターの撃破数
# actor_id :対象アクターID(0を指定すると全アクター)
# enemy_id :対象エネミーID(0を指定すると全エネミー)
#--------------------------------------------------------------------------
def self.defeat_count(actor_id=0, enemy_id=0)
return $game_actors.defeat(enemy_id, actor_id)
end
end
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias initialize_defeat_count initialize
def initialize(actor_id)
initialize_defeat_count(actor_id)
@defeat = {}
end
#--------------------------------------------------------------------------
# ● 撃破数取得
#--------------------------------------------------------------------------
def defeat(enemy_id=0)
return defeat_all if enemy_id == 0
@defeat[enemy_id] = 0 unless @defeat.keys.include?(enemy_id)
return @defeat[enemy_id]
end
#--------------------------------------------------------------------------
# ● 撃破数取得
#--------------------------------------------------------------------------
def defeat_all
@defeat.keys.inject(0) { |n, id| n += @defeat[id] }
end
#--------------------------------------------------------------------------
# ● 撃破数カウント
#--------------------------------------------------------------------------
def defeat_cnt(enemy_id)
return if enemy_id == 0
@defeat[enemy_id] = 0 unless @defeat.keys.include?(enemy_id)
@defeat[enemy_id] += 1
end
end
class Game_Actors
#--------------------------------------------------------------------------
# ● 撃破数取得
#--------------------------------------------------------------------------
def defeat(enemy_id=0, actor_id=0)
return defeat_all(enemy_id) if actor_id == 0
return self.[](actor_id).defeat(enemy_id)
end
#--------------------------------------------------------------------------
# ● 撃破数取得
#--------------------------------------------------------------------------
def defeat_all(enemy_id=0)
@data.inject(0) { |n, actor| n += (actor.nil? ? 0 : actor.defeat(enemy_id)) }
end
end
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ● ダメージの処理
# 呼び出し前に @result.hp_damage @result.mp_damage @result.hp_drain
# @result.mp_drain が設定されていること。
#--------------------------------------------------------------------------
alias execute_damage_defeat execute_damage
def execute_damage(user)
execute_damage_defeat(user)
return if actor? or !dead? or user.enemy?
return if $game_troop.enable_dead_count?(self.index)
$game_troop.defeat_dead_count(self.index)
user.defeat_cnt(self.enemy_id)
end
end
#==============================================================================
# ■ Game_Troop
#==============================================================================
class Game_Troop < Game_Unit
#--------------------------------------------------------------------------
# ● セットアップ
#--------------------------------------------------------------------------
alias setup_defeat setup
def setup(troop_id)
setup_defeat(troop_id)
@enemy_defeat = []
end
#--------------------------------------------------------------------------
# ● 撃破時のカウント
#--------------------------------------------------------------------------
def defeat_dead_count(index)
@enemy_defeat[index] = true
end
#--------------------------------------------------------------------------
# ● 既にカウント済み?
#--------------------------------------------------------------------------
def enable_dead_count?(index)
@enemy_defeat[index] || false
end
end
class Game_Interpreter
#--------------------------------------------------------------------------
# ● 指定した変数にアクターの撃破数を格納する
# actor_id :対象アクター(0を指定すると全アクター)
# enemy_id :対象エネミー(0を指定すると全エネミー)
# variable_id :撃破数を格納する変数
#--------------------------------------------------------------------------
def input_defeat_count(actor_id, enemy_id, variable_id)
$game_variables[variable_id] = $game_actors.defeat(enemy_id, actor_id)
return true
end
end
class Window_Base < Window
#--------------------------------------------------------------------------
# ● 指定した変数にアクターの撃破数を表示する
# actor_id :対象アクター(0を指定すると全アクター)
# enemy_id :対象エネミー(0を指定すると全エネミー)
# x :横方向の表示位置
# y :縦方向の表示位置
#--------------------------------------------------------------------------
def draw_defeat_count(actor_id, enemy_id, x, y)
draw_text(x, y, 200, line_height, $game_actors.defeat(enemy_id, actor_id), 2)
end
end
复制代码
作者:
风雪优游
时间:
2012-8-31 11:22
我也不会用,帮顶起来。
不过这个任务系统不只有这一个脚本,而是好几个组成的一套,你的是齐全的么?
首先要在任务设定那个脚本中设定你要打怪的ID
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1