Registrarse

[RPG - Scripting] Pesca 2.0 (?)

Estado
Cerrado para nuevas respuestas.

Karlsetin

Leyenda de WaH
No es secreto que la pesca tiene infinitos puntitos... pues, yo los odio. Quería cambiar ciertas cosas en el armado del juego por signos de expresión diversos, lo que incluye otorgarle uno de "pescando" al protagonista al momento de hacer dicha actividad. Ahora bien tengo varios problemas que no logro superar con el script.

1) Logré colocar la animación pero me colocaba debajo igualmente el cuadro de texto (yo no lo quería) motivo por el cual borré los: message+=". ", total su presencia es lo que gatillo el borrado, sin embargo persistía un cuadro de texto, busqué mínimamente 5 formas o más de borrarlo y todas me dieron bug.
2) Finalmente logré borrar el cuadro, pero al parecer al hacerlo he desbordado el caos... porque no me vuelve a salir el cuadro de modo que cuando salen los mensajes el cuadro no se ve (aunque si estoy obligado a dar aceptar como si lo estuviera)
3) Logré colocarlo nuevamente en la primera opción, pero reinstaurarlo al resto de opciones no parece para nada sencillo...
4) Entiendo que todo es parte de:

POKEMON MESSAGE:
"def Kernel.pbMessageDisplay(msgwindow,message,letterbyletter=true,commandProc=nil)
return if !msgwindow
oldletterbyletter=msgwindow.letterbyletter
msgwindow.letterbyletter=(letterbyletter ? true : false"

Sin embargo no consigo aplicarlo de forma correcta, además por lo que veo está armado el script para que muestre los famosos ". " cada vez que salga el mensaje, lo que creo haber borrado al eliminar "message+=". "... pero no logro estar seguro.

Quizás la duda sea super estúpida, y sea algo sencillo pero como no me suelo desenrollar en el scripting y todo esto es nuevo para mi no deja de tener su dificultad.



Código:
def pbFishingBegin
  $PokemonGlobal.fishing=true
  if !pbCommonEvent(FISHINGBEGINCOMMONEVENT)
    patternb = 2*$game_player.direction - 1
    playertrainer=pbGetPlayerTrainerType
    meta=pbGetMetadata(0,MetadataPlayerA+$PokemonGlobal.playerID)
    num=($PokemonGlobal.surfing) ? 7 : 6
    if meta && meta[num] && meta[num]!=""
      charset=pbGetPlayerCharset(meta,num)
      4.times do |pattern|
        $game_player.setDefaultCharName(charset,patternb-pattern)
        2.times do
          Graphics.update
          Input.update
          pbUpdateSceneMap
        end
      end
    end
  end
end

def pbFishingEnd
  if !pbCommonEvent(FISHINGENDCOMMONEVENT)
    patternb = 2*($game_player.direction - 2)
    playertrainer=pbGetPlayerTrainerType
    meta=pbGetMetadata(0,MetadataPlayerA+$PokemonGlobal.playerID)
    num=($PokemonGlobal.surfing) ? 7 : 6
    if meta && meta[num] && meta[num]!=""
      charset=pbGetPlayerCharset(meta,num)
      4.times do |pattern|
        $game_player.setDefaultCharName(charset,patternb+pattern)
        2.times do
          Graphics.update
          Input.update
          pbUpdateSceneMap
        end
      end
    end
  end
  $PokemonGlobal.fishing=false
end

def pbFishing(hasencounter)
  bitechance=65
  hookchance=65
  oldpattern=$game_player.fullPattern
  pbFishingBegin
  msgwindow=Kernel.pbCreateMessageWindow
  loop do
    time=2+rand(10)
    message=""
    time.times do 
    end
    if pbWaitMessage(msgwindow,time)
      pbFishingEnd
      $game_player.setDefaultCharName(nil,oldpattern)
      Kernel.pbMessageDisplay(msgwindow,message,false)
      Kernel.pbMessageDisplay(msgwindow,_INTL("No hay suerte..."))
      Kernel.pbDisposeMessageWindow(msgwindow)
      return false
    end
    rnd=rand(100)
    if rnd<bitechance && hasencounter
      Kernel.pbMessageDisplay(msgwindow,message,false)
      frames=rand(6)+15
      if !pbWaitForInput(msgwindow,_INTL("\r\¡Algo ha mordido!"),frames)
        pbFishingEnd
        $game_player.setDefaultCharName(nil,oldpattern)
        Kernel.pbMessage(msgwindow,_INTL("Se ha ido..."))
        Kernel.pbDisposeMessageWindow(msgwindow)
        return false
      end
      rnd=rand(100)
      if rnd<hookchance || FISHINGAUTOHOOK
        Kernel.pbMessageDisplay(msgwindow,_INTL("¡He atrapado algo!"))
        Kernel.pbDisposeMessageWindow(msgwindow)
        pbFishingEnd
        $game_player.setDefaultCharName(nil,oldpattern)
        return true
      end
      hookchance+=15
      bitechance+=15
    else
      pbFishingEnd
      $game_player.setDefaultCharName(nil,oldpattern)
      Kernel.pbMessageDisplay(msgwindow,_INTL("Tal vez no hay peces cerca..."))
      Kernel.pbDisposeMessageWindow(msgwindow)
      return false
    end
  end
  Kernel.pbDisposeMessageWindow(msgwindow)
  return false
end

def pbWaitForInput(msgwindow,message,frames)
  return true if FISHINGAUTOHOOK
  Kernel.pbMessageDisplay(msgwindow,message,false)
  frames.times do
    Graphics.update
    Input.update
    pbUpdateSceneMap
    if Input.trigger?(Input::C) || Input.trigger?(Input::B)
      return true
    end
  end
  return false
end

def pbWaitMessage(msgwindow,time)
  Kernel.pbDisposeMessageWindow(msgwindow)
  (time+4).times do |i|
    $scene.spriteset.addUserAnimation(7,$game_player.x,$game_player.y) if i>0
    20.times do
      Graphics.update
      Input.update
      pbUpdateSceneMap
      if Input.trigger?(Input::C)||Input.trigger?(Input::B)
        return true
      end
    end
  end
  return false
end

Finalmente un problema que tenía previo al trabajo y es la pesca propiamente tal, cada vez que intentaba pescar me salía "Algo ha" (osea, había pescado aparentemente) sin embargo luego salía que había huido... ¿a qué se puede deber eso?

Gracias de antemano, no estaría molestando pero esto es importante u-u
 

Jessie

What goes around, comes around
Si querías eliminar los mensajes con los "..." solo eliminabas las primeras secciones de pbFishing(hasencounter) y para evitar que los mensajes de que ha pescado algo y de que no están picando aparezcan rápidamente, se le agrega un comando de espera.

Quedaría algo así
Código:
def pbFishing(hasencounter)
  bitechance=65
  hookchance=65
  oldpattern=$game_player.fullPattern
  pbFishingBegin
  msgwindow=Kernel.pbCreateMessageWindow
  pbWait(20)
  loop do
    rnd=rand(100)
    if rnd<bitechance && hasencounter
      
      rnd=rand(100)
      if rnd<hookchance || FISHINGAUTOHOOK
        Kernel.pbMessageDisplay(msgwindow,_INTL("A POKéMON's on the hook!"))
        Kernel.pbDisposeMessageWindow(msgwindow)
        pbFishingEnd
        $game_player.setDefaultCharName(nil,oldpattern)
        return true
      end
      hookchance+=15
      bitechance+=15
    else
      pbFishingEnd
      $game_player.setDefaultCharName(nil,oldpattern)
      Kernel.pbMessageDisplay(msgwindow,_INTL("Not even a nibble..."))
      Kernel.pbDisposeMessageWindow(msgwindow)
      return false
    end
  end
  Kernel.pbDisposeMessageWindow(msgwindow)
  return false
end
Espero te sirva,saludos.
 

Karlsetin

Leyenda de WaH
Si querías eliminar los mensajes con los "..." solo eliminabas las primeras secciones de pbFishing(hasencounter) y para evitar que los mensajes de que ha pescado algo y de que no están picando aparezcan rápidamente, se le agrega un comando de espera.

Quedaría algo así
Código:
def pbFishing(hasencounter)
  bitechance=65
  hookchance=65
  oldpattern=$game_player.fullPattern
  pbFishingBegin
  msgwindow=Kernel.pbCreateMessageWindow
  pbWait(20)
  loop do
    rnd=rand(100)
    if rnd<bitechance && hasencounter
      
      rnd=rand(100)
      if rnd<hookchance || FISHINGAUTOHOOK
        Kernel.pbMessageDisplay(msgwindow,_INTL("A POKéMON's on the hook!"))
        Kernel.pbDisposeMessageWindow(msgwindow)
        pbFishingEnd
        $game_player.setDefaultCharName(nil,oldpattern)
        return true
      end
      hookchance+=15
      bitechance+=15
    else
      pbFishingEnd
      $game_player.setDefaultCharName(nil,oldpattern)
      Kernel.pbMessageDisplay(msgwindow,_INTL("Not even a nibble..."))
      Kernel.pbDisposeMessageWindow(msgwindow)
      return false
    end
  end
  Kernel.pbDisposeMessageWindow(msgwindow)
  return false
end
Espero te sirva,saludos.
No bro, al parecer sólo te quedaste con la idea de "borrar los puntos", pero también incluye colocar la animación del pecesito en su lugar. Es solo cambiar los puntos por dicha animación :/ gracias de todos modos, pero esto no ha terminado (?)
 
Estado
Cerrado para nuevas respuestas.
Arriba