Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[Ayuda] como hacer que el personaje haga gestos raros

Ver el tema anterior Ver el tema siguiente Ir abajo

[Ayuda] como hacer que el personaje haga gestos raros

Mensaje por Killua el 2018-01-02, 13:38

Hola pues yo aqui como siempre teniendo problemas xD, pues lo que quiero hacer es que cuando el jugador no se este moviendo el personaje haga gestos, osea movimientos raros como que el personaje se sienta se pone a celebrar y algo asi, espero con su ayuda
avatar
Killua
Novato
Novato

0/3

Créditos 68

Gracias : 3

Volver arriba Ir abajo

Re: [Ayuda] como hacer que el personaje haga gestos raros

Mensaje por Wecoc el 2018-01-02, 14:23

Mira este tutorial a ver si te sirve: Efecto al quedarse quieto

Es un ejemplo base para poder montar lo que pides en engine. Luego eso se puede "complicar" lo que haga falta, con varios movimientos y tal.
Te aconsejo pensarte bien qué poses le harás hacer (quedaria raro en una situación crítica donde haya encuentros de enemigo, que se siente al suelo o se ponga a celebrar algo xD). Si no quieres hacer gráficos de poses puedes hacerlo más fácil y aplicarle una animación de batalla con un balloon de "?" o alguna cosa así.
avatar
Wecoc
Administrador
Administrador



Créditos 12211

Gracias : 632

Volver arriba Ir abajo

Re: [Ayuda] como hacer que el personaje haga gestos raros

Mensaje por Killua el 2018-01-02, 14:57

@Wecoc hice todo lo del tutoria,l pero no se si hice algo mal pero a la hora de entrar al juego me da error.

aqui esta el error

error:
avatar
Killua
Novato
Novato

0/3

Créditos 68

Gracias : 3

Volver arriba Ir abajo

Re: [Ayuda] como hacer que el personaje haga gestos raros

Mensaje por Wecoc el 2018-01-02, 15:19

Alguna de las llamadas de script la escribiste mal. Puede que te hayas dejado alguna barra baja, como en la captura del editor que puse no se muestran... Bueno, te las he puesto a mano aquí. Si no igualmente en el tutorial están las llamadas de script tal cual en verde, haz un copiar/pegar.



Como ves en una de las condiciones pone Variable == 100 eso es el tiempo de espera para que ocurra, ahí le defines el que quieras.
Puedes también poner más condiciones justo debajo parecidas, pero con == 200 etc, si quieres que cada 100 haga algo distinto. O si cada 100 frames hace lo mismo cámbialo por ésta condición de script:

$game_variables[1] > 0 && $game_variables[1] % 100 == 0

Otra vez el 100 lo cambias por el tiempo que quieras.
avatar
Wecoc
Administrador
Administrador



Créditos 12211

Gracias : 632

Volver arriba Ir abajo

Re: [Ayuda] como hacer que el personaje haga gestos raros

Mensaje por Hk Diamond el 2018-01-02, 15:46

bueno te tengo otras extras, por aca hay unos scripts que casualmente tenia a la mano y hacen algo parecido a lo que pides, te toca testear el primero dado que yo no lo he probado todavia.
el primero lo mostro luren, aunque no encontre su post en este foro,
este te permite agregarle animaciones al chara cuando esta quieto, y pues para ello necesitaras agregar otras plantilla animada y agregarle "_idl" al final.

Idle anim de winkio:

Código:

#==============================================================================
# ** Game_Player
#------------------------------------------------------------------------------
#  With idle sprites.  name the idle sprites the same as their normal ones
#  except with '_idl' on the end (before the extension)
#==============================================================================

class Game_Player < Game_Character
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader   :character_name_org       # original character file name
  attr_reader   :current_sprite           # current sprite suffix
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias initialize_idlesprites_before initialize
  def initialize
    initialize_idlesprites_before
    # set original character name
    @character_name_org = @character_name
    # set current sprite
    @current_sprite = ""
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias update_idlesprites_before update
  def update
    update_idlesprites_before
    if @character_name != ""
      if moving?
        if @current_sprite != ''
          @step_anime = false
          @character_name = @character_name_org
          @current_sprite = ''
        end
      elsif Input.dir4 == 0
        if @current_sprite != '_idl'
          @character_name_org = @character_name
          @step_anime = true
          @character_name += '_idl'
          @current_sprite = '_idl'
        end
      end
    end
  end
end

El segundo muestra expresiones...aunque a la hora de situar los gestos en un evento tiene un error (hasta donde yo recuerdo),
Debes tener esta img tmb
Balloon?:


