Nyaruko
Pinchando ruedas de trenes
¡Hola a tod@s! Hoy vengo a aportar mi primer tutorial, el cual consiste en tener un item que funcione como Vuelo para que no sea necesario tener prostitutas de MO, en la Wiki explican como hacer este proceso con la mayoría de MO, pero Vuelo necesita un proceso algo distinto, que gracias a estar navegando por foros ingleses e ir viendo las múltiples soluciones que iban dando esas personas (creditos a todas ellas) pude conseguirlo, y hoy vengo a compartirlo con vosotros ^^
Lo primero algo que muchos ya sabreis es definir el objeto en items.txt
Ahora tendreis que copiar el siguiente código:
Una vez copiado vais a Scripts, a la sección PItem_ItemEffects, ahí buscais el título comentado UseOnPokemon handlers (está sobre la linea 288). Pues encima de ese código que os he comentado poneis lo que copiasteis quedando tal que así.
Lo de ITEMVUELO lo cambiais al nombre que tengais vosotros para el item, es el nombre interno de este.
Bien, ahora tenemos que ir a la sección de scripts PField_HiddenMoves, ahí buscais el título comentado de Fly y teneis que añadir esto donde acaba el código original.
Os dejo aquí una captura por si aún quedan dudas (a veces no me explico muy bien)
El comentario que puse no hace falta que lo añadais xD
Y eso ha sido todo, solo os faltaría poner una Pokeball o cualquier evento para obtener el objeto y estaría listo. Esto lo he testeado en la versión de Essentials 16.2, en distintas versiones no se como irá ya que en las más recientes suelen haber incompatibilidades con algunos scripts.
Tras esto despido aquí el tema, un saludo ^^
Lo primero algo que muchos ya sabreis es definir el objeto en items.txt
Código:
534,ITEMVUELO,Item Vuelo,Item Vuelo,8,0,"Objeto para volar",2,0,6,
Código:
ItemHandlers::UseFromBag.add(:ITEMVUELO,proc{|item|
next canUseMoveFly? ? 2 : 0
})
ItemHandlers::UseInField.add(:ITEMVUELO,proc{|item|
useMoveFly if canUseMoveFly?
})
Lo de ITEMVUELO lo cambiais al nombre que tengais vosotros para el item, es el nombre interno de este.
Bien, ahora tenemos que ir a la sección de scripts PField_HiddenMoves, ahí buscais el título comentado de Fly y teneis que añadir esto donde acaba el código original.
Código:
def canUseMoveFly?
if !$DEBUG &&
!(HIDDENMOVESCOUNTBADGES ? $Trainer.numbadges>=BADGEFORFLY : $Trainer.badges[BADGEFORFLY])
Kernel.pbMessage(_INTL("Sorry, a new Badge is required."))
return false
end
if $game_player.pbHasDependentEvents?
Kernel.pbMessage(_INTL("It can't be used when you have someone with you."))
return false
end
if !pbGetMetadata($game_map.map_id,MetadataOutdoor)
Kernel.pbMessage(_INTL("Can't use that here."))
return false
end
return true
end
def useMoveFly
scene=PokemonRegionMapScene.new(-1,false)
screen=PokemonRegionMap.new(scene)
ret=screen.pbStartFlyScreen
return false if !ret
$PokemonTemp.flydata=ret
if !$PokemonTemp.flydata
Kernel.pbMessage(_INTL("Can't use that here."))
end
if !pbHiddenMoveAnimation(nil)
Kernel.pbMessage(_INTL("{1} used {2}!",$Trainer.name,"Fly"))
end
pbFadeOutIn(99999){
Kernel.pbCancelVehicles
$game_temp.player_new_map_id=$PokemonTemp.flydata[0]
$game_temp.player_new_x=$PokemonTemp.flydata[1]
$game_temp.player_new_y=$PokemonTemp.flydata[2]
$PokemonTemp.flydata=nil
$game_temp.player_new_direction=2
$scene.transfer_player
$game_map.autoplay
$game_map.refresh
}
pbEraseEscapePoint
return true
end
El comentario que puse no hace falta que lo añadais xD
Y eso ha sido todo, solo os faltaría poner una Pokeball o cualquier evento para obtener el objeto y estaría listo. Esto lo he testeado en la versión de Essentials 16.2, en distintas versiones no se como irá ya que en las más recientes suelen haber incompatibilidades con algunos scripts.
Tras esto despido aquí el tema, un saludo ^^