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.

Icon Command Window edit to make SDK2 compliant

Could someone please alter Momomo's icon command window script so it is compatible with the SDK 2.2? At the moment whenever you try to press any of the commands it gives this error -
http://img260.imageshack.us/img260/4605/untitledyq0.png[/IMG]

Code:
###################################################
# Idea Cntest Command Window
#
# In place of the command window which appears in while fighting
# It reaches the point where the window which arranges the idea contest is indicated.
# As for the idea contest picture being to have searched from the idea contest folder of ツクール
# When you prepare the picture by your, with ツクール please import in the idea contest.
#
# 2005.8.15 バグ修正
# When fighting and thrust, correcting the fact that the instant idea contest is indicated on the left.
#
# 2006.2.17
# Way enlargement reduction function can be set in detail.

if true  #  <- In one for debugging true validity, with false invalidity
  
module Momo_IconCommand
  # Idea contest file name setting
  ATTACK_ICON_NAME = "001-Weapon01" # Attack
  SKILL_ICON_NAME = "044-Skill01"   # Skill
  GUARD_ICON_NAME = "009-Shield01"  # Defense
  ITEM_ICON_NAME = "032-Item01"     # Item
  # X coordinate revision of window
  X_PLUS = -40
  # Y-coordinate revision of window
  Y_PLUS = -180
  # Operation at time of idea contest selection
  # 0: Flash 1: Enlargement
  SELECT_TYPE = 1
  # Color at time of flash
  FLASH_COLOR = Color.new(255, 255, 255, 128)
  # The time when you spend on the flash (the frame)
  FLASH_DURATION = 10
  # The flash the interval which is done (the frame)
  FLASH_INTERVAL = 20
  
  ZOOM_MAX = 1.5      # Maximum magnification ratio (1.0 or more)
  ZOOM_MIN = 0.5      # The smallest magnification ratio (1.0 or less)
  ZOOM_INTERVAL1 = 4  # Identical dimensions -> the number of frames which are bet on maximum magnification ratio
  ZOOM_INTERVAL2 = 4  # Maximum magnification ratio -> the number of frames which are bet on this time
  ZOOM_INTERVAL3 = 4  # Identical dimensions -> the number of frames which are bet on the smallest magnification ratio
  ZOOM_INTERVAL4 = 4  # The smallest magnification ratio -> the number of frames which are bet on this time
  ZOOM_TYPE = true   # If enlargement -> reduction if true and reduction -> enlargement false
  
  # Whether or not the command character string is indicated
  COM_NAME_DROW = true
  # Whether or not the character string is let flow
  COM_NAME_MOVE = true
  # The character string which it indicates
  ATTACK_NAME = "Attack"    # Attack
  SKILL_NAME = "Skill"   # Skill
  GUARD_NAME = "Defense"     # Defense
  ITEM_NAME = "Item"  # Item
  # Character string color
  COM_NAME_COLOR = Color.new(255, 255, 255, 255)
  # Coordinate revision in command character string
  COM_NAME_X_PLUS = 0
  COM_NAME_Y_PLUS = 0
end

class Window_CommandIcon < Window_Selectable
  attr_accessor :last_index
  #--------------------------------------------------------------------------
  # ● Object initialization
  #--------------------------------------------------------------------------
  def initialize(x, y, commands)
    super(x, y, 32, 32)
    # Appointing the null line to the window skin, try not to draw the window
    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
  #--------------------------------------------------------------------------
  # ● Refreshment
  #--------------------------------------------------------------------------
  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
  #--------------------------------------------------------------------------
  # ● Drawing of item
  #--------------------------------------------------------------------------
  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
  # Renewal of idea contest
  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
  # Renewal of command name
  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

# Sprite for idea contest
class Sprite_Icon < Sprite
  attr_accessor :active
  attr_accessor :icon_name
  #--------------------------------------------------------------------------
  # ● Object initialization
  #--------------------------------------------------------------------------
  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
  #--------------------------------------------------------------------------
  # ● Release
  #--------------------------------------------------------------------------
  def dispose
    if self.bitmap != nil
      self.bitmap.dispose
    end
    super
  end
  #--------------------------------------------------------------------------
  # ● Frame renewal
  #--------------------------------------------------------------------------
  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
  # Enlargement reduction
  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
  # Enlargement processing
  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
  # Reduction processing
  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

# Sprite for command name
class Sprite_Comm_Name < Sprite
  attr_accessor :active
  attr_accessor :name
  attr_accessor :need_reset
  #--------------------------------------------------------------------------
  # ● Object initialization
  #--------------------------------------------------------------------------
  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
  #--------------------------------------------------------------------------
  # ● Release
  #--------------------------------------------------------------------------
  def dispose
    if self.bitmap != nil
      self.bitmap.dispose
    end
    super
  end
  #--------------------------------------------------------------------------
  # ● Frame renewal
  #--------------------------------------------------------------------------
  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
  #--------------------------------------------------------------------------
  # ● Pre- battle phase start
  #--------------------------------------------------------------------------
  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
  #--------------------------------------------------------------------------
  # ● Setup of actor command window
  #--------------------------------------------------------------------------
  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
    # Setting the position of the actor 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
 
Since Ring menu command(XRXS or SephirothSpawn's version) or Icon menu command(momomomo) doesn't have such method that defined in SDK2, you have to use other way to make them work.(Removing SDK Part4 could be a solution, but if you have other script requires that, you'll need other way)

This may work(it checks menu command older way, like SDK 1.x):
Code:
class Scene_Battle < SDK::Scene_Base
  [COLOR=Red]#You have to edit this method(momomo's script)[/COLOR]
  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
    @commands = [com1, com2, com3, com4]
    @actor_command_window = Window_CommandIcon.new(0, 0, @commands)
    @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
  [COLOR=Red]#Add this under Icon command window script[/COLOR]
  #--------------------------------------------------------------------------
  # * Phase 3 Basic : Command Input
  #--------------------------------------------------------------------------
  def phase3_basic_command_input
    # Loads Current Command
    command = @commands[@actor_command_window.index]
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Branch by actor command window cursor position
    case command
    when Momo_IconCommand::ATTACK_ICON_NAME  # attack
      phase3_command_attack
    when Momo_IconCommand::SKILL_ICON_NAME  # skill
      phase3_command_skill
    when Momo_IconCommand::GUARD_ICON_NAME  # guard
      phase3_command_guard
    when Momo_IconCommand::ITEM_ICON_NAME  # item
      phase3_command_item
    end
  end
end
 
For me, it worked. It should be like this:

First, you have to edit start_phase1 in momomo's script like below:
Code:
  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
    @commands = [com1, com2, com3, com4]
    @actor_command_window = Window_CommandIcon.new(0, 0, @commands)
    @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

Next, add this under momomo's script:
Code:
class Scene_Battle < SDK::Scene_Base
  #--------------------------------------------------------------------------
  # * Phase 3 Basic : Command Input
  #--------------------------------------------------------------------------
  def phase3_basic_command_input
    # Loads Current Command
    command = @commands[@actor_command_window.index]
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Branch by actor command window cursor position
    case command
    when Momo_IconCommand::ATTACK_ICON_NAME  # attack
      phase3_command_attack
    when Momo_IconCommand::SKILL_ICON_NAME  # skill
      phase3_command_skill
    when Momo_IconCommand::GUARD_ICON_NAME  # guard
      phase3_command_guard
    when Momo_IconCommand::ITEM_ICON_NAME  # item
      phase3_command_item
    end
  end
end
This overwrites 'phase3_basic_command_input' defined in SDK2.

By the way, is there any other script you're using? (Though they produce such error unlikely)
 

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