• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
  • 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.
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):
[PokeCommunity.com] [Archive] Pokemon Essentials: Starter Kit for RPG Maker XP
[PokeCommunity.com] [Archive] Pokemon Essentials: Starter Kit for RPG Maker XP

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

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: https://bulbapedia.bulbagarden.net/wiki/Shellos_(Pokémon)
Gastrodon: https://bulbapedia.bulbagarden.net/wiki/Gastrodon_(Pokémon)
its in the bottom of the page.

For my questions:
1. How do I fix this:
[PokeCommunity.com] [Archive] Pokemon Essentials: Starter Kit for RPG Maker XP

2. I tried to create an "Alternate Formes" script and when summary is viewed, it looks like this:
[PokeCommunity.com] [Archive] Pokemon Essentials: Starter Kit for RPG Maker XP
 
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 .
 
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.
 
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.
 
the rtp is basically all the default tilesets, charsets ect. and not having it would not stop the program from loading, it would stop a game from playing. but only if the game uses it


... 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?
 
... 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
 
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.
 
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.
 
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)
 
Where can you edit on wich place you see the pokemon in battle?
 
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.
 
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.
 
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?
 
Status
Not open for further replies.
Back
Top