Scripts
Starting with version 0.32 a second scripting language known as version=2 was implemented into the game. Starting with version 0.33 all new scripts for the main game are made in version=2 scripts.
Version 1 Scripts
These scripts follow the @Command:subcommand pattern with not all Commands needing sub commands.
Version 1 is Case Sensitive.
These scripts are still supported but are not used by the dev team when making new scripts.
Version 2 Scripts
Version 2 scripts were started in version 0.32. Any script in Version 2 must have "version=2" as the first line of the script.
Commands are written as @command.subcommand and are no longer case sensitive. All commands require a subcommand.
Constructs were also expanded to be <construct.subconstruct> and can be used with switches to
There are numerous scripts that can be used withing the Pokemon 3D game.
Trainer Files
Trainer files all have the extension .trainer. There are 2 types of trainer files, one that is less descriptive and one that is more.
Commands
Commands often have a subcommand. All combinations will be listed below.
* unless otherwise specified a bool can bee either 1(on) or 0(off).
** Unless otherwise specified X,Y,Z is a three dimensional position.
Subcommand | Job | Inputs |
---|---|---|
@Achievement:{#}|text | Activates an Achievement. |
|
@Action:ActivateThirdPerson | Goto third person. | No input. |
@Action:ApricornKurt | Opens up the Appricorn menu to have 'Kurt' make you an appricorn. | No input. |
@Action:DayCare(#1,#2) | ||
@Action:DeactivateThirdPerson | Goto first person | No input. |
@Action:getpokemon(see@Pokemon:add) | same as @Pokemon:add | |
@Action:Network | Opens the co-op menu. | No input. |
@Action:Opendonation | Opens the list of Donars(needs updating). | No input. |
@Action:PlayCry(#) | Plays the cry of the specified Pokemon | # - National Dex Number. |
@Action:RecievePokedex | Gives you the Pokedex. | No input. |
@Action:RenamePokemon(#) | Allows a player to rename a Pokemon. | # - Party index Number |
@Action:RenameRival | Rename your rival. | No input. |
@Action:SetFont(text) | Change the font | text - Can be standard or Unown. |
@Action:SetRenderDistance(#) | Set the Renderdistance. | # - 0-4, A render distance option. |
@Action:Show0Pokemon(bool) | Turns Following Pokemon on or off. | |
@Action:StorageSystem | Activates the storage system. | No input. |
@Action:ToggleDarkness | Turn darkness on or off. | No input. |
@Action:ToggleThirdPerson | Change between third and first person. | No input. |
@Action:townmap,text | Opens the town map. | text - region name. Only Johto is currently available. |
@Action:Trade(#) | ||
@Action:wearskin(see @Player:wearskin) | see @Player:wearskin. | see @Player:wearskin. |
@Battle:Wild(#1,#2) | Start a wild pokemon battle |
|
@Battle:Trainer(text) | Battle a trainer | text - Trainer file in /Scripts/Trainer/. |
@Camera:pitch(#) | ||
@Camera:position(X,Y,Z) | ||
@Camera:reset | ||
@Camera:set(X,Y,Z,#1,#2) | ||
@Camera:x(#) | ||
@Camera:y(#) | ||
@Camera:yaw(#) | ||
@Camera:z(#) | ||
@GiveItem:#1,#2 | Gives the player an item |
|
@Heal | Heals all Pokemon | No input. |
@MessageBulb:#,X,Y,Z | ||
@Move:#1,#2 | Move a certain number of spaces. |
|
@Music:text | Plays designated music. | text - name of a file in /Content/Songs/. |
@NPC:Position(#,X,Y,Z) | Moves an NPC to a specific point. | # - NPC ID. |
@NPC:register(text) | ||
@NPC:remove(#) | Removes an NPC from the map. | # - NPC ID. |
@NPC:unregiser(text) | ||
@NPC:wearskin(#,text) | Change the skin used on an NPC. Doesn't change until it is out of view. |
|
@Options:text,text,... | Creates a menu with multiple options. Uses the :when construct(see below) | text - The options. Can be as many as you want. |
@Player:move(#) | Move the player in a straight line | # - Number of step. |
@Player:turn(#) | Turns the player to the left | # - Amount of quarter turns. |
@Player:turnto(#) | Turns to a specific direction. | # - 0-3, specifies the direction to turn to. |
@Player:warp(X,Y,Z) | Warp to a specified place. | Position values. |
@Player:warp(text,X,Y,Z,R) | Warps to a different map. |
|
@Player:wearskin(text) | Change the player's skin. | text - the name of a skin in /content/textures/NPC. |
@Pokemon:add(#1,#2,text1,#3,text2,bool,text3) | Adds a Pokemon to your party. |
|
@Pokemon:Addattack(#1,#2) | Adds an attack to a specific Pokemon. |
|
@Pokemon:clear | hrm? | no value |
@Pokemon:clearattacks(#) | Removes all attacks from a specified pokemon. | # - 0-5, Party index of a Pokemon. |
@Pokemon:remove(#) | Removes a Pokemon from the party. | # - 0-5, Party index of a Pokemon. |
@Pokemon:Removeattack(#1,#2) | Removes an attack from a Pokemon. |
|
@Pokemon:Setadditionalvalue(#,info) | Puts info into the AdditionalValue part of a pokemon's save. Example use: designate which Unown. |
|
@Pokemon:setNickName(#,text) | Change a Pokemon's name. |
|
@Pokemon:setshiny(#,bool) | Make a Pokemon shiny or not. |
|
@Pokemon:setStat(#1,text,#2) | Set a Pokemon's stat to a specific value. |
|
@Register:text | Adds text to Register.dat. | text - What to add. |
@Script:text | Activates a script file. | text - Script in /Scripts/. |
@Sound:text | Plays designated sound. | text - name of a file in /Content/Sounds/. |
@Trainer:text | Same as @Battle:Trainer. | Same as @Battle:Trainer. |
@Text:text | Displays text '~' breaks it to a new line, and '*' resets the text box. | text - the display text |
@Unregister:text | Removes text from Register.dat. | text - What to remove. |
@Wait:# | Waits a certain amount of time. | # - Amount of time to wait. |
@Warp:#,X,Y,Z | Warps a sprite to a new position. Will not appear until a movement script has been activated | # - NPC ID number. Can also be 'Player'. |
Constructs
Constructs are functions in scripts that are not doing something in the game but rather with the script itself. Constructs start with a : at the beginning of the line and are case sensitive! Here's the list of constructs:
Construct | Use |
---|---|
:end | Ends the script. |
:endif | Ends an :if statement. |
:endwhen | Ends a when statement |
:if | See Below. |
:then | Follows an :if statement. Continues here if true. |
:else | Continues here when an :if statement if False. |
:when | Works as a switch for the @options command. |
:if statements
- if statements can be either 'if true' statements or 'if false' statements
'if true:'
:if:register(elm1)
'if false'
:if:not register(elm1)
- if statements can take a variety of conditions as the argument. Here is the full list.
Argument | Variable | Description |
---|---|---|
:aurora | no variable | Checks for the 'Aurora' effect? |
:day(#) | # - A 'day' code. (0-6) 0 = Sunday and goes from there. | Checks if the current weekday matches the code given. |
:daytime(#) | # - A time of day value. 0 = night, 1 = morning, 2 = Day, 3 = Evening. | Checks the time of day against the given value. |
:freeplaceinparty | no variable | Checks to see if your party is full. |
:hasBadge(#) | # - the number of a gym badge. Remember Brock = 1, Falkner = 9. | Checks if you have the given badge. |
:hasItem(#) | # - An Item's ID number. | Checks if the given item is in your bag |
:nopokemon | No variable | Checks to see if you have any Pokemon. |
:position(#,X,Y,Z) |
|
Checks if the given NPC(or the player) is in the given place |
:random(#) | # - The max value. | Produces a Random integer? |
:regionWeather(#) | # - A weather ID. 0 = Clear, 1 = Rain, 2 = Snow, 3 = Bubbles | Checks to see if the random weather is the same as the given weather. |
:register(text) | text - A register value in the register.dat file of the save folder. | Checks to see if the 'text' is in the register.dat file. Considered true if found. |
:weather(#) | # - A weather ID. 0 = Clear, 1 = Rain, 2 = Snow, 3 = Bubbles | Checks the map weather against the given weather. This is not the random weather effect but rather permanent weather such as Route 33's eternal rain. |
Trainer Files
Each trainer file has is put in the /Scripts/Trainer/ folder.
These files can be made in 2 formats; the 'Old' and 'New' formats
Old Trainer file Format
The Old Trainer File Format was not very descriptive and required a lot of knowledge about which line was which.
$$ Class Name Start Battle Speech Defeat message Post Battle Speech Sprite Music1|Music2 1|Pokemon 2|Pokemon 3|Pokemon 4|Pokemon 5|Pokemon 6|Pokemon Items AI code Gender code
The file would look exactly like that.
Line | Description |
---|---|
$$ | The prize you receive after beating this trainer. |
Class | Displays before the name of the trainer. |
Name | The name of the trainer. |
Start Battle Speech | The speech given before the battle is started. |
Defeat Message | The message displayed after defeating the opponent while still in the battle. |
Post Battle Speech | Displays when interacting with the trainer after defeating them. |
Sprite | The name of a sprite located in the /Content/Textures/NPC folder. |
Music | Searches for the music files:
|
Pokemon | Only one Pokemon needs to be defined. Can be defined 2 ways:
|
Items | List of the item codes of the items a trainer can use. Will use each item once however items can be listed multiple times and will be used once for each listing. |
AI Code | Defines the abilities of the trainer's AI. there are 5 settings:
If not given Normal is used. |
Gender Code | Decides the genders of any of the trainer's randomly generated Pokemon. If the Pokemon code is given for a Pokemon the gender used there will be used.
If not given Random genders are given. |
New Trainer File Format
The new trainer file format was introduced in version 0.28. This format is very descriptive about what each line does.
[TRAINER FORMAT] Name| TrainerClass| Money| IntroMessage| OutroMessage| DefeatMessage| TextureID| Region| IniMusic| DefeatMusic| BattleMusic| Pokemon1| Pokemon2| Pokemon3| Pokemon4| Pokemon5| Pokemon6| Items| Gender| AI| IntroSequence|
Line | Description |
---|---|
Name| | Trainer's Name. |
TrainerClass| | Trainer's Class. Displays before the Name. |
Money| | How much money is earned after being defeated. |
IntroMessage| | Message that displays before battle starts. '...' means no message. |
OutroMessage| | Message that displays after the battle ends. '...' means no message. |
DefeatMessage| | Message that displays when interacting with the trainer after the battle has ended. '...' means no message. |
TextureID| | The name of a sprite in /Content/Textures/NPC/ |
Region| | The name of the region the trainer is in. Use is unknown. |
IniMusic| | Music used to start the battle. |
DefeatMusic| | Music used after the battle. |
BattleMusic| | Music used during the battle. |
Pokemon1| | The first Pokemon. The only Pokemon that needs to be defined. Can be made by defining only the Pokemon and the level(Pokemondex#,Level) or by defining the whole Pokemon(Pokemon Code). |
Pokemon2| | ' for how to define. |
Pokemon3| | ' for how to define. |
Pokemon4| | ' for how to define. |
Pokemon5| | ' for how to define. |
Pokemon6| | ' for how to define. |
Items| | List of Items to be used by their Item Code. Used once for each listing of the code. |
Gender| | Decides the genders of any of the trainer's randomly generated Pokemon. If the Pokemon code is given for a Pokemon the gender used there will be used.
If not given Random(-1) is assumed. |
AI| | Defines the abilities of the trainer's AI. there are 5 settings:
If not given Normal(2) is used. |
IntroSequence| | Calls specified colored VS sign and bar, respectively. There are 4 colors of VS and 11 colors of bar they are:
If an improper color is given they default to blue. |
Game Folder | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Content | ContentPacks | GameModes | Saves | Screenshots | Game Executable | ||||||||||||
Pokemon | Data | ContentPack Folder | GameMode folder | Savegame folder | Version History | ||||||||||||
Data | Maps | Moves | Scripts | Control Files | Content | GameMode.dat | Party.dat | Player.dat | Options.dat | ||||||||
poke | battle | structures | V1 | V2 | trainer | worldmap |