¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Últimos temas
» Hola mucho gusto
por Hk Diamond Hoy a las 13:49

» [AYUDA]Hootshot de moghunter
por Rudy_kinneas Hoy a las 12:03

» Holaaa a tod@s!!!
por nacho Hoy a las 09:47

» SoraDeathss se presenta!
por chronoMxx Hoy a las 07:50

» {AYUDA}Blizz-ABS Script
por chronoMxx Hoy a las 06:45

» las cosas como son...
por Bleuw Hoy a las 04:18

» Busco artistas graficos para proyecto serio
por Rudy_kinneas Ayer a las 20:52

» Duda con música en RPG MV
por Fleabass Ayer a las 20:25

» Recopilación de páginas con recursos RPG Maker
por RiKennedy-Maker Ayer a las 20:00

» [DUDA] Titulo de RPGM XP con varias imagenes
por Wecoc Ayer a las 08:38

Afiliados
Estadísticas
Tenemos 3381 miembros registrados.
El último usuario registrado es Hk Diamond.

Nuestros miembros han publicado un total de 79749 mensajes en 11244 argumentos.
Navega con Google Chrome
[DESCARGA]

Cambiar mensajes de CRITICAL y MISS?

 :: RPG Maker :: Ayuda RPG

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP Cambiar mensajes de CRITICAL y MISS?

Mensaje por wemento el 2015-11-07, 19:13

Hola, buenas a todos.

Esta vez es una pregunta muy simple. ¿Dónde puedo cambiar los mensajes de CRITICAL y MISS que aparecen en combate? No he visto ninguna opción por ahí, igual es que estoy un poco cegato, pero bueno, por lo general la pregunta creo que es bastante simple.

Es por españolizar un poco el juego, jajaja.

Gracias.

Salu2

wemento
Iniciado
Iniciado

0/3

Créditos 57

Gracias : 5

Volver arriba Ir abajo

RPG Maker XP Re: Cambiar mensajes de CRITICAL y MISS?

Mensaje por kyonides-arkanthos el 2015-11-07, 19:29

Este sería el código, si utilizas el sistema de batallas que viene por defecto. No doy garantías de que funcione con otros sistemas. Si te sirve, cópialo y pégalo sobre Main.

Código:
module Labels
  BATTLE_CRITICAL = 'Crítico' # Para Golpe Crítico
  BATTLE_MISS = 'Fallido' # Para Golpe Fallido
end

module RPG
  class Sprite < ::Sprite
    def damage(value, critical)
      dispose_damage
      if value.is_a?(Numeric)
        damage_string = value.abs.to_s
      else
        damage_string = value.to_s
      end
      bitmap = Bitmap.new(160, 48)
      bitmap.font.name = "Arial Black"
      bitmap.font.size = 32
      bitmap.font.color.set(0, 0, 0)
      bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
      bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
      bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
      bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
      if value.is_a?(Numeric) and value < 0
        bitmap.font.color.set(176, 255, 144)
      else
        bitmap.font.color.set(255, 255, 255)
      end
      bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
      if critical
        bitmap.font.size = 20
        bitmap.font.color.set(0, 0, 0)
        bitmap.draw_text(-1, -1, 160, 20, Labels::BATTLE_CRITICAL, 1)
        bitmap.draw_text(+1, -1, 160, 20, Labels::BATTLE_CRITICAL, 1)
        bitmap.draw_text(-1, +1, 160, 20, Labels::BATTLE_CRITICAL, 1)
        bitmap.draw_text(+1, +1, 160, 20, Labels::BATTLE_CRITICAL, 1)
        bitmap.font.color.set(255, 255, 255)
        bitmap.draw_text(0, 0, 160, 20, Labels::BATTLE_CRITICAL, 1)
      end
      @_damage_sprite = ::Sprite.new(self.viewport)
      @_damage_sprite.bitmap = bitmap
      @_damage_sprite.ox = 80
      @_damage_sprite.oy = 20
      @_damage_sprite.x = self.x
      @_damage_sprite.y = self.y - self.oy / 2
      @_damage_sprite.z = 3000
      @_damage_duration = 40
    end
  end
end

