RGSS scripting dissections and explinations
#41
I hate to highlight stuff on my phone -_-

Err, they wield an L shaped stick that they use to hit a black disk... yeah, it's a cold place with an icy floor...

Substitute = Replace = Exchange was just a way to tell you that they are synonyms or words with similar meanings, not actual classes or modules.

THERE IS NO SPECIFIC CLASS for substitutions, mainly because strings or those arrays of many characters set in a row and surrounded by quotes, either ' ' or " " are able to let you substitute some of its characters. We have showed you two ways to substitute characters, but there are two additional methods that may replace any character, but they may also use regex or regexp or regular expressions. You should not use regular expressions if you havent fully understand expression substitutions. Expressions are either idioms or words or weird characters like %s (a percent symbol and some s character), you place them inside strings when they may have changing values.

Lets say that you change Pod Pod's name during gameplay to Evil Pod Pod, let's supposed a chip malfunctions and she becomes quite evil.

class Window_ActorName < Window_Base
  def initialize(x, y, 160, 64)
    super
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.draw_text(0, 0, width - 32, 32, $game_party.actors[0].name, 1)
  end
end

There we defined a new window with some unknown x and y coordinates, 160 as its width and 64 as its height.

super is a pseudo variable, it helps you call our window's parent class, Window_Base. Our window passed x, y, width and height to Window_Base because it is mandatory, you would get an error otherwise. Since super was left inside the initialize method, it called Window_Base initialize method to set our window's x and y coordinates, its width and its height. Even if you cannot read it here, it also set the windowskin, that ugly blue box with a thin white border.

self.contents is a Bitmap, remember its a class that handles text and drawings of any color.  draw_text prints our labels or texts for us on screen inside that horrible blue box. Its first parameter is x, followed by y, a custom width, a custom height, our text and optionally 0 1 or 2 as a way to tell it to print our text aligned to the left hand side, centered or to the right hand side respectively.

What's our text here? $game_party.actors[0].name

$game_party equals a copy of Game_Party class where you can find an array named @actors. There it stored your game's heroes including Pod Pod or Evil Pod Pod XD

$game_party.actors[0] equals your first hero in the array. If she's Pod Pod then its name on screen will be Pod Pod.
"For God has not destined us for wrath, but for obtaining salvation through our Lord Jesus Christ," 1 Thessalonians 5:9

Maranatha!

The Internet might be either your friend or enemy. It just depends on whether or not she has a bad hair day.

[Image: SP1-Scripter.png]
[Image: SP1-Writer.png]
[Image: SP1-Poet.png]
[Image: SP1-PixelArtist.png]
[Image: SP1-Reporter.png]

My Original Stories (available in English and Spanish)

List of Compiled Binary Executables I have published...
HiddenChest & Roole

Give me a free copy of your completed game if you include at least 3 of my scripts! Laughing + Tongue sticking out

Just some scripts I've already published on the board...
KyoGemBoost XP VX & ACE, RandomEnkounters XP, KSkillShop XP, Kolloseum States XP, KEvents XP, KScenario XP & Gosu, KyoPrizeShop XP Mangostan, Kuests XP, KyoDiscounts XP VX, ACE & MV, KChest XP VX & ACE 2016, KTelePort XP, KSkillMax XP & VX & ACE, Gem Roulette XP VX & VX Ace, KRespawnPoint XP, VX & VX Ace, GiveAway XP VX & ACE, Klearance XP VX & ACE, KUnits XP VX, ACE & Gosu 2017, KLevel XP, KRumors XP & ACE, KMonsterPals XP VX & ACE, KStatsRefill XP VX & ACE, KLotto XP VX & ACE, KItemDesc XP & VX, KPocket XP & VX, OpenChest XP VX & ACE
Reply }
#42
Shocked An Evil PodPod? Nooooes!!!!

Oh, you can TOTALLY screw things up with substitution... if you accidentally erase one thing with another by accident. But on the subject of substitution, let me break Kyo's first example.

@substituted_player = Player.new
Here, we have a variable called @substituted_player.

In it, we tell it that it is equal to our Player class. While nor ahown specifically, let's just assume it is like having the RPGMaker XP class "Game_Player", okay? When we 'start up' that class, we run it like "Game_Player.new", so here we make THIS class run as "Player.new".

So here, we make @substituted_player become a new 'copy' of the Player class.


