<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://graalonline.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DrakilorP2P</id>
	<title>Graal Bible - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://graalonline.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DrakilorP2P"/>
	<link rel="alternate" type="text/html" href="https://graalonline.net/Special:Contributions/DrakilorP2P"/>
	<updated>2026-04-10T09:27:17Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GMap&amp;diff=17527</id>
		<title>Creation/Dev/GMap</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GMap&amp;diff=17527"/>
		<updated>2010-11-05T03:11:33Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Creation */ Link to gmap generator.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Levels]]&lt;br /&gt;
'''GMaps''' are files that contain information about how to links many single [[Level]] files (.nw) to a big [[Map]] that seems like one level in game. This makes it possible to have a map that displays all players who are in the same area, and removes restrictions on what NPCs can do caused by the separation of levels.&lt;br /&gt;
Earlier this was done through ''*.txt'' files merely containing a list of [[Level]]s, and the ''setmap'' command, but this lacks many of the features the gmap way provides, and therefore is considered deprecated. Many [[Playerworld]]s still use the old way, but this is merely because of the difficulties that make it hard and error prone to convert a whole server to a new format.&lt;br /&gt;
&lt;br /&gt;
== Creation ==&lt;br /&gt;
GMaps, if not handmade, are created by the [[Creation/Dev/Level_Generator|Level generator]] that can be installed through ''Start-&amp;gt;Install Packages'' on the serverlist (Windows only). There is also a [[Creation/Dev/Dungeon_Generator|dungeon generator]] which can generate dungeons or caves and is available on Windows and Linux.&amp;lt;br&amp;gt;&lt;br /&gt;
GMaps can also hold height information that are used by the Graal engine to&lt;br /&gt;
display [[Level]]s in a three dimensional looking way. This is called terrain.&lt;br /&gt;
The height information is mainly created by the level editor and the [[Creation/Dev/Terrain_Generator|Terrain Generator]] program that allows creation of whole islands.&lt;br /&gt;
&lt;br /&gt;
Useful:&lt;br /&gt;
http://www.graal.us/tools/generatelevels.html&lt;br /&gt;
&lt;br /&gt;
== File Format ==&lt;br /&gt;
GMaps are plain text files, and all GMaps as of now start with the string ''GRMAP001'', followed by a newline. Then, in each line, a 'command' is given, usually in capital letters. Parameters to those commands are put into the same line after a whitespace. Some commands are in fact lists, which have nothing in their line, but which treat all following lines as their parameters until they see themselves followed by 'END' without any whitespace again.&lt;br /&gt;
&lt;br /&gt;
To learn about all that, in addition to reading this article, it is recommended to&lt;br /&gt;
check your 'maps' subfolder, and have a look at some [[Playerworld]]s' GMaps.&lt;br /&gt;
&lt;br /&gt;
=== WIDTH, and HEIGHT ===&lt;br /&gt;
    followed by an integral number&lt;br /&gt;
Dimensions of the whole map, given in single levels. If given incorrectly, these can break the whole map, thus be careful.&lt;br /&gt;
=== GENERATED ===&lt;br /&gt;
    followed by a level name&lt;br /&gt;
Gives the last, or bottom right, level that was generated if the gmap was created along with a whole set of levels using a device such as the terrain generator.&lt;br /&gt;
=== LEVELNAMES ===&lt;br /&gt;
    followed by a list of levels, and terminated by '''LEVELNAMESEND'''&lt;br /&gt;
The list of levels that are part of this map. Each 'row' of levels goes into one line, seperated by commas. There is no comma at the end of a line. If there are &amp;quot;holes&amp;quot; in your map (areas where there is no level, meaning the GMap is not a perfect square), you must make sure the levels surrounding each hole don't contain links to nonexistant levels.&lt;br /&gt;
&lt;br /&gt;
=== MAPIMG ===&lt;br /&gt;
    followed by a [[PNG]] file name&lt;br /&gt;
The image file that is to be used as the map that players see if they press their Map key.&amp;lt;br /&amp;gt;&lt;br /&gt;
''Note: This feature is not supported in Graal4''&lt;br /&gt;
=== MINIMAPIMG ===&lt;br /&gt;
    followed by a PNG file name&lt;br /&gt;
The image file that is to be used as the mini map in the bottom left corner of one's screen.&lt;br /&gt;
=== NOAUTOMAPPING ===&lt;br /&gt;
    uses no param&lt;br /&gt;
Disables the assembly of automagical screenshots into a map that is drawn over the MAPIMG image.&lt;br /&gt;
=== LOADFULLMAP ===&lt;br /&gt;
A serverside option: The gmap loading is optimized so that parts are only loaded when they are needed, and afterwards they are removed from memory again. If you put this line, that will be disabled and the full map with all levels will be loaded at once.&lt;br /&gt;
&lt;br /&gt;
=== LOADATSTART ===&lt;br /&gt;
    followed by a list of level names, terminated by '''LOADATSTARTEND'''&lt;br /&gt;
A serverside option: The level names given here are not subject to the optimizations described above.&lt;br /&gt;
&lt;br /&gt;
=== Terrain settings ===&lt;br /&gt;
'''GENEVENBORDERS''', followed by true/false&lt;br /&gt;
&lt;br /&gt;
'''GENSEED''', followed by a big number used to seed randomness&lt;br /&gt;
&lt;br /&gt;
'''GENBASE''', followed by a height value&lt;br /&gt;
&lt;br /&gt;
'''GENHEIGHT''' and '''LEVHEIGHT''', followed by a height value&lt;br /&gt;
&lt;br /&gt;
'''GENCHAOS''' and LEVCHAOS, followed by a number between 0 and 1, I think, exact to 1/20&lt;br /&gt;
&lt;br /&gt;
'''HEIGHMAP''', followed by a list of height values for each level ordered similar to the '''LEVELNAMES''' list, terminated by '''HEIGHTMAPEND'''&lt;br /&gt;
&lt;br /&gt;
'''RANDOMSEEDS''', followed by lots of big numbers, probably ordered similar to the '''LEVELNAMES''' list, terminated by '''RANDOMSEEDSEND'''&lt;br /&gt;
&lt;br /&gt;
The random numbers generator is seeded with these to render the terrain in a three dimensional looking way. The borders of gmaps are defined by the global map attributes, but for map part heights a row of random numbers is used. The seeds are constant so the terrain looks the same all the time, and there are many of them so it is possible to take a small rectangle out of the map and still display it correctly, which would not be possible with one global seed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not all of these lines are needed.&lt;br /&gt;
&lt;br /&gt;
== Deployment ==&lt;br /&gt;
&lt;br /&gt;
Now, imagine you have a gmap and a set of levels and want to actually use it&lt;br /&gt;
on your [[Playerworld]].&lt;br /&gt;
&lt;br /&gt;
For offline editing add the gmap name as a new line to a file loadgmaps.txt which must be put in your Graal Editor base folder. The editor will automatically load the gmap once it is started and will correctly link levels.&lt;br /&gt;
This will only enable the engine to assign and connect levels the player enters or sees. [[Level]]s must still have [[Link]] areas to each other in order for the player to move on the map. To make a preview image of your map you can press '''M''' in the editor.&lt;br /&gt;
&lt;br /&gt;
As you are going to use the GMap on your [[Playerworld]], you need to make it available for [[Player]]s to download, by putting it inside the levels/ folder hierarchy using the [[RC file manager]], and adding it to the [[Folder configuration]] as mere [[Level]]; level *.gmap, for example. It is neccessary to additionally register it as file in the folder configuration, but there is no gmap category to put it under.&lt;br /&gt;
&lt;br /&gt;
To make the [[NPC Server]] aware of your gmaps, you need to list them in the [[Server options]] too. Add a new option gmaps= followed by a comma seperated list of names without the .gmap extension. If your line gets too stuffed, you can as well use multiple lines, as long as you prefix each one with gmaps=. The entries in each lines will be added, and not replace each other.&lt;br /&gt;
&lt;br /&gt;
If you are converting levels that are already uploaded to use a GMap, you will need to restart the GServer, or you can keep all players out of the levels for about 5 to 10 minutes. The latter may be difficult, however, because players could log on to one of the levels nobody should be in, which would disrupt the 5/10 minute wait time, so restarting the GServer may be a better choice.&lt;br /&gt;
&lt;br /&gt;
For speeding up the entering of maps you can preload gmaps on clientside using the script command &amp;quot;loadmap &amp;lt;mapname&amp;gt;;&amp;quot;. This is actually not required, but will reduce the loading time when the player is warped onto the map.&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript&amp;diff=17382</id>
		<title>Creation/Dev/GScript</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript&amp;diff=17382"/>
		<updated>2010-09-28T22:26:42Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* External Links */ Link to Fowlplay4's tutorial.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripting Reference]]&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
'''GScript''' is [[Graal]]'s scripting language.&lt;br /&gt;
&lt;br /&gt;
Its syntax and some of its semantics might seem familiar to those who program in [[WikiPedia:C (Programming Language) |C]] or [[WikiPedia:Java_programming_language|Java]], it uses ECMA-Script syntax. In some ways it is more dynamic, e.g. supporting dynamicly joining and leaving of classes, and brings support for easy management of online game content.&lt;br /&gt;
&lt;br /&gt;
It is used for [[clientside]] tasks like [[GUI | GUI programming]], special effects and custom [[NPC weapon|weapons]], and [[serverside]] systems like player housing, complex baddies or pets.&lt;br /&gt;
&lt;br /&gt;
'''If you would like to contribute to the GraalBible's GScript documentation, you might want to [[Creation/Dev/GScript/Contribute|read this article]].'''&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
In your scripting quest, you may find the following articles to be of use:&lt;br /&gt;
&lt;br /&gt;
'''Basic information'''&lt;br /&gt;
* [[Creation/Dev/Script/Starting Guide|Starting Guide]]&lt;br /&gt;
* [[Creation/Dev/Script/Client|Functions, variables and objects (clientside)]] &lt;br /&gt;
* [[Image:Guicontrol_window.png|80px]] [[Creation/Dev/Script/Client/GuiControls_List|GUI Controls]]&lt;br /&gt;
&lt;br /&gt;
'''Tutorials'''&lt;br /&gt;
* [[Image:s_dummies.png|80px]] [[Creation/Dev/GScript/New Engine GScript for Dummies|New Engine GScript for Dummies]]&lt;br /&gt;
* [[Creation/Dev/Excalibur's scripting guide|Excalibur's Scripting Guide]]&lt;br /&gt;
&lt;br /&gt;
'''Specific Features'''&lt;br /&gt;
* [[Creation/Dev/GS1_To_GS2|GS1 To GS2: Guide for fixing scripts to work with the new engine]]&lt;br /&gt;
* [[Creation/Dev/Output Methods|Output methods]]&lt;br /&gt;
* [[Creation/Dev/Using Classes Effectively|Use of classes]]&lt;br /&gt;
* [[Creation/Dev/GScript/Constants|Constants]]&lt;br /&gt;
* [[Creation/Dev/GScript/Understanding GUI Profiles|GUI Features: Understanding GUI profiles]]&lt;br /&gt;
* [[Image:Guicontrol_tab.png]] [[Creation/Dev/Creating Tabbed Window Panes|Creating Tabbed Window Panes]]&lt;br /&gt;
* [[Particle Engine|Particle Engine]]&lt;br /&gt;
* [[Creation/Dev/Graal v4 IRC|Graal IRC Scripting: Graal IRC Scripting Reference]]&lt;br /&gt;
* [[Creation/Dev/Troubleshooting Graal v4 IRC|Graal IRC Scripting: Troubleshooting Scripting Reference]]&lt;br /&gt;
* [[Creation/Dev/Database_Communication|Indexed Database Communication]]&lt;br /&gt;
* [[Vectors]] (3D)&lt;br /&gt;
* [[Creation/Dev/wordFilter|Word Filter]]&lt;br /&gt;
* [[Creation/Dev/GScript/Stefan_Wisdom|Stefan Wisdom]]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1573674&amp;amp;postcount=6 Communicating with a webserver]&lt;br /&gt;
&lt;br /&gt;
'''Script Function List'''&lt;br /&gt;
&lt;br /&gt;
These are frequently updated, to get the latest list run Graal with the -listscriptfunctions option. You can also get help about script functions with the ''/scripthelp &amp;lt;string&amp;gt;'' command on RemoteControl chat.&lt;br /&gt;
* [[Creation/Dev/Script/Clientside_Functions|Client side]]&lt;br /&gt;
* [[Creation/Dev/Script Functions: NPC Server|Server side]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://skyld.vip.graal.net Old GScript Wiki] (404)&lt;br /&gt;
* [http://wiki.graal.us/Index New GScript Wiki]&lt;br /&gt;
* [http://resource.nukedstudios.com Twinny's Scripting Page]&lt;br /&gt;
* [[GScript IRC channel]] (non-official)&lt;br /&gt;
* [http://public.zodiacdev.com/index.php?title=Fowlplay4 Fowlplay4's tutorial]&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=17288</id>
		<title>Creation/Dev/GScript/Stefan Wisdom</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=17288"/>
		<updated>2010-09-04T21:05:24Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: Spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripting Reference]]&lt;br /&gt;
==Introduction==&lt;br /&gt;
Stefan is the only GScript wizard in existence. Sometimes he illuminates his inferiors in a post so wise it can be felt without having a browser running. Following is a list of forum posts in the Official Graal Communication Center.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
Stefan announcing new features etc.&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85395 getProcessCPUUsage, getProcessUptime, getMemoryUsage, getMemoryStatsObjects]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482284&amp;amp;postcount=4 Using SQLite]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85257 wordFilterText and stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=84926 urlencode and scripthelp wildcards]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=74042 Functions objects, anonymous functions]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=77464 npcnewstorage]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=134257836 onPlayerKilled(victim, killer), changing the level of offline players]&lt;br /&gt;
&lt;br /&gt;
==Regular posts==&lt;br /&gt;
Most of these are Stefan helping people. What a nice guy!&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1367596&amp;amp;postcount=9 Preventing GUI controls from stealing focus]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482479&amp;amp;postcount=17 commands.rtf equivalent for GS2]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1463493&amp;amp;postcount=11 Detailing when the params array is created]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1478088&amp;amp;postcount=13 Socket stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482324&amp;amp;postcount=23 Time formatting]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1391213&amp;amp;postcount=50 Observer mode events]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1466070&amp;amp;postcount=6 Dynamic variable names]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1486291&amp;amp;postcount=6 How to use triggerserver in regular NPCs]&lt;br /&gt;
* [http://forums.graalonline.com/forums/blog.php?b=90 Variable name lookup rules] (We can't link to blog comments, so scroll down a little)&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1491661&amp;amp;postcount=3 Some info on player.attr]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1491659&amp;amp;postcount=8 GuiDrawingPanel behaviour]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1490831&amp;amp;postcount=8 Performance changes when using multiple particle types]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1489653&amp;amp;postcount=23 Variable storage and unknown_object]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1494375&amp;amp;postcount=5 Making uneditable checkboxes that are also ticked]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1551589&amp;amp;postcount=5 Generating and reading XML]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1553783&amp;amp;postcount=5 requesturlasgamefile()]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1598789&amp;amp;postcount=9 Changing &amp;quot;sync distance&amp;quot; for individual players]&lt;br /&gt;
&lt;br /&gt;
==Disciples==&lt;br /&gt;
Posts made by disciples of Stefan or by people that Stefan has manifested himself to.&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1378058&amp;amp;postcount=10 Showing a gani at a certain frame]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1488119&amp;amp;postcount=9 onRemotePlayerChats]&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=17287</id>
		<title>Creation/Dev/GScript/Stefan Wisdom</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=17287"/>
		<updated>2010-09-04T21:04:35Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: &amp;quot;Synch distance&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripting Reference]]&lt;br /&gt;
==Introduction==&lt;br /&gt;
Stefan is the only GScript wizard in existence. Sometimes he illuminates his inferiors in a post so wise it can be felt without having a browser running. Following is a list of forum posts in the Official Graal Communication Center.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
Stefan announcing new features etc.&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85395 getProcessCPUUsage, getProcessUptime, getMemoryUsage, getMemoryStatsObjects]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482284&amp;amp;postcount=4 Using SQLite]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85257 wordFilterText and stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=84926 urlencode and scripthelp wildcards]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=74042 Functions objects, anonymous functions]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=77464 npcnewstorage]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=134257836 onPlayerKilled(victim, killer), changing the level of offline players]&lt;br /&gt;
&lt;br /&gt;
==Regular posts==&lt;br /&gt;
Most of these are Stefan helping people. What a nice guy!&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1367596&amp;amp;postcount=9 Preventing GUI controls from stealing focus]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482479&amp;amp;postcount=17 commands.rtf equivalent for GS2]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1463493&amp;amp;postcount=11 Detailing when the params array is created]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1478088&amp;amp;postcount=13 Socket stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482324&amp;amp;postcount=23 Time formatting]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1391213&amp;amp;postcount=50 Observer mode events]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1466070&amp;amp;postcount=6 Dynamic variable names]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1486291&amp;amp;postcount=6 How to use triggerserver in regular NPCs]&lt;br /&gt;
* [http://forums.graalonline.com/forums/blog.php?b=90 Variable name lookup rules] (We can't link to blog comments, so scroll down a little)&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1491661&amp;amp;postcount=3 Some info on player.attr]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1491659&amp;amp;postcount=8 GuiDrawingPanel behaviour]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1490831&amp;amp;postcount=8 Performance changes when using multiple particle types]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1489653&amp;amp;postcount=23 Variable storage and unknown_object]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1494375&amp;amp;postcount=5 Making uneditable checkboxes that are also ticked]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1551589&amp;amp;postcount=5 Generating and reading XML]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1553783&amp;amp;postcount=5 requesturlasgamefile()]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1598789&amp;amp;postcount=9 Changing &amp;quot;synch distance&amp;quot; for individual players]&lt;br /&gt;
&lt;br /&gt;
==Disciples==&lt;br /&gt;
Posts made by disciples of Stefan or by people that Stefan has manifested himself to.&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1378058&amp;amp;postcount=10 Showing a gani at a certain frame]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1488119&amp;amp;postcount=9 onRemotePlayerChats]&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=14239</id>
		<title>Creation/Dev/GScript/Stefan Wisdom</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=14239"/>
		<updated>2010-02-02T17:00:38Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Regular posts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripting Reference]]&lt;br /&gt;
==Introduction==&lt;br /&gt;
Stefan is the only GScript wizard in existence. Sometimes he illuminates his inferiors in a post so wise it can be felt without having a browser running. Following is a list of forum posts in the Official Graal Communication Center.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
Stefan announcing new features etc.&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85395 getProcessCPUUsage, getProcessUptime, getMemoryUsage, getMemoryStatsObjects]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482284&amp;amp;postcount=4 Using SQLite]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85257 wordFilterText and stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=84926 urlencode and scripthelp wildcards]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=74042 Functions objects, anonymous functions]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=77464 npcnewstorage]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=134257836 onPlayerKilled(victim, killer), changing the level of offline players]&lt;br /&gt;
&lt;br /&gt;
==Regular posts==&lt;br /&gt;
Most of these are Stefan helping people. What a nice guy!&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1367596&amp;amp;postcount=9 Preventing GUI controls from stealing focus]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482479&amp;amp;postcount=17 commands.rtf equivalent for GS2]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1463493&amp;amp;postcount=11 Detailing when the params array is created]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1478088&amp;amp;postcount=13 Socket stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482324&amp;amp;postcount=23 Time formatting]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1391213&amp;amp;postcount=50 Observer mode events]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1466070&amp;amp;postcount=6 Dynamic variable names]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1486291&amp;amp;postcount=6 How to use triggerserver in regular NPCs]&lt;br /&gt;
* [http://forums.graalonline.com/forums/blog.php?b=90 Variable name lookup rules] (We can't link to blog comments, so scroll down a little)&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1491661&amp;amp;postcount=3 Some info on player.attr]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1491659&amp;amp;postcount=8 GuiDrawingPanel behaviour]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1490831&amp;amp;postcount=8 Performance changes when using multiple particle types]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1489653&amp;amp;postcount=23 Variable storage and unknown_object]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1494375&amp;amp;postcount=5 Making uneditable checkboxes that are also ticked]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1551589&amp;amp;postcount=5 Generating and reading XML]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1553783&amp;amp;postcount=5 requesturlasgamefile()]&lt;br /&gt;
&lt;br /&gt;
==Disciples==&lt;br /&gt;
Posts made by disciples of Stefan or by people that Stefan has manifested himself to.&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1378058&amp;amp;postcount=10 Showing a gani at a certain frame]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1488119&amp;amp;postcount=9 onRemotePlayerChats]&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=14237</id>
		<title>Creation/Dev/GScript/Stefan Wisdom</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=14237"/>
		<updated>2010-02-01T18:41:47Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Announcements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripting Reference]]&lt;br /&gt;
==Introduction==&lt;br /&gt;
Stefan is the only GScript wizard in existence. Sometimes he illuminates his inferiors in a post so wise it can be felt without having a browser running. Following is a list of forum posts in the Official Graal Communication Center.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
Stefan announcing new features etc.&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85395 getProcessCPUUsage, getProcessUptime, getMemoryUsage, getMemoryStatsObjects]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482284&amp;amp;postcount=4 Using SQLite]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85257 wordFilterText and stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=84926 urlencode and scripthelp wildcards]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=74042 Functions objects, anonymous functions]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=77464 npcnewstorage]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=134257836 onPlayerKilled(victim, killer), changing the level of offline players]&lt;br /&gt;
&lt;br /&gt;
==Regular posts==&lt;br /&gt;
Most of these are Stefan helping people. What a nice guy!&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1367596&amp;amp;postcount=9 Preventing GUI controls from stealing focus]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482479&amp;amp;postcount=17 commands.rtf equivalent for GS2]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1463493&amp;amp;postcount=11 Detailing when the params array is created]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1478088&amp;amp;postcount=13 Socket stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482324&amp;amp;postcount=23 Time formatting]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1391213&amp;amp;postcount=50 Observer mode events]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1466070&amp;amp;postcount=6 Dynamic variable names]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1486291&amp;amp;postcount=6 How to use triggerserver in regular NPCs]&lt;br /&gt;
* [http://forums.graalonline.com/forums/blog.php?b=90 Variable name lookup rules] (We can't link to blog comments, so scroll down a little)&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1491661&amp;amp;postcount=3 Some info on player.attr]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1491659&amp;amp;postcount=8 GuiDrawingPanel behaviour]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1490831&amp;amp;postcount=8 Performance changes when using multiple particle types]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1489653&amp;amp;postcount=23 Variable storage and unknown_object]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1494375&amp;amp;postcount=5 Making uneditable checkboxes that are also ticked]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1551589&amp;amp;postcount=5 Generating and reading XML]&lt;br /&gt;
&lt;br /&gt;
==Disciples==&lt;br /&gt;
Posts made by disciples of Stefan or by people that Stefan has manifested himself to.&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1378058&amp;amp;postcount=10 Showing a gani at a certain frame]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1488119&amp;amp;postcount=9 onRemotePlayerChats]&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=News/2010/January&amp;diff=14187</id>
		<title>News/2010/January</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=News/2010/January&amp;diff=14187"/>
		<updated>2010-01-22T14:51:44Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* January */ This is now a wiki-war.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:News]]&lt;br /&gt;
&lt;br /&gt;
=== January ===&lt;br /&gt;
* '''January 22nd''' - '''Maloria''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
As our second Preview time is running towards an end, we feel as if we've accomplished a fair bit in comparison to what we set out to do. We've gotten a fair amount of bugs regarding gameplay fixed, and the remaining few shouldn't last too long. I'd like to thank the players who continuously logged on to check for updates and help us with testing, couldn't have done it as good without you!&lt;br /&gt;
&lt;br /&gt;
We're currently planning out how we want the world to look like as well as where the player needs to go and when. After that has been done, we'll be working on area by area until we have enough content to actually sustain gameplay. System wise everything of huge importance is completed, so we're looking forward to making the world playable.&lt;br /&gt;
&lt;br /&gt;
Currently players have access to the (temporary) starting area which leads you to D'unhyl Town after completing a quest to slay a couple of blobs. This town will most probably remain as one of the very first areas that players encounter. Our current focus lays on finishing it up and adding the next couple of quests that will lead you to slay a certain Brood Mother in D'unhyl Forest, but more about that some other time!&lt;br /&gt;
&lt;br /&gt;
I'd like to bring to light that yes, we are very much looking for development help. Mainly in the graphical section, but also when it comes to levels. Do note that if you are interested in helping us with the latter, you need to be able to work with '''Gonstruct''' since all of our levels will be made using tilelayers, and the normal editor is not capable of supporting them. We'd be happy to help you understand how it works though, of course.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you'd like to contact us about anything at all, you can either poke us when we're online, or leave us a message at www.maloria.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''January 15th''' - '''WARNING'''&lt;br /&gt;
&lt;br /&gt;
There is a new phishing scam out there targeting your Graal account information via email. It claims to be from the Graal Administration Account Information Team. This is not an email from us. We will never request your password under any circumstances. Please do not respond to these emails. &lt;br /&gt;
-Bell Accounts Administrator&lt;br /&gt;
&lt;br /&gt;
* '''January 15th''' - '''Zone Roll''' {{News/Zone}}&lt;br /&gt;
Press F + arrow key to roll into any direction, even diagonally! Use it to dodge attacks and bullets.&lt;br /&gt;
&lt;br /&gt;
* '''January 8th''' - '''Version 6 beta test''' {{News/General}}&lt;br /&gt;
The closed beta test for the new version on Windows and Linux has started, so there are now advanced versions for all platforms including Mac and the official version should be ready in a few weeks.&lt;br /&gt;
&lt;br /&gt;
* '''January 1st''' - '''Noctorious''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
[[Image:NoctoriousNews1January2010.png]]&lt;br /&gt;
&lt;br /&gt;
Noctorious is a modern based server, where you can do just about anything.&lt;br /&gt;
The server has been closed for sometime and has now been reopend and many things have changed and have been finished. At this time Noctorious is in the beta stages, so while you are playing will notice changes/updates being made.There are also a few things you can do while playing, such as Fishing or Delivering Crates to make money or even shoveling. You could also buy shops or condos or maybe even join a gang.. but thats your choice to make not ares...&lt;br /&gt;
&lt;br /&gt;
We hope that you all enjoy the server and if you need any help feel free to contact the staff.&lt;br /&gt;
&lt;br /&gt;
* '''January 1st''' - '''Happy New Year from GraalOnline''' {{News/General}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Newyearnews2010.png]]&lt;br /&gt;
&lt;br /&gt;
The GraalOnline team would like to wish you a happy new year! In 2009 we have seen a vast amount server improvements and updates as well as the advancements in Graal using iPhone technology, may 2010 be as exciting as 2009 and hope to see a happy future for GraalOnline.&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=News/2010/January&amp;diff=14185</id>
		<title>News/2010/January</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=News/2010/January&amp;diff=14185"/>
		<updated>2010-01-22T14:16:36Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* January */ I LOL'd at &amp;quot;January 22st&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:News]]&lt;br /&gt;
&lt;br /&gt;
=== January ===&lt;br /&gt;
* '''January 22nd''' - '''Maloria''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
As our second Preview time is running towards an end, we feel as if we've accomplished a fair bit in comparison to what we set out to do. We've gotten a fair amount of bugs regarding gameplay fixed, and the remaining few shouldn't last too long. I'd like to thank the players who continuously logged on to check for updates and help us with testing, couldn't have done it as good without you!&lt;br /&gt;
&lt;br /&gt;
We're currently planning out how we want the world to look like, and where the player should need to go when. After that has been done, we'll be working on area by area until we have enough content to actually sustain gameplay. System wise everything of huge importance is completed, so we're looking forward to making the world playable.&lt;br /&gt;
&lt;br /&gt;
Currently players have access to the (temporary) starting area which leads you to D'unhyl Town after completing a quest to slay a couple of blobs. This town will most probably remain as one of the very first areas that players encounter. Our current focus lays on finishing it up and adding the next couple of quests that will lead you to slay a certain Brood Mother in D'unhyl Forest, but more about that some other time!&lt;br /&gt;
&lt;br /&gt;
I'd like to bring to light that yes, we are very much looking for development help. Mainly in the graphical section, but also when it comes to levels. Do note that if you are interested in helping us with the latter, you need to be able to work with '''Gonstruct''' since all of our levels will be made using tilelayers, and the normal editor is not capable of supporting them. We'd be happy to help you understand how it works though, of course.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you'd like to contact us about anything at all, you can either poke us when we're online, or leave us a message at www.maloria.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''January 15th''' - '''WARNING'''&lt;br /&gt;
&lt;br /&gt;
There is a new phishing scam out there targeting your Graal account information via email. It claims to be from the Graal Administration Account Information Team. This is not an email from us. We will never request your password under any circumstances. Please do not respond to these emails. &lt;br /&gt;
-Bell Accounts Administrator&lt;br /&gt;
&lt;br /&gt;
* '''January 15th''' - '''Zone Roll''' {{News/Zone}}&lt;br /&gt;
Press F + arrow key to roll into any direction, even diagonally! Use it to dodge attacks and bullets.&lt;br /&gt;
&lt;br /&gt;
* '''January 8th''' - '''Version 6 beta test''' {{News/General}}&lt;br /&gt;
The closed beta test for the new version on Windows and Linux has started, so there are now advanced versions for all platforms including Mac and the official version should be ready in a few weeks.&lt;br /&gt;
&lt;br /&gt;
* '''January 1st''' - '''Noctorious''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
[[Image:NoctoriousNews1January2010.png]]&lt;br /&gt;
&lt;br /&gt;
Noctorious is a modern based server, where you can do just about anything.&lt;br /&gt;
The server has been closed for sometime and has now been reopend and many things have changed and have been finished. At this time Noctorious is in the beta stages, so while you are playing will notice changes/updates being made.There are also a few things you can do while playing, such as Fishing or Delivering Crates to make money or even shoveling. You could also buy shops or condos or maybe even join a gang.. but thats your choice to make not ares...&lt;br /&gt;
&lt;br /&gt;
We hope that you all enjoy the server and if you need any help feel free to contact the staff.&lt;br /&gt;
&lt;br /&gt;
* '''January 1st''' - '''Happy New Year from GraalOnline''' {{News/General}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Newyearnews2010.png]]&lt;br /&gt;
&lt;br /&gt;
The GraalOnline team would like to wish you a happy new year! In 2009 we have seen a vast amount server improvements and updates as well as the advancements in Graal using iPhone technology, may 2010 be as exciting as 2009 and hope to see a happy future for GraalOnline.&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=14184</id>
		<title>Creation/Dev/GScript/Stefan Wisdom</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=14184"/>
		<updated>2010-01-22T07:47:30Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Regular posts */ XML&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripting Reference]]&lt;br /&gt;
==Introduction==&lt;br /&gt;
Stefan is the only GScript wizard in existence. Sometimes he illuminates his inferiors in a post so wise it can be felt without having a browser running. Following is a list of forum posts in the Official Graal Communication Center.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
Stefan announcing new features etc.&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85395 getProcessCPUUsage, getProcessUptime, getMemoryUsage, getMemoryStatsObjects]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482284&amp;amp;postcount=4 Using SQLite]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85257 wordFilterText and stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=84926 urlencode and scripthelp wildcards]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=74042 Functions objects, anonymous functions]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=77464 npcnewstorage]&lt;br /&gt;
&lt;br /&gt;
==Regular posts==&lt;br /&gt;
Most of these are Stefan helping people. What a nice guy!&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1367596&amp;amp;postcount=9 Preventing GUI controls from stealing focus]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482479&amp;amp;postcount=17 commands.rtf equivalent for GS2]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1463493&amp;amp;postcount=11 Detailing when the params array is created]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1478088&amp;amp;postcount=13 Socket stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482324&amp;amp;postcount=23 Time formatting]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1391213&amp;amp;postcount=50 Observer mode events]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1466070&amp;amp;postcount=6 Dynamic variable names]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1486291&amp;amp;postcount=6 How to use triggerserver in regular NPCs]&lt;br /&gt;
* [http://forums.graalonline.com/forums/blog.php?b=90 Variable name lookup rules] (We can't link to blog comments, so scroll down a little)&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1491661&amp;amp;postcount=3 Some info on player.attr]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1491659&amp;amp;postcount=8 GuiDrawingPanel behaviour]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1490831&amp;amp;postcount=8 Performance changes when using multiple particle types]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1489653&amp;amp;postcount=23 Variable storage and unknown_object]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1494375&amp;amp;postcount=5 Making uneditable checkboxes that are also ticked]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1551589&amp;amp;postcount=5 Generating and reading XML]&lt;br /&gt;
&lt;br /&gt;
==Disciples==&lt;br /&gt;
Posts made by disciples of Stefan or by people that Stefan has manifested himself to.&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1378058&amp;amp;postcount=10 Showing a gani at a certain frame]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1488119&amp;amp;postcount=9 onRemotePlayerChats]&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Category_talk:Articles_needing_expansion&amp;diff=13668</id>
		<title>Category talk:Articles needing expansion</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Category_talk:Articles_needing_expansion&amp;diff=13668"/>
		<updated>2009-10-22T15:32:01Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* User pages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== User pages ==&lt;br /&gt;
Can a user page really be a stub? -[[User:Cbk1994|Cbk1994]] 09:12, 21 October 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
No, they can't. -[[User:DrakilorP2P|DrakilorP2P]] 15:32, 22 October 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Talk:Creation/Dev/Script/Clientside_Functions&amp;diff=13667</id>
		<title>Talk:Creation/Dev/Script/Clientside Functions</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Talk:Creation/Dev/Script/Clientside_Functions&amp;diff=13667"/>
		<updated>2009-10-22T15:25:56Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: New page: Why is this page called &amp;quot;Clientside Functions&amp;quot; when half of it are actually variables?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Why is this page called &amp;quot;Clientside Functions&amp;quot; when half of it are actually variables?&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/Basics_of_NPC-Control&amp;diff=12944</id>
		<title>Creation/Dev/Basics of NPC-Control</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/Basics_of_NPC-Control&amp;diff=12944"/>
		<updated>2009-09-08T03:56:26Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Database NPC list */ Speeling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is NC? ==&lt;br /&gt;
[[NC]] stands for NPC-Control, which allows server administrators to control the [[NPC Server]], and to add, edit, update and delete scripts on a server. &lt;br /&gt;
&lt;br /&gt;
[[NC]] is a part of [[RC]] (the tool which server staff use to administrate servers), and requires the &amp;quot;NPC-Control&amp;quot; right on the server. When NC is active, you will find five NPC-Server related buttons inside your RC.&lt;br /&gt;
&lt;br /&gt;
== What are these buttons? ==&lt;br /&gt;
=== [[Image:rc_classlist_normal.png]] Class list ===&lt;br /&gt;
[[Image:Class_list.PNG]]&lt;br /&gt;
&lt;br /&gt;
The ''Class'' list brings up a list of all the classes currently saved on the NPC-Server. Classes are scripts on a server which can be brought into any other script, such as a level NPC, or a [[Putnpc2]] NPC.&lt;br /&gt;
&lt;br /&gt;
You can add scripts to the server by clicking the '''Add''' button, at which you will be asked to name the class. When you have named the class, you will then be given a window to put your script into. Clicking '''Apply''' will save your script, and place it in the Classes list, where you can return and modify your script at any time.&lt;br /&gt;
&lt;br /&gt;
If you want to delete a class, select it in the Class list and then press the Delete button.&lt;br /&gt;
&lt;br /&gt;
=== [[Image:rc_levellist_normal.png]] NPC Level list ===&lt;br /&gt;
The NPC Level list shows an editable list of levels, which are being served by the NPC-Server.&lt;br /&gt;
&lt;br /&gt;
=== [[Image:rc_localnpcs_normal.png]] Local NPC list === &lt;br /&gt;
The Local NPC list button, when clicked, asks for a level name. After entering a level name, the NC will give you information and statistics on NPCs in that level. A typical NPC may look like this.&lt;br /&gt;
&amp;lt;pre&amp;gt;Variables dump from npc Control-Train&lt;br /&gt;
&lt;br /&gt;
Control-Train.type: OBJECT&lt;br /&gt;
Control-Train.scripter: Skyld&lt;br /&gt;
Control-Train.level: era_skyldoffice.nw&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
Control-Train.image: &lt;br /&gt;
Control-Train.script: size: 1042&lt;br /&gt;
Control-Train.visibility flags: visible&lt;br /&gt;
Control-Train.id: 1008&lt;br /&gt;
Control-Train.head: &lt;br /&gt;
Control-Train.xprecise: 30.5&lt;br /&gt;
Control-Train.yprecise: 30&lt;br /&gt;
Control-Train.timeout: 0.22192&lt;br /&gt;
Control-Train.scripttime (in the last min): 0.003244&lt;br /&gt;
Control-Train.scriptcalls: 60&amp;lt;/pre&amp;gt;&lt;br /&gt;
These are all details related to the given NPC, such as it's present image, any visual statistics such as head, body, and colours, timeout, script size, timeouts and position. Variables in the NPC that were set on the serverside may also be shown here.&lt;br /&gt;
&lt;br /&gt;
This is quite a useful way of finding out details for NPCs in a level, in case you need to debug them.&lt;br /&gt;
&lt;br /&gt;
=== [[Image:rc_npclist_normal.png]] Database NPC list ===&lt;br /&gt;
The Database NPC list gives a list of [[Database NPCs]] on the server. Database NPCs have the capability to be anywhere on a server, they have their own identity (#N) and have the ability inside NC to allow the user to modify its flags and script.&lt;br /&gt;
&lt;br /&gt;
Like classes, you can add a new Database NPC by clicking the '''Add''' button, which will present you with a screen like this.&lt;br /&gt;
&lt;br /&gt;
[[Image:Dbnpc_addwindow.PNG]]&lt;br /&gt;
&lt;br /&gt;
Here, you can specify various things about the NPC, such as it's ''Name'' ID, it's script ID, the type of NPC (mainly for identification purposes), the scripter's name and it's default level, X and Y.&lt;br /&gt;
&lt;br /&gt;
The names and IDs '''must''' be unique when creating a Database NPC.&lt;br /&gt;
&lt;br /&gt;
When you create your NPC, it will be added to the Database NPC list, and from here, you can start to work with it. Right-clicking a Database NPC will give you a menu that looks like this.&lt;br /&gt;
&lt;br /&gt;
[[Image:Dbnpc_selectmenu.PNG]]&lt;br /&gt;
&lt;br /&gt;
From here, you can:&lt;br /&gt;
* '''View Attributes''' which shows attributes of the NPC, like the Local NPC list does&lt;br /&gt;
* '''Edit Script''' which allows you to edit the script for the database NPC&lt;br /&gt;
* '''Edit Flags''' which allows you to modify the ''this.'' flags for the database NPC&lt;br /&gt;
* '''Reset''' which clears the ''this.'' flags of the NPC, warps it to it's default location and restarts script execution&lt;br /&gt;
* '''Delete''' which removes the Database NPC and its flags from the server&lt;br /&gt;
* '''Warp''' which asks for a new location to position the Database NPC at &lt;br /&gt;
* '''Update Level''' which instructs the server to update the level that the Database NPC is in.&lt;br /&gt;
&lt;br /&gt;
=== [[Image:rc_weaponlist_normal.png]] Weapon NPC list ===&lt;br /&gt;
[[Image:Weapons_list.PNG]]&lt;br /&gt;
&lt;br /&gt;
The weapons list contains a list of all the weapon scripts on the server. Weapon NPCs can be added to players, and appear in the Weapon Select.&lt;br /&gt;
&lt;br /&gt;
Like Classes, you can add new weapons by clicking '''Add''' and specifying a name. Then you can save a script into NC and add it into the player's attributes.&lt;br /&gt;
&lt;br /&gt;
You can re-edit a weapon NPC by selecting it in the Weapons list and clicking '''Edit''', or deleting by clicking '''Delete'''.&lt;br /&gt;
&lt;br /&gt;
Weapon NPCs also accept an '''Image''', which can be set at the top of the Script Editing window, and will give the weapon an icon to display in the player's Weapon Select.&lt;br /&gt;
&lt;br /&gt;
== RC Commands ==&lt;br /&gt;
There are a couple of &amp;quot;RC Commands&amp;quot; which allow control over the NPC-Server. To use them, simply type them into RC. The main ones are as follows:&lt;br /&gt;
* '''/savenpcs''' which saves a copy of NPC-Server NPCs into the database. The NPC-Server must be online for this command to work.&lt;br /&gt;
* '''/npcstart''' which instructs the NPC-Server to start, if it has not done so already.&lt;br /&gt;
* '''/npcshutdown''' which instructs the NPC-Server to shut down, say, for a restart.&lt;br /&gt;
* '''/npckill''' can be used to kill the NPC-Server in case there was a scripting problem that completely froze the server or /npcstart is not working. Using this command will mean that the data of the last few minutes will be lost, so it is preferred to use /npcshutdown if possible.&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/Basics_of_NPC-Control&amp;diff=12937</id>
		<title>Creation/Dev/Basics of NPC-Control</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/Basics_of_NPC-Control&amp;diff=12937"/>
		<updated>2009-09-08T02:57:17Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Database NPC list */ Spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is NC? ==&lt;br /&gt;
[[NC]] stands for NPC-Control, which allows server administrators to control the [[NPC Server]], and to add, edit, update and delete scripts on a server. &lt;br /&gt;
&lt;br /&gt;
[[NC]] is a part of [[RC]] (the tool which server staff use to administrate servers), and requires the &amp;quot;NPC-Control&amp;quot; right on the server. When NC is active, you will find five NPC-Server related buttons inside your RC.&lt;br /&gt;
&lt;br /&gt;
== What are these buttons? ==&lt;br /&gt;
=== [[Image:rc_classlist_normal.png]] Class list ===&lt;br /&gt;
[[Image:Class_list.PNG]]&lt;br /&gt;
&lt;br /&gt;
The ''Class'' list brings up a list of all the classes currently saved on the NPC-Server. Classes are scripts on a server which can be brought into any other script, such as a level NPC, or a [[Putnpc2]] NPC.&lt;br /&gt;
&lt;br /&gt;
You can add scripts to the server by clicking the '''Add''' button, at which you will be asked to name the class. When you have named the class, you will then be given a window to put your script into. Clicking '''Apply''' will save your script, and place it in the Classes list, where you can return and modify your script at any time.&lt;br /&gt;
&lt;br /&gt;
If you want to delete a class, select it in the Class list and then press the Delete button.&lt;br /&gt;
&lt;br /&gt;
=== [[Image:rc_levellist_normal.png]] NPC Level list ===&lt;br /&gt;
The NPC Level list shows an editable list of levels, which are being served by the NPC-Server.&lt;br /&gt;
&lt;br /&gt;
=== [[Image:rc_localnpcs_normal.png]] Local NPC list === &lt;br /&gt;
The Local NPC list button, when clicked, asks for a level name. After entering a level name, the NC will give you information and statistics on NPCs in that level. A typical NPC may look like this.&lt;br /&gt;
&amp;lt;pre&amp;gt;Variables dump from npc Control-Train&lt;br /&gt;
&lt;br /&gt;
Control-Train.type: OBJECT&lt;br /&gt;
Control-Train.scripter: Skyld&lt;br /&gt;
Control-Train.level: era_skyldoffice.nw&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
Control-Train.image: &lt;br /&gt;
Control-Train.script: size: 1042&lt;br /&gt;
Control-Train.visibility flags: visible&lt;br /&gt;
Control-Train.id: 1008&lt;br /&gt;
Control-Train.head: &lt;br /&gt;
Control-Train.xprecise: 30.5&lt;br /&gt;
Control-Train.yprecise: 30&lt;br /&gt;
Control-Train.timeout: 0.22192&lt;br /&gt;
Control-Train.scripttime (in the last min): 0.003244&lt;br /&gt;
Control-Train.scriptcalls: 60&amp;lt;/pre&amp;gt;&lt;br /&gt;
These are all details related to the given NPC, such as it's present image, any visual statistics such as head, body, and colours, timeout, script size, timeouts and position. Variables in the NPC that were set on the serverside may also be shown here.&lt;br /&gt;
&lt;br /&gt;
This is quite a useful way of finding out details for NPCs in a level, in case you need to debug them.&lt;br /&gt;
&lt;br /&gt;
=== [[Image:rc_npclist_normal.png]] Database NPC list ===&lt;br /&gt;
The Database NPC list gives a list of [[Database NPCs]] on the server. Database NPCs have the capability to be anywhere on a server, they have their own identity (#N) and have the ability inside NC to allow the user to modify its flags and script.&lt;br /&gt;
&lt;br /&gt;
Like classes, you can add a new Database NPC by clicking the '''Add''' button, which will present you with a screen like this.&lt;br /&gt;
&lt;br /&gt;
[[Image:Dbnpc_addwindow.PNG]]&lt;br /&gt;
&lt;br /&gt;
Here, you can specify various things about the NPC, such as it's ''Name'' ID, it's script ID, the type of NPC (mainly for identification purposes), the scripter's name and it's default level, X and Y.&lt;br /&gt;
&lt;br /&gt;
The names and IDs '''must''' be unique when creating a Database NPC.&lt;br /&gt;
&lt;br /&gt;
When you create your NPC, it will be added to the Database NPC list, and from here, you can start to work with it. Right-clicking a Database NPC will give you a menu that looks like this.&lt;br /&gt;
&lt;br /&gt;
[[Image:Dbnpc_selectmenu.PNG]]&lt;br /&gt;
&lt;br /&gt;
From here, you can:&lt;br /&gt;
* '''View Attributes''' which shows attributes of the NPC, like the Local NPC list does&lt;br /&gt;
* '''Edit Script''' which allows you to edit the script for the database NPC&lt;br /&gt;
* '''Edit Flags''' which allows you to modify the ''this.'' flags for the database NPC&lt;br /&gt;
* '''Reset''' which clears the ''this.'' flags of the NPC, warps it to it's default location and restarts script execution&lt;br /&gt;
* '''Delete''' which removes the Database NPC and it's flags from the server&lt;br /&gt;
* '''Warp''' which asks for a new location to position the Database NPC at &lt;br /&gt;
* '''Update Level''' which instructs the server to update the level that the Database NPC is in.&lt;br /&gt;
&lt;br /&gt;
=== [[Image:rc_weaponlist_normal.png]] Weapon NPC list ===&lt;br /&gt;
[[Image:Weapons_list.PNG]]&lt;br /&gt;
&lt;br /&gt;
The weapons list contains a list of all the weapon scripts on the server. Weapon NPCs can be added to players, and appear in the Weapon Select.&lt;br /&gt;
&lt;br /&gt;
Like Classes, you can add new weapons by clicking '''Add''' and specifying a name. Then you can save a script into NC and add it into the player's attributes.&lt;br /&gt;
&lt;br /&gt;
You can re-edit a weapon NPC by selecting it in the Weapons list and clicking '''Edit''', or deleting by clicking '''Delete'''.&lt;br /&gt;
&lt;br /&gt;
Weapon NPCs also accept an '''Image''', which can be set at the top of the Script Editing window, and will give the weapon an icon to display in the player's Weapon Select.&lt;br /&gt;
&lt;br /&gt;
== RC Commands ==&lt;br /&gt;
There are a couple of &amp;quot;RC Commands&amp;quot; which allow control over the NPC-Server. To use them, simply type them into RC. The main ones are as follows:&lt;br /&gt;
* '''/savenpcs''' which saves a copy of NPC-Server NPCs into the database. The NPC-Server must be online for this command to work.&lt;br /&gt;
* '''/npcstart''' which instructs the NPC-Server to start, if it has not done so already.&lt;br /&gt;
* '''/npcshutdown''' which instructs the NPC-Server to shut down, say, for a restart.&lt;br /&gt;
* '''/npckill''' can be used to kill the NPC-Server in case there was a scripting problem that completely froze the server or /npcstart is not working. Using this command will mean that the data of the last few minutes will be lost, so it is preferred to use /npcshutdown if possible.&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=News/2009/August&amp;diff=12587</id>
		<title>News/2009/August</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=News/2009/August&amp;diff=12587"/>
		<updated>2009-08-28T04:23:12Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* August */ Spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== August ===&lt;br /&gt;
&lt;br /&gt;
* '''August 27th''' - '''Zenkou Awakens''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
[[Image:ZenkouNews27August2009.png]]&lt;br /&gt;
&lt;br /&gt;
Zenkou has taken the initiative and gone forth to materialize some of the most interesting ideas on Graal. Currently visible are the Graphical User Interface (GUI), originally scripted in GS1 before the release of Graal 3 and the use of GuiControls. It is unique in that it snaps to objects, is draggable, and acted like windows in a window, before it was so easily done. The soon-to-come GUI v4 will be scripted in it entirety in GS2 and will use the new engine to its full potential in making a complex script, as one might imagine it might be, into something more functional and compact.&lt;br /&gt;
&lt;br /&gt;
Zenkou is proud to present its up-and-coming attraction, simply referred to as &amp;quot;the battle system.&amp;quot; It is a turn-based system resembling that of Final Fantasy, and employs an algorithm in determining the order on a basis of speed. The system is functional and is in the final development stages before being released into the public.&lt;br /&gt;
&lt;br /&gt;
A very interesting aspect of the game is the ability to change one's outfit using the Outfit tool, which allows you to preview, save, and delete any outfit that one might want to use. The server does not use the old characteristic-changing method found in other servers' &amp;quot;Taylor&amp;quot; systems, but rather displays it graphically.&lt;br /&gt;
Mouse-Control.&lt;br /&gt;
&lt;br /&gt;
Zenkou is revolutionary in that most of the server can be controlled by mouse click-and-drag. There is not a server out there that can brag the same mouse-control as Zenkou.&lt;br /&gt;
&lt;br /&gt;
* '''August 27th''' - '''Graal Kingdoms Soccer Match - Dustari Vs Crescent Pirates''' {{News/Graal_Kingdoms}}&lt;br /&gt;
&lt;br /&gt;
[[Image:DustariVsPiratesSoccer27August2009.png]]&lt;br /&gt;
&lt;br /&gt;
Dustari got off to a quick start by scoring 3 unanswered goals within the first 4 minutes of the match. The Crescent Pirates battled back with a flurry of goals to win the first half 6:5. Dustari got off to another flying start in the second half scoring 4 goal in quick succession despite the Crescent Pirate attack managing to bring the game to a close 12:10, Dustari managed to catch another 2 goals to ruin any chance of a come back. The final score for the match was 14:10 to Dustari.&lt;br /&gt;
&lt;br /&gt;
* '''August 22nd''' - '''Graal Kingdoms - Spar Tournament''' {{News/Graal_Kingdoms}}&lt;br /&gt;
&lt;br /&gt;
[[Image:GraalKingdomsNews21August2009.png]]&lt;br /&gt;
&lt;br /&gt;
This Saturday comes one of the best events in the Kingdoms. A good old fashioned sparring tournament. This Saturday at 6:00 PM EST people will gather from all the islands to pit their strength and skill against one another in a brutal fight for a great prize.&lt;br /&gt;
&lt;br /&gt;
* '''August 17th''' - '''Era Support Center''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
Era's staff team have released a new in-game Support Center! This is to resolve the complaints of the unanswered PMs, problems unsolved, etc. This will hopefully help ensure that questions directed towards staff members are answered quickly.&lt;br /&gt;
&lt;br /&gt;
Along with the support center comes the removal of FAQs, and the switch from GP to Player Relations staff. You can contact the Player Relations team for both FAQ and police-related problems. The reason for the switch is because they will be doing more than just &amp;quot;police&amp;quot; work, and &amp;quot;Player Relations&amp;quot; is much easier to identify as someone who is there to help than &amp;quot;GP&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
To open the Support Center click F11 on your keyboard and this box will appear. &lt;br /&gt;
&lt;br /&gt;
[[Image:EraNews17August2009.png]]&lt;br /&gt;
&lt;br /&gt;
You can report any GP related information but you can also report things such as.&lt;br /&gt;
*Bug reports&lt;br /&gt;
*Complaints about staff or development&lt;br /&gt;
*Ideas and suggestions&lt;br /&gt;
*Problems with gangs/businesses&lt;br /&gt;
*Any other problem that requires real attention&lt;br /&gt;
*FAQ&lt;br /&gt;
&lt;br /&gt;
Discussion about this new Support Center is [http://forums.graalonline.com/forums/showthread.php?t=87404 here].&lt;br /&gt;
&lt;br /&gt;
* '''August 16th''' - '''Atrius News''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
After a long journey, Atrius is preparing for an even larger step. Atrius plans to apply for Classic and would love support from the community. Many new exciting features have been added, and a few of these ideas include armies, helicopters and tanks. Other interesting additions are businesses and the release of over 25 weapons, 30 new outfits, and 10 new events. &lt;br /&gt;
&lt;br /&gt;
[[Image:AtriusNews15august2009.png]]&lt;br /&gt;
&lt;br /&gt;
We hope you will enjoy our work, but the only way to enjoy our work is by checking Atrius out. Atrius isn't done, since the journey from hosted to classic isn't easy. Atrius also is looking to hire one scripter, two graphic artists, two level designers, and two Graal animation artists. If you are interested in applying, please speak to TheJames (Manager). We hope to see you on Atrius, and hope to have your support with our classic venture!&lt;br /&gt;
&lt;br /&gt;
-Atrius Staff Team&lt;br /&gt;
&lt;br /&gt;
* '''August 16th''' - '''Era - Battle of the Bands II''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:Era_BoB2.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the third time you've seen this stage on the news, by now you know there's only one thing that can be happening: Era's hosting another Battle of the Bands! On '''Sunday, August 16th''' at '''3:00 PM EST''', the Comic Club will play host to a contest of rock 'n roll skill, the likes of which have been seen only once before. Free admittance will be granted to those arriving before 3:00, so be sure you're in and seated early! Players can begin signing up near the event house, renting instruments at the Comic Club, and rocking out in the practice rooms immediately!&lt;br /&gt;
&lt;br /&gt;
* '''August 15th''' - '''Graal Kingdoms Monster Siege: Skeleton Crew''' {{News/Graal_Kingdoms}}&lt;br /&gt;
[[Image:Skeletons.png]]&lt;br /&gt;
&lt;br /&gt;
The monsters have lost their riches and are now angry for revenge. Spies have detected several ships flying the Jolly Roger approaching the Crescent Pirates. The bad news is these aren't pirates. The ships are manned by skeletons, and lots of them. Ghost ships if you will.&lt;br /&gt;
&lt;br /&gt;
They'll be in pirate waters Saturday at 5:00 PM EST, 6:30 if there's bad weather. Skilled adventurers will be need to sail the seas and intercept these ships while the less experienced guard the shores against the few that make it through.&lt;br /&gt;
&lt;br /&gt;
Sinking these ships are a bad idea. These skeletons are -supposed- to be highly trained but they don't seem to have been using their training brutals. There should still be several of them lying around in the holds.&lt;br /&gt;
&lt;br /&gt;
* '''August 9th''' - '''New Zone Outfits''' {{News/Zone}}&lt;br /&gt;
&lt;br /&gt;
[[Image:ZoneNews080909.PNG]]&lt;br /&gt;
&lt;br /&gt;
New heads and bodies have been added to the Zone outfit selectors. Along with the new heads and bodies, we are announcing an event for this coming weekend! Saturday, August 15th, there will be an event hosted by MagikMasterMind. More information about the event will be posted during the week in [http://forums.graalonline.com/forums/showthread.php?p=1513560#post1513560 this thread].  &lt;br /&gt;
&lt;br /&gt;
* '''August 7th''' - '''Graal Kingdoms Monster Siege: The Wealthy Dungeons''' {{News/Graal_Kingdoms}}&lt;br /&gt;
&lt;br /&gt;
[[Image:G2k2news08_07_2009.png]]&lt;br /&gt;
&lt;br /&gt;
Not very many people know what's going on. Monsters are amassing for a series of gigantic attacks. They are tired of being kicked around. They long for the days when the meteor first crashed and they chased the kingdoms off to their puny islands. Now they seek to bring the war to them.&lt;br /&gt;
&lt;br /&gt;
The preparations have been kept secret, out of public eye. Only a few adventurers have been enlisted to help learn of their plans, but now they move in larger forces and the prizes of victory are on the rise.&lt;br /&gt;
&lt;br /&gt;
Even monsters need wealth to fund a war. It's been discovered where they're keeping the treasury. Now everyone who's interested is enlisted in the war effort to raise up arms and strike them where it hurts. Be there on '''Saturday, August 8th''' at '''5:00 PM EST'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''August 3rd''' - '''Zodiac V2 Updates''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Zodiacnewsimage.png]]&lt;br /&gt;
&lt;br /&gt;
Zodiac's staff team is still working hard. The version 2 updates are showing excellent progress and the server is continually improving. Not only have the new item system and quest system been completed, but the game formulas have been modified to be easier to understand and the Prestiege classes have been removed. Equipment slots have been added and improvements have been made to Zodiac's core systems. Another notable change is the new image for the HUD, and, of course, the new graphical interfaces for many of the core system scripts, such as Trade, Shops, etc. More information about the Zodiac V2 progress can be found on the [http://forums.graalonline.com/forums/showthread.php?t=87043 forums]. &lt;br /&gt;
&lt;br /&gt;
* '''August 2nd''' - '''Graal Kingdoms Derby - The Final''' {{News/Graal_Kingdoms}}&lt;br /&gt;
&lt;br /&gt;
[[Image:GraalKingdomsDerby2009v2.png]]&lt;br /&gt;
&lt;br /&gt;
The final of the 2009 Graal Kingdoms Derby was a success with many of the people taking part having great fun but especially for the three winners. Storm Leonhart blow away the competition racking up 80 points over the 6 races with Craigus close behind gaining 40 points. The third place goes to Felix Lionheart with only 30 points gained.&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript/Constants&amp;diff=12519</id>
		<title>Creation/Dev/GScript/Constants</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript/Constants&amp;diff=12519"/>
		<updated>2009-08-07T22:26:36Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: Spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As one might be able to deduce, a '''constant''' has a single value and will retain that value as long as that constant exists. A constant is ''not'' a variable for one very important reason: its value is not variable!&lt;br /&gt;
&lt;br /&gt;
A constant is only accessible in the script where you have defined it, they&lt;br /&gt;
are not shared between the server-side and client-side parts either.&lt;br /&gt;
&lt;br /&gt;
== Constants defined by keyword 'const' ==&lt;br /&gt;
&lt;br /&gt;
 const intVar = temp.val; // will not work, temp.val is not constant&lt;br /&gt;
 const intVar = 3;&lt;br /&gt;
 intVar = 4; // will not work&lt;br /&gt;
 player.chat = intVar; // displays 3&lt;br /&gt;
&lt;br /&gt;
The value of the constant cannot change even in conjunction with the use of the &amp;quot;=&amp;quot; operator. This is the power of a constant. However, player.variables cannot be defined as a constant (client(r).variables, too, possibly). Const only allows literals when assigning values.&lt;br /&gt;
&lt;br /&gt;
A constant may be used most likely to keep a variable that is available to any script from changing its value due to any foreign script interfering. It can also be used to give some cryptic value an easy to understand name, and by putting the const definition at the beginning of the script it can easily be configured.&lt;br /&gt;
&lt;br /&gt;
== Enumeration ==&lt;br /&gt;
&lt;br /&gt;
A special type of constants are enumerators:&lt;br /&gt;
&lt;br /&gt;
 enum {&lt;br /&gt;
   enum0,&lt;br /&gt;
   enum1,&lt;br /&gt;
   enum2&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
When you put names in an enumerator list, then it is automatically generating constants by enumarating the names - enum0 will be zero, enum1 will be 1, enum2 will be 2.&lt;br /&gt;
&lt;br /&gt;
 enum modes {&lt;br /&gt;
   IDLE,&lt;br /&gt;
   WALK&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
By giving a name to the enumerator list you can group enumerations - you can access the constants by modes.IDLE and modes.WALK. &lt;br /&gt;
&lt;br /&gt;
 enum {&lt;br /&gt;
   enum10 = 10,&lt;br /&gt;
   enum11,&lt;br /&gt;
   enumstr = &amp;quot;string&amp;quot;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
You can assign values to the constants like you do for normal constants. It will automatically enumerate the following entries by adding one to the last value, so enum11 will be 11. You can also assign a string value.&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=News/2009/July&amp;diff=12361</id>
		<title>News/2009/July</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=News/2009/July&amp;diff=12361"/>
		<updated>2009-07-17T20:49:46Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* July */ Added comma.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== July ===&lt;br /&gt;
* '''July 16th''' - '''Dustari Challenge''' {{News/Graal Kingdoms}}&lt;br /&gt;
[[Image:Challenge.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dear King Craigus Eldridge of Dustari&lt;br /&gt;
&lt;br /&gt;
We, The Pirates of the Crescent Isle, challenge Dustari to a core battle on Sunday the 19th of July 2009 at 21:00 GMT on Graal Kingdoms. Awaiting confirmation from King Craigus before proceeding.&lt;br /&gt;
&lt;br /&gt;
Thank you&lt;br /&gt;
&lt;br /&gt;
Signed,&lt;br /&gt;
&lt;br /&gt;
Retired Governor Felix Lionheart of the Crescent Pirates&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''July 15th''' - '''Dementia mining!''' {{News/Playerworlds}}&lt;br /&gt;
[[Image:Ddsdf1.png]]&lt;br /&gt;
&lt;br /&gt;
We now have a basic mining system and a mineral shop in the west to sell your stones to. Everybody starts with the pick axe, and minerals are all around the outside of OSL. Also, we have a simple little hat shop where you can spend the hard earned gold you have just made.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ddsdf2.png]]&lt;br /&gt;
&lt;br /&gt;
Come check it out, and contact Latte by zaraxiel@gmail.com or online if you are interested in a developer job.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''July 14th''' - '''Zodiac V2 Updates and New Tutorial!''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
[[Image:ZodiacV2img.PNG]]&lt;br /&gt;
Zodiac's Staff are currently working on the next version, so far they're completing the base of the Server, including systems such as the Inventory (Q), Status (W), Equipment (R), Basic PvP Combat, a New Boat System, and much more!&lt;br /&gt;
&lt;br /&gt;
When the base is complete they will begin announcing new planned features, and look to the community for talented Level Makers, and Graphic designers to help make Zodiac V2 shine!&lt;br /&gt;
To keep in touch with Zodiac's V2 updates [http://forums.zodiacdev.com/news.php Click Here!]&lt;br /&gt;
&lt;br /&gt;
Also, a new Tutorial has been released.&lt;br /&gt;
&amp;quot;This is our first step in making Zodiac more newbie-friendly, as it teaches a couple fundamentals of Graal and Zodiac. Most of which should come naturally after button-mashing for menus but it's all nice, spelled out and mandatory.&amp;quot; Said Jerret, a developer of Zodiac.&lt;br /&gt;
&lt;br /&gt;
* '''July 13th''' - '''Dementia Needs Help!''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Image33453d.png]]&lt;br /&gt;
&lt;br /&gt;
Dementia has been completely rebuilt. Currently we have a few levels, a few NPC, and some graphics. We plan to build a real time battle system, with custom stats, magic, weapons, wild enemies you can capture, and so much more! Check us out! Contact Latte if you are interested in a staff position, either in game, or by e-mail, zaraxiel@gmail.com. We are not yet hiring FAQs, GPs, or Events team yet, so please be patient!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''July 9th''' - '''Delteria Spar Tournament''' {{News/Playerworlds}}&lt;br /&gt;
Delteria's overworld and kitcsh returned along with the (DST) Delterian Spar Tournament. Each Wednesday night, starting at 11 PM EST, the DST will be held. Winners of the tournament will receive a statue in the Delterian Spar Complex.&lt;br /&gt;
Of the over 50 players online, 34 players participated and only one won the tournament. Congratulations to Chance Mercy (Veracity) for victory in the tournament on Wednesday! &lt;br /&gt;
&lt;br /&gt;
[[Image:DelteriaNews100709.PNG]]&lt;br /&gt;
&lt;br /&gt;
Along the side of the Delterian Spar Tournament, the Delterian Tag Team Spar Tournament is planning to make a return. The Delterian Tag Team Spar Tournament will begin at 11 PM EST on Monday the 13th of July. The first calls for the event will begin at 10:45 PM EST. Good luck to the teams that participate!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''July 9th''' - '''Graal Kingdoms - Monster Siege Part 1''' {{News/Graal_Kingdoms}}&lt;br /&gt;
[[Image:Gknews070909.png]]&lt;br /&gt;
&lt;br /&gt;
There's a letter. It was dropped by a Skelly. Hm... it's pretty garbled and torn up. Only one thing can be made out from the mess, &amp;quot;... we will attack...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sounds ominous enough doesn't it? We need adventurers to strike out and slay monsters by the ton. We need to discover what their plans are. Where are they going to attack, what are they going to do?&lt;br /&gt;
&lt;br /&gt;
This '''Sunday''' at around '''5:00 server time''' I should have an idea on where there are some monsters hiding out. If you're there I'll send you off to recover more plans. Each piece you bring back will win you an event coin. Maybe then we'll learn what they're doing.&lt;br /&gt;
&lt;br /&gt;
* '''July 7th''' - '''Graal Kingdoms - Quarter 3''' {{News/Graal_Kingdoms}}&lt;br /&gt;
[[Image:Gkquarter32009.png]]&lt;br /&gt;
&lt;br /&gt;
Quarter 3 has arrived on Graal Kingdoms. Find more information [http://forums.graalonline.com/forums/showthread.php?p=1505099#post1505099 here.]&lt;br /&gt;
&lt;br /&gt;
* '''July 6th''' - '''Noctorious Beta''' {{News/Playerworlds}}&lt;br /&gt;
[[Image:Noctoriousbeta6july2009.png]]&lt;br /&gt;
&lt;br /&gt;
Noctorious is a modern themed server with many of the same features you'd expect from a modern server, however the the staff team has paid great attention to detail brining a unique style of design to the server. The public beta testing is from Monday the 6th until Monday the 13th of July giving a glimpse of what's to come. &lt;br /&gt;
&lt;br /&gt;
Notorious is looking for Scripters, Level, Graphic, and Gani Artists to help with the development project. For more details [[http://forums.graalonline.com/forums/showthread.php?t=86686 Click here]].&lt;br /&gt;
&lt;br /&gt;
[[Image:Noctoriousscreenshot6july2009.png]]&lt;br /&gt;
&lt;br /&gt;
* '''July 5th''' - '''Unholy Nation Pets!''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
Hi guys!&lt;br /&gt;
Sunday at 5:00 PM EST we will be having an open beta testing of the newest system on it's way to Unholy Nation. We have been slaving over it for two weeks, and are excited to get the final product public! You guessed right, it's the future pet system!&lt;br /&gt;
&lt;br /&gt;
[[Image:UnholyNationPets.PNG]]&lt;br /&gt;
&lt;br /&gt;
Just be ready to log onto Unholy Dev and have fun. The main objective is to evaluate the stress this system will have on the server when we have a large group of players using it at a time. There will be a thread on our own UN forums system (and the [http://forums.graalonline.com/forums/showthread.php?p=1503797#post1503797 GraalOnline forums]) for your opinion of the system.&lt;br /&gt;
&lt;br /&gt;
Keep in mind this is the beta! So what you're seeing isn't the finished product.&lt;br /&gt;
Thanks! &lt;br /&gt;
&lt;br /&gt;
~Streety/UN Team&lt;br /&gt;
&lt;br /&gt;
* '''July 4th''' - '''Zone 4th of July''' {{News/Zone}}&lt;br /&gt;
&lt;br /&gt;
Thanks to the Zone staff for the 4th of July updates. Flags were added to the bases, cookies were temporarily enabled with a limit of two, and the jetpack flames were changed to be red, white, and blue. Thanks in particular to Minomato and Novice for their contributions to allow these updates to happen. More updates will come soon! Have a happy 4th of July!&lt;br /&gt;
&lt;br /&gt;
[[Image:ZoneJulyFourth.PNG]]&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=News/2009/June&amp;diff=12135</id>
		<title>News/2009/June</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=News/2009/June&amp;diff=12135"/>
		<updated>2009-06-22T02:00:55Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* June */ Pluralized 'feature'.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== June ===&lt;br /&gt;
* '''June 21st''' - '''Delteria - Updates'''{{News/Playerworlds}}&lt;br /&gt;
 &lt;br /&gt;
While working on the development project, Delteria has decided to temporarily restore some of the old Delteria features such as Events, Novelty NPCs and Sparring. &lt;br /&gt;
&lt;br /&gt;
[[Image:Delteria-Event-2.PNG‎]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We just decided that while we're working on our dev server project we'd restore some of Old Delteria on the public server so that people are able to log on and actually do something.&amp;quot; said Cloven, one of the managers of Delteria.&lt;br /&gt;
&lt;br /&gt;
As for the progress in the development project, we do not have much information about it, but we have good expectations.&lt;br /&gt;
&lt;br /&gt;
* '''June 14th''' - '''Unholy Nation Receives Horses''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Unhorses2009.png]]&lt;br /&gt;
&lt;br /&gt;
Unholy Nation has received an update of horses being re-added to the server, as well as enabling pause again on the overworld.&lt;br /&gt;
See you at the town barn!&lt;br /&gt;
&lt;br /&gt;
* '''June 13th''' - '''Zone Updates''' {{News/Zone}}&lt;br /&gt;
&lt;br /&gt;
Zone has been updated today to prevent against base laming and to make game play more interesting. On Iricia, if your base is under attack you now will spawn randomly on your team's side of the map. The change to make game play more interesting was to show how much health is taken when you attack an opponent and how much experience you gain when you kill someone.&lt;br /&gt;
&lt;br /&gt;
[[Image:ZoneHPUpdates.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''June 3rd''' - '''Spawn''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:Welcome_to_Spawn.PNG‎]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A few days ago, Nat had an interview with Mog about Spawn, here's how it went.&lt;br /&gt;
&lt;br /&gt;
'''Nat''': Good Morning ''Mog''. I'm going to ask you some questions about the hosted Playerworld of Spawn. Have in mind that this conversation will be posted on the Graal News.&lt;br /&gt;
&lt;br /&gt;
'''Mog''': ok&lt;br /&gt;
&lt;br /&gt;
'''Nat''': What is your Staff position at Spawn?&lt;br /&gt;
&lt;br /&gt;
'''Mog''': developer&lt;br /&gt;
&lt;br /&gt;
'''Nat''': Ok. Tell me about the beggining, what were the first ideas you had to make this playerworld?&lt;br /&gt;
&lt;br /&gt;
'''Mog''': the server was already on hosted status before I came onboard.  Considering the fact that I am banned everwhere else, I had nowhere to go except underdeveloped playerworlds and two of the hosted servers.  When I logged into Spawn one day, I was asked if I wanted to help out.  Eventually, I accepted and started right in finishing up scripting projects and working on new ones.  Spawn is meant to be a futuristic city with high-tech weapons and vehicles.  Newer ideas are being implemented and I am currently working on a few projects there.&lt;br /&gt;
&lt;br /&gt;
[[Image:Spawn.png]]&lt;br /&gt;
&lt;br /&gt;
'''Nat''': Intresting, so what is the current status towards being able to join the Classic Tab? How is the relation with the PWA?&lt;br /&gt;
&lt;br /&gt;
'''Mog''': I would to say that the current state of what Spawn is at now, was mainly due to hard work and dedication.  With all of our hard working busy staff on the server now, it could take some time before something like going to Classic status would be realized.  As far as the relations with PWA's, we have represented ourselves professionally and show a great deal of commitment, otherwise we wouldn't have made it to hosted status in the first place.&lt;br /&gt;
&lt;br /&gt;
'''Nat''': Looks like the wind is in your favor. Now tell me exactly what can we see on Spawn? Wich is the content?&lt;br /&gt;
&lt;br /&gt;
'''Mog''': Spawn in general is undergoing some major changes.  Currently, I am the only active scripter on the server capable enough to do what it is we need to have done.  As a developer, I have implemented a few of my own ideas to build right into the heart of Spawn.  Some of these new ideas implemented by me, unfortunately can't be shared at this time publicly; however at the current state of what Spawn is in now, we have a huge overworld, which can be  fully explored.  There's also a few misc. shops around, some mini quests and my favorite, whack a mole.&lt;br /&gt;
&lt;br /&gt;
'''Nat''': Yeah, I've played that =P. We can certianly expect more similar quests and alot of new content, I support your work :). Thanks Alot for your time Mog.&lt;br /&gt;
&lt;br /&gt;
'''Mog''': You can certainly expect lots of updates coming soon.  Thank you for your time&lt;br /&gt;
&lt;br /&gt;
* '''June 1st''' - '''Atrius: World At War''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Atrius_World_At_War.png‎]]&lt;br /&gt;
&lt;br /&gt;
It's time for war on Atrius, and it's up to you to decide which side you're fighting for. With seven different classes (Infantry, Gunner, Medic, Scout, Demo Expert, Tank Operator, and Pilot) each having their own special abilities, you're sure to make a unique difference for the side you pick. The server is currently under development, but is on the Hosted Tab so you can check it out.&lt;br /&gt;
&lt;br /&gt;
There is currently an open discussion on the forums regarding the server, [http://forums.graalonline.com/forums/showthread.php?t=85846 click here] for more information.&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=12110</id>
		<title>Creation/Dev/GScript/Stefan Wisdom</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=12110"/>
		<updated>2009-06-08T01:50:23Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Stefan is the only GScript wizard in existence. Sometimes he illuminates his inferiors in a post so wise it can be felt without having a browser running. Following is a list of forum posts in the Official Graal Communication Center.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
Stefan announcing new features etc.&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85395 getProcessCPUUsage, getProcessUptime, getMemoryUsage, getMemoryStatsObjects]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482284&amp;amp;postcount=4 Using SQLite]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85257 wordFilterText and stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=84926 urlencode and scripthelp wildcards]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=74042 Functions objects, anonymous functions]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=77464 npcnewstorage]&lt;br /&gt;
&lt;br /&gt;
==Regular posts==&lt;br /&gt;
Most of these are Stefan helping people. What a nice guy!&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1367596&amp;amp;postcount=9 Preventing GUI controls from stealing focus]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482479&amp;amp;postcount=17 commands.rtf equivalent for GS2]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1463493&amp;amp;postcount=11 Detailing when the params array is created]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1478088&amp;amp;postcount=13 Socket stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482324&amp;amp;postcount=23 Time formatting]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1391213&amp;amp;postcount=50 Observer mode events]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1466070&amp;amp;postcount=6 Dynamic variable names]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1486291&amp;amp;postcount=6 How to use triggerserver in regular NPCs]&lt;br /&gt;
* [http://forums.graalonline.com/forums/blog.php?b=90 Variable name lookup rules] (We can't link to blog comments, so scroll down a little)&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1491661&amp;amp;postcount=3 Some info on player.attr]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1491659&amp;amp;postcount=8 GuiDrawingPanel behaviour]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1490831&amp;amp;postcount=8 Speed changes when using multiple particle types]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1489653&amp;amp;postcount=23 Variable storage and unknown_object]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1494375&amp;amp;postcount=5 Making uneditable checkboxes that are also ticked]&lt;br /&gt;
&lt;br /&gt;
==Disciples==&lt;br /&gt;
Posts made by disciples of Stefan or by people that Stefan has manifested himself to.&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1378058&amp;amp;postcount=10 Showing a gani at a certain frame]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1488119&amp;amp;postcount=9 onRemotePlayerChats]&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=News/2009/June&amp;diff=12105</id>
		<title>News/2009/June</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=News/2009/June&amp;diff=12105"/>
		<updated>2009-06-01T16:29:41Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* June */ &amp;quot;for your the side you pick&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== June ===&lt;br /&gt;
* '''June 1st''' - '''Atrius: World At War''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Atrius_World_At_War.png‎]]&lt;br /&gt;
&lt;br /&gt;
It's time for war on Atrius, and it's up to you to decide which side you're fighting for. With seven different classes (Infantry, Gunner, Medic, Scout, Demo Expert, Tank Operator, and Pilot) each having their own special abilities, you're sure to make a unique difference for the side you pick. The server is currently under development, but is on the Hosted Tab so you can check it out.&lt;br /&gt;
&lt;br /&gt;
There is currently an open discussion on the forums regarding the server, [http://forums.graalonline.com/forums/showthread.php?t=85846 click here] for more information.&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=12083</id>
		<title>Creation/Dev/GScript/Stefan Wisdom</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=12083"/>
		<updated>2009-05-27T03:57:03Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Regular posts */ Checkboxes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Stefan is the only GScript wizard in existence. Sometimes he illuminates his inferiors in a post so wise it can be felt without having a browser running. Following is a list of forum posts in the Official Graal Communication Center.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
Stefan announcing new features etc.&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85395 getProcessCPUUsage, getProcessUptime, getMemoryUsage, getMemoryStatsObjects]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482284&amp;amp;postcount=4 Using SQLite]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85257 wordFilterText and stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=84926 urlencode and scripthelp wildcards]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=74042 Functions objects, anonymous functions]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=77464 npcnewstorage]&lt;br /&gt;
&lt;br /&gt;
==Regular posts==&lt;br /&gt;
Most of these are Stefan helping people. What a nice guy!&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1367596&amp;amp;postcount=9 Preventing GUI controls from stealing focus]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482479&amp;amp;postcount=17 commands.rtf equivalent for GS2]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1463493&amp;amp;postcount=11 Detailing when the params array is created]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1478088&amp;amp;postcount=13 Socket stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482324&amp;amp;postcount=23 Time formatting]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1391213&amp;amp;postcount=50 Observer mode events]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1466070&amp;amp;postcount=6 Dynamic variable names]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1486291&amp;amp;postcount=6 How to use triggerserver in regular NPCs]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1488119&amp;amp;postcount=9 onRemotePlayerChats] (Written by a human who was divinely inspired by Stefan, so it's valid for this article)&lt;br /&gt;
* [http://forums.graalonline.com/forums/blog.php?b=90 Variable name lookup rules] (We can't link to blog comments, so scroll down a little)&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1491661&amp;amp;postcount=3 Some info on player.attr]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1491659&amp;amp;postcount=8 GuiDrawingPanel behaviour]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1490831&amp;amp;postcount=8 Speed changes when using multiple particle types]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1489653&amp;amp;postcount=23 Variable storage and unknown_object]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1494375&amp;amp;postcount=5 Making uneditable checkboxes that are also ticked]&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=12060</id>
		<title>Creation/Dev/GScript/Stefan Wisdom</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=12060"/>
		<updated>2009-05-16T03:36:21Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Regular posts */ Found some more&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Stefan is the only GScript wizard in existence. Sometimes he illuminates his inferiors in a post so wise it can be felt without having a browser running. Following is a list of forum posts in the Official Graal Communication Center.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
Stefan announcing new features etc.&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85395 getProcessCPUUsage, getProcessUptime, getMemoryUsage, getMemoryStatsObjects]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482284&amp;amp;postcount=4 Using SQLite]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85257 wordFilterText and stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=84926 urlencode and scripthelp wildcards]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=74042 Functions objects, anonymous functions]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=77464 npcnewstorage]&lt;br /&gt;
&lt;br /&gt;
==Regular posts==&lt;br /&gt;
Most of these are Stefan helping people. What a nice guy!&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1367596&amp;amp;postcount=9 Preventing GUI controls from stealing focus]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482479&amp;amp;postcount=17 commands.rtf equivalent for GS2]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1463493&amp;amp;postcount=11 Detailing when the params array is created]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1478088&amp;amp;postcount=13 Socket stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482324&amp;amp;postcount=23 Time formatting]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1391213&amp;amp;postcount=50 Observer mode events]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1466070&amp;amp;postcount=6 Dynamic variable names]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1486291&amp;amp;postcount=6 How to use triggerserver in regular NPCs]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1488119&amp;amp;postcount=9 onRemotePlayerChats] (Written by a human who was divinely inspired by Stefan, so it's valid for this article)&lt;br /&gt;
* [http://forums.graalonline.com/forums/blog.php?b=90 Variable name lookup rules] (We can't link to blog comments, so scroll down a little)&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1491661&amp;amp;postcount=3 Some info on player.attr]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1491659&amp;amp;postcount=8 GuiDrawingPanel behaviour]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1490831&amp;amp;postcount=8 Speed changes when using multiple particle types]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1489653&amp;amp;postcount=23 Variable storage and unknown_object]&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=12059</id>
		<title>Creation/Dev/GScript/Stefan Wisdom</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=12059"/>
		<updated>2009-05-16T03:32:06Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Regular posts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Stefan is the only GScript wizard in existence. Sometimes he illuminates his inferiors in a post so wise it can be felt without having a browser running. Following is a list of forum posts in the Official Graal Communication Center.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
Stefan announcing new features etc.&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85395 getProcessCPUUsage, getProcessUptime, getMemoryUsage, getMemoryStatsObjects]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482284&amp;amp;postcount=4 Using SQLite]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85257 wordFilterText and stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=84926 urlencode and scripthelp wildcards]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=74042 Functions objects, anonymous functions]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=77464 npcnewstorage]&lt;br /&gt;
&lt;br /&gt;
==Regular posts==&lt;br /&gt;
Most of these are Stefan helping people. What a nice guy!&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1367596&amp;amp;postcount=9 Preventing GUI controls from stealing focus]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482479&amp;amp;postcount=17 commands.rtf equivalent for GS2]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1463493&amp;amp;postcount=11 Detailing when the params array is created]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1478088&amp;amp;postcount=13 Socket stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482324&amp;amp;postcount=23 Time formatting]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1391213&amp;amp;postcount=50 Observer mode events]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1466070&amp;amp;postcount=6 Dynamic variable names]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1486291&amp;amp;postcount=6 How to use triggerserver in regular NPCs]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1488119&amp;amp;postcount=9 onRemotePlayerChats] (Written by a human who was divinely inspired by Stefan, so it's valid for this article)&lt;br /&gt;
* [http://forums.graalonline.com/forums/blog.php?b=90 Variable name lookup rules] (We can't link to blog comments, so scroll down a little)&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1491661&amp;amp;postcount=3 Some info on player.attr]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1491659&amp;amp;postcount=8 GuiDrawingPanel behaviour]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1490831&amp;amp;postcount=8 Speed changes when using multiple particle types]&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=12058</id>
		<title>Creation/Dev/GScript/Stefan Wisdom</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=12058"/>
		<updated>2009-05-16T03:08:30Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Regular posts */ player.attr&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Stefan is the only GScript wizard in existence. Sometimes he illuminates his inferiors in a post so wise it can be felt without having a browser running. Following is a list of forum posts in the Official Graal Communication Center.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
Stefan announcing new features etc.&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85395 getProcessCPUUsage, getProcessUptime, getMemoryUsage, getMemoryStatsObjects]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482284&amp;amp;postcount=4 Using SQLite]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85257 wordFilterText and stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=84926 urlencode and scripthelp wildcards]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=74042 Functions objects, anonymous functions]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=77464 npcnewstorage]&lt;br /&gt;
&lt;br /&gt;
==Regular posts==&lt;br /&gt;
Most of these are Stefan helping people. What a nice guy!&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1367596&amp;amp;postcount=9 Preventing GUI controls from stealing focus]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482479&amp;amp;postcount=17 commands.rtf equivalent for GS2]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1463493&amp;amp;postcount=11 Detailing when the params array is created]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1478088&amp;amp;postcount=13 Socket stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482324&amp;amp;postcount=23 Time formatting]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1391213&amp;amp;postcount=50 Observer mode events]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1466070&amp;amp;postcount=6 Dynamic variable names]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1486291&amp;amp;postcount=6 How to use triggerserver in regular NPCs]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1488119&amp;amp;postcount=9 onRemotePlayerChats] (Written by a human who was divinely inspired by Stefan, so it's valid for this article)&lt;br /&gt;
* [http://forums.graalonline.com/forums/blog.php?b=90 Variable name lookup rules] (We can't link to blog comments, so scroll down a little)&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1491661&amp;amp;postcount=3 Some info on player.attr]&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=12038</id>
		<title>Creation/Dev/GScript/Stefan Wisdom</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=12038"/>
		<updated>2009-05-09T16:29:39Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Regular posts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Stefan is the only GScript wizard in existence. Sometimes he illuminates his inferiors in a post so wise it can be felt without having a browser running. Following is a list of forum posts in the Official Graal Communication Center.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
Stefan announcing new features etc.&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85395 getProcessCPUUsage, getProcessUptime, getMemoryUsage, getMemoryStatsObjects]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482284&amp;amp;postcount=4 Using SQLite]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85257 wordFilterText and stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=84926 urlencode and scripthelp wildcards]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=74042 Functions objects, anonymous functions]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=77464 npcnewstorage]&lt;br /&gt;
&lt;br /&gt;
==Regular posts==&lt;br /&gt;
Most of these are Stefan helping people. What a nice guy!&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1367596&amp;amp;postcount=9 Preventing GUI controls from stealing focus]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482479&amp;amp;postcount=17 commands.rtf equivalent for GS2]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1463493&amp;amp;postcount=11 Detailing when the params array is created]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1478088&amp;amp;postcount=13 Socket stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482324&amp;amp;postcount=23 Time formatting]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1391213&amp;amp;postcount=50 Observer mode events]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1466070&amp;amp;postcount=6 Dynamic variable names]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1486291&amp;amp;postcount=6 How to use triggerserver in regular NPCs]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1488119&amp;amp;postcount=9 onRemotePlayerChats] (Written by a human who was divinely inspired by Stefan, so it's valid for this article)&lt;br /&gt;
* [http://forums.graalonline.com/forums/blog.php?b=90 Variable name lookup rules] (We can't link to blog comments, so scroll down a little)&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=12020</id>
		<title>Creation/Dev/GScript/Stefan Wisdom</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=12020"/>
		<updated>2009-05-04T20:12:58Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Regular posts */  onRemotePlayerChats&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Stefan is the only GScript wizard in existence. Sometimes he illuminates his inferiors in a post so wise it can be felt without having a browser running. Following is a list of forum posts in the Official Graal Communication Center.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
Stefan announcing new features etc.&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85395 getProcessCPUUsage, getProcessUptime, getMemoryUsage, getMemoryStatsObjects]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482284&amp;amp;postcount=4 Using SQLite]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85257 wordFilterText and stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=84926 urlencode and scripthelp wildcards]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=74042 Functions objects, anonymous functions]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=77464 npcnewstorage]&lt;br /&gt;
&lt;br /&gt;
==Regular posts==&lt;br /&gt;
Most of these are Stefan helping people. What a nice guy!&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1367596&amp;amp;postcount=9 Preventing GUI controls from stealing focus]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482479&amp;amp;postcount=17 commands.rtf equivalent for GS2]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1463493&amp;amp;postcount=11 Detailing when the params array is created]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1478088&amp;amp;postcount=13 Socket stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482324&amp;amp;postcount=23 Time formatting]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1391213&amp;amp;postcount=50 Observer mode events]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1466070&amp;amp;postcount=6 Dynamic variable names]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1486291&amp;amp;postcount=6 How to use triggerserver in regular NPCs]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1488119&amp;amp;postcount=9 onRemotePlayerChats] (Written by a human who was divinely inspired by Stefan, so it's valid for this article)&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=12019</id>
		<title>Creation/Dev/GScript/Stefan Wisdom</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=12019"/>
		<updated>2009-05-02T14:24:28Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: getProcessCPUUsage etc.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Stefan is the only GScript wizard in existence. Sometimes he illuminates his inferiors in a post so wise it can be felt without having a browser running. Following is a list of forum posts in the Official Graal Communication Center.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
Stefan announcing new features etc.&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85395 getProcessCPUUsage, getProcessUptime, getMemoryUsage, getMemoryStatsObjects]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482284&amp;amp;postcount=4 Using SQLite]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85257 wordFilterText and stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=84926 urlencode and scripthelp wildcards]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=74042 Functions objects, anonymous functions]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=77464 npcnewstorage]&lt;br /&gt;
&lt;br /&gt;
==Regular posts==&lt;br /&gt;
Most of these are Stefan helping people. What a nice guy!&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1367596&amp;amp;postcount=9 Preventing GUI controls from stealing focus]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482479&amp;amp;postcount=17 commands.rtf equivalent for GS2]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1463493&amp;amp;postcount=11 Detailing when the params array is created]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1478088&amp;amp;postcount=13 Socket stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482324&amp;amp;postcount=23 Time formatting]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1391213&amp;amp;postcount=50 Observer mode events]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1466070&amp;amp;postcount=6 Dynamic variable names]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1486291&amp;amp;postcount=6 How to use triggerserver in regular NPCs]&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=12007</id>
		<title>Creation/Dev/GScript/Stefan Wisdom</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=12007"/>
		<updated>2009-04-30T05:11:33Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: showpost.php, not reputation.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Stefan is the only GScript wizard in existence. Sometimes he illuminates his inferiors in a post so wise it can be felt without having a browser running. Following is a list of forum posts in the Official Graal Communication Center.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
Stefan announcing new features etc.&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482284&amp;amp;postcount=4 Using SQLite]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85257 wordFilterText and stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=84926 urlencode and scripthelp wildcards]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=74042 Functions objects, anonymous functions]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=77464 npcnewstorage]&lt;br /&gt;
&lt;br /&gt;
==Regular posts==&lt;br /&gt;
Most of these are Stefan helping people. What a nice guy!&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1367596&amp;amp;postcount=9 Preventing GUI controls from stealing focus]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482479&amp;amp;postcount=17 commands.rtf equivalent for GS2]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1463493&amp;amp;postcount=11 Detailing when the params array is created]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1478088&amp;amp;postcount=13 Socket stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482324&amp;amp;postcount=23 Time formatting]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1391213&amp;amp;postcount=50 Observer mode events]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1466070&amp;amp;postcount=6 Dynamic variable names]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1486291&amp;amp;postcount=6 How to use triggerserver in regular NPCs]&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript&amp;diff=11979</id>
		<title>Creation/Dev/GScript</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript&amp;diff=11979"/>
		<updated>2009-04-24T20:29:40Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: Linking to Stefan_Wisdom&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
'''GScript''' is [[Graal]]'s scripting language.&lt;br /&gt;
&lt;br /&gt;
Its syntax and some of its semantics might seem familiar to those who program in [[WikiPedia:C (Programming Language) |C]] or [[WikiPedia:Java_programming_language|Java]], it uses ECMA-Script syntax. In some ways it is more dynamic, e.g. supporting dynamicly joining and leaving of classes, and brings support for easy management of online game content.&lt;br /&gt;
&lt;br /&gt;
It is used for [[clientside]] tasks like [[GUI | GUI programming]], special effects and custom [[NPC weapon|weapons]], and [[serverside]] systems like player housing, complex baddies or pets.&lt;br /&gt;
&lt;br /&gt;
'''If you would like to contribute to the GraalBible's GScript documentation, you might want to [[Creation/Dev/GScript/Contribute|read this article]].'''&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
In your scripting quest, you may find the following articles to be of use:&lt;br /&gt;
&lt;br /&gt;
'''Basic information'''&lt;br /&gt;
* [[Creation/Dev/Script/Starting Guide|Starting Guide]]&lt;br /&gt;
* [[Creation/Dev/Script/Client|Functions, variables and objects (clientside)]] &lt;br /&gt;
* [[Image:Guicontrol_window.png|80px]] [[Creation/Dev/Script/Client/GuiControls_List|GUI Controls]]&lt;br /&gt;
&lt;br /&gt;
'''Tutorials'''&lt;br /&gt;
* [[Image:s_dummies.png|80px]] [[Creation/Dev/GScript/New Engine GScript for Dummies|New Engine GScript for Dummies]]&lt;br /&gt;
* [[Creation/Dev/Excalibur's scripting guide|Excalibur's Scripting Guide]]&lt;br /&gt;
&lt;br /&gt;
'''Specific Features'''&lt;br /&gt;
* [[Creation/Dev/GS1_To_GS2|GS1 To GS2: Guide for fixing scripts to work with the new engine]]&lt;br /&gt;
* [[Creation/Dev/Output Methods|Output methods]]&lt;br /&gt;
* [[Creation/Dev/Using Classes Effectively|Use of classes]]&lt;br /&gt;
* [[Creation/Dev/GScript/Constants|Constants]]&lt;br /&gt;
* [[Creation/Dev/GScript/Understanding GUI Profiles|GUI Features: Understanding GUI profiles]]&lt;br /&gt;
* [[Image:Guicontrol_tab.png]] [[Creation/Dev/Creating Tabbed Window Panes|Creating Tabbed Window Panes]]&lt;br /&gt;
* [[Particle Engine|Particle Engine]]&lt;br /&gt;
* [[Creation/Dev/Graal v4 IRC|Graal IRC Scripting: Graal IRC Scripting Reference]]&lt;br /&gt;
* [[Creation/Dev/Troubleshooting Graal v4 IRC|Graal IRC Scripting: Troubleshooting Scripting Reference]]&lt;br /&gt;
* [[Creation/Dev/Database_Communication|Indexed Database Communication]]&lt;br /&gt;
* [[Vectors]] (3D)&lt;br /&gt;
* [[Creation/Dev/wordFilter|Word Filter]]&lt;br /&gt;
* [[Creation/Dev/GScript/Stefan_Wisdom|Stefan Wisdom]]&lt;br /&gt;
&lt;br /&gt;
'''Script Function List'''&lt;br /&gt;
&lt;br /&gt;
These are frequently updated, to get the latest list run Graal with the -listscriptfunctions option. You can also get help about script functions with the ''/scripthelp &amp;lt;string&amp;gt;'' command on RemoteControl chat.&lt;br /&gt;
* [[Creation/Dev/Script/Clientside_Functions|Client side]]&lt;br /&gt;
* [[Creation/Dev/Script Functions: NPC Server|Server side]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://skyld.vip.graal.net Old GScript Wiki] (404)&lt;br /&gt;
* [http://wiki.graal.us/Index New GScript Wiki]&lt;br /&gt;
* [http://resource.nukedstudios.com Twinny's Scripting Page]&lt;br /&gt;
* [[GScript IRC channel]] (non-official)&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=11978</id>
		<title>Creation/Dev/GScript/Stefan Wisdom</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript/Stefan_Wisdom&amp;diff=11978"/>
		<updated>2009-04-24T20:28:27Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: New page: ==Introduction== Stefan is the only GScript wizard in existence. Sometimes he illuminates his inferiors in a post so wise it can be felt without having a browser running. Following is a li...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Stefan is the only GScript wizard in existence. Sometimes he illuminates his inferiors in a post so wise it can be felt without having a browser running. Following is a list of forum posts in the Official Graal Communication Center.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
Stefan announcing new features etc.&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=85257 wordFilterText and stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=84926 urlencode and scripthelp wildcards]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=74042 Functions objects, anonymous functions]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=77464 npcnewstorage]&lt;br /&gt;
&lt;br /&gt;
==Regular posts==&lt;br /&gt;
Most of these are Stefan helping people. What a nice guy!&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1367596&amp;amp;postcount=9 Preventing GUI controls from stealing focus]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482479&amp;amp;postcount=17 commands.rtf equivalent for GS2]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1463493&amp;amp;postcount=11 Detailing when the params array is created]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1478088&amp;amp;postcount=13 Socket stuff]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1482324&amp;amp;postcount=23 Time formatting]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1391213&amp;amp;postcount=50 Observer mode events]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1466070&amp;amp;postcount=6 Dynamic variable names]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showpost.php?p=1486291&amp;amp;postcount=6 How to use triggerserver in regular NPCs]&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript&amp;diff=11933</id>
		<title>Creation/Dev/GScript</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript&amp;diff=11933"/>
		<updated>2009-04-14T07:01:16Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* External Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
'''GScript''' is [[Graal]]'s scripting language.&lt;br /&gt;
&lt;br /&gt;
Its syntax and some of its semantics might seem familiar to those who program in [[WikiPedia:C (Programming Language) |C]] or [[WikiPedia:Java_programming_language|Java]], it uses ECMA-Script syntax. In some ways it is more dynamic, e.g. supporting dynamicly joining and leaving of classes, and brings support for easy management of online game content.&lt;br /&gt;
&lt;br /&gt;
It is used for [[clientside]] tasks like [[GUI | GUI programming]], special effects and custom [[NPC weapon|weapons]], and [[serverside]] systems like player housing, complex baddies or pets.&lt;br /&gt;
&lt;br /&gt;
'''If you would like to contribute to the GraalBible's GScript documentation, you might want to [[Creation/Dev/GScript/Contribute|read this article]].'''&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
In your scripting quest, you may find the following articles to be of use:&lt;br /&gt;
&lt;br /&gt;
'''Basic information'''&lt;br /&gt;
* [[Creation/Dev/Script/Starting Guide|Starting Guide]]&lt;br /&gt;
* [[Creation/Dev/Script/Client|Functions, variables and objects (clientside)]] &lt;br /&gt;
* [[Image:Guicontrol_window.png|80px]] [[Creation/Dev/Script/Client/GuiControls_List|GUI Controls]]&lt;br /&gt;
&lt;br /&gt;
'''Tutorials'''&lt;br /&gt;
* [[Image:s_dummies.png|80px]] [[Creation/Dev/GScript/New Engine GScript for Dummies|New Engine GScript for Dummies]]&lt;br /&gt;
* [[Creation/Dev/Excalibur's scripting guide|Excalibur's Scripting Guide]]&lt;br /&gt;
&lt;br /&gt;
'''Specific Features'''&lt;br /&gt;
* [[Creation/Dev/GS1_To_GS2|GS1 To GS2: Guide for fixing scripts to work with the new engine]]&lt;br /&gt;
* [[Creation/Dev/Output Methods|Output methods]]&lt;br /&gt;
* [[Creation/Dev/Using Classes Effectively|Use of classes]]&lt;br /&gt;
* [[Creation/Dev/GScript/Constants|Constants]]&lt;br /&gt;
* [[Creation/Dev/GScript/Understanding GUI Profiles|GUI Features: Understanding GUI profiles]]&lt;br /&gt;
* [[Image:Guicontrol_tab.png]] [[Creation/Dev/Creating Tabbed Window Panes|Creating Tabbed Window Panes]]&lt;br /&gt;
* [[Particle Engine|Particle Engine]]&lt;br /&gt;
* [[Creation/Dev/Graal v4 IRC|Graal IRC Scripting: Graal IRC Scripting Reference]]&lt;br /&gt;
* [[Creation/Dev/Troubleshooting Graal v4 IRC|Graal IRC Scripting: Troubleshooting Scripting Reference]]&lt;br /&gt;
* [[Creation/Dev/Database_Communication|Indexed Database Communication]]&lt;br /&gt;
* [[Vectors]] (3D)&lt;br /&gt;
&lt;br /&gt;
'''Script Function List'''&lt;br /&gt;
&lt;br /&gt;
These are frequently updated, to get the latest list run Graal with the -listscriptfunctions option. You can also get help about script functions with the ''/scripthelp &amp;lt;string&amp;gt;'' command on RemoteControl chat.&lt;br /&gt;
* [[Creation/Dev/Script/Clientside_Functions|Client side]]&lt;br /&gt;
* [[Creation/Dev/Script Functions: NPC Server|Server side]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://skyld.vip.graal.net Old GScript Wiki] (404)&lt;br /&gt;
* [http://wiki.graal.us/Index New GScript Wiki]&lt;br /&gt;
* [http://resource.nukedstudios.com Twinny's Scripting Page]&lt;br /&gt;
* [[GScript IRC channel]] (non-official)&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript&amp;diff=11932</id>
		<title>Creation/Dev/GScript</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript&amp;diff=11932"/>
		<updated>2009-04-14T07:01:01Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* External Links */  Added new GScript wiki.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
'''GScript''' is [[Graal]]'s scripting language.&lt;br /&gt;
&lt;br /&gt;
Its syntax and some of its semantics might seem familiar to those who program in [[WikiPedia:C (Programming Language) |C]] or [[WikiPedia:Java_programming_language|Java]], it uses ECMA-Script syntax. In some ways it is more dynamic, e.g. supporting dynamicly joining and leaving of classes, and brings support for easy management of online game content.&lt;br /&gt;
&lt;br /&gt;
It is used for [[clientside]] tasks like [[GUI | GUI programming]], special effects and custom [[NPC weapon|weapons]], and [[serverside]] systems like player housing, complex baddies or pets.&lt;br /&gt;
&lt;br /&gt;
'''If you would like to contribute to the GraalBible's GScript documentation, you might want to [[Creation/Dev/GScript/Contribute|read this article]].'''&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
In your scripting quest, you may find the following articles to be of use:&lt;br /&gt;
&lt;br /&gt;
'''Basic information'''&lt;br /&gt;
* [[Creation/Dev/Script/Starting Guide|Starting Guide]]&lt;br /&gt;
* [[Creation/Dev/Script/Client|Functions, variables and objects (clientside)]] &lt;br /&gt;
* [[Image:Guicontrol_window.png|80px]] [[Creation/Dev/Script/Client/GuiControls_List|GUI Controls]]&lt;br /&gt;
&lt;br /&gt;
'''Tutorials'''&lt;br /&gt;
* [[Image:s_dummies.png|80px]] [[Creation/Dev/GScript/New Engine GScript for Dummies|New Engine GScript for Dummies]]&lt;br /&gt;
* [[Creation/Dev/Excalibur's scripting guide|Excalibur's Scripting Guide]]&lt;br /&gt;
&lt;br /&gt;
'''Specific Features'''&lt;br /&gt;
* [[Creation/Dev/GS1_To_GS2|GS1 To GS2: Guide for fixing scripts to work with the new engine]]&lt;br /&gt;
* [[Creation/Dev/Output Methods|Output methods]]&lt;br /&gt;
* [[Creation/Dev/Using Classes Effectively|Use of classes]]&lt;br /&gt;
* [[Creation/Dev/GScript/Constants|Constants]]&lt;br /&gt;
* [[Creation/Dev/GScript/Understanding GUI Profiles|GUI Features: Understanding GUI profiles]]&lt;br /&gt;
* [[Image:Guicontrol_tab.png]] [[Creation/Dev/Creating Tabbed Window Panes|Creating Tabbed Window Panes]]&lt;br /&gt;
* [[Particle Engine|Particle Engine]]&lt;br /&gt;
* [[Creation/Dev/Graal v4 IRC|Graal IRC Scripting: Graal IRC Scripting Reference]]&lt;br /&gt;
* [[Creation/Dev/Troubleshooting Graal v4 IRC|Graal IRC Scripting: Troubleshooting Scripting Reference]]&lt;br /&gt;
* [[Creation/Dev/Database_Communication|Indexed Database Communication]]&lt;br /&gt;
* [[Vectors]] (3D)&lt;br /&gt;
&lt;br /&gt;
'''Script Function List'''&lt;br /&gt;
&lt;br /&gt;
These are frequently updated, to get the latest list run Graal with the -listscriptfunctions option. You can also get help about script functions with the ''/scripthelp &amp;lt;string&amp;gt;'' command on RemoteControl chat.&lt;br /&gt;
* [[Creation/Dev/Script/Clientside_Functions|Client side]]&lt;br /&gt;
* [[Creation/Dev/Script Functions: NPC Server|Server side]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://skyld.vip.graal.net Old GScript Wiki] (404)&lt;br /&gt;
* [http://wiki.graal.us/Index New GScript Wiki]&lt;br /&gt;
* [http://resource.nukedstudios.com Twinny's Scripting Page]&lt;br /&gt;
* [[GScript IRC channel]] (non-official)&lt;br /&gt;
http://forums.graalonline.com/forums/showpost.php?p=1367596&amp;amp;postcount=9&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=News/2009/April&amp;diff=11903</id>
		<title>News/2009/April</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=News/2009/April&amp;diff=11903"/>
		<updated>2009-04-07T00:06:03Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* April */ Sanity grammar check.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== April ===&lt;br /&gt;
* '''April 6th''' - '''Easter on Classic''' {{News/Playerworlds/Classic}}&lt;br /&gt;
Easter is just around the corner, and with that comes the '''Annual Egg Hunt on Classic!''' Every five minutes an egg is dropped somewhere on the overworld and your task is to bundle up as many as you can. The person that collects the most eggs will win special prizes, such as a rare Easter card for the up and coming card game, and a ''shiny Golden Egg Trophy!''&lt;br /&gt;
	&lt;br /&gt;
The Deadline of this event will be next '''Monday, April 13 at 12am EST.''' To view the current progress on the hunt, type /egghunt in game.&lt;br /&gt;
	&lt;br /&gt;
[[Image:Findsegg.png]]&lt;br /&gt;
&lt;br /&gt;
Good Luck and happy hunting!&lt;br /&gt;
&lt;br /&gt;
* '''April 4th''' - '''Graal Kingdoms Quarter 2 Updates''' {{News/Graal_Kingdoms}}&lt;br /&gt;
[[Image:Gkquarter2.png]]&lt;br /&gt;
&lt;br /&gt;
'''Graal Kingdoms Quarter 2''' kicked off with a bang on April 1st with a prank on the players, seemingly resetting the server. Several updates have come once a day and updates will continue to be made up until Easter.&lt;br /&gt;
&lt;br /&gt;
One of the most notable updates to Graal Kingdoms is the fact that '''Observer Mode has been removed.''' There is a level cap instead now.&lt;br /&gt;
&lt;br /&gt;
Several other improvements have been made to the system and we have prepared Graal Kingdoms for some nice future updates.&lt;br /&gt;
&lt;br /&gt;
To find out more information about Quarter 2 updates, [[http://forums.graalonline.com/forums/showthread.php?t=84953 click here.]]&lt;br /&gt;
&lt;br /&gt;
* '''April 1st''' - '''April fools kicked off on Graal Online''' {{News/General}}&lt;br /&gt;
&lt;br /&gt;
Surely you'd think server staff won't play jokes will they?&lt;br /&gt;
&lt;br /&gt;
The best and scariest joke of the day was played on Graal Kingdoms. Characters appeared to be reset with all items, statistics and levels gone. Needless to say the joke shocked most of the Graal Kingdoms players.&lt;br /&gt;
&lt;br /&gt;
Another not so scary but more fun joke was played. Era turned into a classic themed server complete with the classic style sword system enabled for the whole day.&lt;br /&gt;
&lt;br /&gt;
Until next year the jokes are over.&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Particle_Engine&amp;diff=11891</id>
		<title>Particle Engine</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Particle_Engine&amp;diff=11891"/>
		<updated>2009-04-04T03:34:58Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: Added examples.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
The particle engine in Graal v4 is an extension of the SHOWIMG feature. With the command &amp;quot;showimg&amp;quot; scripts can display graphics, text, polygons and even animations on the screen. That command is mainly meant for client-side effects, but can also partially used on the serverside, and they can also be made visible on other player's screens. Graphics or texts displayed using this command will be called SHOWIMGs in this paper.&lt;br /&gt;
&lt;br /&gt;
Each SHOWIMG can be used as emitter for particles. That way all kind of scripts can use the new particle engine - just display a SHOWIMG and set the attributes of the SHOWIMG so that the particle emitter is activated and is emitting particles. A particle can be seen as an independent graphic object that is put at the position of the emitter once it is emitted, then travelling over the screen, and disappearing once its lifetime is over or it is outside the allowed screen bounds. Actually a particle is itself a SHOWIMG and can so be used for any kind of graphical effect, and can theoretically even be used as emitter for other particles.&lt;br /&gt;
&lt;br /&gt;
The reason for using a particle engine is speed: theoretically all graphical effects could be done by using scripts which call commands to display graphics or text. But often such effects contain several hundreds or even thousands of graphics, which must be moved and animated several times each second. If there are many objects using scripted particle effects that can slow down the game quite a lot. That's why it is possible in Graal v4 to use a built-in particle engine with many possible options to influence the look and behaviour of the particles so that most graphics effects can be displayed using that engine.&lt;br /&gt;
&lt;br /&gt;
==Create a SHOWIMG==&lt;br /&gt;
&lt;br /&gt;
To use the particle engine, you first need a SHOWIMG as emitter:&lt;br /&gt;
&lt;br /&gt;
  with (findimg(200)) {&lt;br /&gt;
    x = player.x;&lt;br /&gt;
    y = player.y;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The function findimg(index) is searching for an existing SHOWIMG with the index of 200 and then using that for setting the other attributes, otherwise it is automatically creating a new SHOWIMG with index 200 for the current object (npc, or player if its a weapon/gui-script). Afterwards it is setting the position of the SHOWIMG to position of the player.&lt;br /&gt;
&lt;br /&gt;
==Configure emitter and particle==&lt;br /&gt;
&lt;br /&gt;
Once the SHOWIMG is setup, you need to configure the emitter and the default attributes of the particle that should be emitted:&lt;br /&gt;
&lt;br /&gt;
  with (findimg(200)) {&lt;br /&gt;
    x = player.x;&lt;br /&gt;
    y = player.y;&lt;br /&gt;
    emitter.attribute = value;&lt;br /&gt;
    emitter.particle.attribute = value;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Possible attribute names are&lt;br /&gt;
(you can run &amp;quot;Graal4.exe -listscriptfunctions&amp;quot; to get the latest list of script functions):&lt;br /&gt;
&lt;br /&gt;
  TParticleEmitter (TGraalVar):&lt;br /&gt;
    attachposition - boolean - says if the particle is moved with the emitter (true), or can fly freely (false)&lt;br /&gt;
    autorotation - boolean - for making the particle heading into the direction it flies (rotation=angle)&lt;br /&gt;
    checkbelowterrain - boolean - destroys the particles if they are below the terrain height (or zero on flat maps)&lt;br /&gt;
    clippingbox - {xd1,yd1,zd1, xd2,yd2,zd2} - defines a box, if particles leave this box then they are destroyed&lt;br /&gt;
    cliptoscreen - boolean - automatically resizes the clipping box to the visible area&lt;br /&gt;
    continueafterdestroy - boolean&lt;br /&gt;
    delaymin - float - minimum delay till the next automatic emission (&amp;gt;= 0.05 seconds)&lt;br /&gt;
    delaymax - float - maximum delay till the next automatic emission&lt;br /&gt;
    emissionoffset - {xd,yd,zd} - by default {0,0,0}, says at which position the particles should be emitted, relative to the current emitter position&lt;br /&gt;
    emitautomatically - boolean - enables or disabled the automatic emission of particles after delaymin/delaymax time&lt;br /&gt;
    firstinfront - boolean - says if the first emitted particle should be displayed in front (true by default)&lt;br /&gt;
    maxparticles - integer - can be used to limit the total particle count&lt;br /&gt;
    nrofparticles - integer - specifies how many particles are emitted at once&lt;br /&gt;
    particle - object (read only) - defines the default attributes of the next emitted particle&lt;br /&gt;
    wraptoclippingbox - boolean - if a particle leaves on one side, it appears on the other side (use with &amp;quot;cliptoscreen&amp;quot; option)&lt;br /&gt;
    dropemitter - TParticleEmitter - works exactly like the emitter itself and are used for emitting particles once a particle drops on the ground (rain drops) or the lifetime is over (for fireworks)&lt;br /&gt;
    dropwateremitter - TParticleEmitter - see dropemitter&lt;br /&gt;
&lt;br /&gt;
  TParticle (TGraalVar):&lt;br /&gt;
    angle - float - the movement angle of the particle (horizontally on the (x,y) plane)&lt;br /&gt;
    lifetime - float - in seconds, the particle will be destroyed when the lifetime is over&lt;br /&gt;
    movementvector - string - says in which direction the particles moves, this is a combination of angle and zangle&lt;br /&gt;
    speed - float - tiles per second&lt;br /&gt;
    spin - float - automatic rotation of the particle (radiants each second)&lt;br /&gt;
    zangle - float - the vertical movement angle - says if the particles goes up or down&lt;br /&gt;
&lt;br /&gt;
    Particle attributes that are the same like for a SHOWIMG:&lt;br /&gt;
    alpha - float - transparency&lt;br /&gt;
    ani - string - a gani file (use &amp;quot;projectile.actor&amp;quot; for changing the attributes)&lt;br /&gt;
    blue - float - blue color value (0-1)&lt;br /&gt;
    code - string - the old representation as 'font@style@text'&lt;br /&gt;
    dimension - integer - polygon dimension (2 or 3)&lt;br /&gt;
    dir - integer - animation direction&lt;br /&gt;
    emitter - object (read only) - for specifying the attributes of a sub-emitter&lt;br /&gt;
    font - string - text font name&lt;br /&gt;
    green - float - green color value (0-1)&lt;br /&gt;
    image - string - image filename&lt;br /&gt;
    layer - integer - 4 or higher for particle which move in screen coordinates, below 4 for level coordinates&lt;br /&gt;
    mode - integer - the image drawing mode (0 - add, 1 - transparent, 2 - subtract, 3 - daynight)&lt;br /&gt;
    playerlook - boolean - if the animation should take it's head, body, sword, shield and attr[] from the owner (playerlook), set this to false if you want to set the images yourself by changing showimg.actor.head etc.&lt;br /&gt;
    polygon - object - array of coordinates for displaying a 2 or 3 dimensional polygon&lt;br /&gt;
    red - float - red color value (0-1)&lt;br /&gt;
    rotation - float - defines in which direction the particle graphics is facing&lt;br /&gt;
    stretchx - float - horizontal particle graphics stretch factor (default 1)&lt;br /&gt;
    stretchy - float - vertical particle graphics stretch factor (default 1)&lt;br /&gt;
    style - string - text style (e.g. &amp;quot;b&amp;quot; for bold text)&lt;br /&gt;
    text - string - a text that should be displayed on the SHOWIMG position&lt;br /&gt;
    zoom - float - zoom factor of the particle graphics or text&lt;br /&gt;
&lt;br /&gt;
==Add particle modifiers==&lt;br /&gt;
&lt;br /&gt;
Once you have setup the SHOWIMG and specified the attributes of the emitter and default particle, you can also specify particle modifiers so that the particles are not always flying into the same direction and look the same. There are 3 different functions, for modifying the default particle addemitmodifier(), for modifying all existing particles addglobalmodifier(), and for modifying the attributes for each particle individually addlocalmodifier(). The local modifiers are the most often used modifier.&lt;br /&gt;
Parameters are:&lt;br /&gt;
  modifier type - once,impulse or range - modifies the particle one time, periodically or only in the given time range&lt;br /&gt;
  rangemin - seconds, minimum delay until first modification or start of modification range (if modifier is &amp;quot;range&amp;quot;)&lt;br /&gt;
  rangemax - seconds, maximum delay until first modification or end of modification range (if modifier is &amp;quot;range&amp;quot;)&lt;br /&gt;
  variable - x,y,z,movex,movey,movez,angle,zangle,speed,rotation,spin,stretchx,stretchy,red,green,blue,alpha or zoom&lt;br /&gt;
  variable modification type - replace,add or multiply (if modifier type is &amp;quot;range&amp;quot; then only &amp;quot;replace&amp;quot; and &amp;quot;add&amp;quot; are valid)&lt;br /&gt;
  valuemin - range start of the random value or first value to set/add (if modifier is &amp;quot;range&amp;quot;)&lt;br /&gt;
  valuemax - range end of the random value or last value to set/add (if modifier is &amp;quot;range&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Those 3 functions addemitmodifier(), addglobalmodifier() and addlocalmodifier() are returning a modifier object which can be used to attach more variable modifications to the same impulse:&lt;br /&gt;
&lt;br /&gt;
  with (addlocalmodifier(&amp;quot;impulse&amp;quot;,1,2,&amp;quot;angle&amp;quot;,&amp;quot;replace&amp;quot;,0,pi)) {&lt;br /&gt;
    addmod(&amp;quot;zoom&amp;quot;,&amp;quot;add&amp;quot;,0.1,0.2);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
This example is modifying the angle each 1-2 seconds, and at the same time it is zooming the particle so that it grows bigger. If you don't need to have the two modifiers act at the same moment, then you could have called addlocalmodifier(&amp;quot;impulse&amp;quot;,1,2,&amp;quot;zoom&amp;quot;,&amp;quot;add&amp;quot;,0.1,0.2) which looks quite the same, but is not guaranteed to happen at the same moment like the first modifier. Most of the time you don't need the addmod-function though.&lt;br /&gt;
&lt;br /&gt;
==Manually emitting particles==&lt;br /&gt;
&lt;br /&gt;
If you have done the things mentioned in the previous steps, then the particle emitter is automatically emitting particles after the time specified with delaymin and delaymax. If you don't want that particles are automatically emitted, then set emitautomatically to false and call emitter.emit() directly.&lt;br /&gt;
&lt;br /&gt;
==Controlling the particle emitter==&lt;br /&gt;
&lt;br /&gt;
You can modify the particle emitter at any time by using the &amp;quot;with (findimg(index))&amp;quot; construct again as mentioned in &amp;quot;Create a SHOWIMG&amp;quot; chapter. To change the position where the particles are emitted you can just change the position of the SHOWIMG, e.g. moving it to the player position so that the particles are always emitted where the player stands.&lt;br /&gt;
&lt;br /&gt;
It can also be interesting to watch the number of particles that the emitter has emitted, you can read the variables &amp;quot;currentparticlecount&amp;quot; and &amp;quot;emittedparticles&amp;quot; for that:&lt;br /&gt;
&lt;br /&gt;
  TParticleEmitter (TGraalVar):&lt;br /&gt;
    currentparticlecount - integer (read only) - for watching how many particles exist&lt;br /&gt;
    emittedparticles - integer (read only) - for seeing how many particles have been emitted in total&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&lt;br /&gt;
  emitter&lt;br /&gt;
    attachposition - Tells whether or not x/y position of particles is relative to the position of the emitter. Also tells if particles should move when the emitter is moved.&lt;br /&gt;
    autorotation - Must be ture for making the particle heading into the direction it flies (rotation=angle)&lt;br /&gt;
    checkbelowterrain - If true, the particle will be destroyed if it falls below the terrain height (0 for flat GMaps)&lt;br /&gt;
    clippingbox - Format of {x1,y1,z1,x2,y2,z2}, particles that leave this box will be destroyed&lt;br /&gt;
    cliptoscreen - boolean - automatically resizes the clipping box to the visible area&lt;br /&gt;
    continueafterdestroy - boolean&lt;br /&gt;
    currentparticlecount - Current number of particles that exist&lt;br /&gt;
    delaymin - Minimum time before another particle is emitted&lt;br /&gt;
    delaymax - Maximum time before another particle is emitted&lt;br /&gt;
    emissionoffset - How far away from the emitter (or the level if attachposition=false) to emit particles. Format: {x,y,z}&lt;br /&gt;
    emittedparticles - Total number of particles that have been emitted&lt;br /&gt;
    firstinfront - Tells whether particles drawn after the first particle should draw on top or below the first&lt;br /&gt;
    maxparticles - Maximum number of particles that can exist at once&lt;br /&gt;
    nrofparticles - Number of particles to release at once&lt;br /&gt;
    isfrozen - Boolean, stops all particles if true&lt;br /&gt;
    wraptoclippingbox - boolean - if a particle leaves on one side, it appears on the other side (use with &amp;quot;cliptoscreen&amp;quot; option)&lt;br /&gt;
    dropemitter - TParticleEmitter - works exactly like the emitter itself and are used for emitting particles once a particle drops on the ground (rain drops) or the lifetime is over (for fireworks)&lt;br /&gt;
    dropwateremitter - TParticleEmitter - see dropemitter&lt;br /&gt;
&lt;br /&gt;
    particle&lt;br /&gt;
      lifetime - Time (in seconds) before a particle is destroyed&lt;br /&gt;
      image - Image to use for the particle&lt;br /&gt;
      mode - Drawing mode of the image. (0 = add, 1 = replace, 2 = subtract, 3 = daynight) See changeimgmode&lt;br /&gt;
      alpha - Alpha transparency of a particle (0 = invisible, 1 = opaque)&lt;br /&gt;
      zoom - Zoomfactor of a particle&lt;br /&gt;
      angle - Movement angle for the particle (for x/y)&lt;br /&gt;
      zangle - Up/down movement angle for the particle&lt;br /&gt;
      speed - How many tiles or pixels the particle should move (depends on if its in a level or on the GUI)&lt;br /&gt;
      rotation - Angle for rotating the image (set autorotation=true to automatically set rotation=angle)&lt;br /&gt;
      spin - How much the image should be rotated each second, can be postive and negative&lt;br /&gt;
      stretchx - How much to stretch the particle image horizontally&lt;br /&gt;
      stretchy - How much to stretch the particle image vertically&lt;br /&gt;
      red, green, blue - Used to change color of particle&lt;br /&gt;
      dimension - Polygon dimension (2 or 3)&lt;br /&gt;
      movementvector - Format is {float,float,float}, a combination of x, y and z&lt;br /&gt;
&lt;br /&gt;
    Emitter functions:&lt;br /&gt;
    addlocalmodifier(&amp;quot;string&amp;quot;,float,float,&amp;quot;string&amp;quot;,&amp;quot;string&amp;quot;,float,float)&lt;br /&gt;
      Parameters:&lt;br /&gt;
      First - Tells when to do an action&lt;br /&gt;
        once - Do it once&lt;br /&gt;
        range - Do the action during the range of time param2-param3&lt;br /&gt;
        impulse - Do it randomly&lt;br /&gt;
      Second - Tells the minimum time to wait before doing an action (except for 'range')&lt;br /&gt;
      Third - Tells the maximum time to wait before doing an action (except for 'range')&lt;br /&gt;
      Fourth - Tells what action to perform&lt;br /&gt;
        Everything under &amp;quot;particle&amp;quot; except for the following can be changed: image , text, ani, font, movementvector, style&lt;br /&gt;
        x - x position of the particle&lt;br /&gt;
        y - y position of the particle&lt;br /&gt;
        z - z position of the particle&lt;br /&gt;
        movex - How far the particle should move horizontally in its lifetime&lt;br /&gt;
        movey - How far the particle should move vertically in its lifetime&lt;br /&gt;
        movez - How far the particle should move above the ground in its lifetime&lt;br /&gt;
      Fifth - Tells what to do with parameters 6 and 7&lt;br /&gt;
        add - Add the amount (use negatives to subtract)&lt;br /&gt;
        replace - Set a new amount&lt;br /&gt;
        multiply - Multiply the amount (use negatives to divide)&lt;br /&gt;
      Sixth - Minimum amount&lt;br /&gt;
      Seventh - Maximum amount&lt;br /&gt;
    addglobalmodifier() - Same as addlocalmodifier, except it affects all particles at once&lt;br /&gt;
    addemitmodifier() - Same as addlocalmodifier, except it only affects emitter.particle&lt;br /&gt;
    addmod() - Used in conjunction with addlocalmodifier, same parameters except no parameters 1-3&lt;br /&gt;
    emit() - Do one emission&lt;br /&gt;
    removemodifiers() - Remove modifiers set&lt;br /&gt;
    removeparticles() - Remove particles&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
with (findimg(200)) {&lt;br /&gt;
  emitter.nrofparticles = 1;&lt;br /&gt;
  emitter.particle.image = &amp;quot;block.png&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
with (findimg(200)) {&lt;br /&gt;
  // Chimney&lt;br /&gt;
  &lt;br /&gt;
  // Emitter attributes&lt;br /&gt;
  layer = 2;&lt;br /&gt;
  emitter.delaymin = 0.1;&lt;br /&gt;
  emitter.delaymax = 0.2;&lt;br /&gt;
  emitter.nrofparticles = 1;&lt;br /&gt;
&lt;br /&gt;
  // Basic particle attributes&lt;br /&gt;
  emitter.particle.lifetime = 3;&lt;br /&gt;
  emitter.particle.image = &amp;quot;g4_particle_smoke.png&amp;quot;;&lt;br /&gt;
  emitter.particle.mode = 1; // alpha transparent&lt;br /&gt;
  emitter.particle.alpha = 0.8;&lt;br /&gt;
  emitter.particle.zoom = 1;&lt;br /&gt;
&lt;br /&gt;
  // Movement&lt;br /&gt;
  emitter.particle.angle = pi / 2;&lt;br /&gt;
  emitter.particle.speed = 8;&lt;br /&gt;
  emitter.addglobalmodifier(&amp;quot;impulse&amp;quot;, 0.2, 0.2, &amp;quot;spin&amp;quot;, &amp;quot;multiply&amp;quot;, 0.9, 0.9);&lt;br /&gt;
  emitter.addlocalmodifier(&amp;quot;once&amp;quot;, 0, 0, &amp;quot;angle&amp;quot;, &amp;quot;add&amp;quot;, -0.2, 0.2);&lt;br /&gt;
  emitter.addlocalmodifier(&amp;quot;once&amp;quot;, 0, 0, &amp;quot;rotation&amp;quot;, &amp;quot;replace&amp;quot;, 0, 2*pi);&lt;br /&gt;
  emitter.addlocalmodifier(&amp;quot;range&amp;quot;, 1, 3, &amp;quot;alpha&amp;quot;, &amp;quot;replace&amp;quot;, 0.8, 0);&lt;br /&gt;
  emitter.addlocalmodifier(&amp;quot;range&amp;quot;, 0, 3, &amp;quot;zoom&amp;quot;, &amp;quot;add&amp;quot;, 0.25, 0.25);&lt;br /&gt;
  emitter.addlocalmodifier(&amp;quot;range&amp;quot;, 0, 0.5, &amp;quot;speed&amp;quot;, &amp;quot;replace&amp;quot;, 12, 4);&lt;br /&gt;
  emitter.addlocalmodifier(&amp;quot;range&amp;quot;, 0.5, 3, &amp;quot;speed&amp;quot;, &amp;quot;replace&amp;quot;, 4, 1.5);&lt;br /&gt;
  emitter.addlocalmodifier(&amp;quot;once&amp;quot;, 0, 0, &amp;quot;spin&amp;quot;, &amp;quot;replace&amp;quot;, 2, 4);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Useful articles==&lt;br /&gt;
[[Creation/Dev/Script/Client/TParticleEmitter]]&lt;br /&gt;
&lt;br /&gt;
[[Creation/Dev/Script/Client/TParticle]]&lt;br /&gt;
&lt;br /&gt;
[[Creation/Dev/Releases/Client/4.03]]&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=News/2009/March&amp;diff=11864</id>
		<title>News/2009/March</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=News/2009/March&amp;diff=11864"/>
		<updated>2009-03-28T03:50:30Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* March */  Missed an it's/its confusion.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== March ===&lt;br /&gt;
&lt;br /&gt;
* '''March 27th''' - '''Maloria, A glimpse through the keyhole''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
Many may remember Maloria as the dominant classic RPG server before it was closed for redevelopment. Maloria has improved many of its systems and game content for the users to enjoy.&lt;br /&gt;
&lt;br /&gt;
The overworld is being revamped to improve the detail and quality of the levels while keeping the same geographical layout of islands that were all used from the good old days. But that's not all; plans for new islands to be implemented into the expanding overworld is one of many big changes to expect. It's safe to say that you will not be disappointed with the final result.&lt;br /&gt;
&lt;br /&gt;
[[Image:MaloriaNews Overworld.png]]&lt;br /&gt;
&lt;br /&gt;
The shopping interfaces have been improved to be user friendly with clear and simple GUI. The interface has five easy to use tabs to direct you to the inventory for that respected tab. Each weapon, piece of armour and potion displays an informative range of statistics to aid you in buying the perfect item for whatever you need. &lt;br /&gt;
&lt;br /&gt;
[[Image:MaloriaNews Shopping.png]]&lt;br /&gt;
&lt;br /&gt;
The events system is automated to host regular events that are usually hosted by events staff, with a wide range of prizes to be won. It will provide players with a chance to practice for when the dedicated events staff host their frequent events.&lt;br /&gt;
&lt;br /&gt;
The mining system has been improved for a richer experience. Materials can be obtained by using a pick axe to break open rocks and then using the pan in the water in the usual fashion. There is now an additional option to refine these materials using a furnace.&lt;br /&gt;
&lt;br /&gt;
[[Image:MaloriaNews Maining.png]]&lt;br /&gt;
&lt;br /&gt;
Dungeon bosses such as the giant turtle use deadly melee and magic attacks to deal great damage to foes. The addition of these new monsters will promote group hunting. The idea of bringing down large creatures with your party of fellow adventurers has got to be interesting.&lt;br /&gt;
&lt;br /&gt;
[[Image:MaloriaNews Boss.png]]&lt;br /&gt;
&lt;br /&gt;
Various different spells have been revisited and freshened up with exciting new graphics and ganis to make the spells look better than ever.&lt;br /&gt;
&lt;br /&gt;
A new quest system has been implemented with a clear list of active quests and descriptions of the quest objectives.&lt;br /&gt;
&lt;br /&gt;
[[Image:MaloriaNews Questlog.png]]&lt;br /&gt;
&lt;br /&gt;
Nation warfare has been developed with the addition of siege equipment to improve player vs player combat with destructible nation castles.&lt;br /&gt;
&lt;br /&gt;
* '''March 21st''' - '''CastleWars on N-Pulse''' {{News/Playerworlds}}&lt;br /&gt;
N-Pulse is currently having a weekly Castle War event. The Castle Wars events are similiar to a guild war, and the goal is to determine the best guild.&lt;br /&gt;
&lt;br /&gt;
The Castle War event will be held weekly on Wednesdays between 7-8 PM EST (12-1AM GMT, and 0:00-1:00 server time). The Castle War events will also be hosted randomly during the week, so guilds be prepared! Prizes are also awarded.&lt;br /&gt;
&lt;br /&gt;
* '''March 14th''' - '''Zone News Window''' {{News/Zone}}&lt;br /&gt;
&lt;br /&gt;
Zone Staff added the news window to allow for players to keep track of what happens on Zone! The news window opens on login and the news window also opens when clicking on News in the upper right corner of the stat display. Currently the news window logs event messages, race results, deathmatch winners, kills, purchases and medals. You can either watch the important or all messages, it will display the 25 most recent news. Ideas to extend this feature are welcome!&lt;br /&gt;
&lt;br /&gt;
[[Image:ZoneNewsWindow.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''March 14th''' - '''Kart Race Tournament''' {{News/Graal_Kingdoms}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Kartraceevent.png]]&lt;br /&gt;
&lt;br /&gt;
After 2 hours and 30 minutes, we finally had the winners from the Graal Kingdoms&lt;br /&gt;
Kart Race Tournament!&lt;br /&gt;
&lt;br /&gt;
Winners:&lt;br /&gt;
&lt;br /&gt;
1) Jcs1919 won the Elven Boots and 5 event coins&lt;br /&gt;
&lt;br /&gt;
2) Alex51 won 3 event coins&lt;br /&gt;
&lt;br /&gt;
3) CriticalError won 1 event coin&lt;br /&gt;
&lt;br /&gt;
Jcs1919 also did the best run with 48.46 seconds!&lt;br /&gt;
&lt;br /&gt;
* '''March 10th''' - '''N-Pulse Rebirth''' {{News/Playerworlds}}&lt;br /&gt;
N-Pulse is continuing in it's development of N-Pulse Rebirth.&lt;br /&gt;
&lt;br /&gt;
What is Rebirth? To be exact, N-Pulse Rebirth is going to be an RPG-themed server, and we actually mean that. You will have to complete tasks in order to advance through the world, instead of just s-key mashing (in other words, hitting your attack-button constantly). It may require thinking, or it may require fighting. You also don't pick a class, but rather you can choose in which areas you'd like to level up in. We have our own staff-team specific for the Rebirth development, called &amp;quot;Operations&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We, the Operations Team, are in need of the following:&lt;br /&gt;
*'''Concept Design''' - you need to be able to write stories and the concept to the game.&lt;br /&gt;
*'''Graphics Design''' - you will need to be able to create items, icons, weapons, etc.&lt;br /&gt;
*'''Levels Design''' - you must be able to work with our custom tiles and know how to work with GMaps, inside and outside levels, and a bit of level-scripting.&lt;br /&gt;
*'''Programming Design''' - you must be able to create systems, fix bugs in previous scripts, and works with an MUD.&lt;br /&gt;
*'''Special Effects''' - you must either be able to make Ganis of swords/items/monsters interacting and/or make sounds of things you'd see in an RPG (swords clashing, swinging, etc.)&lt;br /&gt;
If you'd like to help with the Rebirth project and join the Operations team, feel free to log on N-Pulse and speak with a Chief of Operations or one of the Operation's Branch Captains.&lt;br /&gt;
&lt;br /&gt;
For more info, please see the [http://forums.graalonline.com/forums/showthread.php?t=83724 official GraalOnline hiring thread].&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=News/2009/March&amp;diff=11862</id>
		<title>News/2009/March</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=News/2009/March&amp;diff=11862"/>
		<updated>2009-03-28T03:36:25Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: Fixed comma splice, run-on sentence, strange indirectness and misspellings.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== March ===&lt;br /&gt;
&lt;br /&gt;
* '''March 27th''' - '''Maloria, A glimpse through the keyhole''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
Many may remember Maloria as the dominant classic RPG server before it was closed for redevelopment. Maloria has improved many of it's systems and game content for the users to enjoy.&lt;br /&gt;
&lt;br /&gt;
The overworld is being revamped to improve the detail and quality of the levels while keeping the same geographical layout of islands that were all used from the good old days. But that's not all; plans for new islands to be implemented into the expanding overworld is one of many big changes to expect. It's safe to say that you will not be disappointed with the final result.&lt;br /&gt;
&lt;br /&gt;
[[Image:MaloriaNews Overworld.png]]&lt;br /&gt;
&lt;br /&gt;
The shopping interfaces have been improved to be user friendly with clear and simple GUI. The interface has five easy to use tabs to direct you to the inventory for that respected tab. Each weapon, piece of armour and potion displays an informative range of statistics to aid you in buying the perfect item for whatever you need. &lt;br /&gt;
&lt;br /&gt;
[[Image:MaloriaNews Shopping.png]]&lt;br /&gt;
&lt;br /&gt;
The events system is automated to host regular events that are usually hosted by events staff, with a wide range of prizes to be won. It will provide players with a chance to practice for when the dedicated events staff host their frequent events.&lt;br /&gt;
&lt;br /&gt;
The mining system has been improved for a richer experience. Materials can be obtained by using a pick axe to break open rocks and then using the pan in the water in the usual fashion. There is now an additional option to refine these materials using a furnace.&lt;br /&gt;
&lt;br /&gt;
[[Image:MaloriaNews Maining.png]]&lt;br /&gt;
&lt;br /&gt;
Dungeon bosses such as the giant turtle use deadly melee and magic attacks to deal great damage to foes. The addition of these new monsters will promote group hunting. The idea of bringing down large creatures with your party of fellow adventurers has got to be interesting.&lt;br /&gt;
&lt;br /&gt;
[[Image:MaloriaNews Boss.png]]&lt;br /&gt;
&lt;br /&gt;
Various different spells have been revisited and freshened up with exciting new graphics and ganis to make the spells look better than ever.&lt;br /&gt;
&lt;br /&gt;
A new quest system has been implemented with a clear list of active quests and descriptions of the quest objectives.&lt;br /&gt;
&lt;br /&gt;
[[Image:MaloriaNews Questlog.png]]&lt;br /&gt;
&lt;br /&gt;
Nation warfare has been developed with the addition of siege equipment to improve player vs player combat with destructible nation castles.&lt;br /&gt;
&lt;br /&gt;
* '''March 21st''' - '''CastleWars on N-Pulse''' {{News/Playerworlds}}&lt;br /&gt;
N-Pulse is currently having a weekly Castle War event. The Castle Wars events are similiar to a guild war, and the goal is to determine the best guild.&lt;br /&gt;
&lt;br /&gt;
The Castle War event will be held weekly on Wednesdays between 7-8 PM EST (12-1AM GMT, and 0:00-1:00 server time). The Castle War events will also be hosted randomly during the week, so guilds be prepared! Prizes are also awarded.&lt;br /&gt;
&lt;br /&gt;
* '''March 14th''' - '''Zone News Window''' {{News/Zone}}&lt;br /&gt;
&lt;br /&gt;
Zone Staff added the news window to allow for players to keep track of what happens on Zone! The news window opens on login and the news window also opens when clicking on News in the upper right corner of the stat display. Currently the news window logs event messages, race results, deathmatch winners, kills, purchases and medals. You can either watch the important or all messages, it will display the 25 most recent news. Ideas to extend this feature are welcome!&lt;br /&gt;
&lt;br /&gt;
[[Image:ZoneNewsWindow.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''March 14th''' - '''Kart Race Tournament''' {{News/Graal_Kingdoms}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Kartraceevent.png]]&lt;br /&gt;
&lt;br /&gt;
After 2 hours and 30 minutes, we finally had the winners from the Graal Kingdoms&lt;br /&gt;
Kart Race Tournament!&lt;br /&gt;
&lt;br /&gt;
Winners:&lt;br /&gt;
&lt;br /&gt;
1) Jcs1919 won the Elven Boots and 5 event coins&lt;br /&gt;
&lt;br /&gt;
2) Alex51 won 3 event coins&lt;br /&gt;
&lt;br /&gt;
3) CriticalError won 1 event coin&lt;br /&gt;
&lt;br /&gt;
Jcs1919 also did the best run with 48.46 seconds!&lt;br /&gt;
&lt;br /&gt;
* '''March 10th''' - '''N-Pulse Rebirth''' {{News/Playerworlds}}&lt;br /&gt;
N-Pulse is continuing in it's development of N-Pulse Rebirth.&lt;br /&gt;
&lt;br /&gt;
What is Rebirth? To be exact, N-Pulse Rebirth is going to be an RPG-themed server, and we actually mean that. You will have to complete tasks in order to advance through the world, instead of just s-key mashing (in other words, hitting your attack-button constantly). It may require thinking, or it may require fighting. You also don't pick a class, but rather you can choose in which areas you'd like to level up in. We have our own staff-team specific for the Rebirth development, called &amp;quot;Operations&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We, the Operations Team, are in need of the following:&lt;br /&gt;
*'''Concept Design''' - you need to be able to write stories and the concept to the game.&lt;br /&gt;
*'''Graphics Design''' - you will need to be able to create items, icons, weapons, etc.&lt;br /&gt;
*'''Levels Design''' - you must be able to work with our custom tiles and know how to work with GMaps, inside and outside levels, and a bit of level-scripting.&lt;br /&gt;
*'''Programming Design''' - you must be able to create systems, fix bugs in previous scripts, and works with an MUD.&lt;br /&gt;
*'''Special Effects''' - you must either be able to make Ganis of swords/items/monsters interacting and/or make sounds of things you'd see in an RPG (swords clashing, swinging, etc.)&lt;br /&gt;
If you'd like to help with the Rebirth project and join the Operations team, feel free to log on N-Pulse and speak with a Chief of Operations or one of the Operation's Branch Captains.&lt;br /&gt;
&lt;br /&gt;
For more info, please see the [http://forums.graalonline.com/forums/showthread.php?t=83724 official GraalOnline hiring thread].&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=News/2009/March&amp;diff=11690</id>
		<title>News/2009/March</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=News/2009/March&amp;diff=11690"/>
		<updated>2009-03-15T22:18:17Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* March */  Spelling, spelling, spelling, speeling.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== March ===&lt;br /&gt;
&lt;br /&gt;
* '''March 14th''' - '''Kart Race Tournament''' {{News/Graal Kingdoms}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Kartraceevent.png]]&lt;br /&gt;
&lt;br /&gt;
After 2 hours and 30 minutes, we finally had the winners from the Graal Kingdoms&lt;br /&gt;
Kart Race Tournament!&lt;br /&gt;
&lt;br /&gt;
Winners:&lt;br /&gt;
&lt;br /&gt;
1) Jcs1919 won the Elven Boots and 5 event coins&lt;br /&gt;
&lt;br /&gt;
2) Alex51 won 3 event coins&lt;br /&gt;
&lt;br /&gt;
3) CriticalError won 1 event coin&lt;br /&gt;
&lt;br /&gt;
Jcs1919 also did the best run with 48.46 seconds!&lt;br /&gt;
&lt;br /&gt;
* '''March 10th''' - '''N-Pulse Rebirth''' {{News/Playerworlds}}&lt;br /&gt;
N-Pulse is continuing in it's development of N-Pulse Rebirth.&lt;br /&gt;
&lt;br /&gt;
What is Rebirth? To be exact, N-Pulse Rebirth is going to be an RPG-themed server, and we actually mean that. You will have to complete tasks in order to advance through the world, instead of just s-key mashing (in other words, hitting your attack-button constantly). It may require thinking, or it may require fighting. You also don't pick a class, but rather you can choose in which areas you'd like to level up in. We have our own staff-team specific for the Rebirth development, called &amp;quot;Operations&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We, the Operations Team, are in need of the following:&lt;br /&gt;
*'''Concept Design''' - you need to be able to right stories and the concept to the game.&lt;br /&gt;
*'''Graphics Design''' - you will need to be able to create items, icons, weapons, etc.&lt;br /&gt;
*'''Levels Design''' - you must be able to work with our custom tiles and know how to work with GMaps, inside and outside levels, and a bit of level-scripting.&lt;br /&gt;
*'''Programming Design''' - you must be able to create systems, fix bugs in previous scripts, and works with an MUD.&lt;br /&gt;
*'''Special Effects''' - you must either be able to make Ganis of swords/items/monsters interacting and/or make sounds of things you'd see in an RPG (swords clashing, swinging, etc.)&lt;br /&gt;
If you'd like to help with the Rebirth project and join the Operations team, feel free to log on N-Pulse and speak with a Chief of Operations or one of the Operation's Branch Captains.&lt;br /&gt;
&lt;br /&gt;
For more info, please see the [http://forums.graalonline.com/forums/showthread.php?t=83724 official GraalOnline hiring thread].&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/Script/Client/GuiControl&amp;diff=11689</id>
		<title>Creation/Dev/Script/Client/GuiControl</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/Script/Client/GuiControl&amp;diff=11689"/>
		<updated>2009-03-15T22:07:00Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Variables */ Rephrasing previous edit.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Script_Object}}&lt;br /&gt;
&lt;br /&gt;
Inherits from [[Creation/Dev/Script/Client/TGraalVar|TGraalVar]].&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&lt;br /&gt;
[[Image:Guicontrol_panel.png]]&lt;br /&gt;
&lt;br /&gt;
GuiControl is the base control, therefore general functions listed here are available to all GUI controls. Most of the time it is used as container for positioning groups of other controls. It can either have a border (border=1..5) or just be plain transparent, and just display its child controls.&lt;br /&gt;
&lt;br /&gt;
=Variables=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Type'''&lt;br /&gt;
| '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| active&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| awake&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| canmove&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| canresize&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| controls&lt;br /&gt;
| object (read only; see ''addControl()'')&lt;br /&gt;
| array of [[Creation/Dev/Script/Client/GuiControl|GuiControl]] (subcontrols)&lt;br /&gt;
|-&lt;br /&gt;
| editing&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| extent&lt;br /&gt;
| string&lt;br /&gt;
| Can be used instead of width and height. Used like this: &amp;quot;123 456&amp;quot;, where 123 is width and 456 is height. There is some syntactic sugar that allows you to treat it like an array, which does not work when you try to assign to e.g extent[0].&lt;br /&gt;
|-&lt;br /&gt;
| flickering&lt;br /&gt;
| boolean&lt;br /&gt;
| Allows the control to periodically show/hide itself.&lt;br /&gt;
|-&lt;br /&gt;
| flickertime&lt;br /&gt;
| integer&lt;br /&gt;
| The time between the show and hides in flickering.&lt;br /&gt;
|-&lt;br /&gt;
| height&lt;br /&gt;
| integer&lt;br /&gt;
| can be used instead of extent&lt;br /&gt;
|-&lt;br /&gt;
| hint&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| horizsizing&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| layer&lt;br /&gt;
| integer (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| minextent&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| minsize&lt;br /&gt;
| string&lt;br /&gt;
| the same like &amp;quot;minExtent&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| parent&lt;br /&gt;
| object (read only)&lt;br /&gt;
| a [[Creation/Dev/Script/Client/GuiControl|GuiControl]]&lt;br /&gt;
|-&lt;br /&gt;
| position&lt;br /&gt;
| string&lt;br /&gt;
| Can be used instead of x and y. Used like this: &amp;quot;123 456&amp;quot;, where 123 is x and 456 is y. There is some syntactic sugar that allows you to treat it like an array, which does not work when you try to assign to e.g position[0].&lt;br /&gt;
|-&lt;br /&gt;
| profile&lt;br /&gt;
| object&lt;br /&gt;
| see [[Creation/Dev/Script/Client/GuiControlProfile|GuiControlProfile]]&lt;br /&gt;
|-&lt;br /&gt;
| resizeheight&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| resizewidth&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scrolllinex&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scrollliney&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| showhint&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| useownprofile&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| vertsizing&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| visible&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| width&lt;br /&gt;
| integer&lt;br /&gt;
| can be used instead of extent&lt;br /&gt;
|-&lt;br /&gt;
| x&lt;br /&gt;
| integer&lt;br /&gt;
| can be used instead of position&lt;br /&gt;
|-&lt;br /&gt;
| y&lt;br /&gt;
| integer&lt;br /&gt;
| can be used instead of position&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Functions=&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Return Type'''&lt;br /&gt;
| '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| addcontrol(obj)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| bringtofront()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| clearControls()&lt;br /&gt;
|&lt;br /&gt;
| Removes all controls at once&lt;br /&gt;
|-&lt;br /&gt;
| destroy()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| getparent()&lt;br /&gt;
| object&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| globaltolocalcoord({x,y})&lt;br /&gt;
| {x,y}&lt;br /&gt;
| converts global screen coordinates to a position relative to the controls origin (0,0), can be used to know where exactly the user has clicked inside a control&lt;br /&gt;
|-&lt;br /&gt;
| hide()&lt;br /&gt;
|&lt;br /&gt;
| Hide the control&lt;br /&gt;
|-&lt;br /&gt;
| isfirstresponder()&lt;br /&gt;
| boolean&lt;br /&gt;
| Returns whether or not this control is the first responder&lt;br /&gt;
|-&lt;br /&gt;
| localtoglobalcoord({x,y})&lt;br /&gt;
| {x,y}&lt;br /&gt;
| converts a position relative to the controls origin (0,0) to global screen coordinates, can be used to know where on the screen a control is displayed in case it is a child of another control (e.g. GuiWindowCtrl or GuiScrollCtrl)&lt;br /&gt;
|-&lt;br /&gt;
| makefirstresponder(bool)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| pushtoback()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| resize(int x, int y, int width, int height)&lt;br /&gt;
|&lt;br /&gt;
| Resize the control&lt;br /&gt;
|-&lt;br /&gt;
| show()&lt;br /&gt;
|&lt;br /&gt;
| Show the control&lt;br /&gt;
|-&lt;br /&gt;
| showtop()&lt;br /&gt;
|&lt;br /&gt;
| calls show(), tabfirst() and bringtofront()&lt;br /&gt;
|-&lt;br /&gt;
| tabfirst()&lt;br /&gt;
| object&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Events=&lt;br /&gt;
&lt;br /&gt;
onAdd() - is invoked when the control is added to another control (addcontrol)&lt;br /&gt;
&lt;br /&gt;
onRemove() - is invoked when the control is removed from its parent&lt;br /&gt;
&lt;br /&gt;
onShow() - is invoked when the control is shown or gets awakened while being 'visible'&lt;br /&gt;
&lt;br /&gt;
onHide() - is invoked when the control is made hidden&lt;br /&gt;
&lt;br /&gt;
onWake() - is invoked when the control is awakened and becomes visible on the screen&lt;br /&gt;
&lt;br /&gt;
onSleep() - is invoked for windows when a dialog window is removed from the screen&lt;br /&gt;
&lt;br /&gt;
onMove(newx,newy) - is invoked when the control is moved&lt;br /&gt;
&lt;br /&gt;
onResize(newwidth,newheight) - is invoked when the control is resized&lt;br /&gt;
&lt;br /&gt;
onAction() - is invoked when a button control is pressed, you press the enter-key in a text edit control, or move a slider control, &lt;br /&gt;
&lt;br /&gt;
onDialogPush() - is invoked when a dialog control is placed on the screen (using pushDialog(control))&lt;br /&gt;
&lt;br /&gt;
onDialogPop() - is invoked when a dialog control is removed from the screen again (using popDialog())&lt;br /&gt;
&lt;br /&gt;
onKeyDown(keycode,keystring,scancode) - a key has been pressed while the control had the input focus (makeFirstResponder())&lt;br /&gt;
&lt;br /&gt;
onKeyUp(keycode,keystring,scancode) - the key has been released&lt;br /&gt;
&lt;br /&gt;
onMouseYawPitch(xaxis,yaxis) - mouse event in Graal3D when the mouse has been turned off&lt;br /&gt;
&lt;br /&gt;
onMouseDown(keymodifier,mousescreenx,mousescreeny,clickcount) - the left mouse button has been pressed inside this control&lt;br /&gt;
&lt;br /&gt;
onMouseUp(keymodifier,mousescreenx,mousescreeny) - the left mouse button has been released&lt;br /&gt;
&lt;br /&gt;
onMouseEnter(keymodifier,mousescreenx,mousescreeny) - the mouse moved inside this control&lt;br /&gt;
&lt;br /&gt;
onMouseLeave(keymodifier,mousescreenx,mousescreeny) - the mouse left the control&lt;br /&gt;
&lt;br /&gt;
onMouseDragged(keymodifier,mousescreenx,mousescreeny) - the mouse is moved while the left mouse button is pressed&lt;br /&gt;
&lt;br /&gt;
onMouseMove(keymodifier,mousescreenx,mousescreeny) - the mouse has been moved&lt;br /&gt;
&lt;br /&gt;
onRightMouseDown(keymodifier,mousescreenx,mousescreeny,clickcount) - the right mouse button has been pressed&lt;br /&gt;
&lt;br /&gt;
onRightMouseUp(keymodifier,mousescreenx,mousescreeny) - the right mouse button has been released&lt;br /&gt;
&lt;br /&gt;
onRightMouseDragged(keymodifier,mousescreenx,mousescreeny) - the mouse has been moved while the right mouse button is pressed&lt;br /&gt;
&lt;br /&gt;
onMouseWheelUp(keymodifier) - the mouse wheel has been scrolled up&lt;br /&gt;
&lt;br /&gt;
onMouseWheelDown(keymodifier) - the mouse wheel has been scrolled down&lt;br /&gt;
&lt;br /&gt;
=Example=&lt;br /&gt;
&lt;br /&gt;
  new GuiControl(&amp;quot;Test_Back&amp;quot;) {&lt;br /&gt;
    useownprofile = true;&lt;br /&gt;
    profile.border = 3;&lt;br /&gt;
    x = 10;&lt;br /&gt;
    y = 10;&lt;br /&gt;
    width = 160;&lt;br /&gt;
    height = 80;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
{{:Creation/Dev/Script/Client}}&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/Script/Client/GuiControl&amp;diff=11688</id>
		<title>Creation/Dev/Script/Client/GuiControl</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/Script/Client/GuiControl&amp;diff=11688"/>
		<updated>2009-03-15T22:04:14Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Variables */  position, extent and syntactic sugar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Script_Object}}&lt;br /&gt;
&lt;br /&gt;
Inherits from [[Creation/Dev/Script/Client/TGraalVar|TGraalVar]].&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&lt;br /&gt;
[[Image:Guicontrol_panel.png]]&lt;br /&gt;
&lt;br /&gt;
GuiControl is the base control, therefore general functions listed here are available to all GUI controls. Most of the time it is used as container for positioning groups of other controls. It can either have a border (border=1..5) or just be plain transparent, and just display its child controls.&lt;br /&gt;
&lt;br /&gt;
=Variables=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Type'''&lt;br /&gt;
| '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| active&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| awake&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| canmove&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| canresize&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| controls&lt;br /&gt;
| object (read only; see ''addControl()'')&lt;br /&gt;
| array of [[Creation/Dev/Script/Client/GuiControl|GuiControl]] (subcontrols)&lt;br /&gt;
|-&lt;br /&gt;
| editing&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| extent&lt;br /&gt;
| string&lt;br /&gt;
| Can be used instead of width and height. Used like this: &amp;quot;123 456&amp;quot;, where 123 is width and 456 is height. There is some syntactic sugar that allows you to treat it like an array, but that illusion breaks when you try to assign to extent[0].&lt;br /&gt;
|-&lt;br /&gt;
| flickering&lt;br /&gt;
| boolean&lt;br /&gt;
| Allows the control to periodically show/hide itself.&lt;br /&gt;
|-&lt;br /&gt;
| flickertime&lt;br /&gt;
| integer&lt;br /&gt;
| The time between the show and hides in flickering.&lt;br /&gt;
|-&lt;br /&gt;
| height&lt;br /&gt;
| integer&lt;br /&gt;
| can be used instead of extent&lt;br /&gt;
|-&lt;br /&gt;
| hint&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| horizsizing&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| layer&lt;br /&gt;
| integer (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| minextent&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| minsize&lt;br /&gt;
| string&lt;br /&gt;
| the same like &amp;quot;minExtent&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| parent&lt;br /&gt;
| object (read only)&lt;br /&gt;
| a [[Creation/Dev/Script/Client/GuiControl|GuiControl]]&lt;br /&gt;
|-&lt;br /&gt;
| position&lt;br /&gt;
| string&lt;br /&gt;
| Can be used instead of x and y. Used like this: &amp;quot;123 456&amp;quot;, where 123 is x and 456 is y. There is some syntactic sugar that allows you to treat it like an array, but that illusion breaks when you try to assign to position[0].&lt;br /&gt;
|-&lt;br /&gt;
| profile&lt;br /&gt;
| object&lt;br /&gt;
| see [[Creation/Dev/Script/Client/GuiControlProfile|GuiControlProfile]]&lt;br /&gt;
|-&lt;br /&gt;
| resizeheight&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| resizewidth&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scrolllinex&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scrollliney&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| showhint&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| useownprofile&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| vertsizing&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| visible&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| width&lt;br /&gt;
| integer&lt;br /&gt;
| can be used instead of extent&lt;br /&gt;
|-&lt;br /&gt;
| x&lt;br /&gt;
| integer&lt;br /&gt;
| can be used instead of position&lt;br /&gt;
|-&lt;br /&gt;
| y&lt;br /&gt;
| integer&lt;br /&gt;
| can be used instead of position&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Functions=&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Return Type'''&lt;br /&gt;
| '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| addcontrol(obj)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| bringtofront()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| clearControls()&lt;br /&gt;
|&lt;br /&gt;
| Removes all controls at once&lt;br /&gt;
|-&lt;br /&gt;
| destroy()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| getparent()&lt;br /&gt;
| object&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| globaltolocalcoord({x,y})&lt;br /&gt;
| {x,y}&lt;br /&gt;
| converts global screen coordinates to a position relative to the controls origin (0,0), can be used to know where exactly the user has clicked inside a control&lt;br /&gt;
|-&lt;br /&gt;
| hide()&lt;br /&gt;
|&lt;br /&gt;
| Hide the control&lt;br /&gt;
|-&lt;br /&gt;
| isfirstresponder()&lt;br /&gt;
| boolean&lt;br /&gt;
| Returns whether or not this control is the first responder&lt;br /&gt;
|-&lt;br /&gt;
| localtoglobalcoord({x,y})&lt;br /&gt;
| {x,y}&lt;br /&gt;
| converts a position relative to the controls origin (0,0) to global screen coordinates, can be used to know where on the screen a control is displayed in case it is a child of another control (e.g. GuiWindowCtrl or GuiScrollCtrl)&lt;br /&gt;
|-&lt;br /&gt;
| makefirstresponder(bool)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| pushtoback()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| resize(int x, int y, int width, int height)&lt;br /&gt;
|&lt;br /&gt;
| Resize the control&lt;br /&gt;
|-&lt;br /&gt;
| show()&lt;br /&gt;
|&lt;br /&gt;
| Show the control&lt;br /&gt;
|-&lt;br /&gt;
| showtop()&lt;br /&gt;
|&lt;br /&gt;
| calls show(), tabfirst() and bringtofront()&lt;br /&gt;
|-&lt;br /&gt;
| tabfirst()&lt;br /&gt;
| object&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Events=&lt;br /&gt;
&lt;br /&gt;
onAdd() - is invoked when the control is added to another control (addcontrol)&lt;br /&gt;
&lt;br /&gt;
onRemove() - is invoked when the control is removed from its parent&lt;br /&gt;
&lt;br /&gt;
onShow() - is invoked when the control is shown or gets awakened while being 'visible'&lt;br /&gt;
&lt;br /&gt;
onHide() - is invoked when the control is made hidden&lt;br /&gt;
&lt;br /&gt;
onWake() - is invoked when the control is awakened and becomes visible on the screen&lt;br /&gt;
&lt;br /&gt;
onSleep() - is invoked for windows when a dialog window is removed from the screen&lt;br /&gt;
&lt;br /&gt;
onMove(newx,newy) - is invoked when the control is moved&lt;br /&gt;
&lt;br /&gt;
onResize(newwidth,newheight) - is invoked when the control is resized&lt;br /&gt;
&lt;br /&gt;
onAction() - is invoked when a button control is pressed, you press the enter-key in a text edit control, or move a slider control, &lt;br /&gt;
&lt;br /&gt;
onDialogPush() - is invoked when a dialog control is placed on the screen (using pushDialog(control))&lt;br /&gt;
&lt;br /&gt;
onDialogPop() - is invoked when a dialog control is removed from the screen again (using popDialog())&lt;br /&gt;
&lt;br /&gt;
onKeyDown(keycode,keystring,scancode) - a key has been pressed while the control had the input focus (makeFirstResponder())&lt;br /&gt;
&lt;br /&gt;
onKeyUp(keycode,keystring,scancode) - the key has been released&lt;br /&gt;
&lt;br /&gt;
onMouseYawPitch(xaxis,yaxis) - mouse event in Graal3D when the mouse has been turned off&lt;br /&gt;
&lt;br /&gt;
onMouseDown(keymodifier,mousescreenx,mousescreeny,clickcount) - the left mouse button has been pressed inside this control&lt;br /&gt;
&lt;br /&gt;
onMouseUp(keymodifier,mousescreenx,mousescreeny) - the left mouse button has been released&lt;br /&gt;
&lt;br /&gt;
onMouseEnter(keymodifier,mousescreenx,mousescreeny) - the mouse moved inside this control&lt;br /&gt;
&lt;br /&gt;
onMouseLeave(keymodifier,mousescreenx,mousescreeny) - the mouse left the control&lt;br /&gt;
&lt;br /&gt;
onMouseDragged(keymodifier,mousescreenx,mousescreeny) - the mouse is moved while the left mouse button is pressed&lt;br /&gt;
&lt;br /&gt;
onMouseMove(keymodifier,mousescreenx,mousescreeny) - the mouse has been moved&lt;br /&gt;
&lt;br /&gt;
onRightMouseDown(keymodifier,mousescreenx,mousescreeny,clickcount) - the right mouse button has been pressed&lt;br /&gt;
&lt;br /&gt;
onRightMouseUp(keymodifier,mousescreenx,mousescreeny) - the right mouse button has been released&lt;br /&gt;
&lt;br /&gt;
onRightMouseDragged(keymodifier,mousescreenx,mousescreeny) - the mouse has been moved while the right mouse button is pressed&lt;br /&gt;
&lt;br /&gt;
onMouseWheelUp(keymodifier) - the mouse wheel has been scrolled up&lt;br /&gt;
&lt;br /&gt;
onMouseWheelDown(keymodifier) - the mouse wheel has been scrolled down&lt;br /&gt;
&lt;br /&gt;
=Example=&lt;br /&gt;
&lt;br /&gt;
  new GuiControl(&amp;quot;Test_Back&amp;quot;) {&lt;br /&gt;
    useownprofile = true;&lt;br /&gt;
    profile.border = 3;&lt;br /&gt;
    x = 10;&lt;br /&gt;
    y = 10;&lt;br /&gt;
    width = 160;&lt;br /&gt;
    height = 80;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
{{:Creation/Dev/Script/Client}}&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Particle_Engine&amp;diff=11625</id>
		<title>Particle Engine</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Particle_Engine&amp;diff=11625"/>
		<updated>2009-03-07T06:17:54Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: Added dropemitter and dropwateremitter and added links to relevant articles.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
The particle engine in Graal v4 is an extension of the SHOWIMG feature. With the command &amp;quot;showimg&amp;quot; scripts can display graphics, text, polygons and even animations on the screen. That command is mainly meant for client-side effects, but can also partially used on the serverside, and they can also be made visible on other player's screens. Graphics or texts displayed using this command will be called SHOWIMGs in this paper.&lt;br /&gt;
&lt;br /&gt;
Each SHOWIMG can be used as emitter for particles. That way all kind of scripts can use the new particle engine - just display a SHOWIMG and set the attributes of the SHOWIMG so that the particle emitter is activated and is emitting particles. A particle can be seen as an independent graphic object that is put at the position of the emitter once it is emitted, then travelling over the screen, and disappearing once its lifetime is over or it is outside the allowed screen bounds. Actually a particle is itself a SHOWIMG and can so be used for any kind of graphical effect, and can theoretically even be used as emitter for other particles.&lt;br /&gt;
&lt;br /&gt;
The reason for using a particle engine is speed: theoretically all graphical effects could be done by using scripts which call commands to display graphics or text. But often such effects contain several hundreds or even thousands of graphics, which must be moved and animated several times each second. If there are many objects using scripted particle effects that can slow down the game quite a lot. That's why it is possible in Graal v4 to use a built-in particle engine with many possible options to influence the look and behaviour of the particles so that most graphics effects can be displayed using that engine.&lt;br /&gt;
&lt;br /&gt;
==Create a SHOWIMG==&lt;br /&gt;
&lt;br /&gt;
To use the particle engine, you first need a SHOWIMG as emitter:&lt;br /&gt;
&lt;br /&gt;
  with (findimg(200)) {&lt;br /&gt;
    x = player.x;&lt;br /&gt;
    y = player.y;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The function findimg(index) is searching for an existing SHOWIMG with the index of 200 and then using that for setting the other attributes, otherwise it is automatically creating a new SHOWIMG with index 200 for the current object (npc, or player if its a weapon/gui-script). Afterwards it is setting the position of the SHOWIMG to position of the player.&lt;br /&gt;
&lt;br /&gt;
==Configure emitter and particle==&lt;br /&gt;
&lt;br /&gt;
Once the SHOWIMG is setup, you need to configure the emitter and the default attributes of the particle that should be emitted:&lt;br /&gt;
&lt;br /&gt;
  with (findimg(200)) {&lt;br /&gt;
    x = player.x;&lt;br /&gt;
    y = player.y;&lt;br /&gt;
    emitter.attribute = value;&lt;br /&gt;
    emitter.particle.attribute = value;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Possible attribute names are&lt;br /&gt;
(you can run &amp;quot;Graal4.exe -listscriptfunctions&amp;quot; to get the latest list of script functions):&lt;br /&gt;
&lt;br /&gt;
  TParticleEmitter (TGraalVar):&lt;br /&gt;
    attachposition - boolean - says if the particle is moved with the emitter (true), or can fly freely (false)&lt;br /&gt;
    autorotation - boolean - for making the particle heading into the direction it flies (rotation=angle)&lt;br /&gt;
    checkbelowterrain - boolean - destroys the particles if they are below the terrain height (or zero on flat maps)&lt;br /&gt;
    clippingbox - {xd1,yd1,zd1, xd2,yd2,zd2} - defines a box, if particles leave this box then they are destroyed&lt;br /&gt;
    cliptoscreen - boolean - automatically resizes the clipping box to the visible area&lt;br /&gt;
    continueafterdestroy - boolean&lt;br /&gt;
    delaymin - float - minimum delay till the next automatic emission (&amp;gt;= 0.05 seconds)&lt;br /&gt;
    delaymax - float - maximum delay till the next automatic emission&lt;br /&gt;
    emissionoffset - {xd,yd,zd} - by default {0,0,0}, says at which position the particles should be emitted, relative to the current emitter position&lt;br /&gt;
    emitautomatically - boolean - enables or disabled the automatic emission of particles after delaymin/delaymax time&lt;br /&gt;
    firstinfront - boolean - says if the first emitted particle should be displayed in front (true by default)&lt;br /&gt;
    maxparticles - integer - can be used to limit the total particle count&lt;br /&gt;
    nrofparticles - integer - specifies how many particles are emitted at once&lt;br /&gt;
    particle - object (read only) - defines the default attributes of the next emitted particle&lt;br /&gt;
    wraptoclippingbox - boolean - if a particle leaves on one side, it appears on the other side (use with &amp;quot;cliptoscreen&amp;quot; option)&lt;br /&gt;
    dropemitter - TParticleEmitter - works exactly like the emitter itself and are used for emitting particles once a particle drops on the ground (rain drops) or the lifetime is over (for fireworks)&lt;br /&gt;
    dropwateremitter - TParticleEmitter - see dropemitter&lt;br /&gt;
&lt;br /&gt;
  TParticle (TGraalVar):&lt;br /&gt;
    angle - float - the movement angle of the particle (horizontally on the (x,y) plane)&lt;br /&gt;
    lifetime - float - in seconds, the particle will be destroyed when the lifetime is over&lt;br /&gt;
    movementvector - string - says in which direction the particles moves, this is a combination of angle and zangle&lt;br /&gt;
    speed - float - tiles per second&lt;br /&gt;
    spin - float - automatic rotation of the particle (radiants each second)&lt;br /&gt;
    zangle - float - the vertical movement angle - says if the particles goes up or down&lt;br /&gt;
&lt;br /&gt;
    Particle attributes that are the same like for a SHOWIMG:&lt;br /&gt;
    alpha - float - transparency&lt;br /&gt;
    ani - string - a gani file (use &amp;quot;projectile.actor&amp;quot; for changing the attributes)&lt;br /&gt;
    blue - float - blue color value (0-1)&lt;br /&gt;
    code - string - the old representation as 'font@style@text'&lt;br /&gt;
    dimension - integer - polygon dimension (2 or 3)&lt;br /&gt;
    dir - integer - animation direction&lt;br /&gt;
    emitter - object (read only) - for specifying the attributes of a sub-emitter&lt;br /&gt;
    font - string - text font name&lt;br /&gt;
    green - float - green color value (0-1)&lt;br /&gt;
    image - string - image filename&lt;br /&gt;
    layer - integer - 4 or higher for particle which move in screen coordinates, below 4 for level coordinates&lt;br /&gt;
    mode - integer - the image drawing mode (0 - add, 1 - transparent, 2 - subtract, 3 - daynight)&lt;br /&gt;
    playerlook - boolean - if the animation should take it's head, body, sword, shield and attr[] from the owner (playerlook), set this to false if you want to set the images yourself by changing showimg.actor.head etc.&lt;br /&gt;
    polygon - object - array of coordinates for displaying a 2 or 3 dimensional polygon&lt;br /&gt;
    red - float - red color value (0-1)&lt;br /&gt;
    rotation - float - defines in which direction the particle graphics is facing&lt;br /&gt;
    stretchx - float - horizontal particle graphics stretch factor (default 1)&lt;br /&gt;
    stretchy - float - vertical particle graphics stretch factor (default 1)&lt;br /&gt;
    style - string - text style (e.g. &amp;quot;b&amp;quot; for bold text)&lt;br /&gt;
    text - string - a text that should be displayed on the SHOWIMG position&lt;br /&gt;
    zoom - float - zoom factor of the particle graphics or text&lt;br /&gt;
&lt;br /&gt;
==Add particle modifiers==&lt;br /&gt;
&lt;br /&gt;
Once you have setup the SHOWIMG and specified the attributes of the emitter and default particle, you can also specify particle modifiers so that the particles are not always flying into the same direction and look the same. There are 3 different functions, for modifying the default particle addemitmodifier(), for modifying all existing particles addglobalmodifier(), and for modifying the attributes for each particle individually addlocalmodifier(). The local modifiers are the most often used modifier.&lt;br /&gt;
Parameters are:&lt;br /&gt;
  modifier type - once,impulse or range - modifies the particle one time, periodically or only in the given time range&lt;br /&gt;
  rangemin - seconds, minimum delay until first modification or start of modification range (if modifier is &amp;quot;range&amp;quot;)&lt;br /&gt;
  rangemax - seconds, maximum delay until first modification or end of modification range (if modifier is &amp;quot;range&amp;quot;)&lt;br /&gt;
  variable - x,y,z,movex,movey,movez,angle,zangle,speed,rotation,spin,stretchx,stretchy,red,green,blue,alpha or zoom&lt;br /&gt;
  variable modification type - replace,add or multiply (if modifier type is &amp;quot;range&amp;quot; then only &amp;quot;replace&amp;quot; and &amp;quot;add&amp;quot; are valid)&lt;br /&gt;
  valuemin - range start of the random value or first value to set/add (if modifier is &amp;quot;range&amp;quot;)&lt;br /&gt;
  valuemax - range end of the random value or last value to set/add (if modifier is &amp;quot;range&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Those 3 functions addemitmodifier(), addglobalmodifier() and addlocalmodifier() are returning a modifier object which can be used to attach more variable modifications to the same impulse:&lt;br /&gt;
&lt;br /&gt;
  with (addlocalmodifier(&amp;quot;impulse&amp;quot;,1,2,&amp;quot;angle&amp;quot;,&amp;quot;replace&amp;quot;,0,pi)) {&lt;br /&gt;
    addmod(&amp;quot;zoom&amp;quot;,&amp;quot;add&amp;quot;,0.1,0.2);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
This example is modifying the angle each 1-2 seconds, and at the same time it is zooming the particle so that it grows bigger. If you don't need to have the two modifiers act at the same moment, then you could have called addlocalmodifier(&amp;quot;impulse&amp;quot;,1,2,&amp;quot;zoom&amp;quot;,&amp;quot;add&amp;quot;,0.1,0.2) which looks quite the same, but is not guaranteed to happen at the same moment like the first modifier. Most of the time you don't need the addmod-function though.&lt;br /&gt;
&lt;br /&gt;
==Manually emitting particles==&lt;br /&gt;
&lt;br /&gt;
If you have done the things mentioned in the previous steps, then the particle emitter is automatically emitting particles after the time specified with delaymin and delaymax. If you don't want that particles are automatically emitted, then set emitautomatically to false and call emitter.emit() directly.&lt;br /&gt;
&lt;br /&gt;
==Controlling the particle emitter==&lt;br /&gt;
&lt;br /&gt;
You can modify the particle emitter at any time by using the &amp;quot;with (findimg(index))&amp;quot; construct again as mentioned in &amp;quot;Create a SHOWIMG&amp;quot; chapter. To change the position where the particles are emitted you can just change the position of the SHOWIMG, e.g. moving it to the player position so that the particles are always emitted where the player stands.&lt;br /&gt;
&lt;br /&gt;
It can also be interesting to watch the number of particles that the emitter has emitted, you can read the variables &amp;quot;currentparticlecount&amp;quot; and &amp;quot;emittedparticles&amp;quot; for that:&lt;br /&gt;
&lt;br /&gt;
  TParticleEmitter (TGraalVar):&lt;br /&gt;
    currentparticlecount - integer (read only) - for watching how many particles exist&lt;br /&gt;
    emittedparticles - integer (read only) - for seeing how many particles have been emitted in total&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&lt;br /&gt;
  emitter&lt;br /&gt;
    attachposition - Tells whether or not x/y position of particles is relative to the position of the emitter. Also tells if particles should move when the emitter is moved.&lt;br /&gt;
    autorotation - Must be ture for making the particle heading into the direction it flies (rotation=angle)&lt;br /&gt;
    checkbelowterrain - If true, the particle will be destroyed if it falls below the terrain height (0 for flat GMaps)&lt;br /&gt;
    clippingbox - Format of {x1,y1,z1,x2,y2,z2}, particles that leave this box will be destroyed&lt;br /&gt;
    cliptoscreen - boolean - automatically resizes the clipping box to the visible area&lt;br /&gt;
    continueafterdestroy - boolean&lt;br /&gt;
    currentparticlecount - Current number of particles that exist&lt;br /&gt;
    delaymin - Minimum time before another particle is emitted&lt;br /&gt;
    delaymax - Maximum time before another particle is emitted&lt;br /&gt;
    emissionoffset - How far away from the emitter (or the level if attachposition=false) to emit particles. Format: {x,y,z}&lt;br /&gt;
    emittedparticles - Total number of particles that have been emitted&lt;br /&gt;
    firstinfront - Tells whether particles drawn after the first particle should draw on top or below the first&lt;br /&gt;
    maxparticles - Maximum number of particles that can exist at once&lt;br /&gt;
    nrofparticles - Number of particles to release at once&lt;br /&gt;
    isfrozen - Boolean, stops all particles if true&lt;br /&gt;
    wraptoclippingbox - boolean - if a particle leaves on one side, it appears on the other side (use with &amp;quot;cliptoscreen&amp;quot; option)&lt;br /&gt;
    dropemitter - TParticleEmitter - works exactly like the emitter itself and are used for emitting particles once a particle drops on the ground (rain drops) or the lifetime is over (for fireworks)&lt;br /&gt;
    dropwateremitter - TParticleEmitter - see dropemitter&lt;br /&gt;
&lt;br /&gt;
    particle&lt;br /&gt;
      lifetime - Time (in seconds) before a particle is destroyed&lt;br /&gt;
      image - Image to use for the particle&lt;br /&gt;
      mode - Drawing mode of the image. (0 = add, 1 = replace, 2 = subtract, 3 = daynight) See changeimgmode&lt;br /&gt;
      alpha - Alpha transparency of a particle (0 = invisible, 1 = opaque)&lt;br /&gt;
      zoom - Zoomfactor of a particle&lt;br /&gt;
      angle - Movement angle for the particle (for x/y)&lt;br /&gt;
      zangle - Up/down movement angle for the particle&lt;br /&gt;
      speed - How many tiles or pixels the particle should move (depends on if its in a level or on the GUI)&lt;br /&gt;
      rotation - Angle for rotating the image (set autorotation=true to automatically set rotation=angle)&lt;br /&gt;
      spin - How much the image should be rotated each second, can be postive and negative&lt;br /&gt;
      stretchx - How much to stretch the particle image horizontally&lt;br /&gt;
      stretchy - How much to stretch the particle image vertically&lt;br /&gt;
      red, green, blue - Used to change color of particle&lt;br /&gt;
      dimension - Polygon dimension (2 or 3)&lt;br /&gt;
      movementvector - Format is {float,float,float}, a combination of x, y and z&lt;br /&gt;
&lt;br /&gt;
    Emitter functions:&lt;br /&gt;
    addlocalmodifier(&amp;quot;string&amp;quot;,float,float,&amp;quot;string&amp;quot;,&amp;quot;string&amp;quot;,float,float)&lt;br /&gt;
      Parameters:&lt;br /&gt;
      First - Tells when to do an action&lt;br /&gt;
        once - Do it once&lt;br /&gt;
        range - Do the action during the range of time param2-param3&lt;br /&gt;
        impulse - Do it randomly&lt;br /&gt;
      Second - Tells the minimum time to wait before doing an action (except for 'range')&lt;br /&gt;
      Third - Tells the maximum time to wait before doing an action (except for 'range')&lt;br /&gt;
      Fourth - Tells what action to perform&lt;br /&gt;
        Everything under &amp;quot;particle&amp;quot; except for the following can be changed: image , text, ani, font, movementvector, style&lt;br /&gt;
        x - x position of the particle&lt;br /&gt;
        y - y position of the particle&lt;br /&gt;
        z - z position of the particle&lt;br /&gt;
        movex - How far the particle should move horizontally in its lifetime&lt;br /&gt;
        movey - How far the particle should move vertically in its lifetime&lt;br /&gt;
        movez - How far the particle should move above the ground in its lifetime&lt;br /&gt;
      Fifth - Tells what to do with parameters 6 and 7&lt;br /&gt;
        add - Add the amount (use negatives to subtract)&lt;br /&gt;
        replace - Set a new amount&lt;br /&gt;
        multiply - Multiply the amount (use negatives to divide)&lt;br /&gt;
      Sixth - Minimum amount&lt;br /&gt;
      Seventh - Maximum amount&lt;br /&gt;
    addglobalmodifier() - Same as addlocalmodifier, except it affects all particles at once&lt;br /&gt;
    addemitmodifier() - Same as addlocalmodifier, except it only affects emitter.particle&lt;br /&gt;
    addmod() - Used in conjunction with addlocalmodifier, same parameters except no parameters 1-3&lt;br /&gt;
    emit() - Do one emission&lt;br /&gt;
    removemodifiers() - Remove modifiers set&lt;br /&gt;
    removeparticles() - Remove particles&lt;br /&gt;
&lt;br /&gt;
==Useful articles==&lt;br /&gt;
[[Creation/Dev/Script/Client/TParticleEmitter]]&lt;br /&gt;
&lt;br /&gt;
[[Creation/Dev/Script/Client/TParticle]]&lt;br /&gt;
&lt;br /&gt;
[[Creation/Dev/Releases/Client/4.03]]&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Particle_Engine&amp;diff=11557</id>
		<title>Particle Engine</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Particle_Engine&amp;diff=11557"/>
		<updated>2009-01-21T02:54:29Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Reference */ continueafterdestroy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
The particle engine in Graal v4 is an extension of the SHOWIMG feature. With the command &amp;quot;showimg&amp;quot; scripts can display graphics, text, polygons and even animations on the screen. That command is mainly meant for client-side effects, but can also partially used on the serverside, and they can also be made visible on other player's screens. Graphics or texts displayed using this command will be called SHOWIMGs in this paper.&lt;br /&gt;
&lt;br /&gt;
Each SHOWIMG can be used as emitter for particles. That way all kind of scripts can use the new particle engine - just display a SHOWIMG and set the attributes of the SHOWIMG so that the particle emitter is activated and is emitting particles. A particle can be seen as an independent graphic object that is put at the position of the emitter once it is emitted, then travelling over the screen, and disappearing once its lifetime is over or it is outside the allowed screen bounds. Actually a particle is itself a SHOWIMG and can so be used for any kind of graphical effect, and can theoretically even be used as emitter for other particles.&lt;br /&gt;
&lt;br /&gt;
The reason for using a particle engine is speed: theoretically all graphical effects could be done by using scripts which call commands to display graphics or text. But often such effects contain several hundreds or even thousands of graphics, which must be moved and animated several times each second. If there are many objects using scripted particle effects that can slow down the game quite a lot. That's why it is possible in Graal v4 to use a built-in particle engine with many possible options to influence the look and behaviour of the particles so that most graphics effects can be displayed using that engine.&lt;br /&gt;
&lt;br /&gt;
==Create a SHOWIMG==&lt;br /&gt;
&lt;br /&gt;
To use the particle engine, you first need a SHOWIMG as emitter:&lt;br /&gt;
&lt;br /&gt;
  with (findimg(200)) {&lt;br /&gt;
    x = player.x;&lt;br /&gt;
    y = player.y;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The function findimg(index) is searching for an existing SHOWIMG with the index of 200 and then using that for setting the other attributes, otherwise it is automatically creating a new SHOWIMG with index 200 for the current object (npc, or player if its a weapon/gui-script). Afterwards it is setting the position of the SHOWIMG to position of the player.&lt;br /&gt;
&lt;br /&gt;
==Configure emitter and particle==&lt;br /&gt;
&lt;br /&gt;
Once the SHOWIMG is setup, you need to configure the emitter and the default attributes of the particle that should be emitted:&lt;br /&gt;
&lt;br /&gt;
  with (findimg(200)) {&lt;br /&gt;
    x = player.x;&lt;br /&gt;
    y = player.y;&lt;br /&gt;
    emitter.attribute = value;&lt;br /&gt;
    emitter.particle.attribute = value;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Possible attribute names are&lt;br /&gt;
(you can run &amp;quot;Graal4.exe -listscriptfunctions&amp;quot; to get the latest list of script functions):&lt;br /&gt;
&lt;br /&gt;
  TParticleEmitter (TGraalVar):&lt;br /&gt;
    attachposition - boolean - says if the particle is moved with the emitter (true), or can fly freely (false)&lt;br /&gt;
    autorotation - boolean - for making the particle heading into the direction it flies (rotation=angle)&lt;br /&gt;
    checkbelowterrain - boolean - destroys the particles if they are below the terrain height (or zero on flat maps)&lt;br /&gt;
    clippingbox - {xd1,yd1,zd1, xd2,yd2,zd2} - defines a box, if particles leave this box then they are destroyed&lt;br /&gt;
    cliptoscreen - boolean - automatically resizes the clipping box to the visible area&lt;br /&gt;
    continueafterdestroy - boolean&lt;br /&gt;
    delaymin - float - minimum delay till the next automatic emission (&amp;gt;= 0.05 seconds)&lt;br /&gt;
    delaymax - float - maximum delay till the next automatic emission&lt;br /&gt;
    emissionoffset - {xd,yd,zd} - by default {0,0,0}, says at which position the particles should be emitted, relative to the current emitter position&lt;br /&gt;
    emitautomatically - boolean - enables or disabled the automatic emission of particles after delaymin/delaymax time&lt;br /&gt;
    firstinfront - boolean - says if the first emitted particle should be displayed in front (true by default)&lt;br /&gt;
    maxparticles - integer - can be used to limit the total particle count&lt;br /&gt;
    nrofparticles - integer - specifies how many particles are emitted at once&lt;br /&gt;
    particle - object (read only) - defines the default attributes of the next emitted particle&lt;br /&gt;
    wraptoclippingbox - boolean - if a particle leaves on one side, it appears on the other side (use with &amp;quot;cliptoscreen&amp;quot; option)&lt;br /&gt;
&lt;br /&gt;
  TParticle (TGraalVar):&lt;br /&gt;
    angle - float - the movement angle of the particle (horizontally on the (x,y) plane)&lt;br /&gt;
    lifetime - float - in seconds, the particle will be destroyed when the lifetime is over&lt;br /&gt;
    movementvector - string - says in which direction the particles moves, this is a combination of angle and zangle&lt;br /&gt;
    speed - float - tiles per second&lt;br /&gt;
    spin - float - automatic rotation of the particle (radiants each second)&lt;br /&gt;
    zangle - float - the vertical movement angle - says if the particles goes up or down&lt;br /&gt;
&lt;br /&gt;
    Particle attributes that are the same like for a SHOWIMG:&lt;br /&gt;
    alpha - float - transparency&lt;br /&gt;
    ani - string - a gani file (use &amp;quot;projectile.actor&amp;quot; for changing the attributes)&lt;br /&gt;
    blue - float - blue color value (0-1)&lt;br /&gt;
    code - string - the old representation as 'font@style@text'&lt;br /&gt;
    dimension - integer - polygon dimension (2 or 3)&lt;br /&gt;
    dir - integer - animation direction&lt;br /&gt;
    emitter - object (read only) - for specifying the attributes of a sub-emitter&lt;br /&gt;
    font - string - text font name&lt;br /&gt;
    green - float - green color value (0-1)&lt;br /&gt;
    image - string - image filename&lt;br /&gt;
    layer - integer - 4 or higher for particle which move in screen coordinates, below 4 for level coordinates&lt;br /&gt;
    mode - integer - the image drawing mode (0 - add, 1 - transparent, 2 - subtract, 3 - daynight)&lt;br /&gt;
    playerlook - boolean - if the animation should take it's head, body, sword, shield and attr[] from the owner (playerlook), set this to false if you want to set the images yourself by changing showimg.actor.head etc.&lt;br /&gt;
    polygon - object - array of coordinates for displaying a 2 or 3 dimensional polygon&lt;br /&gt;
    red - float - red color value (0-1)&lt;br /&gt;
    rotation - float - defines in which direction the particle graphics is facing&lt;br /&gt;
    stretchx - float - horizontal particle graphics stretch factor (default 1)&lt;br /&gt;
    stretchy - float - vertical particle graphics stretch factor (default 1)&lt;br /&gt;
    style - string - text style (e.g. &amp;quot;b&amp;quot; for bold text)&lt;br /&gt;
    text - string - a text that should be displayed on the SHOWIMG position&lt;br /&gt;
    zoom - float - zoom factor of the particle graphics or text&lt;br /&gt;
&lt;br /&gt;
==Add particle modifiers==&lt;br /&gt;
&lt;br /&gt;
Once you have setup the SHOWIMG and specified the attributes of the emitter and default particle, you can also specify particle modifiers so that the particles are not always flying into the same direction and look the same. There are 3 different functions, for modifying the default particle addemitmodifier(), for modifying all existing particles addglobalmodifier(), and for modifying the attributes for each particle individually addlocalmodifier(). The local modifiers are the most often used modifier.&lt;br /&gt;
Parameters are:&lt;br /&gt;
  modifier type - once,impulse or range - modifies the particle one time, periodically or only in the given time range&lt;br /&gt;
  rangemin - seconds, minimum delay until first modification or start of modification range (if modifier is &amp;quot;range&amp;quot;)&lt;br /&gt;
  rangemax - seconds, maximum delay until first modification or end of modification range (if modifier is &amp;quot;range&amp;quot;)&lt;br /&gt;
  variable - x,y,z,movex,movey,movez,angle,zangle,speed,rotation,spin,stretchx,stretchy,red,green,blue,alpha or zoom&lt;br /&gt;
  variable modification type - replace,add or multiply (if modifier type is &amp;quot;range&amp;quot; then only &amp;quot;replace&amp;quot; and &amp;quot;add&amp;quot; are valid)&lt;br /&gt;
  valuemin - range start of the random value or first value to set/add (if modifier is &amp;quot;range&amp;quot;)&lt;br /&gt;
  valuemax - range end of the random value or last value to set/add (if modifier is &amp;quot;range&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Those 3 functions addemitmodifier(), addglobalmodifier() and addlocalmodifier() are returning a modifier object which can be used to attach more variable modifications to the same impulse:&lt;br /&gt;
&lt;br /&gt;
  with (addlocalmodifier(&amp;quot;impulse&amp;quot;,1,2,&amp;quot;angle&amp;quot;,&amp;quot;replace&amp;quot;,0,pi)) {&lt;br /&gt;
    addmod(&amp;quot;zoom&amp;quot;,&amp;quot;add&amp;quot;,0.1,0.2);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
This example is modifying the angle each 1-2 seconds, and at the same time it is zooming the particle so that it grows bigger. If you don't need to have the two modifiers act at the same moment, then you could have called addlocalmodifier(&amp;quot;impulse&amp;quot;,1,2,&amp;quot;zoom&amp;quot;,&amp;quot;add&amp;quot;,0.1,0.2) which looks quite the same, but is not guaranteed to happen at the same moment like the first modifier. Most of the time you don't need the addmod-function though.&lt;br /&gt;
&lt;br /&gt;
==Manually emitting particles==&lt;br /&gt;
&lt;br /&gt;
If you have done the things mentioned in the previous steps, then the particle emitter is automatically emitting particles after the time specified with delaymin and delaymax. If you don't want that particles are automatically emitted, then set emitautomatically to false and call emitter.emit() directly.&lt;br /&gt;
&lt;br /&gt;
==Controlling the particle emitter==&lt;br /&gt;
&lt;br /&gt;
You can modify the particle emitter at any time by using the &amp;quot;with (findimg(index))&amp;quot; construct again as mentioned in &amp;quot;Create a SHOWIMG&amp;quot; chapter. To change the position where the particles are emitted you can just change the position of the SHOWIMG, e.g. moving it to the player position so that the particles are always emitted where the player stands.&lt;br /&gt;
&lt;br /&gt;
It can also be interesting to watch the number of particles that the emitter has emitted, you can read the variables &amp;quot;currentparticlecount&amp;quot; and &amp;quot;emittedparticles&amp;quot; for that:&lt;br /&gt;
&lt;br /&gt;
  TParticleEmitter (TGraalVar):&lt;br /&gt;
    currentparticlecount - integer (read only) - for watching how many particles exist&lt;br /&gt;
    emittedparticles - integer (read only) - for seeing how many particles have been emitted in total&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&lt;br /&gt;
  emitter&lt;br /&gt;
    attachposition - Tells whether or not x/y position of particles is relative to the position of the emitter. Also tells if particles should move when the emitter is moved.&lt;br /&gt;
    autorotation - Must be ture for making the particle heading into the direction it flies (rotation=angle)&lt;br /&gt;
    checkbelowterrain - If true, the particle will be destroyed if it falls below the terrain height (0 for flat GMaps)&lt;br /&gt;
    clippingbox - Format of {x1,y1,z1,x2,y2,z2}, particles that leave this box will be destroyed&lt;br /&gt;
    cliptoscreen - boolean - automatically resizes the clipping box to the visible area&lt;br /&gt;
    continueafterdestroy - boolean&lt;br /&gt;
    currentparticlecount - Current number of particles that exist&lt;br /&gt;
    delaymin - Minimum time before another particle is emitted&lt;br /&gt;
    delaymax - Maximum time before another particle is emitted&lt;br /&gt;
    emissionoffset - How far away from the emitter (or the level if attachposition=false) to emit particles. Format: {x,y,z}&lt;br /&gt;
    emittedparticles - Total number of particles that have been emitted&lt;br /&gt;
    firstinfront - Tells whether particles drawn after the first particle should draw on top or below the first&lt;br /&gt;
    maxparticles - Maximum number of particles that can exist at once&lt;br /&gt;
    nrofparticles - Number of particles to release at once&lt;br /&gt;
    isfrozen - Boolean, stops all particles if true&lt;br /&gt;
    wraptoclippingbox - boolean - if a particle leaves on one side, it appears on the other side (use with &amp;quot;cliptoscreen&amp;quot; option)&lt;br /&gt;
    particle&lt;br /&gt;
      lifetime - Time (in seconds) before a particle is destroyed&lt;br /&gt;
      image - Image to use for the particle&lt;br /&gt;
      mode - Drawing mode of the image. (0 = add, 1 = replace, 2 = subtract, 3 = daynight) See changeimgmode&lt;br /&gt;
      alpha - Alpha transparency of a particle (0 = invisible, 1 = opaque)&lt;br /&gt;
      zoom - Zoomfactor of a particle&lt;br /&gt;
      angle - Movement angle for the particle (for x/y)&lt;br /&gt;
      zangle - Up/down movement angle for the particle&lt;br /&gt;
      speed - How many tiles or pixels the particle should move (depends on if its in a level or on the GUI)&lt;br /&gt;
      rotation - Angle for rotating the image (set autorotation=true to automatically set rotation=angle)&lt;br /&gt;
      spin - How much the image should be rotated each second, can be postive and negative&lt;br /&gt;
      stretchx - How much to stretch the particle image horizontally&lt;br /&gt;
      stretchy - How much to stretch the particle image vertically&lt;br /&gt;
      red, green, blue - Used to change color of particle&lt;br /&gt;
      dimension - Polygon dimension (2 or 3)&lt;br /&gt;
      movementvector - Format is {float,float,float}, a combination of x, y and z&lt;br /&gt;
&lt;br /&gt;
    Emitter functions:&lt;br /&gt;
    addlocalmodifier(&amp;quot;string&amp;quot;,float,float,&amp;quot;string&amp;quot;,&amp;quot;string&amp;quot;,float,float)&lt;br /&gt;
      Parameters:&lt;br /&gt;
      First - Tells when to do an action&lt;br /&gt;
        once - Do it once&lt;br /&gt;
        range - Do the action during the range of time param2-param3&lt;br /&gt;
        impulse - Do it randomly&lt;br /&gt;
      Second - Tells the minimum time to wait before doing an action (except for 'range')&lt;br /&gt;
      Third - Tells the maximum time to wait before doing an action (except for 'range')&lt;br /&gt;
      Fourth - Tells what action to perform&lt;br /&gt;
        Everything under &amp;quot;particle&amp;quot; except for the following can be changed: image , text, ani, font, movementvector, style&lt;br /&gt;
        x - x position of the particle&lt;br /&gt;
        y - y position of the particle&lt;br /&gt;
        z - z position of the particle&lt;br /&gt;
        movex - How far the particle should move horizontally in its lifetime&lt;br /&gt;
        movey - How far the particle should move vertically in its lifetime&lt;br /&gt;
        movez - How far the particle should move above the ground in its lifetime&lt;br /&gt;
      Fifth - Tells what to do with parameters 6 and 7&lt;br /&gt;
        add - Add the amount (use negatives to subtract)&lt;br /&gt;
        replace - Set a new amount&lt;br /&gt;
        multiply - Multiply the amount (use negatives to divide)&lt;br /&gt;
      Sixth - Minimum amount&lt;br /&gt;
      Seventh - Maximum amount&lt;br /&gt;
    addglobalmodifier() - Same as addlocalmodifier, except it affects all particles at once&lt;br /&gt;
    addemitmodifier() - Same as addlocalmodifier, except it only affects emitter.particle&lt;br /&gt;
    addmod() - Used in conjunction with addlocalmodifier, same parameters except no parameters 1-3&lt;br /&gt;
    emit() - Do one emission&lt;br /&gt;
    removemodifiers() - Remove modifiers set&lt;br /&gt;
    removeparticles() - Remove particles&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Particle_Engine&amp;diff=11556</id>
		<title>Particle Engine</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Particle_Engine&amp;diff=11556"/>
		<updated>2009-01-21T02:53:46Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Configure emitter and particle */ continueafterdestroy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
The particle engine in Graal v4 is an extension of the SHOWIMG feature. With the command &amp;quot;showimg&amp;quot; scripts can display graphics, text, polygons and even animations on the screen. That command is mainly meant for client-side effects, but can also partially used on the serverside, and they can also be made visible on other player's screens. Graphics or texts displayed using this command will be called SHOWIMGs in this paper.&lt;br /&gt;
&lt;br /&gt;
Each SHOWIMG can be used as emitter for particles. That way all kind of scripts can use the new particle engine - just display a SHOWIMG and set the attributes of the SHOWIMG so that the particle emitter is activated and is emitting particles. A particle can be seen as an independent graphic object that is put at the position of the emitter once it is emitted, then travelling over the screen, and disappearing once its lifetime is over or it is outside the allowed screen bounds. Actually a particle is itself a SHOWIMG and can so be used for any kind of graphical effect, and can theoretically even be used as emitter for other particles.&lt;br /&gt;
&lt;br /&gt;
The reason for using a particle engine is speed: theoretically all graphical effects could be done by using scripts which call commands to display graphics or text. But often such effects contain several hundreds or even thousands of graphics, which must be moved and animated several times each second. If there are many objects using scripted particle effects that can slow down the game quite a lot. That's why it is possible in Graal v4 to use a built-in particle engine with many possible options to influence the look and behaviour of the particles so that most graphics effects can be displayed using that engine.&lt;br /&gt;
&lt;br /&gt;
==Create a SHOWIMG==&lt;br /&gt;
&lt;br /&gt;
To use the particle engine, you first need a SHOWIMG as emitter:&lt;br /&gt;
&lt;br /&gt;
  with (findimg(200)) {&lt;br /&gt;
    x = player.x;&lt;br /&gt;
    y = player.y;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The function findimg(index) is searching for an existing SHOWIMG with the index of 200 and then using that for setting the other attributes, otherwise it is automatically creating a new SHOWIMG with index 200 for the current object (npc, or player if its a weapon/gui-script). Afterwards it is setting the position of the SHOWIMG to position of the player.&lt;br /&gt;
&lt;br /&gt;
==Configure emitter and particle==&lt;br /&gt;
&lt;br /&gt;
Once the SHOWIMG is setup, you need to configure the emitter and the default attributes of the particle that should be emitted:&lt;br /&gt;
&lt;br /&gt;
  with (findimg(200)) {&lt;br /&gt;
    x = player.x;&lt;br /&gt;
    y = player.y;&lt;br /&gt;
    emitter.attribute = value;&lt;br /&gt;
    emitter.particle.attribute = value;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Possible attribute names are&lt;br /&gt;
(you can run &amp;quot;Graal4.exe -listscriptfunctions&amp;quot; to get the latest list of script functions):&lt;br /&gt;
&lt;br /&gt;
  TParticleEmitter (TGraalVar):&lt;br /&gt;
    attachposition - boolean - says if the particle is moved with the emitter (true), or can fly freely (false)&lt;br /&gt;
    autorotation - boolean - for making the particle heading into the direction it flies (rotation=angle)&lt;br /&gt;
    checkbelowterrain - boolean - destroys the particles if they are below the terrain height (or zero on flat maps)&lt;br /&gt;
    clippingbox - {xd1,yd1,zd1, xd2,yd2,zd2} - defines a box, if particles leave this box then they are destroyed&lt;br /&gt;
    cliptoscreen - boolean - automatically resizes the clipping box to the visible area&lt;br /&gt;
    continueafterdestroy - boolean&lt;br /&gt;
    delaymin - float - minimum delay till the next automatic emission (&amp;gt;= 0.05 seconds)&lt;br /&gt;
    delaymax - float - maximum delay till the next automatic emission&lt;br /&gt;
    emissionoffset - {xd,yd,zd} - by default {0,0,0}, says at which position the particles should be emitted, relative to the current emitter position&lt;br /&gt;
    emitautomatically - boolean - enables or disabled the automatic emission of particles after delaymin/delaymax time&lt;br /&gt;
    firstinfront - boolean - says if the first emitted particle should be displayed in front (true by default)&lt;br /&gt;
    maxparticles - integer - can be used to limit the total particle count&lt;br /&gt;
    nrofparticles - integer - specifies how many particles are emitted at once&lt;br /&gt;
    particle - object (read only) - defines the default attributes of the next emitted particle&lt;br /&gt;
    wraptoclippingbox - boolean - if a particle leaves on one side, it appears on the other side (use with &amp;quot;cliptoscreen&amp;quot; option)&lt;br /&gt;
&lt;br /&gt;
  TParticle (TGraalVar):&lt;br /&gt;
    angle - float - the movement angle of the particle (horizontally on the (x,y) plane)&lt;br /&gt;
    lifetime - float - in seconds, the particle will be destroyed when the lifetime is over&lt;br /&gt;
    movementvector - string - says in which direction the particles moves, this is a combination of angle and zangle&lt;br /&gt;
    speed - float - tiles per second&lt;br /&gt;
    spin - float - automatic rotation of the particle (radiants each second)&lt;br /&gt;
    zangle - float - the vertical movement angle - says if the particles goes up or down&lt;br /&gt;
&lt;br /&gt;
    Particle attributes that are the same like for a SHOWIMG:&lt;br /&gt;
    alpha - float - transparency&lt;br /&gt;
    ani - string - a gani file (use &amp;quot;projectile.actor&amp;quot; for changing the attributes)&lt;br /&gt;
    blue - float - blue color value (0-1)&lt;br /&gt;
    code - string - the old representation as 'font@style@text'&lt;br /&gt;
    dimension - integer - polygon dimension (2 or 3)&lt;br /&gt;
    dir - integer - animation direction&lt;br /&gt;
    emitter - object (read only) - for specifying the attributes of a sub-emitter&lt;br /&gt;
    font - string - text font name&lt;br /&gt;
    green - float - green color value (0-1)&lt;br /&gt;
    image - string - image filename&lt;br /&gt;
    layer - integer - 4 or higher for particle which move in screen coordinates, below 4 for level coordinates&lt;br /&gt;
    mode - integer - the image drawing mode (0 - add, 1 - transparent, 2 - subtract, 3 - daynight)&lt;br /&gt;
    playerlook - boolean - if the animation should take it's head, body, sword, shield and attr[] from the owner (playerlook), set this to false if you want to set the images yourself by changing showimg.actor.head etc.&lt;br /&gt;
    polygon - object - array of coordinates for displaying a 2 or 3 dimensional polygon&lt;br /&gt;
    red - float - red color value (0-1)&lt;br /&gt;
    rotation - float - defines in which direction the particle graphics is facing&lt;br /&gt;
    stretchx - float - horizontal particle graphics stretch factor (default 1)&lt;br /&gt;
    stretchy - float - vertical particle graphics stretch factor (default 1)&lt;br /&gt;
    style - string - text style (e.g. &amp;quot;b&amp;quot; for bold text)&lt;br /&gt;
    text - string - a text that should be displayed on the SHOWIMG position&lt;br /&gt;
    zoom - float - zoom factor of the particle graphics or text&lt;br /&gt;
&lt;br /&gt;
==Add particle modifiers==&lt;br /&gt;
&lt;br /&gt;
Once you have setup the SHOWIMG and specified the attributes of the emitter and default particle, you can also specify particle modifiers so that the particles are not always flying into the same direction and look the same. There are 3 different functions, for modifying the default particle addemitmodifier(), for modifying all existing particles addglobalmodifier(), and for modifying the attributes for each particle individually addlocalmodifier(). The local modifiers are the most often used modifier.&lt;br /&gt;
Parameters are:&lt;br /&gt;
  modifier type - once,impulse or range - modifies the particle one time, periodically or only in the given time range&lt;br /&gt;
  rangemin - seconds, minimum delay until first modification or start of modification range (if modifier is &amp;quot;range&amp;quot;)&lt;br /&gt;
  rangemax - seconds, maximum delay until first modification or end of modification range (if modifier is &amp;quot;range&amp;quot;)&lt;br /&gt;
  variable - x,y,z,movex,movey,movez,angle,zangle,speed,rotation,spin,stretchx,stretchy,red,green,blue,alpha or zoom&lt;br /&gt;
  variable modification type - replace,add or multiply (if modifier type is &amp;quot;range&amp;quot; then only &amp;quot;replace&amp;quot; and &amp;quot;add&amp;quot; are valid)&lt;br /&gt;
  valuemin - range start of the random value or first value to set/add (if modifier is &amp;quot;range&amp;quot;)&lt;br /&gt;
  valuemax - range end of the random value or last value to set/add (if modifier is &amp;quot;range&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Those 3 functions addemitmodifier(), addglobalmodifier() and addlocalmodifier() are returning a modifier object which can be used to attach more variable modifications to the same impulse:&lt;br /&gt;
&lt;br /&gt;
  with (addlocalmodifier(&amp;quot;impulse&amp;quot;,1,2,&amp;quot;angle&amp;quot;,&amp;quot;replace&amp;quot;,0,pi)) {&lt;br /&gt;
    addmod(&amp;quot;zoom&amp;quot;,&amp;quot;add&amp;quot;,0.1,0.2);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
This example is modifying the angle each 1-2 seconds, and at the same time it is zooming the particle so that it grows bigger. If you don't need to have the two modifiers act at the same moment, then you could have called addlocalmodifier(&amp;quot;impulse&amp;quot;,1,2,&amp;quot;zoom&amp;quot;,&amp;quot;add&amp;quot;,0.1,0.2) which looks quite the same, but is not guaranteed to happen at the same moment like the first modifier. Most of the time you don't need the addmod-function though.&lt;br /&gt;
&lt;br /&gt;
==Manually emitting particles==&lt;br /&gt;
&lt;br /&gt;
If you have done the things mentioned in the previous steps, then the particle emitter is automatically emitting particles after the time specified with delaymin and delaymax. If you don't want that particles are automatically emitted, then set emitautomatically to false and call emitter.emit() directly.&lt;br /&gt;
&lt;br /&gt;
==Controlling the particle emitter==&lt;br /&gt;
&lt;br /&gt;
You can modify the particle emitter at any time by using the &amp;quot;with (findimg(index))&amp;quot; construct again as mentioned in &amp;quot;Create a SHOWIMG&amp;quot; chapter. To change the position where the particles are emitted you can just change the position of the SHOWIMG, e.g. moving it to the player position so that the particles are always emitted where the player stands.&lt;br /&gt;
&lt;br /&gt;
It can also be interesting to watch the number of particles that the emitter has emitted, you can read the variables &amp;quot;currentparticlecount&amp;quot; and &amp;quot;emittedparticles&amp;quot; for that:&lt;br /&gt;
&lt;br /&gt;
  TParticleEmitter (TGraalVar):&lt;br /&gt;
    currentparticlecount - integer (read only) - for watching how many particles exist&lt;br /&gt;
    emittedparticles - integer (read only) - for seeing how many particles have been emitted in total&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&lt;br /&gt;
  emitter&lt;br /&gt;
    attachposition - Tells whether or not x/y position of particles is relative to the position of the emitter. Also tells if particles should move when the emitter is moved.&lt;br /&gt;
    autorotation - Must be ture for making the particle heading into the direction it flies (rotation=angle)&lt;br /&gt;
    checkbelowterrain - If true, the particle will be destroyed if it falls below the terrain height (0 for flat GMaps)&lt;br /&gt;
    clippingbox - Format of {x1,y1,z1,x2,y2,z2}, particles that leave this box will be destroyed&lt;br /&gt;
    cliptoscreen - boolean - automatically resizes the clipping box to the visible area&lt;br /&gt;
    currentparticlecount - Current number of particles that exist&lt;br /&gt;
    delaymin - Minimum time before another particle is emitted&lt;br /&gt;
    delaymax - Maximum time before another particle is emitted&lt;br /&gt;
    emissionoffset - How far away from the emitter (or the level if attachposition=false) to emit particles. Format: {x,y,z}&lt;br /&gt;
    emittedparticles - Total number of particles that have been emitted&lt;br /&gt;
    firstinfront - Tells whether particles drawn after the first particle should draw on top or below the first&lt;br /&gt;
    maxparticles - Maximum number of particles that can exist at once&lt;br /&gt;
    nrofparticles - Number of particles to release at once&lt;br /&gt;
    isfrozen - Boolean, stops all particles if true&lt;br /&gt;
    wraptoclippingbox - boolean - if a particle leaves on one side, it appears on the other side (use with &amp;quot;cliptoscreen&amp;quot; option)&lt;br /&gt;
    particle&lt;br /&gt;
      lifetime - Time (in seconds) before a particle is destroyed&lt;br /&gt;
      image - Image to use for the particle&lt;br /&gt;
      mode - Drawing mode of the image. (0 = add, 1 = replace, 2 = subtract, 3 = daynight) See changeimgmode&lt;br /&gt;
      alpha - Alpha transparency of a particle (0 = invisible, 1 = opaque)&lt;br /&gt;
      zoom - Zoomfactor of a particle&lt;br /&gt;
      angle - Movement angle for the particle (for x/y)&lt;br /&gt;
      zangle - Up/down movement angle for the particle&lt;br /&gt;
      speed - How many tiles or pixels the particle should move (depends on if its in a level or on the GUI)&lt;br /&gt;
      rotation - Angle for rotating the image (set autorotation=true to automatically set rotation=angle)&lt;br /&gt;
      spin - How much the image should be rotated each second, can be postive and negative&lt;br /&gt;
      stretchx - How much to stretch the particle image horizontally&lt;br /&gt;
      stretchy - How much to stretch the particle image vertically&lt;br /&gt;
      red, green, blue - Used to change color of particle&lt;br /&gt;
      dimension - Polygon dimension (2 or 3)&lt;br /&gt;
      movementvector - Format is {float,float,float}, a combination of x, y and z&lt;br /&gt;
&lt;br /&gt;
    Emitter functions:&lt;br /&gt;
    addlocalmodifier(&amp;quot;string&amp;quot;,float,float,&amp;quot;string&amp;quot;,&amp;quot;string&amp;quot;,float,float)&lt;br /&gt;
      Parameters:&lt;br /&gt;
      First - Tells when to do an action&lt;br /&gt;
        once - Do it once&lt;br /&gt;
        range - Do the action during the range of time param2-param3&lt;br /&gt;
        impulse - Do it randomly&lt;br /&gt;
      Second - Tells the minimum time to wait before doing an action (except for 'range')&lt;br /&gt;
      Third - Tells the maximum time to wait before doing an action (except for 'range')&lt;br /&gt;
      Fourth - Tells what action to perform&lt;br /&gt;
        Everything under &amp;quot;particle&amp;quot; except for the following can be changed: image , text, ani, font, movementvector, style&lt;br /&gt;
        x - x position of the particle&lt;br /&gt;
        y - y position of the particle&lt;br /&gt;
        z - z position of the particle&lt;br /&gt;
        movex - How far the particle should move horizontally in its lifetime&lt;br /&gt;
        movey - How far the particle should move vertically in its lifetime&lt;br /&gt;
        movez - How far the particle should move above the ground in its lifetime&lt;br /&gt;
      Fifth - Tells what to do with parameters 6 and 7&lt;br /&gt;
        add - Add the amount (use negatives to subtract)&lt;br /&gt;
        replace - Set a new amount&lt;br /&gt;
        multiply - Multiply the amount (use negatives to divide)&lt;br /&gt;
      Sixth - Minimum amount&lt;br /&gt;
      Seventh - Maximum amount&lt;br /&gt;
    addglobalmodifier() - Same as addlocalmodifier, except it affects all particles at once&lt;br /&gt;
    addemitmodifier() - Same as addlocalmodifier, except it only affects emitter.particle&lt;br /&gt;
    addmod() - Used in conjunction with addlocalmodifier, same parameters except no parameters 1-3&lt;br /&gt;
    emit() - Do one emission&lt;br /&gt;
    removemodifiers() - Remove modifiers set&lt;br /&gt;
    removeparticles() - Remove particles&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/Script/Client/GuiTabCtrl&amp;diff=11532</id>
		<title>Creation/Dev/Script/Client/GuiTabCtrl</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/Script/Client/GuiTabCtrl&amp;diff=11532"/>
		<updated>2009-01-16T22:54:14Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Events */ Flipped parameter order for onSelect.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Inherits [[Creation/Dev/Script/Client/GuiControl|GuiControl]].&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&lt;br /&gt;
[[Image:Guicontrol_tab.png]]&lt;br /&gt;
&lt;br /&gt;
Displays several leveled buttons. If there is not enough space for displaying all tabs, then two arrow buttons are displayed for scrolling between the visible tabs. The actually behaviour (showing and hiding different GUI controls, which work as 'pages') must be done by script by reacting to the ''onSelect'' and ''onDeselect'' events.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Variables=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Type'''&lt;br /&gt;
| '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| iconheight&lt;br /&gt;
| integer (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| iconwidth&lt;br /&gt;
| integer (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| leveling&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| maxvisibletabs&lt;br /&gt;
| integer (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rows&lt;br /&gt;
| object&lt;br /&gt;
| array of [[Creation/Dev/Script/Client/GuiTabCtrlEntry|GuiTabCtrlEntry]]&lt;br /&gt;
|-&lt;br /&gt;
| selected&lt;br /&gt;
| object (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| tabwidth&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Functions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Return Type'''&lt;br /&gt;
| '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| addrow(int, str)&lt;br /&gt;
| object row&lt;br /&gt;
| Returns the added row&lt;br /&gt;
|-&lt;br /&gt;
| clearrows()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| clearselection()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| findtext(str)&lt;br /&gt;
| integer rowindex&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| findtextid(str)&lt;br /&gt;
| integer rowid&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| getrowatpoint(int, int)&lt;br /&gt;
| integer rowindex&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| getrowidatpoint(int, int)&lt;br /&gt;
| integer rowid&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| getrownumbyid(int)&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| getselectedid()&lt;br /&gt;
| integer rowid&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| getselectedrow()&lt;br /&gt;
| integer rowindex&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| getselectedtext()&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| insertrow(int, int, str)&lt;br /&gt;
| object row&lt;br /&gt;
| Returns the inserted row&lt;br /&gt;
|-&lt;br /&gt;
| isidselected(int)&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| isrowselected(int)&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| makevisible(int)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| makevisiblebyid(int)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| removerow(int)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| removerowbyid(int)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rowcount()&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| seticonsize(int, int)&lt;br /&gt;
|&lt;br /&gt;
| sets the width and height of the icons for the entries, maximum size is 64x64&lt;br /&gt;
|-&lt;br /&gt;
| setselectedbyid(int)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| setselectedrow(int)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Events=&lt;br /&gt;
&lt;br /&gt;
onSelect(tabid,tabtext,tabindex) - a tab has been selected&lt;br /&gt;
&lt;br /&gt;
onDeselect(tabid,tabtext,tabindex) - a tab has been deselected (another tab got the focus)&lt;br /&gt;
&lt;br /&gt;
onOpenMenu(tabindex,mousescreenx,mousescreeny) - the right mouse button has been pressed while the mouse was over a tab&lt;br /&gt;
&lt;br /&gt;
onIconResized(newwidth,newheight) - the icon size has been modified (via setIconSize())&lt;br /&gt;
&lt;br /&gt;
=Example=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
new GuiTabCtrl(&amp;quot;Test_Tab&amp;quot;) {&lt;br /&gt;
  profile = GuiBlueTabProfile;&lt;br /&gt;
  x = 10;&lt;br /&gt;
  y = 10;&lt;br /&gt;
  width = 160;&lt;br /&gt;
  height = 24;&lt;br /&gt;
  tabwidth = 70;&lt;br /&gt;
    &lt;br /&gt;
  clearrows();&lt;br /&gt;
  addrow(0,&amp;quot;Tab&amp;quot;);&lt;br /&gt;
  addrow(1,&amp;quot;Control&amp;quot;);&lt;br /&gt;
  setSelectedRow(0);&lt;br /&gt;
}  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=News/2008/August&amp;diff=11008</id>
		<title>News/2008/August</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=News/2008/August&amp;diff=11008"/>
		<updated>2008-08-04T05:59:16Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* August */ Mythic spelling.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== August ===&lt;br /&gt;
* '''August 4th''' - '''Mythic Legends Hirings''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
I'll keep myself short and go directly to the point. We're looking for a bit of a help.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Character Equipment/Sprites''' - Self-explanatory. Your job would be to create custom looks on sprites, new hairs, clothing equipment etc.&lt;br /&gt;
&lt;br /&gt;
'''Icons''' - You'd be making 32x32 icons for currently existing items, spells and even skills/talents.&lt;br /&gt;
&lt;br /&gt;
'''GUIs''' - The dreadful default GUIs need to be replaced, are you creative enough for it?&lt;br /&gt;
&lt;br /&gt;
'''Interior and/or Exterior decorations''' - We're at a stage where inside levels are getting rapidly done, and the town is slowly getting bigger and bigger. However, while we might have tiles, we don't have anything to fill the levels with. That's where you come in! You'd get more or less free hands, but if anything is requested, why not do it right?&lt;br /&gt;
&lt;br /&gt;
'''Tiles''' - The oh so glorious task of creating more tiles. Interested?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Any of the above are up for grabs. If you don't want a steady job, and just want to help here and there - that's fine. We can provide you with boots to get around the normally sealed off town, as well as a limited RC for uploading. If you do want to be actually hired with any of the above tasks as main priority, then even better.&lt;br /&gt;
&lt;br /&gt;
Not hiring any coders, and doubtfully level makers - depends on how good you are.&lt;br /&gt;
&lt;br /&gt;
All/most core systems are done, now it's just the visual part left before we're ready to rock. And trust me, we'll rock - heavy metal style!&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/Script/Client&amp;diff=11000</id>
		<title>Creation/Dev/Script/Client</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/Script/Client&amp;diff=11000"/>
		<updated>2008-07-26T18:56:35Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Strings */ Spelling.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;=Client Supported Script Features=&lt;br /&gt;
&lt;br /&gt;
==Settings==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Type'''&lt;br /&gt;
| '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| $camera::movementspeed&lt;br /&gt;
| float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::choosenvoicecodec&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::microactivatebyvolume&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::microactivationlevel&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::microinputdevice&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::microon&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::microvolumefactor&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::midivolume&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::mp3volume&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::radiovolume&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::reversestereo&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::sfxvolume&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::voicevolume&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::allowglobalpms&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::automapping&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::defaultfontsize&lt;br /&gt;
| integer&lt;br /&gt;
| Change showtext zoom: $pref::graal::defaultfontsize/24&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::dontconnectlevels&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::dontloadlistheads&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::dontsavepasswords&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::dontsavepms&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::fixedport&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::fixedudpport&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::language&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::limitnicknames&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::loadbuddylistfromserver&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::nicknamelimit&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::nomassmessages&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::notoalls&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::noudp&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::showyourselfonbuddylists&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::input::mousesensitivity&lt;br /&gt;
| float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::interior::lockarrays&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::terrain::enabledetails&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::video::detailfactor&lt;br /&gt;
| float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::video::fogdistance&lt;br /&gt;
| float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::video::fullscreenmode&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::video::screenshotformat&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::video::visibledistance&lt;br /&gt;
| float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::video::windowmode&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $scenelighting::lightingprogress&lt;br /&gt;
| float (read only)&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Type'''&lt;br /&gt;
| '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| allfeatures&lt;br /&gt;
| integer (read only)&lt;br /&gt;
| for use with enablefeatures(), it's the default unless it is changed.&lt;br /&gt;
|-&lt;br /&gt;
| allplayerscount&lt;br /&gt;
| integer (read only)&lt;br /&gt;
| The size of the allplayers array.&lt;br /&gt;
|-&lt;br /&gt;
| allrenderobjecttypes&lt;br /&gt;
| integer (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| allstats&lt;br /&gt;
| integer (read only)&lt;br /&gt;
| A bitflag of all stats currently enabled&lt;br /&gt;
|-&lt;br /&gt;
| canspin&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if the player has spin attack&lt;br /&gt;
|-&lt;br /&gt;
| carriesblackstone&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if the player is carrying a black stone&lt;br /&gt;
|-&lt;br /&gt;
| carriesbush&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if the player is carrying a bush&lt;br /&gt;
|-&lt;br /&gt;
| carriesnpc&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if the player is carrying an NPC.&lt;br /&gt;
|-&lt;br /&gt;
| carriessign&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if a player is carrying a sign.&lt;br /&gt;
|-&lt;br /&gt;
| carriesstone&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if a player is carrying a stone.&lt;br /&gt;
|-&lt;br /&gt;
| carriesvase&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if a player is carrying a vase.&lt;br /&gt;
|-&lt;br /&gt;
| downloadfile&lt;br /&gt;
| string (read only)&lt;br /&gt;
| Name of the file currently being downloaded&lt;br /&gt;
|-&lt;br /&gt;
| downloadpos&lt;br /&gt;
| integer (read only)&lt;br /&gt;
| Amount of download file already downloaded&lt;br /&gt;
|-&lt;br /&gt;
| downloadsize&lt;br /&gt;
| integer (read only)&lt;br /&gt;
| Size of the file being downloaded&lt;br /&gt;
|-&lt;br /&gt;
| editingmission&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| emoticonchar&lt;br /&gt;
| string (read only)&lt;br /&gt;
| The letter of the emoticon being displayed by the player&lt;br /&gt;
|-&lt;br /&gt;
| focusx&lt;br /&gt;
| float (read only)&lt;br /&gt;
| X coordinate of the center of playing screen in the level, offset -1.5&lt;br /&gt;
|-&lt;br /&gt;
| focusy&lt;br /&gt;
| float (read only)&lt;br /&gt;
| Y coordinate of the center of playing screen in the level, offset -2&lt;br /&gt;
|-&lt;br /&gt;
| graalversion&lt;br /&gt;
| float (read only)&lt;br /&gt;
| Graal version&lt;br /&gt;
|-&lt;br /&gt;
| gravity&lt;br /&gt;
| float&lt;br /&gt;
| Downward acceleration for projectiles ejected with the shoot() function.&lt;br /&gt;
|-&lt;br /&gt;
| iscarrying&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if the player is carrying anything&lt;br /&gt;
|-&lt;br /&gt;
| isfocused&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| isgraal3d&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if you are running graal 3D&lt;br /&gt;
|-&lt;br /&gt;
| isleader&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| signifies that the player is the first person in the level&lt;br /&gt;
|-&lt;br /&gt;
| isonmap&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| signifies that the player is on a map&lt;br /&gt;
|-&lt;br /&gt;
| jpegquality&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| lastdownloadfile&lt;br /&gt;
| string (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| leftmousebutton&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if the left mouse button is down&lt;br /&gt;
|-&lt;br /&gt;
| levelorgx&lt;br /&gt;
| float (read only)&lt;br /&gt;
| The x-value of the levels' origin (may deviate with attachplayertoobj)&lt;br /&gt;
|-&lt;br /&gt;
| levelorgy&lt;br /&gt;
| float (read only)&lt;br /&gt;
| The y-value of the levels' origin (may deviate with attachplayertoobj)&lt;br /&gt;
|-&lt;br /&gt;
| lighteffectsenabled&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| signifies that the player has enabled light effects&lt;br /&gt;
|-&lt;br /&gt;
| weathereffectsenabled&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| signifies that the player has enabled weather effects&lt;br /&gt;
|-&lt;br /&gt;
| particleeffectsenabled&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| signifies that the player has enabled particle effects&lt;br /&gt;
|-&lt;br /&gt;
| middlemousebutton&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if the middle mouse button is down&lt;br /&gt;
|-&lt;br /&gt;
| mousebuttons&lt;br /&gt;
| integer (read only)&lt;br /&gt;
| Counts the amount of mousebuttons pressed&lt;br /&gt;
|-&lt;br /&gt;
| mousescreenx&lt;br /&gt;
| integer&lt;br /&gt;
| X coordinate of the mouse on the GUI layer&lt;br /&gt;
|-&lt;br /&gt;
| mousescreeny&lt;br /&gt;
| integer&lt;br /&gt;
| Y coordinate of the mouse on the GUI layer&lt;br /&gt;
|-&lt;br /&gt;
| mousewheeldelta&lt;br /&gt;
| integer (read only)&lt;br /&gt;
| Amount that the mouse scroll wheel was scrolled [(-) is up, (+) is down]&lt;br /&gt;
|-&lt;br /&gt;
| mousex&lt;br /&gt;
| float&lt;br /&gt;
| X coordinate of the mouse on the tile layer&lt;br /&gt;
|-&lt;br /&gt;
| mousey&lt;br /&gt;
| float&lt;br /&gt;
| Y coordinate of the mouse on the tile layer&lt;br /&gt;
|-&lt;br /&gt;
| musiclen&lt;br /&gt;
| integer (read only)&lt;br /&gt;
| The duration of the playing sound file&lt;br /&gt;
|-&lt;br /&gt;
| musicpos&lt;br /&gt;
| integer (read only)&lt;br /&gt;
| The position in the file at which the sound file is&lt;br /&gt;
|-&lt;br /&gt;
| rightmousebutton&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if the right mouse button is down&lt;br /&gt;
|-&lt;br /&gt;
| screenheight&lt;br /&gt;
| integer (read only)&lt;br /&gt;
| Height of the Graal window&lt;br /&gt;
|-&lt;br /&gt;
| screenwidth&lt;br /&gt;
| integer (read only)&lt;br /&gt;
| Width of the Graal window&lt;br /&gt;
|-&lt;br /&gt;
| scriptedcontrols&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scriptedplayerlist&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| selectedlistplayers&lt;br /&gt;
| object&lt;br /&gt;
| an array of players highlighted on the playerlist&lt;br /&gt;
|-&lt;br /&gt;
| selectedsword&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| selectedweapon&lt;br /&gt;
| integer&lt;br /&gt;
| Index of player.weapons that references the player's current weapon&lt;br /&gt;
|-&lt;br /&gt;
| servername&lt;br /&gt;
| string (read only)&lt;br /&gt;
| Name of the current server&lt;br /&gt;
|-&lt;br /&gt;
| serverstartconnect&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| serverstartparams&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| shotbybaddy&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if the player was shot by a baddy&lt;br /&gt;
|-&lt;br /&gt;
| shotbyplayer&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if the player was shot by another player&lt;br /&gt;
|-&lt;br /&gt;
| showterraingrid&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| timevar&lt;br /&gt;
| integer (read only)&lt;br /&gt;
| A timer which is increased each 5 seconds and is snychronized between server and clients; The timer started exactly on 2001-02-01 at 18:33:34 Paris time (opening of Graal2001); on serverside the unixtime (timevar2) is around 981048814 + timevar*5&lt;br /&gt;
|-&lt;br /&gt;
| timevar2&lt;br /&gt;
| float (read only)&lt;br /&gt;
| Unix-time with a very high precision, not synchronized between server and client&lt;br /&gt;
|-&lt;br /&gt;
| timevar3 &lt;br /&gt;
| float (read only)&lt;br /&gt;
| synchronized time which works on both server- and client-side, precision is milliseconds, only available for Graal3D right now&lt;br /&gt;
|-&lt;br /&gt;
| wasshooted&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| waterheight&lt;br /&gt;
| float&lt;br /&gt;
| The height of water at the player's (x,y) on a terrain&lt;br /&gt;
|-&lt;br /&gt;
| weapons&lt;br /&gt;
| object (read only)&lt;br /&gt;
| An array of weapon objects&lt;br /&gt;
|-&lt;br /&gt;
| weaponsenabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Are weapons enabled? (Player can trigger onWeaponFired...)&lt;br /&gt;
|-&lt;br /&gt;
| worldclockstopped&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| worldhour&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| worldminute&lt;br /&gt;
| float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| worldminutesofday&lt;br /&gt;
| float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| worldrealsecondsperday&lt;br /&gt;
| float&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Variable Prefixes==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Prefix'''&lt;br /&gt;
| '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| object.var&lt;br /&gt;
| accesses the variables of the object. The object can be retrieved by using the case-sensitive name of the object or a variable pointing to the object.&lt;br /&gt;
|-&lt;br /&gt;
| this.var&lt;br /&gt;
| variables that belong to the current script object, on the server-side they are saved to file when the object is a database npc&lt;br /&gt;
|-&lt;br /&gt;
| thiso.var&lt;br /&gt;
| refer to the this. variables of the executing npc ('o' stands for original) when you use the with () command: with (findnpc(&amp;quot;npc2&amp;quot;)) thiso.temp = this.temp; will copy 'this.temp' from npc2 to the current npc&lt;br /&gt;
|-&lt;br /&gt;
| temp.var&lt;br /&gt;
| variables that belong to the current function. They can be used anywhere in the function even when referencing another object. Function parameters are declared as temp variables if they do not have a prefix. Temp variables will be destroyed at the end of the function.&lt;br /&gt;
|-&lt;br /&gt;
| player.var&lt;br /&gt;
| variables of the current player object, when the event was invoked by a player (e.g. playertouchsme), or you do with (findplayer(accountname))&lt;br /&gt;
|-&lt;br /&gt;
| playero.var&lt;br /&gt;
| variables of the original player object, in generally the player who has invoked the event (e.g. playertouchsme)&lt;br /&gt;
|-&lt;br /&gt;
| client.var&lt;br /&gt;
| short for player.client.var, variables that can be changed on server-side and client-side&lt;br /&gt;
|-&lt;br /&gt;
| clientr.var&lt;br /&gt;
| short for player.clientr.var, variables that can only be changed on server-side but can be read on client-side&lt;br /&gt;
|-&lt;br /&gt;
| server.var&lt;br /&gt;
| variables that only exists on server-side and can be accessed by all npcs&lt;br /&gt;
|-&lt;br /&gt;
| serverr.var&lt;br /&gt;
| variables that can only be changed on server-side and is server wide, but can also be read by all clients, so it can be used for storing the state of global activities that need client-side actions like displaying weather; like server. vars they can also be changed with remotecontrol.exe by administrators that have the right to change server. variables&lt;br /&gt;
|-&lt;br /&gt;
| level.var&lt;br /&gt;
| variables of the current level, which is the level the executing npc stands in (on server-side) or the player is in (on client-side)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
''Note: Currently this doesn't list the functions which are optimized at compile time, see [[Creation/Dev/Script/Starting_Guide#Standard_functions|Starting Guide: Standard functions]] for those.''&lt;br /&gt;
&lt;br /&gt;
===Common===&lt;br /&gt;
* aindexof(float, array) - returns integer, better use array.index(float) instead&lt;br /&gt;
* echo(str text) - prints text in the F2 window (clientside) or RC chat (serverside)&lt;br /&gt;
* getbasepackage() - returns [[Creation/Dev/Script/Client/TUpdatePackage|TUpdatePackage]] object&lt;br /&gt;
* getdownloadedupdatepackagesize() - returns integer&lt;br /&gt;
* getdownloadingpackage() - returns [[Creation/Dev/Script/Client/TUpdatePackage|TUpdatePackage]] object&lt;br /&gt;
* getdownloadingpackagescount() - returns integer&lt;br /&gt;
* gethttprequest(str, int, str) - returns [[Creation/Dev/Script/Client/THTTPRequest|THTTPRequest]] object&lt;br /&gt;
* getkeycode(str keyname) - returns integer&lt;br /&gt;
* getpackagesdownloadcomplete() - returns boolean&lt;br /&gt;
* getpackagesdownloaded() - returns boolean&lt;br /&gt;
* getplatform() - returns string&lt;br /&gt;
* getservername() - returns string&lt;br /&gt;
* gettotalupdatepackagesize() - returns integer&lt;br /&gt;
* getupdatepackage(str) - returns object&lt;br /&gt;
* isadminguild(str guildname) - returns boolean&lt;br /&gt;
* isobject(str objectname) - returns boolean, checks if an object is existing&lt;br /&gt;
* keydown(int keynumber) - returns if the specified key is pressed (0..10: up, left, down, right, S, A, D, M, tab, Q, P)&lt;br /&gt;
* keydown2(int keycode, bool ignorecase) - returns boolean&lt;br /&gt;
* keyname(int keycode) - returns string&lt;br /&gt;
* opengraalurl(str url) - opens a website of www.graalonline.com and automatically lets the player login to it (e.g. for the upgrade page or screenshot section)&lt;br /&gt;
* openurl(str url)&lt;br /&gt;
* openurl2(str url, int width, int height) - deprecated, width and height are ignored&lt;br /&gt;
* requesthttp(str, int, str) - returns [[Creation/Dev/Script/Client/THTTPRequest|THTTPRequest]] object&lt;br /&gt;
* requesttext(str type, str option)&lt;br /&gt;
* requesturl(str url) - returns [[Creation/Dev/Script/Client/THTTPRequest|THTTPRequest]] object&lt;br /&gt;
* savelog(str text)&lt;br /&gt;
* savelog2(str filename, str text) - adds a log entry to &amp;quot;logs/filename&amp;quot;&lt;br /&gt;
* sendrpgmessage(str text) - adds text to the F2 window&lt;br /&gt;
* sendtext(str type, str option, params...)&lt;br /&gt;
* sendtorc(str text) - serverside only, displays text on the RC chat&lt;br /&gt;
* serverwarp(str servername) - the name can either be the internal name (graal2002) or part of the server name on the serverlist&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* extractfilebase(str filepath) - returns string, '/an/example/path/and/file' would return '/an/example/path/and/'&lt;br /&gt;
* extractfileext(str filepath) - returns string, 'filename.ext' would return '.ext'&lt;br /&gt;
* extractfilename(str filepath) - returns string, '/an/example/path/and/file' would return 'file'&lt;br /&gt;
* extractfilepath(str filepath) - returns string, '/an/example/path/and/file' would return '/an/example/path/and/'&lt;br /&gt;
* fileexists(str filepath) - returns boolean, checks if a file exists&lt;br /&gt;
* filesize(str filepath) - returns integer, returns the size of a file&lt;br /&gt;
* fileupdate(str filepath) - returns boolean, checks if a file is existing and requests an update from the server if it has not been checked yet&lt;br /&gt;
* findfiles(str filenamepattern, flags) - returns array of strings, flags can be either 1 for recursive search or 0 for non-recursive&lt;br /&gt;
* freefileresources(str)&lt;br /&gt;
* getextension(str filepath) - returns string, 'filename.ext' would return '.ext'&lt;br /&gt;
* requestfiledeletion(str filepath), requests a file to be deleted on the server&lt;br /&gt;
* requestfilerename(str filepath, str newfilepath), requests a file to be renamed on the server&lt;br /&gt;
* requestfilesmove(str filepath, str newfilepath), requests a file to be moved on the server&lt;br /&gt;
* selectfilefordownload(str filter)&lt;br /&gt;
* selectfileforupload()&lt;br /&gt;
&lt;br /&gt;
''Watch the [[Creation/Dev/Script/Client/TGraalVar|TGraalVar]] object for loading and saving of files (loadlines etc.)''&lt;br /&gt;
&lt;br /&gt;
''See more information about input/output at [[Creation/Dev/Output Methods|Output methods]]''&lt;br /&gt;
&lt;br /&gt;
====Math====&lt;br /&gt;
* degtorad(float value) - returns float&lt;br /&gt;
* radtodeg(float value) - returns float&lt;br /&gt;
&lt;br /&gt;
=====Matrices=====&lt;br /&gt;
GraalScript [[Matrix|matricies]] are arrays of seven elements: three describing translation (position), three describing the rotation axis, and one describing the angle.&lt;br /&gt;
* [[Matrix#matrixcreate()|matrixcreate]](str vector, str rotation) - returns matrix string&lt;br /&gt;
* matrixcreatefromeuler(str eulerrotation) - returns matrix string&lt;br /&gt;
* matrixmulpoint(str, str) - returns string&lt;br /&gt;
* matrixmultiply(str matrix, str matrix) - returns matrix string&lt;br /&gt;
* matrixmulvector(str matrix, str vector) - returns vector string&lt;br /&gt;
&lt;br /&gt;
=====Vectors=====&lt;br /&gt;
Each [[Vectors|vector]] is basicly an array of format {x,y,z} but is passed as string for simplicity. Click on the function names to see more information about the vector operations.&lt;br /&gt;
* [[Vectors#Vector_Addition|vectoradd]](vector, vector) - returns vector&lt;br /&gt;
* [[Cross Product|vectorcross]](vector, vector) - returns vector&lt;br /&gt;
* [[Vectors#Distance_Between_Terminal_Points|vectordist]](vector, vector) - returns float&lt;br /&gt;
* [[Dot Product|vectordot]](vector, vector) - returns float&lt;br /&gt;
* [[Vectors#Vector_Length_.28Magnitude.29|vectorlen]](vector) - returns float&lt;br /&gt;
* [[Vectors#Unit_Length|vectornormalize]](vector) - returns vector, scales the vector to length 1&lt;br /&gt;
* vectororthobasis(vector) - returns vector&lt;br /&gt;
* [[Vectors#Vector-Scalar_Multiplication|vectorscale]](vector, float) - returns vector&lt;br /&gt;
* [[Vectors#Vector_Subtraction|vectorsub]](vector, vector) - returns vector&lt;br /&gt;
&lt;br /&gt;
====Strings====&lt;br /&gt;
* base64decode(str text) - returns decoded string&lt;br /&gt;
* base64encode(str text) - returns encoded string&lt;br /&gt;
* checksum(str text) - returns checksum (integer)&lt;br /&gt;
* contains(str haystack, str needle) - returns boolean, you should probably do haystack.contains(needle) instead&lt;br /&gt;
* getascii(str character) - returns ASCII value integer&lt;br /&gt;
* getstringkeys(str leading) - searches for variables which start with the specified string and returns an array of their endings&lt;br /&gt;
* lowercase(str text) - returns lowercased string, it is recommended to use string.lower() though&lt;br /&gt;
* md5(str text) - returns md5 hash string&lt;br /&gt;
* randomstring(array of strings) - returns string&lt;br /&gt;
* strcmp(str text1, str text2) - returns integer (0 if the strings are equal, a negative value if text1 is alphabetically before text2, otherwise a postive value)&lt;br /&gt;
* strequals(str text1, str text2) - returns boolean, you probably should do text1.equals(text2) or simply text1==text2 instead&lt;br /&gt;
* uppercase(str text) - returns uppercased string, it is recommended to use string.upper() though&lt;br /&gt;
&lt;br /&gt;
===GUI===&lt;br /&gt;
* addcontrol(obj) - adds a GUI control or a 3D-object to the scene&lt;br /&gt;
* cursoroff()&lt;br /&gt;
* cursoron()&lt;br /&gt;
* iscursoron() - returns boolean&lt;br /&gt;
* popdialog() - removes the top dialog control&lt;br /&gt;
* pushdialog(obj) - displays a control on top of all other controls, this control gains all focus until it is removed again&lt;br /&gt;
* setcontentcontrol(obj) - replaces the current content control (usually named GUIContainer) with another one&lt;br /&gt;
&lt;br /&gt;
===Graal 2D===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Type'''&lt;br /&gt;
| '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| addtiledef(str tilesetimage, str prefix, int tilesettype)&lt;br /&gt;
|&lt;br /&gt;
| Sets the tileset image for levels beginning with the specified prefix.&lt;br /&gt;
Tileset type 0 is for pics1.png style tilesets.&lt;br /&gt;
Tileset type 1 is for the new tileset format (Era's tiles for example)&lt;br /&gt;
|-&lt;br /&gt;
| addtiledef2(str tilesetimage, str prefix, int x, int y)&lt;br /&gt;
|&lt;br /&gt;
| Replaces a section of the tileset (x, y) image for levels beginning with the specified prefix.&lt;br /&gt;
|-&lt;br /&gt;
| attachplayertoobj(int objtype, int id)&lt;br /&gt;
|&lt;br /&gt;
| Attaches a player to the specified object. Using attachpayertoobj(0, id); the player will be attached to the current NPC.&lt;br /&gt;
|-&lt;br /&gt;
| callnpc(int npcindex, params...)&lt;br /&gt;
|&lt;br /&gt;
| Invokes an event on an npc, better use npcs[npcindex].trigger(event, params) instead; you can only trigger objects this way that are on your side of clientside/serverside&lt;br /&gt;
|-&lt;br /&gt;
| callweapon(int weaponindex, params...)&lt;br /&gt;
|&lt;br /&gt;
| Invokes a trigger on a weapon, better use weapons[weaponindex].trigger(event, params) instead&lt;br /&gt;
|-&lt;br /&gt;
| detachplayer()&lt;br /&gt;
|&lt;br /&gt;
| Puts the player back on the level (after using attachplayertoobj).&lt;br /&gt;
|-&lt;br /&gt;
| disabledefmovement()&lt;br /&gt;
|&lt;br /&gt;
| Disables the default movement.&lt;br /&gt;
|-&lt;br /&gt;
| disablemap()&lt;br /&gt;
|&lt;br /&gt;
| Disables the default map&lt;br /&gt;
|-&lt;br /&gt;
| disablepause()&lt;br /&gt;
|&lt;br /&gt;
| Disables pausing.&lt;br /&gt;
|-&lt;br /&gt;
| disableselectweapons()&lt;br /&gt;
|&lt;br /&gt;
| Disables the default Q menu.&lt;br /&gt;
|-&lt;br /&gt;
| disableweapons()&lt;br /&gt;
|&lt;br /&gt;
| Disables weapons.&lt;br /&gt;
|-&lt;br /&gt;
| enabledefmovement()&lt;br /&gt;
|&lt;br /&gt;
| Enables default movement&lt;br /&gt;
|-&lt;br /&gt;
| enablefeatures(int flags)&lt;br /&gt;
| &lt;br /&gt;
| Enable/disable client features&lt;br /&gt;
&lt;br /&gt;
Flags can consist of:&lt;br /&gt;
  {| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
  | '''Value'''&lt;br /&gt;
  | '''Description'''&lt;br /&gt;
  |-&lt;br /&gt;
  | 1&lt;br /&gt;
  | M key (map)&lt;br /&gt;
  |-&lt;br /&gt;
  | 2&lt;br /&gt;
  | P key (pause)&lt;br /&gt;
  |-&lt;br /&gt;
  | 4&lt;br /&gt;
  | Q key (weapon select)&lt;br /&gt;
  |-&lt;br /&gt;
  | 8&lt;br /&gt;
  | R key (show ratings)&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x10&lt;br /&gt;
  | S+A key combination for dropping items&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x20&lt;br /&gt;
  | S+D key combination for switching weapons&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x40&lt;br /&gt;
  | TAB key (if disabled then you cannot switch to the chat field with TAB)&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x80&lt;br /&gt;
  | Display of chat text&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x100&lt;br /&gt;
  | Display of the hearts over player heads&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x200&lt;br /&gt;
  | Display of nicknames&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x400&lt;br /&gt;
  | Toall/PM-icons on the minimap&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x800&lt;br /&gt;
  | Right-click on players opens their profile&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x1000&lt;br /&gt;
  | Emoticons (disable it if you want to do other stuff with control+keys)&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x2000&lt;br /&gt;
  | Alt+5 for making snapshots  ''(deprecated)''&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x4000&lt;br /&gt;
  | Alt+8/9 for zooming ''(deprecated)''&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x8000&lt;br /&gt;
  | Allows F2 output (savelog()/echo())&lt;br /&gt;
  |-&lt;br /&gt;
  | allfeatures&lt;br /&gt;
  | All of the previously stated feature flags enabled&lt;br /&gt;
  |}&lt;br /&gt;
|-&lt;br /&gt;
| enablemap()&lt;br /&gt;
|&lt;br /&gt;
| Enables default map.&lt;br /&gt;
|-&lt;br /&gt;
| enablepause()&lt;br /&gt;
|&lt;br /&gt;
| Enables pausing.&lt;br /&gt;
|-&lt;br /&gt;
| enableselectweapons()&lt;br /&gt;
|&lt;br /&gt;
| Enables default Q menu.&lt;br /&gt;
|-&lt;br /&gt;
| enableweapons()&lt;br /&gt;
|&lt;br /&gt;
| Enables weapons.&lt;br /&gt;
|-&lt;br /&gt;
| explodebomb(int bombindex)&lt;br /&gt;
|&lt;br /&gt;
| Explodes a bomb with the specified index.&lt;br /&gt;
|-&lt;br /&gt;
| findani(str)&lt;br /&gt;
| [[Creation/Dev/Script/Client/TGraalAni|TGraalAni]] object&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| findlevel(str levelfilename)&lt;br /&gt;
| [[Creation/Dev/Script/Client/TServerLevel|TServerLevel]] object&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| findplayer(str accountname)&lt;br /&gt;
| [[Creation/Dev/Script/Client/TServerPlayer|TServerPlayer]] object&lt;br /&gt;
| Returns player object of Account specified. Player must be online.&lt;br /&gt;
|-&lt;br /&gt;
| findplayerbyid(int playerid)&lt;br /&gt;
| [[Creation/Dev/Script/Client/TServerPlayer|TServerPlayer]] object&lt;br /&gt;
| Returns player object of id specified. If id isn't available, returns false.&lt;br /&gt;
|-&lt;br /&gt;
| findweapon(str weaponname)&lt;br /&gt;
| [[Creation/Dev/Script/Client/TServerWeapon|TServerWeapon]] object&lt;br /&gt;
| Returns weapon object of the specified name if the player has that weapon.&lt;br /&gt;
|-&lt;br /&gt;
| findweaponnpc(str weaponname)&lt;br /&gt;
| [[Creation/Dev/Script/Client/TServerWeapon|TServerWeapon]] object&lt;br /&gt;
| Returns weapon object if it exits on the server, only works on server-side. You can normally also access weapons by just typing their name though (e.g. MyWeapon.functionname() instead of findweaponnpc(&amp;quot;MyWeapon&amp;quot;).functionname())&lt;br /&gt;
|-&lt;br /&gt;
| freezeplayer(float seconds)&lt;br /&gt;
|&lt;br /&gt;
| Freezes player for a specific amount of time.&lt;br /&gt;
|-&lt;br /&gt;
| getimgheight(str imagefilename)&lt;br /&gt;
| integer&lt;br /&gt;
| Returns the height (in pixels) of an image.&lt;br /&gt;
|-&lt;br /&gt;
| getimgwidth(str imagefilename)&lt;br /&gt;
| integer&lt;br /&gt;
| Returns the width (in pixels) of an image.&lt;br /&gt;
|-&lt;br /&gt;
| getmapx(str levelname)&lt;br /&gt;
| integer&lt;br /&gt;
| X coordinate of the level on a map (top-left level is 0)&lt;br /&gt;
|-&lt;br /&gt;
| getmapy(str levelname)&lt;br /&gt;
| integer&lt;br /&gt;
| Y coordinate of the level on a map (top-left level is 0)&lt;br /&gt;
|-&lt;br /&gt;
| gettextheight(float, str, str)&lt;br /&gt;
| integer&lt;br /&gt;
| Returns the height of the font. Format:&lt;br /&gt;
  gettextheight(zoom, font, style)&lt;br /&gt;
|-&lt;br /&gt;
| gettextwidth(float, str, str, str)&lt;br /&gt;
| integer&lt;br /&gt;
| Returns the width of a specified text in a certain font. Format:&lt;br /&gt;
  gettextwidth(zoom, font, style, text)&lt;br /&gt;
|-&lt;br /&gt;
| getz(float x, float y)&lt;br /&gt;
| float&lt;br /&gt;
| Returns the z value of a terrain at (x,y).&lt;br /&gt;
|-&lt;br /&gt;
| graalcontrolhasfocus(bool) &lt;br /&gt;
| boolean &lt;br /&gt;
| parameter says if it should also check if the chat bar has the focus&lt;br /&gt;
|-&lt;br /&gt;
| hideplayer(float seconds)&lt;br /&gt;
|&lt;br /&gt;
| Hides the player for ''seconds'' seconds.&lt;br /&gt;
|-&lt;br /&gt;
| hidesword(float seconds)&lt;br /&gt;
|&lt;br /&gt;
| Hides the player's sword for ''seconds'' seconds.&lt;br /&gt;
|-&lt;br /&gt;
| hitnpc(int, float, float, float)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| hitobjects(float, float, float)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| hitplayer(int, float, float, float)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| lay2(str extraname, float x, float y)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| loadmap(str mapfilename)&lt;br /&gt;
|&lt;br /&gt;
| Preloads a gmap on clientside, speeds up entering of new maps but is not required.&lt;br /&gt;
|-&lt;br /&gt;
| noplayerkilling()&lt;br /&gt;
|&lt;br /&gt;
| Disables killing of other players. This also lets players walk through other players (players are not blocking anymore).&lt;br /&gt;
|-&lt;br /&gt;
| onwall(float x, float y)&lt;br /&gt;
| boolean&lt;br /&gt;
| Returns true if the specified x and y is a blocking tile.&lt;br /&gt;
|-&lt;br /&gt;
| onwall2(float x, float y, float width, float height)&lt;br /&gt;
| boolean&lt;br /&gt;
| Returns true if a blocking tile exists in the specified area.&lt;br /&gt;
|-&lt;br /&gt;
| onwater(float x, float y)&lt;br /&gt;
| boolean&lt;br /&gt;
| Returns true if the specified x and y is water.&lt;br /&gt;
|-&lt;br /&gt;
| onwater2(float x, float y, float width, float height)&lt;br /&gt;
| boolean&lt;br /&gt;
| Returns true if water exists in the specified area.&lt;br /&gt;
|-&lt;br /&gt;
| play(str soundfilename)&lt;br /&gt;
|&lt;br /&gt;
| Plays the specified sound file.&lt;br /&gt;
|-&lt;br /&gt;
| play2(str soundfilename, float x, float y, float volume)&lt;br /&gt;
|&lt;br /&gt;
| Plays the specified sound file at location x, y with the specified volume. Volume should be between 0 and 1, if volume is set to 1 default volume is used (depending on how far away the player is).&lt;br /&gt;
|-&lt;br /&gt;
| playlooped(str soundfilename)&lt;br /&gt;
|&lt;br /&gt;
| Plays the specified sound file in a loop until stopsound() is called.&lt;br /&gt;
|-&lt;br /&gt;
| playlooped2(str soundfile, float x, float y, float volume)&lt;br /&gt;
|&lt;br /&gt;
| Plays the specified sound file at location x, y with the specified volume in a loop until stopsound() is called. Volume should be between 0 and 1, if volume is set to 1 default volume is used (depending on how far away the player is).&lt;br /&gt;
|-&lt;br /&gt;
| putleaps(int leapstype, float x, float y)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| removetiledefs(str prefix)&lt;br /&gt;
|&lt;br /&gt;
| Remove tile definitions set by addtiledef and addtiledef2 for the specified prefix.&lt;br /&gt;
|-&lt;br /&gt;
| replaceani(str defaultaniname, str newaniname)&lt;br /&gt;
|&lt;br /&gt;
| replaces the player's default ani with the new ani.&lt;br /&gt;
|-&lt;br /&gt;
| resetfocus()&lt;br /&gt;
|&lt;br /&gt;
| Sets the screen focus to the player (default focus behaviour).&lt;br /&gt;
|-&lt;br /&gt;
| say(int signindex)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| say2(str text)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| screenx(float x, float y)&lt;br /&gt;
| integer&lt;br /&gt;
| returns the x of the screen layer for a location on the tiles layer.&lt;br /&gt;
|-&lt;br /&gt;
| screeny(float x, float y)&lt;br /&gt;
| integer&lt;br /&gt;
| returns the y of the screen layer for a location on the tiles layer.&lt;br /&gt;
|-&lt;br /&gt;
| worldx(float x, float y)&lt;br /&gt;
| float&lt;br /&gt;
| returns the x of the tiles layer for a location on the screen layer.&lt;br /&gt;
|-&lt;br /&gt;
| worldy(float x, float y)&lt;br /&gt;
| float&lt;br /&gt;
| returns the y of the tiles layer for a location on the screen layer.&lt;br /&gt;
|-&lt;br /&gt;
| setani(str aniname, str aniparams)&lt;br /&gt;
|&lt;br /&gt;
| Sets the gani of a player.&lt;br /&gt;
|-&lt;br /&gt;
| setbeltcolor(str color)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| setcoatcolor(str color)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| seteffect(float red, float green, float blue, float alpha)&lt;br /&gt;
|&lt;br /&gt;
| Displays a 'day-night' effect on top of the game. Default value is (0,0,0,0). Change alpha to make the screen darker. You can reach the same effect if you use a polygon (showpoly()) and set the mode to 3. To manipulate the color of a single npc, see setcoloreffect() for [[Creation/Dev/Script/Client/TServerNPC|TServerNPC]].&lt;br /&gt;
|-&lt;br /&gt;
| setfocus(float x, float y)&lt;br /&gt;
|&lt;br /&gt;
| Sets the screen focus to the specified x and y. Use resetfocus() to switch back to the default focus behaviour.&lt;br /&gt;
|-&lt;br /&gt;
| setgender(str gendername)&lt;br /&gt;
|&lt;br /&gt;
| Sets the gender of a player.&lt;br /&gt;
|-&lt;br /&gt;
| sethead(str imagefilename)&lt;br /&gt;
|&lt;br /&gt;
| Sets the head of a player&lt;br /&gt;
|-&lt;br /&gt;
| setletters(str imagefilename)&lt;br /&gt;
|&lt;br /&gt;
| Sets the image to use for sign background and text.&lt;br /&gt;
|-&lt;br /&gt;
| setmap(str textfile, str image, float defaultx, float defaultx)&lt;br /&gt;
|&lt;br /&gt;
| Sets a text map (you can see the tiles of other levels but not the npcs), use gmaps if possible instead of this; the parameter order has been changed between GS1 and GS2 to match the server option &amp;quot;bigmap=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| setminimap(str textfile, str image, float defaultx, float defaulty)&lt;br /&gt;
|&lt;br /&gt;
| Sets the mini map, use gmaps if possible instead of this; the parameter order has been changed between GS1 and GS2 to match the server option &amp;quot;minimap=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| setmusicvolume(float, float)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| setplayerdir(str)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| setshield(str imagefilename, int shieldpower)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| setshoecolor(str color)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| setshootparams(str params)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| setskincolor(str color)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| setsleevecolor(str color)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| setsword(str imagefilename, int swordpower)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| showstats(int statsflag)&lt;br /&gt;
|&lt;br /&gt;
| With this you can show/hide parts of the status bar / game&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Shows all&lt;br /&gt;
showstats(allstats);&lt;br /&gt;
&lt;br /&gt;
// Enable everything except minimap&lt;br /&gt;
showstats(allstats &amp;amp; ~0x100);&lt;br /&gt;
&lt;br /&gt;
// Enable everything except AP and MP bars&lt;br /&gt;
showstats(allstats &amp;amp; ~(0x40 | 0x80));&lt;br /&gt;
&lt;br /&gt;
// Enable only players and right-click profile&lt;br /&gt;
showstats(0x400 | 0x800);&lt;br /&gt;
&lt;br /&gt;
// Hides all&lt;br /&gt;
showstats(0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Flags can consist of:&lt;br /&gt;
  {| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
  | '''Value'''&lt;br /&gt;
  | '''Description'''&lt;br /&gt;
  |-&lt;br /&gt;
  | 1&lt;br /&gt;
  | ASD&lt;br /&gt;
  |-&lt;br /&gt;
  | 2&lt;br /&gt;
  | Icons (for rupees, bombs, arrows)&lt;br /&gt;
  |-&lt;br /&gt;
  | 4&lt;br /&gt;
  | Rupees count&lt;br /&gt;
  |-&lt;br /&gt;
  | 8&lt;br /&gt;
  | Bombs count&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x10&lt;br /&gt;
  | Arrows count&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x20&lt;br /&gt;
  | Hearts&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x40&lt;br /&gt;
  | Alignment (ap) bar&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x80&lt;br /&gt;
  | Magic points (mp) bar&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x100&lt;br /&gt;
  | Minimap (you can only hide it, you can't show it when the player pressed Alt+3)&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x200&lt;br /&gt;
  | Inventory NPCs&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x400&lt;br /&gt;
  | Players&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x800&lt;br /&gt;
  | Right-click on players opens their profile&lt;br /&gt;
  |-&lt;br /&gt;
  | allstats&lt;br /&gt;
  | All of the previously stated stats flags enabled&lt;br /&gt;
  |}&lt;br /&gt;
|-&lt;br /&gt;
| spyfire(int length, int power)&lt;br /&gt;
|&lt;br /&gt;
| Shoots a line of fire in the direction of the player with the specified tile length, and fire power (1 - bomb, 2 - super bomb, 3 - jolt bomb).&lt;br /&gt;
|-&lt;br /&gt;
| stopmidi()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| stopsound(str soundfilename)&lt;br /&gt;
|&lt;br /&gt;
| Stop playing a sound started by playlooped&lt;br /&gt;
|-&lt;br /&gt;
| takeplayercarry()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| takeplayerhorse()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| testplayer(float x, float y)&lt;br /&gt;
| integer&lt;br /&gt;
| checks if there is a player on that position and returns the index of the player in players[], or -1 if there is none&lt;br /&gt;
|-&lt;br /&gt;
| triggeraction(float x, float y, str eventname, params...)&lt;br /&gt;
|&lt;br /&gt;
| Invokes an &amp;quot;onActionEventname&amp;quot; event on objects at the specified position, can be used to invoke events on objects from clientside to serverside and vice versa. &lt;br /&gt;
Special eventnames are &amp;quot;serverEventname&amp;quot; which will invoke an event on the Control-NPC (onActionEventname), or &amp;quot;serverside&amp;quot; which will invoke an onActionServerSide event on the weapon script specified by the first following parameter (the fourth parameter). It is recommended to use triggerserver() for that though.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
triggeraction(30, 30, &amp;quot;explode&amp;quot;, 5);&lt;br /&gt;
triggeraction(0, 0, &amp;quot;serverchat&amp;quot;, player.chat);&lt;br /&gt;
triggeraction(0, 0, &amp;quot;serverside&amp;quot;, &amp;quot;PlasmaGun&amp;quot;, &amp;quot;activate&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| triggerserver(str objecttype, str objectname, str params)&lt;br /&gt;
|&lt;br /&gt;
| Invokes an event on a serverside object, currently objecttype can only be &amp;quot;gui&amp;quot; or &amp;quot;weapon&amp;quot; (which is the same), objectname is the name of the weapon script, the invoked event will be &amp;quot;onActionServerSide&amp;quot;.&lt;br /&gt;
On Graal3D the event will be &amp;quot;onActionParam0&amp;quot; instead.&lt;br /&gt;
For invoking events on the clientside use player.triggerclient(objecttype,objectname,params) instead.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
triggerserver(&amp;quot;weapon&amp;quot;, &amp;quot;PlasmaGun&amp;quot;, &amp;quot;activate&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| updateboard(int x, int y, int width, int height)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| updateratings(obj)&lt;br /&gt;
| object&lt;br /&gt;
| Updates an array of {rating1,ratingdeviation1, rating2,ratingdeviation2, ...}, init them at 1500 and 350.&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
newratings = updateratings({winner.rating,winner.ratingd,loser.rating,loser.ratingd});&lt;br /&gt;
winner.rating = newratings[0];&lt;br /&gt;
winner.ratingd = newratings[1];&lt;br /&gt;
loser.rating = newratings[2];&lt;br /&gt;
loser.ratingd = newratings[3];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| wraptext(int fontsize, str format, str text)&lt;br /&gt;
| array of strings&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| wraptext2(int pixelwidth, float zoom, str delimiters, str text)&lt;br /&gt;
| array of strings&lt;br /&gt;
| wraps the text so that it fits in the specified number of pixels and returns an array of text lines &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Graal 3D===&lt;br /&gt;
* getboxcenter(str box) - returns string&lt;br /&gt;
* get3dobjectat(float x, float y, bool doboxcollision) - returns object - gets the 3d object at the specified screen position, third parameter says if it should do box collision&lt;br /&gt;
* get3dobjectatmouse(bool doboxcollision) - returns object - gets the 3d object at the mouse, specify if it should do box collision (true)&lt;br /&gt;
* get3dobjectbyray(str vector, str vector) - returns object&lt;br /&gt;
* lightscene() - returns boolean&lt;br /&gt;
* setfogcolors(array)&lt;br /&gt;
* setinteriorrendermode(int)&lt;br /&gt;
* setskybandcolors(array)&lt;br /&gt;
* setskybandsizes(array)&lt;br /&gt;
* setsuncolors(array)&lt;br /&gt;
* setterrainrendermode(int)&lt;br /&gt;
* synctimeofday(float hour, float minute)&lt;br /&gt;
* updateterrain()&lt;br /&gt;
* updatevisibledistance()&lt;br /&gt;
&lt;br /&gt;
==Classes / Object Types==&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;=Object Navigation=&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
* [[Creation/Dev/Script/Client/TGraalVar|TGraalVar]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/ActionMap|ActionMap]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/DTSAniThread|DTSAniThread]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/GameMovementInterpolate|GameMovementInterpolate]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GameMovementRigid|GameMovementRigid]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/GameMovementList|GameMovementList]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/GameShape|GameShape]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GameShape3DS|GameShape3DS]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GameShapeDIF|GameShapeDIF]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GameShapeDTS|GameShapeDTS]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GameShapeFT|GameShapeFT]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/GuiControl|GuiControl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiArrayCtrl|GuiArrayCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiTextListCtrl|GuiTextListCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiTreeViewCtrl|GuiTreeViewCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiBitmapButtonCtrl|GuiBitmapButtonCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiBitmapCtrl|GuiBitmapCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiMapOverviewCtrl|GuiMapOverviewCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiButtonBaseCtrl|GuiButtonBaseCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiButtonCtrl|GuiButtonCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiCheckBoxCtrl|GuiCheckBoxCtrl]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/GuiRadioCtrl|GuiRadioCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiChunkedBitmapCtrl|GuiChunkedBitmapCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiContextMenuCtrl|GuiContextMenuCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiDrawingPanel|GuiDrawingPanel]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiFlash|GuiFlash]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiFrameSetCtrl|GuiFrameSetCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiGraal3DCtrl|GuiGraal3DCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiGraalCtrl|GuiGraalCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiMenuCtrl|GuiMenuCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiMLTextCtrl|GuiMLTextCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiMLTextEditCtrl|GuiMLTextEditCtrl]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/GuiPMEditCtrl|GuiPMEditCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiPMCtrl|GuiPMCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiPMHistoryCtrl|GuiPMHistoryCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiPlayerView|GuiPlayerView]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiProgressCtrl|GuiProgressCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiScrollCtrl|GuiScrollCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiShapeNameHud|GuiShapeNameHud]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiShowImgCtrl|GuiShowImgCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiSliderCtrl|GuiSliderCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiStretchCtrl|GuiStretchCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiTabCtrl|GuiTabCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiTextCtrl|GuiTextCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiPopUpEditCtrl|GuiPopUpEditCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiPopUpMenuCtrl|GuiPopUpMenuCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiTextEditCtrl|GuiTextEditCtrl]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/GuiTextEditSliderCtrl|GuiTextEditSliderCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiWindowCtrl|GuiWindowCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/TerrainEditor|TerrainEditor]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/WorldEditor|WorldEditor]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/GuiControlProfile|GuiControlProfile]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/GuiCursor|GuiCursor]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/GuiTabCtrlEntry|GuiTabCtrlEntry]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/GuiTextListEntry|GuiTextListEntry]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/GuiTreeViewNode|GuiTreeViewNode]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/MRandomGenerator|MRandomGenerator]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/MRandomLCG|MRandomLCG]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/MRandomR250|MRandomR250]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/SimObject|SimObject]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/SceneObject|SceneObject]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/fxSunLight|fxSunLight]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GameObject|GameObject]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/Camera|Camera]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/DynamicShapeReplicator|DynamicShapeReplicator]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/DynamicGrass|DynamicGrass]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/DynamicGrassReplicator|DynamicGrassReplicator]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/Sky|Sky]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TerrainBlock|TerrainBlock]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/twSurfaceReference|twSurfaceReference]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/WaterBlock|WaterBlock]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/SimGroup|SimGroup]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GameConnection|GameConnection]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/Sun|Sun]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TDrawableObject|TDrawableObject]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/TBaddy|TBaddy]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/TLevelObject|TLevelObject]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TExplosion|TExplosion]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TGaniObject|TGaniObject]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/TProjectile|TProjectile]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/TServerHorse|TServerHorse]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/TServerPlayer|TServerPlayer]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/TPlayer|TPlayer]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/TServerNPC|TServerNPC]]&lt;br /&gt;
******* [[Creation/Dev/Script/Client/TServerWeapon|TServerWeapon]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TServerBomb|TServerBomb]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TServerCarry|TServerCarry]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TServerChest|TServerChest]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TServerExtra|TServerExtra]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TServerFlying|TServerFlying]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TServerLeap|TServerLeap]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TServerSign|TServerSign]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TShowImg|TShowImg]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TDrawingPanel|TDrawingPanel]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/Terraformer|Terraformer]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TFrameDetail|TFrameDetail]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TGaniParam|TGaniParam]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TGraalAni|TGraalAni]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TGraalAniPart|TGraalAniPart]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TGraalAniSound|TGraalAniSound]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TGraalAniSprite|TGraalAniSprite]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TGraalAniStep|TGraalAniStep]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TGraalSpriteAttachment|TGraalSpriteAttachment]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/THTTPRequest|THTTPRequest]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TMovementRigid|TMovementRigid]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TParticle|TParticle]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TParticleEmitter|TParticleEmitter]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TParticleModifier|TParticleModifier]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TServerLevel|TServerLevel]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TServerLevelLink|TServerLevelLink]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TShapeMaterial|TShapeMaterial]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TShowImg_Values|TShowImg_Values]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/TShowImg_Flash|TShowImg_Flash]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/TShowImg_Gani|TShowImg_Gani]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/TShowImg_Image|TShowImg_Image]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/TShowImg_Shape|TShowImg_Shape]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/TShowImg_Poly|TShowImg_Poly]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/TShowImg_Text|TShowImg_Text]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TStaticVar|TStaticVar]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TTilesLayer|TTilesLayer]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TUpdatePackage|TUpdatePackage]]&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/Script/Client/GuiBitmapButtonCtrl&amp;diff=10892</id>
		<title>Creation/Dev/Script/Client/GuiBitmapButtonCtrl</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/Script/Client/GuiBitmapButtonCtrl&amp;diff=10892"/>
		<updated>2008-06-28T22:52:40Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Description */ Fixed link.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Inherits [[Creation/Dev/Script/Client/GuiControl|GuiControl]].&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&lt;br /&gt;
[[Image:Guicontrol_bitmapbutton.png]]&lt;br /&gt;
&lt;br /&gt;
This control is basicly displaying a stretched bitmap and has three states - normal, mouse over and pressed. For each state you can specify a different bitmap. This can be interesting if you want to make a nice looking graphical button which has an usual shape. For displaying a normal button see [[Creation/Dev/Script/Client/GuiButtonCtrl|GuiButtonCtrl]].&lt;br /&gt;
&lt;br /&gt;
=Variables=&lt;br /&gt;
&lt;br /&gt;
mouseoverbitmap - string&lt;br /&gt;
&lt;br /&gt;
normalbitmap - string&lt;br /&gt;
&lt;br /&gt;
pressedbitmap - string&lt;br /&gt;
&lt;br /&gt;
text - string&lt;br /&gt;
&lt;br /&gt;
=Functions=&lt;br /&gt;
&lt;br /&gt;
setbitmap(str, int)&lt;br /&gt;
&lt;br /&gt;
=Example=&lt;br /&gt;
&lt;br /&gt;
  new GuiBitmapButtonCtrl(&amp;quot;Test_BitmapButton&amp;quot;) {&lt;br /&gt;
    x = 10;&lt;br /&gt;
    y = 10;&lt;br /&gt;
    width = height = 64;&lt;br /&gt;
    normalbitmap = &amp;quot;guiedit_button_normal.png&amp;quot;;&lt;br /&gt;
    mouseoverbitmap = &amp;quot;guiedit_button_mouseover.png&amp;quot;;&lt;br /&gt;
    pressedbitmap = &amp;quot;guiedit_button_down.png&amp;quot;;&lt;br /&gt;
  }&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=News/2008/June&amp;diff=10867</id>
		<title>News/2008/June</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=News/2008/June&amp;diff=10867"/>
		<updated>2008-06-22T03:27:38Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* June */ Governor punctuation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== June ===&lt;br /&gt;
* '''June 21st''' - '''New Governor of the Crescent Pirates''' {{News/Graal_Kingdoms}}&lt;br /&gt;
[[Image:CrescentPiratesRetirementCeremony.png]]&lt;br /&gt;
&lt;br /&gt;
A new Governor of the Crescent Pirates was announced by Governor Felix Lionheart upon his retirement. The new Governor of the Crescent Pirates would be none other than Paul Cypher, a fearless pirate and a great leader. Congratulations Paul!&lt;br /&gt;
&lt;br /&gt;
* '''June 15th''' - '''GK Summer 2008''' {{News/Graal_Kingdoms}}&lt;br /&gt;
[[Image:Gksummer2008.png]] &lt;br /&gt;
&lt;br /&gt;
School's out, it's summer time, and Graal Kingdoms is waiting for your arrival. Trade items with other players, enjoy many events, level yourself above the rest, and manifest your own destiny on this medieval themed server. Raise your very own pets, learn spells, and help prevent the evil of the Bomy moon from enveloping our world!&lt;br /&gt;
&lt;br /&gt;
We hope to see you there!&lt;br /&gt;
&lt;br /&gt;
* '''June 13th''' - '''New Subscription System''' {{News/General}}&lt;br /&gt;
&lt;br /&gt;
We are introducing a new more flexible subscription system - you get a starter pack with your subscription, and you can pause your subscription:&lt;br /&gt;
&lt;br /&gt;
'''Euro conversion'''&lt;br /&gt;
&lt;br /&gt;
Right now we are losing an incredible amount of money each month just for currency conversion. That's why we have decided to switch the billing system completely to Euro. We know that odd Dollar numbers on the bill (like .37) might be confusing, but we hope that you understand this step. At the same time we lower the Euro prices so that the actual difference between old and new amount will not be too huge. So depending on where you come from and what you want to buy, some prices might be slightly higher or lower. On the subscription page you can easily convert the amount to your local currency.&lt;br /&gt;
&lt;br /&gt;
'''New subscription system'''&lt;br /&gt;
&lt;br /&gt;
We have changed the subscription system to be based on Gelats. That means you buy an amount of Gelats on the website, and then subscribe directly in the game using the Shop window. The subscription system has been simplified: we again only offer one Gold subscription which works for any current server (Zone, Kingdoms, Classic, under construction and hosted playerworlds). The price is in the middle of old single server subscription and gold bundle: you subscribe and then pay 300 Gelats each month.&lt;br /&gt;
&lt;br /&gt;
'''Free starter pack'''&lt;br /&gt;
&lt;br /&gt;
When you buy a subscription or gelat pack on the website then you get an additional starter pack for free. The starter pack includes items for Zone, Kingdoms, Unholy Nation, Zodiac and Era and makes the life for new players easier.&lt;br /&gt;
&lt;br /&gt;
'''Flexible subscriptions'''&lt;br /&gt;
&lt;br /&gt;
The subscription system is now much more flexible. First you don't need to subscribe for 12 months upfront: you can subscribe one month, then pause and continue later with your remaining Gelats. You will get an e-mail notification when your subscription is near the end and there are not enough Gelats on your account.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''June 9th''' - '''Project Mythic: Combat System Released!''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
You are now able to duel players one-on-one on Project Mythic. Want to try it out yourself?&lt;br /&gt;
&lt;br /&gt;
1) Create a new character and login with it.&lt;br /&gt;
&lt;br /&gt;
2) Find a suiting victim, then say /duel &amp;lt;charactername&amp;gt; (ie. /duel Ziro)&lt;br /&gt;
&lt;br /&gt;
3) Wait for the player to accept your duel request. Note: if it's not accepted within 60 seconds your request will time out.&lt;br /&gt;
&lt;br /&gt;
We're also still hiring interested level makers and pixel artists, poke me xXziroXx (Ziro) in-game!&lt;br /&gt;
&lt;br /&gt;
* '''June 7th''' - '''Zone Plasma Chaingun''' {{News/Zone}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Screenshot_plasmachaingun2.png]]&lt;br /&gt;
&lt;br /&gt;
Hightech in your hands: the new Plasma Chaingun shoots a stream of powerful plasma bullets, works with any class and requires less reloads than the metal chaingun. Now available in the Zone Shop.&lt;br /&gt;
&lt;br /&gt;
* '''June 1st''' - '''Zone Red Pistols Events''' {{News/Zone}}&lt;br /&gt;
This Sunday, Zone will have an event hosted on Deathmatch for Redpistoles. Zone will also have an event hosted for Redpistoles, and the exact event type and location have not been decided. The general time will be 18:00 server time through 21:00 server time.  Don't forget the progress on Zone Debug, the Bunker map could be out soon! &lt;br /&gt;
&lt;br /&gt;
[[Image:NataxowithRP2.PNG]]&lt;br /&gt;
Nataxo with redpistoles.&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/Script/Client/GuiTabCtrl&amp;diff=10861</id>
		<title>Creation/Dev/Script/Client/GuiTabCtrl</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/Script/Client/GuiTabCtrl&amp;diff=10861"/>
		<updated>2008-06-20T09:14:03Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Events */ Parameter names&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Inherits [[Creation/Dev/Script/Client/GuiControl|GuiControl]].&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&lt;br /&gt;
[[Image:Guicontrol_tab.png]]&lt;br /&gt;
&lt;br /&gt;
Displays several leveled buttons. If there is not enough space for displaying all tabs, then two arrow buttons are displayed for scrolling between the visible tabs. The actually behaviour (showing and hiding different GUI controls, which work as 'pages') must be done by script by reacting to the ''onSelect'' and ''onDeselect'' events.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Variables=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Type'''&lt;br /&gt;
| '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| iconheight&lt;br /&gt;
| integer (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| iconwidth&lt;br /&gt;
| integer (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| leveling&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| maxvisibletabs&lt;br /&gt;
| integer (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rows&lt;br /&gt;
| object&lt;br /&gt;
| array of [[Creation/Dev/Script/Client/GuiTabCtrlEntry|GuiTabCtrlEntry]]&lt;br /&gt;
|-&lt;br /&gt;
| selected&lt;br /&gt;
| object (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| tabwidth&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Functions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Return Type'''&lt;br /&gt;
| '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| addrow(int, str)&lt;br /&gt;
| object row&lt;br /&gt;
| Returns the added row&lt;br /&gt;
|-&lt;br /&gt;
| clearrows()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| clearselection()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| findtext(str)&lt;br /&gt;
| integer rowindex&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| findtextid(str)&lt;br /&gt;
| integer rowid&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| getrowatpoint(int, int)&lt;br /&gt;
| integer rowindex&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| getrowidatpoint(int, int)&lt;br /&gt;
| integer rowid&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| getrownumbyid(int)&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| getselectedid()&lt;br /&gt;
| integer rowid&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| getselectedrow()&lt;br /&gt;
| integer rowindex&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| getselectedtext()&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| insertrow(int, int, str)&lt;br /&gt;
| object row&lt;br /&gt;
| Returns the inserted row&lt;br /&gt;
|-&lt;br /&gt;
| isidselected(int)&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| isrowselected(int)&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| makevisible(int)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| makevisiblebyid(int)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| removerow(int)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| removerowbyid(int)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rowcount()&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| seticonsize(int, int)&lt;br /&gt;
|&lt;br /&gt;
| sets the width and height of the icons for the entries, maximum size is 64x64&lt;br /&gt;
|-&lt;br /&gt;
| setselectedbyid(int)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| setselectedrow(int)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Events=&lt;br /&gt;
&lt;br /&gt;
onSelect(tabid,tabindex,tabtext) - a tab has been selected&lt;br /&gt;
&lt;br /&gt;
onDeselect(tabid,tabtext,tabindex) - a tab has been deselected (another tab got the focus)&lt;br /&gt;
&lt;br /&gt;
onOpenMenu(tabindex,mousescreenx,mousescreeny) - the right mouse button has been pressed while the mouse was over a tab&lt;br /&gt;
&lt;br /&gt;
onIconResized(newwidth,newheight) - the icon size has been modified (via setIconSize())&lt;br /&gt;
&lt;br /&gt;
=Example=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
new GuiTabCtrl(&amp;quot;Test_Tab&amp;quot;) {&lt;br /&gt;
  profile = GuiBlueTabProfile;&lt;br /&gt;
  x = 10;&lt;br /&gt;
  y = 10;&lt;br /&gt;
  width = 160;&lt;br /&gt;
  height = 24;&lt;br /&gt;
  tabwidth = 70;&lt;br /&gt;
    &lt;br /&gt;
  clearrows();&lt;br /&gt;
  addrow(0,&amp;quot;Tab&amp;quot;);&lt;br /&gt;
  addrow(1,&amp;quot;Control&amp;quot;);&lt;br /&gt;
  setSelectedRow(0);&lt;br /&gt;
}  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=News/2008/March&amp;diff=10632</id>
		<title>News/2008/March</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=News/2008/March&amp;diff=10632"/>
		<updated>2008-03-23T16:16:45Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: Spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== March ===&lt;br /&gt;
* '''March 23th''' - '''Extended Hirings''' {{News/Playerworlds}}&lt;br /&gt;
After the nice input on the server received by players after opening up the little we have on Project Mythic for the LAT hirings, we've decided to open up a few more spots in the staff team.&lt;br /&gt;
&lt;br /&gt;
[[Image:MythicCastleTown1.png]]&lt;br /&gt;
&lt;br /&gt;
We are currently accepting applications for the following:&lt;br /&gt;
&lt;br /&gt;
* Pixel Artists - Your primary objectives would be to help out with tiles, or character equipments, whichever you prefer.&lt;br /&gt;
* Concept Designer - Have great fantasy? Love to draw, using whatever it may be? We are looking for help with designing a quite large castle town, that can't look too repetitive. Possibly accepting applicants for just equipment designing.&lt;br /&gt;
* Level Maker - Still available spots here.&lt;br /&gt;
&lt;br /&gt;
Contacts:&lt;br /&gt;
&lt;br /&gt;
*Ziro (xXziroXx) - AIM: irxzirox, email/MSN: xzirox@gmail.com&lt;br /&gt;
*Angel (Omaster2) - AIM: mShort345, email/MSN: mshort_23@hotmail.com&lt;br /&gt;
&lt;br /&gt;
Oh and, if you can't work in a team, never heard of the GraalEditor, or haven't the slightest clue about what a pixel is - don't bother applying please. Expect the until now delayed PvP duel system to be released within the nearest days as well!&lt;br /&gt;
&lt;br /&gt;
* '''March 15th''' - '''Zone Lava Blaster Event''' {{News/Zone}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Screenshot_lavaevent2.png]]&lt;br /&gt;
&lt;br /&gt;
New Events: Lava Blaster Event: Try to push the other players into the lava with your blaster! It's a last-man-standing event.&lt;br /&gt;
&lt;br /&gt;
Foot Race Dash: On the snow race map you can now do a dash (like Sonic): Hold S or D, then run and try to avoid hitting walls.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''March 8th''' - '''Project Mythic in need of Level Maker(s)!''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
[[Image:MythicTurnBasedCombat.png]]&lt;br /&gt;
&lt;br /&gt;
Work on Project Mythic, formerly known as Mythic Legends (not the same as the current server with the name though), is moving forward in a fast pace. The server will have some rather 'unique' features, such as:&lt;br /&gt;
&lt;br /&gt;
*Turn Based Combat&lt;br /&gt;
*Simple, yet effective, NPCs - such as town folks walking around &amp;quot;living their own lives&amp;quot;.&lt;br /&gt;
*Dynamic weather, that actually has an effect on the world.&lt;br /&gt;
&lt;br /&gt;
It would be foolish to list too many things, might result in empty promises. Anyways.. we're trying to create a town connected to a castle, with our own custom tiles. What we're looking for, is one or two Level Makers wanting to design the town (tiles needed can be requested by our tile maker), and later on detail it.&lt;br /&gt;
&lt;br /&gt;
If you are remotely interested, feel free to contact one of the following:&lt;br /&gt;
*Ziro (xXziroXx) - email: xzirox@gmail.com&lt;br /&gt;
*Angel (Omaster2) - AIM: mShort345&lt;br /&gt;
*Pimmeh (Pimmeh) - AIM: Pimmeh&lt;br /&gt;
&lt;br /&gt;
'''Related Threads:'''&lt;br /&gt;
&lt;br /&gt;
[http://forums.graalonline.com/forums/showthread.php?t=72884 Main Thread]&lt;br /&gt;
&lt;br /&gt;
[http://forums.graalonline.com/forums/showthread.php?t=77040 Videos]&lt;br /&gt;
&lt;br /&gt;
* '''March 8th''' - '''Zone Video Contests Winners Anouncement''' {{News/Zone}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Zonevideocontest.png]]&lt;br /&gt;
&lt;br /&gt;
Last week the Zone players took part in a video contest, and the best submissions where added to the forums and people could vote for which video they like most. The winners are Lord Conorr, Az and Jesper which got the new Twin Blade weapon as prize. &lt;br /&gt;
&lt;br /&gt;
Watch the videos at http://forums.graalonline.com/forums/showthread.php?t=78923&lt;br /&gt;
&lt;br /&gt;
* '''March 7th''' - '''AEON has opened a world to players''' {{News/Playerworlds}}&lt;br /&gt;
[[Image:Server_aeon.png]]&lt;br /&gt;
&lt;br /&gt;
AEON has released its classic-themed overworld, Elan: The Faded Nation.&lt;br /&gt;
&lt;br /&gt;
The release of the overworld is accompanied by the release of several systems:&lt;br /&gt;
*A Town Takeover System. Guilds are able to capture Elan's Towns, and receive perks for controlling them.&lt;br /&gt;
*A hunting system.  Players can hunt animals and sell their hides for some cash.  Higher level hunters can choose more powerful weapons.&lt;br /&gt;
*A mining system.  Higher level Miners have an easier time mining.  Miners can also purchase better axes.  Draisines make it easier for Miners to travel through the mines.&lt;br /&gt;
*An automated Event Bot.  Elan offers a variety of events.  If an Event Staff is not on, the Event Bot temporarily takes the place of staff.&lt;br /&gt;
*Guild PK Rankings.  Guilds can prove they are the best by reaching the top of the Guild PK Rankings.&lt;br /&gt;
*A wide selection of Weapons and Prizes.  Shops are scattered throughout the playerworld.&lt;br /&gt;
&lt;br /&gt;
In the works:&lt;br /&gt;
*Guild and Individual Spar rankings&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''March 2nd''' - '''Atrius is back!''' {{News/Playerworlds}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Atrius.gif]]&lt;br /&gt;
&lt;br /&gt;
You can look foward to:&lt;br /&gt;
*Gangs&lt;br /&gt;
*Businesses&lt;br /&gt;
*New Quests with Prizes&lt;br /&gt;
*In-Game Instant Messaging&lt;br /&gt;
*GPS Style Map&lt;br /&gt;
*and much more...&lt;br /&gt;
&lt;br /&gt;
We hope you enjoy the new features and come and play! Enjoy!&lt;br /&gt;
 &lt;br /&gt;
-TheJames (Manager of Atrius)&lt;br /&gt;
&lt;br /&gt;
* '''March 1st''' - '''Utopia is back!''' {{News/Playerworlds}}&lt;br /&gt;
Utopia is currently back from it's &amp;quot;In-Developmental Staff-Only&amp;quot; state. Along&lt;br /&gt;
with the opening, we've introduced the:&lt;br /&gt;
*New Inside OSL&lt;br /&gt;
*Biz System (Still being developed)&lt;br /&gt;
*Ammo System (All guns)&lt;br /&gt;
&lt;br /&gt;
*Also, we are hiring:&lt;br /&gt;
*1-2 NAT's&lt;br /&gt;
*1-2 GAT's&lt;br /&gt;
*Please hop on and talk to Ork for a job.&lt;br /&gt;
&lt;br /&gt;
*All for now!&lt;br /&gt;
&lt;br /&gt;
*Best Regards,&lt;br /&gt;
*Ork&lt;br /&gt;
*Utopia General Manager&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=VIP_account&amp;diff=7067</id>
		<title>VIP account</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=VIP_account&amp;diff=7067"/>
		<updated>2006-06-16T15:52:50Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Benefits */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An account with a wide range of benefits.&lt;br /&gt;
&lt;br /&gt;
== Benefits ==&lt;br /&gt;
* Access to the [http://forums.graalonline.com Graal Communication Center].&lt;br /&gt;
* Weekend access to Graal Gold Servers.&lt;br /&gt;
* Full-time access to hidden playerworlds.&lt;br /&gt;
* Ability to create guilds.&lt;br /&gt;
* Beta testing to various projects, recently Graal v4.&lt;br /&gt;
* Membership to the global guild (VIP)&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/Script/Client&amp;diff=7066</id>
		<title>Creation/Dev/Script/Client</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/Script/Client&amp;diff=7066"/>
		<updated>2006-06-16T15:26:21Z</updated>

		<summary type="html">&lt;p&gt;DrakilorP2P: /* Variables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Client Supported Script Features=&lt;br /&gt;
&lt;br /&gt;
==Settings==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Type'''&lt;br /&gt;
| '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| $camera::movementspeed&lt;br /&gt;
| float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::choosenvoicecodec&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::microactivatebyvolume&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::microactivationlevel&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::microinputdevice&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::microon&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::microvolumefactor&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::midivolume&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::mp3volume&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::radiovolume&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::reversestereo&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::sfxvolume&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::audio::voicevolume&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::allowglobalpms&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::automapping&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::defaultfontsize&lt;br /&gt;
| integer&lt;br /&gt;
| Change showtext zoom: $pref::graal::defaultfontsize/24&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::dontconnectlevels&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::dontloadlistheads&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::dontsavepasswords&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::dontsavepms&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::fixedport&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::fixedudpport&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::language&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::limitnicknames&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::loadbuddylistfromserver&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::nicknamelimit&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::nomassmessages&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::notoalls&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::noudp&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::graal::showyourselfonbuddylists&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::input::mousesensitivity&lt;br /&gt;
| float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::interior::lockarrays&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::terrain::enabledetails&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::video::detailfactor&lt;br /&gt;
| float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::video::fogdistance&lt;br /&gt;
| float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::video::fullscreenmode&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::video::screenshotformat&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::video::visibledistance&lt;br /&gt;
| float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $pref::video::windowmode&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $scenelighting::lightingprogress&lt;br /&gt;
| float (read only)&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Type'''&lt;br /&gt;
| '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| allfeatures&lt;br /&gt;
| integer (read only)&lt;br /&gt;
| for use with enablefeatures(), it's the default unless it is changed.&lt;br /&gt;
|-&lt;br /&gt;
| allplayerscount&lt;br /&gt;
| integer (read only)&lt;br /&gt;
| The size of the allplayers array.&lt;br /&gt;
|-&lt;br /&gt;
| allstats&lt;br /&gt;
| integer (read only)&lt;br /&gt;
| A bitflag of all stats currently enabled&lt;br /&gt;
|-&lt;br /&gt;
| canspin&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if the player has spin attack&lt;br /&gt;
|-&lt;br /&gt;
| carriesblackstone&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if the player is carrying a black stone&lt;br /&gt;
|-&lt;br /&gt;
| carriesbush&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if the player is carrying a bush&lt;br /&gt;
|-&lt;br /&gt;
| carriesnpc&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if the player is carrying an NPC.&lt;br /&gt;
|-&lt;br /&gt;
| carriessign&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if a player is carrying a sign.&lt;br /&gt;
|-&lt;br /&gt;
| carriesstone&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if a player is carrying a stone.&lt;br /&gt;
|-&lt;br /&gt;
| carriesvase&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if a player is carrying a vase.&lt;br /&gt;
|-&lt;br /&gt;
| downloadfile&lt;br /&gt;
| string (read only)&lt;br /&gt;
| Name of the file currently being downloaded&lt;br /&gt;
|-&lt;br /&gt;
| downloadpos&lt;br /&gt;
| integer (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| downloadsize&lt;br /&gt;
| integer (read only)&lt;br /&gt;
| Size of the file being downloaded&lt;br /&gt;
|-&lt;br /&gt;
| editingmission&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| emoticonchar&lt;br /&gt;
| string (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| focusx&lt;br /&gt;
| float (read only)&lt;br /&gt;
| X coordinate of the center of playing screen in the level, offset -1.5&lt;br /&gt;
|-&lt;br /&gt;
| focusy&lt;br /&gt;
| float (read only)&lt;br /&gt;
| Y coordinate of the center of playing screen in the level, offset -2&lt;br /&gt;
|-&lt;br /&gt;
| graalversion&lt;br /&gt;
| float (read only)&lt;br /&gt;
| Graal version&lt;br /&gt;
|-&lt;br /&gt;
| gravity&lt;br /&gt;
| float&lt;br /&gt;
| Downward acceleration for projectiles ejected with the shoot() function.&lt;br /&gt;
|-&lt;br /&gt;
| iscarrying&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| True if the player is carrying anything&lt;br /&gt;
|-&lt;br /&gt;
| isfocused&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| isgraal3d&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| isleader&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| signifies that the player is the first person in the level&lt;br /&gt;
|-&lt;br /&gt;
| isonmap&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| signifies that the player is on a map&lt;br /&gt;
|-&lt;br /&gt;
| lastdownloadfile&lt;br /&gt;
| string (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| leftmousebutton&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| levelorgx&lt;br /&gt;
| float (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| levelorgy&lt;br /&gt;
| float (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| lighteffectsenabled&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| signifies that the player has enabled light effects&lt;br /&gt;
|-&lt;br /&gt;
| weathereffectsenabled&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| signifies that the player has enabled weather effects&lt;br /&gt;
|-&lt;br /&gt;
| particleeffectsenabled&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
| signifies that the player has enabled particle effects&lt;br /&gt;
|-&lt;br /&gt;
| middlemousebutton&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mousebuttons&lt;br /&gt;
| integer (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mousescreenx&lt;br /&gt;
| integer&lt;br /&gt;
| X coordinate of the mouse on the GUI layer&lt;br /&gt;
|-&lt;br /&gt;
| mousescreeny&lt;br /&gt;
| integer&lt;br /&gt;
| Y coordinate of the mouse on the GUI layer&lt;br /&gt;
|-&lt;br /&gt;
| mousewheeldelta&lt;br /&gt;
| integer (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mousex&lt;br /&gt;
| float&lt;br /&gt;
| X coordinate of the mouse on the tile layer&lt;br /&gt;
|-&lt;br /&gt;
| mousey&lt;br /&gt;
| float&lt;br /&gt;
| Y coordinate of the mouse on the tile layer&lt;br /&gt;
|-&lt;br /&gt;
| musiclen&lt;br /&gt;
| integer (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| musicpos&lt;br /&gt;
| integer (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rightmousebutton&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| screenheight&lt;br /&gt;
| integer (read only)&lt;br /&gt;
| Height of the Graal window&lt;br /&gt;
|-&lt;br /&gt;
| screenwidth&lt;br /&gt;
| integer (read only)&lt;br /&gt;
| Width of the Graal window&lt;br /&gt;
|-&lt;br /&gt;
| scriptedcontrols&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scriptedplayerlist&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| selectedlistplayers&lt;br /&gt;
| object&lt;br /&gt;
| an array of players highlighted on the playerlist&lt;br /&gt;
|-&lt;br /&gt;
| selectedsword&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| selectedweapon&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| servername&lt;br /&gt;
| string (read only)&lt;br /&gt;
| Name of the current server&lt;br /&gt;
|-&lt;br /&gt;
| serverstartconnect&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| serverstartparams&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| shotbybaddy&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| shotbyplayer&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| showterraingrid&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| timevar&lt;br /&gt;
| integer (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| timevar2&lt;br /&gt;
| float (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| wasshooted&lt;br /&gt;
| boolean (read only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| waterheight&lt;br /&gt;
| float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| weapons&lt;br /&gt;
| object (read only)&lt;br /&gt;
| An array of weapon objects&lt;br /&gt;
|-&lt;br /&gt;
| weaponsenabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Are weapons enabled? (Player can trigger onWeaponFired...)&lt;br /&gt;
|-&lt;br /&gt;
| worldclockstopped&lt;br /&gt;
| boolean&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| worldhour&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| worldminute&lt;br /&gt;
| float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| worldminutesofday&lt;br /&gt;
| float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| worldrealsecondsperday&lt;br /&gt;
| float&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Variable Prefixes==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Prefix'''&lt;br /&gt;
| '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| objectname.var&lt;br /&gt;
| accesses the variables of a named object, the name of the object is case-sensitive&lt;br /&gt;
|-&lt;br /&gt;
| this.var&lt;br /&gt;
| variables that belong to the current script object, on the server-side they are saved to file when the object is a database npc&lt;br /&gt;
|-&lt;br /&gt;
| thiso.var&lt;br /&gt;
| refer to the this. variables of the executing npc ('o' stands for original) when you use the with () command: with (findnpc(&amp;quot;npc2&amp;quot;)) thiso.temp = this.temp; will copy 'this.temp' from npc2 to the current npc&lt;br /&gt;
|-&lt;br /&gt;
| player.var&lt;br /&gt;
| variables of the current player object, when the event was invoked by a player (e.g. playertouchsme), or you do with (findplayer(accountname))&lt;br /&gt;
|-&lt;br /&gt;
| playero.var&lt;br /&gt;
| variables of the original player object, in generally the player who has invoked the event (e.g. playertouchsme)&lt;br /&gt;
|-&lt;br /&gt;
| client.var&lt;br /&gt;
| short for player.client.var, variables that can be changed on server-side and client-side&lt;br /&gt;
|-&lt;br /&gt;
| clientr.var&lt;br /&gt;
| short for player.clientr.var, variables that can only be changed on server-side but can be read on client-side&lt;br /&gt;
|-&lt;br /&gt;
| server.var&lt;br /&gt;
| variables that only exists on server-side and can be accessed by all npcs&lt;br /&gt;
|-&lt;br /&gt;
| serverr.var&lt;br /&gt;
| variables that can only be changed on server-side and is server wide, but can also be read by all clients, so it can be used for storing the state of global activities that need client-side actions like displaying weather; like server. vars they can also be changed with remotecontrol.exe by administrators that have the right to change server. variables&lt;br /&gt;
|-&lt;br /&gt;
| level.var&lt;br /&gt;
| variables of the current level, which is the level the executing npc stands in (on server-side) or the player is in (on client-side)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
''Note: Currently this doesn't list the functions which are optimized at compile time, see [[Creation/Dev/Script/Starting_Guide#Standard_functions|Starting Guide: Standard functions]] for those.''&lt;br /&gt;
&lt;br /&gt;
* aindexof(float, obj) - returns integer&lt;br /&gt;
* echo(str text)&lt;br /&gt;
* getbasepackage() - returns object&lt;br /&gt;
* getdisplaydevicelist() - returns string&lt;br /&gt;
* getdownloadedupdatepackagesize() - returns integer&lt;br /&gt;
* getdownloadingpackage() - returns object&lt;br /&gt;
* getdownloadingpackagescount() - returns integer&lt;br /&gt;
* gethttprequest(str, int, str) - returns [[Creation/Dev/Script/Client/THTTPRequest|THTTPRequest]] object&lt;br /&gt;
* getkeycode(str keyname) - returns integer&lt;br /&gt;
* getpackagesdownloadcomplete() - returns boolean&lt;br /&gt;
* getpackagesdownloaded() - returns boolean&lt;br /&gt;
* getplatform() - returns string&lt;br /&gt;
* getresolutionlist(str) - returns string&lt;br /&gt;
* getservername() - returns string&lt;br /&gt;
* gettotalupdatepackagesize() - returns integer&lt;br /&gt;
* getupdatepackage(str) - returns object&lt;br /&gt;
* isadminguild(str guildname) - returns boolean&lt;br /&gt;
* isdevicefullscreenonly(str devicename) - returns boolean&lt;br /&gt;
* isobject(str objectname) - returns boolean&lt;br /&gt;
* keydown(int keycode) - returns boolean&lt;br /&gt;
* keydown2(int keycode, bool ignorecase) - returns boolean&lt;br /&gt;
* keyname(int keycode) - returns string&lt;br /&gt;
* opengraalurl(str url)&lt;br /&gt;
* openurl(str url)&lt;br /&gt;
* openurl2(str url, int width, int height)&lt;br /&gt;
* requesthttp(str, int, str) - returns [[Creation/Dev/Script/Client/THTTPRequest|THTTPRequest]] object&lt;br /&gt;
* requestmysql(str, str, str, str, str) - returns object&lt;br /&gt;
* requesttext(str, str)&lt;br /&gt;
* requesturl(str url) - returns [[Creation/Dev/Script/Client/THTTPRequest|THTTPRequest]] object&lt;br /&gt;
* savelog(str text)&lt;br /&gt;
* sendrpgmessage(str text)&lt;br /&gt;
* sendtext(str, str, params...)&lt;br /&gt;
* sendtorc(str text)&lt;br /&gt;
* serverwarp(str serverunixname)&lt;br /&gt;
* synctimeofday(float, float)&lt;br /&gt;
&lt;br /&gt;
===Common===&lt;br /&gt;
====Files====&lt;br /&gt;
* extractfilebase(str filepath) - returns string, '/an/example/path/and/file' would return '/an/example/path/and/'&lt;br /&gt;
* extractfileext(str filepath) - returns string, 'filename.ext' would return '.ext'&lt;br /&gt;
* extractfilename(str filepath) - returns string, '/an/example/path/and/file' would return 'file'&lt;br /&gt;
* extractfilepath(str filepath) - returns string, '/an/example/path/and/file' would return '/an/example/path/and/'&lt;br /&gt;
* fileexists(str filepath) - returns boolean, checks if a file exists&lt;br /&gt;
* filesize(str filepath) - returns integer, returns the size of a file&lt;br /&gt;
* fileupdate(str filepath) - returns boolean&lt;br /&gt;
* findfiles(str, int) - returns object&lt;br /&gt;
* findfirstfile(str) - returns string&lt;br /&gt;
* findnextfile(str) - returns string&lt;br /&gt;
* getextension(str filepath) - returns string, 'filename.ext' would return '.ext'&lt;br /&gt;
* reloadfile(str filepath)&lt;br /&gt;
* requestfiledeletion(str filepath), requests a file to be deleted on the server&lt;br /&gt;
* requestfilerename(str filepath, str newfilepath), requests a file to be renamed on the server&lt;br /&gt;
* requestfilesmove(str filepath, str newfilepath), requests a file to be moved on the server&lt;br /&gt;
* selectfilefordownload(str filter)&lt;br /&gt;
* selectfileforupload()&lt;br /&gt;
&lt;br /&gt;
''Watch the [[Creation/Dev/Script/Client/TGraalVar|TGraalVar]] object for loading and saving of files (loadlines etc.)''&lt;br /&gt;
&lt;br /&gt;
====Math====&lt;br /&gt;
* degtorad(float value) - returns float&lt;br /&gt;
* radtodeg(float value) - returns float&lt;br /&gt;
&lt;br /&gt;
=====Matrices=====&lt;br /&gt;
* matrixcreate(str, str) - returns string&lt;br /&gt;
* matrixcreatefromeuler(str) - returns string&lt;br /&gt;
* matrixmulpoint(str, str) - returns string&lt;br /&gt;
* matrixmultiply(str, str) - returns string&lt;br /&gt;
* matrixmulvector(str, str) - returns string&lt;br /&gt;
&lt;br /&gt;
=====Vectors=====&lt;br /&gt;
* vectoradd(str, str) - returns string&lt;br /&gt;
* vectorcross(str, str) - returns string&lt;br /&gt;
* vectordist(str, str) - returns float&lt;br /&gt;
* vectordot(str, str) - returns float&lt;br /&gt;
* vectorlen(str) - returns float&lt;br /&gt;
* vectornormalize(str) - returns string&lt;br /&gt;
* vectororthobasis(str) - returns string&lt;br /&gt;
* vectorscale(str, float) - returns string&lt;br /&gt;
* vectorsub(str, str) - returns string&lt;br /&gt;
&lt;br /&gt;
====Strings====&lt;br /&gt;
* base64decode(str text) - returns decoded string&lt;br /&gt;
* base64encode(str text) - returns encoded string&lt;br /&gt;
* checksum(str text) - returns checksum float&lt;br /&gt;
* contains(str haystack, str needle) - returns boolean, you should probably do haystack.contains(needle) instead&lt;br /&gt;
* getascii(str character) - returns ascii value integer&lt;br /&gt;
* getstringkeys(str) - returns object&lt;br /&gt;
* lowercase(str text) - returns lowercased string&lt;br /&gt;
* md5(str tet) - returns md5 hash string&lt;br /&gt;
* randomstring(str) - returns string&lt;br /&gt;
* strcmp(str text1, str text2) - returns integer&lt;br /&gt;
* strequals(str text1, str text2) - returns boolean, you probably should do text1.equals(text2) instead&lt;br /&gt;
* uppercase(str text) - returns uppercased stringg&lt;br /&gt;
&lt;br /&gt;
===GUI===&lt;br /&gt;
* addcontrol(obj)&lt;br /&gt;
* cursoroff()&lt;br /&gt;
* cursoron()&lt;br /&gt;
* iscursoron() - returns boolean&lt;br /&gt;
* popdialog()&lt;br /&gt;
* pushdialog(obj)&lt;br /&gt;
* setcontentcontrol(obj)&lt;br /&gt;
* setcursor2(str imagefilename)&lt;br /&gt;
&lt;br /&gt;
===Graal 2D===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Type'''&lt;br /&gt;
| '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| addtiledef(str tilesetimage, str prefix, int tilesettype)&lt;br /&gt;
|&lt;br /&gt;
| Sets the tileset image for levels beginning with the specified prefix.&lt;br /&gt;
Tileset type 0 is for pics1.png style tilesets.&lt;br /&gt;
Tileset type 1 is for the new tileset format (Era's tiles for example)&lt;br /&gt;
|-&lt;br /&gt;
| addtiledef2(str tilesetimage, str prefix, int x, int y)&lt;br /&gt;
|&lt;br /&gt;
| Replaces a section of the tileset (x, y) image for levels beginning with the specified prefix.&lt;br /&gt;
|-&lt;br /&gt;
| attachplayertoobj(int objtype, int id)&lt;br /&gt;
|&lt;br /&gt;
| Attaches a player to the specified object. Using attachpayertoobj(0, id); the player will be attached to the current NPC.&lt;br /&gt;
|-&lt;br /&gt;
| callnpc(int npcindex, params...)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| callweapon(int weaponindex, params...)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| commandtoserver(str text)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| detachplayer()&lt;br /&gt;
|&lt;br /&gt;
| Puts the player back on the level (after using attachplayertoobj).&lt;br /&gt;
|-&lt;br /&gt;
| disabledefmovement()&lt;br /&gt;
|&lt;br /&gt;
| Disables the default movement.&lt;br /&gt;
|-&lt;br /&gt;
| disablemap()&lt;br /&gt;
|&lt;br /&gt;
| Disables the default map&lt;br /&gt;
|-&lt;br /&gt;
| disablepause()&lt;br /&gt;
|&lt;br /&gt;
| Disables pausing.&lt;br /&gt;
|-&lt;br /&gt;
| disableselectweapons()&lt;br /&gt;
|&lt;br /&gt;
| Disables the default Q menu.&lt;br /&gt;
|-&lt;br /&gt;
| disableweapons()&lt;br /&gt;
|&lt;br /&gt;
| Disables weapons.&lt;br /&gt;
|-&lt;br /&gt;
| enabledefmovement()&lt;br /&gt;
|&lt;br /&gt;
| Enables default movement&lt;br /&gt;
|-&lt;br /&gt;
| enablefeatures(int flags)&lt;br /&gt;
| &lt;br /&gt;
| Enable/disable client features&lt;br /&gt;
&lt;br /&gt;
Flags can consist of:&lt;br /&gt;
  {| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
  | '''Value'''&lt;br /&gt;
  | '''Description'''&lt;br /&gt;
  |-&lt;br /&gt;
  | 1&lt;br /&gt;
  | M key (map)&lt;br /&gt;
  |-&lt;br /&gt;
  | 2&lt;br /&gt;
  | P key (pause)&lt;br /&gt;
  |-&lt;br /&gt;
  | 4&lt;br /&gt;
  | Q key (weapon select)&lt;br /&gt;
  |-&lt;br /&gt;
  | 8&lt;br /&gt;
  | R key (show ratings)&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x10&lt;br /&gt;
  | S+A key combination for dropping items&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x20&lt;br /&gt;
  | S+D key combination for switching weapons&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x40&lt;br /&gt;
  | TAB key (if disabled then you cannot switch to the chat field with TAB)&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x80&lt;br /&gt;
  | Display of chat text&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x100&lt;br /&gt;
  | Display of the hearts over player heads&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x200&lt;br /&gt;
  | Display of nicknames&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x400&lt;br /&gt;
  | Toall/PM-icons on the minimap&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x800&lt;br /&gt;
  | Right-click on players opens their profile&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x1000&lt;br /&gt;
  | Emoticons (disable it if you want to do other stuff with control+keys)&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x2000&lt;br /&gt;
  | Alt+5 for making snapshots  ''(deprecated)''&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x4000&lt;br /&gt;
  | Alt+8/9 for zooming ''(deprecated)''&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x8000&lt;br /&gt;
  | The logframe where savelog stuff is added&lt;br /&gt;
  |-&lt;br /&gt;
  | allfeatures&lt;br /&gt;
  | All of the previously stated feature flags enabled&lt;br /&gt;
  |}&lt;br /&gt;
|-&lt;br /&gt;
| enablemap()&lt;br /&gt;
|&lt;br /&gt;
| Enables default map.&lt;br /&gt;
|-&lt;br /&gt;
| enablepause()&lt;br /&gt;
|&lt;br /&gt;
| Enables pausing.&lt;br /&gt;
|-&lt;br /&gt;
| enableselectweapons()&lt;br /&gt;
|&lt;br /&gt;
| Enables default Q menu.&lt;br /&gt;
|-&lt;br /&gt;
| enableweapons()&lt;br /&gt;
|&lt;br /&gt;
| Enables weapons.&lt;br /&gt;
|-&lt;br /&gt;
| explodebomb(int bombindex)&lt;br /&gt;
|&lt;br /&gt;
| Explodes a bomb with the specified index.&lt;br /&gt;
|-&lt;br /&gt;
| findani(str)&lt;br /&gt;
| object&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| findlevel(str levelfilename)&lt;br /&gt;
| object&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| findplayer(str accountname)&lt;br /&gt;
| object&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| findplayerbyid(int playerid)&lt;br /&gt;
| object&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| findweapon(str weaponname)&lt;br /&gt;
| object&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| freezeplayer(float seconds)&lt;br /&gt;
|&lt;br /&gt;
| Freezes player for a specific amount of time.&lt;br /&gt;
|-&lt;br /&gt;
| getimgheight(str imagefilename)&lt;br /&gt;
| integer&lt;br /&gt;
| Returns the height (in pixels) of an image.&lt;br /&gt;
|-&lt;br /&gt;
| getimgwidth(str imagefilename)&lt;br /&gt;
| integer&lt;br /&gt;
| Returns the width (in pixels) of an image.&lt;br /&gt;
|-&lt;br /&gt;
| getmapx(str levelname)&lt;br /&gt;
| integer&lt;br /&gt;
| X coordinate of the level on a map (top-left level is 0)&lt;br /&gt;
|-&lt;br /&gt;
| getmapy(str levelname)&lt;br /&gt;
| integer&lt;br /&gt;
| Y coordinate of the level on a map (top-left level is 0)&lt;br /&gt;
|-&lt;br /&gt;
| gettextheight(float, str, str)&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| gettextwidth(float, str, str, str)&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| getz(float x, float y)&lt;br /&gt;
| float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| hideplayer(float seconds)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| hidesword(float seconds)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| hitnpc(int, float, float, float)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| hitobjects(float, float, float)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| hitplayer(int, float, float, float)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| lay2(str extraname, float x, float y)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| loadmap(str mapfilename)&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| noplayerkilling()&lt;br /&gt;
|&lt;br /&gt;
| Disables killing of other players.&lt;br /&gt;
|-&lt;br /&gt;
| onwall(float x, float y)&lt;br /&gt;
| boolean&lt;br /&gt;
| Returns true if the specified x and y is a blocking tile.&lt;br /&gt;
|-&lt;br /&gt;
| onwall2(float x, float y, float width, float height)&lt;br /&gt;
| boolean&lt;br /&gt;
| Returns true if a blocking tile exists in the specified area.&lt;br /&gt;
|-&lt;br /&gt;
| onwater(float x, float y)&lt;br /&gt;
| boolean&lt;br /&gt;
| Returns true if the specified x and y is water.&lt;br /&gt;
|-&lt;br /&gt;
| onwater2(float x, float y, float width, float height)&lt;br /&gt;
| boolean&lt;br /&gt;
| Returns true if water exists in the specified area.&lt;br /&gt;
|-&lt;br /&gt;
| play(str soundfilename)&lt;br /&gt;
|&lt;br /&gt;
| Plays the specified sound file.&lt;br /&gt;
|-&lt;br /&gt;
| play2(str soundfilename, float x, float y, float volume)&lt;br /&gt;
|&lt;br /&gt;
| Plays the specified sound file at location x, y with the specified volume. Volume should be between 0 and 1, if volume is set to 1 default volume is used (depending on how far away the player is).&lt;br /&gt;
|-&lt;br /&gt;
| playlooped(str soundfilename)&lt;br /&gt;
|&lt;br /&gt;
| Plays the specified sound file in a loop until stopsound() is called.&lt;br /&gt;
|-&lt;br /&gt;
| playlooped2(str soundfile, float x, float y, float volume)&lt;br /&gt;
|&lt;br /&gt;
| Plays the specified sound file at location x, y with the specified volume in a loop until stopsound() is called. Volume should be between 0 and 1, if volume is set to 1 default volume is used (depending on how far away the player is).&lt;br /&gt;
|-&lt;br /&gt;
| putleaps(int leapstype, float x, float y)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| removetiledefs(str prefix)&lt;br /&gt;
|&lt;br /&gt;
| Remove tile definitions set by addtiledef and addtiledef2 for the specified prefix.&lt;br /&gt;
|-&lt;br /&gt;
| replaceani(str defaultaniname, str newaniname)&lt;br /&gt;
|&lt;br /&gt;
| replaces the player's default ani with the new ani.&lt;br /&gt;
|-&lt;br /&gt;
| resetfocus()&lt;br /&gt;
|&lt;br /&gt;
| Sets the screen focus to the player.&lt;br /&gt;
|-&lt;br /&gt;
| say(int signindex)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| say2(str text)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| screenx(float x, float y)&lt;br /&gt;
| integer&lt;br /&gt;
| returns the x of the screen layer for a location on the tiles layer.&lt;br /&gt;
|-&lt;br /&gt;
| screeny(float x, float y)&lt;br /&gt;
| integer&lt;br /&gt;
| returns the y of the screen layer for a location on the tiles layer.&lt;br /&gt;
|-&lt;br /&gt;
| worldx(float x, float y)&lt;br /&gt;
| float&lt;br /&gt;
| returns the x of the tiles layer for a location on the screen layer.&lt;br /&gt;
|-&lt;br /&gt;
| worldy(float x, float y)&lt;br /&gt;
| float&lt;br /&gt;
| returns the y of the tiles layer for a location on the screen layer.&lt;br /&gt;
|-&lt;br /&gt;
| setani(str aniname, str aniparams)&lt;br /&gt;
|&lt;br /&gt;
| Sets the gani of a player.&lt;br /&gt;
|-&lt;br /&gt;
| setbeltcolor(str color)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| setcoatcolor(str color)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| seteffect(float r, float g, float b, float a)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| setfocus(float x, float y)&lt;br /&gt;
|&lt;br /&gt;
| Sets the screen focus to the specified x and y.&lt;br /&gt;
|-&lt;br /&gt;
| setgender(str gendername)&lt;br /&gt;
|&lt;br /&gt;
| Sets the gender of a player.&lt;br /&gt;
|-&lt;br /&gt;
| sethead(str imagefilename)&lt;br /&gt;
|&lt;br /&gt;
| Sets the head of a player&lt;br /&gt;
|-&lt;br /&gt;
| setletters(str imagefilename)&lt;br /&gt;
|&lt;br /&gt;
| Sets the image to use for sign background and text.&lt;br /&gt;
|-&lt;br /&gt;
| setmap(str, str, float, float)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| setminimap(str, str, float, float)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| setmusicvolume(float, float)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| setplayerdir(str)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| setshield(str imagefilename, int shieldpower)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| setshoecolor(str color)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| setshootparams(str params)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| setskincolor(str color)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| setsleevecolor(str color)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| setsword(str imagefilename, int swordpower)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| showstats(int statsflag)&lt;br /&gt;
|&lt;br /&gt;
| With this you can show/hide parts of the status bar / game&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Shows all&lt;br /&gt;
showstats(allstats);&lt;br /&gt;
&lt;br /&gt;
// Enable everything except minimap&lt;br /&gt;
showstats(allstats &amp;amp; ~0x100);&lt;br /&gt;
&lt;br /&gt;
// Enable everything except AP and MP bars&lt;br /&gt;
showstats(allstats &amp;amp; ~(0x40 | 0x80));&lt;br /&gt;
&lt;br /&gt;
// Enable only players and right-click profile&lt;br /&gt;
showstats(0x400 | 0x800);&lt;br /&gt;
&lt;br /&gt;
// Hides all&lt;br /&gt;
showstats(0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Flags can consist of:&lt;br /&gt;
  {| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
  | '''Value'''&lt;br /&gt;
  | '''Description'''&lt;br /&gt;
  |-&lt;br /&gt;
  | 1&lt;br /&gt;
  | ASD&lt;br /&gt;
  |-&lt;br /&gt;
  | 2&lt;br /&gt;
  | Icons (for rupees, bombs, arrows)&lt;br /&gt;
  |-&lt;br /&gt;
  | 4&lt;br /&gt;
  | Rupees count&lt;br /&gt;
  |-&lt;br /&gt;
  | 8&lt;br /&gt;
  | Bombs count&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x10&lt;br /&gt;
  | Arrows count&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x20&lt;br /&gt;
  | Hearts&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x40&lt;br /&gt;
  | Alignment (ap) bar&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x80&lt;br /&gt;
  | Magic points (mp) bar&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x100&lt;br /&gt;
  | Minimap (you can only hide it, you can't show it when the player pressed Alt+3)&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x200&lt;br /&gt;
  | Inventory NPCs&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x400&lt;br /&gt;
  | Players&lt;br /&gt;
  |-&lt;br /&gt;
  | 0x800&lt;br /&gt;
  | Right-click on players opens their profile&lt;br /&gt;
  |-&lt;br /&gt;
  | allstats&lt;br /&gt;
  | All of the previously stated stats flags enabled&lt;br /&gt;
  |}&lt;br /&gt;
|-&lt;br /&gt;
| spyfire(int length, int power)&lt;br /&gt;
|&lt;br /&gt;
| Shoots a line of fire in the direction of the player with the specified tile length, and fire power (1 - bomb, 2 - super bomb, 3 - jolt bomb).&lt;br /&gt;
|-&lt;br /&gt;
| stopmidi()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| stopsound(str soundfilename)&lt;br /&gt;
|&lt;br /&gt;
| Stop playing a sound started by playlooped&lt;br /&gt;
|-&lt;br /&gt;
| takeplayercarry()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| takeplayerhorse()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| testplayer(float x, float y)&lt;br /&gt;
| integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| triggeraction(float x, float y, str dest, params...)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| triggerserver(str dest, str params)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| updateboard(int x, int y, int width, int height)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| updateratings(obj)&lt;br /&gt;
| object&lt;br /&gt;
| Updates an array of {rating1,ratingdeviation1, rating2,ratingdeviation2, ...}, init them at 1500 and 350.&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
newratings = updateratings({winner.rating,winner.ratingd,loser.rating,loser.ratingd});&lt;br /&gt;
winner.rating = newratings[0];&lt;br /&gt;
winner.ratingd = newratings[1];&lt;br /&gt;
loser.rating = newratings[2];&lt;br /&gt;
loser.ratingd = newratings[3];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| wraptext(int fontsize, str format, str text)&lt;br /&gt;
| object&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| wraptext2(int, float, str, str)&lt;br /&gt;
| object&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Graal 3D===&lt;br /&gt;
* addmaterialmapping(str, str) - returns boolean&lt;br /&gt;
* getboxcenter(str) - returns string&lt;br /&gt;
* getdatablocktypes() - returns object&lt;br /&gt;
* getobjectat(float, float) - returns object&lt;br /&gt;
* getobjectatmouse() - returns object&lt;br /&gt;
* getobjectbyray(str, str) - returns object&lt;br /&gt;
* getsurfacetype(float, float) - returns string&lt;br /&gt;
* lightscene() - returns boolean&lt;br /&gt;
* mapshapeanimation(str, str, str, float) - returns boolean&lt;br /&gt;
* setfogcolors(obj)&lt;br /&gt;
* setinteriorrendermode(int)&lt;br /&gt;
* setshadowdetaillevel(float)&lt;br /&gt;
* setskybandcolors(obj)&lt;br /&gt;
* setskybandsizes(obj)&lt;br /&gt;
* setsuncolors(obj)&lt;br /&gt;
* setterrainrendermode(int)&lt;br /&gt;
* updateterrain()&lt;br /&gt;
* updatevisibledistance()&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
* adventure_installgraal(str, bool, bool)&lt;br /&gt;
* adventure_openexternaloptions() - returns boolean&lt;br /&gt;
* adventure_openexternalpm(obj) - returns boolean&lt;br /&gt;
* adventure_openserverlist()&lt;br /&gt;
* adventure_quit()&lt;br /&gt;
* adventure_savegraaloptions()&lt;br /&gt;
* adventure_selectpath(str) - returns object&lt;br /&gt;
* adventure_setaccountname(str)&lt;br /&gt;
* adventure_setchat(str)&lt;br /&gt;
* adventure_setnickname(str)&lt;br /&gt;
* adventure_setpassword(str)&lt;br /&gt;
* adventure_startofflinemode()&lt;br /&gt;
* adventure_updateaccountfield()&lt;br /&gt;
* adventure_updatemicroactivationlevel()&lt;br /&gt;
* adventure_updatemidivolume()&lt;br /&gt;
* adventure_updatemp3volume()&lt;br /&gt;
* adventure_updateplayermuted()&lt;br /&gt;
* adventure_updateplayerprofile(bool, str, str, int, str, str, str, str, str, str)&lt;br /&gt;
* adventure_updateradiovolume()&lt;br /&gt;
&lt;br /&gt;
''(these functions are only available to privileged scripts from the Login server)''&lt;br /&gt;
&lt;br /&gt;
==Classes / Object Types==&lt;br /&gt;
* [[Creation/Dev/Script/Client/TGraalVar|TGraalVar]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/ActionMap|ActionMap]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/GuiControl|GuiControl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/EditManager|EditManager]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiArrayCtrl|GuiArrayCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiTextListCtrl|GuiTextListCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiTreeViewCtrl|GuiTreeViewCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiBackgroundCtrl|GuiBackgroundCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiBitmapBorderCtrl|GuiBitmapBorderCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiBitmapButtonCtrl|GuiBitmapButtonCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiBitmapCtrl|GuiBitmapCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiCrossHairHud|GuiCrossHairHud]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiMapOverviewCtrl|GuiMapOverviewCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiButtonBaseCtrl|GuiButtonBaseCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiBorderButtonCtrl|GuiBorderButtonCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiButtonCtrl|GuiButtonCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiCheckBoxCtrl|GuiCheckBoxCtrl]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/GuiRadioCtrl|GuiRadioCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiChunkedBitmapCtrl|GuiChunkedBitmapCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiContextMenuCtrl|GuiContextMenuCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiDrawingPanel|GuiDrawingPanel]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiFlash|GuiFlash]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiFrameSetCtrl|GuiFrameSetCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiGraal3DCtrl|GuiGraal3DCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiGraalCtrl|GuiGraalCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiMenuCtrl|GuiMenuCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiMLTextCtrl|GuiMLTextCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiMLTextEditCtrl|GuiMLTextEditCtrl]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/GuiPMEditCtrl|GuiPMEditCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiPMCtrl|GuiPMCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiPMHistoryCtrl|GuiPMHistoryCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiMouseEventCtrl|GuiMouseEventCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiPlayerView|GuiPlayerView]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiProgressCtrl|GuiProgressCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiScrollCtrl|GuiScrollCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiShapeNameHud|GuiShapeNameHud]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiShowImgCtrl|GuiShowImgCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiSliderCtrl|GuiSliderCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiTabCtrl|GuiTabCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/GuiTextCtrl|GuiTextCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiBubbleTextCtrl|GuiBubbleTextCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiPopUpEditCtrl|GuiPopUpEditCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiPopUpMenuCtrl|GuiPopUpMenuCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiTextEditCtrl|GuiTextEditCtrl]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/GuiTextEditSliderCtrl|GuiTextEditSliderCtrl]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GuiWindowCtrl|GuiWindowCtrl]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/TerrainEditor|TerrainEditor]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/WorldEditor|WorldEditor]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/GuiControlProfile|GuiControlProfile]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/GuiCursor|GuiCursor]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/GuiTabCtrlEntry|GuiTabCtrlEntry]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/GuiTextListEntry|GuiTextListEntry]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/GuiTreeViewNode|GuiTreeViewNode]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/MissionArea|MissionArea]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/ShapeBaseHitBox|ShapeBaseHitBox]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/ShapeImageState|ShapeImageState]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/SimObject|SimObject]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/SceneObject|SceneObject]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/AudioEmitter|AudioEmitter]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/FractalTree|FractalTree]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/fxFoliageReplicator|fxFoliageReplicator]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/fxGrassReplicator|fxGrassReplicator]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/fxShapeReplicator|fxShapeReplicator]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/fxSunLight|fxSunLight]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GameBase|GameBase]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/DynamicShapeReplicator|DynamicShapeReplicator]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/DynamicGrass|DynamicGrass]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/DynamicGrassReplicator|DynamicGrassReplicator]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/Explosion|Explosion]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/fxLight|fxLight]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/Lightning|Lightning]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/ParticleEmitter|ParticleEmitter]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/ParticleEmitterNode|ParticleEmitterNode]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/PathedInterior|PathedInterior]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/Precipitation|Precipitation]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/Projectile|Projectile]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/ShapeBase|ShapeBase]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/AdvancedCamera|AdvancedCamera]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/Camera|Camera]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/MissionMarker|MissionMarker]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/PathCamera|PathCamera]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/Player|Player]]&lt;br /&gt;
******* [[Creation/Dev/Script/Client/AIPlayer|AIPlayer]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/StaticShape|StaticShape]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/Vehicle|Vehicle]]&lt;br /&gt;
******* [[Creation/Dev/Script/Client/FlyingVehicle|FlyingVehicle]]&lt;br /&gt;
******* [[Creation/Dev/Script/Client/HoverVehicle|HoverVehicle]]&lt;br /&gt;
******* [[Creation/Dev/Script/Client/WheeledVehicle|WheeledVehicle]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/SpawnSphere|SpawnSphere]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/Splash|Splash]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/Trigger|Trigger]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/TSStatic|TSStatic]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/Item|Item]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/InteriorInstance|InteriorInstance]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/Marker|Marker]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/Shape3ds|Shape3ds]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/Sky|Sky]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TerrainBlock|TerrainBlock]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/twSurfaceReference|twSurfaceReference]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/volumeLight|volumeLight]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/WaterBlock|WaterBlock]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/SimDataBlock|SimDataBlock]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/AudioDescription|AudioDescription]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/AudioProfile|AudioProfile]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/DecalData|DecalData]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GameBaseData|GameBaseData]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/DebrisData|DebrisData]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/ExplosionData|ExplosionData]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/fxLightData|fxLightData]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/ItemData|ItemData]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/LightningData|LightningData]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/ParticleEmitterData|ParticleEmitterData]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/ParticleEmitterNodeData|ParticleEmitterNodeData]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/PathedInteriorData|PathedInteriorData]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/PrecipitationData|PrecipitationData]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/ProjectileData|ProjectileData]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/ShapeBaseData|ShapeBaseData]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/AdvancedCameraData|AdvancedCameraData]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/CameraData|CameraData]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/MissionMarkerData|MissionMarkerData]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/PlayerData|PlayerData]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/StaticShapeData|StaticShapeData]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/VehicleData|VehicleData]]&lt;br /&gt;
******* [[Creation/Dev/Script/Client/FlyingVehicleData|FlyingVehicleData]]&lt;br /&gt;
******* [[Creation/Dev/Script/Client/HoverVehicleData|HoverVehicleData]]&lt;br /&gt;
******* [[Creation/Dev/Script/Client/WheeledVehicleData|WheeledVehicleData]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/ShapeBaseImageData|ShapeBaseImageData]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/SplashData|SplashData]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/TriggerData|TriggerData]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/ParticleData|ParticleData]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TSShapeConstructor|TSShapeConstructor]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/WheeledVehicleSpring|WheeledVehicleSpring]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/WheeledVehicleTire|WheeledVehicleTire]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/SimGroup|SimGroup]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/GameConnection|GameConnection]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/Sun|Sun]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TDrawableObject|TDrawableObject]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/TBaddy|TBaddy]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/TLevelObject|TLevelObject]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TExplosion|TExplosion]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TGaniObject|TGaniObject]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/TProjectile|TProjectile]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/TServerHorse|TServerHorse]]&lt;br /&gt;
***** [[Creation/Dev/Script/Client/TServerPlayer|TServerPlayer]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/TPlayer|TPlayer]]&lt;br /&gt;
****** [[Creation/Dev/Script/Client/TServerNPC|TServerNPC]]&lt;br /&gt;
******* [[Creation/Dev/Script/Client/TServerWeapon|TServerWeapon]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TServerBomb|TServerBomb]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TServerCarry|TServerCarry]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TServerChest|TServerChest]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TServerExtra|TServerExtra]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TServerFlying|TServerFlying]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TServerLeap|TServerLeap]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TServerSign|TServerSign]]&lt;br /&gt;
**** [[Creation/Dev/Script/Client/TShowImg|TShowImg]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TDrawingPanel|TDrawingPanel]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/Terraformer|Terraformer]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TFrameDetail|TFrameDetail]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TGaniParam|TGaniParam]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TGraalAni|TGraalAni]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TGraalAniPart|TGraalAniPart]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TGraalAniSound|TGraalAniSound]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TGraalAniSprite|TGraalAniSprite]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TGraalAniStep|TGraalAniStep]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TGraalSpriteAttachment|TGraalSpriteAttachment]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/THTTPRequest|THTTPRequest]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TParticle|TParticle]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TParticleEmitter|TParticleEmitter]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TParticleModifier|TParticleModifier]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TServerLevel|TServerLevel]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TServerLevelLink|TServerLevelLink]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TShowImg_Values|TShowImg_Values]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/TShowImg_Gani|TShowImg_Gani]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/TShowImg_Image|TShowImg_Image]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/TShowImg_Shape|TShowImg_Shape]]&lt;br /&gt;
*** [[Creation/Dev/Script/Client/TShowImg_Text|TShowImg_Text]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TShowImgMount|TShowImgMount]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TStaticVar|TStaticVar]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TTilesLayer|TTilesLayer]]&lt;br /&gt;
** [[Creation/Dev/Script/Client/TUpdatePackage|TUpdatePackage]]&lt;/div&gt;</summary>
		<author><name>DrakilorP2P</name></author>
	</entry>
</feed>