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.

problem of battle minkoff

Status
Not open for further replies.
Q1.
I use a battle minkoff but it have a problem
the gunner isn't stay back ,he closely go to enemy to shot . >< (like fighter)
I need to fix this ,can you help me?
 
The system has a MNK_STATIONARY_WEAPONS array that holds the ID numbers of weapons that will make him stay put. In the default script, it holds values from 17 to 24 that are the guns and bows of the default system.

If your gunner is using a weapon that is not listed in this array, the system will assume he's using a melee weapon. And if you've changed the weapons in your project you will want to edit this array to include the new 'missile' weapons.
 
I chose Irongun (ID 22) but it not work@_@
this is code i use

#================================================= =============================
# ** Sprite_Battler
#------------------------------------------------------------------------------
# Animated Battlers by Minkoff
#================================================= =============================

class Sprite_Battler < RPG::Sprite
#--------------------------------------------------------------------------
# * Initialize
#--------------------------------------------------------------------------
alias cbs_initialize initialize
def initialize(viewport, battler = nil)
@speed = 7
@frames = 4
@poses = 10
@stationary_enemies = true
@stationary_actors = false
@calculate_speed = true
@phasing = true
@frame = 0
@pose = 0
@last_time = 0
@last_move_time = 0
cbs_initialize(viewport, battler)
viewport.z = 99
end
#--------------------------------------------------------------------------
# * Update
#--------------------------------------------------------------------------
alias cbs_update update
def update
return unless @battler

# Regular Update
cbs_update

# Start Routine
unless @started
@width = @width / @frames
@height = @height / @poses
@display_x = @battler.screen_x
@display_y = @battler.screen_y
@destination_x = @display_x
@destination_y = @display_y
end

# Setup Sprite
self.src_rect.set(@width * @frame, @height * @pose, @width, @height)
self.mirror = @battler.is_a?(Game_Enemy) unless @started

# Position Sprite
self.x = @display_x
self.y = @display_y
self.z = @display_y
self.ox = @width / 2
self.oy = @height

# Setup Animation
time = Graphics.frame_count / (Graphics.frame_rate / @speed)
if @last_time < time
@frame = (@frame + 1) % @frames
if @frame == 0 or @reload
if @freeze
@frame = @frames - 1
return
end
@pose = state
end
end
@last_time = time

# Move It
move if moving

# Finish Up
@started = true
end
#--------------------------------------------------------------------------
# * Current State
#--------------------------------------------------------------------------
def state
# Damage State
if [nil,{}].include?(@battler.damage)
# Battler Fine
@state = 0
# Battler Wounded
@state = 2 if @battler.hp < @battler.maxhp / 4
# Battler Dead
@state = 2 if @battler.dead?
end
# Guarding State
@state = 3 if @battler.guarding?
# Moving State
if moving
# Battler Moving Left
@state = 4 if moving.eql?(0)
# Battler Moving Right
@state = 5 if moving.eql?(1)
end
# Return State
return @state
end
#--------------------------------------------------------------------------
# * Move
#--------------------------------------------------------------------------
def move
time = Graphics.frame_count / (Graphics.frame_rate.to_f / (@speed * 5))
if @last_move_time < time

# Pause for Animation
return if @pose != state

# Phasing
if @phasing
d1 = (@display_x - @original_x).abs
d2 = (@display_y - @original_y).abs
d3 = (@display_x - @destination_x).abs
d4 = (@display_y - @destination_y).abs
self.opacity = [255 - ([d1 + d2, d3 + d4].min * 1.75).to_i, 0].max
end

# Calculate Difference
difference_x = (@display_x - @destination_x).abs
difference_y = (@display_y - @destination_y).abs

# Done? Reset, Stop
if [difference_x, difference_y].max.between?(0, 8)
@display_x = @destination_x
@display_y = @destination_y
@pose = state
return
end

# Calculate Movement Increments
increment_x = increment_y = 1
if difference_x < difference_y
increment_x = 1.0 / (difference_y.to_f / difference_x)
elsif difference_y < difference_x
increment_y = 1.0 / (difference_x.to_f / difference_y)
end

# Calculate Movement Speed
if @calculate_speed
total = 0; $game_party.actors.each{ |actor| total += actor.agi }
speed = @battler.agi.to_f / (total / $game_party.actors.size)
increment_x *= speed
increment_y *= speed
end