@substituted_player.name = "Stan"

FIRST... let's assume that the 'Player' class we made has a property (a value it can read/write) called 'name'.

This is basically telling the @substituted_player (copy of Player) that its name property is now 'Stan'.

It wouldn't work if the Player class doesn't have a name property to change. But for a point of argument, we're assuming that the Player class DOES have a name property. I explain properties a little below.


print "#{@substituted_player.name}, the kind of old hockey player, steps out right now and gets a seat in no time."
This statement is printing out...
=> "Stan, the kind of old hockey player, steps out right now and gets a seat in no time."

Here, we see the odd bit of code... #(@substituted_player.name)

When the program reaches the #( ..blahblahblah.. ) bit of code, it becomes replaced with the name stored within @substituted_player.name ... aka Stan.

Happy Being able to replace strings (aka the words in a message) is quite useful. I mean, there is a 'Name Input' thingie in RPGMaker where you can change your character's name, right? This is just another way to change a character's name.



Golf Rugby on ICE? ROFL!!! I LOVE IT!!! Laughing



Now you heard me say (or read me type?) the word 'property' when I referred to the Player class in the example above. It's a bit of tech jargon.

Most Classes are made from a whole bunch of methods. But classes (like the Game_Player, Game_Character, etc) that deal with data have a whole lotta properties... or info that can be READ.

For example, you have in the Game_Actor class, a bunch of values near the top of the script, and a whole lotta methods.

When there is some bit of data that you can read from a class, it is a property. For example, the Game_Actor class (which defines an individual actor or game hero) has a character's ID, an index, their name, and so on. Some of this can be changed easier than others. Some not so much.

Just a primer to prep you, knowing the learning curve you're struggling with ... I'm not being specific or anything.
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)

[Image: QrnbKlx.jpg]
[Image: sGz1ErF.png]    [Image: liM4ikn.png]    [Image: fdzKgZA.png]    [Image: sj0H81z.png]
[Image: QL7oRau.png]    [Image: uSqjY09.png]    [Image: GAA3qE9.png]    [Image: 2Hmnx1G.png]    [Image: BwtNdKw.png%5B]
  Above are clickable links
Reply }
#43
(09-10-2017, 03:36 AM)DerVVulfman Wrote: Shocked An Evil PodPod?   Nooooes!!!!

Oh, you can TOTALLY screw things up with substitution... if you accidentally erase one thing with another by accident.  But on the subject of substitution, let me break Kyo's first example.

@substituted_player = Player.new
Here, we have a variable called @substituted_player.

In it, we tell it that it is equal to our Player class.  While nor ahown specifically, let's just assume it is like having the RPGMaker XP class "Game_Player", okay?  When we 'start up' that class, we run it like "Game_Player.new", so here we make THIS class run as "Player.new".

So here, we make @substituted_player become a new 'copy' of the Player class.  


@substituted_player.name = "Stan"

FIRST... let's assume that the 'Player' class we made has a property (a value it can read/write) called 'name'.

This is basically telling the @substituted_player (copy of Player) that its name property is now 'Stan'.

It wouldn't work if the Player class doesn't have a name property to change.  But for a point of argument, we're assuming that the Player class DOES have a name property.   I explain properties a little below.


print "#{@substituted_player.name}, the kind of old hockey player, steps out right now and gets a seat in no time."
This statement is printing out...
=> "Stan, the kind of old hockey player, steps out right now and gets a seat in no time."

Here, we see the odd bit of code...  #(@substituted_player.name)

When the program reaches the #( ..blahblahblah.. ) bit of code, it becomes replaced with the name stored within @substituted_player.name ... aka Stan.

Happy Being able to replace strings (aka the words in a message) is quite useful.  I mean, there is a 'Name Input' thingie in RPGMaker where you can change your character's name, right?  This is just another way to change a character's name.




Golf Rugby on ICE?    ROFL!!!   I LOVE IT!!!  Laughing




Now you heard me say (or read me type?) the word 'property' when I referred to the Player class in the example above.  It's a bit of tech jargon.

Most Classes are made from a whole bunch of methods.  But classes (like the Game_Player, Game_Character, etc) that deal with data have a whole lotta properties... or info that can be READ.

For example, you have in the Game_Actor class, a bunch of values near the top of the script, and a whole lotta methods.

