Registrarse

[RPG - Scripting] Diferentes graficos de pokemon con surf

Estado
Cerrado para nuevas respuestas.

Morel X

Pues bueno aquí estamosxD
Buenas pues probé este script:

https://www.pokecommunity.com/showthread.php?t=354975

El cual me funciona, que hace que aparezca el grafico que quiero cuando hago surf con determinado pokemon, en este caso con gyarados, pero a la hora de agregar más pokemon no sé como hacerlo y me da error jaja

Este tutorial creo que le falta explicar como se añaden exactamente más pokemon, alguien podría ponerme un ejemplo de como sería para agregar 2 o 3 más?

Muchas gracias!
 

Karlsetin

Leyenda de WaH
Pues sencillo:

Código:
if pbHasSpecies?(:GYARADOS)
        trainer=$Trainer if !trainer
        outfit=trainer ? trainer.outfit : 0
        if outfit==0
          $game_player.character_name=Settings::GyaraSurfFileName[$PokemonGlobal.playerID]
        else
          $game_player.character_name=Settings::GyaraSurfFileName[$PokemonGlobal.playerID]+"_"+outfit.to_s
        end
      else
##AQUI##
      end
deberías añadir un

Código:
if pbHasSpecies?(:WAILMER)
        trainer=$Trainer if !trainer
        outfit=trainer ? trainer.outfit : 0
        if outfit==0
          $game_player.character_name=Settings::WailmerSurfFileName[$PokemonGlobal.playerID]
        else
          $game_player.character_name=Settings::WailmerSurfFileName[$PokemonGlobal.playerID]+"_"+outfit.to_s
        end
      else
        $game_player.character_name=pbGetPlayerCharset(meta,3) # Surfing graphic
      end
Debes entender que la ultima línea antes del END es para aquella en que si no se tiene a tal o tal especie entonces se utilice el gráfico por defecto.

Luego tendrías que añadir a:

Código:
module Settings
  GyaraSurfFileName = [
    "boy_surfGyara", # Player A
    "girl_surfGyara", # Player B
    "", # Player C
    "", # Player D
    "", # Player E
    "", # Player F
  ]
 WailmerSurfFileName = [
    "boy_surfWailmer", # Player A
    "girl_surfWailmer", # Player B
    "", # Player C
    "", # Player D
    "", # Player E
    "", # Player F
   ]
end
Y así con cada nuevo pokemon, añadiendo los gráficos respectos. (en teoria debería funcionar así)
 

Jessie

What goes around, comes around
Si funciona como te dijo @Karlsetín, pero sería cuestión de ordenar un poco el condicional.

Código:
def Kernel.pbUpdateVehicle
  meta=pbGetMetadata(0,MetadataPlayerA+$PokemonGlobal.playerID)
  if meta
    if $PokemonGlobal.diving
      $game_player.character_name=pbGetPlayerCharset(meta,5) # Diving graphic
    elsif $PokemonGlobal.surfing

       trainer=$Trainer
       outfit=trainer.outfit
       nombregrafico=""
       if pbHasSpecies?(:GYARADOS)
         nombregrafico=Settings::GyaraSurfFileName[$PokemonGlobal.playerID]
       else pbHasSpecies?(:WAILMER)
         nombregrafico=Settings::WailmerSurfFileName[$PokemonGlobal.playerID]
       else pbHasSpecies?(:LAPRAS)
         nombregrafico=Settings::LaprasSurfFileName[$PokemonGlobal.playerID]
      #elsif 
      #Aquí colocas más elsif por cada especie
      
      end   
       nombregrafico+="_#{outfit}" if outfit>0 && nombregrafico!=""
       nombregrafico=pbGetPlayerCharset(meta,3) if nombregrafico==""
       $game_player.character_name=nombregrafico

    elsif $PokemonGlobal.bicycle
      $game_player.character_name=pbGetPlayerCharset(meta,2) # Bicycle graphic
    else
      $game_player.character_name=pbGetPlayerCharset(meta,1) # Regular graphic
    end
  end
