• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Forum moderator applications are now open! Click here for details.
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Single Screen Day-Care Checker Item

FL

Pokémon Island Creator
2,436
Posts
13
Years
  • Seen yesterday
gif.gif
screen.png

A single screen Day-Care Checker (like in DPP Pokétch) activated by item. This displays the pokémon sprites, names, levels, genders and if they generated an egg.

Link

Tested on Essentials v13, v19.1, v20.1 and v21.1. If this script isn't working on latest Essentials version, please inform on this thread.
 

Attachments

  • ddcscreen.png
    ddcscreen.png
    6.9 KB · Views: 353
  • dccbackground.png
    dccbackground.png
    7.9 KB · Views: 294
  • item631.png
    item631.png
    1.6 KB · Views: 1,247
  • ddcscreen2.png
    ddcscreen2.png
    8.7 KB · Views: 180
  • dccbackground512x384.png
    dccbackground512x384.png
    10.5 KB · Views: 214
Last edited:
10,673
Posts
14
Years
  • Age 30
  • Seen Dec 30, 2023
Seriously, how have I not seen this. Fantastic addition. Certainly a wonderful idea. I'm going to try out the script a little later on, but definitely something well needed. Great work.
 

SytheXP

Net Labs/UG Founder
387
Posts
16
Years
Nice job FL. I briefly skimmed your post, and you said its activated via Item, is there a way to change it to activate it via button? I was and still against having a DS screen but I like the idea of a side screen so I am planning to implement that and this would be a nice additions.
 

FL

Pokémon Island Creator
2,436
Posts
13
Years
  • Seen yesterday
Nice job FL. I briefly skimmed your post, and you said its activated via Item, is there a way to change it to activate it via button? I was and still against having a DS screen but I like the idea of a side screen so I am planning to implement that and this would be a nice additions.
Yes! In Scene_Map, before 'Scene_Map' add

Code:
   if Input.trigger?(Input::A)
      unless pbMapInterpreterRunning? # Only works if none event command is running
        pbFadeOutIn(99999){ 
          scene=DayCareCheckerScene.new
          screen=DayCareChecker.new(scene)
          screen.startScreen
        }
      end
    end

The 'Input::A' activates when "Z" key is press. You can change it to other key.

You can also change the
Code:
pbFadeOutIn(99999){ 
          scene=DayCareCheckerScene.new
          screen=DayCareChecker.new(scene)
          screen.startScreen
}
to a function/scene if you want to a function/scene be called in game map when some key is pressed.
 
4
Posts
11
Years
  • Seen Oct 25, 2013
It's an awesome script :D

However, when I try to test my game, it says that "Theres no value in line 216 for ItemHandlers"
How could I fix it ?
 

FL

Pokémon Island Creator
2,436
Posts
13
Years
  • Seen yesterday
It's an awesome script :D

However, when I try to test my game, it says that "Theres no value in line 216 for ItemHandlers"
How could I fix it ?
I remove a extra ',' in '# 631,DAYCARESIGHT' line, maybe is it. Besides this, it is working on newer versions.
 
423
Posts
13
Years
  • Age 37
  • Seen Aug 31, 2023
thank you for this managed to get it working as an app for my pokégear
 

FL

Pokémon Island Creator
2,436
Posts
13
Years
  • Seen yesterday
I updated the topic with new script that works in different screens resolutions, plus male/female symbols.

thank you for this managed to get it working as an app for my pokégear
Neat idea!
 
28
Posts
8
Years
  • Age 41
  • Seen Dec 14, 2023
Hi Everyone,

I decided to incorporate this amazing script into my game. I had to make a few adjustments because of the updates since it was written. It seems to be all correct but when I open it in the bag there is no "use" function. So in other words there is no way to actually use the item. The code is below along with the modified Item handles. Any Help would be wonderful. Thank You.

