¡Bienvenido a Universo Maker!
¿Es esta la primera vez que visitas el foro? Si es así te recomendamos que te registres para tener completo acceso a todas las áreas y secciones del foro, así también podrás participar activamente en la comunidad. Si ya tienes una cuenta, conectate cuanto antes.
Iniciar Sesión Registrarme

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo Mensaje [Página 1 de 1.]

#1 Ventana de Comando de Batalla el Sáb Ene 05, 2013 7:58 am

urbanhack

avatar
hola. soy nuevo en el foro! por fin encuento un foro hispano y por lo que veo esta con vida... ya que los foros que encontre por ahi de habla hispana estaban muertos hace tiempo... y obvio quien te va a dar pelota¿?
asique me meti en el foro oficial... pero todos hablan en ingles... y es dificil sacar un tema de algo bien especifico ya que no es nada facil expresarse correctamente llendo al grano de lo que uno quiere... por suerte me defiendo bastante bien speaking english... pero... porque no recurrir a un sitio en donde la gente entiende lo que digo perfectamente y ademas puedo colaborar un poco mas... pero bueno me fui a la mierda con el texto... perdon... >.<


primero que es medio confuso el apartado de soporte con ayuda y pedido porque al fin y al cabo en los 2 estas mangueando... XD

voy a comenzar con algo muy sencillo para muchos y complicado para otros...
sin mas...

no encuentro la forma de de mover la ventana de comando al centro de la pantalla o algun lugar de por ahi...
dejando aislada la ventana de de personajes y barras de hp mp tp atb y todo lo que se te ocurra...

por si no se entiende bien... la ventana de comandos es la que tiene (valga la redundancia) comandos tales como atacar, defender, skills y objetos...

si alguno sabe como mover esta ventana al centro de la pantalla y que la ventana de personajes quede en donde mismo pero centrada... estare muy agradecido y les regalare un gran abrazo psicologico por la ayuda...

desde ya un saludo atentamente los saluda el señor ... fuaaa jajaaj me re vicie bueno chau -.-"

#2 Re: Ventana de Comando de Batalla el Dom Ene 06, 2013 5:38 am

Razor

avatar
Primeramente, ¿Qué RPG Maker usas? ¿Es el sistema de batalla por defecto? ¿Nos das una screen para entender mejor el problema?

Solo es cuestión de especificar un poquito más a ver como te podemos ayudar.

Por cierto, bienvenido al foro, espero que tengas una buena estancia por acá. Ópalo Sonriente

Saludos
Out.-





Todos mis aportes por Mediafire tienen contraseña, esa es: www.universomaker.net
Esto es para evitar plagio, asegúrense de copiar y pegar la contraseña.

#3 Re: Ventana de Comando de Batalla el Dom Ene 06, 2013 10:05 pm

rpgmanumaker

avatar
Bueno, deberías de hacer lo que te ha dicho Razor... pero de todos modos... si usas XP o VX aquí te dejo la manera si usas el sistema default para batallas...
Para vx:
Código:

  def create_info_viewport
    @info_viewport = Viewport.new(0, 288, 544, 128)
    @info_viewport.z = 100
    @status_window = Window_BattleStatus.new
    @party_command_window = Window_PartyCommand.new
    @actor_command_window = Window_ActorCommand.new
    @status_window.viewport = @info_viewport
    @party_command_window.viewport = @info_viewport
    @actor_command_window.viewport = @info_viewport
    @party_command_window.x = 0#posición de los comandos de la party
    @party_command_window.y = 0#posición de los comandos de la party
    @status_window.x = 300 #Ventana de información de los personajes PM, PV...
    @actor_command_window.x = 544 #Posición del os comandos del actor
    @actor_command_window.y = 0 #Posición de los comandos del actor
    @info_viewport.visible = false
  end
Simplemente cambia los 0 por la posición que quieras... tendrás que ir probando hasta que encuentres la que te guste... como no se me da bien el uso de las coordenadas no puedo ayudarte..
Eso tienes que buscar y ponerlo en Scene_Blatte...
Si usas XP:
Código:

def main
    # Initialize each kind of temporary battle data
    $game_temp.in_battle = true
    $game_temp.battle_turn = 0
    $game_temp.battle_event_flags.clear
    $game_temp.battle_abort = false
    $game_temp.battle_main_phase = false
    $game_temp.battleback_name = $game_map.battleback_name
    $game_temp.forcing_battler = nil
    # Initialize battle event interpreter
    $game_system.battle_interpreter.setup(nil, 0)
    # Prepare troop
    @troop_id = $game_temp.battle_troop_id
    $game_troop.setup(@troop_id)
    # Make actor command window
    s1 = $data_system.words.attack
    s2 = $data_system.words.skill
    s3 = $data_system.words.guard
    s4 = $data_system.words.item
    @actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
    @actor_command_window.y = 160 #Ventana de los comandos del actor
    @actor_command_window.x = 0 ##Ventana de los comandos del actor
    @actor_command_window.back_opacity = 160
    @actor_command_window.active = false
    @actor_command_window.visible = false
    # Make other windows
    @party_command_window = Window_PartyCommand.new
    @party_command_window.x = 0 #Ventan de acción de la party
    @party_command_window.y = 0 #ventana de acción de la party
    @help_window = Window_Help.new
    @help_window.back_opacity = 160
    @help_window.visible = false
    @status_window = Window_BattleStatus.new
    @status_window.x = 0 #Ventana de estado PM, PV...
    @status_window.y = 0 #Ventana de estado PM, PV
    @message_window = Window_Message.new
Bueno, pues aquí es lo mismo... simplemente reemplaza esta parte por la que viene en la Scene_Blatter 1 de las script... Pero con cuidado de reemplazar solo lo que he puesto aquí.
Si no lo entiendes o quieres que te lo explique mejor... dime que sistema de batalla y maker usas... No he podido hacer una gran explicación... porque aparte de que mi dominio en el maker deja que desear... no quiero cansarme de explicar y que luego uses otro maker XD.