When there is some bit of data that you can read from a class, it is a property.  For example, the Game_Actor class (which defines an individual actor or game hero) has a character's ID, an index, their name, and so on.  Some of this can be changed easier than others.  Some not so much.

Just a primer to prep you, knowing the learning curve you're struggling with ... I'm not being specific or anything.

thats ALOT of info!

I'll ponder over all this at another time and then get back to it once I have a better grasp!
thanks!
[Image: SP1-Writer.png]
[Image: 55e3faa432d9efb86b8f19a6f25c0126-dawz35x.png]

new logo for Yesteryear created by Lunarberry!
Reply }
#44
Very interesting discussion. I think I'll also add something.

(09-10-2017, 03:36 AM)DerVVulfman Wrote:  print "#{@substituted_player.name}, the kind of old hockey player, steps out right now and gets a seat in no time." This statement is printing out... => "Stan, the kind of old hockey player, steps out right now and gets a seat in no time."

This only works with String that using double quote ( " " ).
Single quote ( ' ' ) is faster than double quote, but lacks in flexibility.

That means, this will not work:
print '#{@substituted_player.name}, the kind of old hockey player, steps out right now and gets a seat in no time.'

So you have to do:
print @substituted_player.name [b]+ ', the kind of old hockey player, steps out right now and gets a seat in no time.'[/b]
Oh, that's too troublesome and kinda looked uglier than before.

If that's really the case, then is single quote is useless / inferior / trash / etc?
My answer is no, as a scripter I believe that we have to reduce the resources (RAM) consumption as high as possible.

I really want to know others opinion about this.



And I can't believe no one mentioning shortcut in ruby. This trick is essential for reducing script lines.

Why is script lines is important?
This is because of RMXP weird behavior. When the script lines exceeds 10k, something supernatural happens (glitch, increase starting time, hang, etc).
Also, which one is nicer to your eyes, looking at 10k++ lines script or less than 1k lines script?

But if your script isn't complicated and didn't require thousands of lines, this trick isn't that important.

Let's look at Game_Character#passable?
Code:
  def passable?(x, y, d)
    # Get new coordinates
    new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)

WTH is that '?' and ':' means? Is it a new math operation like '+' or '-'?
Nope, that is a bunch of 'if and else' stacked together.

Content Hidden


Return to Game_Character#passable?. If that lines is dissected, it will became like this:
Content Hidden

That's 10 lines from the previously only 1 lines!


Another example, this is 'if' but without 'else':
Content Hidden

All 3 cases above result the same thing.
Reply }
#45
Hey, ya came in on your birthday!

I agree with you regarding the usage of the single-quote (') vs double-quote (") options. It is true that double-quotes are more powerful and can give you more options, but they do use more memory resources and take more time to process.

LIKEWISE.... another reason to avoid the use of global variable in your scripts (ie the $ variables) is that while they can span throughout your game, they too use more memory resources and take more time.


Best to cover explanations why things work, not just what works. Not everyone has the same learning conditions. While some people may be geniuses in 3D modeling, the educational system might have not picked up other learning disabilities. Our Siletrea is one such person, a true Savant with 3D animations, but is autistic. Better beware. anyone seen Ben Affleck's 'The Accountant'?

So, let's break down what LiTTleDRAgo offered for the different options of comparing data

FIRST, our data itself: array = [23,40,320,3020] We're just naming this array (list of values)... 'array' Just something nice and neat. And it holds four values: 23, 40, 320 and 3020. AND... remember what I said about an array's 'index' value... the Index value of an array begins with '0' (zero), not '1'. The first value in this array is called index value 0, the second would be index value 1, the third would be index value 2, and the last would be index value '3'. Counting the indexes begin with 0 and not 1.

So if I ask for the value of array[2] in my code, I would get the value of 320

Now all three examples that LiTTleDRAgo do basically the same thing. If something happens, the array is cleared... erased... gets empty. The command array.clear will clear/erase the array. If he named his array 'frodo_baggins' instead of 'array', he would have used the command 'frodo_baggins.clear' instead. But that's something else when we get to understanding arrays, when you ask.

And I just realized that LiTTleDRAgo blew it as his array has only four values and indexes count from 0. I'm adjusting his examples as there is no data in an index value of '4'.... there is no fifth piece of data in the array.

THE FIRST example:

if array[2] > array[3]
array.clear
end


Very simple. This is your simple IF...end block. The first line is your comparison.... If it is true, it does everything down until it hits the 'end' statement for that block. In this case, it will do it's job if the value in 'array[2]' (or 320) is greater than the value in 'array[3]' (or 3020), And again, that goofy 'array.clear' statement just erases the data in the array.


THE SECOND example:

array.clear if array[2] > array[3]

THIS is how I like to shorten my code. Laughing This is also a variation of the IF...end block, except it can all be done on one line if your block of code is just that short.

The actual command of 'array.clear' is the first thing you see, but it has the actual "IF' condition right next to it. And the IF condition is also the same 'if the value of 320 is more than 3020'...

OR, you could say (...hehehe...)
canadians can get drunk if age > 18
......Sound familiar? Winking

NOW FOR THE THIRD example...

(array[2] > array[3]) && array.clear

FIRST, notice that we're back to a layout where we check the condition first (array[2] > array[3]) and THEN only perform the actual code if the condition is true. [/b]&& array.clear[/b]

He put the actual test, the IF portion, in parenthesis. Remember how I said parenthesis holds values and the whole math thingie called 'precedence rules'? This keeps his whole comparison of 'array[2] > array[3]' clean and separate from everything else in that line of code.

Now AFTER that, he has && array.clear. You've seen how I said that the & symbol means 'and', right? Well, the '&&' symbol is called a logical operator and sorta means 'THEN'. So the statement is like if (arrays compared) THEN array.clear.

or....

( age > 18 ) & (location == canada) && canadians_can_get_drunk

Had to make sure you were in Canada too.
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)

