<?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=Stefan</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=Stefan"/>
	<link rel="alternate" type="text/html" href="https://graalonline.net/Special:Contributions/Stefan"/>
	<updated>2026-04-06T09:51:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>https://graalonline.net/index.php?title=User:Stephane&amp;diff=19885</id>
		<title>User:Stephane</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=User:Stephane&amp;diff=19885"/>
		<updated>2014-02-22T03:22:58Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Users]][[Category:Administration]][[Category:Global Staff]]&lt;br /&gt;
{{player}}&lt;br /&gt;
'''Stephane Portha''' is the manager of [[Graal|GraalOnline]]. He manages the company hosting GraalOnline servers and making Graal software development, and is the Graal's highest-ranked staff, along with [[User:Stefan|Stefan]].&lt;br /&gt;
&lt;br /&gt;
==Staff Positions==&lt;br /&gt;
Whilst Stefan leads Graal development and programming efforts, Stephane manages networking, staff and public relations. Stephane Portha also made the music of GraalOnline Classic.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[[http://www.portha.com Homepage]]&lt;br /&gt;
&lt;br /&gt;
[[http://google.com/+StephanePortha Stephane Portha Google+ page]]&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
Stephane is very rarely found on [[Graal]] servers. The best way to contact him is through the [[Support Center]] or a [[GCC:PM]]&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Worlds/Era&amp;diff=19876</id>
		<title>Worlds/Era</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Worlds/Era&amp;diff=19876"/>
		<updated>2013-12-10T11:24:52Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Worlds]][[Category:Era]]&lt;br /&gt;
{{playerworld}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Login1.PNG|right]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Era is a notably popular [[GraalOnline|Graal]] [[Playerworld]]. It is based in a time period ahead of most current worlds by using a modern style and [[Tileset|tileset]].&lt;br /&gt;
&lt;br /&gt;
=Wiki=&lt;br /&gt;
Here's the link for the official Era Wiki (Guides, Weapon list and more inside!)&lt;br /&gt;
[http://era-wiki.wikidot.com/ Era's Wiki]&lt;br /&gt;
&lt;br /&gt;
==Current Staff==&lt;br /&gt;
For an updated list of staff, please see the in-game news interface.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
Era has been released as a Classic playerworld in 2002.&lt;br /&gt;
&lt;br /&gt;
The idea for Era was originally coined by [[User:Delph|Delph]] back in 2001. It was to create a World with a high level of interactiveness where players would work together to progress not only themselves, but to help shape the World around them, progressing from the early prehistoric days, all the way into the future.&lt;br /&gt;
&lt;br /&gt;
He enlisted the help of a close friend, [[User:Angel|Angel]], with whom he had worked together with on a number of other popular servers, to help refine the idea and eventually get a server set up where they could begin work.&lt;br /&gt;
&lt;br /&gt;
There were a number of issues in the planning stage about how exactly such a World could be created, and they eventually settled on the idea of having three main eras of which players could progress to, or could choose to begin at from the start. These eras were the prehistoric age filled with large amounts of shrubbery, caves and dinosaurs; the present era with modern cities, jobs and cars; and the future with interplanetary travel, space ships and more.&lt;br /&gt;
&lt;br /&gt;
It was decided to begin with the present era as it was in the middle and would also bring something new to the world of Graal.&lt;br /&gt;
&lt;br /&gt;
Just as Era was beginning, [[User:Chrisz|Chrisz]] was brought on board to help with the scripting.&lt;br /&gt;
&lt;br /&gt;
The number one goal at the forefront of development was to make as much as possible interactive. Such as trees being able to be chopped down, or new ones grown, flowers able to be picked, furniture moved and even the trash on the ground able to be picked up. Some of these did get developed and can still be found in-game.&lt;br /&gt;
&lt;br /&gt;
A few months in to development saw Chrisz introduce the first gun on Era. Delph was highly opposed to such things at such an early stage in the server's development as having such items would detract from the peaceful nature he foresaw Era having, at least until means of enforcement were introduced to combat illegal use.&lt;br /&gt;
&lt;br /&gt;
Shortly after the first gun found its way on to the server, Era was made public without the knowledge of Delph and it saw explosive growth as it was a new server with a totally different theme to traditional Graal. But these numbers wouldn't be consistent for a server that didn't have much for the players to do yet. It was still far from finished and after much protest from Delph, the server was made private again to continue development.&lt;br /&gt;
&lt;br /&gt;
As hard as Delph tried to keep a hold on the creation of guns in favour of other more important aspects of the original vision, more, and more were created and Delph began to feel that he had lost the battle. Once the server was made public again, it was clear to him that there was no way of getting the server back on track and decided to take his leave once he finished developing the mining system.&lt;br /&gt;
&lt;br /&gt;
Down the road Era had gained one of the highest playercounts on [[GraalOnline|Graal]]. The then-current manager, Chrisz, quit and the server was given to Jenn. Jenn attempted to revamp the server, introducing features such as the famous flowers, but the playercount of Era gradually declined.&lt;br /&gt;
&lt;br /&gt;
[[User:Rick|Rick]] was then given the server and he worked for almost half a year together with [[User:Stefan|Stefan]] to fix the server up and it was released in October of 2005. The PC server is still based on the scripts and systems introduced with that release, including custom movement (adapted from Zone), businesses and parties.&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Talk:Worlds/Era&amp;diff=19875</id>
		<title>Talk:Worlds/Era</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Talk:Worlds/Era&amp;diff=19875"/>
		<updated>2013-11-29T08:16:27Z</updated>

		<summary type="html">&lt;p&gt;Stefan: Created page with 'The server was going online in 2002, see the forum posts: http://forums.graalonline.com/forums/showthread.php?t=37613'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The server was going online in 2002, see the forum posts: http://forums.graalonline.com/forums/showthread.php?t=37613&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Worlds/Era&amp;diff=19874</id>
		<title>Worlds/Era</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Worlds/Era&amp;diff=19874"/>
		<updated>2013-11-29T08:15:36Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* History */ Fixed the year of creation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Worlds]][[Category:Era]]&lt;br /&gt;
{{playerworld}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Login1.PNG|right]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Era is a notably popular [[GraalOnline|Graal]] [[Playerworld]]. It is based in a time period ahead of most current worlds by using a modern style and [[Tileset|tileset]].&lt;br /&gt;
&lt;br /&gt;
=Wiki=&lt;br /&gt;
Here's the link for the official Era Wiki (Guides, Weapon list and more inside!)&lt;br /&gt;
[http://era-wiki.wikidot.com/ Era's Wiki]&lt;br /&gt;
&lt;br /&gt;
==Current Staff==&lt;br /&gt;
For an updated list of staff, please see the in-game news interface.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
Era has been released as a Classic playerworld in 2002.&lt;br /&gt;
&lt;br /&gt;
The idea for Era was originally coined by [[User:Delph|Delph]] back in 2001. It was to create a World with a high level of interactiveness where players would work together to progress not only themselves, but to help shape the World around them, progressing from the early prehistoric days, all the way into the future.&lt;br /&gt;
&lt;br /&gt;
He enlisted the help of a close friend, [[User:Angel|Angel]], with whom he had worked together with on a number of other popular servers, to help refine the idea and eventually get a server set up where they could begin work.&lt;br /&gt;
&lt;br /&gt;
There were a number of issues in the planning stage about how exactly such a World could be created, and they eventually settled on the idea of having three main eras of which players could progress to, or could choose to begin at from the start. These eras were the prehistoric age filled with large amounts of shrubbery, caves and dinosaurs; the present era with modern cities, jobs and cars; and the future with interplanetary travel, space ships and more.&lt;br /&gt;
&lt;br /&gt;
It was decided to begin with the present era as it was in the middle and would also bring something new to the world of Graal.&lt;br /&gt;
&lt;br /&gt;
Just as Era was beginning, [[User:Chrisz|Chrisz]] was brought on board to help with the scripting.&lt;br /&gt;
&lt;br /&gt;
The number one goal at the forefront of development was to make as much as possible interactive. Such as trees being able to be chopped down, or new ones grown, flowers able to be picked, furniture moved and even the trash on the ground able to be picked up. Some of these did get developed and can still be found in-game.&lt;br /&gt;
&lt;br /&gt;
A few months in to development saw Chrisz introduce the first gun on Era. Delph was highly opposed to such things at such an early stage in the server's development as having such items would detract from the peaceful nature he foresaw Era having, at least until means of enforcement were introduced to combat illegal use.&lt;br /&gt;
&lt;br /&gt;
Shortly after the first gun found its way on to the server, Era was made public without the knowledge of Delph and it saw explosive growth as it was a new server with a totally different theme to traditional Graal. But these numbers wouldn't be consistent for a server that didn't have much for the players to do yet. It was still far from finished and after much protest from Delph, the server was made private again to continue development.&lt;br /&gt;
&lt;br /&gt;
As hard as Delph tried to keep a hold on the creation of guns in favour of other more important aspects of the original vision, more, and more were created and Delph began to feel that he had lost the battle. Once the server was made public again, it was clear to him that there was no way of getting the server back on track and decided to take his leave once he finished developing the mining system.&lt;br /&gt;
&lt;br /&gt;
Down the road Era had gained one of the highest playercounts on [[GraalOnline|Graal]]. The then-current manager, Chrisz, quit and the server was given to Jenn. Jenn attempted to revamp the server, but the playercount of Era gradually declined.&lt;br /&gt;
&lt;br /&gt;
Era was then given [[User:xAndrewx|Andrew]] and the server was starting to get better. Andrew then gave the server to [[User:Velox_Cruentus|Velox]]. Velox's attempts to revamp again decreased the playercount, and Era was passed on to [[User:Rick|Rick]].&lt;br /&gt;
&lt;br /&gt;
Rick was then given the server and he worked for almost half a year to fix the server up and it was released in October of 2005, but it was met with dislike from the players because they felt it lacked much that Era had originally had.&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=User:Stephane&amp;diff=19839</id>
		<title>User:Stephane</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=User:Stephane&amp;diff=19839"/>
		<updated>2013-08-08T19:01:19Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Staff Positions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Users]][[Category:Administration]][[Category:Global Staff]]&lt;br /&gt;
{{player}}&lt;br /&gt;
'''Stephane Portha''' is the manager of [[Graal|GraalOnline]]. He manages the company hosting GraalOnline servers and making Graal software development, and is the Graal's highest-ranked staff, along with [[User:Stefan|Stefan]].&lt;br /&gt;
&lt;br /&gt;
==Staff Positions==&lt;br /&gt;
Whilst Stefan leads Graal development and programming efforts, Stephane manages networking, staff and public relations. Stephane Portha also made the music of GraalOnline Classic.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[[http://www.portha.com Homepage]]&lt;br /&gt;
&lt;br /&gt;
[[https://plus.google.com/117399113622820509743 Google+ page]]&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
Stephane is very rarely found on [[Graal]] servers. The best way to contact him is through the [[Support Center]] or a [[GCC:PM]]&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=User:Stephane&amp;diff=19810</id>
		<title>User:Stephane</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=User:Stephane&amp;diff=19810"/>
		<updated>2013-07-14T20:10:32Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Users]][[Category:Administration]][[Category:Global Staff]]&lt;br /&gt;
{{player}}&lt;br /&gt;
'''Stephane Portha''' is the manager of [[Graal|GraalOnline]]. He manages the company hosting GraalOnline servers and making Graal software development, and is the Graal's highest-ranked staff, along with [[User:Stefan|Stefan]].&lt;br /&gt;
&lt;br /&gt;
==Staff Positions==&lt;br /&gt;
Whilst Stefan leads Graal development and programming efforts, Stephane manages networking, staff and public relations.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[[http://www.portha.com Homepage]]&lt;br /&gt;
&lt;br /&gt;
[[https://plus.google.com/117399113622820509743 Google+ page]]&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
Stephane is very rarely found on [[Graal]] servers. The best way to contact him is through the [[Support Center]] or a [[GCC:PM]]&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19800</id>
		<title>Creation/Dev/GScript3</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19800"/>
		<updated>2013-06-16T11:33:45Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Enable GS3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripting Reference]]&lt;br /&gt;
'''GScript3''' (also known as GS3 or GraalScript3) is the latest version of the [[Creation/Dev/GScript|Graal's scripting language]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It introduces new syntax and semantic elements, and enable new features in Web browsers.&lt;br /&gt;
&lt;br /&gt;
==Quick Help for Server Staff==&lt;br /&gt;
===Enable GS3===&lt;br /&gt;
To use GS3 you need to restart the npcserver and add the server option enablegs3=true. At the start of your script add the line&lt;br /&gt;
  //#GS3&lt;br /&gt;
&lt;br /&gt;
''Warning:'' it is work-in-progress right now, we are working on improving compatibility and adding capabilities.&lt;br /&gt;
&lt;br /&gt;
===Conversion Tool===&lt;br /&gt;
To convert scripts from GS2 to GS3 you can use the online tool at http://graalscript3.graalonline.com/&lt;br /&gt;
It can help to convert scripts and also to check for correct syntax, although things like join will not work.&lt;br /&gt;
&lt;br /&gt;
===Extern Declarations===&lt;br /&gt;
Important: for accessing other objects you need to 'include' the other scripts this way (objects are automatically also member of the class of the same name):&lt;br /&gt;
  extern global {&lt;br /&gt;
    var NPCName:NPCName;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
===Interaction with GS2===&lt;br /&gt;
When accessing GS2 objects then you need to declare what members and functions they have, otherwise you will not be able to access them:&lt;br /&gt;
  extern class GS2NPCName extends TServerNPC {&lt;br /&gt;
    var money:int;&lt;br /&gt;
    function addMoney(amount:int):void;&lt;br /&gt;
  }&lt;br /&gt;
  extern global {&lt;br /&gt;
    var GS2NPCName:GS2NPCName;&lt;br /&gt;
  }&lt;br /&gt;
This can be some work, but when the other object is also GS3 then it's much easier (see ''External Declarations'').&lt;br /&gt;
&lt;br /&gt;
To access GS3 objects from GS2 everything stays the same, errors are reported at runtime.&lt;br /&gt;
&lt;br /&gt;
===Main changes===&lt;br /&gt;
In GS3 you need to declare variable types, function return types and function parameter types. That way we can automatically check if you access the variable correctly or call a function with the good parameters, which means less errors.&lt;br /&gt;
&lt;br /&gt;
You also need to declare variables of an NPC (at the start of the script):&lt;br /&gt;
  var myvar:string;&lt;br /&gt;
  var myvar2:number;&lt;br /&gt;
This makes it easier to understand a script and handle objects. If you need to store many dynamic variables for an NPC then you can use arrays or dictionaries.&lt;br /&gt;
&lt;br /&gt;
Joining of classes is still possible but not dynamically. So you have to put the join-call outside of any function:&lt;br /&gt;
  join(&amp;quot;myclass&amp;quot;);&lt;br /&gt;
  function onCreated() {&lt;br /&gt;
    // Can't join here with this.join() or so!&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
Using types makes prototyping a little bit harder since you have to think about variable types and declare classes or similar to access data.&lt;br /&gt;
&lt;br /&gt;
However for bigger projects (most Graal servers fall under this category) it is very important that scripts can be understood by other scripters, have some structure and don't contain bugs which break the economy or similar. By requiring types a lot of errors can already be detected when writing the script instead of at runtime when players are using the script.&lt;br /&gt;
&lt;br /&gt;
So we have a few advantages:&lt;br /&gt;
* Helps to write code which is more reliable and readable&lt;br /&gt;
* The structure of objects can be analyzed for automatic script documentation&lt;br /&gt;
* Dependencies can be analyzed so you can know which scripts access an object or function&lt;br /&gt;
* We can make scripts running much faster (not right now but in the future)&lt;br /&gt;
* GraalScript3 can be converted to other languages and platforms, we are preparing something interesting for this to show in a few weeks&lt;br /&gt;
&lt;br /&gt;
We are also preparing a few improvements to make GS3 more interesting, including support for getter and setter functions and private variables.&lt;br /&gt;
&lt;br /&gt;
==Language Elements==&lt;br /&gt;
&lt;br /&gt;
===Operators===&lt;br /&gt;
====addition (+) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Adds together ''numeric_expression1'' and ''numeric_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append (@) operator|append (@) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(1 + 2); // 3&lt;br /&gt;
 echo(1.5 + 2.25); // 3.75&lt;br /&gt;
&lt;br /&gt;
====addition assignment (+=) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+=''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Puts the result of ''numeric_expression1'' '''+''' ''numeric_expression2'' into ''numeric_expression1''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
This is a direct equivalent of the following expression:&lt;br /&gt;
 ''numeric_expression1'' '''=''' ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append assignment (@=) operator|append assignment (@=) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var result : int = 10;&lt;br /&gt;
 [[result '''+=''' 20;&lt;br /&gt;
 echo(result); // 30&lt;br /&gt;
]]&lt;br /&gt;
====append (@) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''string_expression1'' '''@''' ''string_expression2''&lt;br /&gt;
&lt;br /&gt;
Concats together ''string_expression1'' and ''string_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be string ([[#string type|string type]]).&lt;br /&gt;
&lt;br /&gt;
To add numbers, the [[#addition (+) operator|addition (+) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(&amp;quot;hello &amp;quot; '''@''' &amp;quot;world&amp;quot;); // &amp;quot;hello world&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====as operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''expression'' '''as''' ''target_type''&lt;br /&gt;
&lt;br /&gt;
Converts the source type of ''expression'' to ''target_type''.&amp;lt;br/&amp;gt;&lt;br /&gt;
The target type must be an object type, not a basic type like [[#int type|int]], '''number''', [[#string type|string]].&amp;lt;br&amp;gt;&lt;br /&gt;
The source type must be a member of the target type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 class Animal { ... }&lt;br /&gt;
 class Cat extends Animal { ... }&lt;br /&gt;
 class Dog extends Animal { ... }&lt;br /&gt;
 var cat : Cat = new Cat();&lt;br /&gt;
 var dog : Dog = new Dog();&lt;br /&gt;
 var cat_as_animal : Animal =  cat as Animal; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_cat : Cat = cat_as_animal as Cat; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_dog : Dog = cat as Dog; // KO as the Cat type is not a member of the Dog type.&lt;br /&gt;
 var cat_as_animal_as_dog : Dog = cat_as_animal as Dog; // null as the Cat as Animal type is not a member of the Dog type.&lt;br /&gt;
&lt;br /&gt;
====type (:) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 var ''variable_name'' ''':''' ''type''&lt;br /&gt;
 function ''function_name''(''parameter'' ''':''' ''type'', ...) ''':''' ''return_type'' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies the type for a variable or function declaration.&amp;lt;br/&amp;gt;&lt;br /&gt;
For functions, this operator must be used to specify the return type, and the type of parameters if any.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var language ''':''' string = &amp;quot;GScript&amp;quot;;&lt;br /&gt;
 var version ''':''' int = 3;&lt;br /&gt;
 &lt;br /&gt;
 function sayHello() ''':''' void {&lt;br /&gt;
    echo(&amp;quot;hello&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function addNumbers(a : int, b : int) : int {&lt;br /&gt;
    return a + b;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
====boolean type====&lt;br /&gt;
Enables to define variables, function parameters or return values with two possible values, '''true''' or '''false'''. These values represents the result of logical expressions.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var graal_is_cool : '''boolean''' = true;&lt;br /&gt;
 var is_dark : '''boolean''' = false;&lt;br /&gt;
 var is_light : '''boolean''' = !is_dark;&lt;br /&gt;
&lt;br /&gt;
====int type====&lt;br /&gt;
Enables to define variables, function parameters or return values with a 32-bit signed integer number type.&lt;br /&gt;
&lt;br /&gt;
With this type, you can define integer numbers between -2,147,483,648 (-2 ^ 31) and 2,147,483,647 (2 ^ 31 - 1).&amp;lt;br/&amp;gt;&lt;br /&gt;
To work with floating-point numbers, or define numbers outside this range, the '''number''' type must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var integer_number : '''int''' = 123;&lt;br /&gt;
&lt;br /&gt;
====string type====&lt;br /&gt;
Represents textual data using a string of characters.&amp;lt;br/&amp;gt;&lt;br /&gt;
A string cannot be null but may be empty (with a length of zero).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var text : '''string''' = &amp;quot;hello&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
====void type====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 function ''function_name''( ... ) : '''void''' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies that a function does not return any value.&amp;lt;br/&amp;gt;&lt;br /&gt;
Only empty return statements must be used in functions with '''void''' type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 function emptyFunction() : '''void''' {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function logMessage(message : string, hasLog : boolean) : '''void''' {&lt;br /&gt;
    if (!hasLog)&lt;br /&gt;
       return; // No returned value.&lt;br /&gt;
    echo(message);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Declaration Keywords===&lt;br /&gt;
====const keyword====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 '''const''' ''constant_name'' : type = constant_value;&lt;br /&gt;
&lt;br /&gt;
Specifies a variable with a unique and constant value at compilation and execution time.&amp;lt;br/&amp;gt;&lt;br /&gt;
Constants are automatically inlined to their value by the compiler, so it is recommended for optimization purposes to prefer constants to normal variables when their value never changes.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 const winning_points : int = 1000;&lt;br /&gt;
 const hello_text : string = &amp;quot;hello&amp;quot;;&lt;br /&gt;
 const world_text : string = &amp;quot;world&amp;quot;;&lt;br /&gt;
 const hello_world_text : string = hello_text @ world_text;&lt;br /&gt;
 winning_points = 500; // KO as winning_points must be constant&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19799</id>
		<title>Creation/Dev/GScript3</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19799"/>
		<updated>2013-06-16T00:23:04Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Interaction with GS2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripting Reference]]&lt;br /&gt;
'''GScript3''' (also known as GS3 or GraalScript3) is the latest version of the [[Creation/Dev/GScript|Graal's scripting language]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It introduces new syntax and semantic elements, and enable new features in Web browsers.&lt;br /&gt;
&lt;br /&gt;
==Quick Help for Server Staff==&lt;br /&gt;
===Enable GS3===&lt;br /&gt;
To use GS3 you need to restart the npcserver and add the server option enablegs3=true. At the start of your script add the line&lt;br /&gt;
  //#GS3&lt;br /&gt;
&lt;br /&gt;
===Conversion Tool===&lt;br /&gt;
To convert scripts from GS2 to GS3 you can use the online tool at http://graalscript3.graalonline.com/&lt;br /&gt;
It can help to convert scripts and also to check for correct syntax, although things like join will not work.&lt;br /&gt;
&lt;br /&gt;
===Extern Declarations===&lt;br /&gt;
Important: for accessing other objects you need to 'include' the other scripts this way (objects are automatically also member of the class of the same name):&lt;br /&gt;
  extern global {&lt;br /&gt;
    var NPCName:NPCName;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
===Interaction with GS2===&lt;br /&gt;
When accessing GS2 objects then you need to declare what members and functions they have, otherwise you will not be able to access them:&lt;br /&gt;
  extern class GS2NPCName extends TServerNPC {&lt;br /&gt;
    var money:int;&lt;br /&gt;
    function addMoney(amount:int):void;&lt;br /&gt;
  }&lt;br /&gt;
  extern global {&lt;br /&gt;
    var GS2NPCName:GS2NPCName;&lt;br /&gt;
  }&lt;br /&gt;
This can be some work, but when the other object is also GS3 then it's much easier (see ''External Declarations'').&lt;br /&gt;
&lt;br /&gt;
To access GS3 objects from GS2 everything stays the same, errors are reported at runtime.&lt;br /&gt;
&lt;br /&gt;
===Main changes===&lt;br /&gt;
In GS3 you need to declare variable types, function return types and function parameter types. That way we can automatically check if you access the variable correctly or call a function with the good parameters, which means less errors.&lt;br /&gt;
&lt;br /&gt;
You also need to declare variables of an NPC (at the start of the script):&lt;br /&gt;
  var myvar:string;&lt;br /&gt;
  var myvar2:number;&lt;br /&gt;
This makes it easier to understand a script and handle objects. If you need to store many dynamic variables for an NPC then you can use arrays or dictionaries.&lt;br /&gt;
&lt;br /&gt;
Joining of classes is still possible but not dynamically. So you have to put the join-call outside of any function:&lt;br /&gt;
  join(&amp;quot;myclass&amp;quot;);&lt;br /&gt;
  function onCreated() {&lt;br /&gt;
    // Can't join here with this.join() or so!&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
Using types makes prototyping a little bit harder since you have to think about variable types and declare classes or similar to access data.&lt;br /&gt;
&lt;br /&gt;
However for bigger projects (most Graal servers fall under this category) it is very important that scripts can be understood by other scripters, have some structure and don't contain bugs which break the economy or similar. By requiring types a lot of errors can already be detected when writing the script instead of at runtime when players are using the script.&lt;br /&gt;
&lt;br /&gt;
So we have a few advantages:&lt;br /&gt;
* Helps to write code which is more reliable and readable&lt;br /&gt;
* The structure of objects can be analyzed for automatic script documentation&lt;br /&gt;
* Dependencies can be analyzed so you can know which scripts access an object or function&lt;br /&gt;
* We can make scripts running much faster (not right now but in the future)&lt;br /&gt;
* GraalScript3 can be converted to other languages and platforms, we are preparing something interesting for this to show in a few weeks&lt;br /&gt;
&lt;br /&gt;
We are also preparing a few improvements to make GS3 more interesting, including support for getter and setter functions and private variables.&lt;br /&gt;
&lt;br /&gt;
==Language Elements==&lt;br /&gt;
&lt;br /&gt;
===Operators===&lt;br /&gt;
====addition (+) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Adds together ''numeric_expression1'' and ''numeric_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append (@) operator|append (@) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(1 + 2); // 3&lt;br /&gt;
 echo(1.5 + 2.25); // 3.75&lt;br /&gt;
&lt;br /&gt;
====addition assignment (+=) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+=''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Puts the result of ''numeric_expression1'' '''+''' ''numeric_expression2'' into ''numeric_expression1''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
This is a direct equivalent of the following expression:&lt;br /&gt;
 ''numeric_expression1'' '''=''' ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append assignment (@=) operator|append assignment (@=) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var result : int = 10;&lt;br /&gt;
 [[result '''+=''' 20;&lt;br /&gt;
 echo(result); // 30&lt;br /&gt;
]]&lt;br /&gt;
====append (@) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''string_expression1'' '''@''' ''string_expression2''&lt;br /&gt;
&lt;br /&gt;
Concats together ''string_expression1'' and ''string_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be string ([[#string type|string type]]).&lt;br /&gt;
&lt;br /&gt;
To add numbers, the [[#addition (+) operator|addition (+) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(&amp;quot;hello &amp;quot; '''@''' &amp;quot;world&amp;quot;); // &amp;quot;hello world&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====as operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''expression'' '''as''' ''target_type''&lt;br /&gt;
&lt;br /&gt;
Converts the source type of ''expression'' to ''target_type''.&amp;lt;br/&amp;gt;&lt;br /&gt;
The target type must be an object type, not a basic type like [[#int type|int]], '''number''', [[#string type|string]].&amp;lt;br&amp;gt;&lt;br /&gt;
The source type must be a member of the target type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 class Animal { ... }&lt;br /&gt;
 class Cat extends Animal { ... }&lt;br /&gt;
 class Dog extends Animal { ... }&lt;br /&gt;
 var cat : Cat = new Cat();&lt;br /&gt;
 var dog : Dog = new Dog();&lt;br /&gt;
 var cat_as_animal : Animal =  cat as Animal; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_cat : Cat = cat_as_animal as Cat; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_dog : Dog = cat as Dog; // KO as the Cat type is not a member of the Dog type.&lt;br /&gt;
 var cat_as_animal_as_dog : Dog = cat_as_animal as Dog; // null as the Cat as Animal type is not a member of the Dog type.&lt;br /&gt;
&lt;br /&gt;
====type (:) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 var ''variable_name'' ''':''' ''type''&lt;br /&gt;
 function ''function_name''(''parameter'' ''':''' ''type'', ...) ''':''' ''return_type'' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies the type for a variable or function declaration.&amp;lt;br/&amp;gt;&lt;br /&gt;
For functions, this operator must be used to specify the return type, and the type of parameters if any.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var language ''':''' string = &amp;quot;GScript&amp;quot;;&lt;br /&gt;
 var version ''':''' int = 3;&lt;br /&gt;
 &lt;br /&gt;
 function sayHello() ''':''' void {&lt;br /&gt;
    echo(&amp;quot;hello&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function addNumbers(a : int, b : int) : int {&lt;br /&gt;
    return a + b;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
====boolean type====&lt;br /&gt;
Enables to define variables, function parameters or return values with two possible values, '''true''' or '''false'''. These values represents the result of logical expressions.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var graal_is_cool : '''boolean''' = true;&lt;br /&gt;
 var is_dark : '''boolean''' = false;&lt;br /&gt;
 var is_light : '''boolean''' = !is_dark;&lt;br /&gt;
&lt;br /&gt;
====int type====&lt;br /&gt;
Enables to define variables, function parameters or return values with a 32-bit signed integer number type.&lt;br /&gt;
&lt;br /&gt;
With this type, you can define integer numbers between -2,147,483,648 (-2 ^ 31) and 2,147,483,647 (2 ^ 31 - 1).&amp;lt;br/&amp;gt;&lt;br /&gt;
To work with floating-point numbers, or define numbers outside this range, the '''number''' type must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var integer_number : '''int''' = 123;&lt;br /&gt;
&lt;br /&gt;
====string type====&lt;br /&gt;
Represents textual data using a string of characters.&amp;lt;br/&amp;gt;&lt;br /&gt;
A string cannot be null but may be empty (with a length of zero).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var text : '''string''' = &amp;quot;hello&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
====void type====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 function ''function_name''( ... ) : '''void''' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies that a function does not return any value.&amp;lt;br/&amp;gt;&lt;br /&gt;
Only empty return statements must be used in functions with '''void''' type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 function emptyFunction() : '''void''' {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function logMessage(message : string, hasLog : boolean) : '''void''' {&lt;br /&gt;
    if (!hasLog)&lt;br /&gt;
       return; // No returned value.&lt;br /&gt;
    echo(message);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Declaration Keywords===&lt;br /&gt;
====const keyword====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 '''const''' ''constant_name'' : type = constant_value;&lt;br /&gt;
&lt;br /&gt;
Specifies a variable with a unique and constant value at compilation and execution time.&amp;lt;br/&amp;gt;&lt;br /&gt;
Constants are automatically inlined to their value by the compiler, so it is recommended for optimization purposes to prefer constants to normal variables when their value never changes.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 const winning_points : int = 1000;&lt;br /&gt;
 const hello_text : string = &amp;quot;hello&amp;quot;;&lt;br /&gt;
 const world_text : string = &amp;quot;world&amp;quot;;&lt;br /&gt;
 const hello_world_text : string = hello_text @ world_text;&lt;br /&gt;
 winning_points = 500; // KO as winning_points must be constant&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19798</id>
		<title>Creation/Dev/GScript3</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19798"/>
		<updated>2013-06-16T00:21:44Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Advantages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripting Reference]]&lt;br /&gt;
'''GScript3''' (also known as GS3 or GraalScript3) is the latest version of the [[Creation/Dev/GScript|Graal's scripting language]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It introduces new syntax and semantic elements, and enable new features in Web browsers.&lt;br /&gt;
&lt;br /&gt;
==Quick Help for Server Staff==&lt;br /&gt;
===Enable GS3===&lt;br /&gt;
To use GS3 you need to restart the npcserver and add the server option enablegs3=true. At the start of your script add the line&lt;br /&gt;
  //#GS3&lt;br /&gt;
&lt;br /&gt;
===Conversion Tool===&lt;br /&gt;
To convert scripts from GS2 to GS3 you can use the online tool at http://graalscript3.graalonline.com/&lt;br /&gt;
It can help to convert scripts and also to check for correct syntax, although things like join will not work.&lt;br /&gt;
&lt;br /&gt;
===Extern Declarations===&lt;br /&gt;
Important: for accessing other objects you need to 'include' the other scripts this way (objects are automatically also member of the class of the same name):&lt;br /&gt;
  extern global {&lt;br /&gt;
    var NPCName:NPCName;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
===Interaction with GS2===&lt;br /&gt;
When accessing GS2 objects then you need to declare what members and functions they have, otherwise you will not be able to access them:&lt;br /&gt;
  extern class GS2NPCName extends TServerNPC {&lt;br /&gt;
    var money:int;&lt;br /&gt;
    function addMoney(amount:int):void;&lt;br /&gt;
  }&lt;br /&gt;
  extern global {&lt;br /&gt;
    var GS2NPCName:GS2NPCName;&lt;br /&gt;
  }&lt;br /&gt;
This can be some work, but when the other object is also GS3 then it's much easier (see ''External Declarations'').&lt;br /&gt;
&lt;br /&gt;
===Main changes===&lt;br /&gt;
In GS3 you need to declare variable types, function return types and function parameter types. That way we can automatically check if you access the variable correctly or call a function with the good parameters, which means less errors.&lt;br /&gt;
&lt;br /&gt;
You also need to declare variables of an NPC (at the start of the script):&lt;br /&gt;
  var myvar:string;&lt;br /&gt;
  var myvar2:number;&lt;br /&gt;
This makes it easier to understand a script and handle objects. If you need to store many dynamic variables for an NPC then you can use arrays or dictionaries.&lt;br /&gt;
&lt;br /&gt;
Joining of classes is still possible but not dynamically. So you have to put the join-call outside of any function:&lt;br /&gt;
  join(&amp;quot;myclass&amp;quot;);&lt;br /&gt;
  function onCreated() {&lt;br /&gt;
    // Can't join here with this.join() or so!&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
Using types makes prototyping a little bit harder since you have to think about variable types and declare classes or similar to access data.&lt;br /&gt;
&lt;br /&gt;
However for bigger projects (most Graal servers fall under this category) it is very important that scripts can be understood by other scripters, have some structure and don't contain bugs which break the economy or similar. By requiring types a lot of errors can already be detected when writing the script instead of at runtime when players are using the script.&lt;br /&gt;
&lt;br /&gt;
So we have a few advantages:&lt;br /&gt;
* Helps to write code which is more reliable and readable&lt;br /&gt;
* The structure of objects can be analyzed for automatic script documentation&lt;br /&gt;
* Dependencies can be analyzed so you can know which scripts access an object or function&lt;br /&gt;
* We can make scripts running much faster (not right now but in the future)&lt;br /&gt;
* GraalScript3 can be converted to other languages and platforms, we are preparing something interesting for this to show in a few weeks&lt;br /&gt;
&lt;br /&gt;
We are also preparing a few improvements to make GS3 more interesting, including support for getter and setter functions and private variables.&lt;br /&gt;
&lt;br /&gt;
==Language Elements==&lt;br /&gt;
&lt;br /&gt;
===Operators===&lt;br /&gt;
====addition (+) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Adds together ''numeric_expression1'' and ''numeric_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append (@) operator|append (@) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(1 + 2); // 3&lt;br /&gt;
 echo(1.5 + 2.25); // 3.75&lt;br /&gt;
&lt;br /&gt;
====addition assignment (+=) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+=''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Puts the result of ''numeric_expression1'' '''+''' ''numeric_expression2'' into ''numeric_expression1''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
This is a direct equivalent of the following expression:&lt;br /&gt;
 ''numeric_expression1'' '''=''' ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append assignment (@=) operator|append assignment (@=) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var result : int = 10;&lt;br /&gt;
 [[result '''+=''' 20;&lt;br /&gt;
 echo(result); // 30&lt;br /&gt;
]]&lt;br /&gt;
====append (@) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''string_expression1'' '''@''' ''string_expression2''&lt;br /&gt;
&lt;br /&gt;
Concats together ''string_expression1'' and ''string_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be string ([[#string type|string type]]).&lt;br /&gt;
&lt;br /&gt;
To add numbers, the [[#addition (+) operator|addition (+) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(&amp;quot;hello &amp;quot; '''@''' &amp;quot;world&amp;quot;); // &amp;quot;hello world&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====as operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''expression'' '''as''' ''target_type''&lt;br /&gt;
&lt;br /&gt;
Converts the source type of ''expression'' to ''target_type''.&amp;lt;br/&amp;gt;&lt;br /&gt;
The target type must be an object type, not a basic type like [[#int type|int]], '''number''', [[#string type|string]].&amp;lt;br&amp;gt;&lt;br /&gt;
The source type must be a member of the target type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 class Animal { ... }&lt;br /&gt;
 class Cat extends Animal { ... }&lt;br /&gt;
 class Dog extends Animal { ... }&lt;br /&gt;
 var cat : Cat = new Cat();&lt;br /&gt;
 var dog : Dog = new Dog();&lt;br /&gt;
 var cat_as_animal : Animal =  cat as Animal; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_cat : Cat = cat_as_animal as Cat; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_dog : Dog = cat as Dog; // KO as the Cat type is not a member of the Dog type.&lt;br /&gt;
 var cat_as_animal_as_dog : Dog = cat_as_animal as Dog; // null as the Cat as Animal type is not a member of the Dog type.&lt;br /&gt;
&lt;br /&gt;
====type (:) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 var ''variable_name'' ''':''' ''type''&lt;br /&gt;
 function ''function_name''(''parameter'' ''':''' ''type'', ...) ''':''' ''return_type'' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies the type for a variable or function declaration.&amp;lt;br/&amp;gt;&lt;br /&gt;
For functions, this operator must be used to specify the return type, and the type of parameters if any.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var language ''':''' string = &amp;quot;GScript&amp;quot;;&lt;br /&gt;
 var version ''':''' int = 3;&lt;br /&gt;
 &lt;br /&gt;
 function sayHello() ''':''' void {&lt;br /&gt;
    echo(&amp;quot;hello&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function addNumbers(a : int, b : int) : int {&lt;br /&gt;
    return a + b;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
====boolean type====&lt;br /&gt;
Enables to define variables, function parameters or return values with two possible values, '''true''' or '''false'''. These values represents the result of logical expressions.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var graal_is_cool : '''boolean''' = true;&lt;br /&gt;
 var is_dark : '''boolean''' = false;&lt;br /&gt;
 var is_light : '''boolean''' = !is_dark;&lt;br /&gt;
&lt;br /&gt;
====int type====&lt;br /&gt;
Enables to define variables, function parameters or return values with a 32-bit signed integer number type.&lt;br /&gt;
&lt;br /&gt;
With this type, you can define integer numbers between -2,147,483,648 (-2 ^ 31) and 2,147,483,647 (2 ^ 31 - 1).&amp;lt;br/&amp;gt;&lt;br /&gt;
To work with floating-point numbers, or define numbers outside this range, the '''number''' type must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var integer_number : '''int''' = 123;&lt;br /&gt;
&lt;br /&gt;
====string type====&lt;br /&gt;
Represents textual data using a string of characters.&amp;lt;br/&amp;gt;&lt;br /&gt;
A string cannot be null but may be empty (with a length of zero).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var text : '''string''' = &amp;quot;hello&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
====void type====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 function ''function_name''( ... ) : '''void''' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies that a function does not return any value.&amp;lt;br/&amp;gt;&lt;br /&gt;
Only empty return statements must be used in functions with '''void''' type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 function emptyFunction() : '''void''' {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function logMessage(message : string, hasLog : boolean) : '''void''' {&lt;br /&gt;
    if (!hasLog)&lt;br /&gt;
       return; // No returned value.&lt;br /&gt;
    echo(message);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Declaration Keywords===&lt;br /&gt;
====const keyword====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 '''const''' ''constant_name'' : type = constant_value;&lt;br /&gt;
&lt;br /&gt;
Specifies a variable with a unique and constant value at compilation and execution time.&amp;lt;br/&amp;gt;&lt;br /&gt;
Constants are automatically inlined to their value by the compiler, so it is recommended for optimization purposes to prefer constants to normal variables when their value never changes.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 const winning_points : int = 1000;&lt;br /&gt;
 const hello_text : string = &amp;quot;hello&amp;quot;;&lt;br /&gt;
 const world_text : string = &amp;quot;world&amp;quot;;&lt;br /&gt;
 const hello_world_text : string = hello_text @ world_text;&lt;br /&gt;
 winning_points = 500; // KO as winning_points must be constant&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19797</id>
		<title>Creation/Dev/GScript3</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19797"/>
		<updated>2013-06-16T00:18:47Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Advantages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripting Reference]]&lt;br /&gt;
'''GScript3''' (also known as GS3 or GraalScript3) is the latest version of the [[Creation/Dev/GScript|Graal's scripting language]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It introduces new syntax and semantic elements, and enable new features in Web browsers.&lt;br /&gt;
&lt;br /&gt;
==Quick Help for Server Staff==&lt;br /&gt;
===Enable GS3===&lt;br /&gt;
To use GS3 you need to restart the npcserver and add the server option enablegs3=true. At the start of your script add the line&lt;br /&gt;
  //#GS3&lt;br /&gt;
&lt;br /&gt;
===Conversion Tool===&lt;br /&gt;
To convert scripts from GS2 to GS3 you can use the online tool at http://graalscript3.graalonline.com/&lt;br /&gt;
It can help to convert scripts and also to check for correct syntax, although things like join will not work.&lt;br /&gt;
&lt;br /&gt;
===Extern Declarations===&lt;br /&gt;
Important: for accessing other objects you need to 'include' the other scripts this way (objects are automatically also member of the class of the same name):&lt;br /&gt;
  extern global {&lt;br /&gt;
    var NPCName:NPCName;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
===Interaction with GS2===&lt;br /&gt;
When accessing GS2 objects then you need to declare what members and functions they have, otherwise you will not be able to access them:&lt;br /&gt;
  extern class GS2NPCName extends TServerNPC {&lt;br /&gt;
    var money:int;&lt;br /&gt;
    function addMoney(amount:int):void;&lt;br /&gt;
  }&lt;br /&gt;
  extern global {&lt;br /&gt;
    var GS2NPCName:GS2NPCName;&lt;br /&gt;
  }&lt;br /&gt;
This can be some work, but when the other object is also GS3 then it's much easier (see ''External Declarations'').&lt;br /&gt;
&lt;br /&gt;
===Main changes===&lt;br /&gt;
In GS3 you need to declare variable types, function return types and function parameter types. That way we can automatically check if you access the variable correctly or call a function with the good parameters, which means less errors.&lt;br /&gt;
&lt;br /&gt;
You also need to declare variables of an NPC (at the start of the script):&lt;br /&gt;
  var myvar:string;&lt;br /&gt;
  var myvar2:number;&lt;br /&gt;
This makes it easier to understand a script and handle objects. If you need to store many dynamic variables for an NPC then you can use arrays or dictionaries.&lt;br /&gt;
&lt;br /&gt;
Joining of classes is still possible but not dynamically. So you have to put the join-call outside of any function:&lt;br /&gt;
  join(&amp;quot;myclass&amp;quot;);&lt;br /&gt;
  function onCreated() {&lt;br /&gt;
    // Can't join here with this.join() or so!&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
Using types makes prototyping a little bit harder since you have to think about variable types and declare classes or similar to access data.&lt;br /&gt;
&lt;br /&gt;
However for bigger projects (most Graal servers fall under this category) it is very important that scripts can be understood by other scripters, have some structure and don't contain bugs which break the economy or similar. By requiring types a lot of errors can already be detected when writing the script instead of at runtime when players are using the script.&lt;br /&gt;
&lt;br /&gt;
So we have a few advantages:&lt;br /&gt;
* Helps to write code which is more reliable and readable&lt;br /&gt;
* The structure of objects can be analyzed for automatic script documentation&lt;br /&gt;
* Dependencies can be analyzed so you can know which scripts access an object or function&lt;br /&gt;
* GraalScript3 can be converted to other languages and platforms, we are preparing something interesting for this to show in a few weeks&lt;br /&gt;
&lt;br /&gt;
==Language Elements==&lt;br /&gt;
&lt;br /&gt;
===Operators===&lt;br /&gt;
====addition (+) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Adds together ''numeric_expression1'' and ''numeric_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append (@) operator|append (@) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(1 + 2); // 3&lt;br /&gt;
 echo(1.5 + 2.25); // 3.75&lt;br /&gt;
&lt;br /&gt;
====addition assignment (+=) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+=''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Puts the result of ''numeric_expression1'' '''+''' ''numeric_expression2'' into ''numeric_expression1''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
This is a direct equivalent of the following expression:&lt;br /&gt;
 ''numeric_expression1'' '''=''' ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append assignment (@=) operator|append assignment (@=) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var result : int = 10;&lt;br /&gt;
 [[result '''+=''' 20;&lt;br /&gt;
 echo(result); // 30&lt;br /&gt;
]]&lt;br /&gt;
====append (@) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''string_expression1'' '''@''' ''string_expression2''&lt;br /&gt;
&lt;br /&gt;
Concats together ''string_expression1'' and ''string_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be string ([[#string type|string type]]).&lt;br /&gt;
&lt;br /&gt;
To add numbers, the [[#addition (+) operator|addition (+) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(&amp;quot;hello &amp;quot; '''@''' &amp;quot;world&amp;quot;); // &amp;quot;hello world&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====as operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''expression'' '''as''' ''target_type''&lt;br /&gt;
&lt;br /&gt;
Converts the source type of ''expression'' to ''target_type''.&amp;lt;br/&amp;gt;&lt;br /&gt;
The target type must be an object type, not a basic type like [[#int type|int]], '''number''', [[#string type|string]].&amp;lt;br&amp;gt;&lt;br /&gt;
The source type must be a member of the target type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 class Animal { ... }&lt;br /&gt;
 class Cat extends Animal { ... }&lt;br /&gt;
 class Dog extends Animal { ... }&lt;br /&gt;
 var cat : Cat = new Cat();&lt;br /&gt;
 var dog : Dog = new Dog();&lt;br /&gt;
 var cat_as_animal : Animal =  cat as Animal; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_cat : Cat = cat_as_animal as Cat; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_dog : Dog = cat as Dog; // KO as the Cat type is not a member of the Dog type.&lt;br /&gt;
 var cat_as_animal_as_dog : Dog = cat_as_animal as Dog; // null as the Cat as Animal type is not a member of the Dog type.&lt;br /&gt;
&lt;br /&gt;
====type (:) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 var ''variable_name'' ''':''' ''type''&lt;br /&gt;
 function ''function_name''(''parameter'' ''':''' ''type'', ...) ''':''' ''return_type'' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies the type for a variable or function declaration.&amp;lt;br/&amp;gt;&lt;br /&gt;
For functions, this operator must be used to specify the return type, and the type of parameters if any.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var language ''':''' string = &amp;quot;GScript&amp;quot;;&lt;br /&gt;
 var version ''':''' int = 3;&lt;br /&gt;
 &lt;br /&gt;
 function sayHello() ''':''' void {&lt;br /&gt;
    echo(&amp;quot;hello&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function addNumbers(a : int, b : int) : int {&lt;br /&gt;
    return a + b;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
====boolean type====&lt;br /&gt;
Enables to define variables, function parameters or return values with two possible values, '''true''' or '''false'''. These values represents the result of logical expressions.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var graal_is_cool : '''boolean''' = true;&lt;br /&gt;
 var is_dark : '''boolean''' = false;&lt;br /&gt;
 var is_light : '''boolean''' = !is_dark;&lt;br /&gt;
&lt;br /&gt;
====int type====&lt;br /&gt;
Enables to define variables, function parameters or return values with a 32-bit signed integer number type.&lt;br /&gt;
&lt;br /&gt;
With this type, you can define integer numbers between -2,147,483,648 (-2 ^ 31) and 2,147,483,647 (2 ^ 31 - 1).&amp;lt;br/&amp;gt;&lt;br /&gt;
To work with floating-point numbers, or define numbers outside this range, the '''number''' type must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var integer_number : '''int''' = 123;&lt;br /&gt;
&lt;br /&gt;
====string type====&lt;br /&gt;
Represents textual data using a string of characters.&amp;lt;br/&amp;gt;&lt;br /&gt;
A string cannot be null but may be empty (with a length of zero).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var text : '''string''' = &amp;quot;hello&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
====void type====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 function ''function_name''( ... ) : '''void''' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies that a function does not return any value.&amp;lt;br/&amp;gt;&lt;br /&gt;
Only empty return statements must be used in functions with '''void''' type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 function emptyFunction() : '''void''' {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function logMessage(message : string, hasLog : boolean) : '''void''' {&lt;br /&gt;
    if (!hasLog)&lt;br /&gt;
       return; // No returned value.&lt;br /&gt;
    echo(message);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Declaration Keywords===&lt;br /&gt;
====const keyword====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 '''const''' ''constant_name'' : type = constant_value;&lt;br /&gt;
&lt;br /&gt;
Specifies a variable with a unique and constant value at compilation and execution time.&amp;lt;br/&amp;gt;&lt;br /&gt;
Constants are automatically inlined to their value by the compiler, so it is recommended for optimization purposes to prefer constants to normal variables when their value never changes.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 const winning_points : int = 1000;&lt;br /&gt;
 const hello_text : string = &amp;quot;hello&amp;quot;;&lt;br /&gt;
 const world_text : string = &amp;quot;world&amp;quot;;&lt;br /&gt;
 const hello_world_text : string = hello_text @ world_text;&lt;br /&gt;
 winning_points = 500; // KO as winning_points must be constant&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19796</id>
		<title>Creation/Dev/GScript3</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19796"/>
		<updated>2013-06-16T00:18:23Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Advantages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripting Reference]]&lt;br /&gt;
'''GScript3''' (also known as GS3 or GraalScript3) is the latest version of the [[Creation/Dev/GScript|Graal's scripting language]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It introduces new syntax and semantic elements, and enable new features in Web browsers.&lt;br /&gt;
&lt;br /&gt;
==Quick Help for Server Staff==&lt;br /&gt;
===Enable GS3===&lt;br /&gt;
To use GS3 you need to restart the npcserver and add the server option enablegs3=true. At the start of your script add the line&lt;br /&gt;
  //#GS3&lt;br /&gt;
&lt;br /&gt;
===Conversion Tool===&lt;br /&gt;
To convert scripts from GS2 to GS3 you can use the online tool at http://graalscript3.graalonline.com/&lt;br /&gt;
It can help to convert scripts and also to check for correct syntax, although things like join will not work.&lt;br /&gt;
&lt;br /&gt;
===Extern Declarations===&lt;br /&gt;
Important: for accessing other objects you need to 'include' the other scripts this way (objects are automatically also member of the class of the same name):&lt;br /&gt;
  extern global {&lt;br /&gt;
    var NPCName:NPCName;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
===Interaction with GS2===&lt;br /&gt;
When accessing GS2 objects then you need to declare what members and functions they have, otherwise you will not be able to access them:&lt;br /&gt;
  extern class GS2NPCName extends TServerNPC {&lt;br /&gt;
    var money:int;&lt;br /&gt;
    function addMoney(amount:int):void;&lt;br /&gt;
  }&lt;br /&gt;
  extern global {&lt;br /&gt;
    var GS2NPCName:GS2NPCName;&lt;br /&gt;
  }&lt;br /&gt;
This can be some work, but when the other object is also GS3 then it's much easier (see ''External Declarations'').&lt;br /&gt;
&lt;br /&gt;
===Main changes===&lt;br /&gt;
In GS3 you need to declare variable types, function return types and function parameter types. That way we can automatically check if you access the variable correctly or call a function with the good parameters, which means less errors.&lt;br /&gt;
&lt;br /&gt;
You also need to declare variables of an NPC (at the start of the script):&lt;br /&gt;
  var myvar:string;&lt;br /&gt;
  var myvar2:number;&lt;br /&gt;
This makes it easier to understand a script and handle objects. If you need to store many dynamic variables for an NPC then you can use arrays or dictionaries.&lt;br /&gt;
&lt;br /&gt;
Joining of classes is still possible but not dynamically. So you have to put the join-call outside of any function:&lt;br /&gt;
  join(&amp;quot;myclass&amp;quot;);&lt;br /&gt;
  function onCreated() {&lt;br /&gt;
    // Can't join here with this.join() or so!&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
Using types makes prototyping a little bit harder since you have to think about variable types and declare classes or similar to access data.&lt;br /&gt;
&lt;br /&gt;
However for bigger projects (most Graal servers fall under this category) it is very important that scripts can be understood by other scripters, have some structure and don't contain bugs which break the economy or similar. By requiring types a lot of errors can already be detected when writing the script instead of at runtime when players are using the script.&lt;br /&gt;
&lt;br /&gt;
So we have a few advantages:&lt;br /&gt;
- Helps to write code which is more reliable and readable&lt;br /&gt;
- The structure of objects can be analyzed for automatic script documentation&lt;br /&gt;
- Dependencies can be analyzed so you can know which scripts access an object or function&lt;br /&gt;
- GraalScript3 can be converted to other languages and platforms, we are preparing something interesting for this to show in a few weeks&lt;br /&gt;
&lt;br /&gt;
==Language Elements==&lt;br /&gt;
&lt;br /&gt;
===Operators===&lt;br /&gt;
====addition (+) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Adds together ''numeric_expression1'' and ''numeric_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append (@) operator|append (@) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(1 + 2); // 3&lt;br /&gt;
 echo(1.5 + 2.25); // 3.75&lt;br /&gt;
&lt;br /&gt;
====addition assignment (+=) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+=''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Puts the result of ''numeric_expression1'' '''+''' ''numeric_expression2'' into ''numeric_expression1''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
This is a direct equivalent of the following expression:&lt;br /&gt;
 ''numeric_expression1'' '''=''' ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append assignment (@=) operator|append assignment (@=) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var result : int = 10;&lt;br /&gt;
 [[result '''+=''' 20;&lt;br /&gt;
 echo(result); // 30&lt;br /&gt;
]]&lt;br /&gt;
====append (@) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''string_expression1'' '''@''' ''string_expression2''&lt;br /&gt;
&lt;br /&gt;
Concats together ''string_expression1'' and ''string_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be string ([[#string type|string type]]).&lt;br /&gt;
&lt;br /&gt;
To add numbers, the [[#addition (+) operator|addition (+) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(&amp;quot;hello &amp;quot; '''@''' &amp;quot;world&amp;quot;); // &amp;quot;hello world&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====as operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''expression'' '''as''' ''target_type''&lt;br /&gt;
&lt;br /&gt;
Converts the source type of ''expression'' to ''target_type''.&amp;lt;br/&amp;gt;&lt;br /&gt;
The target type must be an object type, not a basic type like [[#int type|int]], '''number''', [[#string type|string]].&amp;lt;br&amp;gt;&lt;br /&gt;
The source type must be a member of the target type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 class Animal { ... }&lt;br /&gt;
 class Cat extends Animal { ... }&lt;br /&gt;
 class Dog extends Animal { ... }&lt;br /&gt;
 var cat : Cat = new Cat();&lt;br /&gt;
 var dog : Dog = new Dog();&lt;br /&gt;
 var cat_as_animal : Animal =  cat as Animal; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_cat : Cat = cat_as_animal as Cat; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_dog : Dog = cat as Dog; // KO as the Cat type is not a member of the Dog type.&lt;br /&gt;
 var cat_as_animal_as_dog : Dog = cat_as_animal as Dog; // null as the Cat as Animal type is not a member of the Dog type.&lt;br /&gt;
&lt;br /&gt;
====type (:) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 var ''variable_name'' ''':''' ''type''&lt;br /&gt;
 function ''function_name''(''parameter'' ''':''' ''type'', ...) ''':''' ''return_type'' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies the type for a variable or function declaration.&amp;lt;br/&amp;gt;&lt;br /&gt;
For functions, this operator must be used to specify the return type, and the type of parameters if any.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var language ''':''' string = &amp;quot;GScript&amp;quot;;&lt;br /&gt;
 var version ''':''' int = 3;&lt;br /&gt;
 &lt;br /&gt;
 function sayHello() ''':''' void {&lt;br /&gt;
    echo(&amp;quot;hello&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function addNumbers(a : int, b : int) : int {&lt;br /&gt;
    return a + b;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
====boolean type====&lt;br /&gt;
Enables to define variables, function parameters or return values with two possible values, '''true''' or '''false'''. These values represents the result of logical expressions.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var graal_is_cool : '''boolean''' = true;&lt;br /&gt;
 var is_dark : '''boolean''' = false;&lt;br /&gt;
 var is_light : '''boolean''' = !is_dark;&lt;br /&gt;
&lt;br /&gt;
====int type====&lt;br /&gt;
Enables to define variables, function parameters or return values with a 32-bit signed integer number type.&lt;br /&gt;
&lt;br /&gt;
With this type, you can define integer numbers between -2,147,483,648 (-2 ^ 31) and 2,147,483,647 (2 ^ 31 - 1).&amp;lt;br/&amp;gt;&lt;br /&gt;
To work with floating-point numbers, or define numbers outside this range, the '''number''' type must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var integer_number : '''int''' = 123;&lt;br /&gt;
&lt;br /&gt;
====string type====&lt;br /&gt;
Represents textual data using a string of characters.&amp;lt;br/&amp;gt;&lt;br /&gt;
A string cannot be null but may be empty (with a length of zero).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var text : '''string''' = &amp;quot;hello&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
====void type====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 function ''function_name''( ... ) : '''void''' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies that a function does not return any value.&amp;lt;br/&amp;gt;&lt;br /&gt;
Only empty return statements must be used in functions with '''void''' type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 function emptyFunction() : '''void''' {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function logMessage(message : string, hasLog : boolean) : '''void''' {&lt;br /&gt;
    if (!hasLog)&lt;br /&gt;
       return; // No returned value.&lt;br /&gt;
    echo(message);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Declaration Keywords===&lt;br /&gt;
====const keyword====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 '''const''' ''constant_name'' : type = constant_value;&lt;br /&gt;
&lt;br /&gt;
Specifies a variable with a unique and constant value at compilation and execution time.&amp;lt;br/&amp;gt;&lt;br /&gt;
Constants are automatically inlined to their value by the compiler, so it is recommended for optimization purposes to prefer constants to normal variables when their value never changes.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 const winning_points : int = 1000;&lt;br /&gt;
 const hello_text : string = &amp;quot;hello&amp;quot;;&lt;br /&gt;
 const world_text : string = &amp;quot;world&amp;quot;;&lt;br /&gt;
 const hello_world_text : string = hello_text @ world_text;&lt;br /&gt;
 winning_points = 500; // KO as winning_points must be constant&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19795</id>
		<title>Creation/Dev/GScript3</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19795"/>
		<updated>2013-06-16T00:09:59Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Quick Help for Server Staff */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripting Reference]]&lt;br /&gt;
'''GScript3''' (also known as GS3 or GraalScript3) is the latest version of the [[Creation/Dev/GScript|Graal's scripting language]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It introduces new syntax and semantic elements, and enable new features in Web browsers.&lt;br /&gt;
&lt;br /&gt;
==Quick Help for Server Staff==&lt;br /&gt;
===Enable GS3===&lt;br /&gt;
To use GS3 you need to restart the npcserver and add the server option enablegs3=true. At the start of your script add the line&lt;br /&gt;
  //#GS3&lt;br /&gt;
&lt;br /&gt;
===Conversion Tool===&lt;br /&gt;
To convert scripts from GS2 to GS3 you can use the online tool at http://graalscript3.graalonline.com/&lt;br /&gt;
It can help to convert scripts and also to check for correct syntax, although things like join will not work.&lt;br /&gt;
&lt;br /&gt;
===Extern Declarations===&lt;br /&gt;
Important: for accessing other objects you need to 'include' the other scripts this way (objects are automatically also member of the class of the same name):&lt;br /&gt;
  extern global {&lt;br /&gt;
    var NPCName:NPCName;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
===Interaction with GS2===&lt;br /&gt;
When accessing GS2 objects then you need to declare what members and functions they have, otherwise you will not be able to access them:&lt;br /&gt;
  extern class GS2NPCName extends TServerNPC {&lt;br /&gt;
    var money:int;&lt;br /&gt;
    function addMoney(amount:int):void;&lt;br /&gt;
  }&lt;br /&gt;
  extern global {&lt;br /&gt;
    var GS2NPCName:GS2NPCName;&lt;br /&gt;
  }&lt;br /&gt;
This can be some work, but when the other object is also GS3 then it's much easier (see ''External Declarations'').&lt;br /&gt;
&lt;br /&gt;
===Main changes===&lt;br /&gt;
In GS3 you need to declare variable types, function return types and function parameter types. That way we can automatically check if you access the variable correctly or call a function with the good parameters, which means less errors.&lt;br /&gt;
&lt;br /&gt;
You also need to declare variables of an NPC (at the start of the script):&lt;br /&gt;
  var myvar:string;&lt;br /&gt;
  var myvar2:number;&lt;br /&gt;
This makes it easier to understand a script and handle objects. If you need to store many dynamic variables for an NPC then you can use arrays or dictionaries.&lt;br /&gt;
&lt;br /&gt;
Joining of classes is still possible but not dynamically. So you have to put the join-call outside of any function:&lt;br /&gt;
  join(&amp;quot;myclass&amp;quot;);&lt;br /&gt;
  function onCreated() {&lt;br /&gt;
    // Can't join here with this.join() or so!&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
&lt;br /&gt;
==Language Elements==&lt;br /&gt;
&lt;br /&gt;
===Operators===&lt;br /&gt;
====addition (+) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Adds together ''numeric_expression1'' and ''numeric_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append (@) operator|append (@) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(1 + 2); // 3&lt;br /&gt;
 echo(1.5 + 2.25); // 3.75&lt;br /&gt;
&lt;br /&gt;
====addition assignment (+=) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+=''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Puts the result of ''numeric_expression1'' '''+''' ''numeric_expression2'' into ''numeric_expression1''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
This is a direct equivalent of the following expression:&lt;br /&gt;
 ''numeric_expression1'' '''=''' ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append assignment (@=) operator|append assignment (@=) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var result : int = 10;&lt;br /&gt;
 [[result '''+=''' 20;&lt;br /&gt;
 echo(result); // 30&lt;br /&gt;
]]&lt;br /&gt;
====append (@) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''string_expression1'' '''@''' ''string_expression2''&lt;br /&gt;
&lt;br /&gt;
Concats together ''string_expression1'' and ''string_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be string ([[#string type|string type]]).&lt;br /&gt;
&lt;br /&gt;
To add numbers, the [[#addition (+) operator|addition (+) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(&amp;quot;hello &amp;quot; '''@''' &amp;quot;world&amp;quot;); // &amp;quot;hello world&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====as operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''expression'' '''as''' ''target_type''&lt;br /&gt;
&lt;br /&gt;
Converts the source type of ''expression'' to ''target_type''.&amp;lt;br/&amp;gt;&lt;br /&gt;
The target type must be an object type, not a basic type like [[#int type|int]], '''number''', [[#string type|string]].&amp;lt;br&amp;gt;&lt;br /&gt;
The source type must be a member of the target type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 class Animal { ... }&lt;br /&gt;
 class Cat extends Animal { ... }&lt;br /&gt;
 class Dog extends Animal { ... }&lt;br /&gt;
 var cat : Cat = new Cat();&lt;br /&gt;
 var dog : Dog = new Dog();&lt;br /&gt;
 var cat_as_animal : Animal =  cat as Animal; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_cat : Cat = cat_as_animal as Cat; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_dog : Dog = cat as Dog; // KO as the Cat type is not a member of the Dog type.&lt;br /&gt;
 var cat_as_animal_as_dog : Dog = cat_as_animal as Dog; // null as the Cat as Animal type is not a member of the Dog type.&lt;br /&gt;
&lt;br /&gt;
====type (:) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 var ''variable_name'' ''':''' ''type''&lt;br /&gt;
 function ''function_name''(''parameter'' ''':''' ''type'', ...) ''':''' ''return_type'' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies the type for a variable or function declaration.&amp;lt;br/&amp;gt;&lt;br /&gt;
For functions, this operator must be used to specify the return type, and the type of parameters if any.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var language ''':''' string = &amp;quot;GScript&amp;quot;;&lt;br /&gt;
 var version ''':''' int = 3;&lt;br /&gt;
 &lt;br /&gt;
 function sayHello() ''':''' void {&lt;br /&gt;
    echo(&amp;quot;hello&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function addNumbers(a : int, b : int) : int {&lt;br /&gt;
    return a + b;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
====boolean type====&lt;br /&gt;
Enables to define variables, function parameters or return values with two possible values, '''true''' or '''false'''. These values represents the result of logical expressions.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var graal_is_cool : '''boolean''' = true;&lt;br /&gt;
 var is_dark : '''boolean''' = false;&lt;br /&gt;
 var is_light : '''boolean''' = !is_dark;&lt;br /&gt;
&lt;br /&gt;
====int type====&lt;br /&gt;
Enables to define variables, function parameters or return values with a 32-bit signed integer number type.&lt;br /&gt;
&lt;br /&gt;
With this type, you can define integer numbers between -2,147,483,648 (-2 ^ 31) and 2,147,483,647 (2 ^ 31 - 1).&amp;lt;br/&amp;gt;&lt;br /&gt;
To work with floating-point numbers, or define numbers outside this range, the '''number''' type must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var integer_number : '''int''' = 123;&lt;br /&gt;
&lt;br /&gt;
====string type====&lt;br /&gt;
Represents textual data using a string of characters.&amp;lt;br/&amp;gt;&lt;br /&gt;
A string cannot be null but may be empty (with a length of zero).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var text : '''string''' = &amp;quot;hello&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
====void type====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 function ''function_name''( ... ) : '''void''' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies that a function does not return any value.&amp;lt;br/&amp;gt;&lt;br /&gt;
Only empty return statements must be used in functions with '''void''' type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 function emptyFunction() : '''void''' {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function logMessage(message : string, hasLog : boolean) : '''void''' {&lt;br /&gt;
    if (!hasLog)&lt;br /&gt;
       return; // No returned value.&lt;br /&gt;
    echo(message);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Declaration Keywords===&lt;br /&gt;
====const keyword====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 '''const''' ''constant_name'' : type = constant_value;&lt;br /&gt;
&lt;br /&gt;
Specifies a variable with a unique and constant value at compilation and execution time.&amp;lt;br/&amp;gt;&lt;br /&gt;
Constants are automatically inlined to their value by the compiler, so it is recommended for optimization purposes to prefer constants to normal variables when their value never changes.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 const winning_points : int = 1000;&lt;br /&gt;
 const hello_text : string = &amp;quot;hello&amp;quot;;&lt;br /&gt;
 const world_text : string = &amp;quot;world&amp;quot;;&lt;br /&gt;
 const hello_world_text : string = hello_text @ world_text;&lt;br /&gt;
 winning_points = 500; // KO as winning_points must be constant&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19794</id>
		<title>Creation/Dev/GScript3</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19794"/>
		<updated>2013-06-16T00:09:35Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Main changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripting Reference]]&lt;br /&gt;
'''GScript3''' (also known as GS3 or GraalScript3) is the latest version of the [[Creation/Dev/GScript|Graal's scripting language]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It introduces new syntax and semantic elements, and enable new features in Web browsers.&lt;br /&gt;
&lt;br /&gt;
==Quick Help for Server Staff==&lt;br /&gt;
===Enable GS3===&lt;br /&gt;
To use GS3 you need to restart the npcserver and add the server option enablegs3=true. At the start of your script add the line&lt;br /&gt;
  //#GS3&lt;br /&gt;
&lt;br /&gt;
===Conversion Tool===&lt;br /&gt;
To convert scripts from GS2 to GS3 you can use the online tool at http://graalscript3.graalonline.com/&lt;br /&gt;
It can help to convert scripts and also to check for correct syntax, although things like join will not work.&lt;br /&gt;
&lt;br /&gt;
===Extern Declarations===&lt;br /&gt;
Important: for accessing other objects you need to 'include' the other scripts this way (objects are automatically also member of the class of the same name):&lt;br /&gt;
  extern global {&lt;br /&gt;
    var NPCName:NPCName;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
===Interaction with GS2===&lt;br /&gt;
When accessing GS2 objects then you need to declare what members and functions they have, otherwise you will not be able to access them:&lt;br /&gt;
  extern class GS2NPCName extends TServerNPC {&lt;br /&gt;
    var money:int;&lt;br /&gt;
    function addMoney(amount:int):void;&lt;br /&gt;
  }&lt;br /&gt;
  extern global {&lt;br /&gt;
    var GS2NPCName:GS2NPCName;&lt;br /&gt;
  }&lt;br /&gt;
This can be some work, but when the other object is also GS3 then it's much easier (see ''External Declarations'').&lt;br /&gt;
&lt;br /&gt;
===Main changes===&lt;br /&gt;
In GS3 you need to declare variable types, function return types and function parameter types. That way we can automatically check if you access the variable correctly or call a function with the good parameters, which means less errors.&lt;br /&gt;
&lt;br /&gt;
You also need to declare variables of an NPC (at the start of the script):&lt;br /&gt;
  var myvar:string;&lt;br /&gt;
  var myvar2:number;&lt;br /&gt;
This makes it easier to understand a script and handle objects. If you need to store many dynamic variables for an NPC then you can use arrays or dictionaries.&lt;br /&gt;
&lt;br /&gt;
Joining of classes is still possible but not dynamically. So you have to put the join-call outside of any function:&lt;br /&gt;
  join(&amp;quot;myclass&amp;quot;);&lt;br /&gt;
  function onCreated() {&lt;br /&gt;
    // Can't join here with this.join() or so!&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==Language Elements==&lt;br /&gt;
&lt;br /&gt;
===Operators===&lt;br /&gt;
====addition (+) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Adds together ''numeric_expression1'' and ''numeric_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append (@) operator|append (@) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(1 + 2); // 3&lt;br /&gt;
 echo(1.5 + 2.25); // 3.75&lt;br /&gt;
&lt;br /&gt;
====addition assignment (+=) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+=''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Puts the result of ''numeric_expression1'' '''+''' ''numeric_expression2'' into ''numeric_expression1''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
This is a direct equivalent of the following expression:&lt;br /&gt;
 ''numeric_expression1'' '''=''' ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append assignment (@=) operator|append assignment (@=) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var result : int = 10;&lt;br /&gt;
 [[result '''+=''' 20;&lt;br /&gt;
 echo(result); // 30&lt;br /&gt;
]]&lt;br /&gt;
====append (@) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''string_expression1'' '''@''' ''string_expression2''&lt;br /&gt;
&lt;br /&gt;
Concats together ''string_expression1'' and ''string_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be string ([[#string type|string type]]).&lt;br /&gt;
&lt;br /&gt;
To add numbers, the [[#addition (+) operator|addition (+) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(&amp;quot;hello &amp;quot; '''@''' &amp;quot;world&amp;quot;); // &amp;quot;hello world&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====as operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''expression'' '''as''' ''target_type''&lt;br /&gt;
&lt;br /&gt;
Converts the source type of ''expression'' to ''target_type''.&amp;lt;br/&amp;gt;&lt;br /&gt;
The target type must be an object type, not a basic type like [[#int type|int]], '''number''', [[#string type|string]].&amp;lt;br&amp;gt;&lt;br /&gt;
The source type must be a member of the target type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 class Animal { ... }&lt;br /&gt;
 class Cat extends Animal { ... }&lt;br /&gt;
 class Dog extends Animal { ... }&lt;br /&gt;
 var cat : Cat = new Cat();&lt;br /&gt;
 var dog : Dog = new Dog();&lt;br /&gt;
 var cat_as_animal : Animal =  cat as Animal; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_cat : Cat = cat_as_animal as Cat; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_dog : Dog = cat as Dog; // KO as the Cat type is not a member of the Dog type.&lt;br /&gt;
 var cat_as_animal_as_dog : Dog = cat_as_animal as Dog; // null as the Cat as Animal type is not a member of the Dog type.&lt;br /&gt;
&lt;br /&gt;
====type (:) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 var ''variable_name'' ''':''' ''type''&lt;br /&gt;
 function ''function_name''(''parameter'' ''':''' ''type'', ...) ''':''' ''return_type'' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies the type for a variable or function declaration.&amp;lt;br/&amp;gt;&lt;br /&gt;
For functions, this operator must be used to specify the return type, and the type of parameters if any.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var language ''':''' string = &amp;quot;GScript&amp;quot;;&lt;br /&gt;
 var version ''':''' int = 3;&lt;br /&gt;
 &lt;br /&gt;
 function sayHello() ''':''' void {&lt;br /&gt;
    echo(&amp;quot;hello&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function addNumbers(a : int, b : int) : int {&lt;br /&gt;
    return a + b;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
====boolean type====&lt;br /&gt;
Enables to define variables, function parameters or return values with two possible values, '''true''' or '''false'''. These values represents the result of logical expressions.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var graal_is_cool : '''boolean''' = true;&lt;br /&gt;
 var is_dark : '''boolean''' = false;&lt;br /&gt;
 var is_light : '''boolean''' = !is_dark;&lt;br /&gt;
&lt;br /&gt;
====int type====&lt;br /&gt;
Enables to define variables, function parameters or return values with a 32-bit signed integer number type.&lt;br /&gt;
&lt;br /&gt;
With this type, you can define integer numbers between -2,147,483,648 (-2 ^ 31) and 2,147,483,647 (2 ^ 31 - 1).&amp;lt;br/&amp;gt;&lt;br /&gt;
To work with floating-point numbers, or define numbers outside this range, the '''number''' type must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var integer_number : '''int''' = 123;&lt;br /&gt;
&lt;br /&gt;
====string type====&lt;br /&gt;
Represents textual data using a string of characters.&amp;lt;br/&amp;gt;&lt;br /&gt;
A string cannot be null but may be empty (with a length of zero).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var text : '''string''' = &amp;quot;hello&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
====void type====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 function ''function_name''( ... ) : '''void''' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies that a function does not return any value.&amp;lt;br/&amp;gt;&lt;br /&gt;
Only empty return statements must be used in functions with '''void''' type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 function emptyFunction() : '''void''' {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function logMessage(message : string, hasLog : boolean) : '''void''' {&lt;br /&gt;
    if (!hasLog)&lt;br /&gt;
       return; // No returned value.&lt;br /&gt;
    echo(message);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Declaration Keywords===&lt;br /&gt;
====const keyword====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 '''const''' ''constant_name'' : type = constant_value;&lt;br /&gt;
&lt;br /&gt;
Specifies a variable with a unique and constant value at compilation and execution time.&amp;lt;br/&amp;gt;&lt;br /&gt;
Constants are automatically inlined to their value by the compiler, so it is recommended for optimization purposes to prefer constants to normal variables when their value never changes.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 const winning_points : int = 1000;&lt;br /&gt;
 const hello_text : string = &amp;quot;hello&amp;quot;;&lt;br /&gt;
 const world_text : string = &amp;quot;world&amp;quot;;&lt;br /&gt;
 const hello_world_text : string = hello_text @ world_text;&lt;br /&gt;
 winning_points = 500; // KO as winning_points must be constant&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19793</id>
		<title>Creation/Dev/GScript3</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19793"/>
		<updated>2013-06-16T00:02:24Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Interaction with GS2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripting Reference]]&lt;br /&gt;
'''GScript3''' (also known as GS3 or GraalScript3) is the latest version of the [[Creation/Dev/GScript|Graal's scripting language]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It introduces new syntax and semantic elements, and enable new features in Web browsers.&lt;br /&gt;
&lt;br /&gt;
==Quick Help for Server Staff==&lt;br /&gt;
===Enable GS3===&lt;br /&gt;
To use GS3 you need to restart the npcserver and add the server option enablegs3=true. At the start of your script add the line&lt;br /&gt;
  //#GS3&lt;br /&gt;
&lt;br /&gt;
===Conversion Tool===&lt;br /&gt;
To convert scripts from GS2 to GS3 you can use the online tool at http://graalscript3.graalonline.com/&lt;br /&gt;
It can help to convert scripts and also to check for correct syntax, although things like join will not work.&lt;br /&gt;
&lt;br /&gt;
===Extern Declarations===&lt;br /&gt;
Important: for accessing other objects you need to 'include' the other scripts this way (objects are automatically also member of the class of the same name):&lt;br /&gt;
  extern global {&lt;br /&gt;
    var NPCName:NPCName;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
===Interaction with GS2===&lt;br /&gt;
When accessing GS2 objects then you need to declare what members and functions they have, otherwise you will not be able to access them:&lt;br /&gt;
  extern class GS2NPCName extends TServerNPC {&lt;br /&gt;
    var money:int;&lt;br /&gt;
    function addMoney(amount:int):void;&lt;br /&gt;
  }&lt;br /&gt;
  extern global {&lt;br /&gt;
    var GS2NPCName:GS2NPCName;&lt;br /&gt;
  }&lt;br /&gt;
This can be some work, but when the other object is also GS3 then it's much easier (see ''External Declarations'').&lt;br /&gt;
&lt;br /&gt;
===Main changes===&lt;br /&gt;
&lt;br /&gt;
==Language Elements==&lt;br /&gt;
&lt;br /&gt;
===Operators===&lt;br /&gt;
====addition (+) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Adds together ''numeric_expression1'' and ''numeric_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append (@) operator|append (@) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(1 + 2); // 3&lt;br /&gt;
 echo(1.5 + 2.25); // 3.75&lt;br /&gt;
&lt;br /&gt;
====addition assignment (+=) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+=''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Puts the result of ''numeric_expression1'' '''+''' ''numeric_expression2'' into ''numeric_expression1''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
This is a direct equivalent of the following expression:&lt;br /&gt;
 ''numeric_expression1'' '''=''' ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append assignment (@=) operator|append assignment (@=) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var result : int = 10;&lt;br /&gt;
 [[result '''+=''' 20;&lt;br /&gt;
 echo(result); // 30&lt;br /&gt;
]]&lt;br /&gt;
====append (@) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''string_expression1'' '''@''' ''string_expression2''&lt;br /&gt;
&lt;br /&gt;
Concats together ''string_expression1'' and ''string_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be string ([[#string type|string type]]).&lt;br /&gt;
&lt;br /&gt;
To add numbers, the [[#addition (+) operator|addition (+) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(&amp;quot;hello &amp;quot; '''@''' &amp;quot;world&amp;quot;); // &amp;quot;hello world&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====as operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''expression'' '''as''' ''target_type''&lt;br /&gt;
&lt;br /&gt;
Converts the source type of ''expression'' to ''target_type''.&amp;lt;br/&amp;gt;&lt;br /&gt;
The target type must be an object type, not a basic type like [[#int type|int]], '''number''', [[#string type|string]].&amp;lt;br&amp;gt;&lt;br /&gt;
The source type must be a member of the target type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 class Animal { ... }&lt;br /&gt;
 class Cat extends Animal { ... }&lt;br /&gt;
 class Dog extends Animal { ... }&lt;br /&gt;
 var cat : Cat = new Cat();&lt;br /&gt;
 var dog : Dog = new Dog();&lt;br /&gt;
 var cat_as_animal : Animal =  cat as Animal; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_cat : Cat = cat_as_animal as Cat; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_dog : Dog = cat as Dog; // KO as the Cat type is not a member of the Dog type.&lt;br /&gt;
 var cat_as_animal_as_dog : Dog = cat_as_animal as Dog; // null as the Cat as Animal type is not a member of the Dog type.&lt;br /&gt;
&lt;br /&gt;
====type (:) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 var ''variable_name'' ''':''' ''type''&lt;br /&gt;
 function ''function_name''(''parameter'' ''':''' ''type'', ...) ''':''' ''return_type'' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies the type for a variable or function declaration.&amp;lt;br/&amp;gt;&lt;br /&gt;
For functions, this operator must be used to specify the return type, and the type of parameters if any.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var language ''':''' string = &amp;quot;GScript&amp;quot;;&lt;br /&gt;
 var version ''':''' int = 3;&lt;br /&gt;
 &lt;br /&gt;
 function sayHello() ''':''' void {&lt;br /&gt;
    echo(&amp;quot;hello&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function addNumbers(a : int, b : int) : int {&lt;br /&gt;
    return a + b;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
====boolean type====&lt;br /&gt;
Enables to define variables, function parameters or return values with two possible values, '''true''' or '''false'''. These values represents the result of logical expressions.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var graal_is_cool : '''boolean''' = true;&lt;br /&gt;
 var is_dark : '''boolean''' = false;&lt;br /&gt;
 var is_light : '''boolean''' = !is_dark;&lt;br /&gt;
&lt;br /&gt;
====int type====&lt;br /&gt;
Enables to define variables, function parameters or return values with a 32-bit signed integer number type.&lt;br /&gt;
&lt;br /&gt;
With this type, you can define integer numbers between -2,147,483,648 (-2 ^ 31) and 2,147,483,647 (2 ^ 31 - 1).&amp;lt;br/&amp;gt;&lt;br /&gt;
To work with floating-point numbers, or define numbers outside this range, the '''number''' type must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var integer_number : '''int''' = 123;&lt;br /&gt;
&lt;br /&gt;
====string type====&lt;br /&gt;
Represents textual data using a string of characters.&amp;lt;br/&amp;gt;&lt;br /&gt;
A string cannot be null but may be empty (with a length of zero).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var text : '''string''' = &amp;quot;hello&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
====void type====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 function ''function_name''( ... ) : '''void''' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies that a function does not return any value.&amp;lt;br/&amp;gt;&lt;br /&gt;
Only empty return statements must be used in functions with '''void''' type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 function emptyFunction() : '''void''' {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function logMessage(message : string, hasLog : boolean) : '''void''' {&lt;br /&gt;
    if (!hasLog)&lt;br /&gt;
       return; // No returned value.&lt;br /&gt;
    echo(message);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Declaration Keywords===&lt;br /&gt;
====const keyword====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 '''const''' ''constant_name'' : type = constant_value;&lt;br /&gt;
&lt;br /&gt;
Specifies a variable with a unique and constant value at compilation and execution time.&amp;lt;br/&amp;gt;&lt;br /&gt;
Constants are automatically inlined to their value by the compiler, so it is recommended for optimization purposes to prefer constants to normal variables when their value never changes.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 const winning_points : int = 1000;&lt;br /&gt;
 const hello_text : string = &amp;quot;hello&amp;quot;;&lt;br /&gt;
 const world_text : string = &amp;quot;world&amp;quot;;&lt;br /&gt;
 const hello_world_text : string = hello_text @ world_text;&lt;br /&gt;
 winning_points = 500; // KO as winning_points must be constant&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19792</id>
		<title>Creation/Dev/GScript3</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19792"/>
		<updated>2013-06-16T00:02:01Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Quick Help for Server Staff */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripting Reference]]&lt;br /&gt;
'''GScript3''' (also known as GS3 or GraalScript3) is the latest version of the [[Creation/Dev/GScript|Graal's scripting language]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It introduces new syntax and semantic elements, and enable new features in Web browsers.&lt;br /&gt;
&lt;br /&gt;
==Quick Help for Server Staff==&lt;br /&gt;
===Enable GS3===&lt;br /&gt;
To use GS3 you need to restart the npcserver and add the server option enablegs3=true. At the start of your script add the line&lt;br /&gt;
  //#GS3&lt;br /&gt;
&lt;br /&gt;
===Conversion Tool===&lt;br /&gt;
To convert scripts from GS2 to GS3 you can use the online tool at http://graalscript3.graalonline.com/&lt;br /&gt;
It can help to convert scripts and also to check for correct syntax, although things like join will not work.&lt;br /&gt;
&lt;br /&gt;
===Extern Declarations===&lt;br /&gt;
Important: for accessing other objects you need to 'include' the other scripts this way (objects are automatically also member of the class of the same name):&lt;br /&gt;
  extern global {&lt;br /&gt;
    var NPCName:NPCName;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
===Interaction with GS2===&lt;br /&gt;
When accessing GS2 objects then you need to declare what members and functions they have, otherwise you will not be able to access them:&lt;br /&gt;
  extern class GS2NPCName extends TServerNPC {&lt;br /&gt;
    var money:int;&lt;br /&gt;
    function addMoney(amount:int);&lt;br /&gt;
  }&lt;br /&gt;
  extern global {&lt;br /&gt;
    var GS2NPCName:GS2NPCName;&lt;br /&gt;
  }&lt;br /&gt;
This can be some work, but when the other object is also GS3 then it's much easier (see ''External Declarations'').&lt;br /&gt;
&lt;br /&gt;
===Main changes===&lt;br /&gt;
&lt;br /&gt;
==Language Elements==&lt;br /&gt;
&lt;br /&gt;
===Operators===&lt;br /&gt;
====addition (+) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Adds together ''numeric_expression1'' and ''numeric_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append (@) operator|append (@) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(1 + 2); // 3&lt;br /&gt;
 echo(1.5 + 2.25); // 3.75&lt;br /&gt;
&lt;br /&gt;
====addition assignment (+=) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+=''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Puts the result of ''numeric_expression1'' '''+''' ''numeric_expression2'' into ''numeric_expression1''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
This is a direct equivalent of the following expression:&lt;br /&gt;
 ''numeric_expression1'' '''=''' ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append assignment (@=) operator|append assignment (@=) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var result : int = 10;&lt;br /&gt;
 [[result '''+=''' 20;&lt;br /&gt;
 echo(result); // 30&lt;br /&gt;
]]&lt;br /&gt;
====append (@) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''string_expression1'' '''@''' ''string_expression2''&lt;br /&gt;
&lt;br /&gt;
Concats together ''string_expression1'' and ''string_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be string ([[#string type|string type]]).&lt;br /&gt;
&lt;br /&gt;
To add numbers, the [[#addition (+) operator|addition (+) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(&amp;quot;hello &amp;quot; '''@''' &amp;quot;world&amp;quot;); // &amp;quot;hello world&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====as operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''expression'' '''as''' ''target_type''&lt;br /&gt;
&lt;br /&gt;
Converts the source type of ''expression'' to ''target_type''.&amp;lt;br/&amp;gt;&lt;br /&gt;
The target type must be an object type, not a basic type like [[#int type|int]], '''number''', [[#string type|string]].&amp;lt;br&amp;gt;&lt;br /&gt;
The source type must be a member of the target type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 class Animal { ... }&lt;br /&gt;
 class Cat extends Animal { ... }&lt;br /&gt;
 class Dog extends Animal { ... }&lt;br /&gt;
 var cat : Cat = new Cat();&lt;br /&gt;
 var dog : Dog = new Dog();&lt;br /&gt;
 var cat_as_animal : Animal =  cat as Animal; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_cat : Cat = cat_as_animal as Cat; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_dog : Dog = cat as Dog; // KO as the Cat type is not a member of the Dog type.&lt;br /&gt;
 var cat_as_animal_as_dog : Dog = cat_as_animal as Dog; // null as the Cat as Animal type is not a member of the Dog type.&lt;br /&gt;
&lt;br /&gt;
====type (:) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 var ''variable_name'' ''':''' ''type''&lt;br /&gt;
 function ''function_name''(''parameter'' ''':''' ''type'', ...) ''':''' ''return_type'' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies the type for a variable or function declaration.&amp;lt;br/&amp;gt;&lt;br /&gt;
For functions, this operator must be used to specify the return type, and the type of parameters if any.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var language ''':''' string = &amp;quot;GScript&amp;quot;;&lt;br /&gt;
 var version ''':''' int = 3;&lt;br /&gt;
 &lt;br /&gt;
 function sayHello() ''':''' void {&lt;br /&gt;
    echo(&amp;quot;hello&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function addNumbers(a : int, b : int) : int {&lt;br /&gt;
    return a + b;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
====boolean type====&lt;br /&gt;
Enables to define variables, function parameters or return values with two possible values, '''true''' or '''false'''. These values represents the result of logical expressions.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var graal_is_cool : '''boolean''' = true;&lt;br /&gt;
 var is_dark : '''boolean''' = false;&lt;br /&gt;
 var is_light : '''boolean''' = !is_dark;&lt;br /&gt;
&lt;br /&gt;
====int type====&lt;br /&gt;
Enables to define variables, function parameters or return values with a 32-bit signed integer number type.&lt;br /&gt;
&lt;br /&gt;
With this type, you can define integer numbers between -2,147,483,648 (-2 ^ 31) and 2,147,483,647 (2 ^ 31 - 1).&amp;lt;br/&amp;gt;&lt;br /&gt;
To work with floating-point numbers, or define numbers outside this range, the '''number''' type must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var integer_number : '''int''' = 123;&lt;br /&gt;
&lt;br /&gt;
====string type====&lt;br /&gt;
Represents textual data using a string of characters.&amp;lt;br/&amp;gt;&lt;br /&gt;
A string cannot be null but may be empty (with a length of zero).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var text : '''string''' = &amp;quot;hello&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
====void type====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 function ''function_name''( ... ) : '''void''' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies that a function does not return any value.&amp;lt;br/&amp;gt;&lt;br /&gt;
Only empty return statements must be used in functions with '''void''' type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 function emptyFunction() : '''void''' {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function logMessage(message : string, hasLog : boolean) : '''void''' {&lt;br /&gt;
    if (!hasLog)&lt;br /&gt;
       return; // No returned value.&lt;br /&gt;
    echo(message);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Declaration Keywords===&lt;br /&gt;
====const keyword====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 '''const''' ''constant_name'' : type = constant_value;&lt;br /&gt;
&lt;br /&gt;
Specifies a variable with a unique and constant value at compilation and execution time.&amp;lt;br/&amp;gt;&lt;br /&gt;
Constants are automatically inlined to their value by the compiler, so it is recommended for optimization purposes to prefer constants to normal variables when their value never changes.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 const winning_points : int = 1000;&lt;br /&gt;
 const hello_text : string = &amp;quot;hello&amp;quot;;&lt;br /&gt;
 const world_text : string = &amp;quot;world&amp;quot;;&lt;br /&gt;
 const hello_world_text : string = hello_text @ world_text;&lt;br /&gt;
 winning_points = 500; // KO as winning_points must be constant&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19791</id>
		<title>Creation/Dev/GScript3</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19791"/>
		<updated>2013-06-15T23:58:06Z</updated>

		<summary type="html">&lt;p&gt;Stefan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripting Reference]]&lt;br /&gt;
'''GScript3''' (also known as GS3 or GraalScript3) is the latest version of the [[Creation/Dev/GScript|Graal's scripting language]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It introduces new syntax and semantic elements, and enable new features in Web browsers.&lt;br /&gt;
&lt;br /&gt;
==Quick Help for Server Staff==&lt;br /&gt;
===Enable GS3===&lt;br /&gt;
To use GS3 you need to restart the npcserver and add the server option enablegs3=true. At the start of your script add the line&lt;br /&gt;
  //#GS3&lt;br /&gt;
&lt;br /&gt;
===Conversion Tool===&lt;br /&gt;
To convert scripts from GS2 to GS3 you can use the online tool at http://graalscript3.graalonline.com/&lt;br /&gt;
It can help to convert scripts and also to check for correct syntax, although things like join will not work.&lt;br /&gt;
&lt;br /&gt;
===Extern Declarations===&lt;br /&gt;
Important: for accessing other objects you need to 'include' the other scripts this way (objects are automatically also member of the class of the same name):&lt;br /&gt;
  extern global {&lt;br /&gt;
    var NPCName:NPCName;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
===Main changes===&lt;br /&gt;
&lt;br /&gt;
==Language Elements==&lt;br /&gt;
&lt;br /&gt;
===Operators===&lt;br /&gt;
====addition (+) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Adds together ''numeric_expression1'' and ''numeric_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append (@) operator|append (@) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(1 + 2); // 3&lt;br /&gt;
 echo(1.5 + 2.25); // 3.75&lt;br /&gt;
&lt;br /&gt;
====addition assignment (+=) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+=''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Puts the result of ''numeric_expression1'' '''+''' ''numeric_expression2'' into ''numeric_expression1''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
This is a direct equivalent of the following expression:&lt;br /&gt;
 ''numeric_expression1'' '''=''' ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append assignment (@=) operator|append assignment (@=) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var result : int = 10;&lt;br /&gt;
 [[result '''+=''' 20;&lt;br /&gt;
 echo(result); // 30&lt;br /&gt;
]]&lt;br /&gt;
====append (@) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''string_expression1'' '''@''' ''string_expression2''&lt;br /&gt;
&lt;br /&gt;
Concats together ''string_expression1'' and ''string_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be string ([[#string type|string type]]).&lt;br /&gt;
&lt;br /&gt;
To add numbers, the [[#addition (+) operator|addition (+) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(&amp;quot;hello &amp;quot; '''@''' &amp;quot;world&amp;quot;); // &amp;quot;hello world&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====as operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''expression'' '''as''' ''target_type''&lt;br /&gt;
&lt;br /&gt;
Converts the source type of ''expression'' to ''target_type''.&amp;lt;br/&amp;gt;&lt;br /&gt;
The target type must be an object type, not a basic type like [[#int type|int]], '''number''', [[#string type|string]].&amp;lt;br&amp;gt;&lt;br /&gt;
The source type must be a member of the target type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 class Animal { ... }&lt;br /&gt;
 class Cat extends Animal { ... }&lt;br /&gt;
 class Dog extends Animal { ... }&lt;br /&gt;
 var cat : Cat = new Cat();&lt;br /&gt;
 var dog : Dog = new Dog();&lt;br /&gt;
 var cat_as_animal : Animal =  cat as Animal; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_cat : Cat = cat_as_animal as Cat; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_dog : Dog = cat as Dog; // KO as the Cat type is not a member of the Dog type.&lt;br /&gt;
 var cat_as_animal_as_dog : Dog = cat_as_animal as Dog; // null as the Cat as Animal type is not a member of the Dog type.&lt;br /&gt;
&lt;br /&gt;
====type (:) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 var ''variable_name'' ''':''' ''type''&lt;br /&gt;
 function ''function_name''(''parameter'' ''':''' ''type'', ...) ''':''' ''return_type'' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies the type for a variable or function declaration.&amp;lt;br/&amp;gt;&lt;br /&gt;
For functions, this operator must be used to specify the return type, and the type of parameters if any.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var language ''':''' string = &amp;quot;GScript&amp;quot;;&lt;br /&gt;
 var version ''':''' int = 3;&lt;br /&gt;
 &lt;br /&gt;
 function sayHello() ''':''' void {&lt;br /&gt;
    echo(&amp;quot;hello&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function addNumbers(a : int, b : int) : int {&lt;br /&gt;
    return a + b;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
====boolean type====&lt;br /&gt;
Enables to define variables, function parameters or return values with two possible values, '''true''' or '''false'''. These values represents the result of logical expressions.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var graal_is_cool : '''boolean''' = true;&lt;br /&gt;
 var is_dark : '''boolean''' = false;&lt;br /&gt;
 var is_light : '''boolean''' = !is_dark;&lt;br /&gt;
&lt;br /&gt;
====int type====&lt;br /&gt;
Enables to define variables, function parameters or return values with a 32-bit signed integer number type.&lt;br /&gt;
&lt;br /&gt;
With this type, you can define integer numbers between -2,147,483,648 (-2 ^ 31) and 2,147,483,647 (2 ^ 31 - 1).&amp;lt;br/&amp;gt;&lt;br /&gt;
To work with floating-point numbers, or define numbers outside this range, the '''number''' type must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var integer_number : '''int''' = 123;&lt;br /&gt;
&lt;br /&gt;
====string type====&lt;br /&gt;
Represents textual data using a string of characters.&amp;lt;br/&amp;gt;&lt;br /&gt;
A string cannot be null but may be empty (with a length of zero).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var text : '''string''' = &amp;quot;hello&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
====void type====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 function ''function_name''( ... ) : '''void''' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies that a function does not return any value.&amp;lt;br/&amp;gt;&lt;br /&gt;
Only empty return statements must be used in functions with '''void''' type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 function emptyFunction() : '''void''' {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function logMessage(message : string, hasLog : boolean) : '''void''' {&lt;br /&gt;
    if (!hasLog)&lt;br /&gt;
       return; // No returned value.&lt;br /&gt;
    echo(message);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Declaration Keywords===&lt;br /&gt;
====const keyword====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 '''const''' ''constant_name'' : type = constant_value;&lt;br /&gt;
&lt;br /&gt;
Specifies a variable with a unique and constant value at compilation and execution time.&amp;lt;br/&amp;gt;&lt;br /&gt;
Constants are automatically inlined to their value by the compiler, so it is recommended for optimization purposes to prefer constants to normal variables when their value never changes.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 const winning_points : int = 1000;&lt;br /&gt;
 const hello_text : string = &amp;quot;hello&amp;quot;;&lt;br /&gt;
 const world_text : string = &amp;quot;world&amp;quot;;&lt;br /&gt;
 const hello_world_text : string = hello_text @ world_text;&lt;br /&gt;
 winning_points = 500; // KO as winning_points must be constant&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19790</id>
		<title>Creation/Dev/GScript3</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/GScript3&amp;diff=19790"/>
		<updated>2013-06-15T23:51:36Z</updated>

		<summary type="html">&lt;p&gt;Stefan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripting Reference]]&lt;br /&gt;
'''GScript3''' (also known as GS3 or GraalScript3) is the latest version of the [[Creation/Dev/GScript|Graal's scripting language]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It introduces new syntax and semantic elements, and enable new features in Web browsers.&lt;br /&gt;
&lt;br /&gt;
==Language Elements==&lt;br /&gt;
&lt;br /&gt;
===Operators===&lt;br /&gt;
====addition (+) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Adds together ''numeric_expression1'' and ''numeric_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append (@) operator|append (@) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(1 + 2); // 3&lt;br /&gt;
 echo(1.5 + 2.25); // 3.75&lt;br /&gt;
&lt;br /&gt;
====addition assignment (+=) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''numeric_expression1'' '''+=''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
Puts the result of ''numeric_expression1'' '''+''' ''numeric_expression2'' into ''numeric_expression1''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be numeric ([[#int type|int]] or '''number''' types).&lt;br /&gt;
&lt;br /&gt;
This is a direct equivalent of the following expression:&lt;br /&gt;
 ''numeric_expression1'' '''=''' ''numeric_expression1'' '''+''' ''numeric_expression2''&lt;br /&gt;
&lt;br /&gt;
To concatenate strings, the [[#append assignment (@=) operator|append assignment (@=) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var result : int = 10;&lt;br /&gt;
 result '''+=''' 20;&lt;br /&gt;
 echo(result); // 30&lt;br /&gt;
&lt;br /&gt;
====append (@) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''string_expression1'' '''@''' ''string_expression2''&lt;br /&gt;
&lt;br /&gt;
Concats together ''string_expression1'' and ''string_expression2''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Both expressions must be string ([[#string type|string type]]).&lt;br /&gt;
&lt;br /&gt;
To add numbers, the [[#addition (+) operator|addition (+) operator]] must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 echo(&amp;quot;hello &amp;quot; '''@''' &amp;quot;world&amp;quot;); // &amp;quot;hello world&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====as operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 ''expression'' '''as''' ''target_type''&lt;br /&gt;
&lt;br /&gt;
Converts the source type of ''expression'' to ''target_type''.&amp;lt;br/&amp;gt;&lt;br /&gt;
The target type must be an object type, not a basic type like [[#int type|int]], '''number''', [[#string type|string]].&amp;lt;br&amp;gt;&lt;br /&gt;
The source type must be a member of the target type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 class Animal { ... }&lt;br /&gt;
 class Cat extends Animal { ... }&lt;br /&gt;
 class Dog extends Animal { ... }&lt;br /&gt;
 var cat : Cat = new Cat();&lt;br /&gt;
 var dog : Dog = new Dog();&lt;br /&gt;
 var cat_as_animal : Animal =  cat as Animal; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_cat : Cat = cat_as_animal as Cat; // OK as the Cat type is a member of the Animal type.&lt;br /&gt;
 var cat_as_dog : Dog = cat as Dog; // KO as the Cat type is not a member of the Dog type.&lt;br /&gt;
 var cat_as_animal_as_dog : Dog = cat_as_animal as Dog; // null as the Cat as Animal type is not a member of the Dog type.&lt;br /&gt;
&lt;br /&gt;
====type (:) operator====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 var ''variable_name'' ''':''' ''type''&lt;br /&gt;
 function ''function_name''(''parameter'' ''':''' ''type'', ...) ''':''' ''return_type'' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies the type for a variable or function declaration.&amp;lt;br/&amp;gt;&lt;br /&gt;
For functions, this operator must be used to specify the return type, and the type of parameters if any.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var language ''':''' string = &amp;quot;GScript&amp;quot;;&lt;br /&gt;
 var version ''':''' int = 3;&lt;br /&gt;
 &lt;br /&gt;
 function sayHello() ''':''' void {&lt;br /&gt;
    echo(&amp;quot;hello&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function addNumbers(a : int, b : int) : int {&lt;br /&gt;
    return a + b;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
====boolean type====&lt;br /&gt;
Enables to define variables, function parameters or return values with two possible values, '''true''' or '''false'''. These values represents the result of logical expressions.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var graal_is_cool : '''boolean''' = true;&lt;br /&gt;
 var is_dark : '''boolean''' = false;&lt;br /&gt;
 var is_light : '''boolean''' = !is_dark;&lt;br /&gt;
&lt;br /&gt;
====int type====&lt;br /&gt;
Enables to define variables, function parameters or return values with a 32-bit signed integer number type.&lt;br /&gt;
&lt;br /&gt;
With this type, you can define integer numbers between -2,147,483,648 (-2 ^ 31) and 2,147,483,647 (2 ^ 31 - 1).&amp;lt;br/&amp;gt;&lt;br /&gt;
To work with floating-point numbers, or define numbers outside this range, the '''number''' type must be used instead.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var integer_number : '''int''' = 123;&lt;br /&gt;
&lt;br /&gt;
====string type====&lt;br /&gt;
Represents textual data using a string of characters.&amp;lt;br/&amp;gt;&lt;br /&gt;
A string cannot be null but may be empty (with a length of zero).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 var text : '''string''' = &amp;quot;hello&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
====void type====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 function ''function_name''( ... ) : '''void''' { ... }&lt;br /&gt;
&lt;br /&gt;
Specifies that a function does not return any value.&amp;lt;br/&amp;gt;&lt;br /&gt;
Only empty return statements must be used in functions with '''void''' type.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 function emptyFunction() : '''void''' {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function logMessage(message : string, hasLog : boolean) : '''void''' {&lt;br /&gt;
    if (!hasLog)&lt;br /&gt;
       return; // No returned value.&lt;br /&gt;
    echo(message);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Declaration Keywords===&lt;br /&gt;
====const keyword====&lt;br /&gt;
'''Usage'''&lt;br /&gt;
 '''const''' ''constant_name'' : type = constant_value;&lt;br /&gt;
&lt;br /&gt;
Specifies a variable with a unique and constant value at compilation and execution time.&amp;lt;br/&amp;gt;&lt;br /&gt;
Constants are automatically inlined to their value by the compiler, so it is recommended for optimization purposes to prefer constants to normal variables when their value never changes.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 const winning_points : int = 1000;&lt;br /&gt;
 const hello_text : string = &amp;quot;hello&amp;quot;;&lt;br /&gt;
 const world_text : string = &amp;quot;world&amp;quot;;&lt;br /&gt;
 const hello_world_text : string = hello_text @ world_text;&lt;br /&gt;
 winning_points = 500; // KO as winning_points must be constant&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=User:Stephane&amp;diff=19763</id>
		<title>User:Stephane</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=User:Stephane&amp;diff=19763"/>
		<updated>2013-06-01T15:14:58Z</updated>

		<summary type="html">&lt;p&gt;Stefan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Users]][[Category:Administration]][[Category:Global Staff]]&lt;br /&gt;
{{player}}&lt;br /&gt;
'''Stephane Portha''' is the manager of [[Graal|GraalOnline]]. He manages the company hosting GraalOnline servers and making Graal software development, and is the Graal's highest-ranked staff, along with [[User:Stefan|Stefan]].&lt;br /&gt;
&lt;br /&gt;
==Staff Positions==&lt;br /&gt;
Whilst Stefan leads Graal development and programming efforts, Stephane manages networking, staff and public relations.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[[http://www.portha.com Homepage]]&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
Stephane is very rarely found on [[Graal]] servers. The best way to contact him is through the [[Support Center]] or a [[GCC:PM]]&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=User:Stephane&amp;diff=19762</id>
		<title>User:Stephane</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=User:Stephane&amp;diff=19762"/>
		<updated>2013-06-01T14:59:28Z</updated>

		<summary type="html">&lt;p&gt;Stefan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Users]][[Category:Administration]][[Category:Global Staff]]&lt;br /&gt;
{{player}}&lt;br /&gt;
'''Stephane Portha''' is the manager of [[Graal|GraalOnline]]. He manages the company hosting GraalOnline servers and making Graal software development, and is the Graal's highest-ranked staff, along with [[User:Stefan|Stefan]].&lt;br /&gt;
&lt;br /&gt;
==Staff Positions==&lt;br /&gt;
Whilst Stefan leads Graal development and programming efforts, Stephane manages networking, staff and public relations.&lt;br /&gt;
&lt;br /&gt;
==Accounts==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Email address'''&lt;br /&gt;
| '''Admin level'''&lt;br /&gt;
| '''Free upgrades'''&lt;br /&gt;
| '''Comments'''&lt;br /&gt;
|-&lt;br /&gt;
| unixmad&lt;br /&gt;
| Private&lt;br /&gt;
| 5/all&lt;br /&gt;
| [[Gold account|Gold]], [[VIP account|VIP]], [[3D account|3D]]&lt;br /&gt;
| Main admin account&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[[http://www.portha.com Homepage]]&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
Stephane is very rarely found on [[Graal]] servers. The best way to contact him is through the [[Support Center]] or a [[GCC:PM]]&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=User:Stephane&amp;diff=19761</id>
		<title>User:Stephane</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=User:Stephane&amp;diff=19761"/>
		<updated>2013-06-01T14:59:03Z</updated>

		<summary type="html">&lt;p&gt;Stefan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Users]][[Category:Administration]][[Category:Global Staff]]&lt;br /&gt;
{{player}}&lt;br /&gt;
'''Stephane Portha''' (in-game nick name unix or unixmad) is the manager of [[Graal|GraalOnline]]. He manages the company hosting GraalOnline servers and making Graal software development, and is the Graal's highest-ranked staff, along with [[User:Stefan|Stefan]].&lt;br /&gt;
&lt;br /&gt;
==Staff Positions==&lt;br /&gt;
Whilst Stefan leads Graal development and programming efforts, Stephane manages networking, staff and public relations.&lt;br /&gt;
&lt;br /&gt;
==Accounts==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Email address'''&lt;br /&gt;
| '''Admin level'''&lt;br /&gt;
| '''Free upgrades'''&lt;br /&gt;
| '''Comments'''&lt;br /&gt;
|-&lt;br /&gt;
| unixmad&lt;br /&gt;
| Private&lt;br /&gt;
| 5/all&lt;br /&gt;
| [[Gold account|Gold]], [[VIP account|VIP]], [[3D account|3D]]&lt;br /&gt;
| Main admin account&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[[http://www.portha.com Homepage]]&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
Stephane is very rarely found on [[Graal]] servers. The best way to contact him is through the [[Support Center]] or a [[GCC:PM]]&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=News/2007/July&amp;diff=19760</id>
		<title>News/2007/July</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=News/2007/July&amp;diff=19760"/>
		<updated>2013-06-01T14:56:04Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* July */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== July ===&lt;br /&gt;
&lt;br /&gt;
* '''July 24th''' - '''First step for economy fix on Era''' {{News/Playerworlds/Era}}&lt;br /&gt;
[[Image:flowershop.PNG|left]]Yesterday was the first of many changes. Flower shop bouquet making was removed for economical purposes. Although players might not be able to make money as fast with bouquets gone, but now it requires less physical labor to make money off of flower picking. Simply drop your flowers in groups of 10 in front of Marygold to receive your payment.&lt;br /&gt;
&lt;br /&gt;
With the removal of bouquets, the staff team decided to raise the price in which the store will buy your flowers for. The following changes are listed below. (Note: this is per 10 flowers)&lt;br /&gt;
&lt;br /&gt;
* 10 mums - $2&lt;br /&gt;
* 10 tulips - $5&lt;br /&gt;
* 10 carnations - $6&lt;br /&gt;
* 10 asters - $7&lt;br /&gt;
* 10 sunflowers - $7&lt;br /&gt;
* 10 roses - $8&lt;br /&gt;
&lt;br /&gt;
Prices were chosen by the rarity of each type of flower throughout the gmap. Further job updates will be given to mining and shell digging.&lt;br /&gt;
&lt;br /&gt;
* '''July 20th''' - '''Visible amulets and shipyardrights on Kingdoms''' {{News/Graal_Kingdoms}}&lt;br /&gt;
[[Image:amulets_visible.jpg|thumb|left]]On Graal Kingdoms it's now possible to show off the amulet your wear. You can show/hide it like the cape by right-clicking it in the inventory and selecting the option. Show what you got, it'll look nice.&lt;br /&gt;
&lt;br /&gt;
While doing that we also added support for masks to be hidden after a couple of players suggested that.&lt;br /&gt;
&lt;br /&gt;
Now it is possible to protect the kingdom's shipyard even better. We added a new kingdomright called &amp;quot;S&amp;quot; - Shipyard. You will need this right now if you want to open or close the gate of the shipyard. So the leadership of the kingdom has a well knowledge about who can access the kingdom's ships.&lt;br /&gt;
&lt;br /&gt;
* '''July 17th''' - '''Blackjack tournement on Kingdoms''' {{News/Graal_Kingdoms}}&lt;br /&gt;
Today we had a big blackjack tournement on Graal Kingdoms which took almost 2 hours. After the pre-match Leon Xanadu won the grand final and gained a Ring of the Card Champions. He was followed by Lale Cruxis and Javalin.&lt;br /&gt;
&lt;br /&gt;
* '''July 14th''' - '''Graal v5 released!'''&lt;br /&gt;
As you may have noticed, the new ''Graal version 5'' has been released.  Many changes and new features are included in this version.  If you are experiencing any bugs or wish to submit features that you would like to see, please log-in to the Graal forums and post in the v5 section [http://forums.graalonline.com/forums/forumdisplay.php?f=192 here].  Both Stephane and Stefan are working very hard to fix the handful of bugs that users are experiencing.  Hope you enjoy!&lt;br /&gt;
&lt;br /&gt;
* '''July 10th''' - '''Graal v5 is near!'''&lt;br /&gt;
[[Image:features_vista.jpg|thumb|left]]&lt;br /&gt;
An announcement has been made for the new Graal version 5 that includes many updates for both the Graal client and the website!  A thread has been posted by [[user:Stephane|Stephane]] detailing many of the features coming in this update.  This thread may be found [http://forums.graalonline.com/forums/showthread.php?t=75224 here].&lt;br /&gt;
For more details on the features to come, check [http://www.graalonline.com/newsletter/2007-07/newsletter.html the Newsletter].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both&amp;quot;&amp;gt; &amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=GRWAL_the_Comic&amp;diff=19759</id>
		<title>GRWAL the Comic</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=GRWAL_the_Comic&amp;diff=19759"/>
		<updated>2013-06-01T14:55:00Z</updated>

		<summary type="html">&lt;p&gt;Stefan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Graal History]]&lt;br /&gt;
[http://forums.graalonline.com/forums/showthread.php?t=52606 GRWAL: The Comic] is a 26-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 [[User:Stefan|Stefan]], [[User:Stephane|Stephane]] (unix), [[User:Googi|Googi]], [[User:Kaimetsu|Kaimetsu]] and [[User:Tyhm|Thym]].  The comic has a few basic storylines but is largely meant to be a comedy.  The 26 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;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=1068744#post1068744 Chapter 20: From the Secret Files of the CIA]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=1079088#post1079088 Chapter 22: Guess Who's Back!]&lt;br /&gt;
*[http://forums.graalonline.com/forums/showthread.php?p=1082798#post1082798 Chapter 23: Zoom Zoom Zoom!]&lt;br /&gt;
*[http://forums.graalonline.com/forums/showthread.php?p=1086143#post1086143 Chapter 24: NPCSERVER ATTACK!]&lt;br /&gt;
*[http://forums.graalonline.com/forums/showthread.php?p=1092702#post1092702 Chapter 25: Undrow]&lt;br /&gt;
*[http://forums.graalonline.com/forums/showthread.php?p=1096898#post1096898 Chapter 26: The Chapter About Neither of Them]&lt;br /&gt;
 &lt;br /&gt;
There is also a [http://forums.graalonline.com/forums/attachment.php?attachmentid=32308 single page] created by Googi as a response to a serverlist crash.&lt;br /&gt;
&lt;br /&gt;
Chapter 1-24 in [http://www.4inthemorning.com/fry/grawl.rar one file] (~50.5M), thanks to Sern for the space. (fry)&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Worlds/Era_Facebook&amp;diff=19758</id>
		<title>Worlds/Era Facebook</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Worlds/Era_Facebook&amp;diff=19758"/>
		<updated>2013-06-01T14:54:03Z</updated>

		<summary type="html">&lt;p&gt;Stefan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Worlds]][[Category:Era Facebook]][[Category:Facebook]]&lt;br /&gt;
{{Facebook World}}&lt;br /&gt;
&lt;br /&gt;
{{Template:Under Construction|author=[[User:MattKan|MattKan]], former [[Global News Team|Global News Team]] member}}&lt;br /&gt;
&lt;br /&gt;
= Technical Information =&lt;br /&gt;
&lt;br /&gt;
The server will run inside of as a Facebook Application.  This is possible because the V6 client is fully web based and will be able to run inside Windows Flash Player 10 on Windows, Mac, and Linux.  No other technical information has been released at this point.&lt;br /&gt;
&lt;br /&gt;
= Gameplay / Information =&lt;br /&gt;
&lt;br /&gt;
The server is said to be a Facebook port of [[Worlds/Era iPhone|Era iPhone]].  &lt;br /&gt;
&lt;br /&gt;
= History =&lt;br /&gt;
&lt;br /&gt;
On March 29, 2011, a [http://forums.graalonline.com/forums/showthread.php?t=134262469 teaser thread] was released on then [http://forums.graalonline.com/forums/ GraalOnline Forums] hinting that big news was due to come.  [[User:Stephane|Stephane]], who had posted the thread, told of a contest saying that the three users who were first to correctly guess what the surprise would be permitted to beta test the program.  Three lucky individuals who guessed Graal Facebook won the prize of testing the upcoming Facebook servers.  The two servers that would be available on Graal Facebook were said to be ports of [[Worlds/Classic iPhone|Classic iPhone]] and [[Worlds/Era iPhone|Era iPhone]].  (The Classic Facebook page can be found [[Worlds/Classic Facebook|here]]).  In addition, [[User:Stephane|Stephane]] also stated that the server would be released in mid April. It has been released shortly after, not as a separate server - iPhone players and Facebook players play on the same server.&lt;br /&gt;
&lt;br /&gt;
= External Links =&lt;br /&gt;
&lt;br /&gt;
*[http://forums.graalonline.com/forums/showthread.php?t=134262469 Graal Communication Center - Teaser Thread]&lt;br /&gt;
*[http://forums.graalonline.com/forums/showthread.php?t=134262480 Graal Communication Center - Announcement Thread]&lt;br /&gt;
&lt;br /&gt;
{{Template:Facebook_World}}&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Worlds/Era_Facebook&amp;diff=19757</id>
		<title>Worlds/Era Facebook</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Worlds/Era_Facebook&amp;diff=19757"/>
		<updated>2013-06-01T14:53:46Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Worlds]][[Category:Era Facebook]][[Category:Facebook]]&lt;br /&gt;
{{Facebook World}}&lt;br /&gt;
&lt;br /&gt;
{{Template:Under Construction|author=[[User:MattKan|MattKan]], former [[Global News Team|Global News Team]] member}}&lt;br /&gt;
&lt;br /&gt;
= Technical Information =&lt;br /&gt;
&lt;br /&gt;
The server will run inside of as a Facebook Application.  This is possible because the V6 client is fully web based and will be able to run inside Windows Flash Player 10 on Windows, Mac, and Linux.  No other technical information has been released at this point.&lt;br /&gt;
&lt;br /&gt;
= Gameplay / Information =&lt;br /&gt;
&lt;br /&gt;
The server is said to be a Facebook port of [[Worlds/Era iPhone|Era iPhone]].  &lt;br /&gt;
&lt;br /&gt;
= History =&lt;br /&gt;
&lt;br /&gt;
On March 29, 2011, a [http://forums.graalonline.com/forums/showthread.php?t=134262469 teaser thread] was released on then [http://forums.graalonline.com/forums/ GraalOnline Forums] hinting that big news was due to come.  [[User:Stephane|Stephane]], who had posted the thread, told of a contest saying that the three users who were first to correctly guess what the surprise would be permitted to beta test the program.  Three lucky individuals who guessed Graal Facebook won the prize of testing the upcoming Facebook servers.  The two servers that would be available on Graal Facebook were said to be ports of [[Worlds/Classic iPhone|Classic iPhone]] and [[Worlds/Era iPhone|Era iPhone]].  (The Classic Facebook page can be found [[Worlds/Classic Facebook|here]]).  In addition, [[User:Stephane|Stephane]] also stated that the server would be released in mid April. It has been released shortly after, not as a separate server - iPhone players and Facebook players play on the same server.&lt;br /&gt;
&lt;br /&gt;
= Staff Team =&lt;br /&gt;
&lt;br /&gt;
No information about the staff team has been released yet, other than the fact the server is going to be run by [[User:Stefan|Stefan]] and [[User:Unixmad|Unixmad]].  Many Graalians predict that the server will have the same staff team as [[Worlds/Era iPhone|Era iPhone]].  Eurocenter interns [[User:Remi|Remi]] and [[User:Marion|Marion]] may or may not be involved in this project, though the prior seems to be more likely.&lt;br /&gt;
&lt;br /&gt;
= Screenshots =&lt;br /&gt;
&lt;br /&gt;
Screenshots will be released as they become available.&lt;br /&gt;
&lt;br /&gt;
= External Links =&lt;br /&gt;
&lt;br /&gt;
*[http://forums.graalonline.com/forums/showthread.php?t=134262469 Graal Communication Center - Teaser Thread]&lt;br /&gt;
*[http://forums.graalonline.com/forums/showthread.php?t=134262480 Graal Communication Center - Announcement Thread]&lt;br /&gt;
&lt;br /&gt;
{{Template:Facebook_World}}&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Worlds/Era_Facebook&amp;diff=19756</id>
		<title>Worlds/Era Facebook</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Worlds/Era_Facebook&amp;diff=19756"/>
		<updated>2013-06-01T14:52:10Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Worlds]][[Category:Era Facebook]][[Category:Facebook]]&lt;br /&gt;
{{Facebook World}}&lt;br /&gt;
&lt;br /&gt;
{{Template:Under Construction|author=[[User:MattKan|MattKan]], former [[Global News Team|Global News Team]] member}}&lt;br /&gt;
&lt;br /&gt;
= Technical Information =&lt;br /&gt;
&lt;br /&gt;
The server will run inside of as a Facebook Application.  This is possible because the V6 client is fully web based and will be able to run inside Windows Flash Player 10 on Windows, Mac, and Linux.  No other technical information has been released at this point.&lt;br /&gt;
&lt;br /&gt;
= Gameplay / Information =&lt;br /&gt;
&lt;br /&gt;
The server is said to be a Facebook port of [[Worlds/Era iPhone|Era iPhone]].  &lt;br /&gt;
&lt;br /&gt;
= History =&lt;br /&gt;
&lt;br /&gt;
On March 29, 2011, a [http://forums.graalonline.com/forums/showthread.php?t=134262469 teaser thread] was released on then [http://forums.graalonline.com/forums/ GraalOnline Forums] hinting that big news was due to come.  [[User:Stephane|Stephane]], who had posted the thread, told of a contest saying that the three users who were first to correctly guess what the surprise would be permitted to beta test the program.  Three lucky individuals who guessed Graal Facebook won the prize of testing the upcoming Facebook servers.  The two servers that would be available on Graal Facebook were said to be ports of [[Worlds/Classic iPhone|Classic iPhone]] and [[Worlds/Era iPhone|Era iPhone]].  (The Classic Facebook page can be found [[Worlds/Classic Facebook|here]]).  In addition, [[User:Stephane|Stephane]] also stated that the server would be released in mid April. It has been released shortly after.&lt;br /&gt;
&lt;br /&gt;
= Staff Team =&lt;br /&gt;
&lt;br /&gt;
No information about the staff team has been released yet, other than the fact the server is going to be run by [[User:Stefan|Stefan]] and [[User:Unixmad|Unixmad]].  Many Graalians predict that the server will have the same staff team as [[Worlds/Era iPhone|Era iPhone]].  Eurocenter interns [[User:Remi|Remi]] and [[User:Marion|Marion]] may or may not be involved in this project, though the prior seems to be more likely.&lt;br /&gt;
&lt;br /&gt;
= Screenshots =&lt;br /&gt;
&lt;br /&gt;
Screenshots will be released as they become available.&lt;br /&gt;
&lt;br /&gt;
= External Links =&lt;br /&gt;
&lt;br /&gt;
*[http://forums.graalonline.com/forums/showthread.php?t=134262469 Graal Communication Center - Teaser Thread]&lt;br /&gt;
*[http://forums.graalonline.com/forums/showthread.php?t=134262480 Graal Communication Center - Announcement Thread]&lt;br /&gt;
&lt;br /&gt;
{{Template:Facebook_World}}&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Worlds/Era_Facebook&amp;diff=19755</id>
		<title>Worlds/Era Facebook</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Worlds/Era_Facebook&amp;diff=19755"/>
		<updated>2013-06-01T14:51:18Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Worlds]][[Category:Era Facebook]][[Category:Facebook]]&lt;br /&gt;
{{Facebook World}}&lt;br /&gt;
&lt;br /&gt;
{{Template:Under Construction|author=[[User:MattKan|MattKan]], former [[Global News Team|Global News Team]] member}}&lt;br /&gt;
&lt;br /&gt;
= Technical Information =&lt;br /&gt;
&lt;br /&gt;
The server will run inside of as a Facebook Application.  This is possible because the V6 client is fully web based and will be able to run inside Windows Flash Player 10 on Windows, Mac, and Linux.  No other technical information has been released at this point.&lt;br /&gt;
&lt;br /&gt;
= Gameplay / Information =&lt;br /&gt;
&lt;br /&gt;
The server is said to be a Facebook port of [[Worlds/Era iPhone|Era iPhone]].  &lt;br /&gt;
&lt;br /&gt;
= History =&lt;br /&gt;
&lt;br /&gt;
On March 29, 2011, a [http://forums.graalonline.com/forums/showthread.php?t=134262469 teaser thread] was released on then [http://forums.graalonline.com/forums/ GraalOnline Forums] hinting that big news was due to come.  [[User:Stephane|Stephane]], who had posted the thread, told of a contest saying that the three users who were first to correctly guess what the surprise would be permitted to beta test the program.  Three lucky individuals who guessed Graal Facebook won the prize of testing the upcoming Facebook servers.  The two servers that would be available on Graal Facebook were said to be ports of [[Worlds/Classic iPhone|Classic iPhone]] and [[Worlds/Era iPhone|Era iPhone]].  (The Classic Facebook page can be found [[Worlds/Classic Facebook|here]]).  In addition, [[User:Stephane|Stephane]] also stated that the server would be released in mid April.  Unfortunately, the release date was not met, and the servers has still have not been released.&lt;br /&gt;
&lt;br /&gt;
= Staff Team =&lt;br /&gt;
&lt;br /&gt;
No information about the staff team has been released yet, other than the fact the server is going to be run by [[User:Stefan|Stefan]] and [[User:Unixmad|Unixmad]].  Many Graalians predict that the server will have the same staff team as [[Worlds/Era iPhone|Era iPhone]].  Eurocenter interns [[User:Remi|Remi]] and [[User:Marion|Marion]] may or may not be involved in this project, though the prior seems to be more likely.&lt;br /&gt;
&lt;br /&gt;
= Screenshots =&lt;br /&gt;
&lt;br /&gt;
Screenshots will be released as they become available.&lt;br /&gt;
&lt;br /&gt;
= External Links =&lt;br /&gt;
&lt;br /&gt;
*[http://forums.graalonline.com/forums/showthread.php?t=134262469 Graal Communication Center - Teaser Thread]&lt;br /&gt;
*[http://forums.graalonline.com/forums/showthread.php?t=134262480 Graal Communication Center - Announcement Thread]&lt;br /&gt;
&lt;br /&gt;
{{Template:Facebook_World}}&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Worlds/Classic_Facebook&amp;diff=19754</id>
		<title>Worlds/Classic Facebook</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Worlds/Classic_Facebook&amp;diff=19754"/>
		<updated>2013-06-01T14:50:33Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Worlds]][[Category:Classic Facebook]][[Category:Facebook]]&lt;br /&gt;
{{Template:FacebookWorld}}&lt;br /&gt;
&lt;br /&gt;
= Technical Information =&lt;br /&gt;
&lt;br /&gt;
The server runs inside of as a Facebook Application.  This is possible because the V6 client is fully web based and will be able to run inside Windows Flash Player 10 on Windows, Mac, and Linux.  As does [[Worlds/Classic iPhone|Classic iPhone]], this server fully supports Graal like any other server, which means it is possible for developers to use tools such as [[Creation/Dev/Level_editor|Graal Editor]] (and script using [[Creation/Dev/GScript|GScript2]], of course) to build content that can be run on both the PC client and the Facebook Client.&lt;br /&gt;
&lt;br /&gt;
= Gameplay / Information =&lt;br /&gt;
&lt;br /&gt;
The server is a Facebook optimized direct port of [[Worlds/Classic iPhone|Classic iPhone]] except for the small differences in the tileset and the levels.&lt;br /&gt;
&lt;br /&gt;
A new VIP subscription feature has been added: for a fee of 7,500 gralats a month, players can purchase a VIP subscription.  This subscription grants players the ability to play on the '''Classic Facebook''' server using their iDevices (as well as the ability to play [[Worlds/Classic iPhone|Classic iPhone]] using their '''Classic Facebook''' account.  (This gives players the much anticipated ability to play on Classic iPhone using their computers.)  In addition, players are given a free VIP-only item once a month.&lt;br /&gt;
&lt;br /&gt;
So far, VIP has suceeded, and is expected to continue to do so.&lt;br /&gt;
&lt;br /&gt;
= History =&lt;br /&gt;
&lt;br /&gt;
On March 29, 2011, a [http://forums.graalonline.com/forums/showthread.php?t=134262469 teaser thread] was released on then [http://forums.graalonline.com/forums/ GraalOnline Forums] hinting that big news was due to come.  [[User:Stephane|Stephane]], who had posted the thread, told of a contest saying that the three users who were first to correctly guess what the surprise would be permitted to beta test the program.  Three lucky individuals who guessed Graal Facebook won the prize of testing the upcoming Facebook servers.  The two servers that would be available on Graal Facebook were said to be ports of [[Worlds/Classic iPhone|Classic iPhone]] and [[Worlds/Era iPhone|Era iPhone]].  (The Era Facebook page can be found [[Worlds/Era Facebook|here]]).  In addition, [[User:Stephane|Stephane]] also stated that the server would be released in mid April.  For a few months, no information was released about the server, and Graalians were starting to lose hope that the server would ever release.&lt;br /&gt;
&lt;br /&gt;
Thoughts that the server would never be released were proven wrong on July 13, 2011; the [http://apps.facebook.com/graalclassic/ Graal Facebook Application] was released.  The server so far has been a key part of the VIP update that was presented to the players of both this server and [[Worlds/Classic iPhone|Classic iPhone]] - see '''''Gameplay / Information''''' (above) for more information on VIP.&lt;br /&gt;
&lt;br /&gt;
= Staff Team =&lt;br /&gt;
&lt;br /&gt;
The server '''Classic Facebook''' shares an identical staff team with [[Worlds/Classic iPhone|Classic iPhone]] with each staff presenting loyalties to either server.  Both servers are owned by [[User:Stefan|Stefan]] and [[User:Stephane|Stephane]].&lt;br /&gt;
&lt;br /&gt;
{{Template:Classic iPhone Staff}}&lt;br /&gt;
&lt;br /&gt;
= Screenshot Gallery =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; bgcolor=&amp;quot;#f8f8f8&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;border-collapse: collapse; border: solid 1px gray;&amp;quot;&lt;br /&gt;
| [[File:classicfacebook1.png]]&lt;br /&gt;
| [[File:classicfacebook2.png]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:classicfacebook3.png]]&lt;br /&gt;
| [[File:classicfacebook4.png]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= External Links =&lt;br /&gt;
&lt;br /&gt;
* [http://apps.facebook.com/graalclassic GraalOnline Classic Facebook App]&lt;br /&gt;
* [http://classiciframe.graalonline.com GraalOnline Classic Facebook App (graalonline.com)]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=134262469 Graal Communication Center - Teaser Thread]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=134262480 Graal Communication Center - Announcement Thread]&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Worlds/Classic_Facebook&amp;diff=19753</id>
		<title>Worlds/Classic Facebook</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Worlds/Classic_Facebook&amp;diff=19753"/>
		<updated>2013-06-01T14:50:14Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Staff Team */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Worlds]][[Category:Classic Facebook]][[Category:Facebook]]&lt;br /&gt;
{{Template:FacebookWorld}}&lt;br /&gt;
&lt;br /&gt;
= Technical Information =&lt;br /&gt;
&lt;br /&gt;
The server runs inside of as a Facebook Application.  This is possible because the V6 client is fully web based and will be able to run inside Windows Flash Player 10 on Windows, Mac, and Linux.  As does [[Worlds/Classic iPhone|Classic iPhone]], this server fully supports Graal like any other server, which means it is possible for developers to use tools such as [[Creation/Dev/Level_editor|Graal Editor]] (and script using [[Creation/Dev/GScript|GScript2]], of course) to build content that can be run on both the PC client and the Facebook Client.&lt;br /&gt;
&lt;br /&gt;
= Gameplay / Information =&lt;br /&gt;
&lt;br /&gt;
The server is a Facebook optimized direct port of [[Worlds/Classic iPhone|Classic iPhone]] except for the small differences in the tileset and the levels.&lt;br /&gt;
&lt;br /&gt;
A new VIP subscription feature has been added: for a fee of 7,500 gralats a month, players can purchase a VIP subscription.  This subscription grants players the ability to play on the '''Classic Facebook''' server using their iDevices (as well as the ability to play [[Worlds/Classic iPhone|Classic iPhone]] using their '''Classic Facebook''' account.  (This gives players the much anticipated ability to play on Classic iPhone using their computers.)  In addition, players are given a free VIP-only item once a month.&lt;br /&gt;
&lt;br /&gt;
So far, VIP has suceeded, and is expected to continue to do so.&lt;br /&gt;
&lt;br /&gt;
= History =&lt;br /&gt;
&lt;br /&gt;
On March 29, 2011, a [http://forums.graalonline.com/forums/showthread.php?t=134262469 teaser thread] was released on then [http://forums.graalonline.com/forums/ GraalOnline Forums] hinting that big news was due to come.  [[User:Stephane|Stephane]], who had posted the thread, told of a contest saying that the three users who were first to correctly guess what the surprise would be permitted to beta test the program.  Three lucky individuals who guessed Graal Facebook won the prize of testing the upcoming Facebook servers.  The two servers that would be available on Graal Facebook were said to be ports of [[Worlds/Classic iPhone|Classic iPhone]] and [[Worlds/Era iPhone|Era iPhone]].  (The Era Facebook page can be found [[Worlds/Era Facebook|here]]).  In addition, [[User:Unixmad|Unixmad]] also stated that the server would be released in mid April.  For a few months, no information was released about the server, and Graalians were starting to lose hope that the server would ever release.&lt;br /&gt;
&lt;br /&gt;
Thoughts that the server would never be released were proven wrong on July 13, 2011; the [http://apps.facebook.com/graalclassic/ Graal Facebook Application] was released.  The server so far has been a key part of the VIP update that was presented to the players of both this server and [[Worlds/Classic iPhone|Classic iPhone]] - see '''''Gameplay / Information''''' (above) for more information on VIP.&lt;br /&gt;
&lt;br /&gt;
= Staff Team =&lt;br /&gt;
&lt;br /&gt;
The server '''Classic Facebook''' shares an identical staff team with [[Worlds/Classic iPhone|Classic iPhone]] with each staff presenting loyalties to either server.  Both servers are owned by [[User:Stefan|Stefan]] and [[User:Stephane|Stephane]].&lt;br /&gt;
&lt;br /&gt;
{{Template:Classic iPhone Staff}}&lt;br /&gt;
&lt;br /&gt;
= Screenshot Gallery =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; bgcolor=&amp;quot;#f8f8f8&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;border-collapse: collapse; border: solid 1px gray;&amp;quot;&lt;br /&gt;
| [[File:classicfacebook1.png]]&lt;br /&gt;
| [[File:classicfacebook2.png]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:classicfacebook3.png]]&lt;br /&gt;
| [[File:classicfacebook4.png]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= External Links =&lt;br /&gt;
&lt;br /&gt;
* [http://apps.facebook.com/graalclassic GraalOnline Classic Facebook App]&lt;br /&gt;
* [http://classiciframe.graalonline.com GraalOnline Classic Facebook App (graalonline.com)]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=134262469 Graal Communication Center - Teaser Thread]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=134262480 Graal Communication Center - Announcement Thread]&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Worlds/Classic_Facebook&amp;diff=19752</id>
		<title>Worlds/Classic Facebook</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Worlds/Classic_Facebook&amp;diff=19752"/>
		<updated>2013-06-01T14:49:53Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Worlds]][[Category:Classic Facebook]][[Category:Facebook]]&lt;br /&gt;
{{Template:FacebookWorld}}&lt;br /&gt;
&lt;br /&gt;
= Technical Information =&lt;br /&gt;
&lt;br /&gt;
The server runs inside of as a Facebook Application.  This is possible because the V6 client is fully web based and will be able to run inside Windows Flash Player 10 on Windows, Mac, and Linux.  As does [[Worlds/Classic iPhone|Classic iPhone]], this server fully supports Graal like any other server, which means it is possible for developers to use tools such as [[Creation/Dev/Level_editor|Graal Editor]] (and script using [[Creation/Dev/GScript|GScript2]], of course) to build content that can be run on both the PC client and the Facebook Client.&lt;br /&gt;
&lt;br /&gt;
= Gameplay / Information =&lt;br /&gt;
&lt;br /&gt;
The server is a Facebook optimized direct port of [[Worlds/Classic iPhone|Classic iPhone]] except for the small differences in the tileset and the levels.&lt;br /&gt;
&lt;br /&gt;
A new VIP subscription feature has been added: for a fee of 7,500 gralats a month, players can purchase a VIP subscription.  This subscription grants players the ability to play on the '''Classic Facebook''' server using their iDevices (as well as the ability to play [[Worlds/Classic iPhone|Classic iPhone]] using their '''Classic Facebook''' account.  (This gives players the much anticipated ability to play on Classic iPhone using their computers.)  In addition, players are given a free VIP-only item once a month.&lt;br /&gt;
&lt;br /&gt;
So far, VIP has suceeded, and is expected to continue to do so.&lt;br /&gt;
&lt;br /&gt;
= History =&lt;br /&gt;
&lt;br /&gt;
On March 29, 2011, a [http://forums.graalonline.com/forums/showthread.php?t=134262469 teaser thread] was released on then [http://forums.graalonline.com/forums/ GraalOnline Forums] hinting that big news was due to come.  [[User:Stephane|Stephane]], who had posted the thread, told of a contest saying that the three users who were first to correctly guess what the surprise would be permitted to beta test the program.  Three lucky individuals who guessed Graal Facebook won the prize of testing the upcoming Facebook servers.  The two servers that would be available on Graal Facebook were said to be ports of [[Worlds/Classic iPhone|Classic iPhone]] and [[Worlds/Era iPhone|Era iPhone]].  (The Era Facebook page can be found [[Worlds/Era Facebook|here]]).  In addition, [[User:Unixmad|Unixmad]] also stated that the server would be released in mid April.  For a few months, no information was released about the server, and Graalians were starting to lose hope that the server would ever release.&lt;br /&gt;
&lt;br /&gt;
Thoughts that the server would never be released were proven wrong on July 13, 2011; the [http://apps.facebook.com/graalclassic/ Graal Facebook Application] was released.  The server so far has been a key part of the VIP update that was presented to the players of both this server and [[Worlds/Classic iPhone|Classic iPhone]] - see '''''Gameplay / Information''''' (above) for more information on VIP.&lt;br /&gt;
&lt;br /&gt;
= Staff Team =&lt;br /&gt;
&lt;br /&gt;
The server '''Classic Facebook''' shares an identical staff team with [[Worlds/Classic iPhone|Classic iPhone]] with each staff presenting loyalties to either server.  Both servers are owned by [[User:Stefan|Stefan]] and [[User:Unixmad|Unixmad]].&lt;br /&gt;
&lt;br /&gt;
{{Template:Classic iPhone Staff}}&lt;br /&gt;
&lt;br /&gt;
= Screenshot Gallery =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; bgcolor=&amp;quot;#f8f8f8&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;border-collapse: collapse; border: solid 1px gray;&amp;quot;&lt;br /&gt;
| [[File:classicfacebook1.png]]&lt;br /&gt;
| [[File:classicfacebook2.png]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:classicfacebook3.png]]&lt;br /&gt;
| [[File:classicfacebook4.png]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= External Links =&lt;br /&gt;
&lt;br /&gt;
* [http://apps.facebook.com/graalclassic GraalOnline Classic Facebook App]&lt;br /&gt;
* [http://classiciframe.graalonline.com GraalOnline Classic Facebook App (graalonline.com)]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=134262469 Graal Communication Center - Teaser Thread]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=134262480 Graal Communication Center - Announcement Thread]&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Worlds/Classic_iPhone&amp;diff=19751</id>
		<title>Worlds/Classic iPhone</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Worlds/Classic_iPhone&amp;diff=19751"/>
		<updated>2013-06-01T14:48:59Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Staff List */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Worlds]][[Category:Classic iPhone]][[Category:IPhone]]&lt;br /&gt;
{{iPhone World}}&lt;br /&gt;
&lt;br /&gt;
[[Worlds/Classic iPhone|Classic iPhone]] is a server specificity designed for compatibility with the iPhone, handling most of the scripts on the server-side to improve performance. [[Worlds/Classic iPhone|Classic iPhone]] can be accessed via a special version of the [[Mac]] [[Graal Client|Graal client]] only available for the iPhone.&lt;br /&gt;
&lt;br /&gt;
== Technical Information ==&lt;br /&gt;
The [[Worlds/Classic iPhone|Classic iPhone]] server, as well as all iPhone servers, run a specially modified [[Mac]] [[Graal Client|Graal client]]. The client runs off the same engine as normal Graal clients, and executes [[Creation/Dev/GScript|GS2 code]] on the client. This means that it is possible to develop content for both the iPhone client and the normal client at the same time, and using the same [[Creation/Dev/Tools|tools]] as for normal development, such as the [[Creation/Dev/Level editor|level editor]], [[Creation/Management/Remote Control|Remote Control]], and [[Creation/Dev/Gani|Graal Shop]].&lt;br /&gt;
&lt;br /&gt;
== Screenshot Gallery ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; bgcolor=&amp;quot;#f8f8f8&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;border-collapse: collapse; border: solid 1px gray;&amp;quot;&lt;br /&gt;
| [[File:Classic_iPhone_002.png]]&lt;br /&gt;
| [[File:Classic_iPhone_015.png]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Classic_iPhone_026.png]]&lt;br /&gt;
| [[File:Classic_iPhone_029.png]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Classic_iPhone_011.png]]&lt;br /&gt;
| [[File:Classic_iPhone_016.png]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Classic_iPhone_019.png]]&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Staff List=&lt;br /&gt;
&lt;br /&gt;
The server '''Classic iPhone''' is owned by [[User:Stefan|Stefan]] and [[User:Stephane|Stephane]] or Eurocenter.&lt;br /&gt;
&lt;br /&gt;
{{Template:Classic iPhone Staff}}&lt;br /&gt;
&lt;br /&gt;
= External Links =&lt;br /&gt;
*[http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=343297938&amp;amp;mt=8 Classic iPhone - Apple App Store]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=134257310 Graal Communication Center - Classic Graal for iPhone]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=134258045 Graal Communication Center - Classic iPhone - Guilds!]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?t=134258764 Graal Communication Center - Classic iPhone - Quest!]&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=News/2007/July&amp;diff=19750</id>
		<title>News/2007/July</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=News/2007/July&amp;diff=19750"/>
		<updated>2013-06-01T14:48:29Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* July */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== July ===&lt;br /&gt;
&lt;br /&gt;
* '''July 24th''' - '''First step for economy fix on Era''' {{News/Playerworlds/Era}}&lt;br /&gt;
[[Image:flowershop.PNG|left]]Yesterday was the first of many changes. Flower shop bouquet making was removed for economical purposes. Although players might not be able to make money as fast with bouquets gone, but now it requires less physical labor to make money off of flower picking. Simply drop your flowers in groups of 10 in front of Marygold to receive your payment.&lt;br /&gt;
&lt;br /&gt;
With the removal of bouquets, the staff team decided to raise the price in which the store will buy your flowers for. The following changes are listed below. (Note: this is per 10 flowers)&lt;br /&gt;
&lt;br /&gt;
* 10 mums - $2&lt;br /&gt;
* 10 tulips - $5&lt;br /&gt;
* 10 carnations - $6&lt;br /&gt;
* 10 asters - $7&lt;br /&gt;
* 10 sunflowers - $7&lt;br /&gt;
* 10 roses - $8&lt;br /&gt;
&lt;br /&gt;
Prices were chosen by the rarity of each type of flower throughout the gmap. Further job updates will be given to mining and shell digging.&lt;br /&gt;
&lt;br /&gt;
* '''July 20th''' - '''Visible amulets and shipyardrights on Kingdoms''' {{News/Graal_Kingdoms}}&lt;br /&gt;
[[Image:amulets_visible.jpg|thumb|left]]On Graal Kingdoms it's now possible to show off the amulet your wear. You can show/hide it like the cape by right-clicking it in the inventory and selecting the option. Show what you got, it'll look nice.&lt;br /&gt;
&lt;br /&gt;
While doing that we also added support for masks to be hidden after a couple of players suggested that.&lt;br /&gt;
&lt;br /&gt;
Now it is possible to protect the kingdom's shipyard even better. We added a new kingdomright called &amp;quot;S&amp;quot; - Shipyard. You will need this right now if you want to open or close the gate of the shipyard. So the leadership of the kingdom has a well knowledge about who can access the kingdom's ships.&lt;br /&gt;
&lt;br /&gt;
* '''July 17th''' - '''Blackjack tournement on Kingdoms''' {{News/Graal_Kingdoms}}&lt;br /&gt;
Today we had a big blackjack tournement on Graal Kingdoms which took almost 2 hours. After the pre-match Leon Xanadu won the grand final and gained a Ring of the Card Champions. He was followed by Lale Cruxis and Javalin.&lt;br /&gt;
&lt;br /&gt;
* '''July 14th''' - '''Graal v5 released!'''&lt;br /&gt;
As you may have noticed, the new ''Graal version 5'' has been released.  Many changes and new features are included in this version.  If you are experiencing any bugs or wish to submit features that you would like to see, please log-in to the Graal forums and post in the v5 section [http://forums.graalonline.com/forums/forumdisplay.php?f=192 here].  Both Unixmad and Stefan are working very hard to fix the handful of bugs that users are experiencing.  Hope you enjoy!&lt;br /&gt;
&lt;br /&gt;
* '''July 10th''' - '''Graal v5 is near!'''&lt;br /&gt;
[[Image:features_vista.jpg|thumb|left]]&lt;br /&gt;
An announcement has been made for the new Graal version 5 that includes many updates for both the Graal client and the website!  A thread has been posted by [[user:Stephane|Stephane]] detailing many of the features coming in this update.  This thread may be found [http://forums.graalonline.com/forums/showthread.php?t=75224 here].&lt;br /&gt;
For more details on the features to come, check [http://www.graalonline.com/newsletter/2007-07/newsletter.html the Newsletter].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both&amp;quot;&amp;gt; &amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Graal_Communication_Center/Forum_Leaders&amp;diff=19749</id>
		<title>Graal Communication Center/Forum Leaders</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Graal_Communication_Center/Forum_Leaders&amp;diff=19749"/>
		<updated>2013-06-01T14:47:21Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Global Staff */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Forums]]&lt;br /&gt;
'''Last update: 23rd of April 2010'''&lt;br /&gt;
&lt;br /&gt;
==Moderators==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''User Name'''&lt;br /&gt;
| '''Forums'''&lt;br /&gt;
| '''Contact'''&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Bell|Bell]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=203 Playerworld Administration Team]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5439 Forum PM: Bell]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:cbk1994|Chris]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=162 Era Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=2568 Forum PM: cbk1994]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Cloven|Cloven]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=232 Delteria Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5373 Forum PM: Cloven]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:coreys|Abjorn]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=229 N-Pulse Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4149 Forum PM: Abjorn]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Crono|Crono]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=6 Level Design]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5890 Forum PM: Crono]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Cruchot|Yann]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=151 Discussions en Francais (Français)]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4123 Forum PM: Cruchot]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:cyan3|cyan3]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=209 Wiki Administration Team]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4602 Forum PM: cyan3]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:dubby230|dubby230]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=229 N-Pulse Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=6287 Forum PM: dubby230]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:ffcmike|Thor]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=175 Classic Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=3669 Forum PM: ffcmike]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Fowlplay4|fowlplay4]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=220 Zodiac Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=3671 Forum PM: fowlplay4]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Hatred89|Hatred]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=89 Rising Sun]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4206 Forum PM: Hatred89]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Matt|Matt]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=229 N-Pulse Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4243 Forum PM: Matt]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Nataxo|Nataxo]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=209 Wiki Administration Team]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5885 Forum PM: Nataxo]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Nature2|Maroku]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=75 Graal Kingdoms Events]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4291 Forum PM: Nature2]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Polo|Polo]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=175 Classic Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=2245 Forum PM: Polo]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Rufus|Rufus]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=80 Bomy Island Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=3591 Forum PM: Rufus]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:sidthegreat2005|sidthegreat2005]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=223 Unholy Nation Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=6330 Forum PM: sidthegreat2005]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Skyld|Skyld]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=10 Future Improvements], [http://forums.graalonline.com/forums/forumdisplay.php?f=204  Global Scripting Team], [http://forums.graalonline.com/forums/forumdisplay.php?f=153 New Scripting Engine (GS2)], [http://forums.graalonline.com/forums/forumdisplay.php?f=8  NPC Scripting], [http://forums.graalonline.com/forums/forumdisplay.php?f=154 Old Scripting Engine (GS1)], [http://forums.graalonline.com/forums/forumdisplay.php?f=113 Playerworld Staff Openings], [http://forums.graalonline.com/forums/forumdisplay.php?f=7 Tech Support]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=1411 Forum PM: Skyld]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:SlikRick|Slikrick]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=229 N-Pulse Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=2991 Forum PM: SlikRick]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:smokeraider|smokeraider]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=229 Crescent Pirates]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5213 Forum PM: smokeraider]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:taylor|taylor]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=220 Zodiac Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=6208 Forum PM: taylor]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Tig|Tig]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=58 Graal Kingdoms], [http://forums.graalonline.com/forums/forumdisplay.php?f=205 Graal Kingdoms Team]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5380 Forum PM: Tigairius]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:WhiteDragon|WhiteDragon]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=176 Classic News]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5442 Forum PM: Hatred89]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Administrators==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''User Name'''&lt;br /&gt;
| '''Contact'''&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Darlene159|Moonie]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=638 Forum PM: Darlene159]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Stefan|Stefan]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4 Forum PM: Stefan]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Stephane|Stephane]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=2 Forum PM: Unixmad]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Global Staff==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''User Name'''&lt;br /&gt;
| '''Contact'''&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Bell|Bell]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5439 Forum PM: Bell]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Skyld|Skyld]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=1411 Forum PM: Skyld]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Stefan|Stefan]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4 Forum PM: Stefan]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Tig|Tig]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5380 Forum PM: Tigairius]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:TSAdmin|TSAdmin]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5227 Forum PM: TSAdmin]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Stephane|Stephane]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=2 Forum PM: Unixmad]&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Xor|Xor]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=6109 Forum PM: Xor]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==GlobalConnect==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''User Name'''&lt;br /&gt;
| '''Contact'''&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Bell|Bell]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5439 Forum PM: Bell]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Darlene159|Moonie]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=638 Forum PM: Darlene159]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Sam|Sam]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4677 Forum PM: Sam]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Skyld|Skyld]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=1411 Forum PM: Skyld]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Tig|Tig]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5380 Forum PM: Tigairius]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:TSAdmin|TSAdmin]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5227 Forum PM: TSAdmin]&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Xor|Xor]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=6109 Forum PM: Xor]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Graal Kingdoms Staff==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''User Name'''&lt;br /&gt;
| '''Contact'''&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Craigus|Craigus]]&lt;br /&gt;
| [[http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=2997 Forum PM: Craigus]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:cyan3|Felix Lionheart]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4622 Forum PM: cyan3]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Drakeero|Drakeero]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=3323 Forum PM: Drakeero]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Gothika|Naith Lionheart]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4832 Forum PM: Gothika]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:kia345|PoJo]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5330 Forum PM: kia345]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:MadScience7|Alan Steele]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=3440 Forum PM: MadScience7]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Nature2|Maroku]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4291 Forum PM: Nature2]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Obs311|John]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=2720 Forum PM: Obs311]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:ReBorn_Spirit|Dayaa]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=3145 Forum PM: ReBorn_Spirit]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:REW_darklink200|Grirahan]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=3162 Forum PM: REW_darklink200]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Sam|Sam]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4677 Forum PM: Sam]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:shrimps|Shrimps]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4501 Forum PM: shrimps]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Stephen|Stephen]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5279 Forum PM: Stephen]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Tig|Tig]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5380 Forum PM: Tigairius]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Xterminator|Xterminator]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5730 Forum PM: Xterminator]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Zeltino|Zeltino]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4257 Forum PM: Zeltino]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:zokemon|Zero]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=101 Forum PM: zokemon]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Power Users==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''User Name'''&lt;br /&gt;
| '''Contact'''&lt;br /&gt;
|-&lt;br /&gt;
| [[User:cyan3|Felix Lionheart]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4622 Forum PM: cyan3]&lt;br /&gt;
|}&lt;br /&gt;
==Super Moderators==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''User Name'''&lt;br /&gt;
| '''Contact'''&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Sam|Sam]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4677 Forum PM: Sam]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Pooper200000|Supernanny]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5014 Forum PM: Pooper200000]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Graal_Communication_Center/Forum_Leaders&amp;diff=19748</id>
		<title>Graal Communication Center/Forum Leaders</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Graal_Communication_Center/Forum_Leaders&amp;diff=19748"/>
		<updated>2013-06-01T14:47:04Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Administrators */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Forums]]&lt;br /&gt;
'''Last update: 23rd of April 2010'''&lt;br /&gt;
&lt;br /&gt;
==Moderators==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''User Name'''&lt;br /&gt;
| '''Forums'''&lt;br /&gt;
| '''Contact'''&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Bell|Bell]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=203 Playerworld Administration Team]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5439 Forum PM: Bell]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:cbk1994|Chris]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=162 Era Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=2568 Forum PM: cbk1994]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Cloven|Cloven]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=232 Delteria Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5373 Forum PM: Cloven]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:coreys|Abjorn]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=229 N-Pulse Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4149 Forum PM: Abjorn]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Crono|Crono]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=6 Level Design]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5890 Forum PM: Crono]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Cruchot|Yann]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=151 Discussions en Francais (Français)]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4123 Forum PM: Cruchot]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:cyan3|cyan3]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=209 Wiki Administration Team]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4602 Forum PM: cyan3]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:dubby230|dubby230]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=229 N-Pulse Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=6287 Forum PM: dubby230]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:ffcmike|Thor]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=175 Classic Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=3669 Forum PM: ffcmike]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Fowlplay4|fowlplay4]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=220 Zodiac Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=3671 Forum PM: fowlplay4]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Hatred89|Hatred]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=89 Rising Sun]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4206 Forum PM: Hatred89]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Matt|Matt]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=229 N-Pulse Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4243 Forum PM: Matt]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Nataxo|Nataxo]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=209 Wiki Administration Team]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5885 Forum PM: Nataxo]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Nature2|Maroku]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=75 Graal Kingdoms Events]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4291 Forum PM: Nature2]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Polo|Polo]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=175 Classic Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=2245 Forum PM: Polo]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Rufus|Rufus]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=80 Bomy Island Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=3591 Forum PM: Rufus]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:sidthegreat2005|sidthegreat2005]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=223 Unholy Nation Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=6330 Forum PM: sidthegreat2005]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Skyld|Skyld]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=10 Future Improvements], [http://forums.graalonline.com/forums/forumdisplay.php?f=204  Global Scripting Team], [http://forums.graalonline.com/forums/forumdisplay.php?f=153 New Scripting Engine (GS2)], [http://forums.graalonline.com/forums/forumdisplay.php?f=8  NPC Scripting], [http://forums.graalonline.com/forums/forumdisplay.php?f=154 Old Scripting Engine (GS1)], [http://forums.graalonline.com/forums/forumdisplay.php?f=113 Playerworld Staff Openings], [http://forums.graalonline.com/forums/forumdisplay.php?f=7 Tech Support]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=1411 Forum PM: Skyld]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:SlikRick|Slikrick]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=229 N-Pulse Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=2991 Forum PM: SlikRick]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:smokeraider|smokeraider]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=229 Crescent Pirates]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5213 Forum PM: smokeraider]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:taylor|taylor]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=220 Zodiac Main Forum]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=6208 Forum PM: taylor]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Tig|Tig]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=58 Graal Kingdoms], [http://forums.graalonline.com/forums/forumdisplay.php?f=205 Graal Kingdoms Team]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5380 Forum PM: Tigairius]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:WhiteDragon|WhiteDragon]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/forumdisplay.php?f=176 Classic News]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5442 Forum PM: Hatred89]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Administrators==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''User Name'''&lt;br /&gt;
| '''Contact'''&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Darlene159|Moonie]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=638 Forum PM: Darlene159]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Stefan|Stefan]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4 Forum PM: Stefan]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Stephane|Stephane]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=2 Forum PM: Unixmad]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Global Staff==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''User Name'''&lt;br /&gt;
| '''Contact'''&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Bell|Bell]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5439 Forum PM: Bell]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Skyld|Skyld]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=1411 Forum PM: Skyld]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Stefan|Stefan]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4 Forum PM: Stefan]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Tig|Tig]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5380 Forum PM: Tigairius]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:TSAdmin|TSAdmin]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5227 Forum PM: TSAdmin]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Unixmad|Unixmad]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=2 Forum PM: Unixmad]&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Xor|Xor]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=6109 Forum PM: Xor]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==GlobalConnect==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''User Name'''&lt;br /&gt;
| '''Contact'''&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Bell|Bell]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5439 Forum PM: Bell]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Darlene159|Moonie]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=638 Forum PM: Darlene159]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Sam|Sam]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4677 Forum PM: Sam]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Skyld|Skyld]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=1411 Forum PM: Skyld]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Tig|Tig]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5380 Forum PM: Tigairius]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:TSAdmin|TSAdmin]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5227 Forum PM: TSAdmin]&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Xor|Xor]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=6109 Forum PM: Xor]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Graal Kingdoms Staff==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''User Name'''&lt;br /&gt;
| '''Contact'''&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Craigus|Craigus]]&lt;br /&gt;
| [[http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=2997 Forum PM: Craigus]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:cyan3|Felix Lionheart]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4622 Forum PM: cyan3]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Drakeero|Drakeero]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=3323 Forum PM: Drakeero]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Gothika|Naith Lionheart]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4832 Forum PM: Gothika]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:kia345|PoJo]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5330 Forum PM: kia345]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:MadScience7|Alan Steele]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=3440 Forum PM: MadScience7]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Nature2|Maroku]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4291 Forum PM: Nature2]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Obs311|John]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=2720 Forum PM: Obs311]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:ReBorn_Spirit|Dayaa]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=3145 Forum PM: ReBorn_Spirit]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:REW_darklink200|Grirahan]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=3162 Forum PM: REW_darklink200]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Sam|Sam]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4677 Forum PM: Sam]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:shrimps|Shrimps]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4501 Forum PM: shrimps]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Stephen|Stephen]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5279 Forum PM: Stephen]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Tig|Tig]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5380 Forum PM: Tigairius]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Xterminator|Xterminator]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5730 Forum PM: Xterminator]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Zeltino|Zeltino]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4257 Forum PM: Zeltino]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:zokemon|Zero]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=101 Forum PM: zokemon]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Power Users==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''User Name'''&lt;br /&gt;
| '''Contact'''&lt;br /&gt;
|-&lt;br /&gt;
| [[User:cyan3|Felix Lionheart]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4622 Forum PM: cyan3]&lt;br /&gt;
|}&lt;br /&gt;
==Super Moderators==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''User Name'''&lt;br /&gt;
| '''Contact'''&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Sam|Sam]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4677 Forum PM: Sam]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Pooper200000|Supernanny]]&lt;br /&gt;
| [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=5014 Forum PM: Pooper200000]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Management/Contacts&amp;diff=19747</id>
		<title>Creation/Management/Contacts</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Management/Contacts&amp;diff=19747"/>
		<updated>2013-06-01T14:46:34Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Managing Director */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Administration]][[Category:Global Staff]][[Category:Forum Moderators]][[Category:Graal Kingdoms Staff]][[Category:Zone Staff]]&lt;br /&gt;
Generally directors will not reply as they are busy with duties, which is why you should contact admins or the separate divisions related to your problem (e.g: GST for NPC-Server issues)&lt;br /&gt;
&lt;br /&gt;
''All staff listed, except the [[Creation/Management/Contacts#Graal Kingdoms Administration|Kingdoms staff]], [[Creation/Management/Contacts#Zone Staff Team|Zone staff]], [[Creation/Management/Contacts#Members|Global News Team Members]], [[Creation/Management/Contacts#Global Development Team|Global Development Team]], and [[Creation/Management/Contacts#Forum Administration|Super Moderators]] are Graalonline Global Admins, with a Global RC.''&lt;br /&gt;
&lt;br /&gt;
=General Support=&lt;br /&gt;
To gain support either email [mailto:support@graalonline.com support@graalonline.com] for player related issues and [mailto:accounts@graalonline.com accounts@graalonline.com] for account related issues.&lt;br /&gt;
&lt;br /&gt;
* [mailto:support@graalonline.com support@graalonline.com]&lt;br /&gt;
* [mailto:accounts@graalonline.com accounts@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
=Managing Director=&lt;br /&gt;
* [[User:Stephane|Stéphane Portha]]&lt;br /&gt;
** ''Manages the network, public relations and global staff''&lt;br /&gt;
**Forum PM: [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=2 unixmad]&lt;br /&gt;
** E-Mail: [mailto:unixmad@graalonline.com unixmad@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
=Technical Director=&lt;br /&gt;
* [[User:Stefan|Stefan Knorr]]&lt;br /&gt;
** ''Manages the client and server software''&lt;br /&gt;
**Forum PM: [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4 Stefan]&lt;br /&gt;
**E-Mail: [mailto:bomber@graalonline.com bomber@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
=[[Creation/Management/Playerworld Administration Team|Playerworld Administration]]=&lt;br /&gt;
{{Playerworld Administration Team}}&lt;br /&gt;
&lt;br /&gt;
=[[Guild|Global Guilds]] Admin= &lt;br /&gt;
* [[User:Xor|Xor]]&lt;br /&gt;
**Forum PM: [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=6109 Xor]&lt;br /&gt;
** E-mail: [mailto:Xor@graalonline.com Xor@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
=[[Creation/Management/Global Scripting Team|Global Scripting Team]]=&lt;br /&gt;
* [[User:Skyld|Skyld (GST Admin)]]&lt;br /&gt;
** ''Deals with technical issues, scripting development and general issues. ''&lt;br /&gt;
**Forum PM: [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=1411 Skyld]&lt;br /&gt;
** E-mail: [mailto:skyld@graalonline.com skyld@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
=[[Creation/Management/Global News Team|Global News Team]]=&lt;br /&gt;
{{Global News Team}}&lt;br /&gt;
&lt;br /&gt;
=[[Worlds/Graal Kingdoms|Graal Kingdoms]] Administration=&lt;br /&gt;
&lt;br /&gt;
For the full list of [[Worlds/Graal Kingdoms|Graal Kingdoms]] staff check '''[[Worlds/Graal Kingdoms/Staff|This Page]]'''.&lt;br /&gt;
&lt;br /&gt;
{{Template:Graal Kingdoms Staff}}&lt;br /&gt;
&lt;br /&gt;
=[[Worlds/Zone|Zone]] Staff Team=&lt;br /&gt;
{{Zone Staff}}&lt;br /&gt;
&lt;br /&gt;
=[[Graal Communication Center|Forum]] Administration=&lt;br /&gt;
&lt;br /&gt;
===Administration===&lt;br /&gt;
* [[User:Darlene159|Moonie]]&lt;br /&gt;
**Forum PM: [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=638 Darlene159]&lt;br /&gt;
** E-mail: [mailto:moonie@graalonline.com moonie@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
===Super Moderators===&lt;br /&gt;
* [[User:Tig|Tig]]&lt;br /&gt;
**Email: [mailto:tig@graalonline.com tig@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
For the full list of forum moderators [[Graal Communication Center/Forum Leaders|see here]].&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Cyberjoueurs&amp;diff=19746</id>
		<title>Cyberjoueurs</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Cyberjoueurs&amp;diff=19746"/>
		<updated>2013-06-01T14:45:52Z</updated>

		<summary type="html">&lt;p&gt;Stefan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Administration]]&lt;br /&gt;
Linux Cyberjoueurs is the French game design company that created [[Graal]].  The general manager of the company is [[User:Stephane|Stephane Portha]].&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
&lt;br /&gt;
Graal started 1998 with the creation of a Java game called [[Zelda Online]]. The name and content was changed soon after to Graal while the basic concepts were kept, but brought to a new dimension called Online Gaming. Their main source of revenue was advertising money gained by displaying banners on [[PM]] windows on the Graal client until early 2001 when [[Worlds/Graal Bomy Lands|Graal Bomy Lands]] was released. Soon after a new service was introduced allowing players and developers to create their own [[Creation|Playerworld]].&lt;br /&gt;
Besides Graal2D Linux Cyberjoueurs is also pursuing an enigmatic project known as [[Fairyland]], and is working on Graal3D.&lt;br /&gt;
&lt;br /&gt;
==Contact Information==&lt;br /&gt;
&lt;br /&gt;
'''Address:'''&lt;br /&gt;
21 rue de Fécamp&lt;br /&gt;
75012 Paris&lt;br /&gt;
France&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
[http://www.cyberjoueurs.com Cyberjoueurs Website]&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Graal_Communication_Center/Admin&amp;diff=19745</id>
		<title>Graal Communication Center/Admin</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Graal_Communication_Center/Admin&amp;diff=19745"/>
		<updated>2013-06-01T14:44:54Z</updated>

		<summary type="html">&lt;p&gt;Stefan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Forums]]&lt;br /&gt;
[[User:Stephane|Stephane]] and [[User:Stefan|Stefan]] are the current Administrators of the GCC.&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Adminlevel&amp;diff=19744</id>
		<title>Adminlevel</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Adminlevel&amp;diff=19744"/>
		<updated>2013-06-01T14:44:36Z</updated>

		<summary type="html">&lt;p&gt;Stefan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Administration]]&lt;br /&gt;
Formerly, adminlevel was used to define what admin rights a player had on a server. As of 8/21/2001, the adminlevel system was no longer used on [[Playerworld|playerworlds]]. [[Global]] RC accounts, along with the adminlevel system, also have global rights that can only be accessed and changed by [[User:Stefan|Stefan]] and [[User:Stephane|Stephane]].&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The following information may not be 100% accurate&lt;br /&gt;
&lt;br /&gt;
===Adminlevel 1===&lt;br /&gt;
An adminlevel of 1 contained the following rights:&lt;br /&gt;
*Warpto x y&lt;br /&gt;
*Warpto Player&lt;br /&gt;
*Update Level&lt;br /&gt;
*Set the own attributes&lt;br /&gt;
===Adminlevel 2===&lt;br /&gt;
An adminlevel of 2 contained the rights of adminlevel 1 and the following:&lt;br /&gt;
*Warp players&lt;br /&gt;
*Change comments&lt;br /&gt;
===Adminlevel 3===&lt;br /&gt;
An adminlevel of 3 contained the rights of adminlevels 1 and 2 and the following:&lt;br /&gt;
*Disconnect players&lt;br /&gt;
*View player attributes&lt;br /&gt;
*Set player attributes&lt;br /&gt;
*Reset attributes&lt;br /&gt;
*Admin Message&lt;br /&gt;
*Set server flags&lt;br /&gt;
*Ban players&lt;br /&gt;
===Adminlevel 4===&lt;br /&gt;
An adminlevel of 4 contained the rights of adminlevels 1, 2, and 3 and the following:&lt;br /&gt;
*Change staff accounts&lt;br /&gt;
*Change server options&lt;br /&gt;
===Adminlevel 5===&lt;br /&gt;
An adminlevel of 5 contained the rights of adminlevels 1, 2, 3, and 4 and the following:&lt;br /&gt;
*Set rights&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=GRWAL_the_Comic&amp;diff=19743</id>
		<title>GRWAL the Comic</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=GRWAL_the_Comic&amp;diff=19743"/>
		<updated>2013-06-01T14:43:08Z</updated>

		<summary type="html">&lt;p&gt;Stefan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Graal History]]&lt;br /&gt;
[http://forums.graalonline.com/forums/showthread.php?t=52606 GRWAL: The Comic] is a 26-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 [[User:Stefan|Stefan]], [[User:Stephane|Stephane]] (unixmad), [[User:Googi|Googi]], [[User:Kaimetsu|Kaimetsu]] and [[User:Tyhm|Thym]].  The comic has a few basic storylines but is largely meant to be a comedy.  The 26 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;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=1068744#post1068744 Chapter 20: From the Secret Files of the CIA]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=1079088#post1079088 Chapter 22: Guess Who's Back!]&lt;br /&gt;
*[http://forums.graalonline.com/forums/showthread.php?p=1082798#post1082798 Chapter 23: Zoom Zoom Zoom!]&lt;br /&gt;
*[http://forums.graalonline.com/forums/showthread.php?p=1086143#post1086143 Chapter 24: NPCSERVER ATTACK!]&lt;br /&gt;
*[http://forums.graalonline.com/forums/showthread.php?p=1092702#post1092702 Chapter 25: Undrow]&lt;br /&gt;
*[http://forums.graalonline.com/forums/showthread.php?p=1096898#post1096898 Chapter 26: The Chapter About Neither of Them]&lt;br /&gt;
 &lt;br /&gt;
There is also a [http://forums.graalonline.com/forums/attachment.php?attachmentid=32308 single page] created by Googi as a response to a serverlist crash.&lt;br /&gt;
&lt;br /&gt;
Chapter 1-24 in [http://www.4inthemorning.com/fry/grawl.rar one file] (~50.5M), thanks to Sern for the space. (fry)&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=GRWAL_the_Comic&amp;diff=19742</id>
		<title>GRWAL the Comic</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=GRWAL_the_Comic&amp;diff=19742"/>
		<updated>2013-06-01T14:41:42Z</updated>

		<summary type="html">&lt;p&gt;Stefan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Graal History]]&lt;br /&gt;
[http://forums.graalonline.com/forums/showthread.php?t=52606 GRWAL: The Comic] is a 26-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 [[User:Stefan|Stefan]], [[User:Stephane|Unixmad]], [[User:Googi|Googi]], [[User:Viper|Viper]], [[User:Kaimetsu|Kaimetsu]] and [[User:Tyhm|Thym]].  The comic has a few basic storylines but is largely meant to be a comedy.  The 26 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;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=1068744#post1068744 Chapter 20: From the Secret Files of the CIA]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=1073716#post1073716 Chapter 21: Viper's Pentagon Power!]&lt;br /&gt;
* [http://forums.graalonline.com/forums/showthread.php?p=1079088#post1079088 Chapter 22: Guess Who's Back!]&lt;br /&gt;
*[http://forums.graalonline.com/forums/showthread.php?p=1082798#post1082798 Chapter 23: Zoom Zoom Zoom!]&lt;br /&gt;
*[http://forums.graalonline.com/forums/showthread.php?p=1086143#post1086143 Chapter 24: NPCSERVER ATTACK!]&lt;br /&gt;
*[http://forums.graalonline.com/forums/showthread.php?p=1092702#post1092702 Chapter 25: Undrow]&lt;br /&gt;
*[http://forums.graalonline.com/forums/showthread.php?p=1096898#post1096898 Chapter 26: The Chapter About Neither of Them]&lt;br /&gt;
 &lt;br /&gt;
There is also a [http://forums.graalonline.com/forums/attachment.php?attachmentid=32308 single page] created by Googi as a response to a serverlist crash.&lt;br /&gt;
&lt;br /&gt;
Chapter 1-24 in [http://www.4inthemorning.com/fry/grawl.rar one file] (~50.5M), thanks to Sern for the space. (fry)&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Graal&amp;diff=19741</id>
		<title>Graal</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Graal&amp;diff=19741"/>
		<updated>2013-06-01T14:33:50Z</updated>

		<summary type="html">&lt;p&gt;Stefan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Graal History]]&lt;br /&gt;
'''[http://www.graalonline.com Graal]''' started its existence as a relatively simple Java game - known then as 'Zelda Online'. Shortly after a new game called Graal has been introduced with a similar theme, but new graphics and new name, now running on PC as standalone Delphi program developed by the French company [[LINUX Cyberjoueurs|Linux Cyberjoueurs]] with [[User:Stephane|Stephane]] and [[User:Stefan|Stefan]].&lt;br /&gt;
&lt;br /&gt;
Perhaps Graal's greatest strength is its customisability. An intuitive [[Level Editor|editor]] allows even the most technically-inept players to build [[level]]s of their own, complete with custom graphics and interactive [[NPC]]s. The latter are developed using a simple - yet surprisingly powerful - language named [[Creation/Dev/GScript|GScript]].&lt;br /&gt;
&lt;br /&gt;
The creative power afforded by these features means that groups of players can combine their skills to produce entire worlds for other [[Graalian]]s to explore. Indeed, [[GraalOnline]] offers hosting options that allow such groups to develop their [[Playerworld]]s online, making them (if they so wish) accessible to regular [[Graalian]]s.&lt;br /&gt;
&lt;br /&gt;
In addition to these player-operated servers, [[GraalOnline]] also runs three official worlds: [[Worlds/Graal Kingdoms|Graal Kingdoms]], [[Worlds/Zone|Zone]] and [[Worlds/Classic|Classic]]. Though they are usually considered conceptually distinct from [[Playerworld]]s, they are still largely developed and maintained by volunteer players.&lt;br /&gt;
&lt;br /&gt;
The Graal client was recently converted to C++ and is using part of [[Torque]], granting superior speed and cross-platform compatibility. Builds of the [[Torque client|new version]] - dubbed Graal 3.0 - was available for [[Windows]], [[Linux]] and [[Mac OS X|Mac]] operating systems. In addition, this new version offer fully 3D graphics[http://www.graalonline.com/community/gallery.php?gallery=42] along with a rehauled scripting engine. [[Graal3D]] was released to some criticism around Christmas 2004. In July 2005, A small group of beta testers tested a new [[Graal]] client, dubbed [[Graal4]]. [[Graal4]] is based on Graal 3.0 but offer better compatibility with Graal 2.0 and offer lot of new features.&lt;br /&gt;
&lt;br /&gt;
Starting in July 2008 GraalOnline games were launched on the App Store for iPhone, gaining millions of additional players. In 2011 a Facebook version followed and in 2013 the first Android version has been released. Thousands of Graal players are now playing the game at any time.&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Graal&amp;diff=19740</id>
		<title>Graal</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Graal&amp;diff=19740"/>
		<updated>2013-06-01T14:29:50Z</updated>

		<summary type="html">&lt;p&gt;Stefan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Graal History]]&lt;br /&gt;
'''[http://www.graalonline.com Graal]''' started its existence as a relatively simple Java game - known then as 'Zelda Online'. Shortly after a new game called Graal has been introduced with a similar theme, but new graphics and new name, now running on PC as standalone Delphi program developed by the French company [[LINUX Cyberjoueurs|Cyberjoueurs]] with [[User:Stephane|Stephane]] and [[User:Stefan|Stefan]].&lt;br /&gt;
&lt;br /&gt;
Perhaps Graal's greatest strength is its customisability. An intuitive [[Level Editor|editor]] allows even the most technically-inept players to build [[level]]s of their own, complete with custom graphics and interactive [[NPC]]s. The latter are developed using a simple - yet surprisingly powerful - language named [[Creation/Dev/GScript|GScript]].&lt;br /&gt;
&lt;br /&gt;
The creative power afforded by these features means that groups of players can combine their skills to produce entire worlds for other [[Graalian]]s to explore. Indeed, [[GraalOnline]] offers hosting options that allow such groups to develop their [[Playerworld]]s online, making them (if they so wish) accessible to regular [[Graalian]]s.&lt;br /&gt;
&lt;br /&gt;
In addition to these player-operated servers, [[GraalOnline]] also runs three official worlds: [[Worlds/Graal Kingdoms|Graal Kingdoms]], [[Worlds/Zone|Zone]] and [[Worlds/Classic|Classic]]. Though they are usually considered conceptually distinct from [[Playerworld]]s, they are still largely developed and maintained by volunteer players.&lt;br /&gt;
&lt;br /&gt;
The Graal client was recently converted to C++ and is using part of [[Torque]], granting superior speed and cross-platform compatibility. Builds of the [[Torque client|new version]] - dubbed Graal 3.0 - was available for [[Windows]], [[Linux]] and [[Mac OS X|Mac]] operating systems. In addition, this new version offer fully 3D graphics[http://www.graalonline.com/community/gallery.php?gallery=42] along with a rehauled scripting engine. [[Graal3D]] was released to some criticism around Christmas 2004. In July 2005, A small group of beta testers tested a new [[Graal]] client, dubbed [[Graal4]]. [[Graal4]] is based on Graal 3.0 but offer better compatibility with Graal 2.0 and offer lot of new features.&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=User:Stephane&amp;diff=19739</id>
		<title>User:Stephane</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=User:Stephane&amp;diff=19739"/>
		<updated>2013-06-01T14:23:00Z</updated>

		<summary type="html">&lt;p&gt;Stefan: Created page with 'Category:UsersCategory:AdministrationCategory:Global Staff {{player}} '''Stephane Portha''' (in-game nick name '''unixmad''') is the manager of GraalOnline.…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Users]][[Category:Administration]][[Category:Global Staff]]&lt;br /&gt;
{{player}}&lt;br /&gt;
'''Stephane Portha''' (in-game nick name '''unixmad''') is the manager of [[Graal|GraalOnline]]. He manages the company hosting GraalOnline servers and making Graal software development, and is the Graal's highest-ranked staff, along with [[User:Stefan|Stefan]].&lt;br /&gt;
&lt;br /&gt;
==Staff Positions==&lt;br /&gt;
Whilst Stefan leads Graal development and programming efforts, Stephane manages networking, staff and public relations.&lt;br /&gt;
&lt;br /&gt;
==Accounts==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Email address'''&lt;br /&gt;
| '''Admin level'''&lt;br /&gt;
| '''Free upgrades'''&lt;br /&gt;
| '''Banned?'''&lt;br /&gt;
| '''Comments'''&lt;br /&gt;
|-&lt;br /&gt;
| unixmad&lt;br /&gt;
| Private&lt;br /&gt;
| 5/all&lt;br /&gt;
| [[Gold account|Gold]], [[VIP account|VIP]], [[3D account|3D]]&lt;br /&gt;
| No&lt;br /&gt;
| Main admin account&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
unixmad is very rarely found on [[Graal]] servers. The best way to contact him is through the [[Support Center]] or a [[GCC:PM]]&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Cyberjoueurs&amp;diff=19738</id>
		<title>Cyberjoueurs</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Cyberjoueurs&amp;diff=19738"/>
		<updated>2013-06-01T14:22:05Z</updated>

		<summary type="html">&lt;p&gt;Stefan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Administration]]&lt;br /&gt;
Linux Cyberjoueurs is the French game design company that created [[Graal]].  The general manager of the company is [[User:Stephane|Stephane Portha]], also known as unixmad.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
&lt;br /&gt;
Graal started 1998 with the creation of a Java game called [[Zelda Online]]. The name and content was changed soon after to Graal while the basic concepts were kept, but brought to a new dimension called Online Gaming. Their main source of revenue was advertising money gained by displaying banners on [[PM]] windows on the Graal client until early 2001 when [[Worlds/Graal Bomy Lands|Graal Bomy Lands]] was released. Soon after a new service was introduced allowing players and developers to create their own [[Creation|Playerworld]].&lt;br /&gt;
Besides Graal2D Linux Cyberjoueurs is also pursuing an enigmatic project known as [[Fairyland]], and is working on Graal3D.&lt;br /&gt;
&lt;br /&gt;
==Contact Information==&lt;br /&gt;
&lt;br /&gt;
'''Address:'''&lt;br /&gt;
21 rue de Fécamp&lt;br /&gt;
75012 Paris&lt;br /&gt;
France&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
[http://www.cyberjoueurs.com Cyberjoueurs Website]&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=User:Unixmad&amp;diff=19737</id>
		<title>User:Unixmad</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=User:Unixmad&amp;diff=19737"/>
		<updated>2013-05-31T20:39:00Z</updated>

		<summary type="html">&lt;p&gt;Stefan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Users]][[Category:Administration]][[Category:Global Staff]]&lt;br /&gt;
{{player}}&lt;br /&gt;
'''Stephane Portha''' (in-game nick name '''unixmad''') is the manager of [[Graal|GraalOnline]]. He manages the company hosting GraalOnline servers and making Graal software development, and is the Graal's highest-ranked staff, along with [[User:Stefan|Stefan]].&lt;br /&gt;
&lt;br /&gt;
==Staff Positions==&lt;br /&gt;
Whilst Stefan leads Graal development and programming efforts, Stephane manages networking, staff and public relations.&lt;br /&gt;
&lt;br /&gt;
==Accounts==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Email address'''&lt;br /&gt;
| '''Admin level'''&lt;br /&gt;
| '''Free upgrades'''&lt;br /&gt;
| '''Banned?'''&lt;br /&gt;
| '''Comments'''&lt;br /&gt;
|-&lt;br /&gt;
| unixmad&lt;br /&gt;
| Private&lt;br /&gt;
| 5/all&lt;br /&gt;
| [[Gold account|Gold]], [[VIP account|VIP]], [[3D account|3D]]&lt;br /&gt;
| No&lt;br /&gt;
| Main admin account&lt;br /&gt;
|-&lt;br /&gt;
| unixmadbug1&lt;br /&gt;
| Private&lt;br /&gt;
| Unknown&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Unknown status.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
unixmad is very rarely found on [[Graal]] servers. The best way to contact him is through the [[Support Center]] or a [[GCC:PM]]&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Management/Contacts&amp;diff=19736</id>
		<title>Creation/Management/Contacts</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Management/Contacts&amp;diff=19736"/>
		<updated>2013-05-31T20:36:21Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Managing Director */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Administration]][[Category:Global Staff]][[Category:Forum Moderators]][[Category:Graal Kingdoms Staff]][[Category:Zone Staff]]&lt;br /&gt;
Generally directors will not reply as they are busy with duties, which is why you should contact admins or the separate divisions related to your problem (e.g: GST for NPC-Server issues)&lt;br /&gt;
&lt;br /&gt;
''All staff listed, except the [[Creation/Management/Contacts#Graal Kingdoms Administration|Kingdoms staff]], [[Creation/Management/Contacts#Zone Staff Team|Zone staff]], [[Creation/Management/Contacts#Members|Global News Team Members]], [[Creation/Management/Contacts#Global Development Team|Global Development Team]], and [[Creation/Management/Contacts#Forum Administration|Super Moderators]] are Graalonline Global Admins, with a Global RC.''&lt;br /&gt;
&lt;br /&gt;
=General Support=&lt;br /&gt;
To gain support either email [mailto:support@graalonline.com support@graalonline.com] for player related issues and [mailto:accounts@graalonline.com accounts@graalonline.com] for account related issues.&lt;br /&gt;
&lt;br /&gt;
* [mailto:support@graalonline.com support@graalonline.com]&lt;br /&gt;
* [mailto:accounts@graalonline.com accounts@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
=Managing Director=&lt;br /&gt;
* [[User:unixmad|Stéphane Portha]]&lt;br /&gt;
** ''Manages the network, public relations and global staff''&lt;br /&gt;
**Forum PM: [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=2 unixmad]&lt;br /&gt;
** E-Mail: [mailto:unixmad@graalonline.com unixmad@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
=Technical Director=&lt;br /&gt;
* [[User:Stefan|Stefan Knorr]]&lt;br /&gt;
** ''Manages the client and server software''&lt;br /&gt;
**Forum PM: [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4 Stefan]&lt;br /&gt;
**E-Mail: [mailto:bomber@graalonline.com bomber@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
=[[Creation/Management/Playerworld Administration Team|Playerworld Administration]]=&lt;br /&gt;
{{Playerworld Administration Team}}&lt;br /&gt;
&lt;br /&gt;
=[[Guild|Global Guilds]] Admin= &lt;br /&gt;
* [[User:Xor|Xor]]&lt;br /&gt;
**Forum PM: [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=6109 Xor]&lt;br /&gt;
** E-mail: [mailto:Xor@graalonline.com Xor@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
=[[Creation/Management/Global Scripting Team|Global Scripting Team]]=&lt;br /&gt;
* [[User:Skyld|Skyld (GST Admin)]]&lt;br /&gt;
** ''Deals with technical issues, scripting development and general issues. ''&lt;br /&gt;
**Forum PM: [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=1411 Skyld]&lt;br /&gt;
** E-mail: [mailto:skyld@graalonline.com skyld@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
=[[Creation/Management/Global News Team|Global News Team]]=&lt;br /&gt;
{{Global News Team}}&lt;br /&gt;
&lt;br /&gt;
=[[Worlds/Graal Kingdoms|Graal Kingdoms]] Administration=&lt;br /&gt;
&lt;br /&gt;
For the full list of [[Worlds/Graal Kingdoms|Graal Kingdoms]] staff check '''[[Worlds/Graal Kingdoms/Staff|This Page]]'''.&lt;br /&gt;
&lt;br /&gt;
{{Template:Graal Kingdoms Staff}}&lt;br /&gt;
&lt;br /&gt;
=[[Worlds/Zone|Zone]] Staff Team=&lt;br /&gt;
{{Zone Staff}}&lt;br /&gt;
&lt;br /&gt;
=[[Graal Communication Center|Forum]] Administration=&lt;br /&gt;
&lt;br /&gt;
===Administration===&lt;br /&gt;
* [[User:Darlene159|Moonie]]&lt;br /&gt;
**Forum PM: [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=638 Darlene159]&lt;br /&gt;
** E-mail: [mailto:moonie@graalonline.com moonie@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
===Super Moderators===&lt;br /&gt;
* [[User:Tig|Tig]]&lt;br /&gt;
**Email: [mailto:tig@graalonline.com tig@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
For the full list of forum moderators [[Graal Communication Center/Forum Leaders|see here]].&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Management/Contacts&amp;diff=19735</id>
		<title>Creation/Management/Contacts</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Management/Contacts&amp;diff=19735"/>
		<updated>2013-05-31T20:35:10Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Technical Director */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Administration]][[Category:Global Staff]][[Category:Forum Moderators]][[Category:Graal Kingdoms Staff]][[Category:Zone Staff]]&lt;br /&gt;
Generally directors will not reply as they are busy with duties, which is why you should contact admins or the separate divisions related to your problem (e.g: GST for NPC-Server issues)&lt;br /&gt;
&lt;br /&gt;
''All staff listed, except the [[Creation/Management/Contacts#Graal Kingdoms Administration|Kingdoms staff]], [[Creation/Management/Contacts#Zone Staff Team|Zone staff]], [[Creation/Management/Contacts#Members|Global News Team Members]], [[Creation/Management/Contacts#Global Development Team|Global Development Team]], and [[Creation/Management/Contacts#Forum Administration|Super Moderators]] are Graalonline Global Admins, with a Global RC.''&lt;br /&gt;
&lt;br /&gt;
=General Support=&lt;br /&gt;
To gain support either email [mailto:support@graalonline.com support@graalonline.com] for player related issues and [mailto:accounts@graalonline.com accounts@graalonline.com] for account related issues.&lt;br /&gt;
&lt;br /&gt;
* [mailto:support@graalonline.com support@graalonline.com]&lt;br /&gt;
* [mailto:accounts@graalonline.com accounts@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
=Managing Director=&lt;br /&gt;
* [[User:unixmad|Stéphane Portha]]&lt;br /&gt;
** ''Deals with payment issues only (e.g: Double charges and credit card fraud).''&lt;br /&gt;
**Forum PM: [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=2 unixmad]&lt;br /&gt;
** E-Mail: [mailto:unixmad@graalonline.com unixmad@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
=Technical Director=&lt;br /&gt;
* [[User:Stefan|Stefan Knorr]]&lt;br /&gt;
** ''Manages the client and server software''&lt;br /&gt;
**Forum PM: [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4 Stefan]&lt;br /&gt;
**E-Mail: [mailto:bomber@graalonline.com bomber@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
=[[Creation/Management/Playerworld Administration Team|Playerworld Administration]]=&lt;br /&gt;
{{Playerworld Administration Team}}&lt;br /&gt;
&lt;br /&gt;
=[[Guild|Global Guilds]] Admin= &lt;br /&gt;
* [[User:Xor|Xor]]&lt;br /&gt;
**Forum PM: [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=6109 Xor]&lt;br /&gt;
** E-mail: [mailto:Xor@graalonline.com Xor@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
=[[Creation/Management/Global Scripting Team|Global Scripting Team]]=&lt;br /&gt;
* [[User:Skyld|Skyld (GST Admin)]]&lt;br /&gt;
** ''Deals with technical issues, scripting development and general issues. ''&lt;br /&gt;
**Forum PM: [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=1411 Skyld]&lt;br /&gt;
** E-mail: [mailto:skyld@graalonline.com skyld@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
=[[Creation/Management/Global News Team|Global News Team]]=&lt;br /&gt;
{{Global News Team}}&lt;br /&gt;
&lt;br /&gt;
=[[Worlds/Graal Kingdoms|Graal Kingdoms]] Administration=&lt;br /&gt;
&lt;br /&gt;
For the full list of [[Worlds/Graal Kingdoms|Graal Kingdoms]] staff check '''[[Worlds/Graal Kingdoms/Staff|This Page]]'''.&lt;br /&gt;
&lt;br /&gt;
{{Template:Graal Kingdoms Staff}}&lt;br /&gt;
&lt;br /&gt;
=[[Worlds/Zone|Zone]] Staff Team=&lt;br /&gt;
{{Zone Staff}}&lt;br /&gt;
&lt;br /&gt;
=[[Graal Communication Center|Forum]] Administration=&lt;br /&gt;
&lt;br /&gt;
===Administration===&lt;br /&gt;
* [[User:Darlene159|Moonie]]&lt;br /&gt;
**Forum PM: [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=638 Darlene159]&lt;br /&gt;
** E-mail: [mailto:moonie@graalonline.com moonie@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
===Super Moderators===&lt;br /&gt;
* [[User:Tig|Tig]]&lt;br /&gt;
**Email: [mailto:tig@graalonline.com tig@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
For the full list of forum moderators [[Graal Communication Center/Forum Leaders|see here]].&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Management/Contacts&amp;diff=19734</id>
		<title>Creation/Management/Contacts</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Management/Contacts&amp;diff=19734"/>
		<updated>2013-05-31T20:34:54Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Technical Director */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Administration]][[Category:Global Staff]][[Category:Forum Moderators]][[Category:Graal Kingdoms Staff]][[Category:Zone Staff]]&lt;br /&gt;
Generally directors will not reply as they are busy with duties, which is why you should contact admins or the separate divisions related to your problem (e.g: GST for NPC-Server issues)&lt;br /&gt;
&lt;br /&gt;
''All staff listed, except the [[Creation/Management/Contacts#Graal Kingdoms Administration|Kingdoms staff]], [[Creation/Management/Contacts#Zone Staff Team|Zone staff]], [[Creation/Management/Contacts#Members|Global News Team Members]], [[Creation/Management/Contacts#Global Development Team|Global Development Team]], and [[Creation/Management/Contacts#Forum Administration|Super Moderators]] are Graalonline Global Admins, with a Global RC.''&lt;br /&gt;
&lt;br /&gt;
=General Support=&lt;br /&gt;
To gain support either email [mailto:support@graalonline.com support@graalonline.com] for player related issues and [mailto:accounts@graalonline.com accounts@graalonline.com] for account related issues.&lt;br /&gt;
&lt;br /&gt;
* [mailto:support@graalonline.com support@graalonline.com]&lt;br /&gt;
* [mailto:accounts@graalonline.com accounts@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
=Managing Director=&lt;br /&gt;
* [[User:unixmad|Stéphane Portha]]&lt;br /&gt;
** ''Deals with payment issues only (e.g: Double charges and credit card fraud).''&lt;br /&gt;
**Forum PM: [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=2 unixmad]&lt;br /&gt;
** E-Mail: [mailto:unixmad@graalonline.com unixmad@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
=Technical Director=&lt;br /&gt;
* [[User:Stefan|Stefan]]&lt;br /&gt;
** ''Manages the client and server software''&lt;br /&gt;
**Forum PM: [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=4 Stefan]&lt;br /&gt;
**E-Mail: [mailto:bomber@graalonline.com bomber@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
=[[Creation/Management/Playerworld Administration Team|Playerworld Administration]]=&lt;br /&gt;
{{Playerworld Administration Team}}&lt;br /&gt;
&lt;br /&gt;
=[[Guild|Global Guilds]] Admin= &lt;br /&gt;
* [[User:Xor|Xor]]&lt;br /&gt;
**Forum PM: [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=6109 Xor]&lt;br /&gt;
** E-mail: [mailto:Xor@graalonline.com Xor@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
=[[Creation/Management/Global Scripting Team|Global Scripting Team]]=&lt;br /&gt;
* [[User:Skyld|Skyld (GST Admin)]]&lt;br /&gt;
** ''Deals with technical issues, scripting development and general issues. ''&lt;br /&gt;
**Forum PM: [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=1411 Skyld]&lt;br /&gt;
** E-mail: [mailto:skyld@graalonline.com skyld@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
=[[Creation/Management/Global News Team|Global News Team]]=&lt;br /&gt;
{{Global News Team}}&lt;br /&gt;
&lt;br /&gt;
=[[Worlds/Graal Kingdoms|Graal Kingdoms]] Administration=&lt;br /&gt;
&lt;br /&gt;
For the full list of [[Worlds/Graal Kingdoms|Graal Kingdoms]] staff check '''[[Worlds/Graal Kingdoms/Staff|This Page]]'''.&lt;br /&gt;
&lt;br /&gt;
{{Template:Graal Kingdoms Staff}}&lt;br /&gt;
&lt;br /&gt;
=[[Worlds/Zone|Zone]] Staff Team=&lt;br /&gt;
{{Zone Staff}}&lt;br /&gt;
&lt;br /&gt;
=[[Graal Communication Center|Forum]] Administration=&lt;br /&gt;
&lt;br /&gt;
===Administration===&lt;br /&gt;
* [[User:Darlene159|Moonie]]&lt;br /&gt;
**Forum PM: [http://forums.graalonline.com/forums/private.php?do=newpm&amp;amp;u=638 Darlene159]&lt;br /&gt;
** E-mail: [mailto:moonie@graalonline.com moonie@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
===Super Moderators===&lt;br /&gt;
* [[User:Tig|Tig]]&lt;br /&gt;
**Email: [mailto:tig@graalonline.com tig@graalonline.com]&lt;br /&gt;
&lt;br /&gt;
For the full list of forum moderators [[Graal Communication Center/Forum Leaders|see here]].&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=News/2013&amp;diff=19682</id>
		<title>News/2013</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=News/2013&amp;diff=19682"/>
		<updated>2013-01-03T20:54:06Z</updated>

		<summary type="html">&lt;p&gt;Stefan: Created page with '== 2013 =='&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== [[News/2013|2013]] ==&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/Script/Client/TGUIAnimation&amp;diff=19667</id>
		<title>Creation/Dev/Script/Client/TGUIAnimation</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/Script/Client/TGUIAnimation&amp;diff=19667"/>
		<updated>2012-12-09T03:47:37Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripting Reference]]&lt;br /&gt;
{{Template:Script_Object}}&lt;br /&gt;
&lt;br /&gt;
Inherits from [[Creation/Dev/Script/Client/TGraalVar|TGraalVar]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  TGUIAnimation (TGraalVar):&lt;br /&gt;
  amplitude - float - amplitude for moveupdown, moveleftright and zoominout&lt;br /&gt;
  currenttime - float&lt;br /&gt;
  delay - float - the animation starts after the specified number of seconds&lt;br /&gt;
  duration - float - the animation will last the specified number of seconds&lt;br /&gt;
  interval - float - interval for moveupdown, moveleftright and zoominout&lt;br /&gt;
  tabfirstonshow - boolean - calls tabfirst() after showing the control, by default true&lt;br /&gt;
  timing - string - timing function: 'linear' or 'sinus', sinus is only used for moveupdown, moveleftright  and zoominout&lt;br /&gt;
  transition - string - specifies the animation type: transform, fadeout, fadein, moveoutleft, moveinleft,  moveoutright, moveinright, moveouttop, moveintop, moveoutbottom, moveinbottom, moveupdown,  moveleftright, flipoutleft, flipinleft, flipoutright, flipinright, zoomin, zoomout, zoominout, growin, growout, shrinkin, shrinkout, rotateoutleft, rotateinleft, rotateoutright, rotateinright&lt;br /&gt;
&amp;lt;/pre&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
==== createanimation() ====&lt;br /&gt;
Creates an animation on the object,  temporary modification of the values.&lt;br /&gt;
==== transform transition ====&lt;br /&gt;
If you use the transition = &amp;quot;transform&amp;quot; then you can specify the destination bounds ({x,y,width,height}), the alpha value (0-1) and the rotation. The control will then be moved from the current position to the destination coordinates, this allows more fine-grained animations compared to moveinleft, fadein etc. However this actually moves the the control, compared to the other transitions which just animate the control and at the end set the visibility, while the control will still keep the original position.&lt;br /&gt;
&lt;br /&gt;
=Functions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| obj.createanimation()&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| obj.stopanimation()&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Example=&lt;br /&gt;
&lt;br /&gt;
  new GuiButtonCtrl(&amp;quot;Test_Button&amp;quot;) {&lt;br /&gt;
    profile = GuiBlueButtonProfile;&lt;br /&gt;
    x = 10;&lt;br /&gt;
    y = 10;&lt;br /&gt;
    width = 100;&lt;br /&gt;
    height = 30;&lt;br /&gt;
    text = &amp;quot;Button&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  with ( Test_Button.createanimation() ) {&lt;br /&gt;
    duration = 0.5;&lt;br /&gt;
    transition = &amp;quot;fadein&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Source: [http://forums.graalonline.com/forums/showthread.php?t=134264032 TGuiAnimation]&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/Script/Client/TGUIAnimation&amp;diff=19666</id>
		<title>Creation/Dev/Script/Client/TGUIAnimation</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/Script/Client/TGUIAnimation&amp;diff=19666"/>
		<updated>2012-12-09T03:46:11Z</updated>

		<summary type="html">&lt;p&gt;Stefan: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripting Reference]]&lt;br /&gt;
{{Template:Script_Object}}&lt;br /&gt;
&lt;br /&gt;
Inherits from [[Creation/Dev/Script/Client/TGraalVar|TGraalVar]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  TGUIAnimation (TGraalVar):&lt;br /&gt;
  amplitude - float - amplitude for moveupdown, moveleftright and zoominout&lt;br /&gt;
  currenttime - float&lt;br /&gt;
  delay - float - the animation starts after the specified number of seconds&lt;br /&gt;
  duration - float - the animation will last the specified number of seconds&lt;br /&gt;
  interval - float - interval for moveupdown, moveleftright and zoominout&lt;br /&gt;
  tabfirstonshow - boolean - calls tabfirst() after showing the control, by default true&lt;br /&gt;
  timing - string - timing function: 'linear' or 'sinus', sinus is only used for moveupdown, moveleftright  and zoominout&lt;br /&gt;
  transition - string - specifies the animation type: transform, fadeout, fadein, moveoutleft, moveinleft,  moveoutright, moveinright, moveouttop, moveintop, moveoutbottom, moveinbottom, moveupdown,  moveleftright, flipoutleft, flipinleft, flipoutright, flipinright, zoomin, zoomout, zoominout, growin, growout, shrinkin, shrinkout, rotateoutleft, rotateinleft, rotateoutright, rotateinright&lt;br /&gt;
&amp;lt;/pre&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
==== createanimation() ====&lt;br /&gt;
Creates an animation on the object,  temporary modification of the values.&lt;br /&gt;
==== transform transition ====&lt;br /&gt;
If you use the transition = &amp;quot;transform&amp;quot; then you can specify the destination bounds ({x,y,width,height}), the alpha value (0-1) and the rotation. The control will then be moved from the current position to the destination coordinates, this allows more fine-grained animations compared to moveinleft, fadein etc.&lt;br /&gt;
&lt;br /&gt;
=Functions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| obj.createanimation()&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| obj.stopanimation()&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Example=&lt;br /&gt;
&lt;br /&gt;
  new GuiButtonCtrl(&amp;quot;Test_Button&amp;quot;) {&lt;br /&gt;
    profile = GuiBlueButtonProfile;&lt;br /&gt;
    x = 10;&lt;br /&gt;
    y = 10;&lt;br /&gt;
    width = 100;&lt;br /&gt;
    height = 30;&lt;br /&gt;
    text = &amp;quot;Button&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  with ( Test_Button.createanimation() ) {&lt;br /&gt;
    duration = 0.5;&lt;br /&gt;
    transition = &amp;quot;fadein&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Source: [http://forums.graalonline.com/forums/showthread.php?t=134264032 TGuiAnimation]&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
</feed>