• Arrays Tutorial 1: Play a random song from a list

    Tutorial 1: Using Arrays to play a random song from a list

    We've learned the theory, now let's test it out with an example! Let's imagine we have a rad jukebox in our RPG Dream that is capable of playing a random song from a list when bumped into. The DS for that should be simple enough but uh-oh! The way our music files are named puts the numbers all over the place! They're named things like m4, m72, m2, m34, and m16.

    What are our options, supposing we can't rename the files?

    • Use a ton of DS lines to select a random song, or..
    • Use arrays to create a list of song numbers that's readable in a sequential format! Bonus: it also uses very little lines of DS to set up, and is therefore more elegant.

    This example will show you how to use arrays to accomplish this goal.

  • Arrays: The one line...

    The one line...

    There is a single array line in all of DS-cadia that does not behave like the typical array lines. Variable arrays store both the x and y coordinates of the entry in question, and when placed in a variable, copies both x and y coordinates with it. Normally, the coordinates are not treated like separate entries, but the following line is special:

    (5:390) starting with entry #, set # entries in array # to #.

    This line sets coordinate specific entries. In our previous array%Jukebox, we would have to declare entries 0, 2, 4, 6, and 8 to store the same data line (5:311) did since this line only stores half the array value. In reality, our%Jukebox array, if represented as a line of data would look like this:

    4 0 72 0 2 0 34 0 16 0

    As you can see, to properly use (5:390), you’d have to multiply the entry you’re trying to store by 2 if it's an X coordinate, or multiply by 2 then add 1 if you wanted to store a Y coordinate instead.

    To further illustrate this concept, let's use a short example to compare how to store coordinates to arrays first using line(5:311) use variable # as an array, and set entry # of it to # and then again, using line(5:390) starting with entry #, set # entries in array # to #.

  • DS Buttons Tutorial 1: Menus

    DragonSpeak Buttons

    DS Buttons can be used in many ways, both simple and complex, since the function of each DS Button solely depends on you, and what you choose to do with it. If you've read through thebasic overview of DS buttons and you think you're ready to try doing more with DS buttons, here are some slightly more advanced techniques to using DS Buttons that will help you to achieve the most from your Dream!

    Tutorial 1: Menus

    Although (as mentioned in the Basic Overview of DS buttons above), using DS Buttons for simple player interaction on the screen is a common use, you can also use DS buttons to have afull chain of events. So, when would you use a menu?

    Say you have acluster of buttons filling up the screen. Although you see that it's cluttery, you probably don't want to get rid of all of your fancy buttons just yet! So, how can we compromise? How about by making a menu!

  • DS Buttons: DragonSpeak Lines

    DragonSpeak Lines

    All of the DragonSpeak lines related to DS buttons are listed here:

  • DS Buttons: Integrating with tabs

    Integrating DS Buttons into tabs

    Okay, so if you've made it this far, it might be safe to say you have a pretty good idea of how to use DS with the buttons!

    But if you've gone into the Skin Editor and tried setting various DS buttons to be visible on default Furcadia tabs, you'll quickly notice that they don't display the same way in your Dream. The reason for this is that DS buttons behave differently than other default Furcadia buttons.

    DS Buttons, opposed to the Furcadia skin buttons, need to have specific DS in order to show in your Dream. In fact, when it comes to DS Buttons, most of the information is handled through DS, rather than the Skin Editor. For instance, you can position (x,y) a DS button in the Skin Editor to save on DS line space, but even then that isn't necessary, as there are already DS lines for that, too.

    When it comes down to positioning DS Buttons, there are 4 main DS lines. Two of them set the x,y position of the button, while the other two set a tab location (i.e. the default Furcadia tabs, including A, B, C, D, E, and F).

    These are the lines are used to change the x,y position of the button:

      (5:182) move the triggering player's DragonSpeak Button # to (#,#).
    (5:192) move everyone in the Dream's DragonSpeak Button # to (#,#).

    As for tabs: Even though tabs use letters in Furcadia, in DS they're represented by numbers.

    A = 1, B = 2, C = 3, D = 4, E = 5, and F = 6.

    So instead of thinking A B C D E F, think 1 2 3 4 5 6.

      (5:183) show the triggering player's DragonSpeak Button # in tab #.
    (5:193) show everyone in the Dream's DragonSpeak Button # in tab #.

    Reference List

    Testing command
    • Typing`dsbtn # will use the button even if you don't have it patched for testing
    • This file houses DS Buttons 1-10 (Object Number 177-196)
    • Also it contains all of the patches for other non DS buttons and tabs
    • It's bigger in size due to having more objects
    • This houses DS Buttons 11-99
    • Fox file used only for DS Buttons
    • Since it has less objects, it's also smaller in size overall
  • Entry Codes Tutorial 1: Giving a special entrance

    Tutorial 1: Giving your players a special entrance

    One example usage of entry codes would be toprovide a special place for any players toarrive. You cangive them a particular Furcadia DreamURL with a specific entry-code to let them get there.

  • Entry Codes Tutorial 2: Setting up access levels

    Tutorial 2: Setting up access levels for staff

    You can use entry codes to set up simplestaff access levels! After all, being a Rah of your own Dream can be tiring -- this way you can make sure only the people you trust and who have been proven to be responsible will have certain abilities. These extra awesome people we will call our Senior Staff. The newer staff we have will be Junior Staff: we want them to have some special abilities, but maybe notallof them. They need to earn their rank after all!

    To do this, we need to make sure only certain people will be able to use special commands, even if they are all staff members. For this example we'll give all our staff members, both junior and senior, the ability to make an announcement, but then restrict one other command to only more senior staff: turning on and off the ability for visitors to use swear words.

  • Entry Codes: DragonSpeak Lines

    DragonSpeak Lines

    All of the DragonSpeak lines related to entry codes are listed here:

  • Entry Codes: How are they assigned?

    How are entry codes assigned?

    As the name implies, a player’s entry code is assigned upon their entry into the Dream, however, it is important to emphasize that entry codeshave no relation with theentry method DS lines shown below:

      (1:91) and their entry method was # (One=Dream portal, Two=summoned in, Three=Dream url),
    (1:191) and their entry method was not # (One=Dream portal, Two=summoned in, Three=Dream url),

    By default,a player’s entry code is automatically assigned the value 0 irrespective of their method of entry into the Dream.

    There is anexceptionto this, however: players can access a Dream through its Furcadia DreamURL with any desired entry code appended at the end, and then they will have that entry code assigned to themselves.

    Here is an example:


    If someone types out that URL with the /42 at the end and clicks on it, that player willgive themselves the entry code 42. In other words, this means it is possible for any player toassign themselves an entry code of their choosing without restrictions.

  • Entry Codes: Intro

    Entry Codes

    In DragonSpeak, anentry code is a number that is automatically assigned to every player that arrives in a Dream, which is where the termentry comes from. This means that thisparticular number will bedirectly associated with a player, establishing a clear distinction between an entry code and a variable (mentioned above), which has a value that is non-player-specific.

    The value of a player's entry code istemporaryandonly exists so long as that person is still in the Dream. In other words, the entry code information for that player is lost once that player departs from the Dream, making the value of entry codes non-persistent.

  • Entry Codes: Summary


    To summarize, entry codes:

    • are specific to individual players, but are lost for that player once they leave the Dream
    • support integers (without decimal point) ranging from -32768 to 32767
    • can be self-assigned by a player through the use of a Furcadia DreamURL (supporting only positive integers)
    • can be assigned to a player that is already in the Dream through the use of the (5:316) DragonSpeak line (which support both positive and negative integers)
  • Entry Codes: The Limits

    The Limits

    Entry codes support the use of integers ranging from-32768to 32767 as their value. Negative numbers can only be given to a player through the use of the(5:316) DragonSpeak line.

    Note, however, thatnegative numbers cannot be assigned to entry codes through a Furcadia DreamURL. Any attempts to do so will result in the- symbol being ignored and the arriving player being assigned the positive counterpart of the number as their entry code instead.

  • PhoenixSpeak Tutorial 9: Player PS checker

    Substituting the furre name field dynamically

    Naturally, you can also use this concept withFurre Name fields of DS that deal with thecharacter table, too!

    Tutorial 9: Player PS checker

    The defaultPS maintenance commands can sometimes be intimidating for Dream owners to use, and more importantly, many people might prefer to only give certain people in their Dream the ability to view PS data,withoutgiving them PS access to all of your Dreams. In this situation, there's actually a way to mimic theps get maintenance command by, instead, using total substitution in the DS lines.

    Total substitution is similar to partial substitution, except it gives complete dynamic control over data to manipulate it, without needing any hard coded prefixes or suffixes. The following example gives a simple demonstration of what total substitution is capable of.

  • PhoenixSpeak: Intro

    PhoenixSpeak Manipulation

    If you're not familiar with PhoenixSpeak, theoverview of PhoenixSpeak covers the general usage and lists out all the params. Read that before going through this section!

  • Regions Tutorial: Forcefield

    Tutorial 1: Forcefield

    Regions are powerful, and why not show it! You could even use regions to track players' movements. For instance, let's say your Dream is anticipating the arrival of a very infamous individual known asMs. Agatha Frumpybottoms. There's only one issue though... this woman is a high school principal with very low tolerance for riff raff, and therefore exudes an aura that makes everyone around her shiver. Wouldn’t it be cool to make a special set of triggers that make it so the other students will actively avoid approaching her? We'll showcase how to do this with region DS bycreating a force field of space around Principal Frumpybottoms that others cannot enter. The principal, however, will still be able to move up to others.

  • Regions: DragonSpeak Lines

    DragonSpeak Lines

    All of the DragonSpeak lines related to regions are listed here:

  • Regions: Intro


    You can check through the How to use Regions tutorial first if you want a big overview! Though that tutorial covers basic usage of regions, there are almost endless other ways to use regions to your advantage. The advantage regions have over the other map layers like floors, items, and effects, is the fact that they're completely invisible and never overwrite the other layers.

    While there are many ways to utilize regions, we'll only be covering one in this reference.

  • Regions: The Limits

    The Limits

    There are 40,000 regions available, however in the Dream Editor, they are not visually numbered in sequence after the first 200. For instance, region 201 in the Dream Editor visually is represented as region 1, even though it really is 201.

    You can use regions for indoors/outdoor DS and you can use regions for miscellaneous other reasons... but you may run into a problem with trying to use both methods at the same time. In some instances you can’t. When you can, you will likely be restricted to regions for outdoor use only. This is because indoor regions hide items and objects making it difficult to add interactive DS to them.

  • Strings Tutorial 1: Text substitution


    Strings have many uses, as covered in the beginning String DS and you may already be wondering how to apply them in even more inventive ways! In this section we will lay down some of the more advanced concepts, including techniques on how to create string-based systems.

    Because of the vast amount of data alone that strings can hold compared to arrays, it's a good idea to master string manipulation for any type of database that would otherwise be impossible to achieve without a Dream Package (for PS storage). The main drawback with using string manipulation, though, is that strings are far more difficult to manipulate than arrays.

    Tip: The termstring will often be used throughout this guide instead ofmessage (although they both refer to the same feature).

    Tutorial 1: Text substitution and strings

    So, there's text substitution for variables (%Var), special text replacement strings (like[FURRE]), other strings (such as~Message) and even PhoenixSpeak entries called up through $ (like$dream.EntryName). We'll use this knowledge as a building block of advanced string manipulation!

  • Strings: DragonSpeak Lines

    DragonSpeak Lines

    All of the DragonSpeak lines related to strings are listed here:

Account E-Mail