Te explico el error: El gesto aparece en otro evento XD
detalles:
La llamanda de script para los eventos es esta "$scene.emotion(id, ev)"  [sin las comillas obviamente]
y donde esta "ev" va el numero id del evento,como el error esta en que el gesto nunca aparece en el evento indicado para que funcione tienes que sumarle 3, ej. si quieres que el ev 50 haga un gesto en "ev" deberas poner 53 y asi con todos los eventos. Las instrucciones estan en el script



Emotion :

Código:

#===============================================================#
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>SCRIPT<<<<<<<<<<<<<<<<<<<<<<<<<<<<<#
#===============================================================#
#                                                               #
#                        Emotions Script                        #
#                by Ánemus (www.arcadiumrpg.net)                #
#                                                               #
#  This script shows emotions over the player or over the other #
#                     characters of the map.                    #
#                                                               #
#                  $scene.emotion(id,ev,image)                  #
#                                                               #
#           For any comments: anemus@arcadiumrpg.net            #
#                                                               #
#===============================================================#
#>>>>>>>>>>>>>>>>>>>>>>>>>>>SETTINGS<<<<<<<<<<<<<<<<<<<<<<<<<<<<#
#===============================================================#
#                                                               #
# Number of Repetitions or LOOP:                                #
# That's the number of times the animation of the emotion will  #
# repeat. I recomend 1, because bigger numbers are just way to  #
# repetitive.                                                   #
LOOP = 1
#                                                               #
# Delay:                                                        #
# That's the slowness of the animation. I recomend 3 or 4,      #
# smaller numbers are like flashes, so they aren't really       #
# useful.                                                       #
DELAY = 4
#                                                               #
# Deafult file for emotions:                                    #
# This is a tool to make it easier to use, this way you just    #
# write the id of the animation and the event where you want to #
# show it.
DEFAULTFILE = "Balloon"
#                                                               #
#===============================================================#
#>>>>>>>>>>>>>>>>>>>>>>>>>INSTRUCTIONS<<<<<<<<<<<<<<<<<<<<<<<<<<#
#===============================================================#
#                                                               #
# Whenever you want to use it just use Call Script command      #
# then write:                                                   #
# $scene.emotion(id, ev, image)                                 #
# Being id the number of the emotion in the file (the top one is#
# the 0 and the lowest one the 9), ev the event over which you  #
# are showing the emotion (being -1 for the player and any      #
# other number for events, and image, that is the image file    #
# that you are using for the emotions. This file is to be placed#
# on Pictures folder and should be 256x320 px.                  #
#                                                               #
# Some tips:                                                    #
# If you are using the emotion file specified in DEFAULTFILE    #
# you dont need to include it in the sentence.                  #
# $scene.emotion(id, ev)                                        #
# Now if you are using the default file and also placing the    #
# emotion on the main character, the sentence is reduced to:    #
# $scene.emotion(id)                                            #
#                                                               #
#===============================================================#
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>END<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<#
#===============================================================#

#===============================================================#
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>CODE<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<#
#===============================================================#
class Sprite_Character < RPG::Sprite
  alias :old_updateEmo :update
  def update
    old_updateEmo
    if @frames != nil
      @pic.x = (@character.screen_x + 5)
      @pic.y = (@character.screen_y - @ph - @ch.to_i+2)
      if @frames > (1 + LOOP*7)*DELAY
        @pic.zoom_x = 0.6
        @pic.zoom_y = 0.6
        @pic.opacity = 100
        @frames -= 1
        return
      elsif @frames > (LOOP*7)*DELAY
        @pic.zoom_x = 1
        @pic.zoom_y = 1
        @pic.opacity = 255
        @frames -= 1
        @iframe = 1
        @gota = 0
        return
      elsif @frames == 0
        @frames = nil
        @pic.bitmap.dispose
        @pic.dispose
        @picid = nil
        return
      else
        @pic.bitmap.clear
        @pic.bitmap.blt(0,0,RPG::Cache.picture(@picig),Rect.new(@iframe*32, @picid*32, 32, 32))
        @pic.zoom_x = 1
        @pic.zoom_y = 1
        @pic.opacity = 255
        @frames -= 1
        if @gota == DELAY
          @iframe += 1
          if @iframe > 7
            @iframe = 1
          end
          @gota = 0
        end
        @gota +=1
      end
    end
  end
  def emotion (id,ig="Balloon",wt=false)
    if !FileTest.exist?("Graphics/Pictures/"+ig+".png")
      return 0
    end
    @frames = (2 + LOOP*7)*DELAY
    @picid = id > 9 ? 9 : id
    @picig = ig
    @pic = Sprite.new
    @pic.bitmap = Bitmap.new(32,32)
    @pic.bitmap.blt(0, 0, RPG::Cache.picture(@picig), Rect.new(0,32*@picid,32,32))
    @pic.ox = @pic.bitmap.width / 2
    @pic.oy = @ph = @pic.bitmap.height / 2
    @pic.z = 100
    if wt
      return @frames
    else
      return 0
    end
  end
  def dispose
    super
    if @pic != nil
      @pic.bitmap.dispose
      @pic.dispose
    end
  end