# Multiply and Move
multiplier_x = (@destination_x - @display_x > 0 ? 8 : -8)
multiplier_y = (@destination_y - @display_y > 0 ? 8 : -8)
@display_x += (increment_x * multiplier_x).to_i
@display_y += (increment_y * multiplier_y).to_i
end
@last_move_time = time
end
#--------------------------------------------------------------------------
# * Set Movement
#--------------------------------------------------------------------------
def setmove(destination_x, destination_y)
unless (@battler.is_a?(Game_Enemy) and @stationary_enemies) or
(@battler.is_a?(Game_Actor) and @stationary_actors)
@original_x = @display_x
@original_y = @display_y
@destination_x = destination_x
@destination_y = destination_y
end
end
#--------------------------------------------------------------------------
# * Movement Check
#--------------------------------------------------------------------------
def moving
if (@display_x != @destination_x and @display_y != @destination_y)
return (@display_x > @destination_x ? 0 : 1)
end
end
#--------------------------------------------------------------------------
# * Set Pose
#--------------------------------------------------------------------------
def pose=(pose)
@pose = pose
@frame = 0
end
#--------------------------------------------------------------------------
# * Freeze
#--------------------------------------------------------------------------
def freeze
@freeze = true
end
#--------------------------------------------------------------------------
# * Fallen Pose
#--------------------------------------------------------------------------
def collapse
return
end
end

#================================================= =============================
# ** Game_Actor
#================================================= =============================

class Game_Actor
#--------------------------------------------------------------------------
# * Actor X Coordinate
#--------------------------------------------------------------------------
def screen_x
if self.index != nil
return self.index * 45 + 450
else
return 0
end
end
#--------------------------------------------------------------------------
# * Actor Y Coordinate
#--------------------------------------------------------------------------
def screen_y
return self.index * 35 + 200
end
#--------------------------------------------------------------------------
# * Actor Z Coordinate
#--------------------------------------------------------------------------
def screen_z
return screen_y
end
end

#================================================= =============================
# ** Scene_Battle
#================================================= =============================

class Scene_Battle
#--------------------------------------------------------------------------
# * Action Animation, Movement
#--------------------------------------------------------------------------
alias cbs_update_phase4_step3 update_phase4_step3
def update_phase4_step3(battler = @active_battler)
@rtab = !@target_battlers
target = (@rtab ? battler.target : @target_battlers)[0]
@moved = {} unless @moved
return if battler.sprite.moving
case battler.current_action.kind
when 0 # Attack
if not (@moved[battler] or battler.guarding?)
offset = (battler.is_a?(Game_Actor) ? 40 : -40)
battler.sprite.setmove(target.screen_x + offset, target.screen_y)
@moved[battler] = true
return
elsif not battler.guarding?
battler.sprite.pose = 6 + rand(2)
battler.sprite.setmove(battler.screen_x, battler.screen_y)
end
when 1 # Skill
battler.sprite.pose = 8
when 2 # Item
battler.sprite.pose = 8
end
@moved[battler] = false
@rtab ? cbs_update_phase4_step3(battler) : cbs_update_phase4_step3
end
#--------------------------------------------------------------------------
# * Hit Animation
#--------------------------------------------------------------------------
alias cbs_update_phase4_step4 update_phase4_step4
def update_phase4_step4(battler = @active_battler)
for target in (@rtab ? battler.target : @target_battlers)
damage = (@rtab ? target.damage[battler] : target.damage)
if damage.is_a?(Numeric) and damage > 0
target.sprite.pose = 1
end
end
@rtab ? cbs_update_phase4_step4(battler) : cbs_update_phase4_step4
end
#--------------------------------------------------------------------------
# * Victory Animation
#--------------------------------------------------------------------------
alias cbs_start_phase5 start_phase5
def start_phase5
for actor in $game_party.actors
return if actor.sprite.moving
end
for actor in $game_party.actors
unless actor.dead?
actor.sprite.pose = 9
actor.sprite.freeze
end
end
cbs_start_phase5
end
#--------------------------------------------------------------------------
# * Change Arrow Viewport
#--------------------------------------------------------------------------
alias cbs_start_enemy_select start_enemy_select
def start_enemy_select
cbs_start_enemy_select
@enemy_arrow.dispose
@enemy_arrow = Arrow_Enemy.new(@spriteset.viewport2)
end
end

#================================================= =============================
# ** Game_Battler
#================================================= =============================

class Game_Battler
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :sprite
end

#================================================= =============================
# ** Spriteset_Battle
#================================================= =============================

