RPGVX.net

  RPG-Maker VX => VX Skripte [Fertiger Code] => Thema gestartet von: ERZENGEL am März 15, 2008, 01:20:51

Titel: KGC_Steal
Beitrag von: ERZENGEL am März 15, 2008, 01:20:51
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
Titel: KGC_Steal
Beitrag von: Cege am März 15, 2008, 01:41:09
Hey :D
Is sicherlich ein schönes Skript und so... aba wie genau baut man es ein?
Macht man das durch Zauber? Durch common Events oder wie?
Danke fürs Posen und übersetzen ;)
Titel: KGC_Steal
Beitrag von: ERZENGEL am März 15, 2008, 01:51:41
OMG.. hab oben ein Fehler gemacht :oEntschuldigung, ist jetzt ausgebessert. Also einfach, wenn nichts anderes angegeben ist, in der Sektion Materials einfügen. Und ja das macht man mit Zaubern/Skills. Wies funktioniert hab ihch oben ja jetzt ausgebessert erklärt, ansonsten muss es jemand anderes erklären oder ich muss versuchen es anders auszudrücken.
Titel: KGC_Steal
Beitrag von: Goldenboss am März 15, 2008, 10:52:42
Hi,

kommt das nicht in die Scripte? *verwirrt*

Wie genau funktioniert das Script und was macht es?

MFG Markus
Titel: KGC_Steal
Beitrag von: -PX- am März 15, 2008, 11:18:22
Zitat von: Goldenboss
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? ...
Titel: KGC_Steal
Beitrag von: Mclovin am März 15, 2008, 12:29:26
Nicht schlecht! Jetzt gibt es schon so viele Scripte, dass ich gar nicht mehr weiß, welches ich als erstes ausprobieren soll... wacko.gif\" style=\"vertical-align:middle\" emoid=\":wacko:\" border=\"0\" alt=\"wacko.gif\" /]
Aber für dieses werde ich auf jeden Fall Verwendung finden!
Titel: KGC_Steal
Beitrag von: Goldenboss am März 15, 2008, 13:27:40
Zitat von: -PX-
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
Titel: KGC_Steal
Beitrag von: ERZENGEL am März 15, 2008, 14:18:15
Ich habs falsch erklärt. Nochmal sorry, aber gestern war Freitag ^^ und hab des dann irgendwann nach Mitternacht, also heute übersetzt, da bin ich halt nicht mehr so zum Denken aufgelegt ;)

Bei dem Skill, der etwas stehlen soll, <steal> in den Notes eintragen. Bei dem Enemy, von den man etwas stehlen kann, <Stehlen n:ID Warscheinlichkeit %> ebenfalls in den Notes eintragen und durch die entsprechenden Dinge, die oben richtig erklärt sind, ersetzen.
Titel: KGC_Steal
Beitrag von: Cege am März 15, 2008, 15:14:11
hihi okay jetzt hab ichs auch verstanden... Hab alles gemacht wie dus gemeint hattest...
Ähm aba... Iwie stiehlt der trotzdem nix xD
Also in die ensprechenden Notes das angeben okay... mit oder ohne "<>" ?
Und wie muss das mit den % geschrieben sein... Einfach das % stehen lassen oder zb 90% richtig hinschreiben... hmm...
Danke das du dir aba sone Mühe mit uns begriffsstuzigen machst xD
Titel: KGC_Steal
Beitrag von: ERZENGEL am März 15, 2008, 15:19:48
Also mit <>. Sonst hätte ichs hingeschrieben und das % muss natürlich auch stehen bleiben.

Ich denke ich mache mal an ein Beispielprojekt EDIT: Download (http://rpgvx.bplaced.net/scripts/KGC_Steal.exe)
Kannst dir den Skill #83 und die ersten 3 Enemies anschauen und mit deinem vergleichen.
Titel: KGC_Steal
Beitrag von: Razael am März 21, 2008, 01:51:44
Hy bin neu hier. ^^
Habe auch versucht dieses KGC auszuprobieren und so gemacht wies in der Demo ist aber Irgendwie will er nichts stehlen kommt immer nur (Hatte keine Auswirkung) kann es sein das der sich mit dem Deutschen (Übersetzung sei Dank) Maker nicht veträgt??

Schonmal ein Danke für baldige Antwort.
Titel: KGC_Steal
Beitrag von: ERZENGEL am März 21, 2008, 02:12:46
Herzlich Willkommen!

Kann nicht sein, da der Patch nichts am RGSS2 verändert. Aber nun zu deinen Problem: Hast du <Stehlen> im Note des jeweiligen Skills und beim Note des Gegners sowas ähnliches wie das <Stehlen W:4 85%> stehen?
Titel: KGC_Steal
Beitrag von: Razael am März 21, 2008, 04:06:07
Aaah Sorry ^^ erst vergessen auf Übernehmen zu klicken als ich den script kopierte und danach auch noch festgestellt das der Stehlenskill nicht im Testkampf funktioniert, hatte mir das schon Gedacht und es durch ein Kampf event ausprobiert Funktioniert ^^ aber Danke für die Hilfe und für die Begrüssung. ^^
Titel: KGC_Steal
Beitrag von: Cege am März 27, 2008, 13:07:10
Hmm... Kann es sein das das SKript mit nem Side view Kampf system nicht vollkommen geht?
Also zumindest die übersetzungen wie "konnte nicht gestohlen werden" oda "xxx wurde gestohlen" wird nicht angezeigt.. Man merkt garnich ds man was klaut lol Kann man das iwie sichtbar machen?

EDIT : Verdammt, an falscher Position geschrieben, sry  blush.gif\" style=\"vertical-align:middle\" emoid=\":blush:\" border=\"0\" alt=\"blush.gif\" /]
Titel: KGC_Steal
Beitrag von: ERZENGEL am März 27, 2008, 13:18:28
Kann sein ;)Könnte man bestimmt schnell ändern, aber ich weiß nicht genau, was vom Sideviewskript überschrieben wird. Ist vllt die Methode execute_action_skill, jedoch ne Angabe zum SKS wäre toll. Autor, Version usw. Dann würde ichs mir mal angucken.

Und falls du das Stealscript über den SKS-Script(en) hast verschieb es mal unter diese und probiers dann mal.
Titel: KGC_Steal
Beitrag von: Cege am März 27, 2008, 13:41:01
Ähm müsste das selbe sein das Ray Phoenix hat...
Also das BattleModule, SV1, SV2 version 1.2 :)
Wär cool wennu da mal nachschauen könntest *smile*
Titel: KGC_Steal
Beitrag von: ERZENGEL am März 27, 2008, 14:14:14
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
Titel: KGC_Steal
Beitrag von: Cege am März 27, 2008, 14:33:39
Perfekt ^^ Hab das selbe Prob bei dem Konterskript auch... Geht das genauso ?

Du bist echt der one and only Skript Guru überhaupt ^^ Respekt :DThx!!!
Titel: KGC_Steal
Beitrag von: ERZENGEL am März 28, 2008, 02:21:08
Das mit dem Konterskript müsste man sich die SKS-Skripte näher angucken und darauf hab ich derzeit nicht genug Lust. Sorry.
Und falls du noch was findest was mit den SKS-Skripten nicht richtig funktioniert beim Stehlenskript, dann schreibs hier rein ;)
SimplePortal 2.3.3 © 2008-2010, SimplePortal