- 53
- Posts
- 5
- Years
- Seen Feb 6, 2025
If any one can get the rest of th essential stuff to work, can you help out with this?
Before you mess with anything, You do need this in Pokemon_Sprites for this script to function:
Here's the code (I already got most of it working):
Before you mess with anything, You do need this in Pokemon_Sprites for this script to function:
Spoiler:
Code:
#===============================================================================
# Sprite position adjustments
#===============================================================================
def getBattleSpriteMetricOffset(species,index,metrics=nil)
metrics = load_data("Data/metrics.dat") if !metrics
ret = 0
if index==1 || index==3 # Foe Pokémon
ret += (metrics[1][species] || 0)*2 # enemy Y
ret -= (metrics[2][species] || 0)*2 # altitude
else # Player's Pokémon
ret += (metrics[0][species] || 0)*2
end
return ret
end
def adjustBattleSpriteY(sprite,species,index,metrics=nil)
ret = 0
spriteheight = (sprite.bitmap && !sprite.bitmap.disposed?) ? sprite.bitmap.height : 128
ret -= spriteheight
ret += getBattleSpriteMetricOffset(species,index,metrics)
return ret
end
def pbPositionPokemonSprite(sprite,left,top)
if sprite.bitmap && !sprite.bitmap.disposed?
sprite.x = left+(128-sprite.bitmap.width)/2
sprite.y = top+(128-sprite.bitmap.height)/2
else
sprite.x = left
sprite.y = top
end
end
def pbSpriteSetCenter(sprite,cx,cy)
return if !sprite
if !sprite.bitmap
sprite.x = cx
sprite.y = cy
return
end
realwidth = sprite.bitmap.width*sprite.zoom_x
realheight = sprite.bitmap.height*sprite.zoom_y
sprite.x = cx-(realwidth/2)
sprite.y = cy-(realheight/2)
end
Here's the code (I already got most of it working):
Spoiler:
Code:
#===============================================================================
# € BW Hall of Fame by KleinStudio
# Based in FL Hall of Fame system, credits belong to him for original script
#===============================================================================
#
# To this scripts works, put it above main, put a 512x384 picture in
# hallfamebars and a 8x24 background picture in hallfamebg. To call this script,
# use 'pbHallOfFameEntry'. After you recorder the first entry, you can access
# the hall teams using a PC. You can also check the player Hall of Fame last
# number using '$PokemonGlobal.hallOfFameLastNumber'.
#
#===============================================================================
class HallOfFameScene
# When true, all pokémon will be in one line
# When false, all pokémon will be in two lines
SINGLEROW = false
# Make the pokémon movement ON in hall entry
ANIMATION = true
# Speed in pokémon movement in hall entry. Don't use less than 2!
ANIMATIONSPEED = 32
# Entry wait time between each pokémon (and trainer) is show
ENTRYWAITTIME = 32
# Maximum number limit of simultaneous hall entries saved.
# 0 = Doesn't save any hall. -1 = no limit
# Prefer to use larger numbers (like 500 and 1000) than don't put a limit
# If a player exceed this limit, the first one will be removed
HALLLIMIT = 5000
# The entry music name. Put "" to doesn't play anything
ENTRYMUSIC = "Tekken Tag Tournament 2 Music Extended - Character Select"
# Allow eggs to be show and saved in hall
ALLOWEGGS = false
# Remove the hallbars when the trainer sprite appears
REMOVEBARS = true
# The final fade speed on entry
FINALFADESPEED = 16
# Sprites opacity value when them aren't selected
OPACITY = 64
def pbUpdate
pbUpdateSpriteHash(@sprites)
if @sprites["ball"]
@sprites["ball"].angle-=1
@sprites["ball"].angle%=360
end
end
def pbUpdatePC
# Change the team
if @battlerIndex>[email protected]
@battlerIndex=0
elsif @battlerIndex<0
@[email protected]
end
selectPokePC
return true
end
def selectPokePC
if @oldPoke != @hallEntry[@battlerIndex]
showLight
# Change the pokemon
pbSEStop()
GameData::Species.play_cry(@hallEntry[@battlerIndex])
hallNumber=$PokemonGlobal.hallOfFameLastNumber + @hallIndex -
$PokemonGlobal.hallOfFame.size + 1
writePokemonDataPC(@hallEntry[@battlerIndex],hallNumber)
end
@oldPoke=@hallEntry[@battlerIndex]
end
def setPokemonDark(dark=true)
nodark=Tone.new(0,0,0)
dark1=Tone.new(-120,-120,-120)
dark2=Tone.new(-150,-150,-150)
dark3=Tone.new(-170,-170,-170)
for i in [email protected]
newtone=nodark
newtone=dark1 if i==1 or i==5
newtone=dark2 if i==2 or i==4
newtone=dark3 if i==3
newtone=nodark if !dark
@sprites["pokemon#{i}"].tone=newtone
end
end
def slowFadeOut(sprites,exponent) # 2 exponent
# To handle values above 8
extraWaitExponent=exponent-9
exponent=8 if 8<exponent
max=2**exponent
speed=(2**8)/max
for j in 0..max
pbWait(2**extraWaitExponent) if extraWaitExponent>-1
pbSetSpritesToColor(sprites,Color.new(0,0,0,j*speed))
block_given? ? yield : pbUpdateSpriteHash(sprites)
end
end
# Dispose the sprite if the sprite exists and make it null
def restartSpritePosition(sprites,spritename)
sprites[spritename].dispose if sprites.include?(spritename) && sprites[spritename]
sprites[spritename]=nil
end
# Change the pokémon sprites opacity except the index one
def setPokemonSpritesOpacity(index,opacity=255)
for n in [email protected]
@sprites["pokemon#{n}"].opacity=(n==index) ? 255 : opacity if @sprites["pokemon#{n}"]
end
end
# Placement for pokemon icons
def pbStartScene
@sprites={}
@viewport=Viewport.new(0,0,Graphics.width, Graphics.height)
@viewport.z=99999
# Comment the below line to doesn't use a background
@sprites["bg"]=Sprite.new(@viewport)
@sprites["bg"].bitmap=RPG::Cache.picture("HallOfFame/BG")
@sprites["typeback"]=Sprite.new(@viewport)
@sprites["typeback"].bitmap=RPG::Cache.picture("HallOfFame/DRAGON")
@sprites["typeback"].tone=Tone.new(-60,-60,-60,10)
@sprites["typeback"].opacity=0
@sprites["typebg"]=Sprite.new(@viewport)
@sprites["typebg"].bitmap=RPG::Cache.picture("HallOfFame/DRAGON")
@sprites["typebg"].opacity=0
@sprites["barup"]=Sprite.new(@viewport)
@sprites["barup"].bitmap=RPG::Cache.picture("HallOfFame/hallbars")
@sprites["barup"].y=65
@sprites["barup"].x=-352
@sprites["barup"].src_rect.set(0,0,352,47)
@sprites["bardown"]=Sprite.new(@viewport)
@sprites["bardown"].bitmap=RPG::Cache.picture("HallOfFame/hallbars")
@sprites["bardown"].y=275
@sprites["bardown"].x=Graphics.width
@sprites["bardown"].src_rect.set(0,48,352,47)
@sprites["bardown"].z=999999
@sprites["barupov"]=BitmapSprite.new(352,47,@viewport)
@sprites["barupov"].y=65
@sprites["barupov"].x=-352
pbSetSystemFont(@sprites["barupov"].bitmap)
@sprites["bardownov"]=BitmapSprite.new(352,47,@viewport)
@sprites["bardownov"].y=275
@sprites["bardownov"].x=Graphics.width
@sprites["bardownov"].z=999999
pbSetSystemFont(@sprites["bardownov"].bitmap)
@sprites["overlay"]=BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
@sprites["overlay"].z=10
pbSetSystemFont(@sprites["overlay"].bitmap)
@alreadyFadedInEnd=false
@useMusic=false
@showWin=false
@isEnd=0
@battlerIndex=0
@hallEntry=[]
@oldPoke=-1
end
def showLight(show=true)
@sprites["light"].visible=show
c=show ? -40 : 0
setPokemonDark(show)
@sprites["bg2"].tone=Tone.new(c,c,c)
if show
disableArrows
else
enableArrows
end
end
def pbStartSceneGPC
@sprites={}
@viewport=Viewport.new(0,0,Graphics.width, Graphics.height)
@viewport.z=99999
# Comment the below line to doesn't use a background
@sprites["bg"]=Sprite.new(@viewport)
@sprites["bg"].bitmap=RPG::Cache.picture("HallOfFame/famerecordbg")
@sprites["bg2"]=Sprite.new(@viewport)
@sprites["bg2"].bitmap=RPG::Cache.picture("HallOfFame/famerecordbg2")
@sprites["bg2"].y=0
@sprites["light"]=Sprite.new(@viewport)
@sprites["light"].bitmap=RPG::Cache.picture("HallOfFame/light")
@sprites["light"].blend_type=1
@sprites["light"].visible=false
@sprites["light"].y=0
@sprites["normalbar"]=IconSprite.new(0,Graphics.height-48,@viewport)
@sprites["normalbar"].setBitmap("Graphics/Pictures/normalbar")
@sprites["arrowleft"] = Sprite.new(@viewport)
# @sprites["arrowleft"].bitmap = Cache.picture("leftrightarrows")
@sprites["arrowleft"].x=8+16; @sprites["arrowleft"].y=10
@sprites["arrowleft"].src_rect.set(0, 0, 34, 28)
@sprites["arrowright"] = Sprite.new(@viewport)
# @sprites["arrowright"].bitmap = Cache.picture("leftrightarrows")
@sprites["arrowright"].x=252-64; @sprites["arrowright"].y=350
@sprites["arrowright"].src_rect.set(0, 28, 34, 28)
@sprites["cancelbuttom"]=Sprite.new(@viewport)
# @sprites["cancelbuttom"].bitmap=Cache.picture("globalicons")
@sprites["cancelbuttom"].x=460; @sprites["cancelbuttom"].y=Graphics.height-74
@sprites["cancelbuttom"].src_rect.set(0, 0, 64, 64)
disableArrows if $PokemonGlobal.hallOfFame.size<=1
@sprites["bar"]=Sprite.new(@viewport)
@sprites["bar"].bitmap=RPG::Cache.picture("HallOfFame/bar")
@sprites["bar"].y=0
@sprites["bar"].opacity=200
pbSetSystemFont(@sprites["bar"].bitmap)
@sprites["overlaypoke"]=BitmapSprite.new(Graphics.width,Settings::SCREEN_HEIGHT,@viewport)
@sprites["overlaypoke"].z=10
@sprites["overlay"]=BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
@sprites["overlay"].z=10
@positions=[
[156, 288, 100],
[96, 228, 90],
[96, 238, 85],
[156, 192, 80],
[115, 238, 85],
[116, 128, 90]
]
@selectedrecord=false
pbSetSystemFont(@sprites["overlaypoke"].bitmap)
pbSetSystemFont(@sprites["overlay"].bitmap)
@alreadyFadedInEnd=false
@useMusic=false
@showWin=false
@isEnd=0
@battlerIndex=0
@hallEntry=[]
end
def pbStartSceneEntry
pbStartScene
@useMusic=(ENTRYMUSIC && ENTRYMUSIC!="")
pbBGMPlay(ENTRYMUSIC) if @useMusic
saveHallEntry
@xmovement=[]
@ymovement=[]
@showinfo=[]
@faseinfo=[]
@playcry=[]
createBattlers
pbFadeInAndShow(@sprites) { pbUpdate }
end
def pbStartScenePC
pbStartSceneGPC
@hallIndex=$PokemonGlobal.hallOfFame.size-1
@hallEntry=$PokemonGlobal.hallOfFame[-1]
@showinfo=[]
@playcry=[]
@faseinfo=[]
@pokeindex=[]
createBattlersPC
writeNormalDataPC
pbFadeInAndShow(@sprites) { pbUpdate }
end
def saveHallEntry
for i in 0...$Trainer.party.length
# Clones every pokémon object
@hallEntry.push($Trainer.party[i].clone) if (
!$Trainer.party[i].egg? || ALLOWEGGS)
end
# Update the global variables
$PokemonGlobal.hallOfFame.push(@hallEntry)
$PokemonGlobal.hallOfFameLastNumber+=1
$PokemonGlobal.hallOfFame.delete_at(0) if HALLLIMIT>-1 &&
$PokemonGlobal.hallOfFame.size>HALLLIMIT
end
def createBattlersPC(hide=true)
# Movement in animation
for i in 0...6
@sprites["pokemon#{i}"].dispose if @sprites["pokemon#{i}"]
next if i>[email protected]
@pokeindex[i]=i
pok=@hallEntry[i]
@sprites["pokemon#{i}"]=PokemonSprite.new(@viewport)
@sprites["pokemon#{i}"].setPokemonBitmap(pok)
h=@sprites["pokemon#{i}"].bitmap.height
@sprites["pokemon#{i}"].ox=@sprites["pokemon#{i}"].bitmap.width/2
@sprites["pokemon#{i}"].oy=h-h/4 if i==0
@sprites["pokemon#{i}"].x=@positions[i][0]
@sprites["pokemon#{i}"].y=@positions[i][1]
@faseinfo[i]=0
@sprites["pokemon#{i}"].z=@positions[i][2]
end
end
def createBattlers(hide=true)
# Movement in animation
for i in 0...6
# Clear all 6 pokémon sprites and dispose the ones that exists every time
# that this method is call
restartSpritePosition(@sprites,"pokemon#{i}")
next if i>[email protected]
pok=@hallEntry[i]
@sprites["pokemon#{i}"]=PokemonSprite.new(@viewport)
@sprites["pokemon#{i}"].setPokemonBitmap(pok,true)
@faseinfo[i]=0
# This method doesn't put the exact coordinates
pbPositionPokemonSprite(@sprites["pokemon#{i}"],Graphics.width+200,160)
@sprites["pokemon#{i}"].z=7-i if SINGLEROW
end
end
def pbUpdateAnimation
if @battlerIndex<[email protected] and !@showWin
if !@showinfo[@battlerIndex]
spriteIndex=(@battlerIndex<@hallEntry.size) ? @battlerIndex : -1
moveSprite(spriteIndex)
else
@battlerIndex+=1
if @battlerIndex<[email protected]
pbWait(ENTRYWAITTIME)
if @battlerIndex<@hallEntry.size # Preparates the next battler
@sprites["overlay"].bitmap.clear
else # Show the welcome message and preparates the trainer
createTrainerBattler
end
end
end
end
if @showWin
# Write the trainer data and fade
writeTrainerData
if @isEnd==1
fadeSpeed=((Math.log(2**12)-Math.log(FINALFADESPEED))/Math.log(2)).floor
pbBGMFade((2**fadeSpeed).to_f/20) if @useMusic
slowFadeOut(@sprites,fadeSpeed){ pbUpdate }
@alreadyFadedInEnd=true
@battlerIndex+=1
@isEnd=2
end
end
end
def moveSprite(i)
spritename=(i>-1) ? "pokemon#{i}" : "trainer"
speed = (i>-1) ? ANIMATIONSPEED : 2
width=(@sprites[spritename].bitmap.width*2)-60
if i>-1
if @faseinfo[i]==0
@sprites[spritename].x-=24
@sprites[spritename].x=-width if @sprites[spritename].x<-width
@faseinfo[i]=1 if @sprites[spritename].x==-width
end
if @faseinfo[i]==1
pok=@hallEntry[i]
@opacityx=0; @bgshake=0
@sprites["typebg"].x=0; @sprites["typeback"].x=0
@sprites[spritename].setPokemonBitmap(pok,false)
typename=GameData::Type.get(@hallEntry[i].type1).name
@sprites["typebg"].bitmap=RPG::Cache.picture("HallOfFame/"+typename)
@sprites["typeback"].bitmap=RPG::Cache.picture("HallOfFame/"+typename)
@sprites["typebg"].opacity+=25 if @sprites["typebg"].opacity!=225
@sprites["typeback"].opacity=@sprites["typebg"].opacity
# Write texts in bars
overlaydown=@sprites["bardownov"].bitmap
overlaydown.clear
texts=[
[@hallEntry[i].name,34,8,0,BASECOLOR,SHADOWCOLOR],
[_INTL("Lv. {1}",@hallEntry[i].level),240,8,0,BASECOLOR,SHADOWCOLOR],
]
overlayup=@sprites["barupov"].bitmap
overlayup.clear
pbDrawTextPositions(overlaydown,texts)
pbDrawTextPositions(overlayup,[[_INTL("The Hall Of Fame!"),
10,8,0,BASECOLOR,SHADOWCOLOR]])
@faseinfo[i]=2 if @sprites["typebg"].opacity==225
end
if @faseinfo[i]==2
@opacityx+=1
@opacityx=0 if @opacityx==4
@sprites["barup"].x+=60 if @sprites["barup"].x!=0
@sprites["barup"].x=0 if @sprites["barup"].x>0
@sprites["barupov"].x=@sprites["barup"].x
@sprites["bardown"].x-=60 if @sprites["bardown"].x!=Graphics.width-352
@sprites["bardown"].x=Graphics.width-352 if @sprites["bardown"].x<Graphics.width-352
@sprites["bardownov"].x=@sprites["bardown"].x
@sprites[spritename].x+=24 if @sprites[spritename].x<100
@sprites[spritename].x=100 if @sprites[spritename].x>100
if @sprites[spritename].x>0
if !@playcry[i]
GameData::Species.play_cry(@hallEntry[i])
@playcry[i]=true
end
if @bgshake==0
@sprites["typebg"].x+=1 if @sprites["typebg"].x != 5
@bgshake+=1 if @sprites["typebg"].x==5
elsif @bgshake==1
@sprites["typebg"].x-=1 if @sprites["typebg"].x != 0
@bgshake+=1 if @sprites["typebg"].x==0
elsif @bgshake==2
@sprites["typebg"].x+=1 if @sprites["typebg"].x != 3
@bgshake+=1 if @sprites["typebg"].x==3
elsif @bgshake==3
@sprites["typebg"].x-=1 if @sprites["typebg"].x != 0
@bgshake+=1 if @sprites["typebg"].x==0
elsif @bgshake==4
@sprites["typebg"].x+=1 if @sprites["typebg"].x != 1
@bgshake+=1 if @sprites["typebg"].x==1
elsif @bgshake==5
@sprites["typebg"].x-=1 if @sprites["typebg"].x != 0
@bgshake+=1 if @sprites["typebg"].x==0
end
@sprites["typeback"].opacity-=3.5
@sprites["typeback"].x-=3 if @opacityx==3
if @sprites["typeback"].opacity==0
@sprites["typebg"].opacity-=25
end
end
@faseinfo[i]=3 if @sprites["typebg"].opacity==0
end
if @faseinfo[i]==3 # Hide
@sprites["barup"].x-=60 if @sprites["barup"].x!=-352
@sprites["barup"].x=-352 if @sprites["barup"].x<-352
@sprites["barupov"].x=@sprites["barup"].x
@sprites["bardown"].x+=60 if @sprites["bardown"].x!=Graphics.width
@sprites["bardown"].x=Graphics.width if @sprites["bardown"].x>Graphics.width
@sprites["bardownov"].x=@sprites["bardown"].x
@sprites[spritename].x-=24
@sprites[spritename].x=-width if @sprites[spritename].x<-width
if @sprites[spritename].x==-width && @sprites["barup"].x==-352 &&
@sprites["bardown"].x==Graphics.width
@showinfo[i]=true; end
end
else
@sprites[spritename].y+=14
@sprites[spritename].y=250 if @sprites[spritename].y>250
if @sprites[spritename].y==250
@sprites["halltrainer"].opacity+=25.5
@sprites["overlay"].opacity=@sprites["halltrainer"].opacity
end
if @sprites["halltrainer"].opacity==255
@showWin=true
@showinfo[i]=true
end
end
end
def createTrainerBattler
@sprites["ball"]=Sprite.new(@viewport)
@sprites["ball"].bitmap=RPG::Cache.picture("HallOfFame/hallball")
@sprites["ball"].x=20
@sprites["ball"].y=476
@sprites["ball"].ox=@sprites["ball"].bitmap.width/2
@sprites["ball"].oy=@sprites["ball"].bitmap.height/2
@sprites["halltrainer"]=Sprite.new(@viewport)
@sprites["halltrainer"].bitmap=RPG::Cache.picture("HallOfFame/halltrainerbars")
@sprites["halltrainer"].y=0
@sprites["halltrainer"].opacity=0
@sprites["trainer"]=IconSprite.new(0,0,@viewport)
@sprites["trainer"].setBitmap(GameData::TrainerType.front_sprite_filename($Trainer.trainer_type))
@sprites["trainer"].x=200
@sprites["trainer"].y=-@sprites["trainer"].bitmap.height
@sprites["trainer"].z=9
@sprites["trainer"].ox=@sprites["trainer"].bitmap.width/2
@sprites["trainer"].oy=@sprites["trainer"].bitmap.height/2
@sprites["overlay"].bitmap.clear
@sprites["overlay"].opacity=0
overlay=@sprites["overlay"].bitmap
overlay.clear
pubid=sprintf("%05d",$Trainer.public_ID($Trainer.id))
totalsec = Graphics.frame_count / Graphics.frame_rate
hour = totalsec / 60 / 60
min = totalsec / 60 % 60
texts=[
["League Champion! Congratulations!",Graphics.width/2,32,2,BASECOLOR,SHADOWCOLOR],
[_INTL("{1}",$Trainer.name),16,320,0,BASECOLOR,SHADOWCOLOR],
[_INTL("ID No. {1}",pubid),Graphics.width/2,320,2,BASECOLOR,SHADOWCOLOR],
[_ISPRINTF("{1:02d}:{2:02d}",hour,min),442,320,2,BASECOLOR,SHADOWCOLOR],
]
pbDrawTextPositions(overlay,texts)
end
def writeTrainerData
if Input.trigger?(Input::C)
@isEnd=1
end
end
BASECOLOR = Color.new(255,255,255)
SHADOWCOLOR = Color.new(165,165,173)
def writePokemonDataPC(pokemon,hallNumber=-1)
base=Color.new(255,255,255)
shadow=Color.new(140,99,99)
overlay=@sprites["overlaypoke"].bitmap
overlay.clear
pokename=pokemon.name
speciesname=GameData::Species.get(pokemon.species)
# move1data=pokemon.moves[0].name
# move2data=pokemon.moves[1].name
# move3data=pokemon.moves[2].name
# move4data=pokemon.moves[3].name
# pokename=speciesname
pokename=_INTL("Egg") if pokemon.egg?
idno=(pokemon.owner.name.empty? || pokemon.egg?) ? "?????" :
sprintf("%05d",pokemon.owner.public_id)
dexnumber=pokemon.egg? ? _INTL("No. ???") : _ISPRINTF("No. {1:03d}",speciesname.id_number)
pbSetSystemFont(overlay)
pbDrawTextPositions(overlay, [["Lv.",224,112,0,base,shadow]])
# GameData::Move.try_get
# GameData::Move.get
# Pokemon::Move.new
# move1=pokemon.moves[0].name ? Pokemon::Move.new(move1data) : "------"
# move2=pokemon.moves[1].name ? Pokemon::Move.new(move2data) : "------"
# move3=pokemon.moves[2].name ? Pokemon::Move.new(move3data) : "------"
# move4=pokemon.moves[3].name ? Pokemon::Move.new(move4data) : "------"
pbSetSystemFont(overlay)
textPositions=[
[pokename,64,112,0,base,shadow],
[_INTL("NAME: {1}",pokemon.name),64,160,0,base,shadow],
[_INTL("OT/{1}",pokemon.owner.name),64,208,0,base,shadow],
[_INTL("{1}",pokemon.egg? ? "???" : pokemon.level),250,112,0,base,shadow]#,
# [move1,64,288,0,base,shadow],
# [move2,258,288,0,base,shadow],
# [move3,64,320,0,base,shadow],
# [move4,258,320,0,base,shadow],
]
if pokemon.male?
textPositions.push(["♂",192,112,0,Color.new(99,198,255),Color.new(99,99,132)])
elsif pokemon.female?
textPositions.push(["♀",192,112,0,Color.new(225,123,156),Color.new(173,57,66)])
end
pbDrawTextPositions(overlay,textPositions)
end
def writeNormalDataPC
overlay=@sprites["overlay"].bitmap
overlay.clear
base1=Color.new(255,255,255)
shadow1=Color.new(132,132,132)
base2=Color.new(247,66,66)
shadow2=Color.new(148,41,41)
shadow3=Color.new(165,165,181)
text=[
["HALL OF FAME No.",16,25,0,base1,shadow1],
[sprintf("%03d",@hallIndex+1),192,25,0,base2,shadow2],
[_INTL("{1}/{2}",@hallIndex+1,$PokemonGlobal.hallOfFame.size),118,50,2,base1,shadow3]
]
pbDrawTextPositions(overlay,text)
end
def disableArrows
@sprites["arrowleft"].src_rect.set(34*2, 0, 34, 28)
@sprites["arrowright"].src_rect.set(34*2, 28, 34, 28)
end
def enableArrows
@sprites["arrowleft"].src_rect.set(0, 0, 34, 28)
@sprites["arrowright"].src_rect.set(0, 28, 34, 28)
end
def writePokemonData(pokemon,hallNumber=-1)
overlay=@sprites["overlay"].bitmap
overlay.clear
pokename=pokemon.name
speciesname=GameData::Species.get(pokemon.species)
if pokemon.male?
speciesname+="♂"
elsif pokemon.female?
speciesname+="♀"
end
pokename+="/"+speciesname
pokename=_INTL("Egg")+"/"+_INTL("Egg") if pokemon.egg?
idno=(pokemon.owner.name.empty? || pokemon.egg?) ? "?????" :
sprintf("%05d",pokemon.owner.public_id)
dexnumber=pokemon.egg? ? _INTL("No. ???") : _ISPRINTF("No. {1:03d}",speciesname.id_number)
textPositions=[
[dexnumber,32,Graphics.height-80,0,BASECOLOR,SHADOWCOLOR],
[pokename,Graphics.width-192,Graphics.height-80,2,BASECOLOR,SHADOWCOLOR],
[_INTL("Lv. {1}",pokemon.egg? ? "?" : pokemon.level),
64,Graphics.height-48,0,BASECOLOR,SHADOWCOLOR],
[_INTL("IDNo.{1}",pokemon.egg? ? "?????" : idno),
Graphics.width-192,Graphics.height-48,2,BASECOLOR,SHADOWCOLOR]
]
if (hallNumber>-1)
textPositions.push([_INTL("Hall of Fame No."),Graphics.width/2-104,0,0,BASECOLOR,SHADOWCOLOR])
textPositions.push([hallNumber.to_s,Graphics.width/2+104,0,1,BASECOLOR,SHADOWCOLOR])
end
pbDrawTextPositions(overlay,textPositions)
end
def writeWelcome
overlay=@sprites["overlay"].bitmap
overlay.clear
pbDrawTextPositions(overlay,[[_INTL("Welcome to the Hall of Fame!"),
Graphics.width/2,Graphics.height-80,2,BASECOLOR,SHADOWCOLOR]])
end
def pbEndScene
$game_map.autoplay if @useMusic
Kernel.pbDisposeMessageWindow(@sprites["msgwindow"]) if @sprites.include?("msgwindow")
pbFadeOutAndHide(@sprites) { pbUpdate } if !@alreadyFadedInEnd
pbDisposeSpriteHash(@sprites)
@viewport.dispose
end
def getTrues(bool)
ret=0
for i in 0...bool.length
ret+=1 if bool[i]==true
end
return ret
end
def movePokes(dir=true)
newparty=[]
oldparty=@hallEntry
for i in [email protected]
if dir
nindex=i+1
nindex=0 if [email protected]
else
nindex=i-1
[email protected] if i==0
end
newparty.push(oldparty[nindex])
end
@hallEntry=newparty
createBattlersPC
end
def pbPCSelection
loop do
Graphics.update
Input.update
pbUpdate
continueScene=true
break if Input.trigger?(Input::B) # Exits
if Input.trigger?(Input::C) # Moves the selection one entry backward
@battlerIndex+=10
continueScene=pbUpdatePC
end
if Input.trigger?(Input::LEFT) # Moves the selection one pokémon forward
@battlerIndex-=1
continueScene=pbUpdatePC
end
if Input.trigger?(Input::RIGHT) # Moves the selection one pokémon backward
@battlerIndex+=1
continueScene=pbUpdatePC
end
# Move between records
if $PokemonGlobal.hallOfFame.size>1 && (Input.trigger?(Input::DOWN))
@hallIndex-=1
@hallIndex=$PokemonGlobal.hallOfFame.size-1 if @hallIndex<0
@hallEntry=$PokemonGlobal.hallOfFame[@hallIndex]
writeNormalDataPC
createBattlersPC
elsif $PokemonGlobal.hallOfFame.size>1 && (Input.trigger?(Input::UP))
@hallIndex+=1
@hallIndex=0 if @hallIndex>=$PokemonGlobal.hallOfFame.size
@hallEntry=$PokemonGlobal.hallOfFame[@hallIndex]
writeNormalDataPC
createBattlersPC
elsif Input.trigger?(Input::B)
break
end
break if !continueScene
end
end
def pbAnimationLoop
loop do
Graphics.update
Input.update
pbUpdate
pbUpdateAnimation
break if @isEnd==2#@[email protected]+2
end
end
end
class HallOfFameScreen
def initialize(scene)
@scene = scene
end
def pbStartScreenEntry
@scene.pbStartSceneEntry
@scene.pbAnimationLoop
@scene.pbEndScene
end
def pbStartScreenPC
@scene.pbStartScenePC
@scene.pbPCSelection
@scene.pbEndScene
end
end
class HallOfFamePC
def shouldShow?
return $PokemonGlobal.hallOfFameLastNumber>0
end
def name
return _INTL("Hall of Fame")
end
def access
Kernel.pbMessage(_INTL("\\se[accesspc]Accessed the Hall of Fame."))
pbHallOfFamePC
end
end
PokemonPCList.registerPC(HallOfFamePC.new)
class PokemonGlobalMetadata
attr_accessor :hallOfFame
# Number necessary if hallOfFame array reach in its size limit
attr_accessor :hallOfFameLastNumber
def hallOfFame
@hallOfFame=[] if !@hallOfFame
return @hallOfFame
end
def hallOfFameLastNumber
@hallOfFameLastNumber=0 if !@hallOfFameLastNumber
return @hallOfFameLastNumber
end
end
def pbHallOfFameEntry
scene=HallOfFameScene.new
screen=HallOfFameScreen.new(scene)
screen.pbStartScreenEntry
end
def pbHallOfFamePC
scene=HallOfFameScene.new
screen=HallOfFameScreen.new(scene)
screen.pbStartScreenPC
end