The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > Creative Discussions > Game Development > Pokémon Essentials
Sign Up Rules/FAQ Live Battle Blogs Mark Forums Read

Notices

Pokémon Essentials All questions and discussion about Pokémon Essentials, the Pokémon game kit for RPG Maker XP, go in here. Also contains links to the latest downloads and the Essentials Wiki.

Reply
Click here to go to the first staff post in this thread.  
Thread Tools
  #201    
Old July 6th, 2014 (04:02 AM).
FL's Avatar
FL
Pokémon Island Creator
 
Join Date: Sep 2010
Gender: Male
1. Remove the 'if $INTERNAL' for the line 'pbPrintException($!)'. This may helps developers while testing new effects since there is no reason for won't letting the error message pops and several times some error occurs when the dev forget/won't expect this bug. So, the dev must waste time reproducing this error when the flag is off. Sometimes the players may find an error, but can't inform the error message because there is no error message, only the battle with the "buggy screen".

2. The official games now are faster when changing the box at pokémon storage, so let's double it in Essentials. At 'pbSwitchBoxToRight' and 'pbSwitchBoxToLeft' change the 16 to 32. Maybe you need to reflect this at the others numbers at these defs, since the sum must be divisible by 32.

3.
Code:
def pbCheckPokemonIconFiles(params,egg=false)
  species=params[0]
  if egg
    bitmapFileName=sprintf("Graphics/Icons/icon%segg",getConstantName(PBSpecies,species)) rescue nil
    bitmapFileName=sprintf("Graphics/Icons/icon%03degg",species) if !pbResolveBitmap(bitmapFileName)
    bitmapFileName=sprintf("Graphics/Icons/iconEgg") if !pbResolveBitmap(bitmapFileName)
    return pbResolveBitmap(bitmapFileName)
  else
    for i in 0...2**(params.length-1)
      tgender=(i%2==0) ? params[1] : false
      tshiny=((i/2)%2==0) ? params[2] : false
      tform=((i/4)%2==0) ? params[3].to_s : ""
      tshadow=((i/8)%2==0) ? params[4] : false
      bitmapFileName=sprintf("Graphics/Icons/icon%s%s%s%s%s",
         getConstantName(PBSpecies,species),
         tgender ? "f" : "",
         tshiny ? "s" : "",
         (tform!="" ? "_"+tform : ""),
         tshadow ? "_shadow" : "") rescue nil
      bitmapFileName=sprintf("Graphics/Icons/icon%03d%s%s%s%s",
         species,
         tgender ? "f" : "",
         tshiny ? "s" : "",
         (tform!="" ? "_"+tform : ""),
         tshadow ? "_shadow" : "") if !pbResolveBitmap(bitmapFileName)
      return pbResolveBitmap(bitmapFileName) if pbResolveBitmap(bitmapFileName)
    end
  end
  return nil
end
This method has a very, very bad performance. If you tried to load a box full of Shadow Pokémon without shadow sprites, the game tries to load each sprite (at pbResolveBitmap call) around 24 times. 30*24 = 720. Loading sprite consumes a good time, so in this case (and even with fewer calls) generally consumes too much time that trigger the message "The script is taking too long. The game will restart.".

For the developers, I suggest to comment one of the two "sprintf" fields for making this twice as faster.

For base essentials, I suggest to change this def to:

Code:
def pbCheckPokemonIconFiles(params,egg=false)
  species=params[0]
  if egg
    bitmapFileName=sprintf("Graphics/Icons/icon%segg",getConstantName(PBSpecies,species)) rescue nil
    bitmapFileName=sprintf("Graphics/Icons/icon%03degg",species) if !pbResolveBitmap(bitmapFileName)
    bitmapFileName=sprintf("Graphics/Icons/iconEgg") if !pbResolveBitmap(bitmapFileName)
    return pbResolveBitmap(bitmapFileName)
  else
    loadedSpritesNames=[]
    for i in 0...2**(params.length-1)
      tgender=(i%2==0) ? params[1] : false
      tshiny=((i/2)%2==0) ? params[2] : false
      tform=((i/4)%2==0) ? params[3].to_s : ""
      tshadow=((i/8)%2==0) ? params[4] : false
      bitmapFileName=sprintf("Graphics/Icons/icon%s%s%s%s%s",
         getConstantName(PBSpecies,species),
         tgender ? "f" : "",
         tshiny ? "s" : "",
         (tform!="" ? "_"+tform : ""),
         tshadow ? "_shadow" : "") rescue nil
      next if !bitmapFileName || loadedSpritesNames.include?(bitmapFileName)
      loadedSpritesNames.push(bitmapFileName)
      bitmap=pbResolveBitmap(bitmapFileName)
      if !bitmap	
        bitmapFileName=sprintf("Graphics/Icons/icon%03d%s%s%s%s",
            species,
            tgender ? "f" : "",
            tshiny ? "s" : "",
            (tform!="" ? "_"+tform : ""),
            tshadow ? "_shadow" : "") if !bitmap
          bitmap=pbResolveBitmap(bitmapFileName)
      end
      return bitmap if bitmap
    end
  end
  return nil
