Quedada del ChatBox
Conectarse

Recuperar mi contraseña

Estadísticas
Tenemos 1463 miembros registrados.
El último usuario registrado es Zeth.

Nuestros miembros han publicado un total de 34417 mensajes. en 4465 argumentos.
Afiliados
Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Topic de screens
----------------------------------------
Navega con Firefox
[DESCARGA]

[RMXP]Ayuda con XAS HERO

 :: RPG Maker :: Ayuda RPG

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [RMXP]Ayuda con XAS HERO

Mensaje por ichcanziho el Vie Ene 27, 2012 3:51 am

Veran tengo una pequeña duda, esque no se si sea posibe implementar
el scipt de sombras en tiempo real de "angel of nightmar", es algo parecido
su nambre no estoy muy seguro, el caso esque para esta modifica el
sprite chara y tambien le da sombra, pero no se por que no se puede,
en el XAS HERO es como incompatible, pero se me hace algo muy tonto que no se
pueda poner ya que intente poner el script en otro sistema de batallas,
un poco mas feo que el XAS HERO pero casi es lo mismo, se llama
XMS-ABS, es identico, solo que este no tiene tantas armas, y no
entiendo como poner armas, es algo muy raro, en fin, si estos 2
sistemas de batalla son tan parecidos porque con el XAS HERO no
puedo poner el script y en el XMS-ABS si se puede, algo que tambien
me gustaria que me enseñasen, si se pudiera seria una guia del
XMS-ABS, si no no hay problma, gracias de antemano.

ichcanziho
Novato
Novato

0/3

Créditos 46


Volver arriba Ir abajo

RPG Maker XP Re: [RMXP]Ayuda con XAS HERO

Mensaje por Vientos Sagrados RPG el Vie Ene 27, 2012 3:34 pm

A ver... El script añade sombras variables o sombras inmobiles?
Si son inmobiles solo tendrías que editar tu el char del Xas y añadirselas (podrias hacer que el sprite cambiara al original en lugares con poca luz, donde no se vieran las sombras)

Vientos Sagrados RPG
Novato
Novato

0/3

Créditos 67


Volver arriba Ir abajo

RPG Maker XP Re: [RMXP]Ayuda con XAS HERO

Mensaje por ichcanziho el Vie Ene 27, 2012 5:40 pm

No las sombras son perfectas, se mueven junto con la chara y para mejor, se van desvaneciendo si te vas alejando, checa te dejo el script

Sprite_Shadow*
Spoiler:

#==============================================================================
# ¦ Sprit_Ombre (Sprite_Ombre )
# Based on Genzai Kawakami's shadows, dynamisme by Rataime, extra features Boushy
#==============================================================================

class Sprite_Shadow < RPG::Sprite

attr_accessor :character # ??????

def initialize(viewport, character = nil,source = nil,anglemin=0,anglemax=0,distancemax=0)
super(viewport)
@anglemin=anglemin.to_f
@anglemax=anglemax.to_f
@distancemax=distancemax.to_f
@character = character
@source = source
update
end

def update
super

if @tile_id != @character.tile_id or
@character_name != @character.character_name or
@character_hue != @character.character_hue
@tile_id = @character.tile_id
@character_name = @character.character_name
@character_hue = @character.character_hue
if @tile_id >= 384
self.bitmap = RPG::Cache.tile($game_map.tileset_name,
@tile_id, @character.character_hue)
self.src_rect.set(0, 0, 32, 32)
self.ox = 16
self.oy = 32
else
self.bitmap = RPG::Cache.character(@character.character_name,
@character.character_hue)
@cw = bitmap.width / 4
@ch = bitmap.height / 4
self.ox = @cw / 2
self.oy = @ch
end
end
self.visible = (not @character.transparent)
if @tile_id == 0
sx = @character.pattern * @cw
@direct=@character.direction

if self.angle>90 or angle<-90

if @direct== 6
sy = ( 4- 2) / 2 * @ch
end
if @direct== 4
sy = ( 6- 2) / 2 * @ch
end
if @direct != 4 and @direct !=6
sy = (@character.direction - 2) / 2 * @ch
end
else
sy = (@character.direction - 2) / 2 * @ch
end
self.src_rect.set(sx, sy, @cw, @ch)
end
self.x = @character.screen_x
self.y = @character.screen_y-5
self.z = @character.screen_z(@ch)-1
self.opacity = @character.opacity
self.blend_type = @character.blend_type
self.bush_depth = @character.bush_depth
if @character.animation_id != 0
animation = $data_animations[@character.animation_id]
animation(animation, true)
@character.animation_id = 0
end
@deltax=@source.x-self.x
@deltay= @source.y-self.y
self.angle = 57.3*Math.atan2(@deltax, @deltay )
@angle_trigo=self.angle+90
if @angle_trigo<0
@angle_trigo=360+@angle_trigo
end
self.color = Color.new(0, 0, 0)
@distance = ((@deltax ** 2) + (@deltay ** 2))
self.opacity = 1200000/(@distance+6000)
@distance = @distance ** 0.5
if @distancemax !=0 and @distance>=@distancemax
self.opacity=0
end
if @anglemin !=0 or @anglemax !=0
if (@angle_trigo<@anglemin or @angle_trigo>@anglemax) and @anglemin<@anglemax
self.opacity=0
end
if (@angle_trigo<@anglemin and @angle_trigo>@anglemax) and @anglemin>@anglemax
self.opacity=0
end
end
end
end


Sprite_Sun*
Spoiler:

#==============================================================================
# ¦ Sprite_Sun
# # Based on Sprite_Shadow, modified by Rataime
#==============================================================================

class Sprite_Sun < RPG::Sprite
attr_accessor :character

def initialize(viewport, character = nil, self_angle = 45,self_opacity = 128)
super(viewport)
@character = character
@self_angle=self_angle
@self_opacity=self_opacity
update
end

def update
super
if @tile_id != @character.tile_id or
@character_name != @character.character_name or
@character_hue != @character.character_hue
@tile_id = @character.tile_id
@character_name = @character.character_name
@character_hue = @character.character_hue
if @tile_id >= 384
self.bitmap = RPG::Cache.tile($game_map.tileset_name,
@tile_id, @character.character_hue)
self.src_rect.set(0, 0, 32, 32)
self.ox = 16
self.oy = 32
else
self.bitmap = RPG::Cache.character(@character.character_name,
@character.character_hue)
@cw = bitmap.width / 4
@ch = bitmap.height / 4
self.ox = @cw / 2
self.oy = @ch
end
end

self.visible = (not @character.transparent)

if @tile_id == 0
sx = @character.pattern * @cw
@direct=@character.direction

if self.angle>90 or angle<-90

if @direct== 6
sy = ( 4- 2) / 2 * @ch#@character.direction
end
if @direct== 4
sy = ( 6- 2) / 2 * @ch
end
if @direct != 4 and @direct !=6
sy = (@character.direction - 2) / 2 * @ch
end
else
sy = (@character.direction - 2) / 2 * @ch
end
self.src_rect.set(sx, sy, @cw, @ch)
end
self.x = @character.screen_x
self.y = @character.screen_y-5
self.z = @character.screen_z(@ch)-1
self.opacity = @character.opacity
self.blend_type = @character.blend_type
self.bush_depth = @character.bush_depth
if @character.animation_id != 0
animation = $data_animations[@character.animation_id]
animation(animation, true)
@character.animation_id = 0
end
self.angle = @self_angle-90
self.color = Color.new(0, 0, 0)
self.opacity = @self_opacity
end
end


Esos van encima de main.

ahora remplaza
Sprite_Character de rmxp por este otro

Sprite_Character*
Spoiler:

#==============================================================================
# ¦ Sprite_Character modifié (See Sprite_Shadow and Sprite_Sun)
#==============================================================================

class Sprite_Character < RPG::Sprite

attr_accessor :character