end
class Spriteset_Map
  def emotion (id,ev=-1,ig=DEFAULTFILE,wt=false)
    if ev.to_i > -1
      @frames = @character_sprites[ev].emotion (id,ig,wt)
    else
      @frames = @character_sprites[@character_sprites.size - 1].emotion(id,ig,wt)
    end
    return @frames
  end
end
class Scene_Map
  def emotion (id,ev=-1,ig=DEFAULTFILE,wt=false)
    $game_system.map_interpreter.wait_count = @spriteset.emotion (id,ev,ig,wt)
  end
end
class Interpreter
  def wait_count=(frames)
    @wait_count = frames.to_i
  end
end
avatar
Hk Diamond
Iniciado
Iniciado

0/3

Créditos 14

Gracias : 2

Volver arriba Ir abajo

Re: [Ayuda] como hacer que el personaje haga gestos raros

Mensaje por Killua el 2018-01-02, 16:00

@Wecoc pues ya el error no me da, pero yo me pongo a esperar a ver si ocurre el efecto, pero no ocurre nada

@Hk diamond lo voy a intentar probar
avatar
Killua
Novato
Novato

0/3

Créditos 68

Gracias : 3

Volver arriba Ir abajo

Re: [Ayuda] como hacer que el personaje haga gestos raros

Mensaje por Wecoc el 2018-01-02, 16:50

@Killua ¿Activaste el interruptor? Piensa que todo eso va en un Evento Común en Proceso Paralelo y necesita que un interruptor esté en marcha para funcionar. Así además podrás activar y desactivar el efecto cuando quieras.

@Hk diamond Ese script no está demasiado bien montado, en general. Quería arreglar eso del a ID pero mirándolo creo que más valdría hacer un script nuevo. Igualmente seguramente haya hechos otros scripts muy similares ya. Os recomiendo buscar scripts de Balloon para XP. Y si no siempre puede recrearse con una animación de batalla, es lo que haría yo.
avatar
Wecoc
Administrador
Administrador



Créditos 12211

Gracias : 632

Volver arriba Ir abajo

Re: [Ayuda] como hacer que el personaje haga gestos raros

Mensaje por Killua el 2018-01-02, 16:58

@Wecoc eso mismo hice lo puse en un evento comun y lo puse en proceso paralelo y el interruptor que lo activa lo puse en el mapa en proceso pararelo, pero no funciona, es decir, no ocurre nada
avatar
Killua
Novato
Novato

0/3

Créditos 68

Gracias : 3

Volver arriba Ir abajo

Re: [Ayuda] como hacer que el personaje haga gestos raros

Mensaje por Hk Diamond el 2018-01-02, 23:16

@Wecoc sabes que me puse a googlear lo del script y no me aparece ninguna variacion... solo el sistema de batalla con el que esta relacionado
avatar
Hk Diamond
Iniciado
Iniciado

0/3

Créditos 14

Gracias : 2

Volver arriba Ir abajo

Re: [Ayuda] como hacer que el personaje haga gestos raros

Mensaje por Wecoc el 2018-01-03, 00:10

@Killua Cuando hice el tutorial probé el engine y funcionaba, sea lo que sea lo has hecho distinto... Quizá no cuadre la ID de la variable o no sé. Es un engine cortito, no debería dar tanto problema. Ve probando, seguro que te acaba funcionando bien.

Si tras mucho probar no te funcionara, tendrás que subir demo para ver qué puede estar fallando

@Hk Diamond He hecho uno rapidito y muy sencillo... Seguro que hay más porque me suena pero bueno, fue un momento.

Código:
#==============================================================================
# ** [XP] Basic Balloon Script
#------------------------------------------------------------------------------
#  Author: Wecoc (no credits required)
#==============================================================================

#==============================================================================
# * RPG::Sprite
#==============================================================================