end
The line "next if !bitmapFileName || loadedSpritesNames.include?(bitmapFileName)" save some calls. For example: When the pokémon is shadow and isn't shiny, the expression 'tshiny=((i/2)%2==0) ? params[2] : false' params[2] is false, so the same string combination is called twice in the old way.

The same thing need to be done at pbCheckPokemonBitmapFiles.
__________________
Reply With Quote
  #202    
Old July 8th, 2014 (04:47 PM).
mej71's Avatar
mej71
 
Join Date: Mar 2014
Location: Omnipresence
Gender: Male
Here's a replacement as per your suggestion FL
Code:
def pbCheckPokemonBitmapFiles(params)
  species=params[0]
  back=params[1]
  loadedSpriteNames=[]
  for i in 0...2**(params.length-2)
    tgender=(i%2==0) ? params[2] : false
    tshiny=((i/2)%2==0) ? params[3] : false
    tform=((i/4)%2==0) ? params[4].to_s : ""
    tshadow=((i/8)%2==0) ? params[5] : false
    bitmapFileName=sprintf("Graphics/Battlers/%s%s%s%s%s%s",
       getConstantName(PBSpecies,species),
       tgender ? "f" : "",
       tshiny ? "s" : "",
       back ? "b" : "",
       (tform!="" ? "_"+tform : ""),
       tshadow ? "_shadow" : "") rescue nil
    next if !bitmapFileName || loadedSpriteNames.include?(bitmapFileName)
    loadedSpriteNames.push(bitmapFileName)
    bitmap=pbResolveBitmap(bitmapFileName)
    if !bitmap
      bitmapFileName=sprintf("Graphics/Battlers/%03d%s%s%s%s%s",
       species,
       tgender ? "f" : "",
       tshiny ? "s" : "",
       back ? "b" : "",
       (tform!="" ? "_"+tform : ""),
       tshadow ? "_shadow" : "") if !bitmap
    bitmap=pbResolveBitmap(bitmapFileName)
    end
  return bitmap if bitmap
  end
 return nil
end
Reply With Quote
  #203    
Old September 30th, 2014 (08:21 AM). Edited September 30th, 2014 by Florio.
Florio's Avatar
Florio
Pokemon Crimson Skies Owner
 
Join Date: Nov 2008
Location: Canada
Gender: Male
Nature: Lax
Okay honestly, I know I shouldn't be saying anything since I don't script, but I think these are the two things that need to be completed the most for Pokemon Essentials.

-An improved AI, the smarter the better. As of right now the AI isn't very intelligent, but it isn't completely stupid either. For example the AI is smart enough to use Foresight on ghost-types, but not smart enough to set up Reflect/Light Screen's.

-A fully functioning battle/trading system, I think this is important because it is ideal for a Pokemon game to have this feature. It would allow people to play with each other, which is what Pokemon is all about. Maybe even a GTS System or Random Match up System (both would require a server though), but if the scripts were already there for them with simple instructions on setting them up, it would be amazing.

I also feel like if these features were completed, people would be more motivated to finish their games. I know I'm going to finish my game eventually, but sometimes I get lazy. And then I think of things like how the AI isn't perfect, or the fact that people might not be able to trade/battle properly by the time I finish the game, and I become somewhat less motivated (I haven't quit yet and don't plan to, but many people have quit).
__________________
Reply With Quote
  #204    
Old October 2nd, 2014 (08:02 AM).
KajiVenator's Avatar
KajiVenator
The Flame Huntzman
 
Join Date: Jan 2010
Location: Harbor City, California
Age: 22
Gender: Male
Nature: Modest
It was suggested earlier, probably, but I'd really like to see an implementation of Triple Battles in the game, as well as Horde Battles. These are features in the main games and, while one is gimmicky, the other is a very important feature which will probably become a mainstay in the series. Although Triples are gimmicky, I'd really like to see it done because I have an idea for a game which will have all battles be Triple Battles.
__________________
Still working on a new signature


