VanThanh99
T.E.T.Я.I.S
- 13/4/06
- 541
- 1
Đề nghị bác Leon cộng thêm level cho các thành viên mới tham gia đi...Mới vào level 1 Damg trung bình 200 mà đánh quái 5000 thì lâu lắm.
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/ ◆ Steal Skill - KGC_Steal ◆ VX ◆
#_/ ◇ Last update : 2008/03/14 ◇
#_/ ◇ Translation by Mr. Anonymous ◇
#_/ ◇ Extended updates by Touchfuzzy. ◇
#_/-----------------------------------------------------------------------------
#_/ ◆ 2008/03/14 UPDATE ◆
#_/ Coded & incorporated agility-based steal function by Touchfuzzy.
#_/-----------------------------------------------------------------------------
#_/ This script allows you to assign skills that "steal" items, weapons, armor
#_/ and money.
#_/ Setup is simple. To assign a skill as a Steal skill, add the tag "<steal>"
#_/ (without quotations) into the "Note" box on the skill you choose in the
#_/ skills database. Next, to set up enemies you can steal from, in the enemies
#_/ database, you enter <steal X:ID Probability %>
#_/ Where X = Steal type. I = Items, W = Weapons, A = Armor, and G = Gold
#_/ Where ID = The specified item, weapon, or armor's ID #, in the database
#_/ OR the amount of gold that can be stolen.
#_/ Where Probability % = The change of the item being stolen.
#_/=============================================================================
#_/ Example: You have a bandit (enemy) who has a Long Sword and 100 gold you'd
#_/ like to be able to steal from him, at a 50% chance. Tag him with:
#_/ <steal W:2 50%>
#_/ <steal G:100 50%>
#_/ Simple, yes?
#_/
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#==============================================================================
# ★ Customization ★
#==============================================================================
module KGC
module Steal
# ◆ Display Messages ◆
# Target skill used on has nothing to steal.
# (Where %s = target)
# %s : has nothing to steal!
VOCAB_STEAL_NO_ITEM = "%s has nothing to steal!"
# ◆ Steal skill failed.
VOCAB_STEAL_FAILURE = "Your thievery was amiss!"
# ◆ When stealing an item.
# First %s : Target name
# Second %s : Item Name
VOCAB_STEAL_ITEM = "%s had a %s stolen!"
# ◆ When stealing money/gold.
# First %s : Target name
# Second %s : Amount stolen
# Third %s : Gold unit name. (Ex "GP", or"$"
VOCAB_STEAL_GOLD = "%s was mugged. %s%s stolen!"
# ◆ Agility Based Steal ◆
# If this is true then the skill chance is figured as Steal% * Tagi * Eagi.
# Steal% = Steal Percentage used in Enemy Notes tag.
# Cagi = Thief's (Actor using the skill) Agility
# Eagi = Enemy's Agility
AGILITY_BASED_STEAL = true
end
end
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
# Unless you know what you're doing, it's best not to alter anything beyond #
# this point, as this only affects the tags used for "Notes" in database. #
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
# Whatever word(s) are after the separator ( | ) in the following lines are
# what are used to determine what is searched for in the "Notes" section of a
# skill to see if it is an Steal skill.
# Default STEAL skill tag is <steal>
# Default STEAL_OBJECT is <steal>
$imported = {} if $imported == nil
$imported["Steal"] = true
module KGC::Steal
# Regular expressions defined.
module Regexp
# Base skill module.
module Skill
# Skill: Steal tag string
STEAL = /<(?:STEAL|steal)>/i
end
# Base enemy module.
module Enemy
# Enemy: Object to Steal tag string.
STEAL_OBJECT = /<(?:STEAL|steal)\s*([IWAG]):(\d+)\s+(\d+)([%%])?>/i
end
end
end
#==============================================================================
# ■ Vocab
#==============================================================================
module Vocab
# 盗む関連メッセージ
StealItem = KGC::Steal::VOCAB_STEAL_ITEM
StealGold = KGC::Steal::VOCAB_STEAL_GOLD
StealNoItem = KGC::Steal::VOCAB_STEAL_NO_ITEM
StealFailure = KGC::Steal::VOCAB_STEAL_FAILURE
end
#==============================================================================
# ■ RPG::Skill
#==============================================================================
class RPG::Skill < RPG::UsableItem
#--------------------------------------------------------------------------
# ○ 「盗む」のキャッシュ生成
#--------------------------------------------------------------------------
def create_steal_cache
@__steal = false
self.note.split(/[\r\n]+/).each { |line|
case line
when KGC::Steal::Regexp::Skill::STEAL
# 盗む
@__steal = true
end
}
end
#--------------------------------------------------------------------------
# ○ 盗む
#--------------------------------------------------------------------------
def steal?
create_steal_cache if @__steal == nil
return @__steal
end
end
#==============================================================================
# ■ RPG::Enemy
#==============================================================================
class RPG::Enemy
#--------------------------------------------------------------------------
# ○ 「盗む」のキャッシュ生成
#--------------------------------------------------------------------------
def create_steal_cache
@__steal_objects = []
self.note.split(/[\r\n]+/).each { |line|
case line
when KGC::Steal::Regexp::Enemy::STEAL_OBJECT
# 盗めるオブジェクト
obj = RPG::Enemy::StealObject.new
case $1.upcase
when "I" # アイテム
obj.kind = 1
obj.item_id = $2.to_i
when "W" # 武器
obj.kind = 2
obj.weapon_id = $2.to_i
when "A" # 防具
obj.kind = 3
obj.armor_id = $2.to_i
when "G" # 金
obj.kind = 4
obj.gold = $2.to_i
else
next
end
# 成功率
if $4 != nil
obj.success_prob = $3.to_i
else
obj.denominator = $3.to_i
end
@__steal_objects << obj
end
}
end
#--------------------------------------------------------------------------
# ○ 盗めるオブジェクト
#--------------------------------------------------------------------------
def steal_objects
create_steal_cache if @__steal_objects == nil
return @__steal_objects
end
end
#==============================================================================
# □ RPG::Enemy::StealObject
#==============================================================================
class RPG::Enemy::StealObject < RPG::Enemy::DropItem
#--------------------------------------------------------------------------
# ○ 定数
#--------------------------------------------------------------------------
KIND_ITEM = 1
KIND_WEAPON = 2
KIND_ARMOR = 3
KIND_GOLD = 4
#--------------------------------------------------------------------------
# ○ 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :gold # 金
attr_accessor :success_prob # 成功率
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super
@gold = 0
@success_prob = 0
end
end
#==============================================================================
# ■ Game_Battler
#------------------------------------------------------------------------------
# バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ
# スのスーパークラスとして使用されます。
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ○ 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :steal_objects # 盗めるオブジェクト
attr_accessor :stolen_object # 前回盗まれたオブジェクト
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias initialize_Battler_KGC_Steal initialize
def initialize
initialize_Battler_KGC_Steal
@steal_objects = []
@stolen_object = nil
end
#--------------------------------------------------------------------------
# ● スキルの効果適用
# user : スキルの使用者
# skill : スキル
#--------------------------------------------------------------------------
alias skill_effect_KGC_Steal skill_effect
def skill_effect(user, skill)
skill_effect_KGC_Steal(user, skill)
make_obj_steal_result(user, skill)
end
#--------------------------------------------------------------------------
# ○ スキルまたはアイテムによる盗み効果
# user : スキルまたはアイテムの使用者
# obj : スキルまたはアイテム
# 結果は @stolen_object に代入する。
#--------------------------------------------------------------------------
def make_obj_steal_result(user, obj)
return unless obj.steal? # 盗み効果なし
return if @skipped || @missed || @evaded # 効果なし
# 何も持っていない
if self.steal_objects.empty?
@stolen_object = :no_item
return
end
@stolen_object = nil
self.steal_objects.each { |sobj|
# 盗み成功判定
if KGC::Steal::AGILITY_BASED_STEAL
sobj.success_prob = sobj.success_prob * user.agi / self.agi
end
if sobj.success_prob > 0
# 確率指定
next if sobj.success_prob < rand(100)
else
# 分母指定
next if rand(sobj.denominator) != 0
end
# 盗み成功
@stolen_object = sobj
break
}
@steal_objects.delete(@stolen_object)
end
end
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# index : 敵グループ内インデックス
# enemy_id : 敵キャラ ID
#--------------------------------------------------------------------------
alias initialize_Enemy_KGC_Steal initialize
def initialize(index, enemy_id)
initialize_Enemy_KGC_Steal(index, enemy_id)
@steal_objects = enemy.steal_objects.clone
end
end
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● 戦闘行動の実行 : スキル
#--------------------------------------------------------------------------
alias execute_action_skill_KGC_Steal execute_action_skill
def execute_action_skill
skill = @active_battler.action.skill
if skill.steal?
execute_action_steal
@status_window.refresh
else
execute_action_skill_KGC_Steal
end
end
#--------------------------------------------------------------------------
# ○ 戦闘行動の実行 : 盗む
#--------------------------------------------------------------------------
def execute_action_steal
skill = @active_battler.action.skill
text = @active_battler.name + skill.message1
@message_window.add_instant_text(text)
unless skill.message2.empty?
wait(10)
@message_window.add_instant_text(skill.message2)
end
targets = @active_battler.action.make_targets
display_animation(targets, skill.animation_id)
@active_battler.mp -= @active_battler.calc_mp_cost(skill)
$game_temp.common_event_id = skill.common_event_id
for target in targets
target.skill_effect(@active_battler, skill)
display_steal_effects(target, skill)
end
end
#--------------------------------------------------------------------------
# ○ 盗んだ結果の表示
# target : 対象者
# obj : スキルまたはアイテム
#--------------------------------------------------------------------------
def display_steal_effects(target, obj = nil)
unless target.skipped
line_number = @message_window.line_number
wait(5)
if target.hp_damage != 0 || target.mp_damage != 0
display_critical(target, obj)
display_damage(target, obj)
end
display_stole_object(target, obj)
display_state_changes(target, obj)
if line_number == @message_window.line_number
display_failure(target, obj) unless target.states_active?
end
if line_number != @message_window.line_number
wait(30)
end
@message_window.back_to(line_number)
end
end
#--------------------------------------------------------------------------
# ○ 盗んだオブジェクトの表示
# target : 対象者
# obj : スキルまたはアイテム
#--------------------------------------------------------------------------
def display_stole_object(target, obj = nil)
if target.missed || target.evaded
display_steal_failure(target, obj)
return
end
case target.stolen_object
when nil # 盗み失敗
display_steal_failure(target, obj)
when :no_item # 何も持っていない
display_steal_no_item(target, obj)
else
if target.stolen_object.kind == RPG::Enemy::StealObject::KIND_GOLD
# お金
display_steal_gold(target, obj)
else
# アイテム or 武器 or 防具
display_steal_item(target, obj)
end
target.stolen_object = nil
end
end
#--------------------------------------------------------------------------
# ○ 盗み失敗の表示
# target : 対象者 (アクター)
# obj : スキルまたはアイテム
#--------------------------------------------------------------------------
def display_steal_failure(target, obj)
@message_window.add_instant_text(Vocab::StealFailure)
wait(30)
end
#--------------------------------------------------------------------------
# ○ 何も持っていない場合の表示
# target : 対象者 (アクター)
# obj : スキルまたはアイテム
#--------------------------------------------------------------------------
def display_steal_no_item(target, obj)
text = sprintf(Vocab::StealNoItem, target.name)
@message_window.add_instant_text(text)
wait(30)
end
#--------------------------------------------------------------------------
# ○ アイテムを盗んだ場合の表示
# target : 対象者 (アクター)
# obj : スキルまたはアイテム
#--------------------------------------------------------------------------
def display_steal_item(target, obj)
# 盗んだアイテムを取得
sobj = target.stolen_object
case sobj.kind
when RPG::Enemy::StealObject::KIND_ITEM
item = $data_items[sobj.item_id]
when RPG::Enemy::StealObject::KIND_WEAPON
item = $data_weapons[sobj.weapon_id]
when RPG::Enemy::StealObject::KIND_ARMOR
item = $data_armors[sobj.armor_id]
else
return
end
$game_party.gain_item(item, 1)
text = sprintf(Vocab::StealItem, target.name, item.name)
@message_window.add_instant_text(text)
wait(30)
end
#--------------------------------------------------------------------------
# ○ お金を盗んだ場合の表示
# target : 対象者 (アクター)
# obj : スキルまたはアイテム
#--------------------------------------------------------------------------
def display_steal_gold(target, obj)
gold = target.stolen_object.gold
$game_party.gain_gold(gold)
text = sprintf(Vocab::StealGold, target.name, gold, Vocab.gold)
@message_window.add_instant_text(text)
wait(30)
end
end

. Mà trong dùng file game thì có được xài limit không vậy, nếu được xài thì bùn luôn ... 



Mỗi nhân vật chỉ có 2 ô trang bị Accessory thôi , vì vậy không thể kháng hết tất cả trạng thái [-x .như vậy thì mua hết các accessories thì chắc sẽ ko bị dính efect đâu nhỉ![]()