class RPG::Sprite
  #--------------------------------------------------------------------------
  # Configuration
  #--------------------------------------------------------------------------
  BALLOON_FILE = "Balloon"          # Pictures Folder
  BALLOON_FRAME_MAX = 8             # Image Rows
  BALLOON_SE_PLAY = "015-Jump01"    # Balloon SE
  #--------------------------------------------------------------------------
  # * Initialize
  #--------------------------------------------------------------------------
  alias balloon_ini initialize unless $@
  def initialize(viewport = nil)
    balloon_ini(viewport)
    @_balloon_duration = 0
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  alias balloon_dis dispose unless $@
  def dispose
    dispose_balloon
    balloon_dis
  end
  #--------------------------------------------------------------------------
  # * Dispose Balloon
  #--------------------------------------------------------------------------
  def dispose_balloon
    if @_balloon_sprite != nil
      @_balloon_sprite.bitmap.dispose
      @_balloon_sprite.dispose
      @_balloon_sprite = nil
    end
  end
  #--------------------------------------------------------------------------
  # * Balloon
  #--------------------------------------------------------------------------
  def balloon(balloon_id)
    dispose_balloon
    @_balloon_id = balloon_id
    return if @_balloon_id == nil or @_balloon_id == 0
    @_balloon_duration = BALLOON_FRAME_MAX
    balloon_name = BALLOON_FILE
    @_balloon_bitmap = RPG::Cache.picture(balloon_name)
    @_balloon_sprite = ::Sprite.new(self.viewport)
    @_balloon_sprite.z = 99999
    update_balloon
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  alias balloon_upd update unless $@
  def update
    balloon_upd
    if @_balloon_sprite != nil
      @_balloon_sprite.x = self.x
      @_balloon_sprite.y = self.y - 54
    end
    if @_balloon_sprite != nil and (Graphics.frame_count % 4 == 0)
      @_balloon_duration -= 1
      update_balloon
    end
  end
  #--------------------------------------------------------------------------
  # * Update Balloon
  #--------------------------------------------------------------------------
  def update_balloon
    if @_balloon_duration > 0
      frame_index = BALLOON_FRAME_MAX - @_balloon_duration
      s = @_balloon_bitmap.width / BALLOON_FRAME_MAX
      bitmap = Bitmap.new(s, s)
      @_balloon_sprite.ox = s / 2
      @_balloon_sprite.oy = s / 2
      rect = Rect.new(frame_index * s, (@_balloon_id - 1) * s, s, s)
      bitmap.blt(0, 0, @_balloon_bitmap, rect)
      @_balloon_sprite.bitmap = bitmap
    else
      dispose_balloon
    end
  end
end

#==============================================================================
# * Game_Character
#==============================================================================

class Game_Character
  attr_accessor :balloon_id
  alias balloon_ini initialize unless $@
  def initialize(*args)
    balloon_ini(*args)
    @balloon_id = 0
  end
end

#==============================================================================
# * Sprite_Character
#==============================================================================

class Sprite_Character < RPG::Sprite
  alias balloon_upd_chara update unless $@
  def update
    balloon_upd_chara
    if @character.balloon_id != 0
      Audio.se_play("Audio/SE/" + BALLOON_SE_PLAY, 80, 100)
      balloon(@character.balloon_id)
      @character.balloon_id = 0
    end
  end
end

Para que funcione hay que poner la imagen de los balloons que pusiste (u otra similar) en la carpeta Pictures y la llamas Balloon.png

Luego en llamada de evento si usas ésto:

$game_player.balloon_id = ID

Se reproducirá la animación del balloon que deseas, sobre el protagonista.
Solo tienes que cambiar donde puse ID por la id actual del balloon que quieres que se reproduzca.
La primera fila (Sorpresa) corresponde a ID 1, y así hasta la última (Sueño) que es la 10.

Otra información:
Si la imagen es más alta aceptará más ID, todas las que quieras añadir.

El número de columnas (o frames de la animación) es 8 pero el script se puede configurar para que sean más... También puedes usar balloons de otro tamaño o no sé... todo es testear xD

Para que funcione en un evento va casi igual:

$game_map.events[EVENT_ID].balloon_id = ID

Cambia EVENT_ID por el id del evento, o bien ponle @event_id para que funcione en el evento que hizo la llamada de script.

Como curiosidad si le asignas como ID de balloon 0, la que se esté reproduciendo en ese chara se parará en seco. Pero no creo que sea necesario porque igualmente duran poco.

Saludos.
avatar
Wecoc
Administrador
Administrador



Créditos 12211

Gracias : 632

Volver arriba Ir abajo

Re: [Ayuda] como hacer que el personaje haga gestos raros

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


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