Pokemon Special
Blue Chrome
Xenotime
Mackinz.DeviantArt
GPXPlus (Not In Use ATM)
TSV Thread (Reddit)


Reply With Quote
  #205    
Old October 4th, 2014 (02:50 AM).
Discord.'s Avatar
Discord.
What fun is there in making sense?
 
Join Date: Jan 2013
Location: Ljubljana
Age: 15
Gender:
Nature: Relaxed
Send a message via Skype™ to Discord.
I think how smart the AI is should be decided by a"Difficulty Number" for their trainer type rather than how much money they give.
__________________
Reply With Quote
  #206    
Old October 4th, 2014 (03:13 AM).
Maruno's Avatar
Maruno
Lead Dev of Pokémon Essentials
 
Join Date: Jan 2008
Location: England
Quote:
Originally Posted by Discord. View Post
I think how smart the AI is should be decided by a"Difficulty Number" for their trainer type rather than how much money they give.
It already is. It just happens that the number (AI level and money rewarded) are the same for most trainer types.
__________________
Reply With Quote
  #207    
Old October 4th, 2014 (03:22 AM).
Discord.'s Avatar
Discord.
What fun is there in making sense?
 
Join Date: Jan 2013
Location: Ljubljana
Age: 15
Gender:
Nature: Relaxed
Send a message via Skype™ to Discord.
Quote:
Originally Posted by Maruno View Post
It already is. It just happens that the number (AI level and money rewarded) are the same for most trainer types.
My bad then, must have overlooked that when i checked the trainertypes.txt file.
__________________
Reply With Quote
  #208    
Old October 5th, 2014 (07:19 PM).
mustafa505's Avatar
mustafa505
Developer
 
Join Date: Apr 2010
Location: Hoenn Region 4ver
Age: 16
Gender: Male
Nature: Lonely
Send a message via Windows Live Messenger to mustafa505 Send a message via Yahoo to mustafa505
I suggest fixing the glitch, when you move the events vibrate, they only vibrate when the player moves.
__________________
Reply With Quote
  #209    
Old October 7th, 2014 (02:39 PM).
Florio's Avatar
Florio
Pokemon Crimson Skies Owner
 
Join Date: Nov 2008
Location: Canada
Gender: Male
Nature: Lax
Quote:
Originally Posted by KajiVenator View Post
It was suggested earlier, probably, but I'd really like to see an implementation of Triple Battles in the game, as well as Horde Battles. These are features in the main games and, while one is gimmicky, the other is a very important feature which will probably become a mainstay in the series. Although Triples are gimmicky, I'd really like to see it done because I have an idea for a game which will have all battles be Triple Battles.
I honestly don't think it is possible, and if it is then it won't be an easy job at all. The whole battle system would have to be reworked. I know a scripter who said that you would have to redefine so many things that it would basically be a new battle system. Honestly, I don't even think triple battles are worth it. Horde Battle's actually have a unique purpose (EV Training), but triple's are just there. Although I guess it would still be a cool feature to have, I don't consider triple battles at all important. I would say Horde Battle's are more important.

If anything, I would like to see an implementation of Sky Battle's. I think they are a cool idea, and I don't think it would be too hard to script either. All you would need to do is define which pokemon are allowed in Sky Battle's, and which moves are prohibited. Also you would need to make a message for when Metronome/Sleep Talk selects a prohibited move that says "But this move won't work well in a Sky Battle."
Reply With Quote
  #210    
Old 4 Weeks Ago (03:00 AM).
FL's Avatar
FL
Pokémon Island Creator
 