[Image: QrnbKlx.jpg]
[Image: sGz1ErF.png]    [Image: liM4ikn.png]    [Image: fdzKgZA.png]    [Image: sj0H81z.png]
[Image: QL7oRau.png]    [Image: uSqjY09.png]    [Image: GAA3qE9.png]    [Image: 2Hmnx1G.png]    [Image: BwtNdKw.png%5B]
  Above are clickable links
Reply }
#46
Oh, my bad...
Thanks for the explanation, DerVV.
You said everything that I wanted to say but unable to.
Reply }
#47
(09-10-2017, 04:58 PM)DerVVulfman Wrote: Hey, ya came in on your birthday!

I agree with you regarding the usage of the single-quote  (') vs double-quote (") options.  It is true that double-quotes are more powerful and can give you more options, but they do use more memory resources and take more time to process.

LIKEWISE.... another reason to avoid the use of global variable in your scripts (ie the  $ variables) is that while they can span throughout your game, they too use more memory resources and take more time.  


Best to cover explanations why things work, not just what works.  Not everyone has the same learning conditions.  While some people may be geniuses in 3D modeling, the educational system might have not picked up other learning disabilities.  Our Siletrea is one such person, a true Savant with 3D animations, but is autistic.  Better beware.  anyone seen Ben Affleck's  'The Accountant'?

So, let's break down what LiTTleDRAgo offered for the different options of comparing data

FIRST, our data itself:  array = [23,40,320,3020]   We're just naming this array (list of values)... 'array'  Just something nice and neat.  And it holds four values:  23, 40, 320 and 3020.     AND... remember what I said about an array's 'index' value... the Index value of an array begins with '0' (zero), not '1'.  The first value in this array is called index value 0, the second would be index value 1, the third would be index value 2, and the last would be index value '3'.   Counting the indexes begin with 0 and not 1.

So if I ask for the value of array[2] in my code, I would get the value of 320

Now all three examples that LiTTleDRAgo  do basically the same thing.  If something happens, the array is cleared... erased... gets empty.  The command array.clear will clear/erase the array.  If he named his array 'frodo_baggins' instead of 'array', he would have used the command 'frodo_baggins.clear' instead.  But that's something else when we get to understanding arrays, when you ask.

And I just realized that LiTTleDRAgo  blew it as his array has only four values and indexes count from 0.  I'm adjusting his examples as there is no data in an index value of '4'.... there is no fifth piece of data in the array.

THE FIRST example:

if array[2] > array[3]
 array.clear
end


Very simple. This is your simple IF...end block.  The first line is your comparison....   If it is true, it does everything down until it hits the 'end' statement for that block.  In this case,  it will do it's job if the value in 'array[2]' (or 320) is greater than the value in 'array[3]' (or 3020),  And again, that goofy 'array.clear' statement just erases the data in the array.


THE SECOND example:

array.clear if array[2] > array[3]

THIS is how I like to shorten my code.  Laughing  This is also a variation of the IF...end block, except it can all be done on one line if your block of code is just that short.

The actual command of 'array.clear' is the first thing you see, but it has the actual  "IF' condition right next to it.   And the IF condition is also the same 'if the value of 320 is more than 3020'...  

OR, you could say (...hehehe...)
canadians can get drunk if age > 18
......Sound familiar? Winking

NOW FOR THE THIRD example...

(array[2] > array[3]) && array.clear

FIRST, notice that we're back to a layout where we check the condition first (array[2] > array[3]) and THEN only perform the actual code if the condition is true. [/b]&& array.clear[/b]

He put the actual test, the IF portion, in parenthesis.  Remember how I said parenthesis holds values and the whole math thingie called 'precedence rules'?   This keeps his whole comparison of 'array[2] > array[3]' clean and separate from everything else in that line of code.

Now AFTER that, he has && array.clear.  You've seen how I said that the & symbol means 'and', right?  Well, the '&&' symbol is called a logical operator and sorta means 'THEN'.  So the statement is like if (arrays compared) THEN array.clear.

or....

( age > 18 ) & (location == canada)  && canadians_can_get_drunk  

Had to make sure you were in Canada too.
 2 bunny ears " is stronger then 1 bunny ear ' but takes more memory then 1 bunny ear '

you can clear out a array "organizing box" using .clear

you can make a single line if statement!!! mind BLOWN

and 2 &'s makes a then? the last ones confusing logic-wise but OH WELL


Quote:Best to cover explanations why things work, not just what works.  Not everyone has the same learning conditions.  While some people may be geniuses in 3D modeling, the educational system might have not picked up other learning disabilities.  Our Siletrea is one such person, a true Savant with 3D animations, but is autistic.  Better beware.  anyone seen Ben Affleck's  'The Accountant'?

thank you for the compliments regarding my 3D works! and for helping clarify my...learning style...
no I'm not a sniper! I've never even HELD a gun before!...I can however use a bow and arrow >:D

and parenthisis? thats "frownyface" ( and "smily" ) right?
[Image: SP1-Writer.png]
[Image: 55e3faa432d9efb86b8f19a6f25c0126-dawz35x.png]

new logo for Yesteryear created by Lunarberry!
Reply }
#48
Oh no, that's a misinterpretation...

&& = and
&& != then

&& is not a THEN, THEN is different syntax.

if a < b and a > 0
if a < b && a > 0

Those two are the same thing. So if you do this :
if a < b then a > 0

It will be wrong in all sense.

And so, about the logic from (array[2] > array[3]) && array.clear, I think I need rewording it for a bit.

What I used in there, is behavior of ruby (or perhaps all of programming language), not the logic "THEN".
When using && in a conditional, if the first sentence "(array[2] > array[3])" is wrong, the second sentence array.clear will not be executed.
That's why you can exploit it to replace "if" in some occasion.

Let's look at this example:
(0 + 1 == 1) && (1 + 1 == 2) && (2 + 2 == 4) && (4 + 4 == 5) && (5 + 5 == 10) && print "ALL CORRECT"

If looking at the sentences there, you can see that (4 + 4 == 5) is totally wrong, so if you dismantle it, it will look like this:

true && true && true && false && true && print "ALL CORRECT"
true and true and true and false and true and print "ALL CORRECT"

The process would stop at false and the program will not print "ALL CORRECT".
Or more correctly, the program will not read (5 + 5 == 10) and rest of the sentence at all.

Actually "or" / "||" also can be exploited into shortcut but I think I'll pass explaining it for now, maybe tomorrow.
Reply }
#49
(09-10-2017, 08:26 PM)LiTTleDRAgo Wrote: Oh no, that's a misinterpretation...

&& = and
&& != then

&& is not a THEN, THEN is different syntax.

if a < b and a > 0
if a < b && a > 0

Those two are the same thing. So if you do this :
if a < b then a > 0

It will be wrong in all sense.

And so, about the logic from (array[2] > array[3]) && array.clear, I think I need rewording it for a bit.

What I used in there, is behavior of ruby (or perhaps all of programming language), not the logic "THEN".
When using && in a conditional, if the first sentence "(array[2] > array[3])" is wrong, the second sentence array.clear will not be executed.
That's why you can exploit it to replace "if" in some occasion.

Let's look at this example:
(0 + 1 == 1) && (1 + 1 == 2) && (2 + 2 == 4) && (4 + 4 == 5) && (5 + 5 == 10) && print "ALL CORRECT"

If looking at the sentences there, you can see that (4 + 4 == 5) is totally wrong, so if you dismantle it, it will look like this:

true && true && true && false && true && print "ALL CORRECT"
true and true and true and false and true and print "ALL CORRECT"

The process would stop at false and the program will not print "ALL CORRECT".
Or more correctly, the program will not read (5 + 5 == 10) and rest of the sentence at all.

Actually "or" / "||" also can be exploited into shortcut but I think I'll pass explaining it for now, maybe tomorrow.

ah I get it now! but then what does one & do? does it do anything?
[Image: SP1-Writer.png]
[Image: 55e3faa432d9efb86b8f19a6f25c0126-dawz35x.png]

new logo for Yesteryear created by Lunarberry!
Reply }
#50
It is used between two different arrays to extract specific values from both of them, but it does not alter any of them, they keep their own values because it is like a calculation not a modification, it reads both arrays and returns a new one with the end result, namely values both have in common like the same numbers or heroes.
"For God has not destined us for wrath, but for obtaining salvation through our Lord Jesus Christ," 1 Thessalonians 5:9

Maranatha!

The Internet might be either your friend or enemy. It just depends on whether or not she has a bad hair day.

[Image: SP1-Scripter.png]
[Image: SP1-Writer.png]
[Image: SP1-Poet.png]
[Image: SP1-PixelArtist.png]
[Image: SP1-Reporter.png]

My Original Stories (available in English and Spanish)

List of Compiled Binary Executables I have published...
HiddenChest & Roole

Give me a free copy of your completed game if you include at least 3 of my scripts! Laughing + Tongue sticking out

Just some scripts I've already published on the board...
KyoGemBoost XP VX & ACE, RandomEnkounters XP, KSkillShop XP, Kolloseum States XP, KEvents XP, KScenario XP & Gosu, KyoPrizeShop XP Mangostan, Kuests XP, KyoDiscounts XP VX, ACE & MV, KChest XP VX & ACE 2016, KTelePort XP, KSkillMax XP & VX & ACE, Gem Roulette XP VX & VX Ace, KRespawnPoint XP, VX & VX Ace, GiveAway XP VX & ACE, Klearance XP VX & ACE, KUnits XP VX, ACE & Gosu 2017, KLevel XP, KRumors XP & ACE, KMonsterPals XP VX & ACE, KStatsRefill XP VX & ACE, KLotto XP VX & ACE, KItemDesc XP & VX, KPocket XP & VX, OpenChest XP VX & ACE
Reply }


Possibly Related Threads…
Thread Author Replies Views Last Post
   Help iwth script (RGSS Player crash) Whisper 3 8,533 06-17-2017, 05:03 PM
Last Post: Whisper
  How can I use the cmd of "require" in rgss superegp 2 5,918 11-03-2015, 06:16 AM
Last Post: kyonides
   Scripting in VX vs VX Ace Miharu 5 9,095 02-21-2015, 10:10 AM
Last Post: Taylor
   Combat animations via scripting; How? ZeroSum 2 5,114 09-20-2013, 06:58 PM
Last Post: ZeroSum
Question  RGSS stoped to work Chaos17 5 7,750 02-14-2013, 05:13 PM
Last Post: DerVVulfman
   Ruby, RGSS & General Code Discussion Kain Nobel 6 10,891 12-22-2012, 05:11 AM
Last Post: MechanicalPen
   [Request] Tut. for RGSS Eldur 9 11,929 12-07-2012, 04:27 AM
Last Post: DerVVulfman
   [ASK-RGSS] Behemoth's CBS alike Getsuga_kawaii 0 4,231 04-29-2010, 03:07 PM
Last Post: Getsuga_kawaii
   Scripting I think spazfire 7 10,182 04-12-2010, 03:21 AM
Last Post: DerVVulfman
   Beginner Scripting Tuts? KDawg08 1 4,140 03-31-2010, 11:03 PM
Last Post: Hsia_Nu



Users browsing this thread: 19 Guest(s)