Code:
#===============================================================================
# * One screen Day-Care Checker item - by FL (Credits will be apreciated)
#===============================================================================
#
# This script is for Pokémon Essentials. It makes a One screen Day-Care Checker
# (like in DPP) activated by item. This display the pokémon sprite, names,
# levels, genders and if them generate an egg.
#
#===============================================================================
#
# To this script works, put it above main, put a 480x320 background in 
# DCCBACKPATH location and, like any item, you need to add in the "items.txt"
# and in the script. There an example below using the name DAYCARESIGHT, but
# you can use any other name changing the DCCITEM and the item that be added in
# txt. You can change the internal number too:
#
# 631,DAYCARESIGHT,DayCare Sight,8,0,"A visor that can be use for see certains Pokémon in Day-Care to monitor their growth.",2,0,6
# 
#===============================================================================

DCCITEM=:DAYCARECHECKER # Change this and the item.txt if you wish another name
DCCBACKPATH= "Graphics/Pictures/dccbackground" # You can change if you wish 
# If you wish that the pokémon is positioned like in battle (have the distance
# defined in metadata, even the BattlerAltitude) change the below line to true
DCCBATTLEPOSITION = false

class DayCareCheckerScene  

def startScene
  @sprites={}
  @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
  @viewport.z=99999
  @pkmn1=$PokemonGlobal.daycare[0][0]
  @pkmn2=$PokemonGlobal.daycare[1][0]
  # If you wish that if there only one pokémon, it became right 
  # positioned, them uncomment the four below lines
  #if !@pkmn1 && @pkmn2
  #  @pkmn1=@pkmn2
  #  @pkmn2=nil
  #end  
  textPositions=[]
  baseColor=Color.new(12*8,12*8,12*8)
  shadowColor=Color.new(26*8,26*8,25*8)
  @sprites["background"]=IconSprite.new(0,0,@viewport)
  @sprites["background"].setBitmap(DCCBACKPATH)
  pokemony=Graphics.height/2-32
  pokemonyadjust=pokemony-32 
  if @pkmn1
    @sprites["pokemon1"]=PokemonSprite.new(@viewport)
    @sprites["pokemon1"].setPokemonBitmap(@pkmn1)
    @sprites["pokemon1"].mirror=true
   pbPositionPokemonSprite(@sprites["pokemon1"],32,pokemony)
    @sprites["pokemon1"].y=pokemonyadjust + adjustBattleSpriteY(
        @sprites["pokemon1"],@pkmn1.species,1) if DCCBATTLEPOSITION
    textPositions.push([_INTL("{1} Lv{2}{3}",@pkmn1.name,@pkmn1.level.to_s,
        genderString(@pkmn1.gender)),32,44,false,baseColor,shadowColor])
  end
  if @pkmn2
    @sprites["pokemon2"]=PokemonSprite.new(@viewport)
    @sprites["pokemon2"].setPokemonBitmap(@pkmn2)
   pbPositionPokemonSprite(@sprites["pokemon2"],Graphics.width-168,pokemony)
    @sprites["pokemon2"].y=pokemonyadjust + adjustBattleSpriteY(
        @sprites["pokemon2"],@pkmn2.species,1) if DCCBATTLEPOSITION
    textPositions.push([_INTL("{1} Lv{2}{3}",@pkmn2.name,@pkmn2.level.to_s,
        genderString(@pkmn2.gender)),Graphics.width-16,44,true,baseColor,
        shadowColor])
  end
  if Kernel.pbEggGenerated?
    @sprites["egg"]=IconSprite.new(Graphics.width/2-68,pokemony+32,@viewport)
    @sprites["egg"].setBitmap("Graphics/Battlers/egg")
    # To works with different egg sprite sizes
    @sprites["egg"].x-=(@sprites["egg"].bitmap.width/8-16)*3
    # Uncomment the below line to only a egg shadow be show
    #@sprites["egg"].color=Color.new(0,0,0,255)    
  end
  @sprites["overlay"]=Sprite.new(@viewport)
  @sprites["overlay"].bitmap=BitmapWrapper.new(Graphics.width,Graphics.height)
  pbSetSystemFont(@sprites["overlay"].bitmap)
  if !textPositions.empty?
    pbDrawTextPositions(@sprites["overlay"].bitmap,textPositions)
  end
  pbFadeInAndShow(@sprites) { update }
end

def genderString(gender)
  ret="  "
  if gender==0
    ret=" ♂"
  elsif gender==1
    ret=" ♀"
  end 
  return ret
end  

def middleScene
  loop do
    Graphics.update
    Input.update
    self.update
    if Input.trigger?(Input::B) || Input.trigger?(Input::C)
      break
    end
  end 
end

def update
  pbUpdateSpriteHash(@sprites)
end

def endScene
  pbFadeOutAndHide(@sprites) { update }
  pbDisposeSpriteHash(@sprites)
  @viewport.dispose
end
end

class DayCareChecker

def initialize(scene)
  @scene=scene
end

def startScreen
  @scene.startScene
  @scene.middleScene
  @scene.endScene
end
end

Item Handles
Code:
ItemHandlers::UseFromBag.add(:DCCITEM, proc {|item|
   pbFadeOutIn(99999){ 
     scene=DayCareCheckerScene.new
     screen=DayCareChecker.new(scene)
     screen.startScreen
   }
   next 1 # Continue
})

Code:
ItemHandlers::UseInField.add(:DCCITEM, proc {|item|
   pbFadeOutIn(99999){ 
     scene=DayCareCheckerScene.new
     screen=DayCareChecker.new(scene)
     screen.startScreen
   }
   next 1 # Continue
})
 

FL

Pokémon Island Creator
2,436
Posts
13
Years
  • Seen yesterday
Hi Everyone,

I decided to incorporate this amazing script into my game. I had to make a few adjustments because of the updates since it was written. It seems to be all correct but when I open it in the bag there is no "use" function. So in other words there is no way to actually use the item. The code is below along with the modified Item handles. Any Help would be wonderful. Thank You.

Code:
#===============================================================================
# * One screen Day-Care Checker item - by FL (Credits will be apreciated)
#===============================================================================
#
# This script is for Pok?mon Essentials. It makes a One screen Day-Care Checker
# (like in DPP) activated by item. This display the pok?mon sprite, names,
# levels, genders and if them generate an egg.
#
#===============================================================================
#
# To this script works, put it above main, put a 480x320 background in 
# DCCBACKPATH location and, like any item, you need to add in the "items.txt"
# and in the script. There an example below using the name DAYCARESIGHT, but
# you can use any other name changing the DCCITEM and the item that be added in
# txt. You can change the internal number too:
#
# 631,DAYCARESIGHT,DayCare Sight,8,0,"A visor that can be use for see certains Pok?mon in Day-Care to monitor their growth.",2,0,6
# 
#===============================================================================

DCCITEM=:DAYCARECHECKER # Change this and the item.txt if you wish another name
DCCBACKPATH= "Graphics/Pictures/dccbackground" # You can change if you wish 
# If you wish that the pok?mon is positioned like in battle (have the distance
# defined in metadata, even the BattlerAltitude) change the below line to true
DCCBATTLEPOSITION = false

class DayCareCheckerScene  

def startScene
  @sprites={}
  @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
  @viewport.z=99999
  @pkmn1=$PokemonGlobal.daycare[0][0]
  @pkmn2=$PokemonGlobal.daycare[1][0]
  # If you wish that if there only one pok?mon, it became right 
  # positioned, them uncomment the four below lines
  #if !@pkmn1 && @pkmn2
  #  @pkmn1=@pkmn2
  #  @pkmn2=nil
  #end  
  textPositions=[]
  baseColor=Color.new(12*8,12*8,12*8)
  shadowColor=Color.new(26*8,26*8,25*8)
  @sprites["background"]=IconSprite.new(0,0,@viewport)
  @sprites["background"].setBitmap(DCCBACKPATH)
  pokemony=Graphics.height/2-32
  pokemonyadjust=pokemony-32 
  if @pkmn1
    @sprites["pokemon1"]=PokemonSprite.new(@viewport)
    @sprites["pokemon1"].setPokemonBitmap(@pkmn1)
    @sprites["pokemon1"].mirror=true
   pbPositionPokemonSprite(@sprites["pokemon1"],32,pokemony)
    @sprites["pokemon1"].y=pokemonyadjust + adjustBattleSpriteY(
        @sprites["pokemon1"],@pkmn1.species,1) if DCCBATTLEPOSITION
    textPositions.push([_INTL("{1} Lv{2}{3}",@pkmn1.name,@pkmn1.level.to_s,
        genderString(@pkmn1.gender)),32,44,false,baseColor,shadowColor])
  end
  if @pkmn2
    @sprites["pokemon2"]=PokemonSprite.new(@viewport)
    @sprites["pokemon2"].setPokemonBitmap(@pkmn2)
   pbPositionPokemonSprite(@sprites["pokemon2"],Graphics.width-168,pokemony)
    @sprites["pokemon2"].y=pokemonyadjust + adjustBattleSpriteY(
        @sprites["pokemon2"],@pkmn2.species,1) if DCCBATTLEPOSITION
    textPositions.push([_INTL("{1} Lv{2}{3}",@pkmn2.name,@pkmn2.level.to_s,
        genderString(@pkmn2.gender)),Graphics.width-16,44,true,baseColor,
        shadowColor])
  end
  if Kernel.pbEggGenerated?
    @sprites["egg"]=IconSprite.new(Graphics.width/2-68,pokemony+32,@viewport)
    @sprites["egg"].setBitmap("Graphics/Battlers/egg")
    # To works with different egg sprite sizes
    @sprites["egg"].x-=(@sprites["egg"].bitmap.width/8-16)*3
    # Uncomment the below line to only a egg shadow be show
    #@sprites["egg"].color=Color.new(0,0,0,255)    
  end
  @sprites["overlay"]=Sprite.new(@viewport)
  @sprites["overlay"].bitmap=BitmapWrapper.new(Graphics.width,Graphics.height)
  pbSetSystemFont(@sprites["overlay"].bitmap)
  if !textPositions.empty?
    pbDrawTextPositions(@sprites["overlay"].bitmap,textPositions)
  end
  pbFadeInAndShow(@sprites) { update }
end

def genderString(gender)
  ret="  "
  if gender==0
    ret=" ?"
  elsif gender==1
    ret=" ?"
  end 
  return ret
end  

def middleScene
  loop do
    Graphics.update
    Input.update
    self.update
    if Input.trigger?(Input::B) || Input.trigger?(Input::C)
      break
    end
  end 
end

def update
  pbUpdateSpriteHash(@sprites)
end

def endScene
  pbFadeOutAndHide(@sprites) { update }
  pbDisposeSpriteHash(@sprites)
  @viewport.dispose
end
end

class DayCareChecker

def initialize(scene)
  @scene=scene
end

def startScreen
  @scene.startScene
  @scene.middleScene
  @scene.endScene
end
end

Item Handles
Code:
ItemHandlers::UseFromBag.add(:DCCITEM, proc {|item|
   pbFadeOutIn(99999){ 
     scene=DayCareCheckerScene.new
     screen=DayCareChecker.new(scene)
     screen.startScreen
   }
   next 1 # Continue
})

Code:
ItemHandlers::UseInField.add(:DCCITEM, proc {|item|
   pbFadeOutIn(99999){ 
     scene=DayCareCheckerScene.new
     screen=DayCareChecker.new(scene)
     screen.startScreen
   }
   next 1 # Continue
})
I tested my script right now on V16 and the only thing that need adjust is item, change '631,DAYCARESIGHT,DayCare Sight,8,0,"A visor that can be use for see certains Pok?mon in Day-Care to monitor their growth.",2,0,6' to '631,DAYCARESIGHT,DayCare Sight,DayCare Sight,8,0,"A visor that can be use for see certains Pok?mon in Day-Care to monitor their growth.",2,0,6'. I updated this thread.
 
28
Posts
8
Years
  • Age 41
  • Seen Dec 14, 2023
Okay I tried changing back to the orginal script and changing the items.txt. It doesnt work at all. The item handles had to be rejiggered and there is several inconsistencies in the naming. In some places its DDC and in others it DCC. I was able to get it back to the Bag but when you try to us it from the bag there is still no "use" function. so how exactly is this supposed to be activated???

