Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Combine scripts please

can someone help either combine the rtab script with this script or at least make it compatible. it's a icon command window, screenshot is at the bottom

I keep getting an error here in the RTAB script
Code:
    when 4
      update_phase4_step4(battler)

Code:
# アイコンコマンドウィンドウ
#
# 戦闘中に出てくるコマンドウィンドウの代わりに
# アイコンを並べたウィンドウを表示するようになります。
# アイコン画像はツクールのアイコンフォルダから検索してるので
# 自分で画像を用意する場合はツクールでアイコンにインポートしてください。
#
# 2005.8.15 バグ修正
# ・戦闘突入時、左上に一瞬アイコンが表示されるのを修正。
#
# 2006.2.17
# ・拡大縮小機能を詳しく設定できるように。

if true  # ←デバッグ用 trueで有効、falseで無効
  
module Momo_IconCommand
  # アイコンファイル名設定
  ATTACK_ICON_NAME = "001-Weapon01" # 攻撃
  SKILL_ICON_NAME = "044-Skill01"   # スキル
  GUARD_ICON_NAME = "009-Shield01"  # 防御
  ITEM_ICON_NAME = "032-Item01"     # アイテム
  # ウィンドウのx座標補正
  X_PLUS = -40
  # ウィンドウのy座標補正
  Y_PLUS = -180
  # アイコン選択時の動作
  # 0:フラッシュ 1:拡大
  SELECT_TYPE = 1
  # フラッシュ時の色
  FLASH_COLOR = Color.new(255, 255, 255, 128)
  # フラッシュにかける時間(フレーム)
  FLASH_DURATION = 10
  # フラッシュする間隔(フレーム)
  FLASH_INTERVAL = 20
  
  ZOOM_MAX = 1.5      # 最大倍率(1.0以上)
  ZOOM_MIN = 0.5      # 最小倍率(1.0以下)
  ZOOM_INTERVAL1 = 4  # 等倍→最大倍率にかけるフレーム数 
  ZOOM_INTERVAL2 = 4  # 最大倍率→当倍にかけるフレーム数
  ZOOM_INTERVAL3 = 4  # 等倍→最小倍率にかけるフレーム数
  ZOOM_INTERVAL4 = 4  # 最小倍率→当倍にかけるフレーム数
  ZOOM_TYPE = false   # 拡大→縮小ならtrue、縮小→拡大ならfalse
  
  # コマンド文字列を表示するかどうか
  COM_NAME_DROW = true
  # 文字列を流すかどうか
  COM_NAME_MOVE = true
  # 表示する文字列
  ATTACK_NAME = "攻撃"    # 攻撃
  SKILL_NAME = "スキル"   # スキル
  GUARD_NAME = "防御"     # 防御
  ITEM_NAME = "アイテム"  # アイテム
  # 文字列色
  COM_NAME_COLOR = Color.new(255, 255, 255, 255)
  # コマンド文字列の座標補正
  COM_NAME_X_PLUS = 0
  COM_NAME_Y_PLUS = 0
end

class Window_CommandIcon < Window_Selectable
  attr_accessor :last_index
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(x, y, commands)
    super(x, y, 32, 32)
    # ウィンドウスキンに空文字列を指定してウィンドウを描画しないようにする
    self.windowskin = RPG::Cache.windowskin("")
    @item_max = commands.size
    @commands = commands
    @column_max = commands.size
    @index = 0
    @last_index = nil
    @name_sprite = nil
    @sprite = []
    refresh
  end
  def dispose
    super
    for sprite in @sprite
      sprite.dispose unless sprite.nil?
    end
    @name_sprite.dispose unless @name_sprite.nil?
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    @name_sprite.dispose unless @name_sprite.nil?
    for sprite in @sprite
      sprite.dispose unless sprite.nil?
    end
    @name_sprite = nil
    draw_com_name if Momo_IconCommand::COM_NAME_DROW
    @sprite = []
    for i in 0...@item_max
      draw_item(i)
    end
  end
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  def draw_item(index)
    @sprite[index] = Sprite_Icon.new(nil, @commands[index])
    @sprite[index].z = self.z + 1
  end
  def draw_com_name
    @name_sprite = Sprite_Comm_Name.new(nil, get_com_name)
    
  end
  
  # æ›´æ–°
  def update
    super
    icon_update
    com_name_update if Momo_IconCommand::COM_NAME_DROW
    if move_index?
      @last_index = self.index
    end
  end
  # アイコンの更新
  def icon_update
    for i in 0...@sprite.size
      @sprite[i].active = (self.index == i)
      @sprite[i].x = self.x + i * 24
      @sprite[i].y = self.y + 0
      @sprite[i].z = (self.index == i) ? self.z + 2 : self.z + 1
      @sprite[i].visible = self.visible
      @sprite[i].update
    end
  end
  # コマンドネームの更新
  def com_name_update
    if move_index?
      @name_sprite.name = get_com_name
    end
    @name_sprite.x = self.x - 12 + Momo_IconCommand::COM_NAME_X_PLUS
    @name_sprite.y = self.y - 40 + Momo_IconCommand::COM_NAME_Y_PLUS
    @name_sprite.z = self.z + 1
    @name_sprite.active = self.active
    @name_sprite.visible = self.visible
    @name_sprite.update
  end
  def get_com_name
    make_name_set if @name_set.nil?
    name = @name_set[self.index]
    name = "" if name.nil?
    return name
  end
  def make_name_set
    @name_set = []
    @name_set[0] = Momo_IconCommand::ATTACK_NAME
    @name_set[1] = Momo_IconCommand::SKILL_NAME
    @name_set[2] = Momo_IconCommand::GUARD_NAME
    @name_set[3] = Momo_IconCommand::ITEM_NAME
  end
  def move_index?
    return self.index != @last_index
  end
  def need_reset
    @name_sprite.need_reset = true if Momo_IconCommand::COM_NAME_DROW
  end