#4 Re: Ventana de Comando de Batalla el Lun Ene 07, 2013 2:49 am

urbanhack

avatar
sprry llegue tarde... y no, no uso vx, ni xp... ACE en realidad, y si, si uso el sitema default de ventana... rectangulo con nombres y el comando de battalla a la derecha...
mas claro echale imagen



lo mismo pero con los battlers laterales animados... que supongo que no implica nada con los comandos de batalla...

y no me digan nada... nadie sabe para ace verdad? porque todos los post que veo la mayoria son xp, vx ...

#5 Re: Ventana de Comando de Batalla el Lun Ene 07, 2013 5:40 pm

rpgmanumaker

avatar
Pues para ACE... eL rpg maker que uso... es igual de fácil... Creo que viendo lo que te puse arriba podrías/podrás hacerlo.
En fin, mira este code:
Código:

  def create_party_command_window
    @party_command_window = Window_PartyCommand.new
    @party_command_window.viewport = @info_viewport
    @party_command_window.x = 0 #Posición X de la ventana de comandos de party
    @party_command_window.y = 0 #Posición Y de la ventana de comandos de la party
    @party_command_window.set_handler(:fight,  method(:command_fight))
    @party_command_window.set_handler(:escape, method(:command_escape))
    @party_command_window.unselect
  end
  #--------------------------------------------------------------------------
  # ● アクターコマンドウィンドウの作成
  #--------------------------------------------------------------------------
  def create_actor_command_window
    @actor_command_window = Window_ActorCommand.new
    @actor_command_window.viewport = @info_viewport
    @actor_command_window.x = 0 #Posición X de la ventana de accion de cada actor
    @actor_command_window.y = 0 #Posición Y de la ventana de accion de cada actor
    @actor_command_window.set_handler(:attack, method(:command_attack))
    @actor_command_window.set_handler(:skill,  method(:command_skill))
    @actor_command_window.set_handler(:guard,  method(:command_guard))
    @actor_command_window.set_handler(:item,  method(:command_item))
    @actor_command_window.set_handler(:cancel, method(:prior_command))
    @actor_command_window.x = Graphics.width
  end
Bueno, ese código solo tienes que buscarlo en Scene_Blatter... y cambiar la parte que te he puesto aquí por la de allí... O simplemente copiar los códigos que te he puesto. Luego, solo tienes que ir moviendo las ventanas hasta que queden a tu gusto. No he probado si funcionará o no... ya que no tengo ganas... pero estoy casi un 80% seguro que se hace así.
Se me olvidaba, para mover el rectángulo largo ese donde se muestra el PM y la PV tienes que cambiar esto:
Código:

def create_status_window
    @status_window = Window_BattleStatus.new
    @status_window.x = 128 #Posición X del rectángulo
@status_window.y = 0 #Posición Y del rectángulo... en realidad aquí no #tienes que tocar nada... pero quise ponerlo. Por si no lo sabes... la Y #mueve arriba o abajo el rectángulo. Pero supongo que ya lo sabras XD.
Espero haberte ayudado... En caso de que no lo entiendas dímelo e intentaré explicartelo mejor. Otra cosa que tal vez te sea útil para mover la ventana a donde quieres... Es que la pantalla mide 544 pixeles de alto y 416 pix... Con eso más o menos podrás situarla donde quieras.
  end

#6 Re: Ventana de Comando de Batalla el Lun Ene 07, 2013 8:48 pm

urbanhack

avatar
bueno... mover... la mueve... pero hay un problema... al ir moviendo la ventana de comando va desapareciendo... comence por ir levantandola poco a poco pero nisiquiera llegue a terminar de salir de la posicion original porque va desapareciendo... osea no dibuja la parte de arriba
eeeeeeee mira... mejor pongo una imagen...




Última edición por urbanhack el Lun Ene 07, 2013 9:05 pm, editado 1 vez

#7 Re: Ventana de Comando de Batalla el Lun Ene 07, 2013 9:16 pm

orochii

avatar
Tienes que editar esto:
Código:
def create_info_viewport
    @info_viewport = Viewport.new
    @info_viewport.rect.y = Graphics.height - @status_window.height
    @info_viewport.rect.height = @status_window.height
    @info_viewport.z = 100
    @info_viewport.ox = 64
    @status_window.viewport = @info_viewport
  end
Lo buscas, y puedes poner algo como ésto...
Código:
def create_info_viewport
    @info_viewport = Viewport.new
    @info_viewport.rect.height = Graphics.height - numero ####
    @info_viewport.rect.y = Graphics.height - @info_viewport.rect.height
    @info_viewport.z = 100
    @info_viewport.ox = 64
    @status_window.viewport = @info_viewport
  end
Cambias "numero ####" por la posición x de la ventana @actor_command_window. El número que pusiste en ésta línea:
Código:
@actor_command_window.x = 0 #Posición X de la ventana de accion de cada actor

Eso debería funcionar :p,
Orochii Zouveleki

#8 Re: Ventana de Comando de Batalla el Lun Ene 07, 2013 9:32 pm

urbanhack

avatar
no nada... esa me mueve la ventana de informacion de todas formas el script lo dice no? infoview (osea el rectangulo de nombres y barras), pero = pasa lo mismo que con la ventana de comando al moverla se va borrando... esto parece mas complicoado de lo que parece... pero ojo lo vi en un monton de imagenes y videos... asique poder se puede... como? no se...

#9 Re: Ventana de Comando de Batalla el Mar Ene 08, 2013 3:58 am

FIGO

avatar
Ya lo solucioné por ser un novato no esta nada mal!! Hace de las 18:00 que estoy probando, jajaja

[img] [/img]

YA EXPLICO! Espera un momento que me fije lo que cambie y acomode un poco un poco

FIGO


#10 Re: Ventana de Comando de Batalla el Mar Ene 08, 2013 4:15 am

FIGO

avatar
Bueno vamos.