Never mind I got it working. I changed DCCITEM in the handles to the actual internal name of the item and it worked.
 
Last edited by a moderator:
24
Posts
11
Years
  • Seen Apr 7, 2022
Hey FL. In my game, I have a custom egg sprite that is unique to each Pokemon species. How would I need to change this script to make it so that my custom egg sprite is what shows up as the graphic instead of the default egg sprite?
 

FL

Pokémon Island Creator
2,436
Posts
13
Years
  • Seen yesterday
Hey FL. In my game, I have a custom egg sprite that is unique to each Pokemon species. How would I need to change this script to make it so that my custom egg sprite is what shows up as the graphic instead of the default egg sprite?
Change line '@sprites["egg"].setBitmap("Graphics/Battlers/egg")' into '@sprites["egg"].setBitmap(getEggBitmap(getBabySpecies))'. Before line 'def genderString(gender)' add:

Code:
def getEggBitmap(species)
  bitmapFileName=sprintf("Graphics/Battlers/%segg",getConstantName(PBSpecies,species)) rescue nil
  bitmapFileName=sprintf("Graphics/Battlers/%03degg",species) if !pbResolveBitmap(bitmapFileName)
  bitmapFileName=sprintf("Graphics/Battlers/egg") if !pbResolveBitmap(bitmapFileName)
  bitmapFileName=pbResolveBitmap(bitmapFileName)
  return bitmapFileName
end

def getBabySpecies
  pokemon0=$PokemonGlobal.daycare[0][0]
  pokemon1=$PokemonGlobal.daycare[1][0]
  mother=nil
  father=nil
  babyspecies=0
  ditto0=pbIsDitto?(pokemon0)
  ditto1=pbIsDitto?(pokemon1)
  if (pokemon0.gender==1 || ditto0)
    babyspecies=(ditto0) ? pokemon1.species : pokemon0.species
    mother=pokemon0
    father=pokemon1
  else
    babyspecies=(ditto1) ? pokemon0.species : pokemon1.species
    mother=pokemon1
    father=pokemon0
  end
  babyspecies=pbGetBabySpecies(babyspecies)
  if isConst?(babyspecies,PBSpecies,:MANAPHY) && hasConst?(PBSpecies,:PHIONE)
    babyspecies=getConst(PBSpecies,:PHIONE)
  end
  if isConst?(babyspecies,PBSpecies,:NIDORANfE) && hasConst?(PBSpecies,:NIDORANmA)
    babyspecies=[getConst(PBSpecies,:NIDORANmA),
                 getConst(PBSpecies,:NIDORANfE)][rand(2)]
  elsif isConst?(babyspecies,PBSpecies,:NIDORANmA) && hasConst?(PBSpecies,:NIDORANfE)
    babyspecies=[getConst(PBSpecies,:NIDORANmA),
                 getConst(PBSpecies,:NIDORANfE)][rand(2)]
  elsif isConst?(babyspecies,PBSpecies,:VOLBEAT) && hasConst?(PBSpecies,:ILLUMISE)
    babyspecies=[getConst(PBSpecies,:VOLBEAT),
                 getConst(PBSpecies,:ILLUMISE)][rand(2)]
  elsif isConst?(babyspecies,PBSpecies,:ILLUMISE) && hasConst?(PBSpecies,:VOLBEAT)
    babyspecies=[getConst(PBSpecies,:VOLBEAT),
                 getConst(PBSpecies,:ILLUMISE)][rand(2)]
  elsif isConst?(babyspecies,PBSpecies,:MUNCHLAX) &&
        !isConst?(mother.item,PBItems,:FULLINCENSE) &&
        !isConst?(father.item,PBItems,:FULLINCENSE)
    babyspecies=pbGetNonIncenseLowestSpecies(babyspecies)
  elsif isConst?(babyspecies,PBSpecies,:WYNAUT) &&
        !isConst?(mother.item,PBItems,:LAXINCENSE) &&
        !isConst?(father.item,PBItems,:LAXINCENSE)
    babyspecies=pbGetNonIncenseLowestSpecies(babyspecies)
  elsif isConst?(babyspecies,PBSpecies,:HAPPINY) &&
        !isConst?(mother.item,PBItems,:LUCKINCENSE) &&
        !isConst?(father.item,PBItems,:LUCKINCENSE)
    babyspecies=pbGetNonIncenseLowestSpecies(babyspecies)
  elsif isConst?(babyspecies,PBSpecies,:MIMEJR) &&
        !isConst?(mother.item,PBItems,:ODDINCENSE) &&
        !isConst?(father.item,PBItems,:ODDINCENSE)
    babyspecies=pbGetNonIncenseLowestSpecies(babyspecies)
  elsif isConst?(babyspecies,PBSpecies,:CHINGLING) &&
        !isConst?(mother.item,PBItems,:PUREINCENSE) &&
        !isConst?(father.item,PBItems,:PUREINCENSE)
    babyspecies=pbGetNonIncenseLowestSpecies(babyspecies)
  elsif isConst?(babyspecies,PBSpecies,:BONSLY) &&
        !isConst?(mother.item,PBItems,:ROCKINCENSE) &&
        !isConst?(father.item,PBItems,:ROCKINCENSE)
    babyspecies=pbGetNonIncenseLowestSpecies(babyspecies)
  elsif isConst?(babyspecies,PBSpecies,:BUDEW) &&
        !isConst?(mother.item,PBItems,:ROSEINCENSE) &&
        !isConst?(father.item,PBItems,:ROSEINCENSE)
    babyspecies=pbGetNonIncenseLowestSpecies(babyspecies)
  elsif isConst?(babyspecies,PBSpecies,:AZURILL) &&
        !isConst?(mother.item,PBItems,:SEAINCENSE) &&
        !isConst?(father.item,PBItems,:SEAINCENSE)
    babyspecies=pbGetNonIncenseLowestSpecies(babyspecies)
  elsif isConst?(babyspecies,PBSpecies,:MANTYKE) &&
        !isConst?(mother.item,PBItems,:WAVEINCENSE) &&
        !isConst?(father.item,PBItems,:WAVEINCENSE)
    babyspecies=pbGetNonIncenseLowestSpecies(babyspecies)
  end
  return babyspecies
end
 
6
Posts
9
Years
  • Age 29
  • Seen May 3, 2022
If I wanted to call the scene using a button via mouse what would I use to do so? The method I assumed didn't work:

Code:
  if $mouse.leftClick?(@sprites["DCC"])
        clockButtonAnim(@sprites["DCC"])
        pbFadeOutIn(99999) { 
           pbDayCareCheckerScene 
        }
     end
   end

I'm not the most skilled at coding, everything I know is just me studying the wiki and code in the essentials kit and learning that way.
 

FL

Pokémon Island Creator
2,436
Posts
13
Years
  • Seen yesterday
If I wanted to call the scene using a button via mouse what would I use to do so? The method I assumed didn't work:

Code:
  if $mouse.leftClick?(@sprites["DCC"])
        clockButtonAnim(@sprites["DCC"])
        pbFadeOutIn(99999) { 
           pbDayCareCheckerScene 
        }
     end
   end

I'm not the most skilled at coding, everything I know is just me studying the wiki and code in the essentials kit and learning that way.
You are calling the script wrong, since the item call it with three line inside of pbFadeOutIn, do the same. The below code may works.

Code:
if $mouse.leftClick?(@sprites["DCC"])
  clockButtonAnim(@sprites["DCC"])
  pbFadeOutIn(99999){ 
     scene=DayCareCheckerScene.new
     screen=DayCareChecker.new(scene)
     screen.startScreen
  }
end
 
6
Posts
9
Years
  • Age 29
  • Seen May 3, 2022
You are calling the script wrong, since the item call it with three line inside of pbFadeOutIn, do the same. The below code may works.

Code:
if $mouse.leftClick?(@sprites["DCC"])
  clockButtonAnim(@sprites["DCC"])
  pbFadeOutIn(99999){ 
     scene=DayCareCheckerScene.new
     screen=DayCareChecker.new(scene)
     screen.startScreen
  }
end


Thanks a ton FL, that worked perfectly.
 
Back
Top