end

# アイコン用スプライト
class Sprite_Icon < Sprite
  attr_accessor :active
  attr_accessor :icon_name
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(viewport, icon_name)
    super(viewport)
    @icon_name = icon_name
    @last_icon = @icon_name
    @count = 0
    @zoom_in = Momo_IconCommand::ZOOM_TYPE
    self.bitmap = RPG::Cache.icon(@icon_name)
    self.ox = self.bitmap.width / 2
    self.oy = self.bitmap.height / 2
    @active = false
  end
  #--------------------------------------------------------------------------
  # ● 解放
  #--------------------------------------------------------------------------
  def dispose
    if self.bitmap != nil
      self.bitmap.dispose
    end
    super
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    if @icon_name != @last_icon
      @last_icon = @icon_name
      self.bitmap = RPG::Cache.icon(@icon_name)
    end
    if @active
      case Momo_IconCommand::SELECT_TYPE
      when 0
        icon_flash
      when 1
        icon_zoom
      end
    else
      icon_reset
    end
  end
  def icon_flash
    if @count % Momo_IconCommand::FLASH_INTERVAL == 0 or @count == 1
      self.flash(Momo_IconCommand::FLASH_COLOR, Momo_IconCommand::FLASH_DURATION)
    end
    @count += 1
  end
  # 拡大縮小
  def icon_zoom
    if @zoom_in
      interval1 = Momo_IconCommand::ZOOM_INTERVAL1
      interval2 = Momo_IconCommand::ZOOM_INTERVAL2
      zoom_max = Momo_IconCommand::ZOOM_MAX
      zoom_in(zoom_max, interval1, interval2)
    else
      interval1 = Momo_IconCommand::ZOOM_INTERVAL3
      interval2 = Momo_IconCommand::ZOOM_INTERVAL4
      zoom_min = Momo_IconCommand::ZOOM_MIN
      zoom_out(zoom_min, interval1, interval2)
    end
    @count += 1
    if @count >= interval1 + interval2
      @count = 0
      @zoom_in ^= true
    end
  end
  # 拡大処理
  def zoom_in(zoom_max, interval1, interval2)
    if interval1 >= @count
      zoom = 1.0 + (zoom_max - 1.0) * (1.0 * @count / interval1)
    else
      zoom = zoom_max - (zoom_max - 1.0) * (1.0 * (@count - interval1) / interval2)
    end
    self.zoom_x = zoom
    self.zoom_y = zoom
  end
  # 縮小処理
  def zoom_out(zoom_min, interval1, interval2)
    if interval1 >= @count
      zoom = 1.0 - (1.0 - zoom_min) * (1.0 * @count / interval1)
    else
      zoom = zoom_min + (1.0 - zoom_min) * (1.0 * (@count - interval1) / interval2)
    end
    self.zoom_x = zoom
    self.zoom_y = zoom
  end
  def icon_zoom000
    case @count
    when 1..10
      zoom = 1.0 + @count / 10.0
    when 11..20
      zoom = 2.0 - (@count - 10) / 10.0
    end
    self.zoom_x = zoom
    self.zoom_y = zoom
  end
  def icon_reset
    @count = 0
    self.zoom_x = 1.0
    self.zoom_y = 1.0
  end
end