class Spriteset_Battle
#--------------------------------------------------------------------------
# * Change Enemy Viewport, Set Enemy Sprite
#--------------------------------------------------------------------------
alias cbs_initialize initialize
def initialize
cbs_initialize
@enemy_sprites = []
for enemy in $game_troop.enemies.reverse
enemy.sprite = Sprite_Battler.new(@viewport2, enemy)
@enemy_sprites.push(enemy.sprite)
end
end
#--------------------------------------------------------------------------
# * Set Actor Sprite
#--------------------------------------------------------------------------
alias cbs_update update
def update
cbs_update
for sprite in @actor_sprites
if sprite.battler
sprite.battler.sprite = sprite
end
end
end
end

#================================================= =============================
# ** Arrow_Base
#================================================= =============================

class Arrow_Base < Sprite
#--------------------------------------------------------------------------
# * Reposition Arrows
#--------------------------------------------------------------------------
alias cbs_initialize initialize
def initialize(viewport)
cbs_initialize(viewport)
self.ox = 14 # 32
self.oy = 10 # 40
end
end
 
Um... that one's a 'First Gen' version before I took over. There's no support for 'stationary weapons' with this one.

Here's a patch to put below your copy to help out...

Code:
#==============================================================================
# ** Animated Battler (1st Gen) - Stationary Weapons patch
#------------------------------------------------------------------------------
#  This add-on was cranked out to make some weapons prevent movement.
#  Took five minutes. :)
#==============================================================================

MNK_STATIONARY_WEAPONS = [22]


#==============================================================================
# ** Sprite_Battler
#------------------------------------------------------------------------------
#  This sprite is used to display the battler.It observes the Game_Character
#  class and automatically changes sprite conditions.
#==============================================================================

class Sprite_Battler < RPG::Sprite 
  #--------------------------------------------------------------------------
  # * Set Movement
  #--------------------------------------------------------------------------
  def setmove(destination_x, destination_y)
    unless (@battler.is_a?(Game_Enemy) and @stationary_enemies) or
    (@battler.is_a?(Game_Actor) and @stationary_actors)
      unless MNK_STATIONARY_WEAPONS.include?(@battler.weapon_id)
        @original_x = @display_x
        @original_y = @display_y
        @destination_x = destination_x
        @destination_y = destination_y
      end
    end
  end
end

It may be a little more (okay... a LOT more) complex, but you may wanna try the new AnimBat version 10.
 
Well... look UP (as I edited the previous reply) for a quick fix for a 1st generation Minkoff script.

Or you can look in my Signature for a list of nearly all my script topics (including :D). It's generally in the first page of Submitted Scripts too and you can check out the FORUM SCRIPT LISTINGS topic for nearly any script in the forum.
 
Did you paste the patch in an empty slot BELOW animated battlers or did you try to edit/paste it INTO the Animated Battlers script? Editing it may have caused that problem.

It's meant to be pasted below Animated Battlers.
 
I paste it INTO the Animated Battlers script
#==============================================================================
# ** Animated Battler (1st Gen) - Stationary Weapons patch
#------------------------------------------------------------------------------
# This add-on was cranked out to make some weapons prevent movement.
# Took five minutes. :)
#==============================================================================

MNK_STATIONARY_WEAPONS = [22]


#==============================================================================
# ** Sprite_Battler
#------------------------------------------------------------------------------
# This sprite is used to display the battler.It observes the Game_Character
# class and automatically changes sprite conditions.
#==============================================================================

class Sprite_Battler < RPG::Sprite
#--------------------------------------------------------------------------
# * Set Movement
#--------------------------------------------------------------------------
def setmove(destination_x, destination_y)
unless (@battler.is_a?(Game_Enemy) and @stationary_enemies) or
(@battler.is_a?(Game_Actor) and @stationary_actors)
unless MNK_STATIONARY_WEAPONS.include?(@battler.weapon_id)
@original_x = @display_x
@original_y = @display_y
@destination_x = destination_x
@destination_y = destination_y
end
end
end
end




#--------------------------------------------------------------------------
# * Initialize
#--------------------------------------------------------------------------
alias cbs_initialize initialize
def initialize(viewport, battler = nil)
@speed = 7
@frames = 4
@poses = 10
@stationary_enemies = true
@stationary_actors = false
@calculate_speed = true
@phasing = true
@frame = 0
@pose = 0
@last_time = 0
@last_move_time = 0
cbs_initialize(viewport, battler)
viewport.z = 99
end
 
Status
Not open for further replies.

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