En primer lugar hay que definir nuevamente info_viewport de Scene_Battle:

Código:
#--------------------------------------------------------------------------
  # ● 情報表示ビューポートの作成
  #--------------------------------------------------------------------------
  def create_info_viewport
    @info_viewport = Viewport.new
    @info_viewport.rect.y = 200 - @status_window.height # Puse 200! No tocar!!
    #@info_viewport.rect.height = @status_window.height (anulé esta linea)
    @info_viewport.z = 0
    @info_viewport.ox = 64
    @status_window.viewport = @info_viewport
  end
En linea 203 borré Graphics.height y reemplace por un numero para situar todas las ventanas a mitad de pantalla.
Anule la linea 204 porque me me parecia insoportable, jajaja.

Por otro lado

Código:
#--------------------------------------------------------------------------
  # ● パーティコマンドウィンドウの作成
  #--------------------------------------------------------------------------
  def create_party_command_window # elear , escapar
    @party_command_window = Window_PartyCommand.new
    @party_command_window.viewport = @info_viewport
    @party_command_window.x = 0 #Posición X de la ventana de comandos de party
    @party_command_window.y = 216#Posición Y de la ventana de comandos de la party
    @party_command_window.set_handler(:fight,  method(:command_fight))
    @party_command_window.set_handler(:escape, method(:command_escape))
    @party_command_window.unselect
  end
  #--------------------------------------------------------------------------
  # ● アクターコマンドウィンドウの作成
  #--------------------------------------------------------------------------
  def create_actor_command_window
    @actor_command_window = Window_ActorCommand.new
    @actor_command_window.viewport = @info_viewport
    @actor_command_window.x = 320 #Posición X de la ventana de accion de cada actor
    @actor_command_window.y = 50 #Posición Y de la ventana de accion de cada actor
    @actor_command_window.set_handler(:attack, method(:command_attack))
    @actor_command_window.set_handler(:skill,  method(:command_skill))
    @actor_command_window.set_handler(:guard,  method(:command_guard))
    @actor_command_window.set_handler(:item,  method(:command_item))
    @actor_command_window.set_handler(:cancel, method(:prior_command))
  end
Aqui reemplace estas dos definiciones de la misma forma que puso rpgmanumaker antes. Linea 209 en adelante estas dos definiciones
def create_party_command_window
def create_actor_command_window

Observa que asigné valores para acomodar la ventana de party comand.

Por otro lado falta posicionar la ventana de seleccion de los enemigos:
Linea 266 creo : create_enemy_window
Reemplazalo por este nuevo codigo:
Código:
  #--------------------------------------------------------------------------
  # ● 敵キャラウィンドウの作成
  #--------------------------------------------------------------------------
  def create_enemy_window
    @enemy_window = Window_BattleEnemy.new(@info_viewport)
    @enemy_window.x = 0
    @enemy_window.y = 296 # asigne este valor para bajar!
    @enemy_window.set_handler(:ok,    method(:on_enemy_ok))
    @enemy_window.set_handler(:cancel, method(:on_enemy_cancel))
  end

Bueno ahora solo quedaria acomodar la ventana de status para bajarla a la ubicacion original, esto lo hacemos de la clase Window_BattleStatus:



Código:
 #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(0, 216, window_width, window_height) #0 , 0 aqui cambie!
    refresh
    self.openness = 0
  end

Cambie la linea 12, fijate que en lugar de 0 , 0 le puse 0, 216 para situarla mas abajo.
y listo.




SALUDOS
FIGO

Estoy contento, para un tecnico en alimentacion es mucho! jajaja Tendria que haber estudiado programacion!

Nota: para reubicar solo move esos valores de ubicacion, y proba mucho, move de a poco y observa resultados. Si tiene errores lo siento, alguien que sepa lo puede pulir!




Última edición por FIGO el Mar Ene 08, 2013 7:31 am, editado 3 veces

#11 Re: Ventana de Comando de Batalla el Mar Ene 08, 2013 4:43 am

urbanhack

avatar
jajaj buenisimo, es bueno sentirse orgulloso cuando uno hace algo de lo que no entiende un sorete... pero = eso no es lo que quieria jajajaja y es lo que no puedo hacer...
la ventana es asi
Código:
-------------------
-
-
-
------------------@
donde @ battle command window
y lo quiero mandar aca...
Código:
-------------------
-
-        @
-
-------------------

#12 Re: Ventana de Comando de Batalla el Mar Ene 08, 2013 4:52 am

FIGO

avatar
Error en una linea, ya esta!

Solo queda acomodar los valores un poco ( de ubicacion), mañana edito mas prolijas las coordenadas

[img] [/img]

#13 Re: Ventana de Comando de Batalla el Mar Ene 08, 2013 7:26 am

urbanhack

avatar
te estas convirtiendo en un scripter jajaja... gracias por preocuparte, yo = no lo estoy probando porq el maker lo tengo en mi pc y mi pc no tiene internet asiq boludeo en internet con la de la casa... aveces paso mi cpu aca para conectarme en internet ya que si tengo antena wifi pero no tengo modem wifi asiq no me puedo conectar... y como la usa todo el mundo esta no da andar pasando mi pc de aca para alla a cada rato... asiq mañana... osea hoy pero en unas cuantas horas... la voy a poder pasar aca donde tengo internet y probar...

#14 Re: Ventana de Comando de Batalla el Mar Ene 08, 2013 7:32 am

FIGO

avatar
Ya edite los valores ! quedo lindo!

#15 Re: Ventana de Comando de Batalla el Mar Ene 08, 2013 7:40 am

urbanhack

avatar
@FIGO escribió:Ya edite los valores ! quedo lindo!

seguis ahi?? tas a full hoy...! yo te imaginaba re durmiendo onda que salio un re chat no?
mejor pongo algo referente al post porque van a borrar el tema... eeee...
cuando quieras tirate el code en el post y cuando pueda lo pruebo..

