Autor skryptu: KGC
Skrypt ten umożliwia kradzież przedmiotów podczas walki.
Aby skrypt działał, do zdolności kradzieży w notatkach musimy przypisać <steal>, a następnie przypisać przeciwnikowi przedmioty, które można ukraść. Formuła wygląda tak:
<steal X:ID (procent szans)%>
Gdzie X = Typ kradzionego przedmitu. I = Przedmiot, W = Broń, A = Zbroja, and G = Złoto
Gdzie ID = ID kradzionego przedmiotu LUB ilość kradzionego złota
Przykład: Zaatakował cię bandyta, który ma długi miecz i trochę złota, które chciałbyś ukraść, 50% szans powodzenia. Dodaj do notatek przeciwnika:
<steal W:(ID miecza) 50%>
<steal G:100 50%>
Można również utworzyć przedmioty, które zwiększają prawdopodobieństwo. Wystarczy dopisać w notatkach formułkę:
<steal_prob_plus Modyfikator %>
Gdzie Modyfikator: dodatkowe procenty szans. Można również ustawić wartość ujemną
Edit:
chwila, po co ja to pisałem, przecież to jest w skrypcie xDD Ale dobra, niech zostanie :P
Spoiler:
Kod:
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ Steal Skill - KGC_Steal VX
#_/ Last Update: 2008/09/13
#_/ Translation by Mr. Anonymous
#_/ Extended updates by Touchfuzzy and RFTD
#_/ KGC Site:
#_/ http://f44.aaa.livedoor.jp/~ytomy/
#_/ Translator's Blog:
#_/ http://mraprojects.wordpress.com
#_/----------------------------------------------------------------------------
#_/ This script allows you to assign skills that "steal" items, weapons, armor
#_/ and money.
#_/============================================================================
#_/ Instructions For Usage
#_/
#_/ 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 chance 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%>
#_/
#_/ New! Equipment that effects steal probability
#_/ You may define equipment that increases or decreases the odds of the
#_/ steal skill's success. To take advantage of this feature, tag the equip:
#_/ <steal_prob_plus Modifier Rate %>
#_/ Where Modifier = Addition( + ) or Subtraction( - )
#_/ Where Rate = the amount of increase/decrease in probability.
#_/
#_/ Example: You'd like an accessory you created called "Theif's Ring" to
#_/ increase an actor's stealing probability by 15%. You'd tag that ring:
#_/ <steal_prob_plus + 15%>
#_/============================================================================
#_/ Install: Insert below KGC_EnemyGuide, and PG Tankentai Sideview Battle
#_/ System, if applicable.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
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 = "Cel nie ma przedmiotów, które można by ukraść!"
# Steal skill failed.
VOCAB_STEAL_FAILURE = "Kradzież nieudana"
# When stealing an item.
# First %s : Target name
# Second %s : Item Name
VOCAB_STEAL_ITEM = "%s ukradł %s!"
# When stealing money/gold.
# First %s : Target name
# Second %s : Amount stolen
# Third %s : Gold unit name. (Ex "GP", or"$"
VOCAB_STEAL_GOLD = "Skradziono %s%s!"
# Agility Based Steal
# Implemented on 3/14/08 by Touchfuzzy.
# If this is true then the skill chance is figured as Steal% * Tagi * Eagi.
# If this toggle is false, then the default percentage system is used.
# Steal% = Steal Percentage used in Enemy Notes tag.
# Cagi = Thief's (Actor using the skill) Agility
# Eagi = Enemy's Agility
AGILITY_BASED_STEAL = true
# RPG Tankentai Sideview Battle System Steal Messages
# Implemented on 8/27/08 by RFTD.
# If you're using RPG Tankentai Sideview Battle System, set this toggle to
# true in order to display the above defined messages.
# If don't use the RPG Tankentai Sideview Battle System or you'd rather the
# "steal" messages to be removed, set this to false.
USING_SIDEVIEW = false
end
end
#=============================================================================#
# End Customization #
#=============================================================================#
module Vocab
# Set text defined in the customization area to the vocab module.
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
class RPG::BaseItem
def create_steal_cache
@__steal_prob_plus = 0
self.note.each_line { |line|
case line
when KGC::Steal::Regexp::BaseItem::STEAL_PROB_PLUS
@__steal_prob_plus += $1.to_i
end
}
end
def steal_prob_plus
create_steal_cache if @__steal_prob_plus == nil
return @__steal_prob_plus
end
end
class RPG::Skill < RPG::UsableItem
def create_steal_cache
super
@__steal = false
self.note.each_line { |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
class RPG::Enemy
def create_steal_cache
@__steal_objects = []
self.note.each_line { |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
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
#--------------------------------------------------------------------------
def steal_prob_plus
return 0
end
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
def make_obj_steal_result(user, obj)
return unless obj.steal?
return if @skipped || @missed || @evaded
if self.steal_objects.compact.empty?
@stolen_object = :no_item
return
end
@stolen_object = nil
stolen_index = -1
self.steal_objects.each_with_index { |sobj, i|
next if sobj == nil
# Added by TouchFuzzy 3/14/08
if KGC::Steal::AGILITY_BASED_STEAL
sobj.success_prob = sobj.success_prob * user.agi / self.agi
end
# End Agility Based Steal Update
if sobj.success_prob > 0
next if sobj.success_prob + user.steal_prob_plus < rand(100)
else
if rand(sobj.denominator) != 0
next if user.steal_prob_plus < rand(100)
end
end
@stolen_object = sobj
stolen_index = i
if $imported["EnemyGuide"]
self_id = (self.actor? ? self.id : self.enemy_id)
KGC::Commands.set_enemy_object_stolen(self_id, stolen_index)
end
break
}
if stolen_index != -1
@steal_objects[stolen_index] = nil
end
end
end
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
def steal_prob_plus
n = 0
equips.compact.each { |item| n += item.steal_prob_plus }
return n
end
end
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
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
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
display_steal_item(target, obj)
end
target.stolen_object = nil
end
end
#--------------------------------------------------------------------------
def display_steal_failure(target, obj)
# Implemented by RFTD 8/27/08
if KGC::Steal::USING_SIDEVIEW
result_data = sprintf(Vocab::StealFailure)
@steal_window = Steal_Window.new(result_data)
@steal_window.visible = true
wait (160)
@steal_window.dispose
else
@message_window.add_instant_text(Vocab::StealFailure)
wait(30)
end
end
#--------------------------------------------------------------------------
def display_steal_no_item(target, obj)
# Implemented by RFTD 8/27/08
if KGC::Steal::USING_SIDEVIEW
result_data = sprintf(Vocab::StealNoItem, target.name)
@steal_window = Steal_Window.new(result_data)
@steal_window.visible = true
wait (160)
@steal_window.dispose
else
text = sprintf(Vocab::StealNoItem, target.name)
@message_window.add_instant_text(text)
wait(30)
end
end
#--------------------------------------------------------------------------
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)
# Implemented by RFTD 8/27/08
if KGC::Steal::USING_SIDEVIEW
result_data = sprintf(Vocab::StealItem, target.name, item.name)
@steal_window = Steal_Window.new(result_data)
@steal_window.visible = true
wait (160)
@steal_window.dispose
else
text = sprintf(Vocab::StealItem, target.name, item.name)
@message_window.add_instant_text(text)
wait(30)
end
end
#--------------------------------------------------------------------------
def display_steal_gold(target, obj)
gold = target.stolen_object.gold
$game_party.gain_gold(gold)
# Implemented by RFTD 8/27/08
if KGC::Steal::USING_SIDEVIEW
result_data = sprintf(Vocab::StealGold, target.name, gold, Vocab.gold)
@steal_window = Steal_Window.new(result_data)
@steal_window.visible = true
wait (160)
@steal_window.dispose
else
text = sprintf(Vocab::StealGold, target.name, gold, Vocab.gold)
@message_window.add_instant_text(text)
wait(30)
end
end
end
A mi to nie działa na Tanketaiu.
Zrobiłem jak w instrukcji.
Dałem <steal> oraz itemy w poptworach.
________________________ ...Amelanduil & FireBlade words will be remembered... ...Amelanduil & FireBlade acts will be remembered... ...Amelanduil & FireBlade never gonna die...
to już na eventach musisz zrobić.
Sabikku, nie widziałem. Ale nadal mi nie działa ... Dajcie demo z Tankentaiem i tym skryptem.
________________________ ...Amelanduil & FireBlade words will be remembered... ...Amelanduil & FireBlade acts will be remembered... ...Amelanduil & FireBlade never gonna die...
nie, nie można.
Nie masz w conditional branch "skill x used", co logiczne uniemożliwia użycie w walce... po prostu nie da się tego zrobić bez skryptu, krótko mówiąc.
Nie pisz wielkimi literami na forum. Nhadala
________________________
(╯°□°)╯︵ ┻━┻
"A jeśli... Boga nie ma, to co z ciebie za szatan?"
Ostatnio zmieniony przez Nhadala Pon 13 Lut, 2012 09:38, w całości zmieniany 1 raz
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum