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

[Archive] Pokemon Essentials: Starter Kit for RPG Maker XP

Status
Not open for further replies.

Hardy Har Har

Oh dear, oh my...
258
Posts
16
Years
  • Just wanted to say that I now have multiple form Pokémon working properly.

    However, I'm missing their back sprites.

    If someone could find the backsprites of:then it could be implemented in Essentials.

    Here's Giratina's forms in-game (obviously, the sprites will be redone in Advance style in the future):
    Screenshot157.png
    Screenshot160.png

    Screenshot158.png
    Screenshot159.png

    They have the same dex number etc. but different stats and abilities, just like in Platinum.
    Backsprites? I compiled some of them in a zip, resized them using GIMP(except for Burmy and Wormadam). It's in the Attachments. For Shellos and Gastrodon:
    Shellos: http://bulbapedia.bulbagarden.net/wiki/Shellos_(Pokémon)
    Gastrodon: http://bulbapedia.bulbagarden.net/wiki/Gastrodon_(Pokémon)
    its in the bottom of the page.

    For my questions:
    1. How do I fix this:
    helpfixingthis.png

    2. I tried to create an "Alternate Formes" script and when summary is viewed, it looks like this:
    wheresgiratina.png
     
    145
    Posts
    17
    Years
  • Hi poccil,

    I didn't get an answer to a mail I've sent u 1 week ago, about an intl problem (with the lines with \1 at the end : those lines are not translated), so here it is :

    imtheomega said:
    poccil said:
    Here a fixed version of the script section PBIntl. You will have to re-extract the game's text. If the script fails to work, then you must use the latest version of Pokemon Essentials and try again.

    Code:
    def pbAddScriptTexts(items,script)
                   script.scan(/(?:_I)\s*\(\s*\"((?:[^\\\"]*\\\"?)*[^\"]*)\"/){|s|
                    string=s[0]
                    string.gsub!(/\\\"/,"\"")
                    string.gsub!(/\\\\/,"\\")
                    items.push(string)
                   }
    end
    
    def pbAddRgssScriptTexts(items,script)
                   script.scan(/(?:_INTL|_ISPRINTF)\s*\(\s*\"((?:[^\\\"]*\\\"?)*[^\"]*)\"/){|s|
                    string=s[0]
         		 string.gsub!(/\\r/,"\r")
         		 string.gsub!(/\\n/,"\n")
         		 string.gsub!(/\\1/,"\1")
         		 string.gsub!(/\\\"/,"\"")
         		 string.gsub!(/\\\\/,"\\")
                    items.push(string)
                   }
    end
    
    def pbSetTextMessages
       Graphics.update
    begin
       mapinfos = load_data("Data/MapInfos.rxdata")
       t = Time.now.to_i
       messages=[]
       texts=[]
       for script in $RGSS_SCRIPTS
         if Time.now.to_i - t >= 5
          t = Time.now.to_i
          Graphics.update
         end
         scr=Zlib::Inflate.inflate(script[2])
         pbAddRgssScriptTexts(texts,scr)
       end
       mapnames=[]
       for id in mapinfos.keys
        mapnames[id]=mapinfos[id].name
       end
       MessageTypes.setMessages(MessageTypes::MapNames,mapnames)
       # Must add messages since this code is shared by game system
       # and editor
       MessageTypes.addMapMessagesAsHash(0,texts)
       for id in mapinfos.keys
         if Time.now.to_i - t >= 5
            t = Time.now.to_i
            Graphics.update
         end
         filename=sprintf("Data/Map%03d.rxdata",id)
         next if !pbRgssExists?(filename)
         map = load_data(filename)
         items=[]
         choices=[]
         for event in map.events.values
           if Time.now.to_i - t >= 5
             t = Time.now.to_i
             Graphics.update
           end
           begin
             for i in 0...event.pages.size
               neednewline=false
               lastitem=""
               for j in 0...event.pages[i].list.size
                 list = event.pages[i].list[j]
                 if neednewline && list.code!=401
                   if lastitem!=""
                     lastitem.gsub!(/([^\.\!\?])\s\s+/){|m| $1+" "}
                     items.push(lastitem)
                     lastitem=""
                   end         
                   neednewline=false
                 end
                 if list.code == 101
                   lastitem+="#{list.parameters[0]}"
                   neednewline=true
                 elsif list.code == 102
                   for k in 0...list.parameters[0].length
                     choices.push(list.parameters[0][k])
                   end
                   neednewline=false
                 elsif list.code == 401
                   lastitem+=" #{list.parameters[0]}"
                   neednewline=true
                 elsif list.code == 355 || list.code==655
                   pbAddScriptTexts(items,list.parameters[0])
                 elsif list.code == 111 && list.parameters[0]==12
                   pbAddScriptTexts(items,list.parameters[1])
                 elsif list.code==209
                  route=list.parameters[1]
                  for k in 0...route.list.size
                   if route.list[k].code==45
                    pbAddScriptTexts(items,route.list[k].parameters[0])
                   end
                  end
                 end
               end
               if neednewline
                 if lastitem!=""
                    items.push(lastitem)
                    lastitem=""
                 end         
               end
             end
           end
         end
         if Time.now.to_i - t >= 5
            t = Time.now.to_i
            Graphics.update
         end
         items|=[]
         choices|=[]
         items.concat(choices)
         MessageTypes.setMapMessagesAsHash(id,items)
         if Time.now.to_i - t >= 5
            t = Time.now.to_i
            Graphics.update
         end
       end
    rescue Hangup
    end
       Graphics.update
    end
    
    
    def pbEachIntlSection(file)
      lineno=1
      re=/^\s*\[\s*([^\]]+)\s*\]\s*$/
      havesection=false
      sectionname=nil
      lastsection=[]
      file.each_line {|line|
       if lineno==1&&line[0]==0xEF&&line[1]==0xBB&&line[2]==0xBF
        line=line[3,line.length-3]
       end
       if !line[/^\#/] && !line[/^\s*$/]
        if line[re]
         if havesection
          yield lastsection,sectionname 
         end
         lastsection.clear
         sectionname=$~[1]
         havesection=true
        else
         if sectionname==nil
          raise _INTL("Expected a section at the beginning of the file (line {1})",lineno)
         end
         lastsection.push(line.gsub(/\s+$/,""))
        end
       end
       lineno+=1
       if lineno%500==0
        Graphics.update
       end
      }
      if havesection
       yield lastsection,sectionname 
      end
    end
    
    def pbGetText(infile)
     begin
      file=File.open(infile,"rb") 
     rescue
      raise _INTL("Can't find {1}",infile)
     end
     intldat=[]
     begin
      pbEachIntlSection(file){|section,name|
       index=name
       if section.length==0
        next
       end
       if !name[/^([Mm][Aa][Pp])?(\d+)$/]
        raise _INTL("Invalid section name {1}",name)
       end
       ismap=$~[1] && $~[1]!=""
       id=$~[2].to_i
       itemlength=0
       if section[0][/^\d+$/]
        intlhash=[]
        itemlength=3
        if ismap
         raise _INTL("Section {1} can't be an ordered list (section was recognized as an ordered list because its first line is a number)",name)
        end
        if section.length%3!=0
         raise _INTL("Section {1}'s line count is not divisible by 3 (section was recognized as an ordered list because its first line is a number)",name)
        end
       else
        intlhash=OrderedHash.new
        itemlength=2
        if section.length%2!=0
         raise _INTL("Section {1} has an odd number of entries (section was recognized as a hash because its first line is not a number)",name)
        end
       end
       i=0;loop do break unless i<section.length
        if itemlength==3
         if !section[i][/^\d+$/]
          raise _INTL("Expected a number in section {1}, got {2} instead",name,section[i])
         end
         key=section[i].to_i
         i+=1
        else
         key=MessageTypes.denormalizeValue(section[i])
        end
        intlhash[key]=MessageTypes.denormalizeValue(section[i+1])
        i+=2
       end
       if ismap
        intldat[0]=[] if !intldat[0]
        intldat[0][id]=intlhash
       else
        intldat[id]=intlhash
       end
      }
     ensure
      file.close
     end
     return intldat
    end
    
    def pbCompileText
     outfile=File.open("intl.dat","wb")
     begin
      intldat=pbGetText("intl.txt")
      Marshal.dump(intldat,outfile)
     rescue
      raise
     ensure
      outfile.close
     end
    end
    
    
    
    class OrderedHash < Hash
     def initialize
      @keys=[]
      super
     end
     def keys
      return @keys.clone
     end
     def inspect
      str="{"
      for i in [email protected]
       str+=", " if i>0
       str+=@keys[i].inspect+"=>"+self[@keys[i]].inspect
      end
      str+="}"
      return str
     end
     alias :to_s :inspect
     def []=(key,value)
      oldvalue=self[key]
      if !oldvalue && value
       @keys.push(key)
      elsif !value
       @keys|=[]
       @keys-=[key]
      end
      return super(key,value)
     end
     def self._load(string)
      ret=self.new
      keysvalues=Marshal.load(string)
      keys=keysvalues[0]
      values=keysvalues[1]
      for i in 0...keys.length
       ret[keys[i]]=values[i]
      end
      return ret
     end
     def _dump(depth=100)
      values=[]
      for key in @keys
       values.push(self[key])
      end
      return Marshal.dump([@keys,values])
     end
    end
    
    class Messages
     def initialize(filename=nil,delayLoad=false)
      @messages=nil
      @filename=filename
      if @filename && !delayLoad
       loadMessageFile(@filename)
      end
     end
     def delayedLoad
      if @filename && !@messages
       loadMessageFile(@filename)
       @filename=nil
      end
     end
     def self.stringToKey(str)
      if str[/[\r\n\t\1]|^\s+|\s+$|\s{2,}/]
        key=str.clone
        key.gsub!(/^\s+/,"")
        key.gsub!(/\s+$/,"")
        key.gsub!(/\s{2,}/," ")
        return key
      end
      return str
     end
     def self.normalizeValue(value)
      if value[/[\r\n\t\x01]|^[\[\]]/]
       ret=value.clone
       ret.gsub!(/\r/,"<<r>>")
       ret.gsub!(/\n/,"<<n>>")
       ret.gsub!(/\t/,"<<t>>")
       ret.gsub!(/\[/,"<<[>>")
       ret.gsub!(/\]/,"<<]>>")
       ret.gsub!(/\x01/,"<<1>>")
       return ret
      end
      return value
     end
     def self.denormalizeValue(value)
      if value[/<<[rnt1\[\]]>>/]
       ret=value.clone
       ret.gsub!(/<<1>>/,"\1")
       ret.gsub!(/<<r>>/,"\r")
       ret.gsub!(/<<n>>/,"\n")
       ret.gsub!(/<<\[>>/,"[")
       ret.gsub!(/<<\]>>/,"]")
       ret.gsub!(/<<t>>/,"\t")
       return ret
      end
      return value
     end
     def self.writeObject(f,msgs,secname,origMessages=nil)
        return if !msgs
        if msgs.is_a?(Array)
         f.write("[#{secname}]\r\n")
         for j in 0...msgs.length
          next if msgs[j]==nil || msgs[j]==""
          value=Messages.normalizeValue(msgs[j])
          origValue=""
          if origMessages
           origValue=Messages.normalizeValue(origMessages.get(secname,j))
          else
           origValue=Messages.normalizeValue(MessageTypes.get(secname,j))
          end
          f.write("#{j}\r\n")
          f.write(origValue+"\r\n")
          f.write(value+"\r\n")
         end
        elsif msgs.is_a?(OrderedHash)
         f.write("[#{secname}]\r\n")
         keys=msgs.keys
         for key in keys
          next if msgs[key]==nil || msgs[key]==""
          value=Messages.normalizeValue(msgs[key])
          valkey=Messages.normalizeValue(key)
          # key is already serialized
          f.write(valkey+"\r\n")
          f.write(value+"\r\n")
         end
        end
     end
     def messages
      return @messages || []
     end
     def extract(outfile)
      return if !@messages
      origMessages=Messages.new("Data/messages.dat")
      File.open(outfile,"wb"){|f|
       f.write(0xef.chr)
       f.write(0xbb.chr)
       f.write(0xbf.chr)
       f.write("# To localize this text for a particular language, please\r\n")
       f.write("# translate every second line of this file.\r\n")
       if @messages[0]
        for i in 0...@messages[0].length
         msgs=@messages[0][i]
         Messages.writeObject(f,msgs,"Map#{i}",origMessages)
        end
       end
       for i in [email protected]
        msgs=@messages[i]
        Messages.writeObject(f,msgs,i,origMessages)
       end
      }
     end
     def setMessages(type,array)
      arr=[]
      @messages=[] if !@messages
      for i in 0...array.length
       arr[i]=(array[i]) ? array[i] : ""
      end
      @messages[type]=arr
     end
     def self.createHash(type,array)
      arr=OrderedHash.new
      for i in 0...array.length
       if array[i]
        key=Messages.stringToKey(array[i])
        arr[key]=array[i]
       end
      end
      return arr
     end
     def self.addToHash(type,array,hash)
      if !hash
       hash=OrderedHash.new
      end
      for i in 0...array.length
       if array[i]
        key=Messages.stringToKey(array[i])
        hash[key]=array[i]
       end
      end
      return hash
     end
     def setMapMessagesAsHash(type,array)
      @messages=[] if !@messages
      @messages[0]=[] if !@messages[0]
      @messages[0][type]=Messages.createHash(type,array)
     end
     def addMapMessagesAsHash(type,array)
      @messages=[] if !@messages
      @messages[0]=[] if !@messages[0]
      @messages[0][type]=Messages.addToHash(type,array,@messages[0][type])
     end
     def setMessagesAsHash(type,array)
      @messages=[] if !@messages
      @messages[type]=Messages.createHash(type,array)
     end
     def saveMessages(filename=nil)
      filename="Data/messages.dat" if !filename
      File.open(filename,"wb"){|f|
       Marshal.dump(@messages,f)
      }
     end
     def loadMessageFile(filename)
      begin
       Kernel.pbRgssOpen(filename,"rb"){|f|
        @messages=Marshal.load(f)
       }
       raise "Corrupted data" if [email protected]_a?(Array)
       return @messages
      rescue
       @messages=nil
       return nil
      end
     end
     def set(type,id,value)
      delayedLoad
      return if !@messages
      return if !@messages[type]
      @messages[type][id]=value
     end
     def get(type,id)
      delayedLoad
      return "" if !@messages
      return "" if !@messages[type]
      return "" if !@messages[type][id]
      return @messages[type][id]
     end
     def getFromHash(type,key)
      delayedLoad
      return key if !@messages
      return key if !@messages[type]
      id=Messages.stringToKey(key)
      return key if !@messages[type][id]
      return @messages[type][id]
     end
     def getFromMapHash(type,key)
      delayedLoad
      return key if !@messages
      return key if !@messages[0]
      return key if !@messages[0][type]
      id=Messages.stringToKey(key)
      return key if !@messages[0][type][id]
      return @messages[0][type][id]
     end
    end
    
    module MessageTypes
     Species=1
     Items=2
     Entries=3
     Kinds=4
     Moves=5
     StorageCreator=6
     TrainerTypes=7
     TrainerNames=8
     RegionNames=9
     PlaceNames=10
     ItemDescriptions=11
     MoveDescriptions=12
     Abilities=13
     AbilityDescs=14
     PhoneMessages=15
     MapNames=16
     @@messages=Messages.new
     @@messagesFallback=Messages.new("Data/messages.dat",true)
     def self.stringToKey(str)
      return Messages.stringToKey(str)
     end
     def self.normalizeValue(value)
      return Messages.normalizeValue(value)
     end
     def self.denormalizeValue(value)
      Messages.denormalizeValue(value)
     end
     def self.writeObject(f,msgs,secname)
      Messages.denormalizeValue(str)
     end
     def self.extract(outfile)
      @@messages.extract(outfile)
     end
     def self.setMessages(type,array)
      @@messages.setMessages(type,array)
     end
     def self.createHash(type,array)
      Messages.createHash(type,array)
     end
     def self.addMapMessagesAsHash(type,array)
      @@messages.addMapMessagesAsHash(type,array)
     end
     def self.setMapMessagesAsHash(type,array)
      @@messages.setMapMessagesAsHash(type,array)
     end
     def self.setMessagesAsHash(type,array)
      @@messages.setMessagesAsHash(type,array)
     end
     def self.saveMessages(filename=nil)
      @@messages.saveMessages(filename)
     end
     def self.loadMessageFile(filename)
      @@messages.loadMessageFile(filename)
     end
     def self.get(type,id)
      ret=@@messages.get(type,id)
      if ret==""
       ret=@@messagesFallback.get(type,id)
      end
      return ret
     end
     def self.getOriginal(type,id)
      return @@messagesFallback.get(type,id)
     end
     def self.getFromHash(type,key)
      @@messages.getFromHash(type,key)
     end
     def self.getFromMapHash(type,key)
      @@messages.getFromMapHash(type,key)
     end
    end
    
    def pbLoadMessages(file)
     return MessageTypes.loadMessageFile(file)
    end
    def pbGetMessage(type,id)
     return MessageTypes.get(type,id)
    end
    def pbGetMessageFromHash(type,id)
     return MessageTypes.getFromHash(type,id)
    end
    
    # Replaces first argument with a localized version and
    # formats the other parameters by replacing {1}, {2}, etc.
    # with those placeholders.
    def _INTL(*arg)
     begin
      string=MessageTypes.getFromMapHash(0,arg[0])
     rescue
      string=arg[0]
     end
     string=string.clone
     for i in 1...arg.length
      string.gsub!(/\{#{i}\}/,"#{arg[i]}")
     end
     return string
    end
    
    # Replaces first argument with a localized version and
    # formats the other parameters by replacing {1}, {2}, etc.
    # with those placeholders.
    # This version acts more like sprintf, supports e.g. {1:d} or {2:s}
    def _ISPRINTF(*arg)
     begin
      string=MessageTypes.getFromMapHash(0,arg[0])
     rescue
      string=arg[0]
     end
     string=string.clone
     for i in 1...arg.length
      string.gsub!(/\{#{i}\:([^\}]+?)\}/){|m|
       next sprintf("%"+$1,arg[i])
      }
     end
     return string
    end
    
    def _I(str)
     return _MAPINTL($game_map.map_id,str)
    end
    
    def _MAPINTL(mapid,*arg)
     string=MessageTypes.getFromMapHash(mapid,arg[0])
     string=string.clone
     for i in 1...arg.length
      string.gsub!(/\{#{i}\}/,"#{arg[i]}")
     end
     return string
    end
    
    def _MAPISPRINTF(mapid,*arg)
     string=MessageTypes.getFromMapHash(mapid,arg[0])
     string=string.clone
     for i in 1...arg.length
      string.gsub!(/\{#{i}\:([^\}]+?)\}/){|m|
       next sprintf("%"+$1,arg[i])
      }
     end
     return string
    end

    I had no problem to put the script on my game. But it has not solved the problem :s .
     

    partyghoul2000

    Intermediate Game Designer
    175
    Posts
    18
    Years
    • Age 36
    • USA
    • Seen Jun 24, 2014
    the bridge is on the third, cave/ moutain tiles on second and river/sea on the 1st. how would i go about chaning the tile priority.

    tile priority can be found in the database under tilesets. the n just click priority on the right side. the higher the number, the "higher" the tile is.
     
    17
    Posts
    15
    Years
  • tried downloading the october 4 08 version of pokemon essentials. I'm pretty sure that's correct file to open up is game.rxproj right? When I open it up it gives me an error saying "Failed to Load Actor Data". I'm not sure why this is, or if it's just the wrong file. Also, I'm using Windows Vista if that might effect it, i'm not sure. By the way, yes, I do have RMXP. I'm trying to open up the file basically so I just want to know how to access it.


    Please help me!!! I can't even open it up because of this error.
     
    97
    Posts
    17
    Years
    • Seen Apr 6, 2011
    ... when I try downloading it it says I already hav RMXP downloaded. But I have the normal version, not RTP version. Should I delete RMXP and replace it with RMXP RTP?
    there is no rtp version. RTP is not a seperate version it is just a lot of image files that can be used in rmxp
     

    ryushin5

    In College YAY! :3
    598
    Posts
    15
    Years
  • I want to know is their anyway to change the heroes backsprite and ow sprite including the battle graphic in the game for a short while for example like the hero uses a disguise to get into an evil team's base or something like that.
     

    crzyone9584

    Pokemon: The Beginning Founder
    167
    Posts
    15
    Years
  • I want to know is their anyway to change the heroes backsprite and ow sprite including the battle graphic in the game for a short while for example like the hero uses a disguise to get into an evil team's base or something like that.

    top of the page poccil answered it. its possible only through a small event. Because of the different sprites for surfing and fishing.
     

    apolloman

    Modern Looney
    21
    Posts
    15
    Years
  • Hi poccil. i have a small question about modifing the scripts. I would like to change the word "pokemon" used on every screen it appears on, such as the start menu, pokedex page, pokemon summary etc. how would i go about it without damaging the game? (hope this makes sense 2 u)
     
    145
    Posts
    17
    Years
  • delyemerald2 said:
    Where can you edit on wich place you see the pokemon in battle?

    It has been answered before, look in the topic before answering...

    44tim44:

    Each Pokemon species in "PBS/pokemon.txt" has three parameters for setting the position of each Pokemon sprite. They are detailed here:

    BattlerPlayerY - Specifies the relative position of the back of the sprite on the battle screen. A higher number means the back sprite is placed lower on the screen.
    BattlerEnemyY - Specifies the relative position of the front side sprite on the battle screen. A higher number means the front side sprite is placed lower on the screen.
    BattlerAltitude - Specifies how far from the ground the front sprite is placed, that is, this value will be higher than 0 if the sprite has the appearance of being suspended in the air. A higher number means the front sprite is placed further from the ground.


    AtlantianTokRa:

    Check if you see "onWildPokemonCreate" in the script section PokemonField. If you don't, then you must upgrade your Pokemon Essentials version. If you do, I'm afraid I can't help you further.

    If it's not the answer to your question, just say it, I will take a look at the scripts to answer it better.
     

    crzyone9584

    Pokemon: The Beginning Founder
    167
    Posts
    15
    Years
  • tile priority can be found in the database under tilesets. the n just click priority on the right side. the higher the number, the "higher" the tile is.


    ok ill check it once i get home from my class today. thanks alot.

    tried it found out that the endsof the moutain things are one so i made my bridge two. but now i just go behind it and cant walk on it. :'( ugh so many things keeping me from progressing lol. if anyone got any answeres for me that will be great.
     

    partyghoul2000

    Intermediate Game Designer
    175
    Posts
    18
    Years
    • Age 36
    • USA
    • Seen Jun 24, 2014
    ok ill check it once i get home from my class today. thanks alot.

    tried it found out that the endsof the moutain things are one so i made my bridge two. but now i just go behind it and cant walk on it. :'( ugh so many things keeping me from progressing lol. if anyone got any answeres for me that will be great.

    can you elaborate a bit? also maybe another pic?
     

    Ravecat

    I'm Right.
    1,238
    Posts
    18
    Years
  • Where can I change the script so that the screen stays the default size, but the size of sprites,etc isn't doubled?

    The best I can do is keep the screen size, but the GBA size screen is in the corner with the rest of the screen just filled with black.

    Thanks; I'm not too great at Ruby.
     
    Status
    Not open for further replies.
    Back
    Top