#16 Re: Ventana de Comando de Batalla el Mar Ene 08, 2013 5:24 pm

FIGO

avatar
El codigo, o mejor dichos los codigos ya estan actualizados en el post de la hoja 1. estan corregidas las cordenadas y los valores de las ventanas.

Quedo asi:
Spoiler:
[img] [/img]

Spoiler:
[img] [/img]

Saludos

FIGO

#17 Re: Ventana de Comando de Batalla el Mar Ene 08, 2013 7:52 pm

rpgmanumaker

avatar
Oye, no sé si ésto te interese, pero creo que podrías quitar el fondo de la ventana de las elecciones de comandos... Es que esa ventana ahí en medio es un poco molesta para ver a los enemigos... Podrías poner la ventana con transparencia 0 y que solo queden las letras... Lo digo, para que te quede mejor... Un pequeño consejo XD.

#18 Re: Ventana de Comando de Batalla el Mar Ene 08, 2013 8:07 pm

urbanhack

avatar
@rpgmanumaker escribió:Oye, no sé si ésto te interese, pero creo que podrías quitar el fondo de la ventana de las elecciones de comandos... Es que esa ventana ahí en medio es un poco molesta para ver a los enemigos... Podrías poner la ventana con transparencia 0 y que solo queden las letras... Lo digo, para que te quede mejor... Un pequeño consejo XD.
es que es lo que voy a hacer no lo voy a dejar asi nomas... de todas formas ahora me falta centrar la ventana principal, osea el rectangulo de abajo lo tengo que dejar en el centro y tambien tengo que mover el comando de atacar y escapar, al mismo lugar donde esta el comando de batalla

#19 Re: Ventana de Comando de Batalla el Mar Ene 08, 2013 8:38 pm

urbanhack

avatar
bueh... acabo de probar... y no quedo como a vos te quedo reemplace cada parte de lo que modificaste pero lo unico que cambio es que la ventana de comando esta un poco mas arriba... revice varias veces aver si me salte algo pero no... esta = al post editado... me puse a probar un poco a ver si lo arreglaba pero nada... mejor posteate el script entero asi lo remplazo y fue, porque no me pregunters porque pero no me funcó

#20 Re: Ventana de Comando de Batalla el Mar Ene 08, 2013 11:42 pm

FIGO

avatar

Te debe haber faltado pegar algo, lo probe desde un juego nuevo pegando desde el foro y funka. De todas formas:

window battlestatus

Código:
#==============================================================================
# ■ Window_BattleStatus
#------------------------------------------------------------------------------
#  バトル画面で、パーティメンバーのステータスを表示するウィンドウです。
#==============================================================================

class Window_BattleStatus < Window_Selectable
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(0, 216, window_width, window_height) #0 , 0 aqui cambie!
    refresh
    self.openness = 0
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウ幅の取得
  #--------------------------------------------------------------------------
  def window_width
    Graphics.width - 128
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウ高さの取得
  #--------------------------------------------------------------------------
  def window_height
    fitting_height(visible_line_number)
  end
  #--------------------------------------------------------------------------
  # ● 表示行数の取得
  #--------------------------------------------------------------------------
  def visible_line_number
    return 4
  end
  #--------------------------------------------------------------------------
  # ● 項目数の取得
  #--------------------------------------------------------------------------
  def item_max
    $game_party.battle_members.size
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    draw_all_items
  end
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  def draw_item(index)
    actor = $game_party.battle_members[index]
    draw_basic_area(basic_area_rect(index), actor)
    draw_gauge_area(gauge_area_rect(index), actor)
  end
  #--------------------------------------------------------------------------
  # ● 基本エリアの矩形を取得
  #--------------------------------------------------------------------------
  def basic_area_rect(index)
    rect = item_rect_for_text(index)
    rect.width -= gauge_area_width + 10
    rect
  end
  #--------------------------------------------------------------------------
  # ● ゲージエリアの矩形を取得
  #--------------------------------------------------------------------------
  def gauge_area_rect(index)
    rect = item_rect_for_text(index)
    rect.x += rect.width - gauge_area_width
    rect.width = gauge_area_width
    rect
  end
  #--------------------------------------------------------------------------
  # ● ゲージエリアの幅を取得
  #--------------------------------------------------------------------------
  def gauge_area_width
    return 220
  end
  #--------------------------------------------------------------------------
  # ● 基本エリアの描画
  #--------------------------------------------------------------------------
  def draw_basic_area(rect, actor)
    draw_actor_name(actor, rect.x + 0, rect.y, 100)
    draw_actor_icons(actor, rect.x + 104, rect.y, rect.width - 104)
  end
  #--------------------------------------------------------------------------
  # ● ゲージエリアの描画
  #--------------------------------------------------------------------------
  def draw_gauge_area(rect, actor)
    if $data_system.opt_display_tp
      draw_gauge_area_with_tp(rect, actor)
    else
      draw_gauge_area_without_tp(rect, actor)
    end
  end
  #--------------------------------------------------------------------------
  # ● ゲージエリアの描画(TP あり)
  #--------------------------------------------------------------------------
  def draw_gauge_area_with_tp(rect, actor)
    draw_actor_hp(actor, rect.x + 0, rect.y, 72)
    draw_actor_mp(actor, rect.x + 82, rect.y, 64)
    draw_actor_tp(actor, rect.x + 156, rect.y, 64)
  end
  #--------------------------------------------------------------------------
  # ● ゲージエリアの描画(TP なし)
  #--------------------------------------------------------------------------
  def draw_gauge_area_without_tp(rect, actor)
    draw_actor_hp(actor, rect.x + 0, rect.y, 134)
    draw_actor_mp(actor, rect.x + 144,  rect.y, 76)
  end
end

Scene_Battle

Código:
#==============================================================================
# ■ Scene_Battle
#------------------------------------------------------------------------------
#  バトル画面の処理を行うクラスです。
#==============================================================================