Join Date: Sep 2010
Gender: Male
Change sandstorm in field colors at night to match with darkness (http://www.pokecommunity.com/showthread.php?t=338607).
__________________
Reply With Quote
  #211    
Old 3 Weeks Ago (12:03 PM).
Richard PT's Avatar
Richard PT
 
Join Date: Aug 2014
Gender: Male
Hello, everybody!

I'm a pokemon fan and i'm making my pokemon fan game too.

I created this thread to sugest new features for pokemon essentials project so we can add more features and to improve more and more.

Note: I'm not a scripter or programer, I only do a few things in this matter, but I can provide some ideas or graphics.

Here I have a few ideas:

Vs seeker system to battle like in pokemon fire red;
New type of weather: Fog;
Pokémon navigator like in pokemon emerald;
Fame checker like in pokemon fire red;
Teaching TV like in pokemon fire red;
That's all for now...

What do you all think?
Reply With Quote
  #212    
Old 3 Weeks Ago (12:12 PM).
Richard PT's Avatar
Richard PT
 
Join Date: Aug 2014
Gender: Male
I only know a few things, but i want to help to improve the pokemon essentials, i can provide graphics if you want, soon i will post here a script based in Unown words here for everyone. Sorry for anything else and for my bad english, i'm portuguese.

Note: If this thread is useless, please delete it. Thanks
Reply With Quote
  #213    
Old 2 Weeks Ago (01:09 PM).
OliveCopper
Captain of Olive Kappa
 
Join Date: Apr 2013
Gender: Male
Fix the "Trainers' Pokémon not attacking" bug in Essentials 15. This is serious. Pokémon should use attacks!

I can tell because Kricketune isn't using ANY attacks. Is it because the Level exceeds 10? Is it the moveset? Seriously, I can't have games work like this! At least prove a challenge. Fix the "Opponent not attacking" problem in Essentials v15.
__________________
PLEDGE OLIVE KAPPA,
and don't lock this thread just because I posted here.
Reply With Quote
  #214    
Old 2 Weeks Ago (07:03 AM).
Savordez's Avatar
Savordez
HELLO HELLO EVERYBODY HEY
 
Join Date: Dec 2013
Location: dunno
Gender: Male
Nature: Relaxed
Quote:
Originally Posted by OliveCopper View Post
Fix the "Trainers' Pokémon not attacking" bug in Essentials 15. This is serious. Pokémon should use attacks!

I can tell because Kricketune isn't using ANY attacks. Is it because the Level exceeds 10? Is it the moveset? Seriously, I can't have games work like this! At least prove a challenge. Fix the "Opponent not attacking" problem in Essentials v15.
*v14

The culprit should be its moveset. You should check out the bug & error reporting topic, there might be some solutions for you (heck, your complain should belong there). If there aren't, try to figure things out.
__________________
Reply With Quote
  #215    
Old 1 Week Ago (03:29 AM).
FL's Avatar
FL
Pokémon Island Creator
 
Join Date: Sep 2010
Gender: Male
  1. Put the four battle debug commands (Wild Battle/Double Wild Battle/Trainer Battle/Double Trainer Battle) at a submenu like you did with Day Care.
  2. A system for Mega Forms that doesn't use forms, since it's can mess with pokémon that have several forms (no one yet, but think about custom pokémon).
  3. At particle engine, change 'setParameters' method to use a Hash as parameter, since it has too many parameters to handle.
  4. Allow script switches at conditional branch (http://www.pokecommunity.com/showthr...518381#8518381).
  5. A function that allow to put a pokémon in middle of a Regional Pokédex, like the Steelix at a New Kanto Dex, shifting all positions after Onix with +1. Also, make a similar thing for removing a pokémon.
  6. Regional Dex type statistics.
__________________
Reply With Quote
  #216    
Old 1 Week Ago (05:59 AM).
Maruno's Avatar
Maruno
Lead Dev of Pokémon Essentials
 
Join Date: Jan 2008
Location: England
Quote:
Originally Posted by FL View Post
  1. Put the four battle debug commands (Wild Battle/Double Wild Battle/Trainer Battle/Double Trainer Battle) at a submenu like you did with Day Care.
  2. A system for Mega Forms that doesn't use forms, since it's can mess with pokémon that have several forms (no one yet, but think about custom pokémon).
  3. At particle engine, change 'setParameters' method to use a Hash as parameter, since it has too many parameters to handle.
  4. Allow script switches at conditional branch (http://www.pokecommunity.com/showthr...518381#8518381).
  5. A function that allow to put a pokémon in middle of a Regional Pokédex, like the Steelix at a New Kanto Dex, shifting all positions after Onix with +1. Also, make a similar thing for removing a pokémon.
  6. Regional Dex type statistics.
  1. Eh.
  2. The current system doesn't mess up Pokémon with forms. Rather than setting the form to a specific value when it Mega Evolves, just add/subtract some amount from the form number instead. A few tweaks to other scripts would need to be done, but they're easy enough.
  3. If you're fiddling with something like that, surely you can cope with a slew of parameters.
  4. Already have done.
  5. You can already do that in the Regional Dex editor in the External Editor. It's the "insert" and "delete" options.
  6. What do you mean? Like the number of seen/owned Pokémon in each Regional Dex? You can already get that with code like $Trainer.pokedexSeen(0) where 0 is the first Regional Dex. The Pokédex uses this.
__________________
Reply With Quote
  #217    
Old 1 Week Ago (08:53 AM).
FL's Avatar
FL
Pokémon Island Creator
 
Join Date: Sep 2010
Gender: Male
Quote:
Originally Posted by Maruno View Post
  1. Eh.
  2. The current system doesn't mess up Pokémon with forms. Rather than setting the form to a specific value when it Mega Evolves, just add/subtract some amount from the form number instead. A few tweaks to other scripts would need to be done, but they're easy enough.
  3. If you're fiddling with something like that, surely you can cope with a slew of parameters.
  4. Already have done.
  5. You can already do that in the Regional Dex editor in the External Editor. It's the "insert" and "delete" options.
  6. What do you mean? Like the number of seen/owned Pokémon in each Regional Dex? You can already get that with code like $Trainer.pokedexSeen(0) where 0 is the first Regional Dex. The Pokédex uses this.
  1. Ah.
  2. Ok I guess.
  3. This make a certain confusion, so I need to put labels before each paramether.

    Old code:

    Code:
    setParameters([0,0,1,20,0,1,-64,
           Graphics.height,-64,Graphics.width,2,2,-5,-13,30,0])
    My suggestion:

    Code:
    setParameters({
      "randomhue" => 0,
      "leftright" => 0,
      "fade" => 1,
      "maxparticless" => 20,
      "hue" => 0,
      "slowdown" => 1,
      "ytop" => -64,
      "ybottom" => Graphics.height,
      "xleft" => -64,
      "xright" => Graphics.width,
      "xgravity" => 2,
      "ygravity" => 2,
      "xoffset" => -5,
      "yoffset" => -13,
      "opacityvar" => 30,
      "originalopacity" => 0
    })
    It's very more clear, isn't? If you wish, I can do this for you.
  4. Nice!
  5. I can't belive that I didn't notice this!
  6. I mean something for the dev know how many pokémon the dex have for each type. It's a way of balancing the types. Example:
    16 Normal
    15 Water
    12 Grass
    5 Fire
    ...
    (in descending order, preferably)
__________________
Reply With Quote
  #218    
Old 1 Week Ago (08:35 PM).
Umbreon's Avatar
Umbreon
Community Supporter
 
Join Date: Aug 2009
Location: Nearby my feet.
Age: 18
Gender: Male
Nature: Calm
Quote:
Originally Posted by FL View Post
  • I mean something for the dev know how many pokémon the dex have for each type. It's a way of balancing the types. Example:
    16 Normal
    15 Water
    12 Grass
    5 Fire
    ...
    (in descending order, preferably)
Couldn't you just use something like this:

Code:
def pbCountSpeciesType(typeID)
  count = 0
  for i in 0...PBSpecies.maxValue
    # get pokemon primary type
    count += 1 if type == typeID
  end
  return count
end
Getting all the type counts at once and ordering them from ascending to descending wouldn't be too hard to implement.
Reply With Quote
  #219    
Old 1 Week Ago (09:05 PM).
mej71's Avatar
mej71
 
Join Date: Mar 2014
Location: Omnipresence
Gender: Male
Quote:
Originally Posted by Umbreon View Post
Couldn't you just use something like this:

Code:
def pbCountSpeciesType(typeID)
  count = 0
  for i in 0...PBSpecies.maxValue
    # get pokemon primary type
    count += 1 if type == typeID
  end
  return count
end
Getting all the type counts at once and ordering them from ascending to descending wouldn't be too hard to implement.
Wrote it for fun

Code:
def pbTypeCount
   typecount=[]
    for i in 0..PBTypes.maxValue #for each type
    count=0
        for j in 1..PBSpecies.maxValue
              dexdata=pbOpenDexData
              pbDexDataOffset(dexdata,j,8)
              type1=dexdata.fgetb
              #pbDexDataOffset(dexdata,j,9)
              #type2=dexdata.fgetb
              dexdata.close
              #only checking primary type
              count += 1 if type1 == i #|| type2== i
        end
        typecount[i]=count
      end
      for i in 0...typecount.length
        Kernel.pbMessage(_INTL("Type: {1}  Count {2}",PBTypes.getName(i),typecount[i]))
      end
  return typecount
end
This doesn't display in order, but I figure FL can do that if he wants
Reply With Quote
  #220    
Old 1 Day Ago (10:04 AM).
sbtb1
 
Join Date: Aug 2012
Gender: Male
It would be nice have a zoom panel for the map connection editor.
The window and the maps inside are too smaller.
Reply With Quote
Reply
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
Minimum Characters Per Post: 25



All times are UTC -8. The time now is 05:57 PM.


Style by Nymphadora, artwork by Sa-Dui.
Like our Facebook Page Follow us on Twitter © 2002 - 2014 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2014 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator.