Scripts & Tutorials This forum is for scripts and code, as well as all kinds of tutorials, software, tools and so forth. Remember to give credit!
The thread revival limit does not apply here.

Closed Thread
 
Thread Tools
  #1    
Old May 30th, 2012 (4:23 PM). Edited June 20th, 2012 by zingzags.
zingzags's Avatar
zingzags zingzags is offline
PokemonGDX creator
     
    Join Date: Jan 2009
    Location: Boston
    Age: 23
    Nature: Adamant
    Posts: 562
    Well here you go :p
    I know it can be cleaner and shortened.

    Code:
    #==============================================================================
    # ¡Ü Credits to Help - 14 for both the scripts and Sprites
    # ¡Ü Edited by Zingzags 
    # -Fixed bugs
    # -Clean ups
    # -Fixed Surf Bug (After Surf is done)
    # -Fixed def talk_to_pokemon while in surf
    # -Fixed Surf Check
    # -Fixed Type Check
    # -Added Door Support
    # -Fixed Hp Bug
    # -Added Pokemon Center Support
    # -Animation problems
    # -Fixed Walk_time_variable problem
    # -Added random item loot
    # -Added egg check
    #==============================================================================
    # Zingzags comments
    #==============================================================================
    # I know its not perfect, and it can be shortened, for example addind an array 
    # for the random items.
    #==============================================================================
    
    #==============================================================================
    #   ¡Ü Control the following Pokemon
    #==============================================================================
    
    def FollowingMoveRoute(commands,waitComplete=false)
        $PokemonTemp.dependentEvents.SetMoveRoute(commands,waitComplete)
    end
    
    #==============================================================================
    #   ¡Ü Pokemon Following Character v3 By Help-14
    #==============================================================================
    
    class DependentEvents
    #==============================================================================
    # Raises The Current Pokemon's Happiness levels +1 per each time the 
    # Walk_time_Variable reachs 5000 then resets to 0
    # ItemWalk, is when the variable reaches a certain amount, that you are able to talk to your pokemon to recieve an item
    #==============================================================================
        def add_following_time
          if $game_switches[2]==true && $Trainer.party.length>=1
            $game_variables[Walking_Time_Variable]+=1 if $game_variables[Current_Following_Variable]!=$Trainer.party.length
            if $game_variables[Walking_Time_Variable]==5000
              $Trainer.party[0].happiness+=1
              $game_variables[Walking_Time_Variable]=0
            if $game_variables[ItemWalk]==5
               else
               $game_variables[ItemWalk]+=1
              end
            end
          end
        end
      #----------------------------------------------------------------------------
      # -  refresh_sprite
      # -  Change sprite without animation
      #----------------------------------------------------------------------------
      
      def refresh_sprite
        if $Trainer.party.length!=$game_variables[Current_Following_Variable]
          if $Trainer.party[0].isShiny?
            shiny=true
          else
            shiny=false
          end
          if $Trainer.party[0].hp>0 && !$Trainer.party[0].egg?
          change_sprite($Trainer.party[0].species, shiny, false)
        elsif $Trainer.party[0].hp<=0 
          remove_sprite
          end
         end
        end
    
      #----------------------------------------------------------------------------
      # - change_sprite(id, shiny, animation)
      # - Example, to change sprite to shiny lugia with animation:
      #     change_sprite(249, true, true)
      # - If just change sprite:
      #     change_sprite(249)
      #----------------------------------------------------------------------------
      def change_sprite(id, shiny=nil, animation=nil)
        events=$PokemonGlobal.dependentEvents
        for i in 0...events.length
          if events[i] && events[i][8]=="Dependent"
            if shiny==true
               events[i][6]=sprintf("%03ds",id)
            if FileTest.image_exist?("Graphics/Characters/"+events[i][6])
              @realEvents[i].character_name=sprintf("%03ds",id)
            else
              events[i][6]=sprintf("%03d",id)
              @realEvents[i].character_name=sprintf("%03d",id)
              end
            else
              events[i][6]=sprintf("%03d",id)
              @realEvents[i].character_name=sprintf("%03d",id)
            end
           if animation==true
              $scene.spriteset.addUserAnimation(Animation_Come_Out,@realEvents[i].x,@realEvents[i].y)
            end
            $game_variables[Walking_Time_Variable]=0
          end
        end
      end
      
      #----------------------------------------------------------------------------
      # - remove_sprite(animation)
      # - Example, to remove sprite with animation:
      #     remove_sprite(true)
      # - If just remove sprite:
      #     remove_sprite
      #----------------------------------------------------------------------------
      
      def remove_sprite(animation=nil)
        events=$PokemonGlobal.dependentEvents
        for i in 0...events.length
          if events[i] && events[i][8]=="Dependent"
              events[i][6]=sprintf("nil")
              @realEvents[i].character_name=sprintf("nil")
             if animation==true
              $scene.spriteset.addUserAnimation(Animation_Come_In,@realEvents[i].x,@realEvents[i].y)
              pbWait(10)
              end
            $game_variables[Current_Following_Variable]=$Trainer.party[0]
            $game_variables[Walking_Time_Variable]=0
          end
        end
      end
    
      #----------------------------------------------------------------------------
      # - check_surf(animation)
      # - If current Pokemon is a water Pokemon, it is still following.
      # - If current Pokemon is not a water Pokemon, remove sprite.
      # - Require Water_Pokemon_Can_Surf = true to enable
      #----------------------------------------------------------------------------
    def check_surf(animation=nil)
      events=$PokemonGlobal.dependentEvents
        for i in 0...events.length
          if events[i] && events[i][8]=="Dependent"
             events[i][6]=sprintf("nil")
             @realEvents[i].character_name=sprintf("nil")
           else
           if $Trainer.party[0].hp>0 && !$Trainer.party[0].egg?
            if $Trainer.party[0].hasType?(:WATER)
            remove_sprite
          else
            remove_sprite
            pbWait(20)
          end
        elsif $Trainer.party[0].hp<=0 
          end
        end
      end
    end  
      
      #----------------------------------------------------------------------------
      # -  talk_to_pokemon
      # -  It will run when you talk to Pokemon following
      #----------------------------------------------------------------------------
    
      def talk_to_pokemon
        e=$Trainer.party[0]
        events=$PokemonGlobal.dependentEvents
        for i in 0...events.length
          if events[i] && events[i][8]=="Dependent"
              [email protected][i].x
              [email protected][i].y
          end
        end
        if e==0
        else
        if e.hp>0 && !$Trainer.party[0].egg?
        if $PokemonGlobal.surfing==true || $PokemonGlobal.bicycle==true
        else
          if e!=6
           pbPlayCry(e.species)
           random1=rand(5)
    if $game_variables[ItemWalk]==5 
          items=[:POTION,:SUPERPOTION,:FULLRESTORE,:REVIVE,:PPUP,
           :PPMAX,:RARECANDY,:REPEL,:MAXREPEL,:ESCAPEROPE,
           :HONEY,:TINYMUSHROOM,:PEARL,:NUGGET,:GREATBALL,
           :ULTRABALL,:THUNDERSTONE,:MOONSTONE,:SUNSTONE,:DUSKSTONE,
           :REDAPRICORN,:BLUAPRICORN,:YLWAPRICORN,:GRNAPRICORN,:PNKAPRICORN,
           :BLKAPRICORN,:WHTAPRICORN
          ]
    random2=0
    loop do
      random2=rand(items.length)
      break if hasConst?(PBItems,items[random2])
     end
    
    Kernel.pbMessage(_INTL("{1} seems to be holding something, it looks like {1} wants to give it to me.",e.name))
    Kernel.pbPokemonFound(getConst(PBItems,items[random2]))
    $game_variables[ItemWalk]=0
          end
          
           if random1==0
            $scene.spriteset.addUserAnimation(Emo_sing, pos_x, pos_y-2)
            pbWait(50)
            Kernel.pbMessage(_INTL("{1} loves this tune so much that {1} is singing it.",e.name)) 
          elsif e.happiness>0 && e.happiness<=50
            $scene.spriteset.addUserAnimation(Emo_Hate, pos_x, pos_y-2)
            pbWAit(70)
            Kernel.pbMessage(_INTL("{1} hate to travel with {2}.",e.name,$Trainer.name))
          elsif e.status==PBStatuses::POISON && e.hp>0 && !e.egg?
            $scene.spriteset.addUserAnimation(Emo_Poison, pos_x, pos_y-2)
            pbWait(120)
            Kernel.pbMessage(_INTL("{1} is badly poisoned, {1} needs help quick.",e.name))
          elsif e.happiness>50 && e.happiness<=100
            $scene.spriteset.addUserAnimation(Emo_Normal, pos_x, pos_y-2)
            pbWait(100)
            Kernel.pbMessage(_INTL("{1} is still undecided for whether traveling with {2} is a good thing or not.",e.name,$Trainer.name))
          elsif e.happiness>100 && e.happiness<150
            $scene.spriteset.addUserAnimation(Emo_Happy, pos_x, pos_y-2)
            Kernel.pbMessage(_INTL("{1} is happy traveling with {2}.",e.name,$Trainer.name))
          elsif e.happiness>=150
            $scene.spriteset.addUserAnimation(Emo_love, pos_x, pos_y-2)
            pbWait(70)
            Kernel.pbMessage(_INTL("{1} loves traveling with {2}.",e.name,$Trainer.name))
          end
          
        else
        
         
         end
        end
       end
      end
     end
    
    
    def Come_back(shiny=nil, animation=nil)
      events=$PokemonGlobal.dependentEvents
      if $game_variables[Current_Following_Variable]==$Trainer.party.length
          $game_variables[Current_Following_Variable]
        else
          $game_variables[Current_Following_Variable]
        end
        if $game_variables[Current_Following_Variable]==$Trainer.party.length
          remove_sprite(false)
          for i in 0...events.length 
          $scene.spriteset.addUserAnimation(Animation_Come_Out,@realEvents[i].x,@realEvents[i].y)
       end
         else
          if $Trainer.party[0].isShiny?
            shiny=true
          else
            shiny=false
          end
          change_sprite($Trainer.party[0].species, shiny, false)
        end
        for i in 0..$Trainer.party.length-1
            if $Trainer.party[i].hp>0 && !$Trainer.party[0].egg?
              $game_variables[Current_Following_Variable]=i
              refresh_sprite
              break
            end
          end
        for i in 0...events.length 
           for i in 0..$Trainer.party.length-1
         if $Trainer.party[i].hp<=0 
           id = $Trainer.party[i].species
         else
           id = $Trainer.party[i].species
          end
         end
      if events[i] && events[i][8]=="Dependent"
            if shiny==true
               events[i][6]=sprintf("%03ds",id)
            if FileTest.image_exist?("Graphics/Characters/"+events[i][6])
              @realEvents[i].character_name=sprintf("%03ds",id)
            else
              events[i][6]=sprintf("%03d",id)
              @realEvents[i].character_name=sprintf("%03d",id)
              end
            else
              events[i][6]=sprintf("%03d",id)
              @realEvents[i].character_name=sprintf("%03d",id)
            end
          if animation==true
          else
          end
        end 
      end 
    end
    
      #----------------------------------------------------------------------------
      # - check_faint
      # - If current Pokemon is fainted, change other Pokemon.
      #----------------------------------------------------------------------------
    
    def check_faint
      if $PokemonGlobal.surfing==true || $PokemonGlobal.bicycle==true
      else
    
      if $Trainer.party[0].hp<=0 
        $game_variables[Current_Following_Variable]=0  
        remove_sprite
       elsif $Trainer.party[0].hp>0 && !$Trainer.party[0].egg?
    
      end 
     end
    end
    
    def SetMoveRoute(commands,waitComplete=false)
        events=$PokemonGlobal.dependentEvents
        for i in 0...events.length
          if events[i] && events[i][8]=="Dependent"
            pbMoveRoute(@realEvents[i],commands,waitComplete)
          end
        end
      end
    end
    
      #----------------------------------------------------------------------------
      # -  Auto add Script to Kernel.pbSurf, It'll check curent Pokemon when surf
      #----------------------------------------------------------------------------  
    
      def Kernel.pbSurf
    #  if $game_player.pbHasDependentEvents?
    #    return false
    #  end
      if $DEBUG ||
        (HIDDENMOVESCOUNTBADGES ? $Trainer.numbadges>=BADGEFORSURF : $Trainer.badges[BADGEFORSURF])
        movefinder=Kernel.pbCheckMove(:SURF)
        if $DEBUG || movefinder
          if Kernel.pbConfirmMessage(_INTL("The water is dyed a deep blue...  Would you like to surf?"))
            speciesname=!movefinder ? $Trainer.name : movefinder.name
            Kernel.pbMessage(_INTL("{1} used Surf!",speciesname))
            pbHiddenMoveAnimation(movefinder)
    #        $PokemonTemp.dependentEvents.check_surf
            surfbgm=pbGetMetadata(0,MetadataSurfBGM)
            $PokemonTemp.dependentEvents.check_surf
            if surfbgm
              pbCueBGM(surfbgm,0.5)
            end
            pbStartSurfing()
            return true
          end
        end
      end
      return false
    end
    
    
    
      #----------------------------------------------------------------------------
      # -  Auto add Script to pbEndSurf, It'll show sprite after surf
      #----------------------------------------------------------------------------  
    
      def pbEndSurf(xOffset,yOffset)
          return false if !$PokemonGlobal.surfing
      x=$game_player.x
      y=$game_player.y
      currentTag=$game_map.terrain_tag(x,y)
      facingTag=Kernel.pbFacingTerrainTag
      if pbIsSurfableTag?(currentTag)&&!pbIsSurfableTag?(facingTag)
        if Kernel.pbJumpToward
          Kernel.pbCancelVehicles
          $game_map.autoplayAsCue
          $game_player.increase_steps
          result=$game_player.check_event_trigger_here([1,2])
          Kernel.pbOnStepTaken(result)
          $PokemonTemp.dependentEvents.Come_back(true)
        end
        return true
      end
      return false
    end
      #----------------------------------------------------------------------------
      # -  Auto add Script to Kernel.pbCanUseHiddenMove, fix HM bug
      #----------------------------------------------------------------------------  
    def Kernel.pbCanUseHiddenMove?(pkmn,move)
     case move
      when PBMoves::FLY
       if !$DEBUG && !$Trainer.badges[BADGEFORFLY]
        Kernel.pbMessage(_INTL("Sorry, a new Badge is required."))
        return false
       end
       #if $game_player.pbHasDependentEvents?
       # Kernel.pbMessage(_INTL("You can't use that if 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
      when PBMoves::CUT
       if !$DEBUG && !$Trainer.badges[BADGEFORCUT]
        Kernel.pbMessage(_INTL("Sorry, a new Badge is required."))
        return false
       end
       facingEvent=$game_player.pbFacingEvent
       if !facingEvent || facingEvent.name!="Tree"
        Kernel.pbMessage(_INTL("Can't use that here."))
        return false
       end
       return true
      when PBMoves::HEADBUTT
       facingEvent=$game_player.pbFacingEvent
       if !facingEvent || facingEvent.name!="HeadbuttTree"
        Kernel.pbMessage(_INTL("Can't use that here."))
        return false
       end
       return true
      when PBMoves::SURF
       terrain=Kernel.pbFacingTerrainTag
       if !$DEBUG && !$Trainer.badges[BADGEFORCUT]
        Kernel.pbMessage(_INTL("Sorry, a new Badge is required."))
        return false
       end
       if $PokemonGlobal.surfing
        Kernel.pbMessage(_INTL("You're already surfing."))
        return false
       end
       #if $game_player.pbHasDependentEvents?
       # Kernel.pbMessage(_INTL("You can't use that if you have someone with you."))
       # return false
       #end
       terrain=Kernel.pbFacingTerrainTag
       if pbGetMetadata($game_map.map_id,MetadataBicycleAlways)
        Kernel.pbMessage(_INTL("Let's enjoy cycling!"))
        return false
       end
       if !pbIsWaterTag?(terrain)
        Kernel.pbMessage(_INTL("No surfing here!"))
        return false
       end
       return true
      when PBMoves::STRENGTH
       if !$DEBUG && !$Trainer.badges[BADGEFORSTRENGTH]
        Kernel.pbMessage(_INTL("Sorry, a new Badge is required."))
        return false
       end
       facingEvent=$game_player.pbFacingEvent
       if !facingEvent || facingEvent.name!="Boulder"
        Kernel.pbMessage(_INTL("Can't use that here."))
        return false
       end
       return true  
      when PBMoves::ROCKSMASH
       terrain=Kernel.pbFacingTerrainTag
       if !$DEBUG && !$Trainer.badges[BADGEFORROCKSMASH]
        Kernel.pbMessage(_INTL("Sorry, a new Badge is required."))
        return false
       end
       facingEvent=$game_player.pbFacingEvent
       if !facingEvent || facingEvent.name!="Rock"
        Kernel.pbMessage(_INTL("Can't use that here."))
        return false
       end
       return true  
      when PBMoves::FLASH
       if !$DEBUG && !$Trainer.badges[BADGEFORFLASH]
        Kernel.pbMessage(_INTL("Sorry, a new Badge is required."))
        return false
       end
       if !pbGetMetadata($game_map.map_id,MetadataDarkMap)
        Kernel.pbMessage(_INTL("Can't use that here."))
        return false
       end
       if $PokemonGlobal.flashUsed
        Kernel.pbMessage(_INTL("This is in use already."))
        return false
       end
       return true
      when PBMoves::WATERFALL
       if !$DEBUG && !$Trainer.badges[BADGEFORWATERFALL]
        Kernel.pbMessage(_INTL("Sorry, a new Badge is required."))
        return false
       end
       terrain=Kernel.pbFacingTerrainTag
       if terrain!=PBTerrain::Waterfall
        Kernel.pbMessage(_INTL("Can't use that here."))
        return false
       end
       return true
      when PBMoves::DIVE
       if !$DEBUG && !$Trainer.badges[BADGEFORDIVE]
        Kernel.pbMessage(_INTL("Sorry, a new Badge is required."))
        return false
       end
       if $PokemonGlobal.diving
        return true
       end
       if $game_player.terrain_tag!=PBTerrain::DeepWater
        Kernel.pbMessage(_INTL("Can't use that here."))
        return false
       end
       if !pbGetMetadata($game_map.map_id,MetadataDiveMap)
        Kernel.pbMessage(_INTL("Can't use that here."))
        return false
       end
       return true
      when PBMoves::TELEPORT
       if !pbGetMetadata($game_map.map_id,MetadataOutdoor)
        Kernel.pbMessage(_INTL("Can't use that here."))
        return false
       end
       #if $game_player.pbHasDependentEvents?
       # Kernel.pbMessage(_INTL("You can't use that if you have someone with you."))
       # return false
       #end
       healing=$PokemonGlobal.healingSpot
       if !healing
        healing=pbGetMetadata(0,MetadataHome) # Home
       end
       if healing
        mapname=pbGetMapNameFromId(healing[0])
        if Kernel.pbConfirmMessage(_INTL("Want to return to the healing spot used last in {1}?",mapname))
         return true
        end
        return false
       else
        Kernel.pbMessage(_INTL("Can't use that here."))
        return false
       end
      when PBMoves::DIG
       escape=pbGetMetadata($game_map.map_id,MetadataEscapePoint)
       if !escape
        Kernel.pbMessage(_INTL("Can't use that here."))
        return false
       end
       if $game_player.pbHasDependentEvents?
        Kernel.pbMessage(_INTL("You can't use that if you have someone with you."))
        return false
       end
       mapname=pbGetMapNameFromId(escape[0])
       if Kernel.pbConfirmMessage(_INTL("Want to escape from here and return to {1}?",mapname))
        return true
       end
       return false
      when PBMoves::SWEETSCENT
       return true
      else
       return HiddenMoveHandlers.triggerCanUseMove(move,pkmn)
     end
     return false
    end
    
    def pbPokemonFollow(x)
    Kernel.pbAddDependency2(x, "Dependent", CommonEvent)
    $PokemonTemp.dependentEvents.refresh_sprite
    end
    
    def Talkative
      $PokemonTemp.dependentEvents.talk_to_pokemon
    end
    replace Kernel.pbMountBike with
    Code:
    def Kernel.pbMountBike
      return if $PokemonGlobal.bicycle
      $PokemonGlobal.bicycle=true
      $PokemonTemp.dependentEvents.remove_sprite(true)
      Kernel.pbUpdateVehicle
      bikebgm=pbGetMetadata(0,MetadataBicycleBGM)
      if bikebgm
        pbCueBGM(bikebgm,0.5)
      end
    end
    replace dependent events
    Code:
    class PokemonTemp
      attr_accessor :dependentEvents
    
      def dependentEvents
        @dependentEvents=DependentEvents.new if [email protected]
        return @dependentEvents
      end
    end
    
    
    
    def pbRemoveDependencies()
      $PokemonTemp.dependentEvents.removeAllEvents()
      pbDeregisterPartner() rescue nil
    end
    
    def pbAddDependency(event)
      $PokemonTemp.dependentEvents.addEvent(event)
    end
    
    def pbRemoveDependency(event)
      $PokemonTemp.dependentEvents.removeEvent(event)
    end
    
    def pbAddDependency2(eventID, eventName, commonEvent)
      $PokemonTemp.dependentEvents.addEvent($game_map.events[eventID],eventName,commonEvent)
    end
    
    # Gets the Game_Character object associated with a dependent event.
    def pbGetDependency(eventName)
      return $PokemonTemp.dependentEvents.getEventByName(eventName)
    end
    
    def pbRemoveDependency2(eventName)
      $PokemonTemp.dependentEvents.removeEventByName(eventName)
    end
    
    
    
    class PokemonGlobalMetadata
      attr_accessor :dependentEvents
    
      def dependentEvents
        @dependentEvents=[] if [email protected]
        return @dependentEvents
      end
    end
    
    
    
    class Game_Event
      def set_starting
        @starting=true
      end
    end
    
    
    
    def pbTestPass(follower,x,y,direction=nil)
      return $MapFactory.isPassableStrict?(follower.map.map_id,x,y,follower)
    end
    
    # Same map only
    def moveThrough(follower,direction)
      oldThrough=follower.through
      follower.through=true
      case direction
        when 2 # down
          follower.move_down
        when 4 # left
          follower.move_left
        when 6 # right
          follower.move_right
        when 8 # up
          follower.move_up
      end 
      follower.through=oldThrough
    end
    
    # Same map only
    def moveFancy(follower,direction)
      deltaX=(direction == 6 ? 1 : (direction == 4 ? -1 : 0))
      deltaY=(direction == 2 ? 1 : (direction == 8 ? -1 : 0))
      newX = follower.x + deltaX
      newY = follower.y + deltaY
      # Move if new position is the player's, or the new position is passable,
      # or the current position is not passable
      if ($game_player.x==newX && $game_player.y==newY) ||
         pbTestPass(follower,newX,newY,0) ||
         !pbTestPass(follower,follower.x,follower.y,0)
        oldThrough=follower.through
        follower.through=true
        case direction
          when 2 # down
            follower.move_down
          when 4 # left
            follower.move_left
          when 6 # right
            follower.move_right
          when 8 # up
            follower.move_up
        end 
        follower.through=oldThrough
      end
    end
    
    # Same map only
    def jumpFancy(follower,direction)
      deltaX=(direction == 6 ? 2 : (direction == 4 ? -2 : 0))
      deltaY=(direction == 2 ? 2 : (direction == 8 ? -2 : 0))
      halfDeltaX=(direction == 6 ? 1 : (direction == 4 ? -1 : 0))
      halfDeltaY=(direction == 2 ? 1 : (direction == 8 ? -1 : 0))
      middle=pbTestPass(follower,follower.x+halfDeltaX,follower.y+halfDeltaY,0)
      ending=pbTestPass(follower,follower.x+deltaX,    follower.y+deltaY,    0)
      if middle
        moveFancy(follower,direction)
        moveFancy(follower,direction)
      elsif ending
        if pbTestPass(follower,follower.x,follower.y,0)
          follower.jump(deltaX,deltaY)
        else
          moveThrough(follower,direction)
          moveThrough(follower,direction)
        end
      end
    end
    
    def pbFancyMoveTo(follower,newX,newY)
      if follower.x-newX==-1 && follower.y==newY
        moveFancy(follower,6)
      elsif follower.x-newX==1 && follower.y==newY
        moveFancy(follower,4)
      elsif follower.y-newY==-1 && follower.x==newX
        moveFancy(follower,2)
      elsif follower.y-newY==1 && follower.x==newX
        moveFancy(follower,8)
      elsif follower.x-newX==-2 && follower.y==newY
        jumpFancy(follower,6)
      elsif follower.x-newX==2 && follower.y==newY
        jumpFancy(follower,4)
      elsif follower.y-newY==-2 && follower.x==newX
        jumpFancy(follower,2)
      elsif follower.y-newY==2 && follower.x==newX
        jumpFancy(follower,8)
      elsif follower.x!=newX || follower.y!=newY
        follower.moveto(newX,newY)
      end
    end
    
    
    
    class DependentEvents
      def createEvent(eventData)
        rpgEvent=RPG::Event.new(eventData[3],eventData[4])
        rpgEvent.id=eventData[1]
        if eventData[9]
          # Must setup common event list here and now
          commonEvent=Game_CommonEvent.new(eventData[9])
          rpgEvent.pages[0].list=commonEvent.list
        end
        newEvent=Game_Event.new(eventData[0],rpgEvent,
           $MapFactory.getMap(eventData[2]))
        newEvent.character_name=eventData[6]
        newEvent.character_hue=eventData[7]
        case eventData[5] # direction
          when 2 # down
            newEvent.turn_down
          when 4 # left
            newEvent.turn_left
          when 6 # right
            newEvent.turn_right
          when 8 # up
            newEvent.turn_up
        end
        return newEvent
      end
    
      attr_reader :lastUpdate
    
      def initialize
        # Original map, Event ID, Current map, X, Y, Direction
        events=$PokemonGlobal.dependentEvents
        @realEvents=[]
        @lastUpdate=-1
        for event in events
          @realEvents.push(createEvent(event))
        end
      end
    
      def pbEnsureEvent(event, newMapID)
        events=$PokemonGlobal.dependentEvents
        found=-1
        for i in 0...events.length
          # Check original map ID and original event ID 
          if events[i][0]==event.map_id && events[i][1]==event.id
            # Change current map ID
            events[i][2]=newMapID
            newEvent=createEvent(events[i])
            # Replace event
            @realEvents[i]=newEvent
            @lastUpdate+=1
            return i
          end
        end
        return -1
      end
    
      def pbFollowEventAcrossMaps(leader,follower,instant=false,leaderIsTrueLeader=true)
        d=leader.direction
        areConnected=$MapFactory.areConnected?(leader.map.map_id,follower.map.map_id)
        # Get the rear facing tile of leader
        facingDirection=[0,0,8,0,6,0,4,0,2][d]
        if !leaderIsTrueLeader && areConnected
          relativePos=$MapFactory.getThisAndOtherEventRelativePos(leader,follower)
          if (relativePos[1]==0 && relativePos[0]==2) # 2 spaces to the right of leader
            facingDirection=6
          elsif (relativePos[1]==0 && relativePos[0]==-2) # 2 spaces to the left of leader
            facingDirection=4
          elsif relativePos[1]==-2 && relativePos[0]==0 # 2 spaces above leader
            facingDirection=8
          elsif relativePos[1]==2 && relativePos[0]==0 # 2 spaces below leader
            facingDirection=2
          end
        end
        facings=[facingDirection] # Get facing from behind
        facings.push([0,0,4,0,8,0,2,0,6][d]) # Get right facing
        facings.push([0,0,6,0,2,0,8,0,4][d]) # Get left facing
        if !leaderIsTrueLeader
          facings.push([0,0,2,0,4,0,6,0,8][d]) # Get forward facing
        end
        mapTile=nil
        if areConnected
          bestRelativePos=-1
          oldthrough=follower.through
          follower.through=false
          for i in 0...facings.length
            facing=facings[i]
            tile=$MapFactory.getFacingTile(facing,leader)
            passable=tile && $MapFactory.isPassableStrict?(tile[0],tile[1],tile[2],follower)
            if i==0 && !passable && tile && 
               $MapFactory.getTerrainTag(tile[0],tile[1],tile[2])==PBTerrain::Ledge
              # If the tile isn't passable and the tile is a ledge,
              # get tile from further behind
              tile=$MapFactory.getFacingTileFromPos(tile[0],tile[1],tile[2],facing)
              passable=tile && $MapFactory.isPassableStrict?(tile[0],tile[1],tile[2],follower)
            end
            if passable
              relativePos=$MapFactory.getThisAndOtherPosRelativePos(
                 follower,tile[0],tile[1],tile[2])
              distance=Math.sqrt(relativePos[0]*relativePos[0]+relativePos[1]*relativePos[1])
              if bestRelativePos==-1 || bestRelativePos>distance
                bestRelativePos=distance
                mapTile=tile
              end
              if i==0 && distance<=1 # Prefer behind if tile can move up to 1 space
                break
              end
            end
          end
          follower.through=oldthrough
        else
          tile=$MapFactory.getFacingTile(facings[0],leader)
          passable=tile && $MapFactory.isPassableStrict?(
             tile[0],tile[1],tile[2],follower)
          mapTile=passable ? mapTile : nil
        end
        if mapTile && follower.map.map_id==mapTile[0]
          # Follower is on same map
          newX=mapTile[1]
          newY=mapTile[2]
          deltaX=(d == 6 ? -1 : d == 4 ? 1 : 0)
          deltaY=(d == 2 ? -1 : d == 8 ? 1 : 0)
          posX = newX + deltaX
          posY = newY + deltaY
          follower.move_speed=leader.move_speed # sync movespeed
          if (follower.x-newX==-1 && follower.y==newY) ||
             (follower.x-newX==1 && follower.y==newY) ||
             (follower.y-newY==-1 && follower.x==newX) ||
             (follower.y-newY==1 && follower.x==newX)
            if instant
              follower.moveto(newX,newY)
            else
              pbFancyMoveTo(follower,newX,newY)
            end
          elsif (follower.x-newX==-2 && follower.y==newY) ||
                (follower.x-newX==2 && follower.y==newY) ||
                (follower.y-newY==-2 && follower.x==newX) ||
                (follower.y-newY==2 && follower.x==newX)
            if instant
              follower.moveto(newX,newY)
            else
              pbFancyMoveTo(follower,newX,newY)
            end
          elsif follower.x!=posX || follower.y!=posY
            if instant
              follower.moveto(newX,newY)
            else
              pbFancyMoveTo(follower,posX,posY)
              pbFancyMoveTo(follower,newX,newY)
            end
          end
          pbTurnTowardEvent(follower,leader)
        else
          if !mapTile
            # Make current position into leader's position
            mapTile=[leader.map.map_id,leader.x,leader.y]
          end
          if follower.map.map_id==mapTile[0]
            # Follower is on same map as leader
            follower.moveto(leader.x,leader.y)
            pbTurnTowardEvent(follower,leader)
          else
            # Follower will move to different map
            events=$PokemonGlobal.dependentEvents
            eventIndex=pbEnsureEvent(follower,mapTile[0])
            if eventIndex>=0
              [email protected][eventIndex]
              newEventData=events[eventIndex]
              newFollower.moveto(mapTile[1],mapTile[2])
              newEventData[3]=mapTile[1]
              newEventData[4]=mapTile[2]
              if mapTile[0]==leader.map.map_id
                pbTurnTowardEvent(follower,leader)
              end
            end
          end
        end
      end
    
      def debugEcho
        self.eachEvent {|e,d|
           echoln d
           echoln [e.map_id,e.map.map_id,e.id]
        }
      end
    
      def pbMapChangeMoveDependentEvents
        events=$PokemonGlobal.dependentEvents
        updateDependentEvents
        leader=$game_player
        for i in 0...events.length
          [email protected][i]
          pbFollowEventAcrossMaps(leader,event,true,i==0)
          # Update X and Y for this event
          events[i][3]=event.x
          events[i][4]=event.y
          events[i][5]=event.direction
          # Set leader to this event
          leader=event
        end
      end
    
      def pbMoveDependentEvents
        events=$PokemonGlobal.dependentEvents
        updateDependentEvents
        leader=$game_player
        for i in 0...events.length
          [email protected][i]
          pbFollowEventAcrossMaps(leader,event,false,i==0)
          # Update X and Y for this event
          events[i][3]=event.x
          events[i][4]=event.y
          events[i][5]=event.direction
          # Set leader to this event
          leader=event
        end
      end
    
      def pbTurnDependentEvents
        events=$PokemonGlobal.dependentEvents
        updateDependentEvents
        leader=$game_player
        for i in 0...events.length
          [email protected][i]
          pbTurnTowardEvent(event,leader)
          # Update direction for this event
          events[i][5]=event.direction
          # Set leader to this event
          leader=event
        end
      end
    
      def eachEvent
        events=$PokemonGlobal.dependentEvents
        for i in 0...events.length
          yield @realEvents[i],events[i]
        end   
      end
    
      def updateDependentEvents
        events=$PokemonGlobal.dependentEvents
        return if events.length==0
        for i in 0...events.length
          [email protected][i]
          next if [email protected][i]
          event.transparent=$game_player.transparent
          if (event.jumping? || event.moving?) || !($game_player.jumping? || $game_player.moving?) then
            event.update
          elsif !event.starting
            event.set_starting
            event.update
            event.clear_starting
          end
          events[i][3]=event.x
          events[i][4]=event.y
          events[i][5]=event.direction
        end
        # Check event triggers
        if Input.trigger?(Input::C) && !pbMapInterpreterRunning?
          # Get position of tile facing the player
          facingTile=$MapFactory.getFacingTile()
          self.eachEvent {|e,d|
             next if !d[9]
             if e.x==$game_player.x && e.y==$game_player.y
               # On same position
               if not e.jumping? && (!e.respond_to?("over_trigger") || e.over_trigger?)
                 if e.list.size>1
                   # Start event
                   $game_map.refresh if $game_map.need_refresh
                   e.lock
                   pbMapInterpreter.setup(e.list,e.id,e.map.map_id)
                 end
               end
             elsif facingTile && e.map.map_id==facingTile[0] &&
                   e.x==facingTile[1] && e.y==facingTile[2]
               # On facing tile
               if not e.jumping? && (!e.respond_to?("over_trigger") || !e.over_trigger?)
                 if e.list.size>1
                   # Start event
                   $game_map.refresh if $game_map.need_refresh
                   e.lock
                   pbMapInterpreter.setup(e.list,e.id,e.map.map_id)
                 end
               end
             end
          }
        end
      end
    
      def removeEvent(event)
        events=$PokemonGlobal.dependentEvents
        mapid=$game_map.map_id
        for i in 0...events.length
          if events[i][2]==mapid && # Refer to current map
             events[i][0]==event.map_id && # Event's map ID is original ID
             events[i][1]==event.id
            events[i]=nil
            @realEvents[i]=nil
            @lastUpdate+=1
          end
          events.compact!
          @realEvents.compact!
        end
      end
    
      def getEventByName(name)
        events=$PokemonGlobal.dependentEvents
        for i in 0...events.length
          if events[i] && events[i][8]==name # Arbitrary name given to dependent event
            return @realEvents[i]
          end
        end
        return nil
      end
    
      def removeAllEvents
        events=$PokemonGlobal.dependentEvents
        events.clear
        @realEvents.clear
        @lastUpdate+=1
      end
    
      def removeEventByName(name)
        events=$PokemonGlobal.dependentEvents
        for i in 0...events.length
          if events[i] && events[i][8]==name # Arbitrary name given to dependent event
            events[i]=nil
            @realEvents[i]=nil
            @lastUpdate+=1
          end
          events.compact!
          @realEvents.compact!
        end
      end
    
      def addEvent(event,eventName=nil,commonEvent=nil)
        return if !event
        events=$PokemonGlobal.dependentEvents
        for i in 0...events.length
          if events[i] && events[i][0]==$game_map.map_id && events[i][1]==event.id
            # Already exists
            return
          end
        end
        # Original map ID, original event ID, current map ID,
        # event X, event Y, event direction,
        # event's filename,
        # event's hue, event's name, common event ID
        eventData=[
           $game_map.map_id,event.id,$game_map.map_id,
           event.x,event.y,event.direction,
           event.character_name.clone,
           event.character_hue,eventName,commonEvent
        ]
        newEvent=createEvent(eventData)
        events.push(eventData)
        @realEvents.push(newEvent)
        @lastUpdate+=1
        event.erase
      end
    end
    
    
    
    class DependentEventSprites
      def refresh
        for sprite in @sprites
          sprite.dispose
        end
        @sprites.clear
        $PokemonTemp.dependentEvents.eachEvent {|event,data|
           if data[0][email protected]_id # Check original map
             @map.events[data[1]].erase
           end
           if data[2][email protected]_id # Check current map
             @sprites.push(Sprite_Character.new(@viewport,event))
           end
        }
      end
    
      def initialize(viewport,map)
        @disposed=false
        @sprites=[]
        @map=map
        @viewport=viewport
        refresh
        @lastUpdate=nil
      end
    
      def update
        if [email protected]
          refresh
          @lastUpdate=$PokemonTemp.dependentEvents.lastUpdate
        end
        for sprite in @sprites
          sprite.update
        end
      end
    
      def dispose
        return if @disposed
        for sprite in @sprites
          sprite.dispose
        end
        @sprites.clear
        @disposed=true
      end
    
      def disposed?
        @disposed
      end
    end
    
    
    
    Events.onSpritesetCreate+=proc{|sender,e|
       spriteset=e[0] # Spriteset being created
       viewport=e[1] # Viewport used for tilemap and characters
       map=spriteset.map # Map associated with the spriteset (not necessarily the current map).
       spriteset.addUserSprite(DependentEventSprites.new(viewport,map))
    }
    
    Events.onMapSceneChange+=proc{|sender,e|
       scene=e[0]
       mapChanged=e[1]
       if mapChanged
         $PokemonTemp.dependentEvents.pbMapChangeMoveDependentEvents
       end
    }
    add these to your settings
    Code:
    #=========================================================
    # ● Config Script For Your Game Here
    # Change the emo_ to what ever number is the cell holding the animation
    #=========================================================
    Current_Following_Variable = 36
    CommonEvent = 3
    ItemWalk=26
    Walking_Time_Variable = 27
    Animation_Come_Out = 22
    Animation_Come_In = 23
    Emo_Happy = 24
    Emo_Normal = 25
    Emo_Hate = 26
    Emo_Poison= 27
    Emo_sing= 28
    Emo_love= 29
    Put this in common events and name it TalkToPokemon
    Code:
    Talkative
    Put this in PokemonParty
    Code:
    $PokemonTemp.dependentEvents.refresh_sprite
    under
    Code:
          next if havecommand
          if cmdSummary>=0 && command==cmdSummary
            @scene.pbSummary(pkmnid)
          elsif cmdSwitch>=0 && command==cmdSwitch
            @scene.pbSetHelpText(_INTL("Move to where?"))
            oldpkmnid=pkmnid
            [email protected](true)
            if pkmnid>=0 && pkmnid!=oldpkmnid
              pbSwitch(oldpkmnid,pkmnid)
    Also place it in PokemonStorage under
    Code:
    def pbTrainerPC
     Kernel.pbMessage(_INTL("\\se[computeropen]{1} booted up the PC.",$Trainer.name))
     pbTrainerPCMenu
      pbSEPlay("computerclose")
    also under this
    Code:
     def access
       Kernel.pbMessage(_INTL("\\se[accesspc]Accessed {1}'s PC.",$Trainer.name))
       pbTrainerPCMenu

    in def update of Game_player_ add

    $PokemonTemp.dependentEvents.add_following_time

    under
    $PokemonTemp.dependentEvents.updateDependentEvents

    Replace pbEndBattle in Pokemon_ActualScene
    Code:
    def pbEndBattle(result)
        @abortable=false
        pbShowWindow(BLANK)
        # Fade out all sprites
        $PokemonTemp.dependentEvents.check_faint
        pbBGMFade(1.0)
        pbFadeOutAndHide(@sprites)
        pbDisposeSprites
      end
    Also after you are done healing a pokemon from the pokemon center put this in
    Code:
    $PokemonTemp.dependentEvents.refresh_sprite
    Place this in PokemonField above def kernel.pbReceiveItem
    Code:
    def Kernel.pbPokemonFound(item,quantity=1,plural=nil)
      itemname=PBItems.getName(item)
      pocket=pbGetPocket(item)
      e=$Trainer.party[0].name
    if $PokemonBag.pbStoreItem(item,quantity) 
      pbWait(5)
    
        if $ItemData[item][ITEMUSE]==3 || $ItemData[item][ITEMUSE]==4
          Kernel.pbMessage(_INTL("\\se[]{1} found {2}!\\se[itemlevel]\\nIt contained {3}.\\wtnp[30]",e,itemname,PBMoves.getName($ItemData[item][ITEMMACHINE])))
          Kernel.pbMessage(_INTL("{1} put the {2}\r\nin the {3} Pocket.",$Trainer.name,itemname,PokemonBag.pocketNames()[pocket]))
        elsif isConst?(item,PBItems,:LEFTOVERS)
          Kernel.pbMessage(_INTL("\\se[]{1} found some {2}!\\se[itemlevel]\\wtnp[30]",e,itemname))
          Kernel.pbMessage(_INTL("{1} put the {2}\r\nin the {3} Pocket.",$Trainer.name,itemname,PokemonBag.pocketNames()[pocket]))
        else
          if quantity>1
            if plural
              Kernel.pbMessage(_INTL("\\se[]{1} found {2} {3}!\\se[itemlevel]\\wtnp[30]",e,quantity,plural))
              Kernel.pbMessage(_INTL("{1} put the {2}\r\nin the {3} Pocket.",$Trainer.name,plural,PokemonBag.pocketNames()[pocket]))
            else
              Kernel.pbMessage(_INTL("\\se[]{1} found {2} {3}s!\\se[itemlevel]\\wtnp[30]",e,quantity,itemname))
              Kernel.pbMessage(_INTL("{1} put the {2}s\r\nin the {3} Pocket.",$Trainer.name,itemname,PokemonBag.pocketNames()[pocket]))
            end
          else
            Kernel.pbMessage(_INTL("\\se[]{1} found one {2}!\\se[itemlevel]\\wtnp[30]",e,itemname))
            Kernel.pbMessage(_INTL("{1} put the {2}\r\nin the {3} Pocket.",$Trainer.name,itemname,PokemonBag.pocketNames()[pocket]))
          end
        end
        return true
      else   # Can't add the item
        if $ItemData[item][ITEMUSE]==3 || $ItemData[item][ITEMUSE]==4
          Kernel.pbMessage(_INTL("{1} found {2}!\\wtnp[20]",e,itemname))
        elsif isConst?(item,PBItems,:LEFTOVERS)
          Kernel.pbMessage(_INTL("{1} found some {2}!\\wtnp[20]",$Trainer.name,itemname))
        else
          if quantity>1
            if plural
              Kernel.pbMessage(_INTL("{1} found {2} {3}!\\wtnp[20]",e,quantity,plural))
            else
              Kernel.pbMessage(_INTL("{1} found {2} {3}s!\\wtnp[20]",$Trainer.name,quantity,itemname))
            end
          else
            Kernel.pbMessage(_INTL("{1} found one {2}!\\wtnp[20]",e,itemname))
          end
        end
        Kernel.pbMessage(_INTL("Too bad... The Bag is full..."))
        return false
      end
    end
    http://dl.dropbox.com/u/7240024/Pokemon-Follow.png
    http://dl.dropbox.com/u/7240024/emo.png
    http://dl.dropbox.com/u/7240024/emo2.png
    http://dl.dropbox.com/u/7240024/Animations.rxdata
    http://dl.dropbox.com/u/7240024/Emo_Sing.anm
    http://dl.dropbox.com/u/7240024/Emo_Poison.anm
    http://dl.dropbox.com/u/7240024/Emo_Normal.anm
    http://dl.dropbox.com/u/7240024/Emo_love.anm
    http://dl.dropbox.com/u/7240024/Emo_Hate.anm
    http://dl.dropbox.com/u/7240024/Emo_Happy.anm
    http://dl.dropbox.com/u/7240024/Characters.rar
    That should be everything, report any errors down below, anything to help make the code shorter and better post below or pm me.
    Attached Thumbnails
    Pokemon-Follow.png‎   emo.png‎   emo2.png‎  
    __________________
    Check out the Pokemon Game Engine I am working on:
    https://github.com/sjosegarcia/Pokemon

    Relevant Advertising!

      #2    
    Old May 31st, 2012 (2:30 AM).
    Nickalooose Nickalooose is offline
    --------------------
       
      Join Date: Mar 2008
      Gender: Female
      Posts: 1,309
      Impressed.

      I will test this later, not right now, but I will... If anyone else can test this now and let us know any bugs and such... It's nice you've placed all of the resources too, sometimes some people just give the script... +5 to you haha
        #3    
      Old May 31st, 2012 (8:35 AM).
      zingzags's Avatar
      zingzags zingzags is offline
      PokemonGDX creator
         
        Join Date: Jan 2009
        Location: Boston
        Age: 23
        Nature: Adamant
        Posts: 562
        I forgot something in def update of Game_player_ add

        $PokemonTemp.dependentEvents.add_following_time

        under
        $PokemonTemp.dependentEvents.updateDependentEvents
        __________________
        Check out the Pokemon Game Engine I am working on:
        https://github.com/sjosegarcia/Pokemon
          #4    
        Old May 31st, 2012 (9:16 AM).
        venom12's Avatar
        venom12 venom12 is offline
        Pokemon Crystal Rain Relased
           
          Join Date: Sep 2006
          Age: 26
          Gender: Male
          Nature: Adamant
          Posts: 529
          Great work, i didnt tested much but for now works ok, one thing i would like to have in that is, when we dont moving pokemon still steps like on hgss.
            #5    
          Old May 31st, 2012 (10:50 AM). Edited May 31st, 2012 by zingzags.
          zingzags's Avatar
          zingzags zingzags is offline
          PokemonGDX creator
             
            Join Date: Jan 2009
            Location: Boston
            Age: 23
            Nature: Adamant
            Posts: 562
            Quote:
            Originally Posted by venom12 View Post
            Great work, i didnt tested much but for now works ok, one thing i would like to have in that is, when we dont moving pokemon still steps like on hgss.
            That is a good idea, but it would require the animation to just play. I have no idea how to do that though.

            Updated the thread because I forgot a few things.
            __________________
            Check out the Pokemon Game Engine I am working on:
            https://github.com/sjosegarcia/Pokemon
              #6    
            Old June 2nd, 2012 (10:56 AM).
            zingzags's Avatar
            zingzags zingzags is offline
            PokemonGDX creator
               
              Join Date: Jan 2009
              Location: Boston
              Age: 23
              Nature: Adamant
              Posts: 562
              updated, added egg check to see if you have an egg in the first slot of your party. If you have an egg in the first slot of your party the dependent event gets removed.
              __________________
              Check out the Pokemon Game Engine I am working on:
              https://github.com/sjosegarcia/Pokemon
                #7    
              Old June 2nd, 2012 (12:31 PM).
              Lord Varion's Avatar
              Lord Varion Lord Varion is offline
              Guess who's back?
                 
                Join Date: Feb 2009
                Age: 23
                Gender: Other
                Nature: Naughty
                Posts: 2,644
                I never saw the original script.
                But, I'm guessing I'd need the sprites for the pokémon.
                But, do I need the old script too ?
                __________________
                gone.
                  #8    
                Old June 3rd, 2012 (9:50 AM).
                zingzags's Avatar
                zingzags zingzags is offline
                PokemonGDX creator
                   
                  Join Date: Jan 2009
                  Location: Boston
                  Age: 23
                  Nature: Adamant
                  Posts: 562
                  Quote:
                  Originally Posted by Nintendork15 View Post
                  I never saw the original script.
                  But, I'm guessing I'd need the sprites for the pokémon.
                  But, do I need the old script too ?
                  Yes
                  Yes
                  No
                  I haven't uploaded the sprites but they are in the original thread, search for help -14.
                  __________________
                  Check out the Pokemon Game Engine I am working on:
                  https://github.com/sjosegarcia/Pokemon
                    #9    
                  Old June 5th, 2012 (6:48 AM). Edited June 5th, 2012 by FHJoker.
                  FHJoker's Avatar
                  FHJoker FHJoker is offline
                  Re-thinking Osmium
                     
                    Join Date: Dec 2007
                    Location: Somwhere alone in peace
                    Age: 26
                    Gender: Male
                    Nature: Relaxed
                    Posts: 88
                    I did the above but i got this error message when the GotPokemon Switch is turned on.

                    ---------------------------
                    Pokemon Essentials
                    ---------------------------
                    Exception: TypeError

                    Message: cannot convert Fixnum into String

                    WalkingPkMn:44:in `+'

                    WalkingPkMn:44:in `add_following_time'

                    Game_Player_:401:in `update_old'

                    Walk_Run:71:in `update'

                    Scene_Map:85:in `miniupdate'

                    Scene_Map:83:in `loop'

                    Scene_Map:95:in `miniupdate'

                    PokemonMessages:145:in `pbUpdateSceneMap'

                    PokemonPauseMenu: 16 : in `pbShowCommands'

                    PokemonPauseMenu: 12: in `loop'



                    This exception was logged
                      #10    
                    Old June 5th, 2012 (12:45 PM).
                    zingzags's Avatar
                    zingzags zingzags is offline
                    PokemonGDX creator
                       
                      Join Date: Jan 2009
                      Location: Boston
                      Age: 23
                      Nature: Adamant
                      Posts: 562
                      Quote:
                      Originally Posted by FHJoker View Post
                      I did the above but i got this error message when the GotPokemon Switch is turned on.

                      ---------------------------
                      Pokemon Essentials
                      ---------------------------
                      Exception: TypeError

                      Message: cannot convert Fixnum into String

                      WalkingPkMn:44:in `+'

                      WalkingPkMn:44:in `add_following_time'

                      Game_Player_:401:in `update_old'

                      Walk_Run:71:in `update'

                      Scene_Map:85:in `miniupdate'

                      Scene_Map:83:in `loop'

                      Scene_Map:95:in `miniupdate'

                      PokemonMessages:145:in `pbUpdateSceneMap'

                      PokemonPauseMenu: 16 : in `pbShowCommands'

                      PokemonPauseMenu: 12: in `loop'



                      This exception was logged
                      ^ You must did something wrong, because it works fine for me.

                      Ill check that out, I updated the thread again, I forgot to add something(again), and thanks to Maruno there is an easier way to add random items.
                      __________________
                      Check out the Pokemon Game Engine I am working on:
                      https://github.com/sjosegarcia/Pokemon
                        #11    
                      Old June 6th, 2012 (9:19 AM). Edited June 6th, 2012 by FHJoker.
                      FHJoker's Avatar
                      FHJoker FHJoker is offline
                      Re-thinking Osmium
                         
                        Join Date: Dec 2007
                        Location: Somwhere alone in peace
                        Age: 26
                        Gender: Male
                        Nature: Relaxed
                        Posts: 88
                        I copied it again and got almost the same

                        ---------------------------
                        Pokemon Essentials
                        ---------------------------
                        Exception: TypeError

                        Message: cannot convert Fixnum into String

                        FollowingCharacter:44:in `+'

                        FollowingCharacter:44:in `add_following_time'

                        Game_Player_:401:in `update_old'

                        Walk_Run:71:in `update'

                        Scene_Map:104:in `update'

                        Scene_Map:101:in `loop'

                        Scene_Map:114:in `update'

                        Scene_Map:68:in `main'

                        Scene_Map:65:in `loop'

                        Scene_Map:72:in `main'



                        Edit: I put the script in a fresh version of Essentials and no error but nothing shows up

                        Edit again: Got Pikachu to show up but it says nothing except for it's cry no emotion bubble, how do i fix it. And how to I make gender differences show up?

                        Edit Again: I got another problem, using the latest version of essentials unedited before the follow script, I can only talk (hear their cry) in Test map2(Where I got my pokemon) and Test Map 1(outside) not in the daycare map I get something like this
                        ---------------------------
                        Pokemon Essentials
                        ---------------------------
                        Exception: NoMethodError

                        Message: undefined method `unlock' for nil:NilClass

                        Interpreter:512:in `command_end'

                        Interpreter:295:in `execute_command'

                        Interpreter:193:in `update'

                        Interpreter:106:in `loop'

                        Interpreter:198:in `update'

                        Scene_Map:103:in `update'

                        Scene_Map:101:in `loop'

                        Scene_Map:114:in `update'

                        Scene_Map:68:in `main'

                        Scene_Map:65:in `loop'



                        This exception was logged
                        ---------------------------
                        OK
                        ---------------------------
                        __________________

                          #12    
                        Old June 6th, 2012 (12:46 PM).
                        ChaosLord's Avatar
                        ChaosLord ChaosLord is offline
                        Game Dev Wanderer
                           
                          Join Date: Nov 2010
                          Gender: Male
                          Nature: Bold
                          Posts: 58
                          Looks great, but which section is pbMountBike's at? It's the only thing missing part I actually need. Seems to work without it, though when talking to your Pokemon, you get a call from Prof.Oak(Testing this with the latest version of Essentials.)
                            #13    
                          Old June 6th, 2012 (6:49 PM).
                          zingzags's Avatar
                          zingzags zingzags is offline
                          PokemonGDX creator
                             
                            Join Date: Jan 2009
                            Location: Boston
                            Age: 23
                            Nature: Adamant
                            Posts: 562
                            Quote:
                            Originally Posted by FHJoker View Post
                            I copied it again and got almost the same

                            ---------------------------
                            Pokemon Essentials
                            ---------------------------
                            Exception: TypeError

                            Message: cannot convert Fixnum into String

                            FollowingCharacter:44:in `+'

                            FollowingCharacter:44:in `add_following_time'

                            Game_Player_:401:in `update_old'

                            Walk_Run:71:in `update'

                            Scene_Map:104:in `update'

                            Scene_Map:101:in `loop'

                            Scene_Map:114:in `update'

                            Scene_Map:68:in `main'

                            Scene_Map:65:in `loop'

                            Scene_Map:72:in `main'



                            Edit: I put the script in a fresh version of Essentials and no error but nothing shows up

                            Edit again: Got Pikachu to show up but it says nothing except for it's cry no emotion bubble, how do i fix it. And how to I make gender differences show up?

                            Edit Again: I got another problem, using the latest version of essentials unedited before the follow script, I can only talk (hear their cry) in Test map2(Where I got my pokemon) and Test Map 1(outside) not in the daycare map I get something like this
                            ---------------------------
                            Pokemon Essentials
                            ---------------------------
                            Exception: NoMethodError

                            Message: undefined method `unlock' for nil:NilClass

                            Interpreter:512:in `command_end'

                            Interpreter:295:in `execute_command'

                            Interpreter:193:in `update'

                            Interpreter:106:in `loop'

                            Interpreter:198:in `update'

                            Scene_Map:103:in `update'

                            Scene_Map:101:in `loop'

                            Scene_Map:114:in `update'

                            Scene_Map:68:in `main'

                            Scene_Map:65:in `loop'



                            This exception was logged
                            ---------------------------
                            OK
                            ---------------------------
                            Ill try to see into that.
                            __________________
                            Check out the Pokemon Game Engine I am working on:
                            https://github.com/sjosegarcia/Pokemon
                              #14    
                            Old June 10th, 2012 (11:33 AM). Edited June 10th, 2012 by ~Angel~.
                            ~Angel~'s Avatar
                            ~Angel~ ~Angel~ is offline
                            Lead developer for Pokémon Millennium
                               
                              Join Date: Mar 2010
                              Location: United States Of America.
                              Age: 19
                              Gender: Male
                              Nature: Quiet
                              Posts: 286
                              Hm...Nice job yet I can't figure out how to add
                              in def update of Game_player_ add

                              $PokemonTemp.dependentEvents.add_following_time

                              under
                              $PokemonTemp.dependentEvents.updateDependentEvents
                              I am unsure of where to put it. I looked but I don't see where you say to put it.

                              Edit: Well Never mind I got it but now It's giving me a problem with the
                              Put this in PokemonParty
                              Code:
                              $PokemonTemp.dependentEvents.refresh_sprite part as well as the piece under it. I put it exactly where you said to unless I am mistaken.
                              Edit 2:
                              ---------------------------
                              Pokemon Essentials
                              ---------------------------
                              Script 'PokemonParty' line 2: NoMethodError occurred.

                              undefined method `dependentEvents' for nil:NilClass
                              ---------------------------
                              OK
                              ---------------------------
                              This is the Error I get. Not sure of what it means. Maybe you can help me? Now it's just giving me a bunch of errors. I am going to repute it back in and start over.
                              Edit: I got it to work but now I need to figure out how to make the pokemon follow.
                              My Last Edit: How do I add pokemon? It's not working for me.
                                #15    
                              Old June 17th, 2012 (11:17 AM). Edited June 17th, 2012 by zingzags.
                              zingzags's Avatar
                              zingzags zingzags is offline
                              PokemonGDX creator
                                 
                                Join Date: Jan 2009
                                Location: Boston
                                Age: 23
                                Nature: Adamant
                                Posts: 562
                                Update to fix the unlock problem comment out this line
                                in Interperter line 512:
                                Code:
                                $game_map.events[@event_id].unlock
                                to
                                Code:
                                #$game_map.events[@event_id].unlock
                                I will try to fix the pokemon not talking soon.

                                EDIT:nvm I fixed the no talking issue
                                Code:
                                #==============================================================================
                                # ¡Ü Credits to Help - 14 for both the scripts and Sprites
                                # ¡Ü Edited by Zingzags 
                                # -Fixed bugs
                                # -Clean ups
                                # -Fixed Surf Bug (After Surf is done)
                                # -Fixed def talk_to_pokemon while in surf
                                # -Fixed Surf Check
                                # -Fixed Type Check
                                # -Added Door Support
                                # -Fixed Hp Bug
                                # -Added Pokemon Center Support
                                # -Animation problems
                                # -Fixed Walk_time_variable problem
                                # -Added random item loot
                                # -Added egg check
                                #==============================================================================
                                # Zingzags comments
                                #==============================================================================
                                # I know its not perfect, and it can be shortened, for example addind an array 
                                # for the random items.
                                #==============================================================================
                                
                                #==============================================================================
                                #   ¡Ü Control the following Pokemon
                                #==============================================================================
                                
                                def FollowingMoveRoute(commands,waitComplete=false)
                                    $PokemonTemp.dependentEvents.SetMoveRoute(commands,waitComplete)
                                end
                                
                                #==============================================================================
                                #   ¡Ü Pokemon Following Character v3 By Help-14
                                #==============================================================================
                                
                                class DependentEvents
                                #==============================================================================
                                # Raises The Current Pokemon's Happiness levels +1 per each time the 
                                # Walk_time_Variable reachs 5000 then resets to 0
                                # ItemWalk, is when the variable reaches a certain amount, that you are able to talk to your pokemon to recieve an item
                                #==============================================================================
                                    def add_following_time
                                      if $game_switches[2]==true && $Trainer.party.length>=1
                                        $game_variables[Walking_Time_Variable]+=1 if $game_variables[Current_Following_Variable]!=$Trainer.party.length
                                        if $game_variables[Walking_Time_Variable]==5000
                                          $Trainer.party[0].happiness+=1
                                          $game_variables[Walking_Time_Variable]=0
                                        if $game_variables[ItemWalk]==5
                                           else
                                           $game_variables[ItemWalk]+=1
                                          end
                                        end
                                      end
                                    end
                                  #----------------------------------------------------------------------------
                                  # -  refresh_sprite
                                  # -  Change sprite without animation
                                  #----------------------------------------------------------------------------
                                  
                                  def refresh_sprite
                                    if $Trainer.party.length!=$game_variables[Current_Following_Variable]
                                      if $Trainer.party[0].isShiny?
                                        shiny=true
                                      else
                                        shiny=false
                                      end
                                      if $Trainer.party[0].hp>0 && !$Trainer.party[0].egg?
                                      change_sprite($Trainer.party[0].species, shiny, false)
                                    elsif $Trainer.party[0].hp<=0 
                                      remove_sprite
                                      end
                                     end
                                    end
                                
                                  #----------------------------------------------------------------------------
                                  # - change_sprite(id, shiny, animation)
                                  # - Example, to change sprite to shiny lugia with animation:
                                  #     change_sprite(249, true, true)
                                  # - If just change sprite:
                                  #     change_sprite(249)
                                  #----------------------------------------------------------------------------
                                  def change_sprite(id, shiny=nil, animation=nil)
                                    events=$PokemonGlobal.dependentEvents
                                    for i in 0...events.length
                                      if events[i] && events[i][8]=="Dependent"
                                        if shiny==true
                                           events[i][6]=sprintf("%03ds",id)
                                        if FileTest.image_exist?("Graphics/Characters/"+events[i][6])
                                          @realEvents[i].character_name=sprintf("%03ds",id)
                                        else
                                          events[i][6]=sprintf("%03d",id)
                                          @realEvents[i].character_name=sprintf("%03d",id)
                                          end
                                        else
                                          events[i][6]=sprintf("%03d",id)
                                          @realEvents[i].character_name=sprintf("%03d",id)
                                        end
                                       if animation==true
                                          $scene.spriteset.addUserAnimation(Animation_Come_Out,@realEvents[i].x,@realEvents[i].y)
                                        end
                                        $game_variables[Walking_Time_Variable]=0
                                      end
                                    end
                                  end
                                  
                                  #----------------------------------------------------------------------------
                                  # - remove_sprite(animation)
                                  # - Example, to remove sprite with animation:
                                  #     remove_sprite(true)
                                  # - If just remove sprite:
                                  #     remove_sprite
                                  #----------------------------------------------------------------------------
                                  
                                  def remove_sprite(animation=nil)
                                    events=$PokemonGlobal.dependentEvents
                                    for i in 0...events.length
                                      if events[i] && events[i][8]=="Dependent"
                                          events[i][6]=sprintf("nil")
                                          @realEvents[i].character_name=sprintf("nil")
                                         if animation==true
                                          $scene.spriteset.addUserAnimation(Animation_Come_In,@realEvents[i].x,@realEvents[i].y)
                                          pbWait(10)
                                          end
                                        $game_variables[Current_Following_Variable]=$Trainer.party[0]
                                        $game_variables[Walking_Time_Variable]=0
                                      end
                                    end
                                  end
                                
                                  #----------------------------------------------------------------------------
                                  # - check_surf(animation)
                                  # - If current Pokemon is a water Pokemon, it is still following.
                                  # - If current Pokemon is not a water Pokemon, remove sprite.
                                  # - Require Water_Pokemon_Can_Surf = true to enable
                                  #----------------------------------------------------------------------------
                                def check_surf(animation=nil)
                                  events=$PokemonGlobal.dependentEvents
                                    for i in 0...events.length
                                      if events[i] && events[i][8]=="Dependent"
                                         events[i][6]=sprintf("nil")
                                         @realEvents[i].character_name=sprintf("nil")
                                       else
                                       if $Trainer.party[0].hp>0 && !$Trainer.party[0].egg?
                                        if $Trainer.party[0].hasType?(:WATER)
                                        remove_sprite
                                      else
                                        remove_sprite
                                        pbWait(20)
                                      end
                                    elsif $Trainer.party[0].hp<=0 
                                      end
                                    end
                                  end
                                end  
                                  
                                  #----------------------------------------------------------------------------
                                  # -  talk_to_pokemon
                                  # -  It will run when you talk to Pokemon following
                                  #----------------------------------------------------------------------------
                                
                                  def talk_to_pokemon
                                    e=$Trainer.party[0]
                                    events=$PokemonGlobal.dependentEvents
                                    for i in 0...events.length
                                      if events[i] && events[i][8]=="Dependent"
                                          [email protected][i].x
                                          [email protected][i].y
                                      end
                                    end
                                    if e==0
                                    else
                                    if e.hp>0 && !$Trainer.party[0].egg?
                                    if $PokemonGlobal.surfing==true || $PokemonGlobal.bicycle==true
                                    else
                                      if e!=6
                                       pbPlayCry(e.species)
                                       random1=rand(5)
                                if $game_variables[ItemWalk]==5 
                                      items=[:POTION,:SUPERPOTION,:FULLRESTORE,:REVIVE,:PPUP,
                                       :PPMAX,:RARECANDY,:REPEL,:MAXREPEL,:ESCAPEROPE,
                                       :HONEY,:TINYMUSHROOM,:PEARL,:NUGGET,:GREATBALL,
                                       :ULTRABALL,:THUNDERSTONE,:MOONSTONE,:SUNSTONE,:DUSKSTONE,
                                       :REDAPRICORN,:BLUAPRICORN,:YLWAPRICORN,:GRNAPRICORN,:PNKAPRICORN,
                                       :BLKAPRICORN,:WHTAPRICORN
                                      ]
                                random2=0
                                loop do
                                  random2=rand(items.length)
                                  break if hasConst?(PBItems,items[random2])
                                 end
                                
                                Kernel.pbMessage(_INTL("{1} seems to be holding something, it looks like {1} wants to give it to me.",e.name))
                                Kernel.pbPokemonFound(getConst(PBItems,items[random2]))
                                $game_variables[ItemWalk]=0
                                      end
                                      
                                       if random1==0
                                        $scene.spriteset.addUserAnimation(Emo_sing, pos_x, pos_y-2)
                                        pbWait(50)
                                        Kernel.pbMessage(_INTL("{1} loves this tune so much that {1} is singing it.",e.name)) 
                                      elsif e.happiness>0 && e.happiness<=50
                                        $scene.spriteset.addUserAnimation(Emo_Hate, pos_x, pos_y-2)
                                        pbWAit(70)
                                        Kernel.pbMessage(_INTL("{1} hate to travel with {2}.",e.name,$Trainer.name))
                                      elsif e.status==PBStatuses::POISON && e.hp>0 && !e.egg?
                                        $scene.spriteset.addUserAnimation(Emo_Poison, pos_x, pos_y-2)
                                        pbWait(120)
                                        Kernel.pbMessage(_INTL("{1} is badly poisoned, {1} needs help quick.",e.name))
                                      elsif e.happiness>50 && e.happiness<=100
                                        $scene.spriteset.addUserAnimation(Emo_Normal, pos_x, pos_y-2)
                                        pbWait(100)
                                        Kernel.pbMessage(_INTL("{1} is still undecided for whether traveling with {2} is a good thing or not.",e.name,$Trainer.name))
                                      elsif e.happiness>100 && e.happiness<150
                                        $scene.spriteset.addUserAnimation(Emo_Happy, pos_x, pos_y-2)
                                        Kernel.pbMessage(_INTL("{1} is happy traveling with {2}.",e.name,$Trainer.name))
                                      elsif e.happiness>=150
                                        $scene.spriteset.addUserAnimation(Emo_love, pos_x, pos_y-2)
                                        pbWait(70)
                                        Kernel.pbMessage(_INTL("{1} loves traveling with {2}.",e.name,$Trainer.name))
                                      end
                                      
                                    else
                                    
                                     
                                     end
                                    end
                                   end
                                  end
                                 end
                                
                                
                                def Come_back(shiny=nil, animation=nil)
                                  events=$PokemonGlobal.dependentEvents
                                  if $game_variables[Current_Following_Variable]==$Trainer.party.length
                                      $game_variables[Current_Following_Variable]
                                    else
                                      $game_variables[Current_Following_Variable]
                                    end
                                    if $game_variables[Current_Following_Variable]==$Trainer.party.length
                                      remove_sprite(false)
                                      for i in 0...events.length 
                                      $scene.spriteset.addUserAnimation(Animation_Come_Out,@realEvents[i].x,@realEvents[i].y)
                                   end
                                     else
                                      if $Trainer.party[0].isShiny?
                                        shiny=true
                                      else
                                        shiny=false
                                      end
                                      change_sprite($Trainer.party[0].species, shiny, false)
                                    end
                                    for i in 0..$Trainer.party.length-1
                                        if $Trainer.party[i].hp>0 && !$Trainer.party[0].egg?
                                          $game_variables[Current_Following_Variable]=i
                                          refresh_sprite
                                          break
                                        end
                                      end
                                    for i in 0...events.length 
                                       for i in 0..$Trainer.party.length-1
                                     if $Trainer.party[i].hp<=0 
                                       id = $Trainer.party[i].species
                                     else
                                       id = $Trainer.party[i].species
                                      end
                                     end
                                  if events[i] && events[i][8]=="Dependent"
                                        if shiny==true
                                           events[i][6]=sprintf("%03ds",id)
                                        if FileTest.image_exist?("Graphics/Characters/"+events[i][6])
                                          @realEvents[i].character_name=sprintf("%03ds",id)
                                        else
                                          events[i][6]=sprintf("%03d",id)
                                          @realEvents[i].character_name=sprintf("%03d",id)
                                          end
                                        else
                                          events[i][6]=sprintf("%03d",id)
                                          @realEvents[i].character_name=sprintf("%03d",id)
                                        end
                                      if animation==true
                                      else
                                      end
                                    end 
                                  end 
                                end
                                
                                  #----------------------------------------------------------------------------
                                  # - check_faint
                                  # - If current Pokemon is fainted, change other Pokemon.
                                  #----------------------------------------------------------------------------
                                
                                def check_faint
                                  if $PokemonGlobal.surfing==true || $PokemonGlobal.bicycle==true
                                  else
                                
                                  if $Trainer.party[0].hp<=0 
                                    $game_variables[Current_Following_Variable]=0  
                                    remove_sprite
                                   elsif $Trainer.party[0].hp>0 && !$Trainer.party[0].egg?
                                
                                  end 
                                 end
                                end
                                
                                def SetMoveRoute(commands,waitComplete=false)
                                    events=$PokemonGlobal.dependentEvents
                                    for i in 0...events.length
                                      if events[i] && events[i][8]=="Dependent"
                                        pbMoveRoute(@realEvents[i],commands,waitComplete)
                                      end
                                    end
                                  end
                                end
                                
                                  #----------------------------------------------------------------------------
                                  # -  Auto add Script to Kernel.pbSurf, It'll check curent Pokemon when surf
                                  #----------------------------------------------------------------------------  
                                
                                  def Kernel.pbSurf
                                #  if $game_player.pbHasDependentEvents?
                                #    return false
                                #  end
                                  if $DEBUG ||
                                    (HIDDENMOVESCOUNTBADGES ? $Trainer.numbadges>=BADGEFORSURF : $Trainer.badges[BADGEFORSURF])
                                    movefinder=Kernel.pbCheckMove(:SURF)
                                    if $DEBUG || movefinder
                                      if Kernel.pbConfirmMessage(_INTL("The water is dyed a deep blue...  Would you like to surf?"))
                                        speciesname=!movefinder ? $Trainer.name : movefinder.name
                                        Kernel.pbMessage(_INTL("{1} used Surf!",speciesname))
                                        pbHiddenMoveAnimation(movefinder)
                                #        $PokemonTemp.dependentEvents.check_surf
                                        surfbgm=pbGetMetadata(0,MetadataSurfBGM)
                                        $PokemonTemp.dependentEvents.check_surf
                                        if surfbgm
                                          pbCueBGM(surfbgm,0.5)
                                        end
                                        pbStartSurfing()
                                        return true
                                      end
                                    end
                                  end
                                  return false
                                end
                                
                                
                                
                                  #----------------------------------------------------------------------------
                                  # -  Auto add Script to pbEndSurf, It'll show sprite after surf
                                  #----------------------------------------------------------------------------  
                                
                                  def pbEndSurf(xOffset,yOffset)
                                      return false if !$PokemonGlobal.surfing
                                  x=$game_player.x
                                  y=$game_player.y
                                  currentTag=$game_map.terrain_tag(x,y)
                                  facingTag=Kernel.pbFacingTerrainTag
                                  if pbIsSurfableTag?(currentTag)&&!pbIsSurfableTag?(facingTag)
                                    if Kernel.pbJumpToward
                                      Kernel.pbCancelVehicles
                                      $game_map.autoplayAsCue
                                      $game_player.increase_steps
                                      result=$game_player.check_event_trigger_here([1,2])
                                      Kernel.pbOnStepTaken(result)
                                      $PokemonTemp.dependentEvents.Come_back(true)
                                    end
                                    return true
                                  end
                                  return false
                                end
                                  #----------------------------------------------------------------------------
                                  # -  Auto add Script to Kernel.pbCanUseHiddenMove, fix HM bug
                                  #----------------------------------------------------------------------------  
                                def Kernel.pbCanUseHiddenMove?(pkmn,move)
                                 case move
                                  when PBMoves::FLY
                                   if !$DEBUG && !$Trainer.badges[BADGEFORFLY]
                                    Kernel.pbMessage(_INTL("Sorry, a new Badge is required."))
                                    return false
                                   end
                                   #if $game_player.pbHasDependentEvents?
                                   # Kernel.pbMessage(_INTL("You can't use that if 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
                                  when PBMoves::CUT
                                   if !$DEBUG && !$Trainer.badges[BADGEFORCUT]
                                    Kernel.pbMessage(_INTL("Sorry, a new Badge is required."))
                                    return false
                                   end
                                   facingEvent=$game_player.pbFacingEvent
                                   if !facingEvent || facingEvent.name!="Tree"
                                    Kernel.pbMessage(_INTL("Can't use that here."))
                                    return false
                                   end
                                   return true
                                  when PBMoves::HEADBUTT
                                   facingEvent=$game_player.pbFacingEvent
                                   if !facingEvent || facingEvent.name!="HeadbuttTree"
                                    Kernel.pbMessage(_INTL("Can't use that here."))
                                    return false
                                   end
                                   return true
                                  when PBMoves::SURF
                                   terrain=Kernel.pbFacingTerrainTag
                                   if !$DEBUG && !$Trainer.badges[BADGEFORCUT]
                                    Kernel.pbMessage(_INTL("Sorry, a new Badge is required."))
                                    return false
                                   end
                                   if $PokemonGlobal.surfing
                                    Kernel.pbMessage(_INTL("You're already surfing."))
                                    return false
                                   end
                                   #if $game_player.pbHasDependentEvents?
                                   # Kernel.pbMessage(_INTL("You can't use that if you have someone with you."))
                                   # return false
                                   #end
                                   terrain=Kernel.pbFacingTerrainTag
                                   if pbGetMetadata($game_map.map_id,MetadataBicycleAlways)
                                    Kernel.pbMessage(_INTL("Let's enjoy cycling!"))
                                    return false
                                   end
                                   if !pbIsWaterTag?(terrain)
                                    Kernel.pbMessage(_INTL("No surfing here!"))
                                    return false
                                   end
                                   return true
                                  when PBMoves::STRENGTH
                                   if !$DEBUG && !$Trainer.badges[BADGEFORSTRENGTH]
                                    Kernel.pbMessage(_INTL("Sorry, a new Badge is required."))
                                    return false
                                   end
                                   facingEvent=$game_player.pbFacingEvent
                                   if !facingEvent || facingEvent.name!="Boulder"
                                    Kernel.pbMessage(_INTL("Can't use that here."))
                                    return false
                                   end
                                   return true  
                                  when PBMoves::ROCKSMASH
                                   terrain=Kernel.pbFacingTerrainTag
                                   if !$DEBUG && !$Trainer.badges[BADGEFORROCKSMASH]
                                    Kernel.pbMessage(_INTL("Sorry, a new Badge is required."))
                                    return false
                                   end
                                   facingEvent=$game_player.pbFacingEvent
                                   if !facingEvent || facingEvent.name!="Rock"
                                    Kernel.pbMessage(_INTL("Can't use that here."))
                                    return false
                                   end
                                   return true  
                                  when PBMoves::FLASH
                                   if !$DEBUG && !$Trainer.badges[BADGEFORFLASH]
                                    Kernel.pbMessage(_INTL("Sorry, a new Badge is required."))
                                    return false
                                   end
                                   if !pbGetMetadata($game_map.map_id,MetadataDarkMap)
                                    Kernel.pbMessage(_INTL("Can't use that here."))
                                    return false
                                   end
                                   if $PokemonGlobal.flashUsed
                                    Kernel.pbMessage(_INTL("This is in use already."))
                                    return false
                                   end
                                   return true
                                  when PBMoves::WATERFALL
                                   if !$DEBUG && !$Trainer.badges[BADGEFORWATERFALL]
                                    Kernel.pbMessage(_INTL("Sorry, a new Badge is required."))
                                    return false
                                   end
                                   terrain=Kernel.pbFacingTerrainTag
                                   if terrain!=PBTerrain::Waterfall
                                    Kernel.pbMessage(_INTL("Can't use that here."))
                                    return false
                                   end
                                   return true
                                  when PBMoves::DIVE
                                   if !$DEBUG && !$Trainer.badges[BADGEFORDIVE]
                                    Kernel.pbMessage(_INTL("Sorry, a new Badge is required."))
                                    return false
                                   end
                                   if $PokemonGlobal.diving
                                    return true
                                   end
                                   if $game_player.terrain_tag!=PBTerrain::DeepWater
                                    Kernel.pbMessage(_INTL("Can't use that here."))
                                    return false
                                   end
                                   if !pbGetMetadata($game_map.map_id,MetadataDiveMap)
                                    Kernel.pbMessage(_INTL("Can't use that here."))
                                    return false
                                   end
                                   return true
                                  when PBMoves::TELEPORT
                                   if !pbGetMetadata($game_map.map_id,MetadataOutdoor)
                                    Kernel.pbMessage(_INTL("Can't use that here."))
                                    return false
                                   end
                                   #if $game_player.pbHasDependentEvents?
                                   # Kernel.pbMessage(_INTL("You can't use that if you have someone with you."))
                                   # return false
                                   #end
                                   healing=$PokemonGlobal.healingSpot
                                   if !healing
                                    healing=pbGetMetadata(0,MetadataHome) # Home
                                   end
                                   if healing
                                    mapname=pbGetMapNameFromId(healing[0])
                                    if Kernel.pbConfirmMessage(_INTL("Want to return to the healing spot used last in {1}?",mapname))
                                     return true
                                    end
                                    return false
                                   else
                                    Kernel.pbMessage(_INTL("Can't use that here."))
                                    return false
                                   end
                                  when PBMoves::DIG
                                   escape=pbGetMetadata($game_map.map_id,MetadataEscapePoint)
                                   if !escape
                                    Kernel.pbMessage(_INTL("Can't use that here."))
                                    return false
                                   end
                                   if $game_player.pbHasDependentEvents?
                                    Kernel.pbMessage(_INTL("You can't use that if you have someone with you."))
                                    return false
                                   end
                                   mapname=pbGetMapNameFromId(escape[0])
                                   if Kernel.pbConfirmMessage(_INTL("Want to escape from here and return to {1}?",mapname))
                                    return true
                                   end
                                   return false
                                  when PBMoves::SWEETSCENT
                                   return true
                                  else
                                   return HiddenMoveHandlers.triggerCanUseMove(move,pkmn)
                                 end
                                 return false
                                end
                                
                                def pbPokemonFollow(x)
                                Kernel.pbAddDependency2(x, "Dependent", CommonEvent)
                                $PokemonTemp.dependentEvents.refresh_sprite
                                end
                                __________________
                                Check out the Pokemon Game Engine I am working on:
                                https://github.com/sjosegarcia/Pokemon
                                  #16    
                                Old June 18th, 2012 (9:09 AM). Edited June 18th, 2012 by ~Angel~.
                                ~Angel~'s Avatar
                                ~Angel~ ~Angel~ is offline
                                Lead developer for Pokémon Millennium
                                   
                                  Join Date: Mar 2010
                                  Location: United States Of America.
                                  Age: 19
                                  Gender: Male
                                  Nature: Quiet
                                  Posts: 286
                                  Everything works fine. I like it :D I just tested it's perfect. Yet in the script you should use CNG's way. He was able to make the pokemon moving even with out the player taking a step. You should look into it. Also How do I make the pokemon appear outside of the pokeball without adding 6 pokemon? Just a quick question. Just looked at it once again. The script now does not change it so Pokemon Come out when collected I might upload a video if you want to know what I mean.
                                    #17    
                                  Old June 18th, 2012 (10:50 AM).
                                  p.claydon p.claydon is offline
                                     
                                    Join Date: Jan 2011
                                    Gender:
                                    Posts: 335
                                    ok how do i get the pokemon out? ive added all the script stuff from the 1st post but dont know were to go from there (im also asuming the .anm files go in the animation folder
                                      #18    
                                    Old June 18th, 2012 (10:55 AM). Edited June 18th, 2012 by ~Angel~.
                                    ~Angel~'s Avatar
                                    ~Angel~ ~Angel~ is offline
                                    Lead developer for Pokémon Millennium
                                       
                                      Join Date: Mar 2010
                                      Location: United States Of America.
                                      Age: 19
                                      Gender: Male
                                      Nature: Quiet
                                      Posts: 286
                                      Quote:
                                      Originally Posted by p.claydon View Post
                                      ok how do i get the pokemon out? ive added all the script stuff from the 1st post but dont know were to go from there (im also asuming the .anm files go in the animation folder
                                      It's a simple set up. Just read it though and think of where you might find the stuff he is talking about. Also the .Anm does not go in that folder. It goes in the Data Folder.
                                      Edit: For the people who can't figure out how to put this in I made a upload for them. This makes it so much easier on Zingzags. Just dowload and replace the folder you have. Warning! This will replace all scripts and Maps you have made. I suggest coping the Map data you all ready have and Replacing it once done. Make sure to delete the Map data in the folder once extracted. Your welcome Zingzags ;D I thought this would help.
                                      Edit: Left the link out XD http://www.mediafire.com/?mdxz0zxm7xkjbrp This file does not contain the Overworlds for it. The scripts are all seperated by me to make sure I know where to place stuff. I will update this link everytime there is a new update on the script.
                                        #19    
                                      Old June 18th, 2012 (11:47 AM).
                                      p.claydon p.claydon is offline
                                         
                                        Join Date: Jan 2011
                                        Gender:
                                        Posts: 335
                                        ok your demo works but why is the sprite bulbasaur when the pokemon 1st starts to follow you?
                                          #20    
                                        Old June 18th, 2012 (12:07 PM).
                                        ~Angel~'s Avatar
                                        ~Angel~ ~Angel~ is offline
                                        Lead developer for Pokémon Millennium
                                           
                                          Join Date: Mar 2010
                                          Location: United States Of America.
                                          Age: 19
                                          Gender: Male
                                          Nature: Quiet
                                          Posts: 286
                                          I just set it that way. I was getting annoyed with the Over worlds that were there I just set it that way.
                                            #21    
                                          Old June 18th, 2012 (12:09 PM).
                                          p.claydon p.claydon is offline
                                             
                                            Join Date: Jan 2011
                                            Gender:
                                            Posts: 335
                                            yh just figured out roughly how it works (i had the call event wrong) but what does the 3 mean in the call script
                                            Kernel.pbAddDependency2(7, "Dependent", 3)
                                              #22    
                                            Old June 18th, 2012 (12:25 PM). Edited June 18th, 2012 by ~Angel~.
                                            ~Angel~'s Avatar
                                            ~Angel~ ~Angel~ is offline
                                            Lead developer for Pokémon Millennium
                                               
                                              Join Date: Mar 2010
                                              Location: United States Of America.
                                              Age: 19
                                              Gender: Male
                                              Nature: Quiet
                                              Posts: 286
                                              Quote:
                                              Originally Posted by p.claydon View Post
                                              yh just figured out roughly how it works (i had the call event wrong) but what does the 3 mean in the call script
                                              Kernel.pbAddDependency2(7, "Dependent", 3)
                                              I am unsure of what the '3' Means. Sense it's based of the work Help-14 I figured the same scripts he used works for the same exact one here. Once the newer version of this came up it stop working. So now it's just a matter of time until Zingzag's checks back in to tell us more. 3 is for the common event.
                                                #23    
                                              Old June 18th, 2012 (12:48 PM). Edited June 18th, 2012 by p.claydon.
                                              p.claydon p.claydon is offline
                                                 
                                                Join Date: Jan 2011
                                                Gender:
                                                Posts: 335
                                                oh

                                                shame we cant scroll through the pokemon like we used too

                                                EDIT

                                                if all your pokemon faint then your pokemon no longer follows you

                                                EDIT

                                                if all your pokemon faint then your pokemon no longer follows you - Fixed
                                                  #24    
                                                Old June 18th, 2012 (4:20 PM).
                                                ~Angel~'s Avatar
                                                ~Angel~ ~Angel~ is offline
                                                Lead developer for Pokémon Millennium
                                                   
                                                  Join Date: Mar 2010
                                                  Location: United States Of America.
                                                  Age: 19
                                                  Gender: Male
                                                  Nature: Quiet
                                                  Posts: 286
                                                  You need to update the Pokecenter scripts to. That's why they did not follow. Open up a nurse and add in this: $PokemonTemp.dependentEvents.refresh_sprite
                                                    #25    
                                                  Old June 18th, 2012 (4:32 PM).
                                                  p.claydon p.claydon is offline
                                                     
                                                    Join Date: Jan 2011
                                                    Gender:
                                                    Posts: 335
                                                    yh forgot that there was a second event page for the nurse for when you loose soo it seams to be almost identical to the old script (except its less buggy and you can not switch between your pokemon/turn off)
                                                    Closed Thread
                                                    Quick Reply

                                                    Sponsored Links
                                                    Thread Tools

                                                    Posting Rules
                                                    You may not post new threads
                                                    You may not post replies
                                                    You may not post attachments
                                                    You may not edit your posts

                                                    BB code is On
                                                    Smilies are On
                                                    [IMG] code is On
                                                    HTML code is Off

                                                    Forum Jump


                                                    All times are GMT -8. The time now is 6:33 PM.