Battle Script help required...

Started by Satoh, November 17, 2008, 06:56:13 am

Previous topic - Next topic

Satoh

November 17, 2008, 06:56:13 am Last Edit: November 17, 2008, 07:02:14 am by Satoh
Okay, so, as per Blizz's suggestion I hunted down a Tales ABS to help my own script further its development...
However... The only one I could find an actual DL link for doesn't seem to run properly... here is what I have...

I hope someone can help...

First off I get errors anywhere XRXS_SB1 is mentioned, so I deleted that from it, then I got errors from
alias some_thing refresh
def refresh

saying refresh is undefined....

the script is too long to post
Requesting Rule #1: BE SPECIFIC!!

Light a man a fire and he'll be warm for a night...
Light a man afire and he'll be warm for the rest of his life... ¬ ¬;

My Resources

Fantasist

From the looks of it, this seems to be an addon or modification of another script where those missing modules and methods are defined. It's not just that XRXS module and refresh of that window class, there ar many other aliases for non-existant methods. Try tracking down the original script.
Do you like ambient/electronic music? Then you should promote a talented artist! Help out here. (I'm serious. Just listen to his work at least!)


The best of freeware reviews: Gizmo's Freeware Reviews




Satoh

I see... so that's why... well...crap.

Well, does anyone here read Spanish fluently? I have another script but the entire thing is commented in what looks like Spanish... it may not be, but it looks as such.
Requesting Rule #1: BE SPECIFIC!!

Light a man a fire and he'll be warm for a night...
Light a man afire and he'll be warm for the rest of his life... ¬ ¬;

My Resources

Fantasist

Luckily, we can still understand RGSS ;) Just try it out anyway. Looking at the code, you can guess if it's the one you need. Look for that XRXS module, that window class for which "refresh is not defined", you can figure it out.
Do you like ambient/electronic music? Then you should promote a talented artist! Help out here. (I'm serious. Just listen to his work at least!)


The best of freeware reviews: Gizmo's Freeware Reviews




Satoh

The script(actually like 23 scripts all part of one system X_x;) is in a demo... I'm trying to see what parts of it I might be able to butcher... but I am not having much luck since I'm not fluent in RGSS or Spanish...

It's given me a few ideas, but I'm not sure if I'll need to completely rewrite the system to affect my plan or if I can modify the original(s)...

The system appears to use a folder full of character images instead of a single sprite sheet... This is actually better for me since I currently have my sprites in singles format anyway... however... I'm not sure how this script works... and I think I want my version to do something different...

Also there seems to be a generous amount of kanji thrown in...

Spoiler: ShowHide
# ▼▲▼ XRXS_BP11. バトラーモーションXC. ver..04b ▼▲▼
# by 桜雅 在土
#==============================================================================
# □ カスタマイズポイント
#==============================================================================
class Scene_Battle
  # 「状況に応じたフォーム変化を行う」
  #    (基本的に true で使用しますが、"待機アニメ"だけ使用したいとき、または
  #     Full-Move Battle Systemを使用する場合、false に設定して下さい。)
  DO_FORM_UPDATE = true
  #
  # Animacion automatica
  #
  AUTO_UPDATE_DECPLACE = true

# "Animación automática": En el marco del un solo dígito para añadir
#  de forma automática una serie de movimientos.

  AUTO_UPDATE_NUMBERS = [1, 31, 41, 51, 91, 221, 231]
 
  # Repetir la moción de secuencias animadas.
 
  AUTO_UPDATE_LOOP = [1, 41, 51, 81, 91, 221, 231]
 
end
class Game_Battler
  #
  # "バッドステート"であると判断するステートのIDの配列
  #
  BAD_STATE_IDS = [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
  #--------------------------------------------------------------------------
  # ○ スキルが魔法スキルがどうかの判別
  #--------------------------------------------------------------------------
  def skill_is_a_magic?(skill)
    return skill == nil ? false : (skill.str_f < skill.int_f)
  end
end
  # Conjunto fijo de valores
module XRXS_BP11
  # Formulario de lista ID
  BASIC        =   1              # 待機:基本(1に固定)
  BAD_STATE    =  81              # 待機:バッドステート
  DOWN         =  91              # ダウン(91固定)
  STEP3_ATTACK =   1              # 通常攻撃   :行動側アニメ時
  STEP4_ATTACK = 121              # 通常攻撃   :対象側アニメ時
  STEP3_GUARD  =  61              # 防御選択   :行動側アニメ時
  STEP4_GUARD  =  61              # 防御選択   :対象側アニメ時
  STEP3_ESCAPE =  51              # 逃げる    :行動側アニメ時
  STEP4_ESCAPE =  51              # 逃げる    :対象側アニメ時
  STEP3_NOMOVE =   1              # なにもしない :行動側アニメ時
  STEP4_NOMOVE =   1              # なにもしない :対象側アニメ時
  STEP3_SKILL  = 201              # スキル(非魔法):行動側アニメ時
  STEP4_SKILL  = 211              # スキル(非魔法):対象側アニメ時
  STEP3_MAGIC  = 221              # スキル( 魔法 ):行動側アニメ時
  STEP4_MAGIC  = 231              # スキル( 魔法 ):対象側アニメ時
  STEP3_ITEM   = 241              # アイテム使用 :行動側アニメ時
  STEP4_ITEM   = 251              # アイテム使用 :対象側アニメ時
  STEP4_DAMAGE =  71              # ダメージ受け
  STEP4_GUARD  =  61              # 攻撃を防御時
  STEP4_HEALED = 251              # 非ダメージ受け時(回復等)
  STEP4_AVOID  =  51              # 回避時
  WIN_ACTION   = 991              # 戦闘勝利時
end

#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :now_form_id              # フォームID
  attr_accessor :battler_name_basic_form  # バトラーの基本バトラーグラフィック
  #--------------------------------------------------------------------------
  # ○ フォームID
  #--------------------------------------------------------------------------
  def now_form_id
    if @now_form_id != nil
      return @now_form_id
    else
      return 1
    end
  end
  #--------------------------------------------------------------------------
  # ○graficos de muerte o cambio de estado para aliados y enemigos
  #--------------------------------------------------------------------------
  def transgraphic_basic_form
    if dead? and battler_graphic_exist?(XRXS_BP11::DOWN)
    self.motion.do_down
      form_id = XRXS_BP11::DOWN
      else
      form_id = XRXS_BP11::BASIC
      for state_id in @states
        form_id = XRXS_BP11::BAD_STATE if BAD_STATE_IDS.include?(state_id)
      end
    end
    transgraphic(form_id)
  end
  #--------------------------------------------------------------------------
  # ○ バトラーグラフィックの変更
  #    form_id : 変更後のフォームのID
  #--------------------------------------------------------------------------
  def transgraphic(form_id)
    # 現在フォームID の更新。
    @now_form_id = form_id

    if form_id == 0
      # 0 が指定された場合、グラフィックを消す
      @battler_name = ""
      return
    elsif form_id == 1
      # 1 が指定された場合、初期グラフィックへ戻す
      @battler_name = @battler_name_basic_form.to_s
    else
      # 有無チェック
      if battler_graphic_exist?(form_id)
        # グラフィック変更
        @battler_name = form_id_to_name(form_id)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ○ バトラーグラフィックの有無
  #--------------------------------------------------------------------------
  def battler_graphic_exist?(form_id)   
    # バトラーグラフィックス読み込みテスト
    begin
      RPG::Cache.battler(form_id_to_name(form_id), @battler_hue)
    rescue 
      # 無かったときの処理
      return false
    end
    return true
  end
  #--------------------------------------------------------------------------
  # ○ form_id と @battler_name_basic_form から form_name を作成 (String)
  #--------------------------------------------------------------------------
  def form_id_to_name(form_id)
    form_name = @battler_name_basic_form.to_s + "_battler/" + @battler_name_basic_form.to_s + "_"
    if form_id < 10
      form_name += "00"
    elsif form_id < 100
      form_name += "0"
    end
    form_name += form_id.to_s
    return form_name
  end
end
#==============================================================================
# ■ Sprite_Battler
#==============================================================================
class Sprite_Battler < RPG::Sprite
  #--------------------------------------------------------------------------
  # ● コラプス
  #--------------------------------------------------------------------------
  def collapse
    if @battler.battler_graphic_exist?(91)
    else
      super
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias xrxs_bp11_update update
  def update
    xrxs_bp11_update
    return if @battler == nil
    if @battler.dead? and @battler.battler_graphic_exist?(XRXS_BP11::DOWN)
      self.opacity = 255
    end
  end
end

#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ○ 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader   :battler_name_basic_form      # バトラー ファイル名:基本
  #--------------------------------------------------------------------------
  # ● セットアップ
  #--------------------------------------------------------------------------
  alias xrxs_bp11_setup setup
  def setup(actor_id)
    xrxs_bp11_setup(actor_id)
    @battler_name_basic_form = @battler_name
  end
  #--------------------------------------------------------------------------
  # ● グラフィックの変更
  #--------------------------------------------------------------------------
  alias xrxs_bp11_set_graphic set_graphic
  def set_graphic(character_name, character_hue, battler_name, battler_hue)
    xrxs_bp11_set_graphic(character_name, character_hue, battler_name, battler_hue)
    @battler_name_basic_form = @battler_name
  end
end
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias xrxs_bp11_initialize initialize
  def initialize(troop_id, member_index)
    xrxs_bp11_initialize(troop_id, member_index)
    @battler_name_basic_form = @battler_name
  end
end
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle
  #--------------------------------------------------------------------------
  # ● メイン処理
  #--------------------------------------------------------------------------
  alias xrxs_bp11_main main
  def main
    @wait_count_motion = 0
    xrxs_bp11_main
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias xrxs_bp11_update update
  def update
    xrxs_bp11_update
    # バトラーグラフィック表示更新
    if @wait_count_motion > 0
      # ウェイトカウントを減らす
      @wait_count_motion -= 1
    elsif AUTO_UPDATE_DECPLACE
      for battler in $game_party.actors + $game_troop.enemies
        # バトラー待機グラフィックの更新
        trance_id = battler.now_form_id
        #
        if AUTO_UPDATE_NUMBERS.include?(trance_id/10 * 10 + 1)
          if trance_id%10 == 8
            # 1に戻す
            if AUTO_UPDATE_LOOP.include?(trance_id - 7)
              trance_id -= 7
              battler.transgraphic(trance_id)
            end
          else
            # 一つ進める
            trance_id += 1
            battler.transgraphic(trance_id)
          end
        end
      end
      @wait_count_motion = 1
    end
  end
  #--------------------------------------------------------------------------
  # ● プレバトルフェーズ開始
  #--------------------------------------------------------------------------
  alias xrxs_bp11_start_phase1 start_phase1
  def start_phase1
    xrxs_bp11_start_phase1
    # モーションをリセット
    actors_motion_reset
  end
  #--------------------------------------------------------------------------
  # ○ アクター達のモーションをリセット
  #--------------------------------------------------------------------------
  def actors_motion_reset
    for actor in $game_party.actors
      actor.transgraphic_basic_form
    end
  end
  #--------------------------------------------------------------------------
  # ● バトル終了
  #--------------------------------------------------------------------------
  alias xrxs_bp11_battle_end battle_end
  def battle_end(result)
    # モーションを基本に戻す
    for actor in $game_party.actors
      actor.set_graphic(actor.character_name, actor.character_hue, actor.battler_name_basic_form, actor.battler_hue)
    end
    # 呼び戻す
    xrxs_bp11_battle_end(result)
  end
  if DO_FORM_UPDATE
  #--------------------------------------------------------------------------
  # ● 勝敗判定
  #--------------------------------------------------------------------------
  alias xrxs_bp11_judge judge
  def judge
    bool = xrxs_bp11_judge
    if bool
      for battler in $game_party.actors
        if battler.dead? == false
          battler.transgraphic(XRXS_BP11::WIN_ACTION)
        end
      end
    end
    return bool
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (メインフェーズ ステップ 3 : 行動側アニメーション)
  #--------------------------------------------------------------------------
  alias xrxs_bp11_update_phase4_step3 update_phase4_step3
  def update_phase4_step3
    # モーション:行動側のモーション
    # アクションの種別で分岐
    case @active_battler.current_action.kind
    when 0  # 基本
      # 攻撃の場合
      if @active_battler.current_action.basic == 0
        @active_battler.transgraphic(XRXS_BP11::STEP3_ATTACK)
      end
      # 防御の場合
      if @active_battler.current_action.basic == 1
        @active_battler.transgraphic(XRXS_BP11::STEP3_GUARD)
      end
      # 逃げるの場合
      if @active_battler.is_a?(Game_Enemy) and @active_battler.current_action.basic == 2
        @active_battler.transgraphic(XRXS_BP11::STEP3_ESCAPE)
      end
      # 何もしないの場合
      if @active_battler.current_action.basic == 3
        @active_battler.transgraphic(XRXS_BP11::STEP3_NOMOVE)
      end
    when 1  # スキル時、魔法判別
      if @active_battler.skill_is_a_magic?(@skill)
        @active_battler.transgraphic(XRXS_BP11::STEP3_MAGIC)
      else
        @active_battler.transgraphic(XRXS_BP11::STEP3_SKILL)
      end
    when 2  # アイテム
      @active_battler.transgraphic(XRXS_BP11::STEP3_ITEM)
    end
    # 戻す
    xrxs_bp11_update_phase4_step3
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (メインフェーズ ステップ 4 : 対象側アニメーション)
  #--------------------------------------------------------------------------
  alias xrxs_bp11_update_phase4_step4 update_phase4_step4
  def update_phase4_step4
    # モーション:行動側のモーション
    # アクションの種別で分岐
    case @active_battler.current_action.kind
    when 0  # 基本
      # 攻撃の場合
      if @active_battler.current_action.basic == 0
        @active_battler.transgraphic(XRXS_BP11::STEP4_ATTACK)
      end
      # 防御の場合
      if @active_battler.current_action.basic == 1
        @active_battler.transgraphic(XRXS_BP11::STEP4_GUARD)
      end
      # 逃げるの場合
      if @active_battler.is_a?(Game_Enemy) and @active_battler.current_action.basic == 2
        @active_battler.transgraphic(XRXS_BP11::STEP4_ESCAPE)
      end
      # 何もしないの場合
      if @active_battler.current_action.basic == 3
        @active_battler.transgraphic(XRXS_BP11::STEP4_NOMOVE)
      end
    when 1  # スキル時、魔法判別
      if @active_battler.skill_is_a_magic?(@skill)
        @active_battler.transgraphic(XRXS_BP11::STEP4_MAGIC)
      else
        @active_battler.transgraphic(XRXS_BP11::STEP4_SKILL)
      end
    when 2  # アイテム
      @active_battler.transgraphic(XRXS_BP11::STEP4_ITEM)
    end
    # モーション:対象側のダメージ
    for target in @target_battlers
      if target.damage == "Miss"
        target.transgraphic(XRXS_BP11::STEP4_AVOID)
      elsif target.damage.is_a?(Numeric) and target.damage > 0
        if target.guarding?
          target.transgraphic(XRXS_BP11::STEP4_GUARD)
        else
          target.transgraphic(XRXS_BP11::STEP4_DAMAGE)
        end
      else
        target.transgraphic(XRXS_BP11::STEP4_HEALED)
      end
    end
    # 戻す
    xrxs_bp11_update_phase4_step4
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (メインフェーズ ステップ 6 : リフレッシュ)
  #--------------------------------------------------------------------------
  alias xrxs_bp11_update_phase4_step6 update_phase4_step6
  def update_phase4_step6
    # 行動者のモーションのリセット
    @active_battler.transgraphic_basic_form
    # 対象のモーションリセット
    if @target_battlers != nil
      for target in @target_battlers
        target.transgraphic_basic_form
      end
    end
    xrxs_bp11_update_phase4_step6
  end
  end #---DO_FORM_UPDATE
end
Requesting Rule #1: BE SPECIFIC!!

Light a man a fire and he'll be warm for a night...
Light a man afire and he'll be warm for the rest of his life... ¬ ¬;

My Resources

Fantasist

That script isn't the one you need, I've tested it. Why don't you install the script in your first post into the demo and see what happens? If you already did, what happened?
Do you like ambient/electronic music? Then you should promote a talented artist! Help out here. (I'm serious. Just listen to his work at least!)


The best of freeware reviews: Gizmo's Freeware Reviews




Satoh

Ok, I'll try to explain... I'm trying to get usable parts from this script, as opposed to using the script in it's current form.

I have a thread in the Request forum, that's what this whole thing is about... I'm trying to find the most effective way to accomplish the script in my request...

In the end, I want my CBS to be like a fighting game as opposed to an RPG. This script is only supposed to be a step in that direction...

it just isn't seeming like it'll be a very big one... =/
Requesting Rule #1: BE SPECIFIC!!

Light a man a fire and he'll be warm for a night...
Light a man afire and he'll be warm for the rest of his life... ¬ ¬;

My Resources