class Game_Battler
  def attack_effect(attacker)
    self.critical = false
    hit_result = (rand(100) < attacker.hit)
    if hit_result == true
      atk = [attacker.atk - self.pdef / 2, 0].max
      self.damage = atk * (20 + attacker.str) / 20
      self.damage *= elements_correct(attacker.element_set)
      self.damage /= 100
      if self.damage > 0
        if rand(100) < 4 * attacker.dex / self.agi
          self.damage *= 2
          self.critical = true
        end
        if self.guarding?
          self.damage /= 2
        end
      end
      if self.damage.abs > 0
        amp = [self.damage.abs * 15 / 100, 1].max
        self.damage += rand(amp+1) + rand(amp+1) - amp
      end
      eva = 8 * self.agi / attacker.dex + self.eva
      hit = self.damage < 0 ? 100 : 100 - eva
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
    end
    if hit_result == true
      remove_states_shock
      self.hp -= self.damage
      @state_changed = false
      states_plus(attacker.plus_state_set)
      states_minus(attacker.minus_state_set)
    else
      self.damage = Labels::BATTLE_MISS
      self.critical = false
    end
    return true
  end

  def skill_effect(user, skill)
    self.critical = false
    if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
       ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
      return false
    end
    effective = false
    effective |= skill.common_event_id > 0
    hit = skill.hit
    if skill.atk_f > 0
      hit *= user.hit / 100
    end
    hit_result = (rand(100) < hit)
    effective |= hit < 100
    if hit_result == true
      power = skill.power + user.atk * skill.atk_f / 100
      if power > 0
        power -= self.pdef * skill.pdef_f / 200
        power -= self.mdef * skill.mdef_f / 200
        power = [power, 0].max
      end
      rate = 20
      rate += (user.str * skill.str_f / 100)
      rate += (user.dex * skill.dex_f / 100)
      rate += (user.agi * skill.agi_f / 100)
      rate += (user.int * skill.int_f / 100)
      self.damage = power * rate / 20
      self.damage *= elements_correct(skill.element_set)
      self.damage /= 100
      if self.damage > 0
        if self.guarding?
          self.damage /= 2
        end
      end
      if skill.variance > 0 and self.damage.abs > 0
        amp = [self.damage.abs * skill.variance / 100, 1].max
        self.damage += rand(amp+1) + rand(amp+1) - amp
      end
      eva = 8 * self.agi / user.dex + self.eva
      hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
      effective |= hit < 100
    end
    if hit_result == true
      if skill.power != 0 and skill.atk_f > 0
        remove_states_shock
        effective = true
      end
      last_hp = self.hp
      self.hp -= self.damage
      effective |= self.hp != last_hp
      @state_changed = false
      effective |= states_plus(skill.plus_state_set)
      effective |= states_minus(skill.minus_state_set)
      if skill.power == 0
        self.damage = ""
        unless @state_changed
          self.damage = Labels::BATTLE_MISS
        end
      end
    else
      self.damage = Labels::BATTLE_MISS
    end
    unless $game_temp.in_battle
      self.damage = nil
    end
    return effective
  end

  def item_effect(item)
    self.critical = false
    if ((item.scope == 3 or item.scope == 4) and self.hp == 0) or
       ((item.scope == 5 or item.scope == 6) and self.hp >= 1)
      return false
    end
    effective = false
    effective |= item.common_event_id > 0
    hit_result = (rand(100) < item.hit)
    effective |= item.hit < 100
    if hit_result == true
      recover_hp = maxhp * item.recover_hp_rate / 100 + item.recover_hp
      recover_sp = maxsp * item.recover_sp_rate / 100 + item.recover_sp
      if recover_hp < 0
        recover_hp += self.pdef * item.pdef_f / 20
        recover_hp += self.mdef * item.mdef_f / 20
        recover_hp = [recover_hp, 0].min
      end
      recover_hp *= elements_correct(item.element_set)
      recover_hp /= 100
      recover_sp *= elements_correct(item.element_set)
      recover_sp /= 100
      if item.variance > 0 and recover_hp.abs > 0
        amp = [recover_hp.abs * item.variance / 100, 1].max
        recover_hp += rand(amp+1) + rand(amp+1) - amp
      end
      if item.variance > 0 and recover_sp.abs > 0
        amp = [recover_sp.abs * item.variance / 100, 1].max
        recover_sp += rand(amp+1) + rand(amp+1) - amp
      end
      if recover_hp < 0
        if self.guarding?
          recover_hp /= 2
        end
      end
      self.damage = -recover_hp
      last_hp = self.hp
      last_sp = self.sp
      self.hp += recover_hp
      self.sp += recover_sp
      effective |= self.hp != last_hp
      effective |= self.sp != last_sp
      @state_changed = false
      effective |= states_plus(item.plus_state_set)
      effective |= states_minus(item.minus_state_set)
      if item.parameter_type > 0 and item.parameter_points != 0
        case item.parameter_type
        when 1  # Max HP
          @maxhp_plus += item.parameter_points
        when 2  # Max SP
          @maxsp_plus += item.parameter_points
        when 3  # Strength
          @str_plus += item.parameter_points
        when 4  # Dexterity
          @dex_plus += item.parameter_points
        when 5  # Agility
          @agi_plus += item.parameter_points
        when 6  # Intelligence
          @int_plus += item.parameter_points
        end
        effective = true
      end
      if item.recover_hp_rate == 0 and item.recover_hp == 0
        self.damage = ""
        if item.recover_sp_rate == 0 and item.recover_sp == 0 and
           (item.parameter_type == 0 or item.parameter_points == 0)
          unless @state_changed
            self.damage = Labels::BATTLE_MISS
          end
        end
      end
    else
      self.damage = Labels::BATTLE_MISS
    end
    unless $game_temp.in_battle
      self.damage = nil
    end
    return effective
  end
end

class Scene_Battle
  def update_phase4_step4
    for target in @target_battlers
      target.animation_id = @animation2_id
      target.animation_hit = (target.damage != Labels::BATTLE_MISS)
    end
    @wait_count = 8
    @phase4_step = 5
  end
end

kyonides-arkanthos
Principiante
Principiante

0/3

Créditos 397

Gracias : 54

Volver arriba Ir abajo

RPG Maker XP Re: Cambiar mensajes de CRITICAL y MISS?

Mensaje por wemento el 2015-11-07, 20:29

Tanto código para algo tan simple?

Uso otro sistema de batallas, el script ZTBS de batallas tácticas. Aunque depende directamente de algunas cosas de los combates estándar, ésta entre otras.

Voy a probarlo ahora mismo y te comento.

EDIT: Perfecto, funciona a la perfección. Seguiré probándolo a medida que avance en el desarrollo del juego y si da algún fallo te lo reporto.

Mil gracias.

wemento
Iniciado
Iniciado

0/3

Créditos 57

Gracias : 5

Volver arriba Ir abajo

RPG Maker XP Re: Cambiar mensajes de CRITICAL y MISS?

Mensaje por kyonides-arkanthos el 2015-11-07, 22:07

Pues, la compañía que entonces desarrollaba esta versión del Maker no era como que la más práctica, sus desarrolladores en Ruby eran como que algo novatos y no pensaban de la manera más conveniente para el usuario sino la más pragmática para cumplir con las exigencias básicas de sus superiores. Pudieron haberlo hecho ellos mismos, pero luego de 4 dizque actualizaciones no hicieron la gran cosa.

Si se llega a dar un error, no sería por lo que aporté porque en realidad es casi idéntico a lo que ya viene por defecto sino que sería culpa del ZTBS y solo del ZTBS. Aún así dudo que vaya a pasar si no te ocurrió desde el inicio.

kyonides-arkanthos
Principiante
Principiante

0/3

Créditos 397

Gracias : 54

Volver arriba Ir abajo

RPG Maker XP Re: Cambiar mensajes de CRITICAL y MISS?

Mensaje por Wecoc el 2015-11-07, 23:26

Dejando las strings de "Miss" y "Critical" tal cual y haciendo una equivalencia en el def damage te ahorrarías líneas y también posibles incompatibilidades.

Código:
module RPG
  class Sprite < ::Sprite
   
    BATTLE_CRITICAL = 'Crítico' # Para Golpe Crítico
    BATTLE_MISS = 'Fallido'    # Para Golpe Fallido
   
    def damage(value, critical)
      dispose_damage
      if value.is_a?(Numeric)
        damage_string = value.abs.to_s
      else
        if value == "Miss"
          damage_string = BATTLE_MISS
        else
          damage_string = value.to_s
        end
      end
      bitmap = Bitmap.new(160, 48)
      bitmap.font.name = "Arial Black"
      bitmap.font.size = 32
      bitmap.font.color.set(0, 0, 0)
      bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
      bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
      bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
      bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
      if value.is_a?(Numeric) and value < 0
        bitmap.font.color.set(176, 255, 144)
      else
        bitmap.font.color.set(255, 255, 255)
      end
      bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
      if critical
        bitmap.font.size = 20
        bitmap.font.color.set(0, 0, 0)
        bitmap.draw_text(-1, -1, 160, 20, BATTLE_CRITICAL, 1)
        bitmap.draw_text(+1, -1, 160, 20, BATTLE_CRITICAL, 1)
        bitmap.draw_text(-1, +1, 160, 20, BATTLE_CRITICAL, 1)
        bitmap.draw_text(+1, +1, 160, 20, BATTLE_CRITICAL, 1)
        bitmap.font.color.set(255, 255, 255)
        bitmap.draw_text(0, 0, 160, 20, BATTLE_CRITICAL, 1)
      end
      @_damage_sprite = ::Sprite.new(self.viewport)
      @_damage_sprite.bitmap = bitmap
      @_damage_sprite.ox = 80
      @_damage_sprite.oy = 20
      @_damage_sprite.x = self.x
      @_damage_sprite.y = self.y - self.oy / 2
      @_damage_sprite.z = 3000
      @_damage_duration = 40
    end
  end
end

No lo puedo testear pero... debería valer.

Wecoc
Administrador
Administrador



Créditos 8263

Gracias : 372

Volver arriba Ir abajo

RPG Maker XP Re: Cambiar mensajes de CRITICAL y MISS?

Mensaje por wemento el 2015-11-08, 00:50

kyonides-arkanthos escribió:Pues, la compañía que entonces desarrollaba esta versión del Maker no era como que la más práctica, sus desarrolladores en Ruby eran como que algo novatos y no pensaban de la manera más conveniente para el usuario sino la más pragmática para cumplir con las exigencias básicas de sus superiores. Pudieron haberlo hecho ellos mismos, pero luego de 4 dizque actualizaciones no hicieron la gran cosa.

Pues la verdad es que sí. Espero que ahora con la incorporación de javascript los códigos estén más optimizados. Sobretodo porque eso los hace más legibles para los scripters.

Wecoc escribió:No lo puedo testear pero... debería valer.

Comprobado. Funciona también. Te digo lo mismo, si da fallo reporto. De todas formas, como dice kyonides, no debería dar ningún fallo si no lo ha dado ya, pero nunca se sabe...

Y una pregunta extra, por curiosidad... ¿Dónde aprendisteis RGSS?

Muchas gracias a ambos.

wemento
Iniciado
Iniciado

0/3

Créditos 57

Gracias : 5

Volver arriba Ir abajo

RPG Maker XP Re: Cambiar mensajes de CRITICAL y MISS?

Mensaje por kyonides-arkanthos el 2015-11-08, 01:21

No es buena idea decirle a los usuarios que se metan en una clase y modifiquen los valores. Como crear un módulo tan corto no supone un overhead de importancia, no tiene nada de malo que se haya incluido. Es más, ese módulo se puede extender más adelante para otras cosas que no vengan traducidas o con facilidad de traducirlas. Esto convierte al módulo en una buena idea si se piensa en el posible futuro, podrían ir solo a un único punto a hacer todos los cambios de etiquetas que sería mucho más fàcil de localizar.

Lo de los métodos de Game_Battler, pues, sí, se pueden omitir, no veo por qué no se haría. Me hubiera gustado que no hubieran tratado a RPG::Sprite como clase "oculta" en RGSS1, pero dudo que eso vaya a cambiar tantos años después.

Aunque me queda la duda de si realmente no se llegó a ocupar lo siguiente:

Código:
class Scene_Battle
  def update_phase4_step4
    for target in @target_battlers
      target.animation_id = @animation2_id
      target.animation_hit = (target.damage != Labels::BATTLE_MISS)
    end
    @wait_count = 8
    @phase4_step = 5
  end
end

Como ese chequeo no me lo inventé, tendría que ver si realmente no se ocupa modificar dicho método.

kyonides-arkanthos
Principiante
Principiante

0/3

Créditos 397

Gracias : 54

Volver arriba Ir abajo

RPG Maker XP Re: Cambiar mensajes de CRITICAL y MISS?

Mensaje por Contenido patrocinado Hoy a las 15:37


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Ayuda RPG

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