class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # ● 開始処理
  #--------------------------------------------------------------------------
  def start
    super
    create_spriteset
    create_all_windows
    BattleManager.method_wait_for_message = method(:wait_for_message)
  end
  #--------------------------------------------------------------------------
  # ● 開始後処理
  #--------------------------------------------------------------------------
  def post_start
    super
    battle_start
  end
  #--------------------------------------------------------------------------
  # ● 終了前処理
  #--------------------------------------------------------------------------
  def pre_terminate
    super
    Graphics.fadeout(30) if SceneManager.scene_is?(Scene_Map)
    Graphics.fadeout(60) if SceneManager.scene_is?(Scene_Title)
  end
  #--------------------------------------------------------------------------
  # ● 終了処理
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_spriteset
    @info_viewport.dispose
    RPG::ME.stop
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    if BattleManager.in_turn?
      process_event
      process_action
    end
    BattleManager.judge_win_loss
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新(基本)
  #--------------------------------------------------------------------------
  def update_basic
    super
    $game_timer.update
    $game_troop.update
    @spriteset.update
    update_info_viewport
    update_message_open
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新(ウェイト用)
  #--------------------------------------------------------------------------
  def update_for_wait
    update_basic
  end
  #--------------------------------------------------------------------------
  # ● ウェイト
  #--------------------------------------------------------------------------
  def wait(duration)
    duration.times {|i| update_for_wait if i < duration / 2 || !show_fast? }
  end
  #--------------------------------------------------------------------------
  # ● 早送り判定
  #--------------------------------------------------------------------------
  def show_fast?
    Input.press?(:A) || Input.press?(:C)
  end
  #--------------------------------------------------------------------------
  # ● ウェイト(早送り無効)
  #--------------------------------------------------------------------------
  def abs_wait(duration)
    duration.times {|i| update_for_wait }
  end
  #--------------------------------------------------------------------------
  # ● 短時間ウェイト(早送り無効)
  #--------------------------------------------------------------------------
  def abs_wait_short
    abs_wait(15)
  end
  #--------------------------------------------------------------------------
  # ● メッセージ表示が終わるまでウェイト
  #--------------------------------------------------------------------------
  def wait_for_message
    @message_window.update
    update_for_wait while $game_message.visible
  end
  #--------------------------------------------------------------------------
  # ● アニメーション表示が終わるまでウェイト
  #--------------------------------------------------------------------------
  def wait_for_animation
    update_for_wait
    update_for_wait while @spriteset.animation?
  end
  #--------------------------------------------------------------------------
  # ● エフェクト実行が終わるまでウェイト
  #--------------------------------------------------------------------------
  def wait_for_effect
    update_for_wait
    update_for_wait while @spriteset.effect?
  end
  #--------------------------------------------------------------------------
  # ● 情報表示ビューポートの更新
  #--------------------------------------------------------------------------
  def update_info_viewport
    move_info_viewport(0)  if @party_command_window.active
    move_info_viewport(128) if @actor_command_window.active
    move_info_viewport(64)  if BattleManager.in_turn?
  end
  #--------------------------------------------------------------------------
  # ● 情報表示ビューポートの移動
  #--------------------------------------------------------------------------
  def move_info_viewport(ox)
    current_ox = @info_viewport.ox
    @info_viewport.ox = [ox, current_ox + 16].min if current_ox < ox
    @info_viewport.ox = [ox, current_ox - 16].max if current_ox > ox
  end
  #--------------------------------------------------------------------------
  # ● メッセージウィンドウを開く処理の更新
  #    ステータスウィンドウなどが閉じ終わるまでオープン度を 0 にする。
  #--------------------------------------------------------------------------
  def update_message_open
    if $game_message.busy? && !@status_window.close?
      @message_window.openness = 0
      @status_window.close
      @party_command_window.close
      @actor_command_window.close
    end
  end
  #--------------------------------------------------------------------------
  # ● スプライトセットの作成
  #--------------------------------------------------------------------------
  def create_spriteset
    @spriteset = Spriteset_Battle.new
  end
  #--------------------------------------------------------------------------
  # ● スプライトセットの解放
  #--------------------------------------------------------------------------
  def dispose_spriteset
    @spriteset.dispose
  end
  #--------------------------------------------------------------------------
  # ● 全ウィンドウの作成
  #--------------------------------------------------------------------------
  def create_all_windows
    create_message_window
    create_scroll_text_window
    create_log_window
    create_status_window
    create_info_viewport
    create_party_command_window
    create_actor_command_window
    create_help_window
    create_skill_window
    create_item_window
    create_actor_window
    create_enemy_window
  end
  #--------------------------------------------------------------------------
  # ● メッセージウィンドウの作成
  #--------------------------------------------------------------------------
  def create_message_window
    @message_window = Window_Message.new
  end
  #--------------------------------------------------------------------------
  # ● スクロール文章ウィンドウの作成
  #--------------------------------------------------------------------------
  def create_scroll_text_window
    @scroll_text_window = Window_ScrollText.new
  end
  #--------------------------------------------------------------------------
  # ● ログウィンドウの作成
  #--------------------------------------------------------------------------
  def create_log_window
    @log_window = Window_BattleLog.new
    @log_window.method_wait = method(:wait)
    @log_window.method_wait_for_effect = method(:wait_for_effect)
  end
  #--------------------------------------------------------------------------
  # ● ステータスウィンドウの作成
  #--------------------------------------------------------------------------
  def create_status_window
    @status_window = Window_BattleStatus.new
    @status_window.x = 128
  end
  #--------------------------------------------------------------------------
  # ● 情報表示ビューポートの作成
  #--------------------------------------------------------------------------
  def create_info_viewport
    @info_viewport = Viewport.new
    @info_viewport.rect.y = 200 - @status_window.height # Puse 200! No tocar!!
    #@info_viewport.rect.height = @status_window.height (anulé esta linea)
    @info_viewport.z = 0
    @info_viewport.ox = 64
    @status_window.viewport = @info_viewport
  end
  #--------------------------------------------------------------------------
  # ● パーティコマンドウィンドウの作成
  #--------------------------------------------------------------------------
  def create_party_command_window # elear , escapar
    @party_command_window = Window_PartyCommand.new
    @party_command_window.viewport = @info_viewport
    @party_command_window.x = 0 #Posición X de la ventana de comandos de party
    @party_command_window.y = 216#Posición Y de la ventana de comandos de la party
    @party_command_window.set_handler(:fight,  method(:command_fight))
    @party_command_window.set_handler(:escape, method(:command_escape))
    @party_command_window.unselect
  end
  #--------------------------------------------------------------------------
  # ● アクターコマンドウィンドウの作成
  #--------------------------------------------------------------------------
  def create_actor_command_window
    @actor_command_window = Window_ActorCommand.new
    @actor_command_window.viewport = @info_viewport
    @actor_command_window.x = 320 #Posición X de la ventana de accion de cada actor
    @actor_command_window.y = 50 #Posición Y de la ventana de accion de cada actor
    @actor_command_window.set_handler(:attack, method(:command_attack))
    @actor_command_window.set_handler(:skill,  method(:command_skill))
    @actor_command_window.set_handler(:guard,  method(:command_guard))
    @actor_command_window.set_handler(:item,  method(:command_item))
    @actor_command_window.set_handler(:cancel, method(:prior_command))
  end
  #--------------------------------------------------------------------------
  # ● ヘルプウィンドウの作成
  #--------------------------------------------------------------------------
  def create_help_window
    @help_window = Window_Help.new
    @help_window.visible = false
  end
  #--------------------------------------------------------------------------
  # ● スキルウィンドウの作成
  #--------------------------------------------------------------------------
  def create_skill_window
    @skill_window = Window_BattleSkill.new(@help_window, @info_viewport)
    @skill_window.set_handler(:ok,    method(:on_skill_ok))
    @skill_window.set_handler(:cancel, method(:on_skill_cancel))
  end
  #--------------------------------------------------------------------------
  # ● アイテムウィンドウの作成
  #--------------------------------------------------------------------------
  def create_item_window
    @item_window = Window_BattleItem.new(@help_window, @info_viewport)
    @item_window.set_handler(:ok,    method(:on_item_ok))
    @item_window.set_handler(:cancel, method(:on_item_cancel))
  end
  #--------------------------------------------------------------------------
  # ● アクターウィンドウの作成
  #--------------------------------------------------------------------------
  def create_actor_window
    @actor_window = Window_BattleActor.new(@info_viewport)
    @actor_window.set_handler(:ok,    method(:on_actor_ok))
    @actor_window.set_handler(:cancel, method(:on_actor_cancel))
  end
  #--------------------------------------------------------------------------
  # ● 敵キャラウィンドウの作成
  #--------------------------------------------------------------------------
  def create_enemy_window
    @enemy_window = Window_BattleEnemy.new(@info_viewport)
    @enemy_window.x = 0
    @enemy_window.y = 296 # asigne este valor para bajar!
    @enemy_window.set_handler(:ok,    method(:on_enemy_ok))
    @enemy_window.set_handler(:cancel, method(:on_enemy_cancel))
  end
  #--------------------------------------------------------------------------
  # ● ステータスウィンドウの情報を更新
  #--------------------------------------------------------------------------
  def refresh_status
    @status_window.refresh
  end
  #--------------------------------------------------------------------------
  # ● 次のコマンド入力へ
  #--------------------------------------------------------------------------
  def next_command
    if BattleManager.next_command
      start_actor_command_selection
    else
      turn_start
    end
  end
  #--------------------------------------------------------------------------
  # ● 前のコマンド入力へ
  #--------------------------------------------------------------------------
  def prior_command
    if BattleManager.prior_command
      start_actor_command_selection
    else
      start_party_command_selection
    end
  end
  #--------------------------------------------------------------------------
  # ● パーティコマンド選択の開始
  #--------------------------------------------------------------------------
  def start_party_command_selection
    unless scene_changing?
      refresh_status
      @status_window.unselect
      @status_window.open
      if BattleManager.input_start
        @actor_command_window.close
        @party_command_window.setup
      else
        @party_command_window.deactivate
        turn_start
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● コマンド[戦う]
  #--------------------------------------------------------------------------
  def command_fight
    next_command
  end
  #--------------------------------------------------------------------------
  # ● コマンド[逃げる]
  #--------------------------------------------------------------------------
  def command_escape
    turn_start unless BattleManager.process_escape
  end
  #--------------------------------------------------------------------------
  # ● アクターコマンド選択の開始
  #--------------------------------------------------------------------------
  def start_actor_command_selection
    @status_window.select(BattleManager.actor.index)
    @party_command_window.close
    @actor_command_window.setup(BattleManager.actor)
  end
  #--------------------------------------------------------------------------
  # ● コマンド[攻撃]
  #--------------------------------------------------------------------------
  def command_attack
    BattleManager.actor.input.set_attack
    select_enemy_selection
  end
  #--------------------------------------------------------------------------
  # ● コマンド[スキル]
  #--------------------------------------------------------------------------
  def command_skill
    @skill_window.actor = BattleManager.actor
    @skill_window.stype_id = @actor_command_window.current_ext
    @skill_window.refresh
    @skill_window.show.activate
  end
  #--------------------------------------------------------------------------
  # ● コマンド[防御]
  #--------------------------------------------------------------------------
  def command_guard
    BattleManager.actor.input.set_guard
    next_command
  end
  #--------------------------------------------------------------------------
  # ● コマンド[アイテム]
  #--------------------------------------------------------------------------
  def command_item
    @item_window.refresh
    @item_window.show.activate
  end
  #--------------------------------------------------------------------------
  # ● アクター選択の開始
  #--------------------------------------------------------------------------
  def select_actor_selection
    @actor_window.refresh
    @actor_window.show.activate
  end
  #--------------------------------------------------------------------------
  # ● アクター[決定]
  #--------------------------------------------------------------------------
  def on_actor_ok
    BattleManager.actor.input.target_index = @actor_window.index
    @actor_window.hide
    @skill_window.hide
    @item_window.hide
    next_command
  end
  #--------------------------------------------------------------------------
  # ● アクター[キャンセル]
  #--------------------------------------------------------------------------
  def on_actor_cancel
    @actor_window.hide
    case @actor_command_window.current_symbol
    when :skill
      @skill_window.activate
    when :item
      @item_window.activate
    end
  end
  #--------------------------------------------------------------------------
  # ● 敵キャラ選択の開始
  #--------------------------------------------------------------------------
  def select_enemy_selection
    @enemy_window.refresh
    @enemy_window.show.activate
  end
  #--------------------------------------------------------------------------
  # ● 敵キャラ[決定]
  #--------------------------------------------------------------------------
  def on_enemy_ok
    BattleManager.actor.input.target_index = @enemy_window.enemy.index
    @enemy_window.hide
    @skill_window.hide
    @item_window.hide
    next_command
  end
  #--------------------------------------------------------------------------
  # ● 敵キャラ[キャンセル]
  #--------------------------------------------------------------------------
  def on_enemy_cancel
    @enemy_window.hide
    case @actor_command_window.current_symbol
    when :attack
      @actor_command_window.activate
    when :skill
      @skill_window.activate
    when :item
      @item_window.activate
    end
  end
  #--------------------------------------------------------------------------
  # ● スキル[決定]
  #--------------------------------------------------------------------------
  def on_skill_ok
    @skill = @skill_window.item
    BattleManager.actor.input.set_skill(@skill.id)
    BattleManager.actor.last_skill.object = @skill
    if !@skill.need_selection?
      @skill_window.hide
      next_command
    elsif @skill.for_opponent?
      select_enemy_selection
    else
      select_actor_selection
    end
  end
  #--------------------------------------------------------------------------
  # ● スキル[キャンセル]
  #--------------------------------------------------------------------------
  def on_skill_cancel
    @skill_window.hide
    @actor_command_window.activate
  end
  #--------------------------------------------------------------------------
  # ● アイテム[決定]
  #--------------------------------------------------------------------------
  def on_item_ok
    @item = @item_window.item
    BattleManager.actor.input.set_item(@item.id)
    if !@item.need_selection?
      @item_window.hide
      next_command
    elsif @item.for_opponent?
      select_enemy_selection
    else
      select_actor_selection
    end
    $game_party.last_item.object = @item
  end
  #--------------------------------------------------------------------------
  # ● アイテム[キャンセル]
  #--------------------------------------------------------------------------
  def on_item_cancel
    @item_window.hide
    @actor_command_window.activate
  end
  #--------------------------------------------------------------------------
  # ● 戦闘開始
  #--------------------------------------------------------------------------
  def battle_start
    BattleManager.battle_start
    process_event
    start_party_command_selection
  end
  #--------------------------------------------------------------------------
  # ● ターン開始
  #--------------------------------------------------------------------------
  def turn_start
    @party_command_window.close
    @actor_command_window.close
    @status_window.unselect
    @subject =  nil
    BattleManager.turn_start
    @log_window.wait
    @log_window.clear
  end
  #--------------------------------------------------------------------------
  # ● ターン終了
  #--------------------------------------------------------------------------
  def turn_end
    all_battle_members.each do |battler|
      battler.on_turn_end
      refresh_status
      @log_window.display_auto_affected_status(battler)
      @log_window.wait_and_clear
    end
    BattleManager.turn_end
    process_event
    start_party_command_selection
  end
  #--------------------------------------------------------------------------
  # ● 敵味方合わせた全バトルメンバーの取得
  #--------------------------------------------------------------------------
  def all_battle_members
    $game_party.members + $game_troop.members
  end
  #--------------------------------------------------------------------------
  # ● イベントの処理
  #--------------------------------------------------------------------------
  def process_event
    while !scene_changing?
      $game_troop.interpreter.update
      $game_troop.setup_battle_event
      wait_for_message
      wait_for_effect if $game_troop.all_dead?
      process_forced_action
      BattleManager.judge_win_loss
      break unless $game_troop.interpreter.running?
      update_for_wait
    end
  end
  #--------------------------------------------------------------------------
  # ● 強制された戦闘行動の処理
  #--------------------------------------------------------------------------
  def process_forced_action
    if BattleManager.action_forced?
      last_subject = @subject
      @subject = BattleManager.action_forced_battler
      BattleManager.clear_action_force
      process_action
      @subject = last_subject
    end
  end
  #--------------------------------------------------------------------------
  # ● 戦闘行動の処理
  #--------------------------------------------------------------------------
  def process_action
    return if scene_changing?
    if !@subject || !@subject.current_action
      @subject = BattleManager.next_subject
    end
    return turn_end unless @subject
    if @subject.current_action
      @subject.current_action.prepare
      if @subject.current_action.valid?
        @status_window.open
        execute_action
      end
      @subject.remove_current_action
    end
    process_action_end unless @subject.current_action
  end
  #--------------------------------------------------------------------------
  # ● 戦闘行動終了時の処理
  #--------------------------------------------------------------------------
  def process_action_end
    @subject.on_action_end
    refresh_status
    @log_window.display_auto_affected_status(@subject)
    @log_window.wait_and_clear
    @log_window.display_current_state(@subject)
    @log_window.wait_and_clear
    BattleManager.judge_win_loss
  end
  #--------------------------------------------------------------------------
  # ● 戦闘行動の実行
  #--------------------------------------------------------------------------
  def execute_action
    @subject.sprite_effect_type = :whiten
    use_item
    @log_window.wait_and_clear
  end
  #--------------------------------------------------------------------------
  # ● スキル/アイテムの使用
  #--------------------------------------------------------------------------
  def use_item
    item = @subject.current_action.item
    @log_window.display_use_item(@subject, item)
    @subject.use_item(item)
    refresh_status
    targets = @subject.current_action.make_targets.compact
    show_animation(targets, item.animation_id)
    targets.each {|target| item.repeats.times { invoke_item(target, item) } }
  end
  #--------------------------------------------------------------------------
  # ● スキル/アイテムの発動
  #--------------------------------------------------------------------------
  def invoke_item(target, item)
    if rand < target.item_cnt(@subject, item)
      invoke_counter_attack(target, item)
    elsif rand < target.item_mrf(@subject, item)
      invoke_magic_reflection(target, item)
    else
      apply_item_effects(apply_substitute(target, item), item)
    end
    @subject.last_target_index = target.index
  end
  #--------------------------------------------------------------------------
  # ● スキル/アイテムの効果を適用
  #--------------------------------------------------------------------------
  def apply_item_effects(target, item)
    target.item_apply(@subject, item)
    refresh_status
    @log_window.display_action_results(target, item)
  end
  #--------------------------------------------------------------------------
  # ● 反撃の発動
  #--------------------------------------------------------------------------
  def invoke_counter_attack(target, item)
    @log_window.display_counter(target, item)
    attack_skill = $data_skills[target.attack_skill_id]
    @subject.item_apply(target, attack_skill)
    refresh_status
    @log_window.display_action_results(@subject, attack_skill)
  end
  #--------------------------------------------------------------------------
  # ● 魔法反射の発動
  #--------------------------------------------------------------------------
  def invoke_magic_reflection(target, item)
    @log_window.display_reflection(target, item)
    apply_item_effects(@subject, item)
  end
  #--------------------------------------------------------------------------
  # ● 身代わりの適用
  #--------------------------------------------------------------------------
  def apply_substitute(target, item)
    if check_substitute(target, item)
      substitute = target.friends_unit.substitute_battler
      if substitute && target != substitute
        @log_window.display_substitute(substitute, target)
        return substitute
      end
    end
    target
  end
  #--------------------------------------------------------------------------
  # ● 身代わり条件チェック
  #--------------------------------------------------------------------------
  def check_substitute(target, item)
    target.hp < target.mhp / 4 && (!item || !item.certain?)
  end
  #--------------------------------------------------------------------------
  # ● アニメーションの表示
  #    targets      : 対象者の配列
  #    animation_id : アニメーション ID(-1: 通常攻撃と同じ)
  #--------------------------------------------------------------------------
  def show_animation(targets, animation_id)
    if animation_id < 0
      show_attack_animation(targets)
    else
      show_normal_animation(targets, animation_id)
    end
    @log_window.wait
    wait_for_animation
  end
  #--------------------------------------------------------------------------
  # ● 攻撃アニメーションの表示
  #    targets : 対象者の配列
  #    アクターの場合は二刀流を考慮(左手武器は反転して表示)。
  #    敵キャラの場合は [敵の通常攻撃] 効果音を演奏して一瞬待つ。
  #--------------------------------------------------------------------------
  def show_attack_animation(targets)
    if @subject.actor?
      show_normal_animation(targets, @subject.atk_animation_id1, false)
      show_normal_animation(targets, @subject.atk_animation_id2, true)
    else
      Sound.play_enemy_attack
      abs_wait_short
    end
  end
  #--------------------------------------------------------------------------
  # ● 通常アニメーションの表示
  #    targets      : 対象者の配列
  #    animation_id : アニメーション ID
  #    mirror      : 左右反転
  #--------------------------------------------------------------------------
  def show_normal_animation(targets, animation_id, mirror = false)
    animation = $data_animations[animation_id]
    if animation
      targets.each do |target|
        target.animation_id = animation_id
        target.animation_mirror = mirror
        abs_wait_short unless animation.to_screen?
      end
      abs_wait_short if animation.to_screen?
    end
  end
