• Hi, Guest!
    Some images might be missing as we move away from using embedded images, sorry for the mess!
    From now on, you'll be required to use a third party to host images. You can learn how to add images here, and if your thread is missing images you can request them here.
    Do not use Discord to host any images you post, these links expire quickly!
Essentials BuzzNav v18

Resource Essentials BuzzNav v18 v1.0

Nomi

Trainer
Member
Joined
Feb 24, 2018
Posts
77
Henry submitted a new resource:

BuzzNav - What's the news, pussy cat?

This script adds the BuzzNav into Essentials, with customizability! Obviously, it's not 1-to-1 with the original, but it works. The script is mostly plug-and-play and very customizable.

To start off, copy THIS (made by Marin) and put it anywhere in the DrawText script.
Next, download THESE GRAPHICS and put the folder BuzzNav in the Pictures folder...

Read more about this resource...
 

rhaidor

Novice
Member
Joined
Aug 7, 2020
Posts
25
Hello!
I really like this script , it works like charm. One question: i would like to use it for the story releated events , so is itt possible to call a specific buzz from the list?
Thank You!
Edit: I managed it by this way, it works as intended
 
Last edited:

Golisopod User

Elite Trainer
Member
Joined
May 11, 2020
Posts
319
It would be nice if you also credited Marin, considering he made a component that is needed for your script to work.
 

ArchyArc

Lead Developer of Pokemon Sacred Johto
Member
Joined
May 10, 2017
Posts
38
Very interesting and handy script for those wanting to incorporate news into games now, only question is there anyway to incorporate the use of variables or the use of {1} and etc. into the actual text? cant do brackets around the text with the bits after or INTL at the front.

besides that its a great system!
edit: wondering if theirs a way to force an order, besides enabling one, ending, calling pbbuzznav with that one disabled and the next one enabled (i know repeat stops it repeating but not having a set order)
 
Last edited:

Nomi

Trainer
Member
Joined
Feb 24, 2018
Posts
77
Hello!
I really like this script , it works like charm. One question: i would like to use it for the story releated events , so is itt possible to call a specific buzz from the list?
Thank You!
Edit: I managed it by this way, it works as intended

While you can't currently call a specific buzz, you can do what you did and disable the ones you don't want to use ^^
It would be nice if you also credited Marin, considering he made a component that is needed for your script to work.
oh shoot, i forgot, ty for reminding me!
Very interesting and handy script for those wanting to incorporate news into games now, only question is there anyway to incorporate the use of variables or the use of {1} and etc. into the actual text? cant do brackets around the text with the bits after or INTL at the front.

besides that its a great system!
edit: wondering if theirs a way to force an order, besides enabling one, ending, calling pbbuzznav with that one disabled and the next one enabled (i know repeat stops it repeating but not having a set order)
not atm, but i might be able to add it in eventually! ^^
 

ArchyArc

Lead Developer of Pokemon Sacred Johto
Member
Joined
May 10, 2017
Posts
38
So i found a way to do it, not as effective and could be stream lined but gives you some pointers ^^
(for reference i am using Vendily's Outbreaks, so that a reference)

before the two hightlighted areas where {1} and {2}.

EJ1UqNl.png


but if you go to "drawTextExMulti(@main ..." (remove the ... to find it) its around Line 183 (186 for me but i've added 3 new buzz's)

where it says "currentbuzz.buzztxt" replace it with _INTL(currentbuzz.buzztxt,thing for {1},thing for {2})

ofc this wont work for multiple ones with use of {1} {2} etc.
But you can probably add "if currentbuzz.id==" at the end of above it with an end added, for each one.

hope this helps works for me too (ofc ones without {1} and so will be okay)
 

LackDeJurane

Novice
Member
Joined
Dec 29, 2019
Posts
11
Well, this script was updated to v19 by Judge Creep#6725 on discord.
Ruby:
######################################################
#
#  ____                _   _            
# |  _ \              | \ | |          
# | |_) |_   _ _______|  \| | __ ___   __
# |  _ <| | | |_  /_  / . ` |/ _` \ \ / /
# | |_) | |_| |/ / / /| |\  | (_| |\ V /
# |____/ \__,_/___/___|_| \_|\__,_| \_/
#                                      
#               By Henry
#        Credit henrythefiend if used.
#
#
######################################################
#  _____        __    
# |_   _|      / _|    
#   | |  _ __ | |_ ___
#   | | | '_ \|  _/ _ \
#  _| |_| | | | || (_) |
# |_____|_| |_|_| \___/
#                      
#
#        To call the BuzzNav, use pbBuzzNav
#
#  To add a new Buzz, add one in the "BUZZ" list.
#
#       !!!NO BUZZ SHOULD SHARE IDS!!!
#
#   Buzz.new(ID, Text, Icon, Speaker, Active)
#
#  Icon can be found in Graphics/Pictures/BuzzNav/Icons
#  Presenters can be found in Graphics/Pictures/BuzzNav/Presenters
#
#  Active has to be true or false. To turn a Buzz on or off,
#               use pbSetBuzz(ID, Active).
#
#
#  To change an existing Buzz's text without going into this menu,
#               use pbSetBuzzTxt(ID, "Buzz Text")
#
#
#  To add variables to the text, like a trainer name, go to the
#    variables section at the bottom and look at examples.
#
######################################################
#   _____      _   _   _                
#  / ____|    | | | | (_)              
# | (___   ___| |_| |_ _ _ __   __ _ ___
#  \___ \ / _ \ __| __| | '_ \ / _` / __|
#  ____) |  __/ |_| |_| | | | | (_| \__ \
# |_____/ \___|\__|\__|_|_| |_|\__, |___/
#                               __/ |  
#                              |___/    
#
# USE_BGM should be on if you want to use BGM.
# BGM should be the name of your BGM. Only works
# if USE_BGM is on.
# When REPEAT is false, a Buzz won't appear after that
# same buzz appears. Example: If REPEAT is false, and you've
# got Buzz 1, 2, and 3 active, 1 will only happen after 2 or 3,
# never after another 1. Same goes with 2 only happening after
# 1 and 3, and 3 happening after 1 and 2.
USE_BGM = false
BGM = "Gate"
REPEAT = false
#
######################################################

class Buzz
  attr_accessor :id
  attr_accessor :buzztxt
  attr_accessor :icon
  attr_accessor :presenter
  attr_accessor :active
  def initialize(id, buzztxt, icon, presenter, active)
    self.id = id
    self.buzztxt = buzztxt
    self.icon = icon
    self.presenter = presenter
    self.active = active
  end
end



class Player
  attr_accessor :buzz
  def buzz
    if !@BUZZ
      @BUZZ = [
         Buzz.new(1,"According to recent reports","iconchatter","ann1",false),
         Buzz.new(2,"I like Pokémon!","iconcatch","ann2",false),
         Buzz.new(3,"I found a Pokémon.","iconexplore","ann3",false),
         Buzz.new(4,"I'm a shopaholic.","iconmart","ann4",false),
         Buzz.new(5,"I like to battle.","icontrainer","ann5",false),
         Buzz.new(6,"Our region is great.","iconregion","ann1",true),
         Buzz.new(7,"Your name is {1} and you have {2} Pokémon.","icontrainer","ann2",true),
         Buzz.new(8,"Your name is {1} and you have seen {2} Pokémon.","icontrainer","ann4",true)
      ]
    end
    return @BUZZ
  end
end

def pbBuzzNav
  Buzznav.new
end

def pbSetBuzz(id, active)
  $Trainer.buzz.each{|b|
    if b.id==id
      b.active=active
      break
    end
  }
end

def pbSetBuzzTxt(id, buzztxt)
  $Trainer.buzz.each{|b|
    if b.id==id
      b.buzztxt=buzztxt
      break
    end
  }
end

class BuzzSprite < IconSprite
  attr_accessor :buzz
end

class Buzznav
  def initialize
    @scene = 0
    @mode = 0
    @anim = 0
    @scene = 0
    @lastbuzz = []
    @viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
    @viewport.z = 99999
    @sprites = {}
    @sprites["main"] = BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
    @sprites["main"].z = 5
    @sprites["main"].opacity = 0
    @main = @sprites["main"].bitmap
    pbSetSystemFont(@main)
   
    @sprites["bg"] = IconSprite.new(0, 0, @viewport)
    @sprites["bg"].setBitmap("Graphics/Pictures/BuzzNav/bg")
    @sprites["bg"].opacity = 0
   
    @sprites["txtbox"] = IconSprite.new(0, 0, @viewport)
    @sprites["txtbox"].setBitmap("Graphics/Pictures/BuzzNav/txtbox")
    @sprites["txtbox"].z = 2
    @sprites["txtbox"].opacity = 0
    $game_system.bgm_memorize if USE_BGM==true
    pbBGMPlay(BGM) if USE_BGM==true
    12.times do
      Graphics.update
      @sprites["txtbox"].opacity += 32
      @sprites["bg"].opacity += 32
      @sprites["main"].opacity += 64
    end
    pbLoad
  end
 
  def pbLoad
    if @scene==0
      @frame = 0
      currentbuzz=[]
      loop do
        currentbuzz = $Trainer.buzz[rand($Trainer.buzz.length)]
        if currentbuzz.active
          if currentbuzz.id != @lastbuzz || REPEAT==true
            break
          end
        end
      end
      @sprites["ann"] = IconSprite.new(300, 100, @viewport)
      @sprites["ann"].setBitmap("Graphics/Pictures/BuzzNav/Presenters/"+currentbuzz.presenter)
      @sprites["ann"].opacity = 0
      @sprites["icon"] = IconSprite.new(50, 50, @viewport)
      @sprites["icon"].setBitmap("Graphics/Pictures/BuzzNav/Icons/"+currentbuzz.icon)
      @sprites["icon"].opacity = 0
      @sprites["text"] = IconSprite.new(@viewport)
      @sprites["text"].bitmap = Bitmap.new(Graphics.width,Graphics.height)
      @text = @sprites["text"].bitmap
      pbSetSystemFont(@text)
      ###############################################################
      # Variables
      ###############################################################
      if currentbuzz.id==7
        drawTextExMulti(@main,10,260,500,3,_INTL(currentbuzz.buzztxt,$Trainer.name,$Trainer.pokedex.owned_count),Color.new(255,255,255),Color.new(0,0,0))
      elsif currentbuzz.id==8
        drawTextExMulti(@main,10,260,500,3,_INTL(currentbuzz.buzztxt,$Trainer.name,$Trainer.pokedex.seen_count),Color.new(255,255,255),Color.new(0,0,0))
      else
        drawTextExMulti(@main,10,260,500,3,currentbuzz.buzztxt,Color.new(255,255,255),Color.new(0,0,0))
      end
      ###############################################################
      10.times do
        Graphics.update
        @sprites["main"].opacity += 32
        @sprites["text"].opacity += 32
        @sprites["icon"].opacity += 32
        @sprites["ann"].opacity += 32
      end
      150.times do
        pbWait(1)
        @frame += 1
        Graphics.update
        Input.update
        if Input.trigger?(Input::B)
          @scene=1
          pbEnd
          pbDisposeSpriteHash(@sprites)
          @viewport.dispose
          pbBGMStop(1.0) if USE_BGM==true
          $game_system.bgm_restore if USE_BGM==true
          pbWait(1)
          break
        end
        if @frame==3
          if @anim==0
            @sprites["ann"].y += 3
            @anim=1
          elsif @anim==1
            @sprites["ann"].y -= 3
            @anim=0
          end
        end
        @frame = 0 if @frame == 18
      end
      20.times do
        @sprites["ann"].opacity -= 16 if @sprites["ann"]
        @sprites["icon"].opacity -= 16 if @sprites["icon"]
        @sprites["text"].opacity -= 16 if @sprites["text"]
        @sprites["main"].opacity -= 16 if @sprites["main"]
        @main.clear if @sprites["main"]
        pbWait(1)
      end
      @lastbuzz=currentbuzz.id
      pbLoad
    else
      return
    end
  end
 
  def pbEnd
    12.times do
      Graphics.update
      @sprites["bg"].opacity -= 32
      @sprites["main"].opacity -= 32
      @sprites["ann"].opacity -= 40
      @sprites["icon"].opacity -= 40
      @sprites["text"].opacity -= 40
      @sprites["txtbox"].opacity -= 40
    end
  end
end

###############################################################
#   _____              _ _ _     _    _                       #
#  / ____|            | (_) |   | |  | |                      #
# | |     _ __ ___  __| |_| |_  | |__| | ___ _ __  _ __ _   _ #
# | |    | '__/ _ \/ _` | | __| |  __  |/ _ \ '_ \| '__| | | |#
# | |____| | |  __/ (_| | | |_  | |  | |  __/ | | | |  | |_| |#
#  \_____|_|  \___|\__,_|_|\__| |_|  |_|\___|_| |_|_|   \__, |#
#                                                        __/ |#
#                                                       |___/ #
###############################################################

Please credit them if used!
 

AenaonDogsky

Arbiter of Doggos
Member
Joined
Dec 12, 2017
Posts
501
Here is a v21.1 port for those interested:

BuzzNav 2.1:
######################################################
#
#  ____                _   _            
# |  _ \              | \ | |          
# | |[I]) |[/I]   _ _______|  \| | __ ___   __
# |  _ <| | | |_  /_  / . [ICODE] |/ _[/ICODE] \ \ / /
# | |[I]) | |[/I]| |/ / / /| |\  | (_| |\ V /
# |[B]__/ \[/B],[I]/__[/I]/[B][I]|[/I]| \_|\[/B],[I]| \[/I]/
#                                      
#               By Henry
#        Original Script:  henrythefiend
#        v19 Port: Judge Creep#6725
#        v21 preliminary Port: AenaonDusky
#
#
######################################################
#  _____        __    
# |_   _|      / _|    
#   | |  _ __ | |_ ___
#   | | | '_ \|  _/ _ \
#  [I]| |[/I]| | | | || (_) |
# |_____|[I]| |[/I]|[I]| \__[/I]/
#                      
#
#        To call the BuzzNav, use pbBuzzNav
#
#  To add a new Buzz, add one in the "BUZZ" list.
#
#       !!!NO BUZZ SHOULD SHARE IDS!!!
#
#   Buzz.new(ID, Text, Icon, Speaker, Active)
#
#  Icon can be found in Graphics/Pictures/BuzzNav/Icons
#  Presenters can be found in Graphics/Pictures/BuzzNav/Presenters
#
#  Active has to be true or false. To turn a Buzz on or off,
#               use pbSetBuzz(ID, Active).
#
#
#  To change an existing Buzz's text without going into this menu,
#               use pbSetBuzzTxt(ID, "Buzz Text")
#
#
#  To add variables to the text, like a trainer name, go to the
#    variables section at the bottom and look at examples.
#
######################################################
#   _____      _   _   _                
#  / ____|    | | | | (_)              
# | ([B]_   _[/B]| |[I]| |[/I] _ _ __   __ _ ___
#  \___ \ / _ \ __| __| | '_ \ / [I]` / _[/I]|
#  [B]__) |  __/ |[I]| |[/I]| | | | | (_| \[/B] \
# |_____/ \[B]_|\[/B]|\[B]|[I]|[/I]| |_|\[/B], |___/
#                               __/ |  
#                              |___/    
#
# USE_BGM should be on if you want to use BGM.
# BGM should be the name of your BGM. Only works
# if USE_BGM is on.
# When REPEAT is false, a Buzz won't appear after that
# same buzz appears. Example: If REPEAT is false, and you've
# got Buzz 1, 2, and 3 active, 1 will only happen after 2 or 3,
# never after another 1. Same goes with 2 only happening after
# 1 and 3, and 3 happening after 1 and 2.
USE_BGM = false
BGM = "Gate"
REPEAT = false
#
######################################################

#==============================================
# Setting up the Class
#==============================================

class Buzz
  attr_accessor :id
  attr_accessor :buzztxt
  attr_accessor :icon
  attr_accessor :presenter
  attr_accessor :active
  def initialize(id, buzztxt, icon, presenter, active)
    self.id = id
    self.buzztxt = buzztxt
    self.icon = icon
    self.presenter = presenter
    self.active = active
  end
end

#=========================================================
# Adding an attribute that can be accessed to Player class
#=========================================================

class Player
  attr_accessor :buzz
  def buzz
    if !@BUZZ
      @BUZZ = [
         Buzz.new(1,"According to recent reports","iconchatter","ann1",false),
         Buzz.new(2,"I like Pokémon!","iconcatch","ann2",false),
         Buzz.new(3,"I found a Pokémon.","iconexplore","ann3",false),
         Buzz.new(4,"I'm a shopaholic.","iconmart","ann4",false),
         Buzz.new(5,"I like to battle.","icontrainer","ann5",false),
         Buzz.new(6,"Our region is great.","iconregion","ann1",true),
         Buzz.new(7,"Your name is {1} and you have {2} Pokémon.","icontrainer","ann2",true),
         Buzz.new(8,"Your name is {1} and you have seen {2} Pokémon.","icontrainer","ann4",true)
      ]
    end
    return @BUZZ
  end
end

#==============================================
# Look through in $player and Prepare Buzzes
#==============================================

def pbSetBuzz(id, active)
  $player.buzz.each{|b|
    if b.id==id
      b.active=active
      break
    end
  }
end

# Set buzz text

def pbSetBuzzTxt(id, buzztxt)
  $player.buzz.each{|b|
    if b.id==id
      b.buzztxt=buzztxt
      break
    end
  }
end

# Set buzz icon

class BuzzSprite < IconSprite
  attr_accessor :buzz
end

#==============================================
# The Scene for Buzznav
#==============================================

class BuzzNavScene

# Initialize Scene

    def pbStartScene
    @anim = 0
    @lastbuzz = []
    @viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
    @viewport.z = 99999
    @sprites = {}
    @sprites["main"] = BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
    @sprites["main"].z = 5
    @sprites["main"].opacity = 0
    @main = @sprites["main"].bitmap
    pbSetSystemFont(@main)  
    @sprites["bg"] = IconSprite.new(0, 0, @viewport)
    @sprites["bg"].setBitmap("Graphics/Pictures/BuzzNav/bg")
    @sprites["bg"].opacity = 0 
    @sprites["txtbox"] = IconSprite.new(0, 0, @viewport)
    @sprites["txtbox"].setBitmap("Graphics/Pictures/BuzzNav/txtbox")
    @sprites["txtbox"].z = 2
    @sprites["txtbox"].opacity = 0
    $game_system.bgm_memorize if USE_BGM==true
    pbBGMPlay(BGM) if USE_BGM==true
	
    12.times do
      Graphics.update
      @sprites["txtbox"].opacity += 32
      @sprites["bg"].opacity += 32
      @sprites["main"].opacity += 64
    end
	pbLoadBuzz
end

# Load Buzz
	
   def pbLoadBuzz
	 @timer = 0
	 @frame = 0
      currentbuzz=[]
      loop do
        currentbuzz = $player.buzz[rand($player.buzz.length)]
        if currentbuzz.active
          if currentbuzz.id != @lastbuzz || REPEAT==true
            break
          end
        end
      end
      @sprites["ann"] = IconSprite.new(300, 100, @viewport)
      @sprites["ann"].setBitmap("Graphics/Pictures/BuzzNav/Presenters/"+currentbuzz.presenter)
      @sprites["ann"].opacity = 0
      @sprites["icon"] = IconSprite.new(50, 50, @viewport)
      @sprites["icon"].setBitmap("Graphics/Pictures/BuzzNav/Icons/"+currentbuzz.icon)
      @sprites["icon"].opacity = 0
      @sprites["text"] = IconSprite.new(@viewport)
      @sprites["text"].bitmap = Bitmap.new(Graphics.width,Graphics.height)
      @text = @sprites["text"].bitmap
      pbSetSystemFont(@text)
      ###############################################################
      # Variables
      ###############################################################
      if currentbuzz.id==7
        drawTextExMulti(@main,10,260,500,3,_INTL(currentbuzz.buzztxt,$player.name),Color.new(255,255,255),Color.new(0,0,0))
      elsif currentbuzz.id==8
        drawTextExMulti(@main,10,260,500,3,_INTL(currentbuzz.buzztxt,$player.name),Color.new(255,255,255),Color.new(0,0,0))
      else
        drawTextExMulti(@main,10,260,500,3,currentbuzz.buzztxt,Color.new(255,255,255),Color.new(0,0,0))
      end
      ###############################################################

      # Fade in assets
	   10.times do
        Graphics.update
        @sprites["main"].opacity += 32
        @sprites["text"].opacity += 32
        @sprites["icon"].opacity += 32
        @sprites["ann"].opacity += 32
      end
  
   @lastbuzz=currentbuzz.id   # Set last viewed buzz

end  
  
  def pbMain  
	loop do
	   @frame += 1  # add to framecount for sprite movement
	   @timer += 1 # add to timer before buzz changes
       Graphics.update
       Input.update	
	   self.update
       if Input.trigger?(Input::BACK)     # if cancel, break
		  pbBGMStop(1.0) if USE_BGM==true
          $game_system.bgm_restore if USE_BGM==true
          break
       end  
	   
	   # moving sprite depending on frames   
	   if @frame==3
          if @anim==0
            @sprites["ann"].y += 3
            @anim=1
          elsif @anim==1
            @sprites["ann"].y -= 3
            @anim=0
          end
        end
		
       @frame = 0 if @frame == 18 		# setting frame to zero when it's reached 18
		
	   if @timer==160  	# If timer 160, fade out graphics and clear them
	         20.times do
             @sprites["ann"].opacity -= 16 if @sprites["ann"]
             @sprites["icon"].opacity -= 16 if @sprites["icon"]
             @sprites["text"].opacity -= 16 if @sprites["text"]
             @sprites["main"].opacity -= 16 if @sprites["main"]
             @main.clear if @sprites["main"]
             end

	        pbLoadBuzz # load again after 160
	   end	
    end 	   
end
	

  def update
     pbUpdateSpriteHash(@sprites)
  end


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

#==============================================
# The Screen Class for Buzznav
#==============================================
	
class BuzzNavScreen 
  def initialize(scene)
    @scene=scene
  end
  
  
  def pbStartScreen  #initializing, calling the main loop, and ending the scene
    @scene.pbStartScene
	@scene.pbMain
    @scene.pbEndScene
  end
end

#==============================================
# The Script Call, to be used in events
#==============================================

def pbBuzzNav
    scene = BuzzNavScene.new
    screen = BuzzNavScreen.new(scene)
    screen.pbStartScreen
end

  
###############################################################
#   _____              _ _ _     _    _                       #
#  / ____|            | (_) |   | |  | |                      #
# | |     _ __ [B]_  __| |[I]| |[/I]  | |[/B]| | ___ _ __  _ __ _   _ #
# | |    | '[B]/ _ \/ [I]` | | _[/I]| |  __  |/ _ \ '_ \| '[/B]| | | |#
# | |____| | |  __/ ([I]| | | |[/I]  | |  | |  __/ | | | |  | |_| |#
#  \_____|[I]|  \__[/I]|\[B],[I]|[/I]|\[/B]| |[I]|  |[/I]|\[B][I]|[/I]| |[I]|[/I]|   \[/B], |#
#                                                        __/ |#
#                                                       |___/ #
###############################################################
 
Back
Top