# コマンドネーム用スプライト
class Sprite_Comm_Name < Sprite
  attr_accessor :active
  attr_accessor :name
  attr_accessor :need_reset
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(viewport, name)
    super(viewport)
    @name = name
    @last_name = nil
    @count = 0
    @x_plus = 0
    @opa_plus = 0
    @need_reset = false
    @active = false
    self.bitmap = Bitmap.new(160, 32)
  end
  #--------------------------------------------------------------------------
  # ● 解放
  #--------------------------------------------------------------------------
  def dispose
    if self.bitmap != nil
      self.bitmap.dispose
    end
    super
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    if @active
      if need_reset?
        @need_reset = false
        @last_name = @name
        text_reset
      end
      move_text if Momo_IconCommand::COM_NAME_MOVE
    end
  end
  def move_text
    @count += 1
    @x_plus = [@count * 8, 80].min 
    self.x = self.x - 80 + @x_plus
    self.opacity = @count * 25
  end
  def text_reset
    @count = 0
    @x_plus = 0
    self.bitmap.clear
    self.bitmap.font.color = Momo_IconCommand::COM_NAME_COLOR
    self.bitmap.draw_text(0, 0, 160, 32, @name)
  end
  def need_reset?
    return (@name != @last_name or @need_reset)
  end
end

class Scene_Battle
  #--------------------------------------------------------------------------
  # ● プレバトルフェーズ開始
  #--------------------------------------------------------------------------
  alias scene_battle_icon_command_start_phase1 start_phase1
  def start_phase1
    com1 = Momo_IconCommand::ATTACK_ICON_NAME
    com2 = Momo_IconCommand::SKILL_ICON_NAME
    com3 = Momo_IconCommand::GUARD_ICON_NAME
    com4 = Momo_IconCommand::ITEM_ICON_NAME
    @actor_command_window = Window_CommandIcon.new(0, 0, [com1, com2, com3, com4])
    @actor_command_window.y = 160
    @actor_command_window.back_opacity = 160
    @actor_command_window.active = false
    @actor_command_window.visible = false
    @actor_command_window.update
    scene_battle_icon_command_start_phase1
  end
  #--------------------------------------------------------------------------
  # ● アクターコマンドウィンドウのセットアップ
  #--------------------------------------------------------------------------
  alias scene_battle_icon_command_phase3_setup_command_window phase3_setup_command_window
  def phase3_setup_command_window
    scene_battle_icon_command_phase3_setup_command_window
    # アクターコマンドウィンドウの位置を設定
    @actor_command_window.x = command_window_actor_x(@actor_index)
    @actor_command_window.y = command_window_actor_y(@actor_index)
    @actor_command_window.need_reset
  end
  def command_window_actor_x(index)
    $game_party.actors[index].screen_x + Momo_IconCommand::X_PLUS
  end
  def command_window_actor_y(index)
    $game_party.actors[index].screen_y + Momo_IconCommand::Y_PLUS
  end
end
end

http://img379.imageshack.us/img379/2919/rgssiconwindowfi3.jpg[/IMG]
 
Had no problem on my end, save for left/right control of the actor command window. Changed line #71 so left/right icons in your pic could get selected via up/down cursor control.
Code:
@column_max = 1 #commands.size
Other than that, I placed this script below RTAB and it worked fine. Skills, Attack, Defend and Item had no problems.

Also, this script doesn't have an update_phase4_step4 def. Probably something else...

EDIT:
Oh, and check out what I did with lines 49-52
Code:
  ATTACK_NAME = "Attack"    # 攻撃
  SKILL_NAME = "Skill"   # スキル
  GUARD_NAME = "Defend"     # 防御
  ITEM_NAME = "Item"  # アイテム
 
lol wow i am quite the retard the last two or three dayz.... i added another script that made it mess up and i thought it was this one, but than you for looking at that for me, i think i still would have been blameing this script if it wasnt for you..
thank you

*EDIT* sorry but do you know how to make the words come up im having problems and cant find where to do that
 
This means a MANUAL EDIT of RTAB you know...... :-/
Go to line 1081 where it says:
Code:
if Input.trigger?(Input::R)
and change it to
Code:
if Input.trigger?(Input::UP)
And go to line 1095 where it says:
Code:
if Input.trigger?(Input::L)
and change it to
Code:
if Input.trigger?(Input::DOWN)
... line 1109 where it says:
Code:
if Input.trigger?(Input::RIGHT)
and change it to
Code:
if Input.trigger?(Input::UP)
... line 1133 where it says:
Code:
if Input.trigger?(Input::LEFT)
and change it to
Code:
if Input.trigger?(Input::DOWN)
Frankly, I'd rather convert the icon menu into a vertical bar (like the default) with this little patch:
Code:
#==============================================================================
# ** Window_CommandIcon / Vertical Patch
#------------------------------------------------------------------------------
#  Alters Momomo's CommandIcon menu to draw vertically
#==============================================================================
class Window_CommandIcon < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias new_init initialize
  def initialize(x, y, commands)
    new_init(x, y, commands)
    @column_max = 1
    refresh
  end
  #--------------------------------------------------------------------------
  # * Update Icon (vertically)
  #--------------------------------------------------------------------------  
  def icon_update
    for i in 0...@sprite.size
      @sprite[i].active = (self.index == i)
      @sprite[i].y = self.y + i * 24
      @sprite[i].x = self.x + 0
      @sprite[i].z = (self.index == i) ? self.z + 2 : self.z + 1
      @sprite[i].visible = self.visible
      @sprite[i].update
    end
  end  