def initialize(viewport, character = nil)
super(viewport)
@character = character
#------Sun edit----------
@sunlist=[]
if (character.is_a?(Game_Event) and character.list!=nil and character.list[0].code == 108 and character.list[0].parameters == ["sun"])
if (character.list[1]!=nil and character.list[1].code == 108)
@self_angle=character.list[1].parameters[0]
else
@self_angle=45
end
if (character.list[2]!=nil and character.list[2].code == 108)
@self_opacity=character.list[2].parameters[0]
else
@self_opacity=128
end
for i in $game_map.events.keys.sort
if ($game_map.events[i].is_a?(Game_Event) and $game_map.events[i].list!=nil and $game_map.events[i].list[0].code == 108 and $game_map.events[i].list[0].parameters == ["o"])
@sunlist[i+1] = Sprite_Sun.new(viewport, $game_map.events[i],@self_angle,@self_opacity)
end
end
@sunlist[1] = Sprite_Sun.new(viewport, $game_player,@self_angle,@self_opacity)
end
#------/Sun edit----------
#------Shadows edit---------
@ombrelist=[]
if (character.is_a?(Game_Event) and character.list!=nil and character.list[0].code == 108 and character.list[0].parameters == ["s"])
if (character.list[1]!=nil and character.list[1].code == 108)
@anglemin=character.list[1].parameters[0]
end
if (character.list[2]!=nil and character.list[2].code == 108)
@anglemax=character.list[2].parameters[0]
end
if (character.list[3]!=nil and character.list[3].code == 108)
@distancemax=character.list[3].parameters[0]
end
for i in $game_map.events.keys.sort
if ($game_map.events[i].is_a?(Game_Event) and $game_map.events[i].list!=nil and $game_map.events[i].list[0].code == 108 and $game_map.events[i].list[0].parameters == ["o"])
@ombrelist[i+1] = Sprite_Shadow.new(viewport, $game_map.events[i],self,@anglemin,@anglemax,@distancemax)
end
end
@ombrelist[1] = Sprite_Shadow.new(viewport, $game_player,self,@anglemin,@anglemax,@distancemax)
end
#------/Shadows edit----------
update
end

def update
super
if @tile_id != @character.tile_id or
@character_name != @character.character_name or
@character_hue != @character.character_hue
@tile_id = @character.tile_id
@character_name = @character.character_name
@character_hue = @character.character_hue
if @tile_id >= 384
self.bitmap = RPG::Cache.tile($game_map.tileset_name,
@tile_id, @character.character_hue)
self.src_rect.set(0, 0, 32, 32)
self.ox = 16
self.oy = 32
else
self.bitmap = RPG::Cache.character(@character.character_name,
@character.character_hue)
@cw = bitmap.width / 4
@ch = bitmap.height / 4
self.ox = @cw / 2
self.oy = @ch
end
end
self.visible = (not @character.transparent)
if @tile_id == 0
sx = @character.pattern * @cw
sy = (@character.direction - 2) / 2 * @ch
self.src_rect.set(sx, sy, @cw, @ch)
end
self.x = @character.screen_x
self.y = @character.screen_y
self.z = @character.screen_z(@ch)
self.opacity = @character.opacity
self.blend_type = @character.blend_type
self.bush_depth = @character.bush_depth
if @character.animation_id != 0
animation = $data_animations[@character.animation_id]
animation(animation, true)
@character.animation_id = 0
end
#------Shadows edit----------
if @ombrelist!=[]
for i in 1..@ombrelist.size
if @ombrelist[i]!=nil
@ombrelist[i].update
end
end
end
#------/Shadows edit----------
#------Shadows edit----------
if @sunlist!=[]
for i in 1..@sunlist.size
if @sunlist[i]!=nil
@sunlist[i].update
end
end
end
#------/Shadows edit----------
end
end

ichcanziho
Novato
Novato

0/3

Créditos 46


Volver arriba Ir abajo

RPG Maker XP Re: [RMXP]Ayuda con XAS HERO

Mensaje por Vientos Sagrados RPG el Vie Ene 27, 2012 6:04 pm

Ok lo probare en mi proyecto y luego veré si puedo arreglar lo del XAS o al menos decir las incompatiblidades (donde están).

Vientos Sagrados RPG
Novato
Novato

0/3

Créditos 67


Volver arriba Ir abajo

RPG Maker XP Re: [RMXP]Ayuda con XAS HERO

Mensaje por elisamuelps el Sáb Ene 28, 2012 12:12 am

yo sufri del mismo problema ;) y dejame decirte algo, pero es un poquito complejo hacer que sean compatibles, estuve probando varias versiones de sprite shadow para xas, y la verdad es que cuando tu matas a un mounstro la sombra no desaparece y eso se debe a la frecuencia con que el script actualiza, en fin te paso la versión que uso en mi juego, trata de no abusar mucho de ella por que causa demasiada lag y es la unica version que es compatible con xas hero
Código:
#==============================================================================
# ** Dynamic Shadows
#------------------------------------------------------------------------------
# Rataime
# Version 4.0
# 06/05/2007 (2007-05-06)
# Version 1.0 was based on Genzai Kawakami's shadows, extra features Boushy
#==============================================================================

#==============================================================================
# Here's the brand new free configuration feature
# The comments will be compared to the pattern using Regexp, except that I did
# the entire work for you, so you don't have to know regexps at all.
# Just choose the trigger ('s', 'begin shadow' or whatever), and the pattern
# The pattern can be one line or a list to use multiple comment lines.
# arg1 is the minimum angle
# arg2 is the maximum angle
# arg3 is the maximum distance
# The only thing you must do is using 'trigger' before the arguments
# Examples :
#
# SHADOWS_SOURCE_COMMENT_TRIGGER = 's'
# SHADOWS_SOURCE_COMMENT_PATTERN = ['trigger','arg1','arg2','arg3']
# SHADOWS_CHAR_COMMENT_TRIGGER = 'o'
# SHADOWS_CHAR_COMMENT_PATTERN = 'trigger'
# is the old way to use shadows, with a single 's' in the first line, and the
# arguments in following lines
#
# SHADOWS_SOURCE_COMMENT_TRIGGER = 'begin shadow source'
# SHADOWS_SOURCE_COMMENT_PATTERN =
# ['trigger','anglemin arg1','anglemax arg2','distancemax arg3']
# SHADOWS_CHAR_COMMENT_TRIGGER = 'begin shadow'
# SHADOWS_CHAR_COMMENT_PATTERN = 'trigger'
# will work with :
# Comment "begin shadow source"
# Comment "anglemin 0"
# Comment "anglemax 0"
# Comment "distancemax 250"
#
# Take the time to choose something you like, and something compatible with other
# scripts.
# Note that the comments will be detected even if they aren't in the beginning
# of the event's action list. Ah, and you can switch the arguments if you like
#==============================================================================

#==============================================================================
# Here is the method I like best, because of its compatibility with other
# scripts. But don't hesitate to change it.
# It will react to something like Shadow|0|0|250
#==============================================================================

 SHADOWS_SOURCE_COMMENT_TRIGGER = 'begin shadow source'
 SHADOWS_SOURCE_COMMENT_PATTERN =
 ['trigger','anglemin arg1','anglemax arg2','distancemax arg3']
 SHADOWS_CHAR_COMMENT_TRIGGER = 'begin shadow'
 SHADOWS_CHAR_COMMENT_PATTERN = 'trigger'


#==============================================================================
# An important option : if you set it to true, the shadows will get longer if
# you are far from the source. Nice, but induces lag : it will eat your CPU,
# and quite possibly your first born if you try that on a big map.
#==============================================================================
 
 SHADOW_GETS_LONGER = true

#==============================================================================
# Misc options
# If an event has its opacity below SHADOWS_OPACITY_THRESHOLD, no shadow will
# be displayed.
# Set SHADOWS_CATERPILLAR_COMPATIBLE to true if you uses the caterpillar script
#==============================================================================

 SHADOWS_OPACITY_THRESHOLD = 10
 SHADOWS_CATERPILLAR_COMPATIBLE = false

#==============================================================================
# You probably won't need to touch this : it's the 'map' of how to display the
# shadow depending on the event's direction and his relative position to the
# source. a minus means the shadow is mirrored. It seems complex, and it is.
# Complain to Enterbrain (why didn't they use something clockwise or counter-
# clockwise ? I suspect it's because of the rm2k legacy. More explanations
# below.
#==============================================================================