end

Mad

#21 Re: Ventana de Comando de Batalla el Miér Ene 09, 2013 1:33 am

urbanhack

avatar
lo habia copiado bien pero no me funca... se ve que algun script no me deja ponerlo en esa pocion. porque cree un proyecto de 0 y quedo como vos lo hiciste pero en mi proyecto no funca... asique ya me calente y lo dejo ahi tirado... me quice pasar al xp pero cualquier script que quiero poner me tira error de compatibilidad de versiones... modo furia ON

#22 Re: Ventana de Comando de Batalla el Jue Ene 17, 2013 3:51 pm

rpgmanumaker

avatar
XDDD. Bueno, si tienes algún script en tu juego de sistema de batalla... deberías de modificar ese script para poner los comandos en la posición que quieres... si no tienes ninguno que modifique el sistema de batalla por defecto (default battle system) No debería de tener ningún problema...
Si quieres pasarte al XP... cosa que no haría ni muerto... por los tipos de mapas... y tileset... creo que podrías en vez de... revivir este tema... pedir ayuda en esta sección con otro tema... Has hecho necroposting (creo) y doble post XD. Según tengo entendido... eso está sancionado... solo lo digo para que tenga más cuidado la próxima vez. Perdónenme si me estoy equivocando al decir que ha hecho necroposting...

#23 Re: Ventana de Comando de Batalla el Jue Ene 17, 2013 3:53 pm

rpgmanumaker

avatar
XDDD. Bueno, si tienes algún script en tu juego de sistema de batalla... deberías de modificar ese script para poner los comandos en la posición que quieres... si no tienes ninguno que modifique el sistema de batalla por defecto (default battle system) No debería de tener ningún problema...
Si quieres pasarte al XP... cosa que no haría ni muerto... por los tipos de mapas... y tileset... creo que podrías en vez de... revivir este tema... pedir ayuda en esta sección con otro tema... Has hecho necroposting (creo) y doble post XD. Según tengo entendido... eso está sancionado... solo lo digo para que tenga más cuidado la próxima vez. Perdónenme si me estoy equivocando al decir que ha hecho necroposting...

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

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