end
De esta manera solo agregas las diferentes especies que requieras.
Y no olvides agregar al module una sección para cada una.

En lo personal creo que sería mejor verificar cual de los miembros del equipo es el que conoce Surf y apartir de eso nombrar al archivo grafico, y en caso de que no exista ese archivo se usaría la imagen normal de surf.


Código:
def Kernel.pbUpdateVehicle
  meta=pbGetMetadata(0,MetadataPlayerA+$PokemonGlobal.playerID)
  if meta
    if $PokemonGlobal.diving
      $game_player.character_name=pbGetPlayerCharset(meta,5) # Diving graphic
    elsif $PokemonGlobal.surfing
      
      #Aquí empieza 
      
        nombre=""
        for i in 0...$Trainer.party.size
          next if nombre!=""
          for j in 0...4
            nombre=PBSpecies.getName($Trainer.party[i].species) if PBMoves.getName($Trainer.party[i].moves[j].id)=="Surf"
          end
        end
        surfchar=pbGetPlayerCharset(meta,3)
        if nombre!=""
          forma= ($Trainer.outfit>0) ? "_#{$Trainer.outfit}" : ""
          nombrepoke="Surf_#{nombre}_#{$PokemonGlobal.playerID}#{forma}"
          surfchar=nombrepoke if pbResolveBitmap("Graphics/Characters/#{nombrepoke}")
        end
        $game_player.character_name=surfchar
    
    #Aquí termina  
    
    elsif $PokemonGlobal.bicycle
      $game_player.character_name=pbGetPlayerCharset(meta,2) # Bicycle graphic
    else
      $game_player.character_name=pbGetPlayerCharset(meta,1) # Regular graphic
    end
  end
end
El nombre de los gráficos sería así : Surf_ESPECIE_GENERO_FORMA
donde ESPECIE es el nombre de la especie de pokémon
GENERO es el número de jugador (0=jugador 1 o chico, 1=jugador 2 o chica...)
FORMA no es la forma del pokemon, sino es si el jugador está usando un traje diferente (outfit)
Por ejemplo :
Surf_Gyarados_0 # El jugador 1 usa un gyarados
Surf_Gyarados_1 # El jugador 2 usa un gyarados
Surf_Gyarados_0_1 # El jugador 1 usa un gyarados y tiene un traje diferente(trchar000_1)

Y por supuesto, ya no se necesitaría el module Settings.

Lo único con esta ultima forma, es que siempre se usará el sprite del primer pokémon del equipo que conozca Surf, aunque se usará a otro pokémon del equipo que también conozca ese movimiento.

Bueno espero que te sea de ayuda cualquiera de las 2 formas.
Saludos.

EDITO : Se me olvido mencionar que esto solo aplica para versiones previas de Essentials ya que en las actuales el sprite del jugador y el sprite del pokémon se manejan por separado.
 

Morel X

Pues bueno aquí estamosxD
Pues sencillo:

Código:
if pbHasSpecies?(:GYARADOS)
        trainer=$Trainer if !trainer
        outfit=trainer ? trainer.outfit : 0
        if outfit==0
          $game_player.character_name=Settings::GyaraSurfFileName[$PokemonGlobal.playerID]
        else
          $game_player.character_name=Settings::GyaraSurfFileName[$PokemonGlobal.playerID]+"_"+outfit.to_s
        end
      else
##AQUI##
      end
deberías añadir un

Código:
if pbHasSpecies?(:WAILMER)
        trainer=$Trainer if !trainer
        outfit=trainer ? trainer.outfit : 0
        if outfit==0
          $game_player.character_name=Settings::WailmerSurfFileName[$PokemonGlobal.playerID]
        else
          $game_player.character_name=Settings::WailmerSurfFileName[$PokemonGlobal.playerID]+"_"+outfit.to_s
        end
      else
        $game_player.character_name=pbGetPlayerCharset(meta,3) # Surfing graphic
      end
