¡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
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 3399 miembros registrados.
El último usuario registrado es agapitovillaporca_803.

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

Un bug inesperado

 :: RPG Maker :: Ayuda RPG

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP Un bug inesperado

Mensaje por BlazeCrimson el 2014-05-26, 13:22

¡Buenas! Desde hace unas semanas estaba utilizando un script para poder "Robar" a los enemigos.
Éste parecía totalmente funcional, sin embargo he detectado un problema fatal.
Resulta, que de cada cinco o seis veces que "robo" salta esta error:



El el resto de veces funciona bien.
No es un script esencial para el juego ni mucho menos, pero sí un complemento interesante que si pudiera salvar estaría genial.

Aquí el script:

Spoiler:
Código:
module Steal
  # Modify these two values to tell the script which ones are steal and mug.
  ID = 202
  ID2 = 203
  # Modify these two to message the player with the results.
  SUCCESS = "Has robado: "
  FAILED = "No se ha podido robar nada"

  WAIT_FOR_MESSAGE = 60
  def self.can_steal_from(enemy_id)
        case enemy_id
        # These are item and steal rate values based on steal level.
        # Values are like this [a, b] where a is item ID and b is steal rate by percentage.
        # When creating a new monster, just copy the line "when 1: [[1,1],[2,10]]" and
        # paste it right below it and change the values. the 1 after "when" is the ID of
        # the monster, so changing that to reflect the ID of the monster you wish to
        # create a steal list for is a wise idea.
        when 1: [[2,50],[2,50]]
        when 7: [[159,20]]
        when 11: [[19,100]]
        when 12: [[13,50]]
        when 13: [[29,50]]
        when 14: [[160,30]]
        when 15: [[11,50]]
        when 16: [[159,30]]
        when 17: [[2,50],[2,50]]
        when 18: [[19,25]]
        when 19: [[2,50],[2,50]]
        when 20: [[8,50]]
        when 21: [[3,50]]
        when 22: [[3,50]]
        when 23: [[3,50]]
        when 24: [[3,50]]
        when 26: [[196,50],[197,50]]
        when 27: [[7,50]]
        when 28: [[168,50]]
        when 29: [[2,50],[2,50]]
        when 30: [[2,50],[2,50]]
        when 31: [[2,50],[2,50]]
        when 33: [[11,50]]
        when 34: [[2,50],[2,50]]
        when 39: [[29,20]]
        when 42: [[159,20]]
        when 43: [[22,50]]
        when 44: [[2,50],[2,50]]
        when 45: [[11,50]]
        when 46: [[2,50],[2,50]]
        when 47: [[2,50],[2,50]]
        when 48: [[2,50],[2,50]]
        when 49: [[82,50]]
        when 50: [[82,50]]
        when 51: [[2,50],[2,50]]
        when 52: [[2,50],[2,50]]
        when 53: [[2,50],[2,50]]
        when 54: [[2,50],[2,50]]
        when 55: [[3,50]]
        when 56: [[3,50]]
        when 57: [[3,50]]
        when 58: [[5,50]]
        when 59: [[5,50]]
        when 60: [[2,50],[2,50]]
        when 61: [[2,50],[2,50]]
        when 62: [[2,50],[2,50]]
        when 63: [[2,50],[2,50]]
        when 64: [[17,100]]
        when 65: [[18,100]]
        when 66: [[2,50],[2,50]]
        when 67: [[159,100]]
        when 68: [[3,50]]
        when 69: [[29,30]]
        when 70: [[2,50],[2,50]]
        when 71: [[160,30]]
        when 72: [[2,50],[2,50]]
        when 73: [[65,50]]
        when 74: [[6,50]]
        when 75: [[160,20]]
        when 76: [[160,20]]
        when 77: [[12,25]]
        when 78: [[11,50]]
        when 79: [[34,50]]
        when 80: [[29,35]]
        when 81: [[159,35]]
        when 82: [[160,35]]
        when 83: [[2,50],[2,50]]
        when 84: [[2,50],[2,50]]
        when 85: [[2,50],[2,50]]
        when 86: [[2,50],[2,50]]
        when 87: [[2,50],[2,50]]
        when 88: [[2,50],[2,50]]
        when 89: [[2,50],[2,50]]
        when 90: [[158,50]]
        when 91: [[11,50]]
        when 92: [[160,40]]
        when 93: [[159,40]]
        when 94: [[161,10]]
        when 95: [[13,50]]
        when 96: [[162,10]]
        when 97: [[29,40]]
        when 98: [[29,40]]
        when 99: [[162,10]]
        when 100: [[161,30]]
        when 101: [[79,50]]
        when 102: [[157,50]]
        when 103: [[2,50],[2,50]]
        when 104: [[2,50],[2,50]]
        when 105: [[2,50],[2,50]]
        when 106: [[2,50],[2,50]]
        when 107: [[2,50],[2,50]]
        when 108: [[2,50],[2,50]]
        when 109: [[159,50]]
        when 110: [[2,50],[2,50]]
        when 111: [[217,25]]
        when 114: [[159,50]]
        when 115: [[29,50]]
        when 116: [[207,10]]
        when 117: [[160,50]]
        when 118: [[162,15]]
        when 119: [[161,15]]
        when 120: [[2,50],[2,50]]
        when 122: [[161,10]]
        when 123: [[29,45]]
        when 124: [[162,10]]
        when 125: [[160,45]]
        when 126: [[159,45]]
        when 127: [[217,25]]
        when 128: [[210,50]]
        when 129: [[217,25]]
        when 131: [[2,50],[2,50]]
        when 132: [[2,50],[2,50]]
        when 133: [[2,50],[2,50]]
        when 134: [[2,50],[2,50]]
        when 135: [[2,50],[2,50]]
        when 136: [[2,50],[2,50]]
        when 137: [[2,50],[2,50]]
        when 138: [[2,50],[2,50]]
        when 139: [[2,50],[2,50]]
        when 140: [[2,50],[2,50]]
        when 141: [[2,50],[2,50]]
        when 143: [[2,50],[2,50]]
        when 144: [[2,50],[2,50]]
        when 145: [[2,50],[2,50]]
        when 146: [[2,50],[2,50]]
        when 148: [[39,50]]
        when 149: [[29,50]]
        when 150: [[161,15]]
        when 151: [[160,50]]
        when 152: [[159,50]]
        when 153: [[162,50]]
        when 154: [[196,50],[197,50]]
        when 155: [[217,50]]
        when 156: [[3,50]]
        when 157: [[3,50]]
        when 158: [[34,100], [34,100], [34,100], [34,100], [34,100]]
        when 159: [[34,100], [34,100], [34,100], [34,100], [34,100]]
        when 160: [[34,100]]
        when 161: [[160,30]]
        when 162: [[2,50],[2,50]]
        when 163: [[24,50],[24,50]]
        when 164: [[9,50]]
        when 165: [[9,50]]
        when 166: [[9,50]]
        when 167: [[9,50]]
        when 168: [[1,50]]
        when 169: [[165,50]]
        when 170: [[1,50]]
        when 171: [[1,50]]
        else
          return nil
        end
  end