SHADOWS_DIRECTION_ARRAY = Array.new
SHADOWS_DIRECTION_ARRAY[2] = [ -3, 4, -2, 1 ]
SHADOWS_DIRECTION_ARRAY[4] = [ 4, -2, 1, -3 ]
SHADOWS_DIRECTION_ARRAY[6] = [ 1, -3, 4, -2 ]
SHADOWS_DIRECTION_ARRAY[8] = [ -2, 1, -3, 4 ]

#==============================================================================
# ** Game_Party, for compatibility with the caterpillar script.
#==============================================================================

class Game_Party
  attr_reader :characters
end
 
#==============================================================================
# ** Sprite_Shadow, the meat of this script
#==============================================================================

class Sprite_Shadow < RPG::Sprite

  attr_accessor :character
  #--------------------------------------------------------------------------
  # * Initialize
  #--------------------------------------------------------------------------
  def initialize(viewport, character = nil,source = nil,anglemin=0, \
                anglemax=0,distancemax=700)
    super(viewport)
    @anglemin=anglemin.to_f
    @anglemax=anglemax.to_f
    @distancemax=distancemax.to_f
    @character = character
    @source = source
    self.color = Color.new(0, 0, 0)
    update
  end
 
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    if @character.transparent or @character.opacity <= SHADOWS_OPACITY_THRESHOLD
      self.visible = false
      return
    end
    @deltax=(@source.real_x-@character.real_x)/4
    @deltay= (@source.real_y-@character.real_y)/4
    @distance = (((@deltax ** 2) + (@deltay ** 2))** 0.5)
    if @distancemax !=0 and @distance>@distancemax
      self.visible = false
      return
    end
    self.angle = 57.3*Math.atan2(@deltax, @deltay )
    @angle_trigo= (self.angle+90) % 360
    if @anglemin !=0 or @anglemax !=0
      if (@angle_trigo<@anglemin or @angle_trigo>@anglemax) and \
          @anglemin<@anglemax
        self.visible = false
        return
      elsif (@angle_trigo<@anglemin and @angle_trigo>@anglemax) and \
            @anglemin>@anglemax
        self.visible = false
        return
      end   
    end
    super
    if @tile_id != @character.tile_id or
      @character_name != @character.character_name or
      @character_hue != @character.character_hue
      @tile_id = @character.tile_id
      @character_name = @character.character_name
      @character_hue = @character.character_hue
      if @tile_id >= 384
        self.bitmap = RPG::Cache.tile($game_map.tileset_name,
        @tile_id, @character.character_hue)
        self.src_rect.set(0, 0, 32, 32)
        self.ox = 16
        self.oy = 32
      else
        self.bitmap = RPG::Cache.character(@character.character_name,
          @character.character_hue)
        @cw = bitmap.width / 4
        @ch = bitmap.height / 4
        self.ox = @cw / 2
        self.oy = @ch
      end
    end
    self.visible = true
    self.x = @character.screen_x
    self.y = @character.screen_y-8
    self.z = @character.screen_z(@ch)-1
    if @tile_id == 0
      sx = @character.pattern * @cw
      quarter = ((@angle_trigo/90+0.5).floor)%4
      # The quarter is the position of the event relative to the source.
      # Imagine the source is the o point (0,0). Trace the 2 lines
      # y=x and y=-x : you get something like a big X
      # On the right, quarter=0. Up, quarter = 1, and so on
      # Take the @character.direction row (2,4,6,8), and the quarter
      # column (0,1,2,3) (remember, it starts at 0), and you'll get
      # a number between 1 and 4. It correspond to the row of the charset
      # the shadow will be, and mirrored if negative.
      # Yes, it isn't obvious, but I didn't find any simple operation to
      # get those.
      magic = SHADOWS_DIRECTION_ARRAY[@character.direction][quarter]
      magic = -magic
      if magic < 0
        self.mirror = true
        magic = -magic
      else
        self.mirror = false
      end
      sy = (magic-1)*@ch
      self.src_rect.set(sx, sy, @cw, @ch)
    end
    # This is the formula of the opacity in function of the distance
    # ** 2 means square
    self.opacity = 1200/((@distance ** 2)/ 1000 + 6)
    # This is the formula of the size in function of the distance
    # The 0.75 is here so you have a size of 1:1 when next to the source.
    self.zoom_y=0.75 + @distance / 256 if SHADOW_GETS_LONGER
  end
 
end

#======================================================================
# ** Sprite_Character EDIT
#======================================================================
#    All those things could go somewhere else, but they
#    work quite well here.
#======================================================================

class Sprite_Character < RPG::Sprite
 
  @@regexp_source = nil
  @@regexp_source_short = nil
  @@regexp_char = nil
  @@regexp_char_short = nil
 
  alias rataime_shadow_initialize initialize
 
  #--------------------------------------------------------------------------
  # * Initialize
  #--------------------------------------------------------------------------
  def initialize(viewport, character = nil)
   
    if @@regexp_source == nil
      regexp_initialize
    end
    @character = character
    super(viewport)
    @ombrelist=[]
    if (character.is_a?(Game_Event) and character.list!=nil)
      # Let's check the comments in our event list
      for j_list in 0..character.list.size-1
        #p [@@regexp_source_short, character.list[j_list].parameters[0]]
        if (character.list[j_list].code == 108 and \
            @@regexp_source_short.match(character.list[j_list].parameters[0])!= nil)
          # Haha ! We found a trigger tag ! Time to retrieve the parameters !
          parameter_string = character.list[j_list].parameters[0]
          j_list += 1
          while j_list < character.list.size and \
                (character.list[j_list].code == 108 or \
                character.list[j_list].code == 408)
            parameter_string = parameter_string + "\n" + \
                              character.list[j_list].parameters[0]
            j_list += 1
          end
          # The following line is a nifty piece of code. Really.
          @anglemin,@anglemax,@distancemax = \
          (regexp_get_parameters(parameter_string, true)+[nil]*3)[0..2]
          # We have our source parameters. Let's find which events we should
          # make have a shadow
          for i in $game_map.events.keys.sort
            if ($game_map.events[i].is_a?(Game_Event) and \
                $game_map.events[i].list!=nil)
              for i_list in 0..$game_map.events[i].list.size-1 
                if (($game_map.events[i].list[i_list].code == 108 or \
                    $game_map.events[i].list[i_list].code == 408 )and \
                    @@regexp_char_short.match( \
                      $game_map.events[i].list[i_list].parameters[0])!= nil)
                  @ombrelist[i+1] = Sprite_Shadow.new(viewport, $game_map.events[i],\
                                              self,@anglemin,@anglemax,@distancemax)
                  break # no need to add more than one shadow per source per event
                end
              end # end for                               
            end                               
          end # end for
          @ombrelist[1] = Sprite_Shadow.new(viewport, $game_player,self,@anglemin,\
                                            @anglemax,@distancemax)
          #===================================================
          # Compatibility with fukuyama's caterpillar script
          #===================================================
          if SHADOWS_CATERPILLAR_COMPATIBLE and $game_party.characters!=nil
         
            for member in $game_party.characters
              @ombrelist.push(Sprite_Shadow.new(viewport, member,self,@anglemin,\
                                                @anglemax,@distancemax))
            end
         
          end
          #===================================================
          # End of the compatibility
          #===================================================
        end
        break # We don't need to go further in the source's list
      end # end for
    end
    rataime_shadow_initialize(viewport, @character)
  end
 
  alias rataime_shadow_update update
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    rataime_shadow_update
    if @ombrelist!=[]
      for i in 1..@ombrelist.size
        if @ombrelist[i]!=nil
          @ombrelist[i].update
        end
      end
    end
  end 
 
  #--------------------------------------------------------------------------
  # * Real_x : it just returns the character's real_x
  #--------------------------------------------------------------------------
  def real_x
    return @character.real_x
  end
 
  #--------------------------------------------------------------------------
  # * Real_y : it just returns the character's real_y
  #--------------------------------------------------------------------------
  def real_y
    return @character.real_y
  end
 
  #--------------------------------------------------------------------------
  # * regexp_initialize : the brand new configuration function
  #  This function generate the regexps based on the configuration
  #--------------------------------------------------------------------------
  def regexp_initialize
    @@regexp_source = regexp_generate(true)
    @@regexp_char = regexp_generate(false)
    @@regexp_source_short = @@regexp_source
    @@regexp_char_short = @@regexp_char
    if SHADOWS_SOURCE_COMMENT_PATTERN.is_a?(Array)
      @@regexp_source_short = regexp_generate_short(@@regexp_source)
    end
    if SHADOWS_CHAR_COMMENT_PATTERN.is_a?(Array)
      @@regexp_char_short = regexp_generate_short(@@regexp_char)
    end
  end
  #--------------------------------------------------------------------------
  # * regexp_generate generate a full length regexp including the arguments
  #  detection.
  #--------------------------------------------------------------------------
  def regexp_generate(source = false)
    if source
      pattern = SHADOWS_SOURCE_COMMENT_PATTERN
      trigger = SHADOWS_SOURCE_COMMENT_TRIGGER
      @@argument_indexes_source = []
      indexes = @@argument_indexes_source
    else
      pattern = SHADOWS_CHAR_COMMENT_PATTERN
      trigger = SHADOWS_CHAR_COMMENT_TRIGGER
      @@argument_indexes_char = []
      indexes = @@argument_indexes_char
    end
    if pattern.is_a?(Array)
      string = Regexp.escape(pattern.join("\n"))
    else
      string = Regexp.escape(pattern)
    end
    string = string.gsub('trigger',')('+trigger+')(')
    splitted = string.split('arg')
    regexp = '\A(' + splitted[0] + '(\d+)){0,1}'
    for i in 1..splitted.size-1
      if splitted[i][0..0].to_i == 0
        p 'Error : You probably forgot a digit after an arg'
        raise
      else
        indexes.push(splitted[i][0..0].to_i)
        regexp = regexp + '(' + splitted[i][1..splitted[i].size-1] + '(\d+)){0,1}'
      end
    end
    return Regexp.new(regexp.chomp('(\d+)){0,1}') + ')')
  end
  #--------------------------------------------------------------------------
  # * Will return a shorter regexp, but still able to identify the trigger
  #--------------------------------------------------------------------------
  def regexp_generate_short(regexp)
    string = regexp.inspect
    string = string.split('\n')[0]
    string = string[1..string.size-2]
    return Regexp.new(string)
  end
  #--------------------------------------------------------------------------
  # * regexp_get_parameters is called whenever a trigger has been identify,
  #  and the script wants to know the arguments. It returns an array in the
  #  right orger [arg1,arg2,arg3]
  #--------------------------------------------------------------------------
  def regexp_get_parameters(string, source = false)
    if source
      regexp = @@regexp_source
      indexes = @@argument_indexes_source.dup
    else
      regexp = @@regexp_char
      indexes = @@argument_indexes_char.dup
    end
    indexes = indexes.reverse!
    match_array = regexp.match(string).captures
    return_array = Array.new
    if match_array.size > 3
      for i in 2..match_array.size-1
        if ((i.to_f/2).ceil)*2 != i and match_array[i]!=nil
          return_array[indexes.pop-1] = match_array[i]
        end
      end
    end
    return return_array
  end
 
end

las instrucciones estan arriba del script
espero que te sirva :D

elisamuelps
Soñador
Soñador

0/3

Créditos 91


Volver arriba Ir abajo

RPG Maker XP Re: [RMXP]Ayuda con XAS HERO

Mensaje por ichcanziho el Sáb Ene 28, 2012 4:36 am

Disculpa mi gran ignorancia, pero tengo un par de dudas,

1 como hago para que el personaje tenga sombra, que la genera, osea como hago
para que algo genere la luz y le de a este sombra.

2 Que comando pongo para crear la sombra de un enemigo

3 Tengo que modificar algun otro script.

veras el script me corre bien y no me causa ningun error, pero no me hace ningun cambio en el juego.

P.D estoy usando la version 3.8 del has hero, no se si sirva de algo decirtelo pero
por si las moscas

ichcanziho
Novato
Novato

0/3

Créditos 46


Volver arriba Ir abajo

RPG Maker XP Re: [RMXP]Ayuda con XAS HERO

Mensaje por elisamuelps el Sáb Ene 28, 2012 7:43 am

hahhahahahaha se nota que no leistes las instrucciones del script ;)
no necesitas modificar nada y es la mejor version del script :P
creas una nota y pones
begin shadow source "para que un objeto genere sombras"
begin shadow "para que un objeto reciba sombra de una source"

y si lees el script hay una linea que dice:
# Comment "begin shadow source"
# Comment "anglemin 0"
# Comment "anglemax 0"
# Comment "distancemax 250"
ahi estan las instrucciones ;)

OJO no te olvides del anglemin y max y del distancemax para que cambies la forma en que una sombra se muestra, ya eso es gusto personal

Edito: hay un problema con el xas, cuando tu pones el comentario para que un enemigo genere sombras y atacas a 1 tile cerca del enemigo el personaje no atacara, para solucionarlo lo mejor que pude hacer fue poner a los enemigos con sombra que al pulsar aceptar mover evento(este evento) retroceder un paso
y listo! lo empujas hacia atras cuando estes muy cerca y lo atacas despues

elisamuelps
Soñador
Soñador

0/3

Créditos 91


Volver arriba Ir abajo

RPG Maker XP Re: [RMXP]Ayuda con XAS HERO

Mensaje por ichcanziho el Dom Ene 29, 2012 1:22 am

Esque no puedo, me desespera que tu amablemente me ayudes y siga como un asno sin poder hacerlo, hago exactamente todo lo que me dices, pero no genero ninguna sombra, pongo un evento, en este caso fuego por ejemplo, lo pongo como nota lo siguiente:

begin shadow source
anglemin 60
anglemax 70
distancemax 250


y no pasa nada, tambein intente solo ponerle

begin shadow source


para generar la sombra de un objeto en este caso un personaje X
le pongo como notas



begin shadow


ichcanziho
Novato
Novato

0/3

Créditos 46


Volver arriba Ir abajo

RPG Maker XP Re: [RMXP]Ayuda con XAS HERO

Mensaje por elisamuelps el Dom Ene 29, 2012 6:16 am

