<?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=Kaimetsu</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=Kaimetsu"/>
	<link rel="alternate" type="text/html" href="https://graalonline.net/Special:Contributions/Kaimetsu"/>
	<updated>2026-04-09T20:36:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>https://graalonline.net/index.php?title=Private_Server&amp;diff=3376</id>
		<title>Private Server</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Private_Server&amp;diff=3376"/>
		<updated>2005-07-06T03:01:47Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: complete rewrite&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A '''private server''' is a [[server]] that does not appear in the client's [[serverlist]]. In most cases this is because they are still under development and don't yet qualify to be listed under the [[hosted]] tab, but some are intended to remain this way indefinitely (one example is the #gscript server).&lt;br /&gt;
&lt;br /&gt;
Private servers are almost always understaffed, their managers having bought them without first securing all the help they need. Many are completely abandoned.&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Worlds/Elemental_Kingdoms&amp;diff=3849</id>
		<title>Worlds/Elemental Kingdoms</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Worlds/Elemental_Kingdoms&amp;diff=3849"/>
		<updated>2005-06-29T21:41:25Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: more betterer wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Elemental Kingdoms''' was a playerworld designed and implemented by [[falco10291029|Falco]]. It was eventually shut down, ostensibly due to lack of staff and problems brought upon by the switch to GS2.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
Started as four nearly empty gmaps and a playerhearts system, now using several custom systems with a near complete main map and four sidemaps in development. Elemental Kingdoms is no longer playable, as the subscription has run out. &lt;br /&gt;
&lt;br /&gt;
== Content ==&lt;br /&gt;
&lt;br /&gt;
Custom hp and damage system. Creative Experience and Power Systems. Many weapons. Ability to specialize with Class and Element, and there were plans to have subclasses as well. There was a custom battle system in heavy development and, including [[falco10291029]], about 3 or 4 staff  that actually did any work. There were mines, mineral mines, an upgrade shop, a weaponsmith, and more. The server was recently shutdown, however, and thus these things won't be completed.&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Worlds/Elemental_Kingdoms&amp;diff=2220</id>
		<title>Worlds/Elemental Kingdoms</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Worlds/Elemental_Kingdoms&amp;diff=2220"/>
		<updated>2005-06-29T20:11:18Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Elemental Kingdoms''' was a playerworld designed and implemented by [[falco10291029|Falco]]. It was eventually shut down, ostensibly due to lack of staff and 'bugs' with gs2.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
Started as four nearly empty gmaps and a playerhearts system, now using several custom systems with a near complete main map and four sidemaps in development. Elemental Kingdoms is playable, but is currently limited due to problems with the GS2 error detector which tends to disable scripts if they aren't perfect. &lt;br /&gt;
&lt;br /&gt;
== Content ==&lt;br /&gt;
&lt;br /&gt;
Custom hp and damage system. Creative Experience and Power Systems. Many weapons. Ability to specialize with Class and Element, and there were plans to have subclasses as well. There was a custom battle system in heavy development and, including [[falco10291029]], about 3 or 4 staff  that actually did any work. There were mines, mineral mines, an upgrade shop, a weaponsmith, and more. The server was recently shutdown, however, and thus these things won't be completed.&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Worlds/Elemental_Kingdoms&amp;diff=2219</id>
		<title>Worlds/Elemental Kingdoms</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Worlds/Elemental_Kingdoms&amp;diff=2219"/>
		<updated>2005-06-29T20:10:57Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: more neutral and streamlined&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Elemental Kingdoms''', was a playerworld designed and implemented by [[falco10291029|Falco]]. It was eventually shut down, ostensibly due to lack of staff and 'bugs' with gs2.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
Started as four nearly empty gmaps and a playerhearts system, now using several custom systems with a near complete main map and four sidemaps in development. Elemental Kingdoms is playable, but is currently limited due to problems with the GS2 error detector which tends to disable scripts if they aren't perfect. &lt;br /&gt;
&lt;br /&gt;
== Content ==&lt;br /&gt;
&lt;br /&gt;
Custom hp and damage system. Creative Experience and Power Systems. Many weapons. Ability to specialize with Class and Element, and there were plans to have subclasses as well. There was a custom battle system in heavy development and, including [[falco10291029]], about 3 or 4 staff  that actually did any work. There were mines, mineral mines, an upgrade shop, a weaponsmith, and more. The server was recently shutdown, however, and thus these things won't be completed.&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Graal_Communication_Center&amp;diff=3450</id>
		<title>Graal Communication Center</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Graal_Communication_Center&amp;diff=3450"/>
		<updated>2005-06-22T10:09:43Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: /* Curiosities */ kind of outdated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Graal Communication Center ''' is the official forum of [[GraalOnline]].&lt;br /&gt;
&lt;br /&gt;
The official name is ''Graal Communication Center (reserved for gold and vip subscribers)'', but only [[Unixmad]] calls it that.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&lt;br /&gt;
The forum is currently divided into [[GCC:Section]]s: the [[GCC:General Section]], [[GCC:Gold Section]], [[GCC:3D Section]], [[GCC:Playerworlds Section]], [[GCC:Development Section]] and [[GCC:Private Section]].&lt;br /&gt;
Each section holds multiple [[GCC:Subforum]]s.&lt;br /&gt;
&lt;br /&gt;
A oversized moderation force with not equally balanced qualification is moderating the Graal Communication Center. Some [[GCC:Moderator]]s moderate one or more individual subforums or a whole forum section. Some subforums are not moderated directly, and more interesting ones are overseen by multiple moderators. [[Spark911]], [[Kamuii]] and [[Moon Goddess]] are still [[GCC:Super moderator]]s, and thus should be fairly moderating the whole Communication Center.&lt;br /&gt;
[[MagicalTux]] from the [[Cyberjoueurs]] offices is also serving as forums administrator.&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
&lt;br /&gt;
[[Gold account|Gold]] and [[VIP account|VIP]] accounts can access the board freely, with no restrictions. Since Christmas of 2004, [[Classic account]]s are also able to use the board, but they are forced to wait eight hours between making consecutive posts.&lt;br /&gt;
&lt;br /&gt;
It is against the [[GCC:Rules]] of the forums to post messages from or for non-members of the forums. This is to prevent [[Account sharing]], which was very common in the forum's past and arguably had a negative influence on the motivation to buy a [[Gold account]].&lt;br /&gt;
&lt;br /&gt;
== Neutrality ==&lt;br /&gt;
&lt;br /&gt;
Unsurprisingly, the forums are very biased towards the [[Graal administration]]. Sadly, the [[Forum administration]] considers it neccessary to enforce this bias with rules that make ''any'' kind of [[GCC:Negativity|criticism]] a [[ban]]worthy action. Thus, it is not possible to discuss [[ban]]s, actions of [[GraalOnline]] considered harmful or unfair, or shortcomings of the adminstration including [[Playerworld staff]] or the [[Gold server]]s.&lt;br /&gt;
&lt;br /&gt;
Luckily, the most conservative moderators seem to have grown increasingly [[Spark911|igno]][[Moon Goddess|rant]] of these issues.&lt;br /&gt;
&lt;br /&gt;
== Curiosities ==&lt;br /&gt;
&lt;br /&gt;
* Two miscreants ([[Zurkiba]] and one as-yet-unnamed member) were [[ban|banned]] by [[Unixmad]] as part of a continuing (and utterly futile) drive to make the forums into a nicer place. More details [[Unixmad_swears_death_and_vengeance_on_inappropriate_words|here]].&lt;br /&gt;
* Apparently, now even [[Moon Goddess suggests that you should stop playing Graal]].&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://forums.graalonline.com/forums/ The Graal Communication Center]&lt;br /&gt;
* [http://ilfirin.org/graal/forum/forum.pl A locally hosted free alternative forum]&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Talk:Graal_Communication_Center&amp;diff=3865</id>
		<title>Talk:Graal Communication Center</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Talk:Graal_Communication_Center&amp;diff=3865"/>
		<updated>2005-06-21T22:24:48Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Firstly, quotation marks should not be used if they are not delimiting a quote.&amp;lt;br\&amp;gt;&lt;br /&gt;
Secondly, the context already makes it clear that 'miscreant' is being used in an ironic fashion.&amp;lt;br\&amp;gt;&lt;br /&gt;
[[User:Kaimetsu|Kai]] 00:24, 22 Jun 2005 (CEST)&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Graal_Communication_Center&amp;diff=2179</id>
		<title>Graal Communication Center</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Graal_Communication_Center&amp;diff=2179"/>
		<updated>2005-06-21T22:22:47Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Graal Communication Center ''' is the official forum of [[GraalOnline]].&lt;br /&gt;
&lt;br /&gt;
The official name is ''Graal Communication Center (reserved for gold and vip subscribers)'', but only [[Unixmad]] calls it that.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&lt;br /&gt;
The forum is currently divided into [[GCC:Section]]s: the [[GCC:General Section]], [[GCC:Gold Section]], [[GCC:3D Section]], [[GCC:Playerworlds Section]], [[GCC:Development Section]] and [[GCC:Private Section]].&lt;br /&gt;
Each section holds multiple [[GCC:Subforum]]s.&lt;br /&gt;
&lt;br /&gt;
A oversized moderation force with not equally balanced qualification is moderating the Graal Communication Center. Some [[GCC:Moderator]]s moderate one or more individual subforums or a whole forum section. Some subforums are not moderated directly, and more interesting ones are overseen by multiple moderators. [[Spark911]], [[Kamuii]] and [[Moon Goddess]] are still [[GCC:Super moderator]]s, and thus should be fairly moderating the whole Communication Center.&lt;br /&gt;
[[MagicalTux]] from the [[Cyberjoueurs]] offices is also serving as forums administrator.&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
&lt;br /&gt;
[[Gold account|Gold]] and [[VIP account|VIP]] accounts can access the board freely, with no restrictions. Since Christmas of 2004, [[Classic account]]s are also able to use the board, but they are forced to wait eight hours between making consecutive posts.&lt;br /&gt;
&lt;br /&gt;
It is against the [[GCC:Rules]] of the forums to post messages from or for non-members of the forums. This is to prevent [[Account sharing]], which was very common in the forum's past and arguably had a negative influence on the motivation to buy a [[Gold account]].&lt;br /&gt;
&lt;br /&gt;
== Neutrality ==&lt;br /&gt;
&lt;br /&gt;
Unsurprisingly, the forums are very biased towards the [[Graal administration]]. Sadly, the [[Forum administration]] considers it neccessary to enforce this bias with rules that make ''any'' kind of [[GCC:Negativity|criticism]] a [[ban]]worthy action. Thus, it is not possible to discuss [[ban]]s, actions of [[GraalOnline]] considered harmful or unfair, or shortcomings of the adminstration including [[Playerworld staff]] or the [[Gold server]]s.&lt;br /&gt;
&lt;br /&gt;
Luckily, the most conservative moderators seem to have grown increasingly [[Spark911|igno]][[Moon Goddess|rant]] of these issues.&lt;br /&gt;
&lt;br /&gt;
== Curiosities ==&lt;br /&gt;
&lt;br /&gt;
* Two miscreants ([[Zurkiba]] and one as-yet-unnamed member) were [[ban|banned]] by [[Unixmad]] as part of a continuing (and utterly futile) drive to make the forums into a nicer place. More details [[Unixmad_swears_death_and_vengeance_on_inappropriate_words|here]].&lt;br /&gt;
* Apparently, now even [[Moon Goddess suggests that you should stop playing Graal]].&lt;br /&gt;
* [[Falco]] has, after a notoriously bad performance at trying to prove [[Kaimetsu]] wrong, exclaimed that [[People_who_think_that_Falco_is_a_moron|at most five people think that he is a moron]] and that everybody else is well aware of his superior intellect.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://forums.graalonline.com/forums/ The Graal Communication Center]&lt;br /&gt;
* [http://ilfirin.org/graal/forum/forum.pl A locally hosted free alternative forum]&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/Mudlib&amp;diff=2192</id>
		<title>Creation/Dev/Mudlib</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/Mudlib&amp;diff=2192"/>
		<updated>2005-06-20T07:37:29Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: reword&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Mudlib''' provides [[Graal Kingdoms]] - and, by extension, [[Graal2002 Debug]] - with its extra '''M'''ulti-'''U'''ser '''D'''ungeon options. Playerworlds are supposedly now granted access to this functionality, starting with [[Maloria Dev]].&lt;br /&gt;
&lt;br /&gt;
This library also extends [[GScript]] with a few extra commands that allow it to access and modify MUD accounts.&lt;br /&gt;
&lt;br /&gt;
The [[Graal Kingdoms]] mudlib is derived from [http://crossfire.real-time.com/ Crossfire].&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Graal3D&amp;diff=2032</id>
		<title>Graal3D</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Graal3D&amp;diff=2032"/>
		<updated>2005-06-18T18:28:15Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: Reverted edit of 69.41.173.145, changed back to last version by Kaimetsu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Graal3D is the 3D version of Graal Online, and it is being developed with the Torque engine by Linux Cyberjoueurs.&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Graal3D&amp;diff=2023</id>
		<title>Graal3D</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Graal3D&amp;diff=2023"/>
		<updated>2005-06-17T06:14:43Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: Reverted edit of 68.190.33.234, changed back to last version by Kaimetsu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Graal3D is the 3D version of Graal Online, and it is being developed with the Torque engine by Linux Cyberjoueurs.&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Graal3D&amp;diff=2019</id>
		<title>Graal3D</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Graal3D&amp;diff=2019"/>
		<updated>2005-06-16T00:23:32Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: Reverted edit of 68.190.33.234, changed back to last version by Kaimetsu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Graal3D is the 3D version of Graal Online, and it is being developed with the Torque engine by Linux Cyberjoueurs.&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Graal3D&amp;diff=2015</id>
		<title>Graal3D</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Graal3D&amp;diff=2015"/>
		<updated>2005-06-08T03:28:18Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: rollback&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Graal3D is the 3D version of Graal Online, and it is being developed with the Torque engine by Linux Cyberjoueurs.&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Graal3D&amp;diff=2014</id>
		<title>Graal3D</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Graal3D&amp;diff=2014"/>
		<updated>2005-06-08T03:27:50Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: Reverted edit of Kaimetsu, changed back to last version by 24.137.66.116&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Kaimetsu is pwnt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''&lt;br /&gt;
Are you trying to frame me? I can be mean enough without your help.''-VT&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Graal3D&amp;diff=2013</id>
		<title>Graal3D</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Graal3D&amp;diff=2013"/>
		<updated>2005-06-08T03:01:30Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: Reverted edit of 24.137.66.116, changed back to last version by 24.197.147.8&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Kaimetsu is pwnt&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Graal3D&amp;diff=2008</id>
		<title>Graal3D</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Graal3D&amp;diff=2008"/>
		<updated>2005-06-06T23:04:24Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: Reverted edit of 69.41.173.145, changed back to last version by Kaimetsu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Graal3D is the 3D version of Graal Online, and it is being developed with the Torque engine by Linux Cyberjoueurs.&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Graal3D&amp;diff=2000</id>
		<title>Graal3D</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Graal3D&amp;diff=2000"/>
		<updated>2005-06-05T19:56:29Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: Reverted edit of 68.190.35.107, changed back to last version by Kaimetsu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Graal3D is the 3D version of Graal Online, and it is being developed with the Torque engine by Linux Cyberjoueurs.&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Graal3D&amp;diff=1997</id>
		<title>Graal3D</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Graal3D&amp;diff=1997"/>
		<updated>2005-06-05T08:28:12Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: Reverted edit of 24.240.28.215, changed back to last version by Kaimetsu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Graal3D is the 3D version of Graal Online, and it is being developed with the Torque engine by Linux Cyberjoueurs.&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Graal3D&amp;diff=1995</id>
		<title>Graal3D</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Graal3D&amp;diff=1995"/>
		<updated>2005-06-04T09:27:35Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: Reverted edit of 68.190.35.107, changed back to last version by 68.79.132.140&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Graal3D is the 3D version of Graal Online, and it is being developed with the Torque engine by Linux Cyberjoueurs.&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Graal3D&amp;diff=1989</id>
		<title>Graal3D</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Graal3D&amp;diff=1989"/>
		<updated>2005-05-30T09:50:34Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: Reverted edit of 68.190.35.107, changed back to last version by 80.177.222.207&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Graal3D is the 3D version of Graal Online, and it is being developed with the Torque engine by Linux Cyberjoueurs.&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Support_center&amp;diff=3929</id>
		<title>Support center</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Support_center&amp;diff=3929"/>
		<updated>2005-05-16T02:50:20Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: reworded/expanded/standardised&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Support Center''' is also known as the Graal Helpdesk. For most players it is the primary means of contacting staff, whether it be for reporting bugs, voicing complaints or making requests. Each item of communication is stored as a 'ticket', and placed in a queue from which various admins (including [[Stefan]], [[unixmad]], [[Spark911]] and members of the [[PWA]]) can retrieve it at their convenience.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
[http://www.support.graalonline.com The Graal Support Center]&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=User:Moon_Goddess&amp;diff=2373</id>
		<title>User:Moon Goddess</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=User:Moon_Goddess&amp;diff=2373"/>
		<updated>2005-04-30T23:40:38Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: improved link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Really old. Holds the rank of [[GCC:Super moderator|supermod]] on the Graal forums.&lt;br /&gt;
&lt;br /&gt;
Some people don't like her [http://ilfirin.org/graal/Kai%27s_Villain_List#moongoddess].&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=User:Moon_Goddess&amp;diff=1929</id>
		<title>User:Moon Goddess</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=User:Moon_Goddess&amp;diff=1929"/>
		<updated>2005-04-30T23:39:00Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Really old. Holds the rank of [[GCC:Super moderator|supermod]] on the Graal forums.&lt;br /&gt;
&lt;br /&gt;
Some people don't like her [http://ilfirin.org/graal/Kai%27s_Villain_List].&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=User:Moon_Goddess&amp;diff=1927</id>
		<title>User:Moon Goddess</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=User:Moon_Goddess&amp;diff=1927"/>
		<updated>2005-04-30T23:37:52Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Really old. Holds the rank of [[GCC:Super moderator|supermod]] on the Graal forums.&lt;br /&gt;
&lt;br /&gt;
Some people don't like her.&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Worlds/Graal_Kingdoms&amp;diff=2209</id>
		<title>Worlds/Graal Kingdoms</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Worlds/Graal_Kingdoms&amp;diff=2209"/>
		<updated>2005-04-27T16:46:18Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: Who cares?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A graal server that requires a [[Gold Account]] or a [[VIP Account]] to play.&lt;br /&gt;
&lt;br /&gt;
It is one of the most advanced [[Graal]] servers online, and differs from other servers in many ways, primarily in its integration with the [[mudlib]] from the [http://crossfire.real-time.com/ Crossfire] game.&lt;br /&gt;
&lt;br /&gt;
It also goes very well with [[Salt]].&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=User:Lance&amp;diff=3489</id>
		<title>User:Lance</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=User:Lance&amp;diff=3489"/>
		<updated>2005-04-18T16:50:27Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Player}}&lt;br /&gt;
&lt;br /&gt;
Lance is a medium-time [[Graal]] [[Player]] and [[Graal administration|staff]] member.&lt;br /&gt;
&lt;br /&gt;
== Community ==&lt;br /&gt;
&lt;br /&gt;
Lance is an avid member of [[GScript IRC channel|#gscript]], in which he is a mid-level channel operator.&lt;br /&gt;
&lt;br /&gt;
== Development Areas ==&lt;br /&gt;
&lt;br /&gt;
Lance considers himself fairly decent at [[NPC scripting]]. He dabbles in the other development areas only by necessity.&lt;br /&gt;
&lt;br /&gt;
== Staff Positions ==&lt;br /&gt;
&lt;br /&gt;
Lance is a leading member of the [[GST]] and one of the few original members remaining.&lt;br /&gt;
&lt;br /&gt;
In addition to that, Lance manages [[Graal2001]], though it is suffering a lack of staff lately.&lt;br /&gt;
&lt;br /&gt;
Lance also moderates the [[GCC:NPC scripting]] and [[GCC:Graal2001]] forums at the [[Graal Communication Center]].&lt;br /&gt;
&lt;br /&gt;
== Graal Accounts ==&lt;br /&gt;
&lt;br /&gt;
Lance, Tseng, Tseng2&lt;br /&gt;
&lt;br /&gt;
There are rumors that Lance has other, secret accounts, but he will assure you that these rumors are wholly unfounded.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
Lance can be reached by email at [mailto:lance@graalonline.com] or by [[GCC:PM|forum PM]].&lt;br /&gt;
&lt;br /&gt;
Also, he can often be found at [irc://irc.freenode.org/gscript].&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=User:Lance&amp;diff=1904</id>
		<title>User:Lance</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=User:Lance&amp;diff=1904"/>
		<updated>2005-04-18T16:48:47Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: Reverted edit of 71.99.10.131, changed back to last version by Kaimetsu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lance is a medium-time [[Graal]] [[Player]] and [[Graal administration|staff]] member.&lt;br /&gt;
&lt;br /&gt;
== Community ==&lt;br /&gt;
&lt;br /&gt;
Lance is an avid member of [[GScript IRC channel|#gscript]], in which he is a mid-level channel operator.&lt;br /&gt;
&lt;br /&gt;
== Development Areas ==&lt;br /&gt;
&lt;br /&gt;
Lance considers himself fairly decent at [[NPC scripting]]. He dabbles in the other development areas only by necessity.&lt;br /&gt;
&lt;br /&gt;
== Staff Positions ==&lt;br /&gt;
&lt;br /&gt;
Lance is a leading member of the [[GST]] and one of the few original members remaining.&lt;br /&gt;
&lt;br /&gt;
In addition to that, Lance manages [[Graal2001]], though it is suffering a lack of staff lately.&lt;br /&gt;
&lt;br /&gt;
Lance also moderates the [[GCC:NPC scripting]] and [[GCC:Graal2001]] forums at the [[Graal Communication Center]].&lt;br /&gt;
&lt;br /&gt;
== Graal Accounts ==&lt;br /&gt;
&lt;br /&gt;
Lance, Tseng, Tseng2&lt;br /&gt;
&lt;br /&gt;
There are rumors that Lance has other, secret accounts, but he will assure you that these rumors are wholly unfounded.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
Lance can be reached by email at [mailto:lance@graalonline.com] or by [[GCC:PM|forum PM]].&lt;br /&gt;
&lt;br /&gt;
Also, he can often be found at [irc://irc.freenode.org/gscript].&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Talk:Map&amp;diff=3922</id>
		<title>Talk:Map</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Talk:Map&amp;diff=3922"/>
		<updated>2005-04-18T16:04:56Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Possible improvements===&lt;br /&gt;
&lt;br /&gt;
* something about automapping (as in hiding the portions of the map that you haven't seen yet)?&lt;br /&gt;
* also some specifics about automated map generation and the format of the map txt files?&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Discussion===&lt;br /&gt;
&lt;br /&gt;
If you have things to suggest or add later, I think Talk is a more sensible place to do that. Just helps to keep the regular articles looking clean and tidy, y'know? [[User:GrowlZ|GrowlZ]] 17:02, 18 Apr 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
True, but people don't often check talk pages for notes on possible expansion.&amp;lt;br\&amp;gt;&lt;br /&gt;
--[[User:Kaimetsu|Kai]] 18:02, 18 Apr 2005 (CEST)&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Talk:Map&amp;diff=1900</id>
		<title>Talk:Map</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Talk:Map&amp;diff=1900"/>
		<updated>2005-04-18T16:02:41Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''(something about automapping (as in hiding the portions of the map that you haven't seen yet)?)'''&lt;br /&gt;
&lt;br /&gt;
'''(also some specifics about automated map generation? I've never done it, nor had reason to read up on the process)'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
If you have things to suggest or add later, I think Talk is a more sensible place to do that. Just helps to keep the regular articles looking clean and tidy, y'know? [[User:GrowlZ|GrowlZ]] 17:02, 18 Apr 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
True, but people don't often check talk pages for notes on possible expansion.&amp;lt;br\&amp;gt;&lt;br /&gt;
--[[User:Kaimetsu|Kai]] 18:02, 18 Apr 2005 (CEST)&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Map&amp;diff=1898</id>
		<title>Map</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Map&amp;diff=1898"/>
		<updated>2005-04-18T11:00:16Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A '''map''' is a 2D pictorial representation of an area. Graal has built-in functionality for generating, downloading and displaying maps. On servers that make use of the default features, players can access the map for their current area by pressing 'M' on the keyboard. The [[client]] will show the player's current position along with the positions of other players.&lt;br /&gt;
&lt;br /&gt;
Maps are created by server staff, either through some dedicated graphics application or by use of Graal's map generator. Then they are uploaded to the server and [[GScript|scripts]] are written to direct the [[client]] to the relevant file through use of the setmap (?) command.&lt;br /&gt;
&lt;br /&gt;
Multiple maps can be used on a single server. Most commonly they are used to represent the [[overworld]], but other significant areas may be given their own maps (especially if they are relatively large or complex).&lt;br /&gt;
&lt;br /&gt;
A smaller, largely transparent version of the map is displayed in the lower-left of the screen. It is called the minimap, and can be disabled by pressing Ctrl+3 (?).&lt;br /&gt;
&lt;br /&gt;
(something about automapping (as in hiding the portions of the map that you haven't seen yet)?)&lt;br /&gt;
&lt;br /&gt;
(also some specifics about automated map generation? I've never done it, nor had reason to read up on the process)&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=GRWAL_the_Comic&amp;diff=1938</id>
		<title>GRWAL the Comic</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=GRWAL_the_Comic&amp;diff=1938"/>
		<updated>2005-04-17T15:23:54Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: wrong link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://forums.graalonline.com/forums/showthread.php?t=52606 GRWAL: The Comic] is a 19 chapter comic created by [[Googi]] by editing various scanned pages of Japanese comics, as well as the American webcomic [http://www.megatokyo.com Megatokyo].  The comic features numerous Graalians, with the largest roles being given to [[Stefan]], [[Unixmad]], [[Googi]], [[Viper]], [[Kaimetsu]] and [[Tyhm]].  The comic has a few basic storylines but is largely meant to be a comedy.  The 19 chapters are as follows.&lt;br /&gt;
&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=52606 Chapter 1: Angel's Sandbox Adventure]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=967698#post967698 Chapter 2: The Oldbies Return!]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=968035#post968035 Chapter 3: Banhammer Time!!!!!]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=968267#post968267 Chapter 4: Schooled!!!]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=968437#post968437 Chapter 5: Fifty Nine Thousand]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=968748#post968748 Chapter 6: Revenge...And Romance (No)]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=969039#post969039 Chapter 7: Fear the Beer]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=969231#post969231 Chapter 8: Just What Does the &amp;quot;J&amp;quot; Stand for Anyways?]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=970027#post970027 Chapter 9: Umeskait Revealed!]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=970252#post970252 Chapter 10: The King of Bling]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=970465#post970465 Chapter 11: Chrono Trigger'd]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=971139#post971139 Chapter 12: Lollerskates]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=971385#post971385 Chapter 13: Showdown: Stefan vs. Unix]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=972228#post972228 Chapter 14: Supercop Protagonist]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=972770#post972770 Chapter 15: Bomy Form!]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=973051#post973051 Chapter 16: Caek!]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=975551#post975551 Chapter 17: The Quest for Caek!]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=978228#post978228 Chapter 18: Debug Mode!]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=992250#post992250 Chapter 19: Rules Riot!  Unix's Plan!]&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=GRWAL_the_Comic&amp;diff=1886</id>
		<title>GRWAL the Comic</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=GRWAL_the_Comic&amp;diff=1886"/>
		<updated>2005-04-17T12:29:28Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: added links (might be errors)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://forums.graalonline.com/forums/showthread.php?t=52606 GRWAL: The Comic] is a 19 chapter comic created by [[Googi]] by editing various scanned pages of Japanese comics, as well as the American webcomic [http://www.megatokyo.com Megatokyo].  The comic features numerous Graalians, with the largest roles being given to [[Stefan]], [[Unixmad]], [[Googi]], [[Viper]], [[Kaimetsu]] and [[Tyhm]].  The comic has a few basic storylines but is largely meant to be a comedy.  The 19 chapters are as follows.&lt;br /&gt;
&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=52606 Chapter 1: Angel's Sandbox Adventure]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=967698#post967698 Chapter 2: The Oldbies Return!]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=968035#post968035 Chapter 3: Banhammer Time!!!!!]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=968267#post968267 Chapter 4: Schooled!!!]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=968437#post968437 Chapter 5: Fifty Nine Thousand]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=968748#post968748 Chapter 6: Revenge...And Romance (No)]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=969039#post969039 Chapter 7: Fear the Beer]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=969231#post969231 Chapter 8: Just What Does the &amp;quot;J&amp;quot; Stand for Anyways?]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=970027#post970027 Chapter 9: Umeskait Revealed!]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=970252#post970252 Chapter 10: The King of Bling]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=970465#post970465 Chapter 11: Chrono Trigger'd]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=970465#post970465 Chapter 12: Lollerskates]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=971385#post971385 Chapter 13: Showdown: Stefan vs. Unix]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=972228#post972228 Chapter 14: Supercop Protagonist]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=972770#post972770 Chapter 15: Bomy Form!]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=973051#post973051 Chapter 16: Caek!]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=975551#post975551 Chapter 17: The Quest for Caek!]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=978228#post978228 Chapter 18: Debug Mode!]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=992250#post992250 Chapter 19: Rules Riot!  Unix's Plan!]&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Template:Player&amp;diff=2727</id>
		<title>Template:Player</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Template:Player&amp;diff=2727"/>
		<updated>2005-04-15T07:52:24Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: -=notable&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border: 1px solid black; background-color: beige; padding: 10px 10px 10px 10px;&amp;quot;&amp;gt;''This article is biographical in nature and is intended to provide information about a [[player]] of [[Graal]]. It is likely to have been written by the player himself, so expect some degree of bias. If you have something to add then please feel free to contribute it, but try to keep all content fair and do your best to ensure that your additions are not offensive or unreasonable. If you wish to discuss opinions about this player, use this article's [[Talk:{{PAGENAME}}|Talk]] page.''&amp;lt;/div&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Template:Player&amp;diff=1879</id>
		<title>Template:Player</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Template:Player&amp;diff=1879"/>
		<updated>2005-04-15T07:51:16Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: -=notable&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border: 1px solid black; background-color: beige;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;margin: 10px 10px 10px 10px;&amp;quot;&amp;gt;''This article is biographical in nature and is intended to provide information about a [[player]] of [[Graal]]. It is likely to have been written by the player himself, so expect some degree of bias. If you have something to add then please feel free to contribute it, but try to keep all content fair and do your best to ensure that your additions are not offensive or unreasonable. If you wish to discuss opinions about this player, use this article's [[Talk:{{PAGENAME}}|Talk]] page.''&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=User:Kojjiro&amp;diff=3917</id>
		<title>User:Kojjiro</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=User:Kojjiro&amp;diff=3917"/>
		<updated>2005-04-13T09:43:03Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: standardisation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To Kojjiro: It is standard to put all biographical information in a single page such as this one. The texts from User:Kojjiro and User_talk:Kojjiro are shown below. You are advised to combine them into a single description and save it to this page (replacing my text).&amp;lt;br\&amp;gt;&lt;br /&gt;
Also, please note that the Wiki doesn't recognise line breaks between consecutive lines of text - instead, it treats them as a single line. If you wish to have the content look as it does on the edit page then you should insert breakpoints (&amp;amp;lt;br\&amp;amp;gt;) at the ends of the relevant lines.&amp;lt;br\&amp;gt;&lt;br /&gt;
--[[User:Kaimetsu|Kai]] 11:43, 13 Apr 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
A Die-hard RPG fan Kojjiro would likely do -Anything- for Some EXP.&lt;br /&gt;
He likes to write and play with swords.&lt;br /&gt;
&lt;br /&gt;
Hes good in Levels as well, Sprites.&lt;br /&gt;
Kojjiro is an avid fan of such works as the weel of time.&lt;br /&gt;
His favorite bands are alot, too many to name.&lt;br /&gt;
&lt;br /&gt;
Kojjiro began his life of graal on a small unpopular server called [[rudora]]&lt;br /&gt;
He soon began to frequent [[Babylon]] and Era he eventually got sick of Era and babylon shut down Kojjiro then began to play [[Valikorlia]] and has recently Started playing [[N-pulse]] to hang out with people from Babylon&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Biography And stuff go Here right?&lt;br /&gt;
Merc:No i thi..&lt;br /&gt;
YOU=BLASPHEMIS &lt;br /&gt;
Merc:You spelled that wrong.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kojjiro is a Writer and stuff, he writes Fiction. &lt;br /&gt;
He is currently a Hard Core gamer employed by Fox Hound.&lt;br /&gt;
He does all kinds of cool stuff like fights with swords.&lt;br /&gt;
And he plays graal.&lt;br /&gt;
&lt;br /&gt;
Thats it Dude. &lt;br /&gt;
&lt;br /&gt;
Or do you really want to know...teh twooth? huh huh wut?&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Events_Team&amp;diff=3912</id>
		<title>Events Team</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Events_Team&amp;diff=3912"/>
		<updated>2005-04-13T09:31:56Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: italics -&amp;gt; bold&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The term '''Events Team''' has come to refer to a group of officials on a [[server]] that organise special events to entertain players. These vary in theme dramatically, but usually involve some element of competition (trivia, sparring contests, etc) and reward (specific to the [[server]] - sometimes money, sometimes items, sometimes special tokens).&lt;br /&gt;
&lt;br /&gt;
As with 'LAT' and 'NAT', the abbreviation 'ET' is often used to refer to individual members of the Events Team rather than the whole.&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Events_Team&amp;diff=1873</id>
		<title>Events Team</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Events_Team&amp;diff=1873"/>
		<updated>2005-04-13T09:31:29Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The term ''Events Team'' has come to refer to a group of officials on a [[server]] that organise special events to entertain players. These vary in theme dramatically, but usually involve some element of competition (trivia, sparring contests, etc) and reward (specific to the [[server]] - sometimes money, sometimes items, sometimes special tokens).&lt;br /&gt;
&lt;br /&gt;
As with 'LAT' and 'NAT', the abbreviation 'ET' is often used to refer to individual members of the Events Team rather than the whole.&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Server&amp;diff=2124</id>
		<title>Server</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Server&amp;diff=2124"/>
		<updated>2005-04-13T09:30:11Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In the most common usage of the term, a '''server''' is a world to which the Graal [[client]] can connect. The word is somewhat misleading, since many worlds can be hosted on the same physical server, but it is prevalent nonetheless. The difference between the terms 'server' and a '[[playerworld]]' is that the latter can't be used to refer to [[GraalOnline]]-operated worlds such as [[Graal Kingdoms]]. A [[playerworld]] is a server but a server is not necessarily a [[playerworld]].&lt;br /&gt;
&lt;br /&gt;
The term is also used to refer to the [[GServer]] that runs a given world.&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Server&amp;diff=1871</id>
		<title>Server</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Server&amp;diff=1871"/>
		<updated>2005-04-13T09:27:34Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: Expanded, reworded&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A '''server''' is a world to which the Graal [[client]] can connect. The word is somewhat misleading, since many worlds can be hosted on the same physical server, but it is prevalent nonetheless. The difference between the terms 'server' and a '[[playerworld]]' is that the latter can't be used to refer to [[GraalOnline]]-operated worlds such as [[Graal Kingdoms]]. A [[playerworld]] is a server but a server is not necessarily a [[playerworld]].&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/Level_editor&amp;diff=3443</id>
		<title>Creation/Dev/Level editor</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/Level_editor&amp;diff=3443"/>
		<updated>2005-04-13T09:08:30Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: rewrote some sections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''level editor''' is a tool provided by [[GraalOnline]] for designing and editing [Level|levels]. It is in many ways a reduced version of the online client, and it allows designers to enter the level as though it were online. It also facilitates the creation of NPCs, and features a debugger (accessed via F6) to aid in the development thereof.&lt;br /&gt;
&lt;br /&gt;
The proper way to access the level editor is by opening GraalEditor.exe in the [[Graal]] folder. Windows can be configured to use the editor by default when opening .nw and .graal files.&lt;br /&gt;
&lt;br /&gt;
Once a [[level]] has been saved, it can be uploaded to a [[Playerworld]] using the [[RC file manager]].&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Map&amp;diff=1894</id>
		<title>Map</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Map&amp;diff=1894"/>
		<updated>2005-04-13T08:58:29Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: rewritten&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A '''map''' is a 2D pictorial representation of an area. Graal has built-in functionality for generating, downloading and displaying maps. On servers that make use of the default features, players can access the map for their current area by pressing 'M' on the keyboard. The [[client]] will show the player's current position along with the positions of other players.&lt;br /&gt;
&lt;br /&gt;
Maps are created by server staff, either through some dedicated graphics application or by use of Graal's map generator. Then they are uploaded to the server and [[GScript|scripts]] are written to direct the [[client]] to the relevant file through use of the setmap (?) command.&lt;br /&gt;
&lt;br /&gt;
Multiple maps can be used on a single server. Most commonly they are used to represent the [[overworld]], but other significant areas may be given their own maps (especially if they are relatively large or complex).&lt;br /&gt;
&lt;br /&gt;
A smaller, largely transparent version of the map is displayed in the lower-left of the screen. It is called the minimap, and can be disabled by pressing Ctrl+3 (?).&lt;br /&gt;
&lt;br /&gt;
(something about automapping?)&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Tileset&amp;diff=3915</id>
		<title>Tileset</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Tileset&amp;diff=3915"/>
		<updated>2005-04-13T08:39:47Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A '''tileset''' is simply a set of [[tile]]s, standardly held in a large png. [[Scripter|Scripters]] can tell the [[client]] to use a given tileset - either replacing or editing the default pics1.png - through use of the addtiledef and addtiledef2 commands.&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/Tile&amp;diff=2051</id>
		<title>Creation/Dev/Tile</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/Tile&amp;diff=2051"/>
		<updated>2005-04-13T08:37:59Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: more information, slight elucidation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A '''tile''' is a square of color, 16 pixels in height and width. [[Level|Levels]] are made up of 4096 tiles, making a 64x64 grid.&lt;br /&gt;
&lt;br /&gt;
The tile is also the standard unit of measure when dealing with objects within levels, although players and NPCs can have positions that don't align with the tile grid.&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Tileset&amp;diff=1867</id>
		<title>Tileset</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Tileset&amp;diff=1867"/>
		<updated>2005-04-13T08:33:12Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: rewritten&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A '''tileset''' is simply a set of [[tile]]s, standardly held in a large png. [[Scripter|Scripters]] can tell the [[client]] to use a given tileset through use of the addtiledef and addtiledef2 commands.&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Guild&amp;diff=2102</id>
		<title>Guild</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Guild&amp;diff=2102"/>
		<updated>2005-04-13T06:32:15Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A '''guild''' is a group of [[Graalian]]s that can adopt a [[tag]], specific to their guild.&lt;br /&gt;
&lt;br /&gt;
Players can join multiple guilds and use the tags interchangeably on the same server. Indeed, it is possible to join a guild without ever wearing the tag. Some feel that this is missing the point.&lt;br /&gt;
&lt;br /&gt;
Guilds can either be global, meaning that they can be used on any server (unless the staff have specifically prevented it), or local. On [[Graal Kingdoms]], for example, there is one guild for each Kingdom. Since it would not make sense for them to be used on other servers, they have been defined as local guilds.&lt;br /&gt;
&lt;br /&gt;
Local guilds can be freely created by server staff. However, global guilds must be approved by the [[Guild Admin]], and this will only happen if enough players support their creation. Guilds whose names contain offensive words or copyrighted terms will most likely be rejected. Even if a guild is deemed acceptable, it will not be enabled until at least ten (?) Graalians have supported it through the Guild CP.&lt;br /&gt;
&lt;br /&gt;
It is common that staff members will use guild tags to declare their role. [[NPC]]s are sometimes coded such that they only respond to somebody with a specific staff tag.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
[http://www.graalonline.com/guilds/index.php The Official Guild HQ]&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Worlds/N-Pulse&amp;diff=2372</id>
		<title>Worlds/N-Pulse</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Worlds/N-Pulse&amp;diff=2372"/>
		<updated>2005-04-12T06:03:14Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: rewritten&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''N-Pulse''' is one of Graal's older [[playerworld]]s, originally founded by [[Geovanie]] shortly before the dawn of time. Since that time it has endured various makeovers and spinoffs (including Geo's abysmal 'Tierdal'), all of which missed the point: Whatever popularity the [[playerworld]] has, it is a function of its ''community''. Unsurprisingly, both are waning.&lt;br /&gt;
&lt;br /&gt;
Nonetheless, N-Pulse is still active enough to cause a little controversy every few months as people fight over the manager role. Currently (12/04/05), it is under the unreliable leadership of [[Moon Goddess]].&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Player&amp;diff=3886</id>
		<title>Player</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Player&amp;diff=3886"/>
		<updated>2005-04-12T05:35:09Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: Would be better to centralise the information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Graalian]]&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript&amp;diff=1916</id>
		<title>Creation/Dev/GScript</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript&amp;diff=1916"/>
		<updated>2005-04-11T07:06:54Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: Reverted edit of Hiro, changed back to last version by Rick&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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 derived languages, although it lacks some of the expressivity of a real programming language and has special constructs that make programming [[Graal]] [[NPC]]s easier.&lt;br /&gt;
&lt;br /&gt;
GScript started as a very limited language and has since kept up with improvements to the game engine and can now be used for pretty sophisticated scripts that greatly customise the gaming experience.&lt;br /&gt;
&lt;br /&gt;
It is used, with minor differences, for [[Clientside]] tasks like [[GUI | GUI programming]], special effects with nifty 3d lighting and custom [[NPC Weapons]] or &amp;amp;quot;engines&amp;amp;quot;, and [[Serverside]] systems like player housing, complex baddies or pets.&lt;br /&gt;
&lt;br /&gt;
[[Old GScript]] has been replaced by a new version (dubbed GScript2 during development) that is rather advanced, in some way object oriented, and thanks to influence from [[Torque]]'s scripting language, less brain-damaged in some aspects. No offense intended.&lt;br /&gt;
&lt;br /&gt;
GScript can be discussed in the [[GScript IRC channel]].&lt;br /&gt;
&lt;br /&gt;
[[Script Functions: Client]]&lt;br /&gt;
&lt;br /&gt;
[[Script Functions: NPC Server]]&lt;br /&gt;
&lt;br /&gt;
[[Script Functions: Graal 3D]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Why scripts ===&lt;br /&gt;
&lt;br /&gt;
Scripts bring life into objects and make it easy to &lt;br /&gt;
customize the game. Instead of just placing a stone&lt;br /&gt;
into your world, you can make it so that the stone&lt;br /&gt;
can be lifted or kicked. Instead of being limited to&lt;br /&gt;
some fixed player movement you can rescript it&lt;br /&gt;
to let the player jump, strafe and duck. To let the &lt;br /&gt;
player inspect and organize his/her items you can&lt;br /&gt;
create some dialogs and display those by script,&lt;br /&gt;
e.g. when the player presses a special key.&lt;br /&gt;
&lt;br /&gt;
In Graal the scripting is done in 'Graal Script',&lt;br /&gt;
it's looking like Java/C++, but brings some &lt;br /&gt;
additional features for making things easier&lt;br /&gt;
for game creators, while on the other hand&lt;br /&gt;
running in a sandbox and limiting access to&lt;br /&gt;
game-related stuff only.&lt;br /&gt;
&lt;br /&gt;
Graal Script is almost fully compatible to &lt;br /&gt;
the 'old' Graal script used in Graal v1.0 - 3.0,&lt;br /&gt;
and is partially compatible to Torque script. &lt;br /&gt;
&lt;br /&gt;
=== NPCs and 'weapons' ===&lt;br /&gt;
&lt;br /&gt;
There are generally two types of objects in Graal&lt;br /&gt;
which have scripts: The first type are the &lt;br /&gt;
non-player-characters (NPCs). The name 'NPC' is&lt;br /&gt;
actually used for all visible objects in the game: &lt;br /&gt;
monsters, stones, bushes, houses, ships, plants etc.&lt;br /&gt;
Scripts for npcs are most of the time containing&lt;br /&gt;
code for moving the npc or for reacting to &lt;br /&gt;
activities of the player, e.g. giving money to&lt;br /&gt;
the player when he grabs the npc.&lt;br /&gt;
The other type of script-holding objects are the&lt;br /&gt;
'weapons'. Those are items in the inventory of&lt;br /&gt;
the player, not necessary being weapons. Most of&lt;br /&gt;
the time they are actually just scripts which&lt;br /&gt;
control the movement of the player, display weapon&lt;br /&gt;
graphics, or display menus.&lt;br /&gt;
&lt;br /&gt;
So there are objects in the game which have &lt;br /&gt;
their own script, and players which have a set&lt;br /&gt;
of scripts in their invisible backpack.&lt;br /&gt;
&lt;br /&gt;
=== Server-side and client-side ===&lt;br /&gt;
&lt;br /&gt;
Graal is an online game, and there are differences&lt;br /&gt;
to standard scripting in offline games.&lt;br /&gt;
In offline programs you have access to everything,&lt;br /&gt;
anytime. In online games everything is divided&lt;br /&gt;
into two parts: the server-side which controls&lt;br /&gt;
most things in the game, and the client-side which&lt;br /&gt;
displays the game to the player.&lt;br /&gt;
Since the client only displays things, it is not&lt;br /&gt;
possible to cheat by hacking the client. On client-side&lt;br /&gt;
you mainly have code for displaying special effects,&lt;br /&gt;
for displaying the GUI (windows, status bars, item menus),&lt;br /&gt;
playing sound effects and music. Also the player &lt;br /&gt;
movement is done on client-side.&lt;br /&gt;
On the server-side scripts are used to do the more&lt;br /&gt;
secure parts of the game engine are implemented,&lt;br /&gt;
and things that are the same for all players -&lt;br /&gt;
npcs are added, moved, npcs interact with players,&lt;br /&gt;
the stats of the players are calculated, the&lt;br /&gt;
communication between players is handled.&lt;br /&gt;
&lt;br /&gt;
All scripts for npcs and weapons can contain&lt;br /&gt;
server-side code and client-side code. The server-side&lt;br /&gt;
code is executed directly on the server, the&lt;br /&gt;
client-side code is sent to the client when he&lt;br /&gt;
logins and executed separately for each player on&lt;br /&gt;
their own computer. Usually the two parts of the script&lt;br /&gt;
are divided by line that only contains &amp;quot;//#CLIENTSIDE&amp;quot;,&lt;br /&gt;
like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;// Server-side part which is setting the image&lt;br /&gt;
// of the npc when it is created&lt;br /&gt;
function onCreated() {&lt;br /&gt;
  setimg(&amp;quot;door.png&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//#CLIENTSIDE&lt;br /&gt;
&lt;br /&gt;
// Here follows the client-side part,&lt;br /&gt;
// which plays a sound effect when the player&lt;br /&gt;
// touchs the npc&lt;br /&gt;
function onPlayerTouchsme() {&lt;br /&gt;
  play(&amp;quot;chest.wav&amp;quot;);&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Events ===&lt;br /&gt;
&lt;br /&gt;
In general scripts are made for reacting to &lt;br /&gt;
events - when the npc is created then the script&lt;br /&gt;
initializes the attributes of the npc,&lt;br /&gt;
when the player says something then the npc is&lt;br /&gt;
moving to the player, when the player grabs the&lt;br /&gt;
npc then the npc is giving the player some money etc.&lt;br /&gt;
So the script is basicly a collection of actions&lt;br /&gt;
that are done when special events are happening.&lt;br /&gt;
Events can e.g. be the &amp;quot;created&amp;quot; event when the npc&lt;br /&gt;
is created, the &amp;quot;playertouchsme&amp;quot; event when the &lt;br /&gt;
player touchs the npc, or the &amp;quot;playerchats&amp;quot; event&lt;br /&gt;
when the player says something. To write code reacts&lt;br /&gt;
to one of those event, you define an event&lt;br /&gt;
function like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;function onEVENTNAME() {&lt;br /&gt;
  // actions&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the event is happening, then Graal executes&lt;br /&gt;
that scripting function and all commands you &lt;br /&gt;
have added there.&lt;br /&gt;
Sometimes the event gives some parameters to the &lt;br /&gt;
event function, then change your function to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;function onEVENTNAME(parameter1, paramater2, ...) {&lt;br /&gt;
  // actions&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By accessing 'parameter1' etc. (you can name&lt;br /&gt;
them differently) you can react to the event more&lt;br /&gt;
exactly. &lt;br /&gt;
&lt;br /&gt;
Instead of reacting to events, the npcs and&lt;br /&gt;
weapons can also invoke new events. That way &lt;br /&gt;
you can let other npcs doing things. You also&lt;br /&gt;
need that if you want to coninuously doing things -&lt;br /&gt;
use timeout event for that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;function onCreated() {&lt;br /&gt;
  timeout = 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function onTimeout() {&lt;br /&gt;
  // actions&lt;br /&gt;
  timeout = 1;&lt;br /&gt;
}&amp;lt;pre/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the onCreated event function the script is&lt;br /&gt;
setting the timer to 1 second. When that second is&lt;br /&gt;
over, then the &amp;quot;timeout&amp;quot; event is invoked on the&lt;br /&gt;
npc and the onTimeout event function is executed.&lt;br /&gt;
Because it is setting the timeout to 1 second&lt;br /&gt;
again, the onTimeout even will occur again after&lt;br /&gt;
one second, and so on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Compatibility note:&lt;br /&gt;
In older Graal scripts you will also find the&lt;br /&gt;
deprecated way of receiving events:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if (EVENTNAME) {&lt;br /&gt;
  // actions&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is an if-command outside of any brackets. If&lt;br /&gt;
Graal sees that you use such an if-command, then&lt;br /&gt;
it will execute the whole script so that the actions&lt;br /&gt;
you have written inside the if-command will be&lt;br /&gt;
executed too.&lt;br /&gt;
&lt;br /&gt;
== Basics ==&lt;br /&gt;
&lt;br /&gt;
=== Accessing variables ===&lt;br /&gt;
&lt;br /&gt;
Graal Script variables are 'variant', that means they are objects&lt;br /&gt;
that hold values of different types.&lt;br /&gt;
When you assign a value to the variable then it automatically&lt;br /&gt;
switches to the right type:&lt;br /&gt;
&lt;br /&gt;
Numeric (floating point):&lt;br /&gt;
  var = 1;&lt;br /&gt;
String:&lt;br /&gt;
  var = &amp;quot;hello&amp;quot;;&lt;br /&gt;
Object link:&lt;br /&gt;
  var = player;&lt;br /&gt;
Array (list of objects):&lt;br /&gt;
  var = {1,2,3};&lt;br /&gt;
&lt;br /&gt;
You can check the current type with the&lt;br /&gt;
type()-function - obj.type() returns&lt;br /&gt;
0,1,2,3 for numeric, string, object or array.&lt;br /&gt;
&lt;br /&gt;
=== Operators ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Addition                  a + b&lt;br /&gt;
Substraction              a - b&lt;br /&gt;
Mulitplication            a * b&lt;br /&gt;
Division                  a / b&lt;br /&gt;
Modulus                   a % b&lt;br /&gt;
Power                     a ^ b&lt;br /&gt;
String Concationation     a @ b&lt;br /&gt;
Bool-And                  a &amp;amp;&amp;amp; b&lt;br /&gt;
Bool-Or                   a || b&lt;br /&gt;
Bool-Not                  !a&lt;br /&gt;
Negative                  -a&lt;br /&gt;
Equal                     a == b&lt;br /&gt;
Not-Equal                 a != b&lt;br /&gt;
Less                      a &amp;lt; b&lt;br /&gt;
Greater                   a &amp;gt; b&lt;br /&gt;
Less-Equal                a &amp;lt;= b,  a =&amp;lt; b&lt;br /&gt;
Greater-Equal             a &amp;gt;= b,  a =&amp;gt; b&lt;br /&gt;
In-Range                  a in &amp;lt;b,c&amp;gt;, a in |b,c&amp;gt;, a in &amp;lt;b,c|, a in |b,c|&lt;br /&gt;
In-Array                  a in {b,c,...}, {a,b,...} in {c,d,...}&lt;br /&gt;
Bitwise-Or                a | b&lt;br /&gt;
Bitwise-And               a &amp;amp; b&lt;br /&gt;
Bitwise-Shift left        a &amp;lt;&amp;lt; b&lt;br /&gt;
Bitwise-Shift right       a &amp;gt;&amp;gt; b&lt;br /&gt;
Bitwise-Invert            ~a&lt;br /&gt;
Bitwise-Xor               a xor b (operator ^ already used for power)&lt;br /&gt;
Array-Constructor         {a,b,...}&lt;br /&gt;
Empty Array               new [count]&lt;br /&gt;
Array Member              a[index]&lt;br /&gt;
Function call             a(), a(b,c,...)&lt;br /&gt;
Object Attribute          a.b, a.(b)&lt;br /&gt;
Post Increment            a++&lt;br /&gt;
Post Decrement            a--&lt;br /&gt;
Pre Increment             ++a&lt;br /&gt;
Pre Decrement             --a&lt;br /&gt;
Old String Function       #a&lt;br /&gt;
Conditional               a? b : c&lt;br /&gt;
Assignment                a = b, a := b&lt;br /&gt;
Additive Assignment       a += b&lt;br /&gt;
Substractive Assignment   a -= b&lt;br /&gt;
Multiplicative Assignment a *= b&lt;br /&gt;
Division Assignment       a /= b&lt;br /&gt;
Modulus Assignment        a %= b&lt;br /&gt;
Power Assignment          a ^= b&lt;br /&gt;
Bitwise-Or Assignment     a |= b&lt;br /&gt;
Bitwise-And Assignment    a &amp;amp;= b&lt;br /&gt;
Shift Left Assignment     a &amp;lt;&amp;lt;= b&lt;br /&gt;
Shift Right Assignment    a &amp;gt;&amp;gt;= b&lt;br /&gt;
String Append             a @= b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Standard object functions ===&lt;br /&gt;
&lt;br /&gt;
For a complete list of functions and attributes of objects&lt;br /&gt;
see docu_graalscriptfunctions.txt. The base type of all&lt;br /&gt;
objects is &amp;quot;TGraalVar&amp;quot;. You can also get the latest list by&lt;br /&gt;
calling the executale with &amp;quot;-listscriptfunctions&amp;quot; as &lt;br /&gt;
command-line parameter. &lt;br /&gt;
Here only of the built-in functions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.type()  - gets the type of the var (float 0, string 1, object 2, array 3)&lt;br /&gt;
obj.length() - string length&lt;br /&gt;
obj.trim()&lt;br /&gt;
obj.tokenize([delimiters])&lt;br /&gt;
obj.charat(pos)&lt;br /&gt;
obj.pos(substring)&lt;br /&gt;
obj.starts(string)&lt;br /&gt;
obj.ends(string)&lt;br /&gt;
obj.substring(index[,length])&lt;br /&gt;
obj.size() - array length&lt;br /&gt;
obj.subarray(index[,length])&lt;br /&gt;
obj.addarray(obj2)&lt;br /&gt;
obj.insertarray(index,obj2)&lt;br /&gt;
obj.index(obj2) - position of obj2 in the array&lt;br /&gt;
obj.clear()&lt;br /&gt;
obj.add(obj2)&lt;br /&gt;
obj.delete(index)&lt;br /&gt;
obj.remove(obj2)&lt;br /&gt;
obj.replace(index,obj2)&lt;br /&gt;
obj.insert(index,obj2)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Standard functions ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
format(format,parameters,...) - formats a &amp;quot;%s %d&amp;quot; string, inserts the parameters, and returns a string&lt;br /&gt;
int(a)&lt;br /&gt;
abs(a)&lt;br /&gt;
random(rangestart,rangeend)&lt;br /&gt;
sin(a)&lt;br /&gt;
cos(a)&lt;br /&gt;
arctan(a)&lt;br /&gt;
exp(a)&lt;br /&gt;
log(base,a)&lt;br /&gt;
min(a,b)&lt;br /&gt;
max(a,b)&lt;br /&gt;
getangle(delta x,delta y)&lt;br /&gt;
getdir(delta x,delta y)&lt;br /&gt;
vecx(direction)&lt;br /&gt;
vecy(direction)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Events ==&lt;br /&gt;
&lt;br /&gt;
=== GUI controls ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
onAdd() when added to the parent&lt;br /&gt;
onRemove() when removed from the parent&lt;br /&gt;
onWake() when activated&lt;br /&gt;
onSleep() when deactivated&lt;br /&gt;
onResize(w,h)&lt;br /&gt;
onMove(x,y)&lt;br /&gt;
onMouseEnter(modifier,x,y,clickcount)&lt;br /&gt;
onMouseLeave(modifier,x,y,clickcount)&lt;br /&gt;
onMouseDown(modifier,x,y,clickcount)&lt;br /&gt;
onMouseUp(modifier,x,y,clickcount)&lt;br /&gt;
onMouseDragged(modifier,x,y,clickcount)&lt;br /&gt;
onMouseMove(modifier,x,y,clickcount)&lt;br /&gt;
onRightMouseDown(modifier,x,y,clickcount)&lt;br /&gt;
onRightMouseUp(modifier,x,y,clickcount)&lt;br /&gt;
onRightMouseDragged(modifier,x,y,clickcount)&lt;br /&gt;
onMouseWheelUp(modifier,x,y,clickcount)&lt;br /&gt;
onMouseWheelDown(modifier,x,y,clickcount)&lt;br /&gt;
onKeyDown(keycode,string)&lt;br /&gt;
onKeyUp(keycode,string)&lt;br /&gt;
onKeyRepeat(keycode,string)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== GuiMLTextCtrl: ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
onReflow(w,h) when the text has changed&lt;br /&gt;
onURL(url) when clicked on url&lt;br /&gt;
onSelectTag(tagid) when clicked on an image&lt;br /&gt;
&lt;br /&gt;
Text-Tags:&lt;br /&gt;
The text of multi-line text controls can contain&lt;br /&gt;
a few HTML-tags and Torque-tags, you can use both&lt;br /&gt;
of those tag types to define colors and fonts&lt;br /&gt;
or to include images. Currently following tags&lt;br /&gt;
are available:&lt;br /&gt;
&lt;br /&gt;
HTML:&lt;br /&gt;
&amp;lt;a href=url&amp;gt; text &amp;lt;/a&amp;gt; - when the user clicks on 'text' then &lt;br /&gt;
  a web browser is opened for the specified url&lt;br /&gt;
&amp;lt;br&amp;gt; - line break&lt;br /&gt;
&amp;lt;font face=fontname size=textsize color=colorname or #rrggbb&amp;gt; text &amp;lt;/font&amp;gt;&lt;br /&gt;
  - draws text with a special font, size and color; you only&lt;br /&gt;
  need to define one of those 3 attributes&lt;br /&gt;
&amp;lt;ignorelinebreaks&amp;gt; &amp;lt;/ignorelinebreaks&amp;gt; - go into normal HTML mode where&lt;br /&gt;
  you need to insert &amp;lt;br&amp;gt; to do a linebreak&lt;br /&gt;
&amp;lt;img src=filename id=integer&amp;gt; - an image is displayed, you &lt;br /&gt;
  can also specify a tagid if you want to get onSelectTag-events&lt;br /&gt;
  for this image&lt;br /&gt;
&amp;lt;p align=left/center/right&amp;gt; - sets the align of the following text&lt;br /&gt;
&amp;lt;span style=&amp;quot;width=100; height=100;&amp;quot; id=integer&amp;gt; &amp;lt;/span&amp;gt; - for &lt;br /&gt;
  displaying a subpage, you can also specifiy an id for &lt;br /&gt;
  onSelectTag-events; instead of &amp;lt;span&amp;gt; you can also use &amp;lt;div&amp;gt; tags&lt;br /&gt;
&lt;br /&gt;
Torque:&lt;br /&gt;
&amp;lt;a:url&amp;gt; text &amp;lt;/a&amp;gt; - when the user clicks on 'text' then &lt;br /&gt;
  a web browser is opened for the specified url&lt;br /&gt;
&amp;lt;bitmap:filename&amp;gt; - an image is displayed&lt;br /&gt;
&amp;lt;color:rrggbb&amp;gt; - sets the color of the text (hexadecimal value)&lt;br /&gt;
&amp;lt;lmargin:pixels&amp;gt; - sets the left margin for the text&lt;br /&gt;
&amp;lt;lmargin%:percent&amp;gt; - sets the size of the left margin depending &lt;br /&gt;
  on the width of the whole control&lt;br /&gt;
&amp;lt;linkcolor:rrggbb&amp;gt; - sets the color of links (the &amp;lt;a&amp;gt;-tag)&lt;br /&gt;
&amp;lt;linkcolorhl:rrggbb&amp;gt; - sets the highlighted color, when&lt;br /&gt;
  the user moves the mouse over a link&lt;br /&gt;
&amp;lt;just:left/center/right&amp;gt; - sets the align of the following text&lt;br /&gt;
&amp;lt;rmargin:pixels&amp;gt; - sets the right margin for the text&lt;br /&gt;
&amp;lt;rmargin%:percent&amp;gt; - sets the size of the right margin depending &lt;br /&gt;
  on the width of the whole control&lt;br /&gt;
&amp;lt;sbreak&amp;gt; - line break&lt;br /&gt;
&amp;lt;spush&amp;gt; - switches to a new style (like &amp;lt;font&amp;gt;)&lt;br /&gt;
&amp;lt;spop&amp;gt; - switches back to the last saved style (like &amp;lt;/font&amp;gt;)&lt;br /&gt;
&amp;lt;tab:tab1,tab2,..&amp;gt; - sets the position of where tabulators should&lt;br /&gt;
  be displayed if you have text like 'Apple \t Egg \t Chicken'&lt;br /&gt;
&amp;lt;tag:id&amp;gt; - inserts an invisible tag which can be used&lt;br /&gt;
  for the scrollToTag(id) function (beside image-tags)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== GuiTextEditCtrl: ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
onTabComplete()&lt;br /&gt;
onAction(text) when return key pressed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== GuiTextListCtrl: ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
onSelect(id,text) when row selected&lt;br /&gt;
onDblClick(id) when double-click on row or return key pressed&lt;br /&gt;
onDeleteKey(id) when delete key pressed&lt;br /&gt;
onIconResized(w,h) when setIconSize() called&lt;br /&gt;
onOpenMenu(0,index,text) when an item was right-clicked&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== GuiPopUpMenuCtrl: ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
onSelect(id,text) when menu option choosen&lt;br /&gt;
onCancel() when menu is closed without action&lt;br /&gt;
onOpenMenu(0,index,text) when an item was right-clicked&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== GuiMenuBar: ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
onMenuSelect(menuid,menutext)&lt;br /&gt;
onMenuItemSelect(menuid,menutext,itemid,itemtext)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== GuiTreeViewCtrl: ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
onSelect(id,rightmouse) when row selected&lt;br /&gt;
onUnselect(id) when row de-selected&lt;br /&gt;
onInspect(id) when clicked on the name of an item&lt;br /&gt;
onOpenMenu(0,index,text) when an item was right-clicked&lt;br /&gt;
onContextMenu(&amp;quot;x y&amp;quot;,id) when clicked with right-mouse key on row&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Old script compatibility ==&lt;br /&gt;
&lt;br /&gt;
=== Removed functionality ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
- toinventory&lt;br /&gt;
- followplayer&lt;br /&gt;
- playersays()&lt;br /&gt;
- setbackpal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Supported old scripting commands &amp;amp; their mapping to new script ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
addstring oldstring, oldstring;&lt;br /&gt;
                                addstring(string,string);&lt;br /&gt;
addtiledef oldstring, oldstring, float;&lt;br /&gt;
                                addtiledef(string,string,float);&lt;br /&gt;
addtiledef2 oldstring, oldstring, float, float;&lt;br /&gt;
                                addtiledef2(string,string,float,float);&lt;br /&gt;
attachplayertoobj float, float;&lt;br /&gt;
                                attachplayertoobj(float,float);&lt;br /&gt;
blockagain;&lt;br /&gt;
                                blockagain();&lt;br /&gt;
blockagainlocal;&lt;br /&gt;
                                blockagainlocal();&lt;br /&gt;
callnpc float, oldstring;&lt;br /&gt;
                                callnpc(float,string);&lt;br /&gt;
callweapon float, oldstring;&lt;br /&gt;
                                callweapon(float,string);&lt;br /&gt;
canbecarried;&lt;br /&gt;
                                canbecarried();&lt;br /&gt;
canbepulled;&lt;br /&gt;
                                canbepulled();&lt;br /&gt;
canbepushed;&lt;br /&gt;
                                canbepushed();&lt;br /&gt;
cannotbecarried;&lt;br /&gt;
                                cannotbecarried();&lt;br /&gt;
cannotbepulled;&lt;br /&gt;
                                cannotbepulled();&lt;br /&gt;
cannotbepushed;&lt;br /&gt;
                                cannotbepushed();&lt;br /&gt;
canwarp;&lt;br /&gt;
                                canwarp();&lt;br /&gt;
canwarp2;&lt;br /&gt;
                                canwarp2();&lt;br /&gt;
carryobject oldstring;&lt;br /&gt;
                                carryobject(string);&lt;br /&gt;
changeimgcolors float, float, float, float, float;&lt;br /&gt;
                                changeimgcolors(float,float,float,float,float);&lt;br /&gt;
changeimgmode float, float;&lt;br /&gt;
                                changeimgmode(float,float);&lt;br /&gt;
changeimgpart float, float, float, float, float;&lt;br /&gt;
                                changeimgpart(float,float,float,float,float);&lt;br /&gt;
changeimgvis float, float;&lt;br /&gt;
                                changeimgvis(float,float);&lt;br /&gt;
changeimgzoom float, float;&lt;br /&gt;
                                changeimgzoom(float,float);&lt;br /&gt;
deletestring oldstring, float;&lt;br /&gt;
                                deletestring(string,float);&lt;br /&gt;
destroy;&lt;br /&gt;
                                destroy();&lt;br /&gt;
detachplayer;&lt;br /&gt;
                                detachplayer();&lt;br /&gt;
disabledefmovement;&lt;br /&gt;
                                disabledefmovement();&lt;br /&gt;
disablemap;&lt;br /&gt;
                                disablemap();&lt;br /&gt;
disablepause;&lt;br /&gt;
                                disablepause();&lt;br /&gt;
disableselectweapons;&lt;br /&gt;
                                disableselectweapons();&lt;br /&gt;
disableweapons;&lt;br /&gt;
                                disableweapons();&lt;br /&gt;
dontblock;&lt;br /&gt;
                                dontblock();&lt;br /&gt;
dontblocklocal;&lt;br /&gt;
                                dontblocklocal();&lt;br /&gt;
drawaslight;&lt;br /&gt;
                                drawaslight();&lt;br /&gt;
drawoverplayer;&lt;br /&gt;
                                drawoverplayer();&lt;br /&gt;
drawunderplayer;&lt;br /&gt;
                                drawunderplayer();&lt;br /&gt;
enabledefmovement;&lt;br /&gt;
                                enabledefmovement();&lt;br /&gt;
enablefeatures float;&lt;br /&gt;
                                enablefeatures(float);&lt;br /&gt;
enablemap;&lt;br /&gt;
                                enablemap();&lt;br /&gt;
enablepause;&lt;br /&gt;
                                enablepause();&lt;br /&gt;
enableselectweapons;&lt;br /&gt;
                                enableselectweapons();&lt;br /&gt;
enableweapons;&lt;br /&gt;
                                enableweapons();&lt;br /&gt;
explodebomb float;&lt;br /&gt;
                                explodebomb(float);&lt;br /&gt;
followplayer;&lt;br /&gt;
                                followplayer();&lt;br /&gt;
freezeplayer float;&lt;br /&gt;
                                freezeplayer(float);&lt;br /&gt;
freezeplayer2;&lt;br /&gt;
                                freezeplayer2();&lt;br /&gt;
hide;&lt;br /&gt;
                                hide();&lt;br /&gt;
hideimg float;&lt;br /&gt;
                                hideimg(float);&lt;br /&gt;
hideimgs float, float;&lt;br /&gt;
                                hideimgs(float,float);&lt;br /&gt;
hidelocal;&lt;br /&gt;
                                hidelocal();&lt;br /&gt;
&lt;br /&gt;
hitcompu float, float, float, float;&lt;br /&gt;
                                hitcompu(float,float,float,float);&lt;br /&gt;
hitnpc float, float, float, float;&lt;br /&gt;
                                hitnpc(float,float,float,float);&lt;br /&gt;
hitobjects float, float, float;&lt;br /&gt;
                                hitobjects(float,float,float);&lt;br /&gt;
hideplayer float;&lt;br /&gt;
                                hideplayer(float);&lt;br /&gt;
hidesword float;&lt;br /&gt;
                                hidesword(float);&lt;br /&gt;
hitplayer float, float, float, float;&lt;br /&gt;
                                hitplayer(float,float,float,float);&lt;br /&gt;
hurt float;&lt;br /&gt;
                                hurt(float);&lt;br /&gt;
insertstring oldstring, float, oldstring;&lt;br /&gt;
                                insertstring(string,float,string);&lt;br /&gt;
join oldstring;&lt;br /&gt;
                                join(string);&lt;br /&gt;
lay oldstring;&lt;br /&gt;
                                lay(string);&lt;br /&gt;
lay2 oldstring, float, float;&lt;br /&gt;
                                lay2(string,float,float);&lt;br /&gt;
loadmap oldstring;&lt;br /&gt;
                                loadmap(string);&lt;br /&gt;
message oldstring;&lt;br /&gt;
                                message(string);&lt;br /&gt;
move float, float, float, float;&lt;br /&gt;
                                move(float,float,float,float);&lt;br /&gt;
noplayerkilling;&lt;br /&gt;
                                noplayerkilling();&lt;br /&gt;
openurl oldstring;&lt;br /&gt;
                                openurl(string);&lt;br /&gt;
openurl2 oldstring, float, float;&lt;br /&gt;
                                openurl2(string,float,float);&lt;br /&gt;
play oldstring;&lt;br /&gt;
                                play(string);&lt;br /&gt;
play2 oldstring, float, float, float;&lt;br /&gt;
                                play2(string,float,float,float);&lt;br /&gt;
playlooped oldstring;&lt;br /&gt;
                                playlooped(string);&lt;br /&gt;
putbomb float, float, float;&lt;br /&gt;
                                putbomb(float,float,float);&lt;br /&gt;
putcomp oldstring, float, float;&lt;br /&gt;
                                putcomp(string,float,float);&lt;br /&gt;
putexplosion float, float, float;&lt;br /&gt;
                                putexplosion(float,float,float);&lt;br /&gt;
putexplosion2 float, float, float, float;&lt;br /&gt;
                                putexplosion2(float,float,float,float);&lt;br /&gt;
puthorse oldstring, float, float;&lt;br /&gt;
                                puthorse(string,float,float);&lt;br /&gt;
putleaps float, float, float;&lt;br /&gt;
                                putleaps(float,float,float);&lt;br /&gt;
putnewcomp oldstring, float, float, oldstring, float;&lt;br /&gt;
                                putnewcomp(string,float,float,string,float);&lt;br /&gt;
putnpc oldstring, oldstring, float, float;&lt;br /&gt;
                                putnpc(string,string,float,float);&lt;br /&gt;
putnpc2 float, float, oldstring;&lt;br /&gt;
                                putnpc2(float,float,string);&lt;br /&gt;
reflectarrow float;&lt;br /&gt;
                                reflectarrow(float);&lt;br /&gt;
removearrow float;&lt;br /&gt;
                                removearrow(float);&lt;br /&gt;
removebomb float;&lt;br /&gt;
                                removebomb(float);&lt;br /&gt;
removecompus;&lt;br /&gt;
                                removecompus();&lt;br /&gt;
removeexplo float;&lt;br /&gt;
                                removeexplo(float);&lt;br /&gt;
removehorse float;&lt;br /&gt;
                                removehorse(float);&lt;br /&gt;
rmeoveitem float;&lt;br /&gt;
                                removeitem(float)&lt;br /&gt;
removestring oldstring, oldstring;&lt;br /&gt;
                                removestring(string,string);&lt;br /&gt;
removetiledefs oldstring;&lt;br /&gt;
                                removetiledefs(string);&lt;br /&gt;
replaceani oldstring, oldstring;&lt;br /&gt;
                                replaceani(string,string);&lt;br /&gt;
replacestring oldstring, float, oldstring;&lt;br /&gt;
                                replacestring(string,float,string);&lt;br /&gt;
resetfocus;&lt;br /&gt;
                                resetfocus();&lt;br /&gt;
savelog oldstring;&lt;br /&gt;
                                savelog(string);&lt;br /&gt;
savelog2 oldstring, oldstring;&lt;br /&gt;
                                savelog2(string,string);&lt;br /&gt;
say float;&lt;br /&gt;
                                say(float);&lt;br /&gt;
say2 oldstring;&lt;br /&gt;
                                say2(string);&lt;br /&gt;
sendrpgmessage oldstring;&lt;br /&gt;
                                sendrpgmessage(string);&lt;br /&gt;
sendpm oldstring;&lt;br /&gt;
                                sendpm(string);&lt;br /&gt;
sendtonc oldstring;&lt;br /&gt;
                                sendtonc(string);&lt;br /&gt;
sendtorc oldstring;&lt;br /&gt;
                                sendtorc(string);&lt;br /&gt;
serverwarp oldstring;&lt;br /&gt;
                                serverwarp(string);&lt;br /&gt;
set oldstring;&lt;br /&gt;
                                set(string);&lt;br /&gt;
setani oldstring, oldstring;&lt;br /&gt;
                                setani(string,string);&lt;br /&gt;
setarray float, float;&lt;br /&gt;
                                setarray(var,float);&lt;br /&gt;
setbeltcolor oldstring;&lt;br /&gt;
                                setbeltcolor(string);&lt;br /&gt;
setbow oldstring;&lt;br /&gt;
                                setbow(string);&lt;br /&gt;
setcharani oldstring, oldstring;&lt;br /&gt;
                                setcharani(string,string);&lt;br /&gt;
setchargender oldstring;&lt;br /&gt;
                                setchargender(string);&lt;br /&gt;
setcharprop oldstring, oldstring;&lt;br /&gt;
                                string = string;&lt;br /&gt;
setcoatcolor oldstring;&lt;br /&gt;
                                setcoatcolor(string);&lt;br /&gt;
setcoloreffect float, float, float, float;&lt;br /&gt;
                                setcoloreffect(float,float,float,float);&lt;br /&gt;
setcursor float;&lt;br /&gt;
                                setcursor(float);&lt;br /&gt;
setcurcor2 oldstring;&lt;br /&gt;
                                setcursor2(string);&lt;br /&gt;
seteffect float, float, float, float;&lt;br /&gt;
                                seteffect(float,float,float,float);&lt;br /&gt;
seteffectmode float;&lt;br /&gt;
                                seteffectmode(float);&lt;br /&gt;
setfocus float, float;&lt;br /&gt;
                                setfocus(float,float);&lt;br /&gt;
setgender oldstring;&lt;br /&gt;
                                setgender(string);&lt;br /&gt;
sethead oldstring;&lt;br /&gt;
                                sethead(string);&lt;br /&gt;
setlevel oldstring;&lt;br /&gt;
                                setlevel(string);&lt;br /&gt;
setlevel2 oldstring, float, float;&lt;br /&gt;
                                setlevel2(string,float,float);&lt;br /&gt;
setmap oldstring, oldstring, float, float;&lt;br /&gt;
                                setmap(string,string,float,float);&lt;br /&gt;
setminimap oldstring, oldstring, float, float;&lt;br /&gt;
                                setminimap(string,string,float,float);&lt;br /&gt;
setmusicvolume float, float;&lt;br /&gt;
                                setmusicvolume(float,float);&lt;br /&gt;
setimg oldstring;&lt;br /&gt;
                                setimg(string);&lt;br /&gt;
setimgpart oldstring, float, float, float, float;&lt;br /&gt;
                                setimgpart(string,float,float,float,float);&lt;br /&gt;
setletters oldstring;&lt;br /&gt;
                                setletters(string);&lt;br /&gt;
setplayerdir oldstring;&lt;br /&gt;
                                setplayerdir(string);&lt;br /&gt;
setplayerprop oldstring, oldstring;&lt;br /&gt;
                                string = string;&lt;br /&gt;
setpm oldstring;&lt;br /&gt;
                                setpm(string);&lt;br /&gt;
setshape float, float, float;&lt;br /&gt;
                                setshape(float,float,float);&lt;br /&gt;
setshape2 float, float, float;&lt;br /&gt;
                                setshape2(float,float,float);&lt;br /&gt;
setshield oldstring, float;&lt;br /&gt;
                                setshield(string,float);&lt;br /&gt;
setshoecolor oldstring;&lt;br /&gt;
                                setshoecolor(string);&lt;br /&gt;
setshootparams oldstring;&lt;br /&gt;
                                setshootparams(string);&lt;br /&gt;
setskincolor oldstring;&lt;br /&gt;
                                setskincolor(string);&lt;br /&gt;
setsleevecolor oldstring;&lt;br /&gt;
                                setsleevecolor(string);&lt;br /&gt;
setstring oldstring, oldstring;&lt;br /&gt;
                                setstring(string,string);&lt;br /&gt;
setsword oldstring, float;&lt;br /&gt;
                                setsword(string,float);&lt;br /&gt;
seturllevel oldstring;&lt;br /&gt;
                                seturllevel(string);&lt;br /&gt;
setz float, float, float, float, float, float, float, float;&lt;br /&gt;
                                setz(float,float,float,float,float,float,float,float);&lt;br /&gt;
setzoomeffect float;&lt;br /&gt;
                                setzoomeffect(float);&lt;br /&gt;
shoot float, float, float, float, float, float, oldstring, oldstring;&lt;br /&gt;
                                shoot(float,float,float,float,float,float,string,string);&lt;br /&gt;
shootarrow float;&lt;br /&gt;
                                shootarrow(float);&lt;br /&gt;
shootball;&lt;br /&gt;
                                shootball();&lt;br /&gt;
shootfireball float;&lt;br /&gt;
                                shootfireball(float);&lt;br /&gt;
shootfireblast float;&lt;br /&gt;
                                shootfireblast(float);&lt;br /&gt;
shootnuke float;&lt;br /&gt;
                                shootnuke(float);&lt;br /&gt;
show;&lt;br /&gt;
                                show();&lt;br /&gt;
showani float, float, float, float, oldstring;&lt;br /&gt;
                                showani(float,float,float,float,string);&lt;br /&gt;
showani2 float, float, float, float, float, oldstring;&lt;br /&gt;
                                showani2(float,float,float,float,float,string);&lt;br /&gt;
showcharacter;&lt;br /&gt;
                                showcharacter();&lt;br /&gt;
showfile oldstring;&lt;br /&gt;
                                showfile(string);&lt;br /&gt;
showimg float, oldstring, float, float;&lt;br /&gt;
                                showimg(float,string,float,float);&lt;br /&gt;
showimg2 float, oldstring, float, float, float;&lt;br /&gt;
                                showimg2(float,string,float,float,float);&lt;br /&gt;
showlocal;&lt;br /&gt;
                                showlocal();&lt;br /&gt;
&lt;br /&gt;
showpoly float, float;&lt;br /&gt;
                                showpoly(float,array);&lt;br /&gt;
showpoly2 float, float;&lt;br /&gt;
                                showpoly2(float,array);&lt;br /&gt;
showstats float;&lt;br /&gt;
                                showstats(float);&lt;br /&gt;
showtext float, float, float, oldstring, oldstring, oldstring;&lt;br /&gt;
                                showtext(float,float,float,string,string,string);&lt;br /&gt;
showtext2 float, float, float, float, oldstring, oldstring, oldstring;&lt;br /&gt;
                                showtext2(float,float,float,float,string,string,string);&lt;br /&gt;
sleep float;&lt;br /&gt;
                                sleep(float);&lt;br /&gt;
spyfire float, float;&lt;br /&gt;
                                spyfire(float,float);&lt;br /&gt;
stopmidi;&lt;br /&gt;
                                stopmidi();&lt;br /&gt;
stopsound oldstring;&lt;br /&gt;
                                stopsound(string);&lt;br /&gt;
take oldstring;&lt;br /&gt;
                                take(string);&lt;br /&gt;
take2 float;&lt;br /&gt;
                                take2(float);&lt;br /&gt;
takehorse float;&lt;br /&gt;
                                takehorse(float);&lt;br /&gt;
takeplayercarry;&lt;br /&gt;
                                takeplayercarry();&lt;br /&gt;
takeplayerhorse;&lt;br /&gt;
                                takeplayerhorse();&lt;br /&gt;
throwcarry;&lt;br /&gt;
                                throwcarry();&lt;br /&gt;
timereverywhere;&lt;br /&gt;
                                timereverywhere();&lt;br /&gt;
timershow;&lt;br /&gt;
                                timershow();&lt;br /&gt;
toinventory oldstring;&lt;br /&gt;
                                toinventory(string);&lt;br /&gt;
tokenize oldstring;&lt;br /&gt;
                                tokens = string.tokenize();&lt;br /&gt;
tokenize2 oldstring, oldstring;&lt;br /&gt;
                                tokens = string.tokenize(&amp;quot; ,&amp;quot; @ string);&lt;br /&gt;
toweapons oldstring;&lt;br /&gt;
                                toweapons(string);&lt;br /&gt;
triggeraction float, float, oldstring, oldstring;&lt;br /&gt;
                                triggeraction(float,float,string,string);&lt;br /&gt;
unfreezeplayer;&lt;br /&gt;
                                unfreezeplayer();&lt;br /&gt;
unset oldstring;&lt;br /&gt;
                                unset(string);&lt;br /&gt;
updateboard float, float, float, float;&lt;br /&gt;
                                updateboard(float,float,float,float);&lt;br /&gt;
updateterrain;&lt;br /&gt;
                                updateterrain();&lt;br /&gt;
wraptext float, oldstring, oldstring;&lt;br /&gt;
                                tokens = wraptext(float,&amp;quot; ,&amp;quot; @ string,string);&lt;br /&gt;
wraptext2 float, float, oldstring, oldstring;&lt;br /&gt;
                                tokens = wraptext2(float,float,&amp;quot; ,&amp;quot; @ string,string);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Supported old string operations ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
These old string operators can be used in string parameters&lt;br /&gt;
for the old commands, also you can use them directly as operators, e.g.&lt;br /&gt;
#c = &amp;quot;hello&amp;quot;&lt;br /&gt;
is actually doing&lt;br /&gt;
player.chat = &amp;quot;hello&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#a            player.account&lt;br /&gt;
#a(float)     players[float].account&lt;br /&gt;
#m            player.ani&lt;br /&gt;
              ani&lt;br /&gt;
#m(float)     players[float].ani&lt;br /&gt;
#K(float)     getascii(float)&lt;br /&gt;
#8            player.bodyimg&lt;br /&gt;
              bodyimg&lt;br /&gt;
#8(float)     players[float].bodyimg&lt;br /&gt;
#c            player.chat&lt;br /&gt;
              chat&lt;br /&gt;
#c(float)     players[float].chat&lt;br /&gt;
#C0           player.colors[0]&lt;br /&gt;
              colors[0]&lt;br /&gt;
#C0(float)    players[float].colors[0]&lt;br /&gt;
#C1           player.colors[1]&lt;br /&gt;
              colors[1]&lt;br /&gt;
#C1(float)    players[float].colors[1]&lt;br /&gt;
#C2           player.colors[2]&lt;br /&gt;
              colors[2]&lt;br /&gt;
#C2(float)    players[float].colors[2]&lt;br /&gt;
#C3           player.colors[3]&lt;br /&gt;
              colors[3]&lt;br /&gt;
#C3(float)    players[float].colors[3]&lt;br /&gt;
#C4           player.colors[4]&lt;br /&gt;
              colors[4]&lt;br /&gt;
#C4(float)    players[float].colors[4]&lt;br /&gt;
#C5           player.colors[5]&lt;br /&gt;
              colors[5]&lt;br /&gt;
#C5(float)    players[float].colors[5]&lt;br /&gt;
#D            downloadfile()&lt;br /&gt;
#E            emoticonchar()&lt;br /&gt;
#e(float,float,oldstring)&lt;br /&gt;
              string.substring(float,float)&lt;br /&gt;
#g            player.guild&lt;br /&gt;
              guild&lt;br /&gt;
#g(float)     players[float].guild&lt;br /&gt;
#3            player.headimg&lt;br /&gt;
              headimg&lt;br /&gt;
#3(float)     players[float].headimg&lt;br /&gt;
#5            player.horseimg&lt;br /&gt;
              horseimg&lt;br /&gt;
#5(float)     players[float].horseimg&lt;br /&gt;
#k(float)     keyname(float)&lt;br /&gt;
#L            player.level&lt;br /&gt;
#I(oldstring,float)&lt;br /&gt;
              getstring(string)[float]&lt;br /&gt;
#n            player.nick&lt;br /&gt;
              nick&lt;br /&gt;
#n(float)     players[float].nick&lt;br /&gt;
#f            image&lt;br /&gt;
#f(float)     npcs[float].image&lt;br /&gt;
#F            level&lt;br /&gt;
#p(float)     params[float]&lt;br /&gt;
#P(float)     player.attr[float]&lt;br /&gt;
              attr[float]&lt;br /&gt;
#P(float,float)&lt;br /&gt;
              players[float].attr[float]&lt;br /&gt;
#P1           player.attr[1]&lt;br /&gt;
              attr[1]&lt;br /&gt;
#P1(float)    players[float].attr[1]&lt;br /&gt;
#P2           player.attr[2]&lt;br /&gt;
              attr[2]&lt;br /&gt;
#P2(float)    players[float].attr[2]&lt;br /&gt;
#P3           player.attr[3]&lt;br /&gt;
              attr[3]&lt;br /&gt;
#P3(float)    players[float].attr[3]&lt;br /&gt;
#P4           player.attr[4]&lt;br /&gt;
              attr[4]&lt;br /&gt;
#P4(float)    players[float].attr[4]&lt;br /&gt;
#P5           player.attr[5]&lt;br /&gt;
              attr[5]&lt;br /&gt;
#P5(float)    players[float].attr[5]&lt;br /&gt;
#P6           player.attr[6]&lt;br /&gt;
              attr[6]&lt;br /&gt;
#P6(float)    players[float].attr[6]&lt;br /&gt;
#P7           player.attr[7]&lt;br /&gt;
              attr[7]&lt;br /&gt;
#P7(float)    players[float].attr[7]&lt;br /&gt;
#P8           player.attr[8]&lt;br /&gt;
              attr[8]&lt;br /&gt;
#P8(float)    players[float].attr[8]&lt;br /&gt;
#P9           player.attr[9]&lt;br /&gt;
              attr[9]&lt;br /&gt;
#P9(float)    players[float].attr[9]&lt;br /&gt;
#R(oldstring) string.random()&lt;br /&gt;
#2            player.shieldimg&lt;br /&gt;
              shieldimg&lt;br /&gt;
#2(float)     players[float].shieldimg&lt;br /&gt;
#s(oldstring) getstring(string)&lt;br /&gt;
#1            player.swordimg&lt;br /&gt;
              swordimg&lt;br /&gt;
#1(float)     players[float].swordimg&lt;br /&gt;
#S            player.sword.script&lt;br /&gt;
#t(float)     tokens[float]&lt;br /&gt;
#T(oldstring) string.trim()&lt;br /&gt;
#v(float)     float&lt;br /&gt;
#W            player.weapon.icon&lt;br /&gt;
#W(float)     weapons[float].icon&lt;br /&gt;
#w            player.weapon.script&lt;br /&gt;
#w(float)     weapons[float].script&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Compatibility note:&lt;br /&gt;
When you use the command setcharprop then the first parameter&lt;br /&gt;
is handled differently: instead of changing 'player.chat' it&lt;br /&gt;
is changing 'chat', the chat text of the npc. So 'setcharprop #c,hello'&lt;br /&gt;
would be translated into&lt;br /&gt;
chat = &amp;quot;hello&amp;quot;&lt;br /&gt;
while 'setplayerprop #c,hello' is translated into&lt;br /&gt;
player.chat = &amp;quot;hello&amp;quot;&lt;br /&gt;
In the list above both possibilities are listed.&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Graal_Communication_Center&amp;diff=2175</id>
		<title>Graal Communication Center</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Graal_Communication_Center&amp;diff=2175"/>
		<updated>2005-04-11T03:09:03Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: made more accurate&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Graal Communication Center ''' is the official forum of [[GraalOnline]].&lt;br /&gt;
&lt;br /&gt;
The official name is ''Graal Communication Center (reserved for gold and vip subscribers)'', but only [[Unixmad]] calls it that.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&lt;br /&gt;
The forum is currently divided into [[GCC:Section]]s: the [[GCC:General Section]], [[GCC:Gold Section]], [[GCC:3D Section]], [[GCC:Playerworlds Section]], [[GCC:Development Section]] and [[GCC:Private Section]].&lt;br /&gt;
Each section holds multiple [[GCC:Subforum]]s.&lt;br /&gt;
&lt;br /&gt;
A oversized moderation force with not equally balanced qualification is moderating the Graal Communication Center. Some [[GCC:Moderator]]s moderate one or more individual subforums or a whole forum section. Some subforums are not moderated directly, and more interesting ones are overseen by multiple moderators. [[Spark911]], [[Kamuii]] and [[Moon Goddess]] are still [[GCC:Super moderator]]s, and thus should be fairly moderating the whole Communication Center.&lt;br /&gt;
[[MagicalTux]] from the [[Cyberjoueurs]] offices is also serving as forums administrator.&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
&lt;br /&gt;
[[Gold account|Gold]] and [[VIP account|VIP]] accounts can access the board freely, with no restrictions. Since Christmas of 2004, [[Classic account]]s are also able to use the board, but they are forced to wait eight hours between making consecutive posts.&lt;br /&gt;
&lt;br /&gt;
It is against the [[GCC:Rules]] of the forums to post messages from or for non-members of the forums. This is to prevent [[Account sharing]], which was very common in the forum's past and arguably had a negative influence on the motivation to buy a [[Gold account]].&lt;br /&gt;
&lt;br /&gt;
== Neutrality ==&lt;br /&gt;
&lt;br /&gt;
Unsurprisingly, the forums are very biased towards the [[Graal administration]]. Sadly, the [[Forum administration]] considers it neccessary to enforce this bias with rules that make ''any'' kind of [[GCC:Negativity|criticism]] a [[ban]]worthy action. Thus, it is not possible to discuss [[ban]]s, actions of [[GraalOnline]] considered harmful or unfair, or shortcomings of the adminstration including [[Playerworld staff]] or the [[Gold server]]s.&lt;br /&gt;
&lt;br /&gt;
Luckily, the most conservative moderators seem to have grown increasingly [[Spark911|igno]][[Moon Goddess|rant]] of these issues.&lt;br /&gt;
&lt;br /&gt;
== Curiosities ==&lt;br /&gt;
&lt;br /&gt;
* Two miscreants ([[Zurkiba]] and one as-yet-unnamed member) were [[ban|banned]] by [[Unixmad]] as part of a continuing (and utterly futile) drive to make the forums into a nicer place. More details [[Unixmad_swears_death_and_vengeance_on_inappropriate_words|here]].&lt;br /&gt;
* Apparently, now even [[Moon Goddess suggests that you should stop playing Graal]].&lt;br /&gt;
* [[Falco]] has, after a notoriously bad performance at trying to prove [[Kaimetsu]] wrong, exclaimed that [[People_who_think_that_Falco_is_a_moron|at most five people think that he is a moron]] and that everybody else is well aware of his superior intellect.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://forums.graalonline.com/forums/ The Graal Communication Center]&lt;br /&gt;
* [http://ilfirin.org/graal/forum/forum.pl A locally hosted free alternative forum]&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=User:Hiro&amp;diff=1842</id>
		<title>User:Hiro</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=User:Hiro&amp;diff=1842"/>
		<updated>2005-04-10T01:53:45Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: += {{player}} (before GrowlZ has a breakdown)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Player}}&lt;br /&gt;
&lt;br /&gt;
''Hiro is Graal's most under appreciated'' Sparer and ''Player''-Killer ''in the history of Graal.''&lt;br /&gt;
&lt;br /&gt;
He currently leads the family of Darkrune. He currently is Co-Admin of Doomsday3D. He wishes Tifa wouldn't be so paranoid and give Doomsday to someone who could make it come back up publicly again.&lt;br /&gt;
&lt;br /&gt;
                         Please check the italics for subliminal message(s).&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript&amp;diff=1802</id>
		<title>Creation/Dev/GScript</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript&amp;diff=1802"/>
		<updated>2005-04-01T00:40:05Z</updated>

		<summary type="html">&lt;p&gt;Kaimetsu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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 derived languages, although it lacks some of the expressivity of a real programming language and has special constructs that make programming [[Graal]] [[NPC]]s easier.&lt;br /&gt;
&lt;br /&gt;
GScript started as a very limited language and has since kept up with improvements to the game engine and can now be used for pretty sophisticated scripts that greatly customise the gaming experience.&lt;br /&gt;
&lt;br /&gt;
It is used, with minor differences, for [[Clientside]] tasks like [[GUI | GUI programming]], special effects with nifty 3d lighting and custom [[NPC Weapons]] or &amp;amp;quot;engines&amp;amp;quot;, and [[Serverside]] systems like player housing, complex baddies or pets.&lt;br /&gt;
&lt;br /&gt;
[[Old GScript]] has been replaced by a new version (dubbed GScript2 during development) that is rather advanced, in some way object oriented, and thanks to influence from [[Torque]]'s scripting language, less brain-damaged in some aspects. No offense intended.&lt;br /&gt;
&lt;br /&gt;
GScript can be discussed in the [[GScript IRC channel]].&lt;br /&gt;
&lt;br /&gt;
[[Script Functions: Client]]&lt;br /&gt;
&lt;br /&gt;
[[Script Functions: NPC Server]]&lt;br /&gt;
&lt;br /&gt;
[[Script Functions: Graal 3D]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Why scripts ===&lt;br /&gt;
&lt;br /&gt;
Scripts bring life into objects and make it easy to &lt;br /&gt;
customize the game. Instead of just placing a stone&lt;br /&gt;
into your world, you can make it so that the stone&lt;br /&gt;
can be lifted or kicked. Instead of being limited to&lt;br /&gt;
some fixed player movement you can rescript it&lt;br /&gt;
to let the player jump, strafe and duck. To let the &lt;br /&gt;
player inspect and organize his/her items you can&lt;br /&gt;
create some dialogs and display those by script,&lt;br /&gt;
e.g. when the player presses a special key.&lt;br /&gt;
&lt;br /&gt;
In Graal the scripting is done in 'Graal Script',&lt;br /&gt;
it's looking like Java/C++, but brings some &lt;br /&gt;
additional features for making things easier&lt;br /&gt;
for game creators, while on the other hand&lt;br /&gt;
running in a sandbox and limiting access to&lt;br /&gt;
game-related stuff only.&lt;br /&gt;
&lt;br /&gt;
Graal Script is almost fully compatible to &lt;br /&gt;
the 'old' Graal script used in Graal v1.0 - 3.0,&lt;br /&gt;
and is partially compatible to Torque script. &lt;br /&gt;
&lt;br /&gt;
=== NPCs and 'weapons' ===&lt;br /&gt;
&lt;br /&gt;
There are generally two types of objects in Graal&lt;br /&gt;
which have scripts: The first type are the &lt;br /&gt;
non-player-characters (NPCs). The name 'NPC' is&lt;br /&gt;
actually used for all visible objects in the game: &lt;br /&gt;
monsters, stones, bushes, houses, ships, plants etc.&lt;br /&gt;
Scripts for npcs are most of the time containing&lt;br /&gt;
code for moving the npc or for reacting to &lt;br /&gt;
activities of the player, e.g. giving money to&lt;br /&gt;
the player when he grabs the npc.&lt;br /&gt;
The other type of script-holding objects are the&lt;br /&gt;
'weapons'. Those are items in the inventory of&lt;br /&gt;
the player, not necessary being weapons. Most of&lt;br /&gt;
the time they are actually just scripts which&lt;br /&gt;
control the movement of the player, display weapon&lt;br /&gt;
graphics, or display menus.&lt;br /&gt;
&lt;br /&gt;
So there are objects in the game which have &lt;br /&gt;
their own script, and players which have a set&lt;br /&gt;
of scripts in their invisible backpack.&lt;br /&gt;
&lt;br /&gt;
=== Server-side and client-side ===&lt;br /&gt;
&lt;br /&gt;
Graal is an online game, and there are differences&lt;br /&gt;
to standard scripting in offline games.&lt;br /&gt;
In offline programs you have access to everything,&lt;br /&gt;
anytime. In online games everything is divided&lt;br /&gt;
into two parts: the server-side which controls&lt;br /&gt;
most things in the game, and the client-side which&lt;br /&gt;
displays the game to the player.&lt;br /&gt;
Since the client only displays things, it is not&lt;br /&gt;
possible to cheat by hacking the client. On client-side&lt;br /&gt;
you mainly have code for displaying special effects,&lt;br /&gt;
for displaying the GUI (windows, status bars, item menus),&lt;br /&gt;
playing sound effects and music. Also the player &lt;br /&gt;
movement is done on client-side.&lt;br /&gt;
On the server-side scripts are used to do the more&lt;br /&gt;
secure parts of the game engine are implemented,&lt;br /&gt;
and things that are the same for all players -&lt;br /&gt;
npcs are added, moved, npcs interact with players,&lt;br /&gt;
the stats of the players are calculated, the&lt;br /&gt;
communication between players is handled.&lt;br /&gt;
&lt;br /&gt;
All scripts for npcs and weapons can contain&lt;br /&gt;
server-side code and client-side code. The server-side&lt;br /&gt;
code is executed directly on the server, the&lt;br /&gt;
client-side code is sent to the client when he&lt;br /&gt;
logins and executed separately for each player on&lt;br /&gt;
their own computer. Usually the two parts of the script&lt;br /&gt;
are divided by line that only contains &amp;quot;//#CLIENTSIDE&amp;quot;,&lt;br /&gt;
like this:&lt;br /&gt;
&lt;br /&gt;
// Server-side part which is setting the image&lt;br /&gt;
// of the npc when it is created&lt;br /&gt;
function onCreated() {&lt;br /&gt;
  setimg(&amp;quot;door.png&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//#CLIENTSIDE&lt;br /&gt;
&lt;br /&gt;
// Here follows the client-side part,&lt;br /&gt;
// which plays a sound effect when the player&lt;br /&gt;
// touchs the npc&lt;br /&gt;
function onPlayerTouchsme() {&lt;br /&gt;
  play(&amp;quot;chest.wav&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Events ===&lt;br /&gt;
&lt;br /&gt;
In general scripts are made for reacting to &lt;br /&gt;
events - when the npc is created then the script&lt;br /&gt;
initializes the attributes of the npc,&lt;br /&gt;
when the player says something then the npc is&lt;br /&gt;
moving to the player, when the player grabs the&lt;br /&gt;
npc then the npc is giving the player some money etc.&lt;br /&gt;
So the script is basicly a collection of actions&lt;br /&gt;
that are done when special events are happening.&lt;br /&gt;
Events can e.g. be the &amp;quot;created&amp;quot; event when the npc&lt;br /&gt;
is created, the &amp;quot;playertouchsme&amp;quot; event when the &lt;br /&gt;
player touchs the npc, or the &amp;quot;playerchats&amp;quot; event&lt;br /&gt;
when the player says something. To write code reacts&lt;br /&gt;
to one of those event, you define an event&lt;br /&gt;
function like this:&lt;br /&gt;
&lt;br /&gt;
function onEVENTNAME() {&lt;br /&gt;
  // actions&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
When the event is happening, then Graal executes&lt;br /&gt;
that scripting function and all commands you &lt;br /&gt;
have added there.&lt;br /&gt;
Sometimes the event gives some parameters to the &lt;br /&gt;
event function, then change your function to:&lt;br /&gt;
&lt;br /&gt;
function onEVENTNAME(parameter1, paramater2, ...) {&lt;br /&gt;
  // actions&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
By accessing 'parameter1' etc. (you can name&lt;br /&gt;
them differently) you can react to the event more&lt;br /&gt;
exactly. &lt;br /&gt;
&lt;br /&gt;
Instead of reacting to events, the npcs and&lt;br /&gt;
weapons can also invoke new events. That way &lt;br /&gt;
you can let other npcs doing things. You also&lt;br /&gt;
need that if you want to coninuously doing things -&lt;br /&gt;
use timeout event for that.&lt;br /&gt;
&lt;br /&gt;
function onCreated() {&lt;br /&gt;
  timeout = 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function onTimeout() {&lt;br /&gt;
  // actions&lt;br /&gt;
  timeout = 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
In the onCreated event function the script is&lt;br /&gt;
setting the timer to 1 second. When that second is&lt;br /&gt;
over, then the &amp;quot;timeout&amp;quot; event is invoked on the&lt;br /&gt;
npc and the onTimeout event function is executed.&lt;br /&gt;
Because it is setting the timeout to 1 second&lt;br /&gt;
again, the onTimeout even will occur again after&lt;br /&gt;
one second, and so on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Compatibility note:&lt;br /&gt;
In older Graal scripts you will also find the&lt;br /&gt;
deprecated way of receiving events:&lt;br /&gt;
&lt;br /&gt;
if (EVENTNAME) {&lt;br /&gt;
  // actions&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
That is an if-command outside of any brackets. If&lt;br /&gt;
Graal sees that you use such an if-command, then&lt;br /&gt;
it will execute the whole script so that the actions&lt;br /&gt;
you have written inside the if-command will be&lt;br /&gt;
executed too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basics ==&lt;br /&gt;
&lt;br /&gt;
=== Accessing variables ===&lt;br /&gt;
&lt;br /&gt;
Graal Script variables are 'variant', that means they are objects&lt;br /&gt;
that hold values of different types.&lt;br /&gt;
When you assign a value to the variable then it automatically&lt;br /&gt;
switches to the right type:&lt;br /&gt;
&lt;br /&gt;
Numeric (floating point):&lt;br /&gt;
  var = 1;&lt;br /&gt;
String:&lt;br /&gt;
  var = &amp;quot;hello&amp;quot;;&lt;br /&gt;
Object link:&lt;br /&gt;
  var = player;&lt;br /&gt;
Array (list of objects):&lt;br /&gt;
  var = {1,2,3};&lt;br /&gt;
&lt;br /&gt;
You can check the current type with the&lt;br /&gt;
type()-function - obj.type() returns&lt;br /&gt;
0,1,2,3 for numeric, string, object or array.&lt;br /&gt;
&lt;br /&gt;
=== Operators ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Addition                  a + b&lt;br /&gt;
Substraction              a - b&lt;br /&gt;
Mulitplication            a * b&lt;br /&gt;
Division                  a / b&lt;br /&gt;
Modulus                   a % b&lt;br /&gt;
Power                     a ^ b&lt;br /&gt;
String Concationation     a @ b&lt;br /&gt;
Bool-And                  a &amp;amp;&amp;amp; b&lt;br /&gt;
Bool-Or                   a || b&lt;br /&gt;
Bool-Not                  !a&lt;br /&gt;
Negative                  -a&lt;br /&gt;
Equal                     a == b&lt;br /&gt;
Not-Equal                 a != b&lt;br /&gt;
Less                      a &amp;lt; b&lt;br /&gt;
Greater                   a &amp;gt; b&lt;br /&gt;
Less-Equal                a &amp;lt;= b,  a =&amp;lt; b&lt;br /&gt;
Greater-Equal             a &amp;gt;= b,  a =&amp;gt; b&lt;br /&gt;
In-Range                  a in &amp;lt;b,c&amp;gt;, a in |b,c&amp;gt;, a in &amp;lt;b,c|, a in |b,c|&lt;br /&gt;
In-Array                  a in {b,c,...}, {a,b,...} in {c,d,...}&lt;br /&gt;
Bitwise-Or                a | b&lt;br /&gt;
Bitwise-And               a &amp;amp; b&lt;br /&gt;
Bitwise-Shift left        a &amp;lt;&amp;lt; b&lt;br /&gt;
Bitwise-Shift right       a &amp;gt;&amp;gt; b&lt;br /&gt;
Bitwise-Invert            ~a&lt;br /&gt;
Bitwise-Xor               a xor b (operator ^ already used for power)&lt;br /&gt;
Array-Constructor         {a,b,...}&lt;br /&gt;
Empty Array               new [count]&lt;br /&gt;
Array Member              a[index]&lt;br /&gt;
Function call             a(), a(b,c,...)&lt;br /&gt;
Object Attribute          a.b, a.(b)&lt;br /&gt;
Post Increment            a++&lt;br /&gt;
Post Decrement            a--&lt;br /&gt;
Pre Increment             ++a&lt;br /&gt;
Pre Decrement             --a&lt;br /&gt;
Old String Function       #a&lt;br /&gt;
Conditional               a? b : c&lt;br /&gt;
Assignment                a = b, a := b&lt;br /&gt;
Additive Assignment       a += b&lt;br /&gt;
Substractive Assignment   a -= b&lt;br /&gt;
Multiplicative Assignment a *= b&lt;br /&gt;
Division Assignment       a /= b&lt;br /&gt;
Modulus Assignment        a %= b&lt;br /&gt;
Power Assignment          a ^= b&lt;br /&gt;
Bitwise-Or Assignment     a |= b&lt;br /&gt;
Bitwise-And Assignment    a &amp;amp;= b&lt;br /&gt;
Shift Left Assignment     a &amp;lt;&amp;lt;= b&lt;br /&gt;
Shift Right Assignment    a &amp;gt;&amp;gt;= b&lt;br /&gt;
String Append             a @= b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Standard object functions ===&lt;br /&gt;
&lt;br /&gt;
For a complete list of functions and attributes of objects&lt;br /&gt;
see docu_graalscriptfunctions.txt. The base type of all&lt;br /&gt;
objects is &amp;quot;TGraalVar&amp;quot;. You can also get the latest list by&lt;br /&gt;
calling the executale with &amp;quot;-listscriptfunctions&amp;quot; as &lt;br /&gt;
command-line parameter. &lt;br /&gt;
Here only of the built-in functions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.type()  - gets the type of the var (float 0, string 1, object 2, array 3)&lt;br /&gt;
obj.length() - string length&lt;br /&gt;
obj.trim()&lt;br /&gt;
obj.tokenize([delimiters])&lt;br /&gt;
obj.charat(pos)&lt;br /&gt;
obj.pos(substring)&lt;br /&gt;
obj.starts(string)&lt;br /&gt;
obj.ends(string)&lt;br /&gt;
obj.substring(index[,length])&lt;br /&gt;
obj.size() - array length&lt;br /&gt;
obj.subarray(index[,length])&lt;br /&gt;
obj.addarray(obj2)&lt;br /&gt;
obj.insertarray(index,obj2)&lt;br /&gt;
obj.index(obj2) - position of obj2 in the array&lt;br /&gt;
obj.clear()&lt;br /&gt;
obj.add(obj2)&lt;br /&gt;
obj.delete(index)&lt;br /&gt;
obj.remove(obj2)&lt;br /&gt;
obj.replace(index,obj2)&lt;br /&gt;
obj.insert(index,obj2)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Standard functions ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
format(format,parameters,...) - formats a &amp;quot;%s %d&amp;quot; string, inserts the parameters, and returns a string&lt;br /&gt;
int(a)&lt;br /&gt;
abs(a)&lt;br /&gt;
random(rangestart,rangeend)&lt;br /&gt;
sin(a)&lt;br /&gt;
cos(a)&lt;br /&gt;
arctan(a)&lt;br /&gt;
exp(a)&lt;br /&gt;
log(base,a)&lt;br /&gt;
min(a,b)&lt;br /&gt;
max(a,b)&lt;br /&gt;
getangle(delta x,delta y)&lt;br /&gt;
getdir(delta x,delta y)&lt;br /&gt;
vecx(direction)&lt;br /&gt;
vecy(direction)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Events ==&lt;br /&gt;
&lt;br /&gt;
=== Gui controls ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
onAdd() when added to the parent&lt;br /&gt;
onRemove() when removed from the parent&lt;br /&gt;
onWake() when activated&lt;br /&gt;
onSleep() when deactivated&lt;br /&gt;
onResize(w,h)&lt;br /&gt;
onMove(x,y)&lt;br /&gt;
onMouseEnter(modifier,x,y,clickcount)&lt;br /&gt;
onMouseLeave(modifier,x,y,clickcount)&lt;br /&gt;
onMouseDown(modifier,x,y,clickcount)&lt;br /&gt;
onMouseUp(modifier,x,y,clickcount)&lt;br /&gt;
onMouseDragged(modifier,x,y,clickcount)&lt;br /&gt;
onMouseMove(modifier,x,y,clickcount)&lt;br /&gt;
onRightMouseDown(modifier,x,y,clickcount)&lt;br /&gt;
onRightMouseUp(modifier,x,y,clickcount)&lt;br /&gt;
onRightMouseDragged(modifier,x,y,clickcount)&lt;br /&gt;
onMouseWheelUp(modifier,x,y,clickcount)&lt;br /&gt;
onMouseWheelDown(modifier,x,y,clickcount)&lt;br /&gt;
onKeyDown(keycode,string)&lt;br /&gt;
onKeyUp(keycode,string)&lt;br /&gt;
onKeyRepeat(keycode,string)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== GuiMLTextCtrl: ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
onReflow(w,h) when the text has changed&lt;br /&gt;
onURL(url) when clicked on url&lt;br /&gt;
onSelectTag(tagid) when clicked on an image&lt;br /&gt;
&lt;br /&gt;
Text-Tags:&lt;br /&gt;
The text of multi-line text controls can contain&lt;br /&gt;
a few HTML-tags and Torque-tags, you can use both&lt;br /&gt;
of those tag types to define colors and fonts&lt;br /&gt;
or to include images. Currently following tags&lt;br /&gt;
are available:&lt;br /&gt;
&lt;br /&gt;
HTML:&lt;br /&gt;
&amp;lt;a href=url&amp;gt; text &amp;lt;/a&amp;gt; - when the user clicks on 'text' then &lt;br /&gt;
  a web browser is opened for the specified url&lt;br /&gt;
&amp;lt;br&amp;gt; - line break&lt;br /&gt;
&amp;lt;font face=fontname size=textsize color=colorname or #rrggbb&amp;gt; text &amp;lt;/font&amp;gt;&lt;br /&gt;
  - draws text with a special font, size and color; you only&lt;br /&gt;
  need to define one of those 3 attributes&lt;br /&gt;
&amp;lt;ignorelinebreaks&amp;gt; &amp;lt;/ignorelinebreaks&amp;gt; - go into normal HTML mode where&lt;br /&gt;
  you need to insert &amp;lt;br&amp;gt; to do a linebreak&lt;br /&gt;
&amp;lt;img src=filename id=integer&amp;gt; - an image is displayed, you &lt;br /&gt;
  can also specify a tagid if you want to get onSelectTag-events&lt;br /&gt;
  for this image&lt;br /&gt;
&amp;lt;p align=left/center/right&amp;gt; - sets the align of the following text&lt;br /&gt;
&amp;lt;span style=&amp;quot;width=100; height=100;&amp;quot; id=integer&amp;gt; &amp;lt;/span&amp;gt; - for &lt;br /&gt;
  displaying a subpage, you can also specifiy an id for &lt;br /&gt;
  onSelectTag-events; instead of &amp;lt;span&amp;gt; you can also use &amp;lt;div&amp;gt; tags&lt;br /&gt;
&lt;br /&gt;
Torque:&lt;br /&gt;
&amp;lt;a:url&amp;gt; text &amp;lt;/a&amp;gt; - when the user clicks on 'text' then &lt;br /&gt;
  a web browser is opened for the specified url&lt;br /&gt;
&amp;lt;bitmap:filename&amp;gt; - an image is displayed&lt;br /&gt;
&amp;lt;color:rrggbb&amp;gt; - sets the color of the text (hexadecimal value)&lt;br /&gt;
&amp;lt;lmargin:pixels&amp;gt; - sets the left margin for the text&lt;br /&gt;
&amp;lt;lmargin%:percent&amp;gt; - sets the size of the left margin depending &lt;br /&gt;
  on the width of the whole control&lt;br /&gt;
&amp;lt;linkcolor:rrggbb&amp;gt; - sets the color of links (the &amp;lt;a&amp;gt;-tag)&lt;br /&gt;
&amp;lt;linkcolorhl:rrggbb&amp;gt; - sets the highlighted color, when&lt;br /&gt;
  the user moves the mouse over a link&lt;br /&gt;
&amp;lt;just:left/center/right&amp;gt; - sets the align of the following text&lt;br /&gt;
&amp;lt;rmargin:pixels&amp;gt; - sets the right margin for the text&lt;br /&gt;
&amp;lt;rmargin%:percent&amp;gt; - sets the size of the right margin depending &lt;br /&gt;
  on the width of the whole control&lt;br /&gt;
&amp;lt;sbreak&amp;gt; - line break&lt;br /&gt;
&amp;lt;spush&amp;gt; - switches to a new style (like &amp;lt;font&amp;gt;)&lt;br /&gt;
&amp;lt;spop&amp;gt; - switches back to the last saved style (like &amp;lt;/font&amp;gt;)&lt;br /&gt;
&amp;lt;tab:tab1,tab2,..&amp;gt; - sets the position of where tabulators should&lt;br /&gt;
  be displayed if you have text like 'Apple \t Egg \t Chicken'&lt;br /&gt;
&amp;lt;tag:id&amp;gt; - inserts an invisible tag which can be used&lt;br /&gt;
  for the scrollToTag(id) function (beside image-tags)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== GuiTextEditCtrl: ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
onTabComplete()&lt;br /&gt;
onAction(text) when return key pressed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== GuiTextListCtrl: ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
onSelect(id,text) when row selected&lt;br /&gt;
onDblClick(id) when double-click on row or return key pressed&lt;br /&gt;
onDeleteKey(id) when delete key pressed&lt;br /&gt;
onIconResized(w,h) when setIconSize() called&lt;br /&gt;
onOpenMenu(0,index,text) when an item was right-clicked&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== GuiPopUpMenuCtrl: ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
onSelect(id,text) when menu option choosen&lt;br /&gt;
onCancel() when menu is closed without action&lt;br /&gt;
onOpenMenu(0,index,text) when an item was right-clicked&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== GuiMenuBar: ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
onMenuSelect(menuid,menutext)&lt;br /&gt;
onMenuItemSelect(menuid,menutext,itemid,itemtext)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== GuiTreeViewCtrl: ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
onSelect(id,rightmouse) when row selected&lt;br /&gt;
onUnselect(id) when row de-selected&lt;br /&gt;
onInspect(id) when clicked on the name of an item&lt;br /&gt;
onOpenMenu(0,index,text) when an item was right-clicked&lt;br /&gt;
onContextMenu(&amp;quot;x y&amp;quot;,id) when clicked with right-mouse key on row&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Old script compatibility ==&lt;br /&gt;
&lt;br /&gt;
=== Removed functionality ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
- toinventory&lt;br /&gt;
- followplayer&lt;br /&gt;
- playersays()&lt;br /&gt;
- setbackpal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Supported old scripting commands &amp;amp; their mapping to new script ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
addstring oldstring, oldstring;&lt;br /&gt;
                                addstring(string,string);&lt;br /&gt;
addtiledef oldstring, oldstring, float;&lt;br /&gt;
                                addtiledef(string,string,float);&lt;br /&gt;
addtiledef2 oldstring, oldstring, float, float;&lt;br /&gt;
                                addtiledef2(string,string,float,float);&lt;br /&gt;
attachplayertoobj float, float;&lt;br /&gt;
                                attachplayertoobj(float,float);&lt;br /&gt;
blockagain;&lt;br /&gt;
                                blockagain();&lt;br /&gt;
blockagainlocal;&lt;br /&gt;
                                blockagainlocal();&lt;br /&gt;
callnpc float, oldstring;&lt;br /&gt;
                                callnpc(float,string);&lt;br /&gt;
callweapon float, oldstring;&lt;br /&gt;
                                callweapon(float,string);&lt;br /&gt;
canbecarried;&lt;br /&gt;
                                canbecarried();&lt;br /&gt;
canbepulled;&lt;br /&gt;
                                canbepulled();&lt;br /&gt;
canbepushed;&lt;br /&gt;
                                canbepushed();&lt;br /&gt;
cannotbecarried;&lt;br /&gt;
                                cannotbecarried();&lt;br /&gt;
cannotbepulled;&lt;br /&gt;
                                cannotbepulled();&lt;br /&gt;
cannotbepushed;&lt;br /&gt;
                                cannotbepushed();&lt;br /&gt;
canwarp;&lt;br /&gt;
                                canwarp();&lt;br /&gt;
canwarp2;&lt;br /&gt;
                                canwarp2();&lt;br /&gt;
carryobject oldstring;&lt;br /&gt;
                                carryobject(string);&lt;br /&gt;
changeimgcolors float, float, float, float, float;&lt;br /&gt;
                                changeimgcolors(float,float,float,float,float);&lt;br /&gt;
changeimgmode float, float;&lt;br /&gt;
                                changeimgmode(float,float);&lt;br /&gt;
changeimgpart float, float, float, float, float;&lt;br /&gt;
                                changeimgpart(float,float,float,float,float);&lt;br /&gt;
changeimgvis float, float;&lt;br /&gt;
                                changeimgvis(float,float);&lt;br /&gt;
changeimgzoom float, float;&lt;br /&gt;
                                changeimgzoom(float,float);&lt;br /&gt;
deletestring oldstring, float;&lt;br /&gt;
                                deletestring(string,float);&lt;br /&gt;
destroy;&lt;br /&gt;
                                destroy();&lt;br /&gt;
detachplayer;&lt;br /&gt;
                                detachplayer();&lt;br /&gt;
disabledefmovement;&lt;br /&gt;
                                disabledefmovement();&lt;br /&gt;
disablemap;&lt;br /&gt;
                                disablemap();&lt;br /&gt;
disablepause;&lt;br /&gt;
                                disablepause();&lt;br /&gt;
disableselectweapons;&lt;br /&gt;
                                disableselectweapons();&lt;br /&gt;
disableweapons;&lt;br /&gt;
                                disableweapons();&lt;br /&gt;
dontblock;&lt;br /&gt;
                                dontblock();&lt;br /&gt;
dontblocklocal;&lt;br /&gt;
                                dontblocklocal();&lt;br /&gt;
drawaslight;&lt;br /&gt;
                                drawaslight();&lt;br /&gt;
drawoverplayer;&lt;br /&gt;
                                drawoverplayer();&lt;br /&gt;
drawunderplayer;&lt;br /&gt;
                                drawunderplayer();&lt;br /&gt;
enabledefmovement;&lt;br /&gt;
                                enabledefmovement();&lt;br /&gt;
enablefeatures float;&lt;br /&gt;
                                enablefeatures(float);&lt;br /&gt;
enablemap;&lt;br /&gt;
                                enablemap();&lt;br /&gt;
enablepause;&lt;br /&gt;
                                enablepause();&lt;br /&gt;
enableselectweapons;&lt;br /&gt;
                                enableselectweapons();&lt;br /&gt;
enableweapons;&lt;br /&gt;
                                enableweapons();&lt;br /&gt;
explodebomb float;&lt;br /&gt;
                                explodebomb(float);&lt;br /&gt;
followplayer;&lt;br /&gt;
                                followplayer();&lt;br /&gt;
freezeplayer float;&lt;br /&gt;
                                freezeplayer(float);&lt;br /&gt;
freezeplayer2;&lt;br /&gt;
                                freezeplayer2();&lt;br /&gt;
hide;&lt;br /&gt;
                                hide();&lt;br /&gt;
hideimg float;&lt;br /&gt;
                                hideimg(float);&lt;br /&gt;
hideimgs float, float;&lt;br /&gt;
                                hideimgs(float,float);&lt;br /&gt;
hidelocal;&lt;br /&gt;
                                hidelocal();&lt;br /&gt;
&lt;br /&gt;
hitcompu float, float, float, float;&lt;br /&gt;
                                hitcompu(float,float,float,float);&lt;br /&gt;
hitnpc float, float, float, float;&lt;br /&gt;
                                hitnpc(float,float,float,float);&lt;br /&gt;
hitobjects float, float, float;&lt;br /&gt;
                                hitobjects(float,float,float);&lt;br /&gt;
hideplayer float;&lt;br /&gt;
                                hideplayer(float);&lt;br /&gt;
hidesword float;&lt;br /&gt;
                                hidesword(float);&lt;br /&gt;
hitplayer float, float, float, float;&lt;br /&gt;
                                hitplayer(float,float,float,float);&lt;br /&gt;
hurt float;&lt;br /&gt;
                                hurt(float);&lt;br /&gt;
insertstring oldstring, float, oldstring;&lt;br /&gt;
                                insertstring(string,float,string);&lt;br /&gt;
join oldstring;&lt;br /&gt;
                                join(string);&lt;br /&gt;
lay oldstring;&lt;br /&gt;
                                lay(string);&lt;br /&gt;
lay2 oldstring, float, float;&lt;br /&gt;
                                lay2(string,float,float);&lt;br /&gt;
loadmap oldstring;&lt;br /&gt;
                                loadmap(string);&lt;br /&gt;
message oldstring;&lt;br /&gt;
                                message(string);&lt;br /&gt;
move float, float, float, float;&lt;br /&gt;
                                move(float,float,float,float);&lt;br /&gt;
noplayerkilling;&lt;br /&gt;
                                noplayerkilling();&lt;br /&gt;
openurl oldstring;&lt;br /&gt;
                                openurl(string);&lt;br /&gt;
openurl2 oldstring, float, float;&lt;br /&gt;
                                openurl2(string,float,float);&lt;br /&gt;
play oldstring;&lt;br /&gt;
                                play(string);&lt;br /&gt;
play2 oldstring, float, float, float;&lt;br /&gt;
                                play2(string,float,float,float);&lt;br /&gt;
playlooped oldstring;&lt;br /&gt;
                                playlooped(string);&lt;br /&gt;
putbomb float, float, float;&lt;br /&gt;
                                putbomb(float,float,float);&lt;br /&gt;
putcomp oldstring, float, float;&lt;br /&gt;
                                putcomp(string,float,float);&lt;br /&gt;
putexplosion float, float, float;&lt;br /&gt;
                                putexplosion(float,float,float);&lt;br /&gt;
putexplosion2 float, float, float, float;&lt;br /&gt;
                                putexplosion2(float,float,float,float);&lt;br /&gt;
puthorse oldstring, float, float;&lt;br /&gt;
                                puthorse(string,float,float);&lt;br /&gt;
putleaps float, float, float;&lt;br /&gt;
                                putleaps(float,float,float);&lt;br /&gt;
putnewcomp oldstring, float, float, oldstring, float;&lt;br /&gt;
                                putnewcomp(string,float,float,string,float);&lt;br /&gt;
putnpc oldstring, oldstring, float, float;&lt;br /&gt;
                                putnpc(string,string,float,float);&lt;br /&gt;
putnpc2 float, float, oldstring;&lt;br /&gt;
                                putnpc2(float,float,string);&lt;br /&gt;
reflectarrow float;&lt;br /&gt;
                                reflectarrow(float);&lt;br /&gt;
removearrow float;&lt;br /&gt;
                                removearrow(float);&lt;br /&gt;
removebomb float;&lt;br /&gt;
                                removebomb(float);&lt;br /&gt;
removecompus;&lt;br /&gt;
                                removecompus();&lt;br /&gt;
removeexplo float;&lt;br /&gt;
                                removeexplo(float);&lt;br /&gt;
removehorse float;&lt;br /&gt;
                                removehorse(float);&lt;br /&gt;
rmeoveitem float;&lt;br /&gt;
                                removeitem(float)&lt;br /&gt;
removestring oldstring, oldstring;&lt;br /&gt;
                                removestring(string,string);&lt;br /&gt;
removetiledefs oldstring;&lt;br /&gt;
                                removetiledefs(string);&lt;br /&gt;
replaceani oldstring, oldstring;&lt;br /&gt;
                                replaceani(string,string);&lt;br /&gt;
replacestring oldstring, float, oldstring;&lt;br /&gt;
                                replacestring(string,float,string);&lt;br /&gt;
resetfocus;&lt;br /&gt;
                                resetfocus();&lt;br /&gt;
savelog oldstring;&lt;br /&gt;
                                savelog(string);&lt;br /&gt;
savelog2 oldstring, oldstring;&lt;br /&gt;
                                savelog2(string,string);&lt;br /&gt;
say float;&lt;br /&gt;
                                say(float);&lt;br /&gt;
say2 oldstring;&lt;br /&gt;
                                say2(string);&lt;br /&gt;
sendrpgmessage oldstring;&lt;br /&gt;
                                sendrpgmessage(string);&lt;br /&gt;
sendpm oldstring;&lt;br /&gt;
                                sendpm(string);&lt;br /&gt;
sendtonc oldstring;&lt;br /&gt;
                                sendtonc(string);&lt;br /&gt;
sendtorc oldstring;&lt;br /&gt;
                                sendtorc(string);&lt;br /&gt;
serverwarp oldstring;&lt;br /&gt;
                                serverwarp(string);&lt;br /&gt;
set oldstring;&lt;br /&gt;
                                set(string);&lt;br /&gt;
setani oldstring, oldstring;&lt;br /&gt;
                                setani(string,string);&lt;br /&gt;
setarray float, float;&lt;br /&gt;
                                setarray(var,float);&lt;br /&gt;
setbeltcolor oldstring;&lt;br /&gt;
                                setbeltcolor(string);&lt;br /&gt;
setbow oldstring;&lt;br /&gt;
                                setbow(string);&lt;br /&gt;
setcharani oldstring, oldstring;&lt;br /&gt;
                                setcharani(string,string);&lt;br /&gt;
setchargender oldstring;&lt;br /&gt;
                                setchargender(string);&lt;br /&gt;
setcharprop oldstring, oldstring;&lt;br /&gt;
                                string = string;&lt;br /&gt;
setcoatcolor oldstring;&lt;br /&gt;
                                setcoatcolor(string);&lt;br /&gt;
setcoloreffect float, float, float, float;&lt;br /&gt;
                                setcoloreffect(float,float,float,float);&lt;br /&gt;
setcursor float;&lt;br /&gt;
                                setcursor(float);&lt;br /&gt;
setcurcor2 oldstring;&lt;br /&gt;
                                setcursor2(string);&lt;br /&gt;
seteffect float, float, float, float;&lt;br /&gt;
                                seteffect(float,float,float,float);&lt;br /&gt;
seteffectmode float;&lt;br /&gt;
                                seteffectmode(float);&lt;br /&gt;
setfocus float, float;&lt;br /&gt;
                                setfocus(float,float);&lt;br /&gt;
setgender oldstring;&lt;br /&gt;
                                setgender(string);&lt;br /&gt;
sethead oldstring;&lt;br /&gt;
                                sethead(string);&lt;br /&gt;
setlevel oldstring;&lt;br /&gt;
                                setlevel(string);&lt;br /&gt;
setlevel2 oldstring, float, float;&lt;br /&gt;
                                setlevel2(string,float,float);&lt;br /&gt;
setmap oldstring, oldstring, float, float;&lt;br /&gt;
                                setmap(string,string,float,float);&lt;br /&gt;
setminimap oldstring, oldstring, float, float;&lt;br /&gt;
                                setminimap(string,string,float,float);&lt;br /&gt;
setmusicvolume float, float;&lt;br /&gt;
                                setmusicvolume(float,float);&lt;br /&gt;
setimg oldstring;&lt;br /&gt;
                                setimg(string);&lt;br /&gt;
setimgpart oldstring, float, float, float, float;&lt;br /&gt;
                                setimgpart(string,float,float,float,float);&lt;br /&gt;
setletters oldstring;&lt;br /&gt;
                                setletters(string);&lt;br /&gt;
setplayerdir oldstring;&lt;br /&gt;
                                setplayerdir(string);&lt;br /&gt;
setplayerprop oldstring, oldstring;&lt;br /&gt;
                                string = string;&lt;br /&gt;
setpm oldstring;&lt;br /&gt;
                                setpm(string);&lt;br /&gt;
setshape float, float, float;&lt;br /&gt;
                                setshape(float,float,float);&lt;br /&gt;
setshape2 float, float, float;&lt;br /&gt;
                                setshape2(float,float,float);&lt;br /&gt;
setshield oldstring, float;&lt;br /&gt;
                                setshield(string,float);&lt;br /&gt;
setshoecolor oldstring;&lt;br /&gt;
                                setshoecolor(string);&lt;br /&gt;
setshootparams oldstring;&lt;br /&gt;
                                setshootparams(string);&lt;br /&gt;
setskincolor oldstring;&lt;br /&gt;
                                setskincolor(string);&lt;br /&gt;
setsleevecolor oldstring;&lt;br /&gt;
                                setsleevecolor(string);&lt;br /&gt;
setstring oldstring, oldstring;&lt;br /&gt;
                                setstring(string,string);&lt;br /&gt;
setsword oldstring, float;&lt;br /&gt;
                                setsword(string,float);&lt;br /&gt;
seturllevel oldstring;&lt;br /&gt;
                                seturllevel(string);&lt;br /&gt;
setz float, float, float, float, float, float, float, float;&lt;br /&gt;
                                setz(float,float,float,float,float,float,float,float);&lt;br /&gt;
setzoomeffect float;&lt;br /&gt;
                                setzoomeffect(float);&lt;br /&gt;
shoot float, float, float, float, float, float, oldstring, oldstring;&lt;br /&gt;
                                shoot(float,float,float,float,float,float,string,string);&lt;br /&gt;
shootarrow float;&lt;br /&gt;
                                shootarrow(float);&lt;br /&gt;
shootball;&lt;br /&gt;
                                shootball();&lt;br /&gt;
shootfireball float;&lt;br /&gt;
                                shootfireball(float);&lt;br /&gt;
shootfireblast float;&lt;br /&gt;
                                shootfireblast(float);&lt;br /&gt;
shootnuke float;&lt;br /&gt;
                                shootnuke(float);&lt;br /&gt;
show;&lt;br /&gt;
                                show();&lt;br /&gt;
showani float, float, float, float, oldstring;&lt;br /&gt;
                                showani(float,float,float,float,string);&lt;br /&gt;
showani2 float, float, float, float, float, oldstring;&lt;br /&gt;
                                showani2(float,float,float,float,float,string);&lt;br /&gt;
showcharacter;&lt;br /&gt;
                                showcharacter();&lt;br /&gt;
showfile oldstring;&lt;br /&gt;
                                showfile(string);&lt;br /&gt;
showimg float, oldstring, float, float;&lt;br /&gt;
                                showimg(float,string,float,float);&lt;br /&gt;
showimg2 float, oldstring, float, float, float;&lt;br /&gt;
                                showimg2(float,string,float,float,float);&lt;br /&gt;
showlocal;&lt;br /&gt;
                                showlocal();&lt;br /&gt;
&lt;br /&gt;
showpoly float, float;&lt;br /&gt;
                                showpoly(float,array);&lt;br /&gt;
showpoly2 float, float;&lt;br /&gt;
                                showpoly2(float,array);&lt;br /&gt;
showstats float;&lt;br /&gt;
                                showstats(float);&lt;br /&gt;
showtext float, float, float, oldstring, oldstring, oldstring;&lt;br /&gt;
                                showtext(float,float,float,string,string,string);&lt;br /&gt;
showtext2 float, float, float, float, oldstring, oldstring, oldstring;&lt;br /&gt;
                                showtext2(float,float,float,float,string,string,string);&lt;br /&gt;
sleep float;&lt;br /&gt;
                                sleep(float);&lt;br /&gt;
spyfire float, float;&lt;br /&gt;
                                spyfire(float,float);&lt;br /&gt;
stopmidi;&lt;br /&gt;
                                stopmidi();&lt;br /&gt;
stopsound oldstring;&lt;br /&gt;
                                stopsound(string);&lt;br /&gt;
take oldstring;&lt;br /&gt;
                                take(string);&lt;br /&gt;
take2 float;&lt;br /&gt;
                                take2(float);&lt;br /&gt;
takehorse float;&lt;br /&gt;
                                takehorse(float);&lt;br /&gt;
takeplayercarry;&lt;br /&gt;
                                takeplayercarry();&lt;br /&gt;
takeplayerhorse;&lt;br /&gt;
                                takeplayerhorse();&lt;br /&gt;
throwcarry;&lt;br /&gt;
                                throwcarry();&lt;br /&gt;
timereverywhere;&lt;br /&gt;
                                timereverywhere();&lt;br /&gt;
timershow;&lt;br /&gt;
                                timershow();&lt;br /&gt;
toinventory oldstring;&lt;br /&gt;
                                toinventory(string);&lt;br /&gt;
tokenize oldstring;&lt;br /&gt;
                                tokens = string.tokenize();&lt;br /&gt;
tokenize2 oldstring, oldstring;&lt;br /&gt;
                                tokens = string.tokenize(&amp;quot; ,&amp;quot; @ string);&lt;br /&gt;
toweapons oldstring;&lt;br /&gt;
                                toweapons(string);&lt;br /&gt;
triggeraction float, float, oldstring, oldstring;&lt;br /&gt;
                                triggeraction(float,float,string,string);&lt;br /&gt;
unfreezeplayer;&lt;br /&gt;
                                unfreezeplayer();&lt;br /&gt;
unset oldstring;&lt;br /&gt;
                                unset(string);&lt;br /&gt;
updateboard float, float, float, float;&lt;br /&gt;
                                updateboard(float,float,float,float);&lt;br /&gt;
updateterrain;&lt;br /&gt;
                                updateterrain();&lt;br /&gt;
wraptext float, oldstring, oldstring;&lt;br /&gt;
                                tokens = wraptext(float,&amp;quot; ,&amp;quot; @ string,string);&lt;br /&gt;
wraptext2 float, float, oldstring, oldstring;&lt;br /&gt;
                                tokens = wraptext2(float,float,&amp;quot; ,&amp;quot; @ string,string);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Supported old scripting functions &amp;amp; their mapping to new script ===&lt;br /&gt;
=== Supported old string operations ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
These old string operators can be used in string parameters&lt;br /&gt;
for the old commands, also you can use them directly as operators, e.g.&lt;br /&gt;
#c = &amp;quot;hello&amp;quot;&lt;br /&gt;
is actually doing&lt;br /&gt;
player.chat = &amp;quot;hello&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#a            player.account&lt;br /&gt;
#a(float)     players[float].account&lt;br /&gt;
#m            player.ani&lt;br /&gt;
              ani&lt;br /&gt;
#m(float)     players[float].ani&lt;br /&gt;
#K(float)     getascii(float)&lt;br /&gt;
#8            player.bodyimg&lt;br /&gt;
              bodyimg&lt;br /&gt;
#8(float)     players[float].bodyimg&lt;br /&gt;
#c            player.chat&lt;br /&gt;
              chat&lt;br /&gt;
#c(float)     players[float].chat&lt;br /&gt;
#C0           player.colors[0]&lt;br /&gt;
              colors[0]&lt;br /&gt;
#C0(float)    players[float].colors[0]&lt;br /&gt;
#C1           player.colors[1]&lt;br /&gt;
              colors[1]&lt;br /&gt;
#C1(float)    players[float].colors[1]&lt;br /&gt;
#C2           player.colors[2]&lt;br /&gt;
              colors[2]&lt;br /&gt;
#C2(float)    players[float].colors[2]&lt;br /&gt;
#C3           player.colors[3]&lt;br /&gt;
              colors[3]&lt;br /&gt;
#C3(float)    players[float].colors[3]&lt;br /&gt;
#C4           player.colors[4]&lt;br /&gt;
              colors[4]&lt;br /&gt;
#C4(float)    players[float].colors[4]&lt;br /&gt;
#C5           player.colors[5]&lt;br /&gt;
              colors[5]&lt;br /&gt;
#C5(float)    players[float].colors[5]&lt;br /&gt;
#D            downloadfile()&lt;br /&gt;
#E            emoticonchar()&lt;br /&gt;
#e(float,float,oldstring)&lt;br /&gt;
              string.substring(float,float)&lt;br /&gt;
#g            player.guild&lt;br /&gt;
              guild&lt;br /&gt;
#g(float)     players[float].guild&lt;br /&gt;
#3            player.headimg&lt;br /&gt;
              headimg&lt;br /&gt;
#3(float)     players[float].headimg&lt;br /&gt;
#5            player.horseimg&lt;br /&gt;
              horseimg&lt;br /&gt;
#5(float)     players[float].horseimg&lt;br /&gt;
#k(float)     keyname(float)&lt;br /&gt;
#L            player.level&lt;br /&gt;
#I(oldstring,float)&lt;br /&gt;
              getstring(string)[float]&lt;br /&gt;
#n            player.nick&lt;br /&gt;
              nick&lt;br /&gt;
#n(float)     players[float].nick&lt;br /&gt;
#f            image&lt;br /&gt;
#f(float)     npcs[float].image&lt;br /&gt;
#F            level&lt;br /&gt;
#p(float)     params[float]&lt;br /&gt;
#P(float)     player.attr[float]&lt;br /&gt;
              attr[float]&lt;br /&gt;
#P(float,float)&lt;br /&gt;
              players[float].attr[float]&lt;br /&gt;
#P1           player.attr[1]&lt;br /&gt;
              attr[1]&lt;br /&gt;
#P1(float)    players[float].attr[1]&lt;br /&gt;
#P2           player.attr[2]&lt;br /&gt;
              attr[2]&lt;br /&gt;
#P2(float)    players[float].attr[2]&lt;br /&gt;
#P3           player.attr[3]&lt;br /&gt;
              attr[3]&lt;br /&gt;
#P3(float)    players[float].attr[3]&lt;br /&gt;
#P4           player.attr[4]&lt;br /&gt;
              attr[4]&lt;br /&gt;
#P4(float)    players[float].attr[4]&lt;br /&gt;
#P5           player.attr[5]&lt;br /&gt;
              attr[5]&lt;br /&gt;
#P5(float)    players[float].attr[5]&lt;br /&gt;
#P6           player.attr[6]&lt;br /&gt;
              attr[6]&lt;br /&gt;
#P6(float)    players[float].attr[6]&lt;br /&gt;
#P7           player.attr[7]&lt;br /&gt;
              attr[7]&lt;br /&gt;
#P7(float)    players[float].attr[7]&lt;br /&gt;
#P8           player.attr[8]&lt;br /&gt;
              attr[8]&lt;br /&gt;
#P8(float)    players[float].attr[8]&lt;br /&gt;
#P9           player.attr[9]&lt;br /&gt;
              attr[9]&lt;br /&gt;
#P9(float)    players[float].attr[9]&lt;br /&gt;
#R(oldstring) string.random()&lt;br /&gt;
#2            player.shieldimg&lt;br /&gt;
              shieldimg&lt;br /&gt;
#2(float)     players[float].shieldimg&lt;br /&gt;
#s(oldstring) getstring(string)&lt;br /&gt;
#1            player.swordimg&lt;br /&gt;
              swordimg&lt;br /&gt;
#1(float)     players[float].swordimg&lt;br /&gt;
#S            player.sword.script&lt;br /&gt;
#t(float)     tokens[float]&lt;br /&gt;
#T(oldstring) string.trim()&lt;br /&gt;
#v(float)     float&lt;br /&gt;
#W            player.weapon.icon&lt;br /&gt;
#W(float)     weapons[float].icon&lt;br /&gt;
#w            player.weapon.script&lt;br /&gt;
#w(float)     weapons[float].script&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Compatibility note:&lt;br /&gt;
When you use the command setcharprop then the first parameter&lt;br /&gt;
is handled differently: instead of changing 'player.chat' it&lt;br /&gt;
is changing 'chat', the chat text of the npc. So 'setcharprop #c,hello'&lt;br /&gt;
would be translated into&lt;br /&gt;
chat = &amp;quot;hello&amp;quot;&lt;br /&gt;
while 'setplayerprop #c,hello' is translated into&lt;br /&gt;
player.chat = &amp;quot;hello&amp;quot;&lt;br /&gt;
In the list above both possibilities are listed.&lt;/div&gt;</summary>
		<author><name>Kaimetsu</name></author>
	</entry>
</feed>