end
Then just set the menu up a little higher by going into the Icon Menu's config section and changing Y_PLUS to -240 or something.
 
The manual edit is a bit clunky, but it shoul......

HOLY HELL!!! WHAT THE #$%^ IS THAT!

*cough*

Okay, now I see why you want to keep a horizontal icon bar.

Just paste this REPLACEMENT patch directly below RTAB. Some of the changes I posted were quickie notes and made a minor conflict. This one works (and with the Momomo script) :D
Code:
class Scene_Battle  
  #-------------------------------------------------------------------------- 
  # * Frame renewal (actor command phase: Basic command)
  #--------------------------------------------------------------------------
  def update_phase3_basic_command
    unless @active_actor.inputable?
      @active_actor.current_action.clear
      phase3_next_actor
      return
    end
    # The B when button is pushed,
    if Input.trigger?(Input::B) and @party == false
      # Performing cancellation SE
      $game_system.se_play($data_system.cancel_se)
      @party = true
    end
    if @party == true and
        ((@action > 0 and @action_battlers.empty?) or (@action == 0 and 
        (@action_battlers.empty? or @action_battlers[0].phase == 1)))
      # To party command phase
      start_phase2
      return
    end
    # When C button is pushed,
    if Input.trigger?(Input::C)
      @party = false
      # It diverges at cursor position of the actor command window
      case @actor_command_window.index
      when 0  # Attack
        # Performing decision SE
        $game_system.se_play($data_system.decision_se)
        # Starting the selection of the enemy
        start_enemy_select
      when 1  # Skill
        # Performing decision SE
        $game_system.se_play($data_system.decision_se)
        # Starting the selection of skill
        start_skill_select
      when 2  # Defense 
        # Performing decision SE
        $game_system.se_play($data_system.decision_se)
        # Setting action
        @active_actor.current_action.kind = 0
        @active_actor.current_action.basic = 1
        # To command input of the following actor
        phase3_next_actor
      when 3  # Item
        # Performing decision SE
        $game_system.se_play($data_system.decision_se)
        # Starting the selection of the item
        start_item_select
      end
      return
    end
    # Change Character
    if @command.size > 1
      # When the DOWN when button is pushed,
      if Input.trigger?(Input::DOWN)
        $game_system.se_play($data_system.cursor_se)
        @party = false
        # Blinking effect OFF of actor
        if @active_actor != nil
          @active_actor.blink = false
        end
        @command.push(@command[0])
        @command.shift
        @command_a = false
        # Start-up of new command window
        start_phase3
      end
      # When the UP when button is pushed,
      if Input.trigger?(Input::UP)
        $game_system.se_play($data_system.cursor_se)
        @party = false
        # Blinking effect OFF of actor
        if @active_actor != nil
          @active_actor.blink = false
        end
        @command.unshift(@command[@command.size - 1]) 
        @command.delete_at(@command.size - 1)
        @command_a = false
        # Start-up of new command window
        start_phase3
      end
    end
  end
end
Notice that only half the 'if...end' cases were needed.
 
lol is that a bad reaction? hahahaha it's kinda weird do you like it? also, yeah that edit didnt work, it switches commands when only one actor has their turn but as soon as another actor has their turn it switches characters when you press left or right.
 
yeah it works like i want in your demo.. i'll make an up to date demo and maybe you can see if maybe another script is messing with it.. if you want to.. i dont know what else to mess with..

*EDIT* i'll post again when the demo is uploaded..

here is the demo
Memories of Darkness - Chapter 1: The End of Everything
once you download the demo go into the fonts folder and install the 2 fonts otherwise you wont see any text, i cant get the auto font install scripts to work right..

hope you can help me..
***ALSO if you'd like to play through what i have so far lol tell me what you think, I have the start position at where it needs to be to start from the beginning but if you want to test the battles i just made a little test area for you to test it out just place the starting position anywhere in that area, it should automatically give you 5 other people and raise your level really high so you can test out everything, including all the magics that i gave them.. here is a screen of where the start position should be in case you don't look (IF YOU WANT TO TEST THE GAME) the area the start position should be in is "Pyrate (Dream 1)" lol.
http://img296.imageshack.us/img296/8418/startpositionoh1.png[/IMG]
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top