que extraño D: lo acabo de probar en el mio y funciona... bueno te paso una screenshoot a ver si lo estas haciendo bien, a mi me funciona, prueba a ver y asegurate que el comentario este en la primera linea y uno por uno separado (ojo lo demas despues del script de sombras lo hize yo a mi gusto lo que quiero es que veas las primeras lineas :P



asegurate tambien de poner el script debajo del xas antes de los add-ons por que tambien esto causa otros problemas :P

edito: disculpame ahorita me acabo de acordar que edite el script de xas para que pudiera funcionar, sucede que las nuevas funciones no trabajan con el sprite shadow has esto vete al editor de scripts y ve a el que dice xas sprite y remplaza lo que tienes con esto:
Código:
# ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
#===============================================================================
# CT METER / SCENE TARGET / SPRITE SYSTEM / ANTI LAG
#===============================================================================
# ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■


#==============================================================================
# ■ Action_Meter_Sprite (CT METER)
#==============================================================================
class Action_Meter_Sprite < Sprite 
  #--------------------------------------------------------------------------
  # * initialize
  #--------------------------------------------------------------------------
  def initialize
    super
    @actor = $game_party.actors[0] 
    hud_size_x =  XAS_HUD::CT_SIZE_X
    hud_size_y =  XAS_HUD::CT_SIZE_Y
    @oc_range_x = hud_size_x + XAS_HUD::WINDOW_CT_X
    @oc_range_y = hud_size_y + XAS_HUD::WINDOW_CT_Y   
    #Action Meter--------------------------------------
    @meter_flow = 0
    @meter_image = RPG::Cache.windowskin("CT_Meter")
    @meter_bitmap = Bitmap.new(@meter_image.width,@meter_image.height)
    @meter_range = @meter_image.width / 3
    @meter_width = @meter_range  * $game_system.action_meter / 100
    @meter_height = @meter_image.height / 4
    @meter_width_old = @meter_width
    @meter_src_rect = Rect.new(@meter_range, 0, @meter_width, @meter_height)
    @meter_bitmap.blt(0,0, @meter_image, @meter_src_rect)
    @meter_sprite = Sprite.new
    @meter_sprite.bitmap = @meter_bitmap
    @meter_sprite.z = 5008
    @meter_sprite.x =  XAS_HUD::WINDOW_CT_X
    @meter_sprite.y =  XAS_HUD::WINDOW_CT_Y
    meter_flow_update
    @borde2_sprite = Sprite.new
    @borde2_sprite.bitmap = RPG::Cache.windowskin("CT_Layout")
    @borde2_x  = 0
    @borde2_y  = 0
    @borde2_z = 9998
    @borde2_opacity = 255
    #Number --------------------------------------
    @number_image = RPG::Cache.windowskin("CT_Number")
    @number_bitmap = Bitmap.new(@number_image.width, @number_image.height)
    @number_sprite = Sprite.new
    @number_sprite.bitmap = @number_bitmap
    @number_sprite.z = 5009
    @number_sprite.x =  XAS_HUD::WINDOW_CT_X
    @number_sprite.y =  XAS_HUD::WINDOW_CT_Y
    @number_cw = @number_image.width / 10
    @number_ch = @number_image.height / 7   
    if $game_temp.cast_time > 0
      number = $game_temp.cast_time / 10
      number_y = @number_ch * 2
      number_sup_y = @number_ch * 4   
    elsif $game_temp.xas_charge_time > 5
      number = $game_temp.xas_charge_time.truncate
      number_y = @number_ch * 2
      number_sup_y = @number_ch * 3     
    else
      number = $game_system.action_meter
      if $game_system.action_meter <= XAS::DASH_ACTIVE_PERC
      number_y = @number_ch * 1
      else
      number_y = @number_ch * 0
      end
      number_sup_y = @number_ch * 5       
    end   
    @number_text = number.abs.to_s.split(//)
    for r in 0..@number_text.size - 1
      @number_abs = @number_text[r].to_i
      @number_src_rect = Rect.new(@number_cw * @number_abs, number_y, @number_cw, @number_ch)
      @number_bitmap.blt(((@number_cw - 10) *  r), 0, @number_image, @number_src_rect)       
      @number_src_rect = Rect.new(0, number_sup_y, @number_image.width, @number_ch)
      @number_bitmap.blt(-55, -2, @number_image, @number_src_rect)       
    end 
  #HUD Visible---------------------------------------------------------------- 
  visible_update
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
      #@meter Dispose
      @meter_image.dispose
      @meter_sprite.bitmap.dispose
      @meter_sprite.bitmap = nil
      @meter_sprite.dispose
      @meter_sprite = nil 
      @meter_bitmap.dispose
      @meter_bitmap = nil
      @borde2_sprite.bitmap.dispose
      @borde2_sprite.dispose
      #Text Dispose
      @number_image.dispose
      @number_sprite.bitmap.dispose
      @number_sprite.bitmap = nil
      @number_sprite.dispose
      @number_sprite = nil 
      @number_bitmap.dispose
      @number_bitmap = nil
  end
 
  #--------------------------------------------------------------------------
  # * update
  #--------------------------------------------------------------------------
  def update
    meter_flow_update
    number_update
    visible_update   
    fade_update
  end
 
  #--------------------------------------------------------------------------
  # * fade_update
  #--------------------------------------------------------------------------
  def fade_update
      if XAS_HUD::FADE == true
      x = ($game_player.real_x - $game_map.display_x) / 4
      y = ($game_player.real_y - $game_map.display_y) / 4
      if x < @oc_range_x and x > XAS_HUD::WINDOW_CT_X - 5 and
        y > XAS_HUD::WINDOW_CT_Y - 10 and y < @oc_range_y and
            @meter_sprite.opacity > 120
      @meter_sprite.opacity -= 10
      @number_sprite.opacity -= 10
      @borde2_sprite.opacity -= 10
      elsif @meter_sprite.opacity < 255
        @meter_sprite.opacity += 10
        @number_sprite.opacity += 10
        @borde2_sprite.opacity += 10
      end
    end 
  end
 
  #--------------------------------------------------------------------------
  # * visible_update
  #--------------------------------------------------------------------------
  def visible_update
      if $game_switches[XAS_HUD::DISABLE_HUD_SWITCH] or
        $game_switches[XAS::CT_DISABLE_SWITCH]   
        ct_visible = false
      else
        ct_visible = true
      end 
      @meter_sprite.visible = ct_visible
      @number_sprite.visible = ct_visible
      @borde2_sprite.visible = ct_visible
  end 
 
  #--------------------------------------------------------------------------
  # * Number Update
  #--------------------------------------------------------------------------
  def number_update
    @number_sprite.bitmap.clear
    if $game_temp.cast_time > 0
      number = $game_temp.cast_time / 10
      number_y = @number_ch * 2
      number_sup_y = @number_ch * 4   
    elsif $game_temp.xas_charge_time > 5
      number = $game_temp.xas_charge_time.truncate
      number_y = @number_ch * 2
      number_sup_y = @number_ch * 3 
    elsif $game_temp.shield_active == true
      number = $game_system.action_meter
      number_y = @number_ch * 2
      number_sup_y = @number_ch * 6       
    else
      number = $game_system.action_meter
      if $game_system.action_meter <= XAS::DASH_ACTIVE_PERC
      number_y = @number_ch * 1
      else
      number_y = @number_ch * 0
      end
      number_sup_y = @number_ch * 5       
    end   
    @number_text = number.abs.to_s.split(//)
    for r in 0..@number_text.size - 1
      @number_abs = @number_text[r].to_i
      @number_src_rect = Rect.new(@number_cw * @number_abs, number_y, @number_cw, @number_ch)
      @number_bitmap.blt(((@number_cw - 10) *  r), 0, @number_image, @number_src_rect)       
      @number_src_rect = Rect.new(0, number_sup_y, @number_image.width, @number_ch)
      @number_bitmap.blt(-55, -2, @number_image, @number_src_rect)       
    end   
  end
 
  #--------------------------------------------------------------------------
  # *  meter_flow_update
  #--------------------------------------------------------------------------
  def meter_flow_update
      @meter_sprite.bitmap.clear     
      @meter_src_rect = Rect.new(0, @meter_height * 3, @meter_image.width / 3, @meter_height)
      @meter_bitmap.blt(0,0, @meter_image, @meter_src_rect)
        if $game_temp.cast_time > 0
          meter_max = Database_Bullet::PLAYER_CAST_TIME[$game_temp.cast_skill_id] * 10
          meter_now = $game_temp.cast_time
          mc_y = @meter_height
        elsif $game_temp.xas_charge_time > 5 
          meter_max = 100
          meter_now = $game_temp.xas_charge_time
          if $game_temp.xas_charge_time.truncate >= 100
              mc_y = @meter_height
          else
              mc_y = @meter_height * 2       
          end
        else
          meter_max = 100
          meter_now = $game_system.action_meter
            if $game_system.action_meter <= XAS::DASH_ACTIVE_PERC
            mc_y = @meter_height
            else 
            mc_y = 0
            end
        end         
      @meter_width = @meter_range  * meter_now / meter_max       
      @meter_src_rect = Rect.new(@meter_flow, mc_y, @meter_width, @meter_height)
      @meter_bitmap.blt(0,0, @meter_image, @meter_src_rect)
      @meter_flow += 5 
      if @meter_flow >= @meter_image.width - @meter_range
        @meter_flow = 0 
      end
    end
end
#-------------------------------------------------------------------------------
# ■ Scene_Map
#-------------------------------------------------------------------------------
class Scene_Map 
  alias ct_main main
  def main
      @ctmeter = Action_Meter_Sprite.new
    ct_main 
      @ctmeter.dispose
  end 
  alias ct_update update
  def update
    ct_update
    @ctmeter.update
  end 
end





# ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
#===============================================================================
# SCENE TARGET
#===============================================================================
# ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■




#==============================================================================
# ■ Game_Temp
#==============================================================================
class Game_Temp
      attr_accessor :xas_target_x
      attr_accessor :xas_target_y
      attr_accessor :xas_target_time
      attr_accessor :xas_target_shoot_id
     
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
  alias xas_target_initialize initialize
  def initialize
      xas_target_initialize
      @xas_target_x = 0
      @xas_target_y = 0
      @xas_target_time = 0
      @xas_target_shoot_id = 0
  end   
       
end

#==============================================================================
# ■ Game_Map
#==============================================================================
class Game_Map

 #--------------------------------------------------------------------------
 # ● target_range
 #--------------------------------------------------------------------------
 def battler_in_range?(event)
    event.target = false
    sensor_range = -1
    px = ($game_map.display_x / 128).truncate
    py = ($game_map.display_y / 128).truncate   
    distance_x = (px - (event.x - 10)).abs
    distance_y = (py - (event.y - 7)).abs
    return true if distance_x >= sensor_range + 11
    return true if distance_y >= sensor_range + 9 
    event.target = true
    return false
 end     
 
 #--------------------------------------------------------------------------
 # ● check_battler_on_map
 #--------------------------------------------------------------------------
 def check_battler_on_map
      for i in $game_map.events.values
            battler_in_range?(i)
      end 
  end
 
end 
#==============================================================================
# ■ Scene Target Select
#==============================================================================
class Scene_Target_Select
 
  #--------------------------------------------------------------------------
  # ● Main
  #--------------------------------------------------------------------------       
  def main   
      $game_temp.xas_target_x = 0
      $game_temp.xas_target_y = 0     
      $game_temp.xas_target_time = 0
      @new_x = $game_player.screen_x
      @new_y = $game_player.screen_y
      @index_max = -1
      @target_index = 0 
      @spriteset = Spriteset_Map.new
      @text_string = ""
      @fy = 0
      @fy_time = 0
      for event in $game_map.events.values
        if event.target and event.battler and not (event.dead? or event.erased or event.battler.e_object)
          @index_max += 1
        end 
      end 
      $game_system.se_play($data_system.equip_se)
      if @index_max == -1
        cancel_select
      else
        create_layout
        create_layout_skill
        create_cusrsor
        create_text     
        create_skill_name
        select_target(0)
      end
      Graphics.transition
      loop do
          Graphics.update
          Input.update
          update
          break if $scene != self
      end
      dispose
 end 
  #--------------------------------------------------------------------------
  # ● Create Layout
  #--------------------------------------------------------------------------     
  def create_layout
      @layout_1 = Plane.new
      @layout_1.bitmap = RPG::Cache.windowskin("XAS_Target_Layout1")
      @layout_1.z = 9998
      @layout_1.opacity = 255
  end 
 
 #--------------------------------------------------------------------------
 # ● Create Layout
 #--------------------------------------------------------------------------     
 def create_layout_skill
    @skill_layout = Sprite.new
    @skill_layout.bitmap = RPG::Cache.windowskin("XAS_Active_Help")
    @skill_layout.z = 10001
    @skill_layout.x = -100   
    @skill_layout.y = 32
    @skill_layout.opacity = 0
 end
   
 #--------------------------------------------------------------------------
 # ● Create Cursor
 #--------------------------------------------------------------------------           
 def create_cusrsor
    @cursor = Sprite.new
    @cursor.bitmap = RPG::Cache.windowskin("Cursor")
    @cursor.z = 9999
    @cursor.x = @new_x
    @cursor.y = @new_y
    @cursor.opacity = 255
    @cursor.visible = true
 end
 
 #--------------------------------------------------------------------------
 # ● Create Text
 #--------------------------------------------------------------------------   
 def create_text
    @text = Sprite.new
    @text.bitmap = Bitmap.new(200,40)
    @text.z = 10000
    @text.bitmap.font.size = 20
    @text.bitmap.font.bold = true
    @text.bitmap.font.name = "Georgia" 
    @text.bitmap.draw_hemming_text(0, 0, 200, 40, @text.to_s,1)
    @text.opacity = 255
    @text.x = @new_x
    @text.y = @new_y   
 end
 
 #--------------------------------------------------------------------------
 # ● Create Text
 #--------------------------------------------------------------------------   
 def create_skill_name
    @skill_name = Plane.new
    @skill_name.bitmap = Bitmap.new(640,480)
    @skill_name.z = 10002
    @skill_name.bitmap.font.size = 20
    @skill_name.bitmap.font.bold = true
    @skill_name.bitmap.font.name = "Georgia" 
    @skill_name.oy = -40
    skill = $data_skills[$game_temp.xas_target_shoot_id]
    skill_text = skill.name.to_s + " - " + skill.description.to_s   
    @skill_name.bitmap.draw_hemming_text(0, 0, 640, 40, skill_text,1)
    @skill_name.opacity = 0
 end 
 
 #--------------------------------------------------------------------------
 # ● Dispose
 #--------------------------------------------------------------------------           
 def dispose
    Graphics.freeze
    @spriteset.dispose
    if @cursor != nil
        @cursor.bitmap.dispose
        @cursor.dispose 
        @text.bitmap.dispose
        @text.dispose
        @skill_layout.bitmap.dispose
        @skill_layout.dispose
        @skill_name.bitmap.dispose
        @skill_name.dispose
        @layout_1.bitmap.dispose
        @layout_1.dispose
    end
 end
 
 #--------------------------------------------------------------------------
 # ● Update
 #--------------------------------------------------------------------------         
 def update
    return if @index_max == -1
    update_cursor_slide
    update_layout_slide
    update_targe_select
 end
 
 #--------------------------------------------------------------------------
 # ● Update Layout Slide
 #--------------------------------------------------------------------------           
 def update_layout_slide
    @layout_1.ox += 3
    if @skill_layout.x < 0
        @skill_layout.x += 10
        @skill_layout.opacity += 25
        @skill_name.opacity += 25
    else
        @skill_layout.x = 0
        @skill_layout.opacity = 255
        @skill_name.opacity = 255
        @skill_name.ox -= 3
    end 
 end 
 
 #--------------------------------------------------------------------------
 # ● Refresh Text
 #--------------------------------------------------------------------------           
 def refresh_text
    @text.bitmap.clear
    @text.bitmap.draw_hemming_text(0, 0, 200, 40, @text_string.to_s,1)
 end
 
 #--------------------------------------------------------------------------
 # ● Update Cursor Slide
 #--------------------------------------------------------------------------         
 def update_cursor_slide
    @speed_x = [[(@cursor.x - @new_x / 40), 1].max, 40].min
    @speed_y = [[(@cursor.y - @new_y / 40), 1].max, 40].min
    if @cursor.x > @new_x
        @cursor.x -= @speed_x.abs
        @cursor.x = @new_x if @cursor.x < @new_x
    elsif @cursor.x < @new_x
        @cursor.x += @speed_x.abs
        @cursor.x = @new_x if @cursor.x > @new_x
    end       
     
    if @cursor.y > @new_y
        @cursor.y -= @speed_y.abs
        @cursor.y = @new_y if @cursor.y < @new_y
    elsif @cursor.y < @new_y
        @cursor.y += @speed_y.abs
        @cursor.y = @new_y if @cursor.y > @new_y
    end     
    @text.x = - 85 + @cursor.x
    @text.y = 20 + @cursor.y
    if @fy_time > 25
        @fy += 1
    elsif @fy_time > 0
        @fy -= 1
    else 
        @fy = 0
        @fy_time = 50
    end 
    @fy_time -= 1
    @cursor.oy = @fy
   
 end
 
 #--------------------------------------------------------------------------
 # ● Select Target(type)
 #--------------------------------------------------------------------------         
 def select_target(type)
    return if  @index_max < 0
    check_index
    valor = 0
    for event in $game_map.events.values
        if event.target and event.battler and not (event.dead? or event.erased or event.battler.e_object)
          if valor == @target_index
              @new_x = event.screen_x - 10
              @new_y = event.screen_y
              @text_string = event.battler.name
              $game_temp.xas_target_x = event.x
              $game_temp.xas_target_y = event.y
              $game_temp.xas_target_time = 1
            end
            valor += 1 
        end 
    end 
    refresh_text 
  end

 #--------------------------------------------------------------------------
 # ● Cancel Select
 #--------------------------------------------------------------------------             
 def cancel_select
    $game_system.se_play($data_system.buzzer_se)
    $game_temp.xas_target_x = 0
    $game_temp.xas_target_y = 0     
    $game_temp.xas_target_time = 0
    $game_temp.xas_target_shoot_id = 0
    $scene = Scene_Map.new
 end
 
  #--------------------------------------------------------------------------
  # ● Update Target Select
  #--------------------------------------------------------------------------           
  def update_targe_select
      if Input.trigger?(Input::B)
        cancel_select
      elsif Input.trigger?(Input::DOWN) or Input.trigger?(Input::RIGHT) 
        @target_index += 1
        select_target(0)
        $game_system.se_play($data_system.cursor_se)
      elsif Input.trigger?(Input::UP) or Input.trigger?(Input::LEFT)
        @target_index -= 1
        select_target(1)
        $game_system.se_play($data_system.cursor_se)
      elsif Input.trigger?(Input::C)
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Map.new
      end 
  end
 
  #--------------------------------------------------------------------------
  # ● Check Index
  #--------------------------------------------------------------------------               
  def check_index
      if @target_index > @index_max
        @target_index = 0
      end     
      if @target_index < 0
        @target_index = @index_max
      end   
  end       
 
end 





# ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
#===============================================================================
# HOOKSHOT SPRITE
#===============================================================================
# ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■


#==============================================================================
# ■ Game_Temp
#==============================================================================
class Game_Temp
  attr_accessor :hook_x
  attr_accessor :hook_y 
 
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------         
  alias hookshot_initialize initialize
  def initialize
      @hook_x = 0
      @hook_y = 0
      hookshot_initialize
  end
end 

#==============================================================================
# ■ Hookshot
#==============================================================================
class Hookshot < Sprite

#--------------------------------------------------------------------------
# ● Intialize
#--------------------------------------------------------------------------
  def initialize
    super
    create_hook
  end
 
#--------------------------------------------------------------------------
# ● Create Hook
#--------------------------------------------------------------------------   
  def create_hook
      @hook_image = RPG::Cache.windowskin("Hook_Shoot")
      @hook_bitmap = Bitmap.new(640,480)
      @hook_sprite = Sprite.new
      @hook_sprite.bitmap = @hook_bitmap
      @hook_cw = @hook_bitmap.width
      @hook_ch = @hook_bitmap.height
      @hook_src_rect = Rect.new(0, 0,@hook_cw , @hook_ch)
      @hook_bitmap.blt(0,0, @hook_image, @hook_src_rect)     
  end 
 
#--------------------------------------------------------------------------
# ● Dispose
#-------------------------------------------------------------------------- 
  def dispose
      @hook_image.dispose
      @hook_bitmap.dispose
      @hook_bitmap = nil
      @hook_sprite.bitmap.dispose
      @hook_sprite.bitmap = nil
      @hook_sprite.dispose   
      @hook_sprite = nil
  end
 
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------   
  def update
      update_visible
      return if @hook_sprite.visible == false
      update_draw_chain
  end
   
#--------------------------------------------------------------------------
# ● Update Visible
#--------------------------------------------------------------------------     
  def update_visible
      if $game_temp.hook_x == 0 and $game_temp.hook_y == 0
        @hook_sprite.visible = false
      else
        @hook_sprite.visible = true
      end 
  end 
   
#--------------------------------------------------------------------------
# ● Update Draw Chain
#--------------------------------------------------------------------------     
  def update_draw_chain
      @hook_sprite.bitmap.clear
      d = $game_player.direction
      case d
        when 2
          ex = 15
          ey = 20
          ex2 = 0
          ey2 = 0
        when 4
          ex = 38
          ey = 38
          ex2 = 16
          ey2 = 0
        when 6 
          ex = -5
          ey = 38
          ex2 = -16
          ey2 = 0
        when 8
          ex = 15
          ey = 70
          ex2 = 0
          ey2 = 32
      end
      range_x = $game_temp.hook_x.truncate - $game_player.screen_x.truncate + ex2
      range_y = $game_temp.hook_y.truncate - $game_player.screen_y.truncate + ey2
      if $game_player.direction == 2 or $game_player.direction == 6
        ry = 0
        rx = 0
      else
        ry = 450
        rx = 610
      end 
        x_range = (range_x / 6).truncate
        y_range = (range_y / 6).truncate
      for i in 0...6
          @hook_src_rect = Rect.new(0, 0,@hook_cw , @hook_ch)
          @hook_bitmap.blt(rx + (x_range * i), ry + (y_range * i), @hook_image, @hook_src_rect) 
      end
      @hook_sprite.x = $game_player.screen_x.truncate - rx - ex
      @hook_sprite.y = $game_player.screen_y.truncate - ry - ey
      @hook_sprite.z = $game_player.screen_z
      if $game_temp.hook_x == 0 and
        $game_temp.hook_y == 0
        @hook_sprite.visible = false
      else
        @hook_sprite.visible = true
      end 
  end 
end 

#-------------------------------------------------------------------------------
# ■ Scene_Map
#-------------------------------------------------------------------------------
class Scene_Map 
 
#--------------------------------------------------------------------------
# ● Main
#--------------------------------------------------------------------------       
  alias hookshot_main main
  def main
      @hook = Hookshot.new
    hookshot_main 
      @hook.dispose
  end 
   
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------     
  alias hookshot_update update
  def update
    hookshot_update
    @hook.update
  end 
end






# ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
#===============================================================================
# SPRITE SHADOW
#===============================================================================
# ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■

#===============================================================================
# ■ Spriteset_Map
#===============================================================================
class Spriteset_Map

 #--------------------------------------------------------------------------
 # ● update   
 #-------------------------------------------------------------------------- 
  alias background_effect_update update
  def update   
      background_effect_update
      if $game_temp.background_effect_time > 0
        $game_temp.background_effect_time -= 1
        @panorama.z = 1000
        @fog.z = -1000
        if $game_temp.background_effect_time == 0
            @panorama.z = -1000           
            $game_map.panorama_name = $game_temp.pre_panorama_name
            $game_map.panorama_hue = $game_temp.pre_panorama_hue
            @fog.z = 3000
        end
      end 
  end 
end 

# ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
#===============================================================================
# PLAYER SPRITE NAME SYSTEM
#===============================================================================
# ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■


#===============================================================================
# ■ Game_Player
#===============================================================================
class Game_Player 
 
 #--------------------------------------------------------------------------
 # ● Check Character Pose
 #--------------------------------------------------------------------------       
 def update_character_pose
    return unless can_refresh_pose?
    check_character_pose
 end
 
 #--------------------------------------------------------------------------
 # ● Can Refresh Pose?
 #--------------------------------------------------------------------------         
 def can_refresh_pose?
    return false if $game_system.map_interpreter.running?   
    return false if self.action != nil
    return false if self.dead?
    return false if self.battler.stop
    return true
 end
 
 #--------------------------------------------------------------------------
 # ● Check Character Pose
 #--------------------------------------------------------------------------         
 def check_character_pose
    if @fall
        @pose_type = ""
    elsif @pickup_lock_time > 0 
        @pose_type = "_Throw"
    elsif @pickup_lock   
        @pose_type = "_Pickup"
    elsif self.knockbacking? or (self.battler != nil and self.battler.state_sleep)   
        @pose_type = "_Hit"
    elsif @collision_attack 
        @pose_type = "_Act" 
    elsif $game_temp.xas_charge_time > 10
        @pose_type = "Charge"
    elsif jumping? or $game_temp.dodge_time_real > 0 
        @pose_type = "_Jump"
    elsif @dash
        @pose_type = "_Dash"
    elsif @quarter
        @pose_type = "_Quarter"
    else
        @pose_type = "Normal"
    end
    change_character_graphic_pose
 end
 
 #--------------------------------------------------------------------------
 # ● Update Character Graphic Pose
 #--------------------------------------------------------------------------
 def change_character_graphic_pose
    return if @pose_type_old == @pose_type
    @pose_type_old = @pose_type
    name = @actor.character_name
    file_name(name)
    if RPG_FileTest.character_exist?(@character_file_name)
        @character_name = @character_file_name
    else
        @character_name = name
    end 
 end

 #--------------------------------------------------------------------------
 # ● File Name
 #-------------------------------------------------------------------------- 
 def file_name(name)
    case @pose_type
        when "Normal"
            @character_file_name = name
        when "Charge"   
            suffix = Database_Bullet::SELF_MOTIONS[@wp_tool_id]
            @character_file_name = name + suffix.to_s + "_Charge"   
        when ""   
            @character_file_name = ""
        when @pose_type
            @character_file_name = name + @pose_type.to_s       
        else
            @character_file_name = name 
    end
 end   
end 








#===============================================================================
# ■ Sprite_Character
#===============================================================================
class Sprite_Character < RPG::Sprite

#--------------------------------------------------------------------------
# ● Update Opacity
#--------------------------------------------------------------------------
 def update_char_effects
    # Zoom
    if @zoom_x != @character.zoom_x or
        @zoom_y != @character.zoom_y
        @zoom_x = @character.zoom_x
        @zoom_y = @character.zoom_y     
        self.zoom_x = @character.zoom_x
        self.zoom_y = @character.zoom_y
      end       
      # Angle 
      if @character.angle != @character.angle_new
        @character.angle = @character.angle_new
        self.angle = @character.angle_new
      end     
      # Fly
      if $game_system.fly == true and @character.is_a?(Game_Player)
        self.z = 999   
        self.bush_depth = 0
      # Swimming
      elsif @character.swimming   
        self.z = @character.screen_z(@ch) + 1
        self.bush_depth = 25
      end
      # Background Effect
      if $game_temp.background_effect_time > 0
        if @character.battler != nil or @character.tool_id > 0
            self.z = @character.screen_z + 1500       
        end
      end       
      if @character.icon_name != nil
        create_treasure_icon
        update_treasure_icon_frame
        update_treasure_icon_float(self.bitmap.height)
        #update_treasure_icon_blink     
        if @character.alwaly_on_target_id != 0
            event = $game_map.events[@character.alwaly_on_target_id]
            if event == nil
              @character.move_toward_player
              @character.alwaly_on_target_id = 0
              @character.start
              return
            end 
            @character.x = event.x
            @character.y = event.y
            @character.move_speed = 6
            self.x = event.screen_x
            self.y = event.screen_y
        end 
        self.z = 0
        return 
      # Pickup   
      elsif @character.throw_active and $game_player.pickup_lock_time == 0
        self.x = $game_player.screen_x
        self.y = $game_player.screen_y - XAS::OBJECT_Y
        self.z = $game_player.screen_z + 32
        self.bush_depth = 0         
        @character.x = $game_player.x
        @character.y = $game_player.y         
        return
      #Alwaly on Target Position
      elsif @character.alwaly_on_target_id != 0
        if @character.alwaly_on_target_id < 0
            @character.x = $game_player.x
            @character.y = $game_player.y 
            @character.move_speed = 6
            if @character_name[/\((\d+)\)/]             
              self.x = $game_player.screen_x
              self.y = $game_player.screen_y + $1.to_i   
            else 
              self.x = $game_player.screen_x
              self.y = $game_player.screen_y 
            end 
            return
        else 
            event = $game_map.events[@character.alwaly_on_target_id]
            return if event == nil 
            unless @character.hooked
              @character.x = event.x
              @character.y = event.y
            end   
            @character.move_speed = event.move_speed
            if @character_name[/\((\d+)\)/]   
              self.x = event.screen_x
              self.y = event.screen_y + $1.to_i 
            else
              self.x = event.screen_x
              self.y = event.screen_y   
            end 
        end
      # Height Correction     
      elsif @character_name[/\((\d+)\)/]
        self.x = @character.screen_x
        self.y = @character.screen_y + $1.to_i
      end   
      @character.z = self.z
 end 
 
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
alias xas_charsprite_update update
  def update
  xas_charsprite_update
  @battler = @character.battler if @battler == nil
  update_char_effects
  if @battler == nil or @_collapse_duration > 0 or
      @character.collapse_done
      return
  end
  if @battler.hiblink_duration.is_a?(Numeric)     
      if XAS_BA::BLINK_ON == true
        @character.opacity = (@character.opacity + 70) % 190 + 40
      end
      if XAS_ABS_SETUP::BATTLER_SHAKE_EFFECT == true and @character.knockbacking?
        self.x = @character.screen_x + rand(5)       
      end       
      @battler.hiblink_duration -= 1
      if @battler.hiblink_duration <= 0
        @battler.hiblink_duration = nil
        @character.opacity = 255
      end     
    end 
  end 
end 








# ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
#===============================================================================
# Anti Lag
#===============================================================================
# ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■

#===============================================================================
# ■ Game_Character
#===============================================================================
class Game_Character
 #--------------------------------------------------------------------------
 # ● Can Update
 #--------------------------------------------------------------------------
 def can_update?
    return false if self.is_a?(Game_Player)
    return false if @trigger == 3 or @trigger == 4 
    return false if self.battler != nil and self.battler.sensor_range > 15
    return false if self.tool_id != 0
    @visible = false
    sensor_range = $game_system.anti_lag_range
    px = ($game_map.display_x / 128).truncate
    py = ($game_map.display_y / 128).truncate   
    distance_x = (px - (self.x - 10)).abs
    distance_y = (py - (self.y - 7)).abs
    return true if distance_x >= sensor_range + 11
    return true if distance_y >= sensor_range + 9 
    @visible = true
    return false   
 end 
end 

#===============================================================================
# ■ Game_Event
#===============================================================================
class Game_Character
  alias character_anti_lag_update update
  def update
      return if can_update?
      character_anti_lag_update
  end 
end 

#===============================================================================
# ■ Sprite_Character
#===============================================================================
class Sprite_Character < RPG::Sprite

#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
  alias xas_anti_update update
  def update 
      return if @character.visible == false and self.visible == false
      xas_anti_update
      self.visible = @character.visible
  end
end   

luego pruebalo y me dices los reultados, ;)

elisamuelps
Soñador
Soñador

0/3

Créditos 91


Volver arriba Ir abajo

RPG Maker XP Re: [RMXP]Ayuda con XAS HERO

Mensaje por ichcanziho el Dom Ene 29, 2012 5:24 pm

disculpa la ultima bueno eso creo yo, pregunta que tengo,
donde esta el xas sprite, lo e buscado por todas partes y no lo encuentro, o no en la
version 3.8, porque en la 3.9 encontre algo parecido, dise
XAS - Window/Sprite
pero como tambien tiene window, no lo puedo modificar bien,
asi que donde esta el xas sprite, por ejemplo abajo de otro script, o encima de otro,
esque no lo encuentro..

ichcanziho
Novato
Novato

0/3

Créditos 46


Volver arriba Ir abajo

RPG Maker XP Re: [RMXP]Ayuda con XAS HERO

Mensaje por elisamuelps el Lun Ene 30, 2012 8:03 pm

necesitas la ultima version de xas xD lo que yo pude modificar en mi proyecto fue apartir de la version 3.91 que tiene mejor organización D: si quieres trata de actualizar la versión y te daras cuenta que al entrar en el xas 3.91 con sombras te tira un error por que existen dos modulos con el mismo nombre, pero como el circulo con la sombra del xas 3.91 en realidad es muy inutil se lo elimine del script para que pudiera funcionar, en las versiones anteriores es un poco mas dificil eliminarlo, y causa mas incompatibilidad xD y si editas el window sprite vas a terminar editando la hud y esas cosas, es mejor que no las jurunges mucho xD prueba con un proyecto nuevo de xas 3.91

elisamuelps
Soñador
Soñador

0/3

Créditos 91


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Ayuda RPG

Permiso de este foro:
No puedes responder a temas en este foro.