• 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.
  • Our friends from the Johto Times are hosting a favorite Pokémon poll - and we'd love for you to participate! Click here for information on how to vote for your favorites!
  • 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.

[Other Tutorial] Scripting in Essentials 101

carmaniac

Where the pickle surprise at?
  • 663
    Posts
    16
    Years

    Scripting 101, things you may want to know.

    Index:​

    Section 1: Images.
    Section 2: Pokémon.

    Hello, and welcome to Carmaniac's; Scripting, things you may want to know. In this thread, I shall be providing most functions within codes that people may want to know, but can't seem to find the help to learn it. For instance, how to show images, how to add in text, how to do checks for Pokémon, or anything else you guys would like to learn.





    Section 1: Images.


    In this section, we shall learn the basic commands on how to load up images. To begin with, we shall start by seeing what type of variables there are, that we can use to first, define an image. There's two different ways you can conduct this. You can create an array, to display the images, which, is easier to remove all the images when the script ends. Or you can use a standard variable to display the image. Examples below:

    @sprites = {} #This line is crucial if you want to use the array method.

    @sprites["Background"] = Sprite.new # This defines the variable is a new sprite.
    @sprites["Background"].x = 20 # This sets the horizontal position, showing it as
    # the value of 20.
    @sprites["Background"].y = 100 # This sets the verticle position.
    @sprites["Background"].z = 900 # This sets which layer the image is on, higher the
    #number is, the higher the image is set above other images.
    @sprites["Background"].bitmap = BitmapCache.load_bitmap("Graphics/FolderName/ImageName")
    #This line is setting what the image will be, ("Graphics/FolderName/ImageName") is
    #important as it directs the code to where the image is.


    You can also manipulate the images in many ways. For example:

    @sprites["Background"].zoom_x = 2
    @sprites["Background"].zoom_y = 2

    The lines above change the zoom size of the graphic by a scale of 2.
    @sprites["Background"].angle = 0
    Use this if you would like to change the angle of the image. You can also do fun things in the update
    method of the script with this. For instance @sprites["Background"].angle+=1 with constantly
    rotate the image.
    @sprites["Background"].opacity = 255
    This changes the opacity of the chosen image 255 being visible and 0 being invisible.


    @Background = Sprite.new # Defines normal variable as a sprite
    @Background.x = 20 # Defines the horizontal position.
    @Background.y = 100 # Defines the verticle position.
    @Background.z = 999 # Defines layer
    @Background.bitmap = BitmapCache.load_bitmap("Graphics/FolderName/ImageName")
    # Defines image path.


    That is the basic information you need to know when it comes to displaying images.

    Section 2: Pokémon.


    In this section, we look at basic functions that relate to Pokémon. We shall be using functions from the previous section, to display the Pokémon, and also a new function of images will be included. Lets begin.


    if $Trainer.party.length>=1
    # This checks if you have 1 or more Pokémon.
    @sprites["Pkm1"] = AnimatedSprite.new(sprintf("Graphics/Icons/icon%03d",$Trainer.party[0].species),2,128/2,64,2)
    # This line is creating the image of the first Pokémon in the party.
    # $Trainer.party[0].species is the first party, party numbers go 0-5.
    @sprites["Pkm1"].x = 20
    @sprites["Pkm1"].y = 20
    @sprites["Pkm1"].z = 999
    end
    # This ends the check.
    $Trainer.party[0].hp
    This shows the current hp for the first Pokémon.
    $Trainer.party[0].totalhp
    This is the max hp value for the first Pokémon.
    $Trainer.party[0].moves[0].pp
    This is seeing the value of the first Pokémons' first move pp amount. Moves are shown in the values 0-3
    0 being move 1 and 3 being move 4.
    $Trainer.party[0].moves[0].totalpp
    Checks the max amount of pp for the first move of Pokémon 1.

    I will be adding more functions to this thread as I go along, for now, this is the basic info people may want. If you'd like anything else, please send a PM to me or post in this thread about what you would like, and I shall get back to you with the information on here.
     
    Last edited:
    You should use $Trainer.party.length>0 instead of if $Trainer.party.length>=1, because it checks if you have first pokemon not the second :)
     
    You should use $Trainer.party.length>0 instead of if $Trainer.party.length>=1, because it checks if you have first pokemon not the second :)

    That's kind of the whole point for it to be checking Pokémon number 1 lol. It works perfectly fine when doing >=1 >=2 >=3 etc.
     
    You should use $Trainer.party.length>0 instead of if $Trainer.party.length>=1, because it checks if you have first pokemon not the second :)

    That is pretty much the same thing. The first method checks if the length is 1 or above. The second method checks if length is 1 or above.
     
    This a good thread, carmaniac. Maybe this will help some of the newbies and lower the number of question threads.

    And I think venom12 meant that since if $Trainer.party.length>=1 checks for Pokémon number 1, in the code 1 basically means 2, and 0 means 1. That would make the code actually search for the second Pokémon in the party, not the first since the first is 0. Although, if they function the way you describe, then there should be no problem.
     
    This a good thread, carmaniac. Maybe this will help some of the newbies and lower the number of question threads.

    And I think venom12 meant that since if $Trainer.party.length>=1 checks for Pokémon number 1, in the code 1 basically means 2, and 0 means 1. That would make the code actually search for the second Pokémon in the party, not the first since the first is 0. Although, if they function the way you describe, then there should be no problem.

    When it comes to party.length, it literally is just that, checking the length of the party. if it's >=1 it's seeing if the party length is 1 or higher. The 0 being 1 logic however, applies to the number of the party, i.e $Trainer.party[0] being the first Pokémon. Found that out the hard way on the length checks when I was getting errors calling the Pokémon into a menu XD.
     
    When it comes to party.length, it literally is just that, checking the length of the party. if it's >=1 it's seeing if the party length is 1 or higher. The 0 being 1 logic however, applies to the number of the party, i.e $Trainer.party[0] being the first Pokémon. Found that out the hard way on the length checks when I was getting errors calling the Pokémon into a menu XD.
    OH! Now I see what you mean. I derp.

    Heheh, well at least that's the beauty of scripting. You get an error, and you fix it... rinse and repeat until you get it right.

    But anyway, I love the way this thread has been organized, and makes viewing common functions easy. This is an amazing reference sheet in a way. I'm definitely subscribing to this thread.

    Good work on this man. :)
     
    And I think venom12 meant that since if $Trainer.party.length>=1 checks for Pokémon number 1, in the code 1 basically means 2, and 0 means 1. That would make the code actually search for the second Pokémon in the party, not the first since the first is 0. Although, if they function the way you describe, then there should be no problem.

    The symbol > stands for greater than, while >= is for greater than or equal to. By that logic, if we do >0 or >=1 the minimum number will be the same, 1. And since when you have a Pokemon in your party, the lowest number your party can have is 1. There is a difference between indexes and length of arrays, one being that the first index in an array is always 0, and that the minimum positive (non nil) length of an array is 1.

    Lol, ninja'd.
     
    This post is Wonderful! Keep it going I am learning so much and I have always wanted to dive into the scripting world! (I'm more of an artist) Thank you so much Carmaniac!
     
    Added a couple more lines to manipulating Pokémon and the graphics. I'll be later on adding how to display text and also a code example to show what each does, including an example image of the output.
     
    @Musketeer
    @Venom12
    When you are using " $Trainer.party[0]", you are referring to the array party, which lies in the Trainer class "I think", remember computers start from 0, not from one. So when you are programming it is important to know that you always start at 0. But lets say you are trying to initialize an array, in lets say java or c++, what you would do is array_name[number of elements]. So for example pokemon[10], you will have 10 elements which can be used to hold a value. But as I said before to get the first value in the array, you would use pokemon[0].

    $Trainer.party.length is the size of the array, so as Luka said before is true.
     
    Back
    Top