end

class Game_Actor < Game_Battler
  attr_accessor :steal_lv
  alias gm_act_setup_steal setup
  def setup(*args)
        gm_act_setup_steal(*args)
        @steal_lv = 1
  end
end

class Game_Enemy < Game_Battler
  def steal_from_me(lv)
        if @stolen_from != nil
          return nil
        end
        can_steal = Steal.can_steal_from(@enemy_id)
        if can_steal != nil
          for item in can_steal
                item_id = item[0]
                steal_rate = item[1]
                adjusted_rate = [steal_rate * lv,100].min
                if rand(100) < adjusted_rate
                  @stolen_from = true
                  return item_id
                end
          end
        end
        return nil
  end
end

class Scene_Battle
  #--------------------------------------------------------------------------
  # * Make Skill Action Results [color=#ff0000][b]AQUÍ ESTÁ EL PROBLEMA[/b][/color]
  #--------------------------------------------------------------------------
  alias exe_action_skill_scn_bat_steal_script update_phase4_step5
  def update_phase4_step5
        # Get skill
        @skill = $data_skills[@active_battler.current_action.skill_id]

        if $data_skills[StealID] == @skill or $data_skills[StealID2] == @skill
          # Hide help window
          @help_window.visible = false

          targets = @active_battler.current_action.target_index
          target = $game_troop.smooth_target_enemy(targets)
          item_id = target.steal_from_me(@active_battler.steal_lv)

          if item_id != nil
                item = item_id
                $game_party.gain_item(item_id, 1)
                @help_window.set_text(Steal::SUCCESS + $data_items[item].name, 1)
          else
                @help_window.set_text(Steal::FAILED, 1)
          end

          @wait_count = Steal::WAIT_FOR_MESSAGE

          # Refresh status window
          @status_window.refresh

          # Shift to step 6
          @phase4_step = 6

          return if $data_skills[StealID] == @skill

          # Display damage
          for target in @target_battlers
                if target.damage != nil
                  target.damage_pop = true
                end
          end

        else
          exe_action_skill_scn_bat_steal_script
        end
  end