Debes entender que la ultima línea antes del END es para aquella en que si no se tiene a tal o tal especie entonces se utilice el gráfico por defecto.

Luego tendrías que añadir a:

Código:
module Settings
  GyaraSurfFileName = [
    "boy_surfGyara", # Player A
    "girl_surfGyara", # Player B
    "", # Player C
    "", # Player D
    "", # Player E
    "", # Player F
  ]
 WailmerSurfFileName = [
    "boy_surfWailmer", # Player A
    "girl_surfWailmer", # Player B
    "", # Player C
    "", # Player D
    "", # Player E
    "", # Player F
   ]
end
Y así con cada nuevo pokemon, añadiendo los gráficos respectos. (en teoria debería funcionar así)
Muchas gracias!

Si funciona como te dijo @Karlsetín, pero sería cuestión de ordenar un poco el condicional.

Código:
def Kernel.pbUpdateVehicle
  meta=pbGetMetadata(0,MetadataPlayerA+$PokemonGlobal.playerID)
  if meta
    if $PokemonGlobal.diving
      $game_player.character_name=pbGetPlayerCharset(meta,5) # Diving graphic
    elsif $PokemonGlobal.surfing

       trainer=$Trainer
       outfit=trainer.outfit
       nombregrafico=""
       if pbHasSpecies?(:GYARADOS)
         nombregrafico=Settings::GyaraSurfFileName[$PokemonGlobal.playerID]
       else pbHasSpecies?(:WAILMER)
         nombregrafico=Settings::WailmerSurfFileName[$PokemonGlobal.playerID]
       else pbHasSpecies?(:LAPRAS)
         nombregrafico=Settings::LaprasSurfFileName[$PokemonGlobal.playerID]
      #elsif 
      #Aquí colocas más elsif por cada especie
      
      end   
       nombregrafico+="_#{outfit}" if outfit>0 && nombregrafico!=""
       nombregrafico=pbGetPlayerCharset(meta,3) if nombregrafico==""
       $game_player.character_name=nombregrafico

    elsif $PokemonGlobal.bicycle
      $game_player.character_name=pbGetPlayerCharset(meta,2) # Bicycle graphic
    else
      $game_player.character_name=pbGetPlayerCharset(meta,1) # Regular graphic
    end
  end
end
De esta manera solo agregas las diferentes especies que requieras.
Y no olvides agregar al module una sección para cada una.

En lo personal creo que sería mejor verificar cual de los miembros del equipo es el que conoce Surf y apartir de eso nombrar al archivo grafico, y en caso de que no exista ese archivo se usaría la imagen normal de surf.


Código:
def Kernel.pbUpdateVehicle
  meta=pbGetMetadata(0,MetadataPlayerA+$PokemonGlobal.playerID)
  if meta
    if $PokemonGlobal.diving
      $game_player.character_name=pbGetPlayerCharset(meta,5) # Diving graphic
    elsif $PokemonGlobal.surfing
      
      #Aquí empieza 
      
        nombre=""
        for i in 0...$Trainer.party.size
          next if nombre!=""
          for j in 0...4
            nombre=PBSpecies.getName($Trainer.party[i].species) if PBMoves.getName($Trainer.party[i].moves[j].id)=="Surf"
          end
        end
        surfchar=pbGetPlayerCharset(meta,3)
        if nombre!=""
          forma= ($Trainer.outfit>0) ? "_#{$Trainer.outfit}" : ""
          nombrepoke="Surf_#{nombre}_#{$PokemonGlobal.playerID}#{forma}"
          surfchar=nombrepoke if pbResolveBitmap("Graphics/Characters/#{nombrepoke}")
        end
        $game_player.character_name=surfchar
    
    #Aquí termina  
    
    elsif $PokemonGlobal.bicycle
      $game_player.character_name=pbGetPlayerCharset(meta,2) # Bicycle graphic
    else
      $game_player.character_name=pbGetPlayerCharset(meta,1) # Regular graphic
    end
  end
