CREDITS
ANLEITUNG
In der Note des Steal-Skills <Stehlen> eintragen. Um festzulegen was man stehlen kann begibt man sich zu der Note des Enemy und trägt dort <Stehlen n:ID Wahrscheinlichkeit%> ein. n kann durch diese Buchstaben ersetzt werden: I (Items), W (Weapons), A (Armors) und G (Gold). Die ID steht im jeweiligen Tab vor den Namen des jeweiligen Gegenstandes und bei G gibt man hier den Wert an, der gestohlen werden kann. Wahrscheinlichkeit erklärt sich von selbst. Um mehr Gegenstände bzw. Gold von einem Gegner stehlen zu können, fügt man es zum 2. Mal, 3. Mal usw. in der Note ein und füllt es entsprechend aus.
SKRIPT
#==============================================================================
# ** Stehlen (von KGC und zuletzt aktualisiert am 13. März 2008)
#------------------------------------------------------------------------------
# Ermöglicht Items und Skills mit denen man Gold oder Gegenstände wie Items,
# Armors und Weapons von einem oder mehreren Enemy/Enemies stehlen kann.
#==============================================================================
#==============================================================================
# * Einstellungen
#==============================================================================
module KGC
module Steal
# Wenn das Ziel nichts besitzt zum Stehlen
# 1. %s : Name des Ziels
VOCAB_STEAL_NO_ITEM = "%s besitzt nichts!"
# Wenn der Diebstahl fehlgeschlagen ist
VOCAB_STEAL_FAILURE = "Diebstahl fehlgeschlagen!"
# Wenn Item gestohlen wurde
# 1. %s : Name des Ziels
# 2. %s : Name des Items
VOCAB_STEAL_ITEM = "Von %s wurde %s gestohlen!"
# Wenn Gold gestohlen wurde
# 1. %s : Name des Ziels
# 2. %s : Wert
# 3. %s : Währungseinheit
VOCAB_STEAL_GOLD = "Von %s wurden %s%s gestohlen!"
end
end
$imported = {} if $imported == nil
$imported["Steal"] = true
module KGC::Steal
# ????
module Regexp
# Skills
module Skill
# Stehlen
STEAL = /<(?:STEAL|Stehlen)>/i
end
# Enemy
module Enemy
# ?????????
STEAL_OBJECT = /<(?:STEAL|Stehlen)\s*([IWAG]):(\d+)\s+(\d+)([%%])?>/i
end
end
end
#==============================================================================
# ** Vocab
#==============================================================================
module Vocab
# Stehlen
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" # Item
obj.kind = 1
obj.item_id = $2.to_i
when "W" # Weapon
obj.kind = 2
obj.weapon_id = $2.to_i
when "A" # Armor
obj.kind = 3
obj.armor_id = $2.to_i
when "G" # Gold
obj.kind = 4
obj.gold = $2.to_i
else
next
end
# Erfolgsrate
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
#--------------------------------------------------------------------------
# * Konstanten
#--------------------------------------------------------------------------
KIND_ITEM = 1
KIND_WEAPON = 2
KIND_ARMOR = 3
KIND_GOLD = 4
#--------------------------------------------------------------------------
# * Instanzvariablen
#--------------------------------------------------------------------------
attr_accessor :gold # Gold
attr_accessor :success_prob # Erfolgsrate
#--------------------------------------------------------------------------
# * Initialisierung
#--------------------------------------------------------------------------
def initialize
super
@gold = 0
@success_prob = 0
end
end
#==============================================================================
# ** Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# * Instanzvariablen
#--------------------------------------------------------------------------
attr_accessor :steal_objects # ?????????
attr_accessor :stolen_object # Letzte gestohlene Gegenstände
#--------------------------------------------------------------------------
# * Initialisierung
#--------------------------------------------------------------------------
alias initialize_Battler_KGC_Steal initialize
def initialize
initialize_Battler_KGC_Steal
@steal_objects = []
@stolen_object = nil
end
#--------------------------------------------------------------------------
# * Skill effect
# user : ???????
# skill : Skills
#--------------------------------------------------------------------------
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 # Kein Effekt
# ????????
if self.steal_objects.empty?
@stolen_object = :no_item
return
end
@stolen_object = nil
self.steal_objects.each { |sobj|
# ??????
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
#--------------------------------------------------------------------------
# * Initialisierung
# index : Enemy Troop Index
# enemy_id : Enemy 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
#--------------------------------------------------------------------------
# * Ergebnisse des Stehlens
# target : ???
# obj : Skill oder Item
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# * Zeige gestohlene Gegenstände
# target : ???
# obj : Skill oder Item
#--------------------------------------------------------------------------
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 # Diebstahl fehlgeschlagen
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
# Gold
display_steal_gold(target, obj)
else
# ???? oder Weapons oder Items
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 : Skill oder Item
#--------------------------------------------------------------------------
def display_steal_no_item(target, obj)
text = sprintf(Vocab::StealNoItem, target.name)
@message_window.add_instant_text(text)
wait(30)
end
#--------------------------------------------------------------------------
# * ?????????????
# target : ??? (????)
# obj : Skill oder Item
#--------------------------------------------------------------------------
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 : Skill oder Item
#--------------------------------------------------------------------------
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
LINKS
- als Textdatei downloaden oder öffnen (http://rpgvx.bplaced.net/scripts/KGC_Steal.txt)
- Beispielprojekt downloaden (http://rpgvx.bplaced.net/scripts/KGC_Steal.exe)
- KGC Software (Quelle) (http://f44.aaa.livedoor.jp/~ytomy/tkool/rpgtech/php/tech.php?tool=VX&cat=tech_vx/skill&tech=steal)
Hi,
kommt das nicht in die Scripte? *verwirrt*
Wie genau funktioniert das Script und was macht es?
MFG Markus
Es kommt in Materials der Skripte. :lol:
Was macht es? Kannst du nicht lesen oder was? ...
Hi...
Was ist denn Materials der Scripte?
Öhm... Oben den Text habe ich schon gelesen, aber wie genau funktioniert das dann. Ist das dann für den Kampf gedacht, oder wie?
MFG Markus
Habs kurz und schnell mal angepasst. Sollten jedoch alle Meldungen erscheinen.#==============================================================================
# ** Stehlen (von KGC und zuletzt aktualisiert am 13. März 2008)
#------------------------------------------------------------------------------
# Ermöglicht Items und Skills mit denen man Gold oder Gegenstände wie Items,
# Armors und Weapons von einem oder mehreren Enemy/Enemies stehlen kann.
#==============================================================================
#==============================================================================
# * Einstellungen
#==============================================================================
module KGC
module Steal
# Wenn das Ziel nichts besitzt zum Stehlen
# 1. %s : Name des Ziels
VOCAB_STEAL_NO_ITEM = "%s besitzt nichts!"
# Wenn der Diebstahl fehlgeschlagen ist
VOCAB_STEAL_FAILURE = "Diebstahl fehlgeschlagen!"
# Wenn Item gestohlen wurde
# 1. %s : Name des Ziels
# 2. %s : Name des Items
VOCAB_STEAL_ITEM = "Von %s wurde %s gestohlen!"
# Wenn Gold gestohlen wurde
# 1. %s : Name des Ziels
# 2. %s : Wert
# 3. %s : Währungseinheit
VOCAB_STEAL_GOLD = "Von %s wurden %s%s gestohlen!"
end
end
$imported = {} if $imported == nil
$imported["Steal"] = true
module KGC::Steal
# ????
module Regexp
# Skills
module Skill
# Stehlen
STEAL = /<(?:STEAL|Stehlen)>/i
end
# Enemy
module Enemy
# ?????????
STEAL_OBJECT = /<(?:STEAL|Stehlen)\s*([IWAG]):(\d+)\s+(\d+)([%%])?>/i
end
end
end
#==============================================================================
# ** Vocab
#==============================================================================
module Vocab
# Stehlen
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" # Item
obj.kind = 1
obj.item_id = $2.to_i
when "W" # Weapon
obj.kind = 2
obj.weapon_id = $2.to_i
when "A" # Armor
obj.kind = 3
obj.armor_id = $2.to_i
when "G" # Gold
obj.kind = 4
obj.gold = $2.to_i
else
next
end
# Erfolgsrate
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
#--------------------------------------------------------------------------
# * Konstanten
#--------------------------------------------------------------------------
KIND_ITEM = 1
KIND_WEAPON = 2
KIND_ARMOR = 3
KIND_GOLD = 4
#--------------------------------------------------------------------------
# * Instanzvariablen
#--------------------------------------------------------------------------
attr_accessor :gold # Gold
attr_accessor :success_prob # Erfolgsrate
#--------------------------------------------------------------------------
# * Initialisierung
#--------------------------------------------------------------------------
def initialize
super
@gold = 0
@success_prob = 0
end
end
#==============================================================================
# ** Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# * Instanzvariablen
#--------------------------------------------------------------------------
attr_accessor :steal_objects # ?????????
attr_accessor :stolen_object # Letzte gestohlene Gegenstände
#--------------------------------------------------------------------------
# * Initialisierung
#--------------------------------------------------------------------------
alias initialize_Battler_KGC_Steal initialize
def initialize
initialize_Battler_KGC_Steal
@steal_objects = []
@stolen_object = nil
end
#--------------------------------------------------------------------------
# * Skill effect
# user : ???????
# skill : Skills
#--------------------------------------------------------------------------
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 # Kein Effekt
# ????????
if self.steal_objects.empty?
@stolen_object = :no_item
return
end
@stolen_object = nil
self.steal_objects.each { |sobj|
# ??????
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
#--------------------------------------------------------------------------
# * Initialisierung
# index : Enemy Troop Index
# enemy_id : Enemy 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
# NEU
@help_window.set_text(text, 1)
@help_window.visible = true
wait(45)
@help_window.visible = false
#@message_window.add_instant_text(text)
unless skill.message2.empty?
wait(10)
# NEU
@help_window.set_text(skill.message2, 1)
@help_window.visible = true
wait(45)
@help_window.visible = false
#@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
#--------------------------------------------------------------------------
# * Ergebnisse des Stehlens
# target : ???
# obj : Skill oder Item
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# * Zeige gestohlene Gegenstände
# target : ???
# obj : Skill oder Item
#--------------------------------------------------------------------------
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 # Diebstahl fehlgeschlagen
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
# Gold
display_steal_gold(target, obj)
else
# ???? oder Weapons oder Items
display_steal_item(target, obj)
end
target.stolen_object = nil
end
end
#--------------------------------------------------------------------------
# ? ???????
# target : ??? (????)
# obj : ??????????
#--------------------------------------------------------------------------
def display_steal_failure(target, obj)
# NEU
@help_window.set_text(Vocab::StealFailure, 1)
@help_window.visible = true
wait(45)
@help_window.visible = false
#@message_window.add_instant_text(Vocab::StealFailure)
wait(30)
end
#--------------------------------------------------------------------------
# * ?????????????
# target : ??? (????)
# obj : Skill oder Item
#--------------------------------------------------------------------------
def display_steal_no_item(target, obj)
text = sprintf(Vocab::StealNoItem, target.name)
# NEU
@help_window.set_text(text, 1)
@help_window.visible = true
wait(45)
@help_window.visible = false
#@message_window.add_instant_text(text)
wait(30)
end
#--------------------------------------------------------------------------
# * ?????????????
# target : ??? (????)
# obj : Skill oder Item
#--------------------------------------------------------------------------
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)
# NEU
@help_window.set_text(text, 1)
@help_window.visible = true
wait(45)
@help_window.visible = false
#@message_window.add_instant_text(text)
wait(30)
end
#--------------------------------------------------------------------------
# * ???????????
# target : ??? (????)
# obj : Skill oder Item
#--------------------------------------------------------------------------
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)
# NEU
@help_window.set_text(text, 1)
@help_window.visible = true
wait(45)
@help_window.visible = false
#@message_window.add_instant_text(text)
wait(30)
end
end