end


Agradezco cualquier ayuda al respecto.


Última edición por BlazeCrimson el 2014-05-26, 20:11, editado 1 vez

_________________
Image and video hosting by TinyPic

BlazeCrimson
Analista
Analista

0/3

Créditos 609

Gracias : 92

Volver arriba Ir abajo

RPG Maker XP Re: Un bug inesperado

Mensaje por Metalero el 2014-05-26, 19:00

Le tocaste algo al script antes de subirlo ? por que no coincide el numero de linea del error con la llamada al metodo.

En fin, hace una cosa, (ya que no tengo el maker y no puedo probar en este momento)

Busca la linea que dice:

target = $game_troop.smooth_target_enemy(targets)

y arriba de eso, pone:

p target

Con esto te van a empezar a salir unos popups con cosas feas.
Necesitaria saber que te tira cuando crashea y cuando NO crashea.

Igualmente por como es el script, me suena que podria haber alguna incompatibilidad con otro script.

_________________

Metalero
Administrador
Administrador



Créditos 1715

Gracias : 98

Volver arriba Ir abajo

RPG Maker XP Re: Un bug inesperado

Mensaje por BlazeCrimson el 2014-05-26, 20:09

Gracias por el interés, Metalero.
Cierto, tenías razón culpa mía, la imagen correcta es esta, la linea 218


Ésta está justo debajo de la " target = $game_troop.smooth_target_enemy(targets)" que comentaste.

Metalero escribió:y arriba de eso, pone:

p target


No entendí ¿Que debo hacer?

Mira, aquí te dejo en claro ejemplo de cuando peta y cuando no:



Es posible que se trate de algún caso de incompatibilidad, no estoy seguro :(
Bueno, espero que te sirva. gracias de nuevo.


Última edición por BlazeCrimson el 2014-05-26, 20:13, editado 2 veces

_________________
Image and video hosting by TinyPic

BlazeCrimson
Analista
Analista

0/3

Créditos 609

Gracias : 92

Volver arriba Ir abajo

RPG Maker XP Re: Un bug inesperado

Mensaje por silvanash el 2014-05-26, 20:11

Lo que te dijo (en argentino xD), es que busques la línea donde te dice que está el error, vayas un renglón por encima, le des al enter y en el nuevo renglón pongas lo de "p target". Entonces, al ejecutar el juego y ejecutar el script, el Maker te tirará una ventana con el contenido de "target". Copia lo que salga en esas ventanas y pásaselo a Metalero para que pueda saber qué hay dentro de "target".

Edito: no la línea del error, sino la línea de "target = noséqué de smooth(targets)".

Re-edito: creo que sería mejor poner el "p target" debajo de esa línea. Antes de esa línea, "target" no está definido todavía, así que el "p target" devolvería nil. Bueno, tú prueba y ya veremos.

Felicidad gratuita.

silvanash
Aventurero
Aventurero

0/3

Créditos 1417

Gracias : 176

Volver arriba Ir abajo

RPG Maker XP Re: Un bug inesperado

Mensaje por BlazeCrimson el 2014-05-26, 20:24

Gracias por la aclaración Silva, primero puse el "p target" arriba y me salió la primera imagen.
A continuación la puse debajo como sugerió Silva y salió la segunda imagen, que creo que es la que estabas buscando.


_________________
Image and video hosting by TinyPic

BlazeCrimson
Analista
Analista

0/3

Créditos 609

Gracias : 92

Volver arriba Ir abajo

RPG Maker XP Re: Un bug inesperado

Mensaje por Metalero el 2014-05-26, 23:12

Si, igualmente, eso que te tiró es correcto, con lo cual, asumo que cuando pussite aceptar, te siguio andando.

Lo que yo decia, es que sigas jugando (y te siga saliendo el popup, y le des aceptar), hasta se te rompa el proyecto. Y me digas que fue lo que te salio antes de romperse (deberia salirte algo diferente a lo que te salio ahi) O sea, cada vez que te salga, saca un screenshoot, hasta que te tire error. Y subas ese ultimo screenshoot para ver cuanto vale "target" antes de romperse.
Por que por algun motivo se le esta asignando un array de "algo" y por eso se rompe.

Si no, subi un demo entero, con lo minimo indispensable para reproducir el problema y lo miro, que asi pelado el script, no tengo ni idea de como configurarlo, ni que tengo que hacer.

_________________

Metalero
Administrador
Administrador



Créditos 1715

Gracias : 98

Volver arriba Ir abajo

RPG Maker XP Re: Un bug inesperado

Mensaje por BlazeCrimson el 2014-05-26, 23:27

Aquí otra imagen. En este caso son 2:
En la primera, si tiró correctamente y en la segunda dio el bug.
Es el mismo caso del vídeo de arriba, al primer ladrón le roba y al segundo salta el bug:


Perdona las molestias  Sweat 

_________________
Image and video hosting by TinyPic

BlazeCrimson
Analista
Analista

0/3

Créditos 609

Gracias : 92

Volver arriba Ir abajo

RPG Maker XP Re: Un bug inesperado

Mensaje por Metalero el 2014-05-27, 02:17

Si, como supuse, algo te esta generando un array de enemigos en lugar de devolverte un enemigo solo...

Para mi tenes un script que te esta overrideando el comportamiento standard.

Hace una cosa, entra al editor de scripts, apreta Ctrl + shift + F (buscar en todos), y busca:

smooth_target_enemy

Y decime si te aparece algun script custom que hayas puesto vos, por que lo mas probable es eso.

_________________

Metalero
Administrador
Administrador



Créditos 1715

Gracias : 98

Volver arriba Ir abajo

RPG Maker XP Re: Un bug inesperado

Mensaje por BlazeCrimson el 2014-05-27, 02:24

Sí que uso unos cuantos scripts, pero los encontrados por "smooth_target_enemy" son estos:

_________________
Image and video hosting by TinyPic

BlazeCrimson
Analista
Analista

0/3

Créditos 609

Gracias : 92

Volver arriba Ir abajo

RPG Maker XP Re: Un bug inesperado

Mensaje por Metalero el 2014-05-27, 02:29

mmm... esta complicado... queres meterte al chatbox, asi no llenamos esto de mensajes (despues si lo resolvemos ponemos la solucion aca)

_________________

Metalero
Administrador
Administrador



Créditos 1715

Gracias : 98

Volver arriba Ir abajo

RPG Maker XP Re: Un bug inesperado

Mensaje por BlazeCrimson el 2014-05-27, 02:32

¡Claro!

_________________
Image and video hosting by TinyPic

BlazeCrimson
Analista
Analista

0/3

Créditos 609

Gracias : 92

Volver arriba Ir abajo

RPG Maker XP Re: Un bug inesperado

Mensaje por BlazeCrimson el 2014-05-27, 04:00

Problema resuelto, gracias metalero.

_________________
Image and video hosting by TinyPic

BlazeCrimson
Analista
Analista

0/3

Créditos 609

Gracias : 92

Volver arriba Ir abajo

RPG Maker XP Re: Un bug inesperado

Mensaje por Contenido patrocinado Hoy a las 00:18


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.