end
El nombre de los gráficos sería así : Surf_ESPECIE_GENERO_FORMA
donde ESPECIE es el nombre de la especie de pokémon
GENERO es el número de jugador (0=jugador 1 o chico, 1=jugador 2 o chica...)
FORMA no es la forma del pokemon, sino es si el jugador está usando un traje diferente (outfit)
Por ejemplo :
Surf_Gyarados_0 # El jugador 1 usa un gyarados
Surf_Gyarados_1 # El jugador 2 usa un gyarados
Surf_Gyarados_0_1 # El jugador 1 usa un gyarados y tiene un traje diferente(trchar000_1)

Y por supuesto, ya no se necesitaría el module Settings.

Lo único con esta ultima forma, es que siempre se usará el sprite del primer pokémon del equipo que conozca Surf, aunque se usará a otro pokémon del equipo que también conozca ese movimiento.

Bueno espero que te sea de ayuda cualquiera de las 2 formas.
Saludos.

EDITO : Se me olvido mencionar que esto solo aplica para versiones previas de Essentials ya que en las actuales el sprite del jugador y el sprite del pokémon se manejan por separado.
Muchas gracias a ti también Jess!

Pero al final me he liado y me ha dado error porque no estoy seguro como rellenar las cosas:

nombre="boy_surf"
for i in 0...$Trainer.party.size
next if nombre!="boy_surf"
for j in 0...4
nombre=PBSpecies.getName($Trainer.party.species) if PBMoves.getName($Trainer.party.moves[j].id)=="Surf"
end
end
surfchar=pbGetPlayerCharset(meta,3)
if nombre!="GYARADOS"
forma= ($Trainer.outfit>0) ? "_#{$Trainer.outfit}" : ""
nombrepoke="Surf_#{Gyarados}_#{$PokemonGlobal.playerID}#{forma}"
surfchar=nombrepoke if pbResolveBitmap("Graphics/Characters/#{nombrepoke}")
end
$game_player.character_name=surfchar

Supongo que esta mal pero no estoy seguro como va lo siento! Además como añado ahí al siguiente pokemon?
 
Última edición:

Jessie

What goes around, comes around
Muchas gracias!



Muchas gracias a ti también Jess!

Pero al final me he liado y me ha dado error porque no estoy seguro como rellenar las cosas:

nombre="boy_surf"
for i in 0...$Trainer.party.size
next if nombre!="boy_surf"
for j in 0...4
nombre=PBSpecies.getName($Trainer.party.species) if PBMoves.getName($Trainer.party.moves[j].id)=="Surf"
end
end
surfchar=pbGetPlayerCharset(meta,3)
if nombre!="GYARADOS"
forma= ($Trainer.outfit>0) ? "_#{$Trainer.outfit}" : ""
nombrepoke="Surf_#{Gyarados}_#{$PokemonGlobal.playerID}#{forma}"
surfchar=nombrepoke if pbResolveBitmap("Graphics/Characters/#{nombrepoke}")
end
$game_player.character_name=surfchar

Supongo que esta mal pero no estoy seguro como va lo siento! Además como añado ahí al siguiente pokemon?


No ,no es así mira, las dos opciones que te dí, no se juntan, es o eliges usar el script que encontraste y adaptarlo de la manera de "Code 1" O ELIMINARLO y usar el que te di en "Code 2".

Si deseas usar el de "Code 2" NO TIENES porque editar nada, solo copias y pegas el contenido en lugar de lo que tenias antes, luego lo unico que tienes que verificar es tener los gráficos dentro de la carpeta Characters y que se llamen de la manera en que te he marcado, eso es todo, no tenias que agregar nada más al script.
 
Estado
Cerrado para nuevas respuestas.
Arriba