Difference between revisions of "GameObj"

From Legends of Aria Admin and Modding Wiki
Jump to: navigation, search
(Game Object Properties)
(Game Object Properties)
Line 2: Line 2:
  
 
A potion, a monster, a door, and a sword are all examples of GameObjs.
 
A potion, a monster, a door, and a sword are all examples of GameObjs.
== Game Object Properties ==
+
== Basic Game Object Properties ==
 
Official Docs and GameObj engine API: [[http://shardsonline.com/lN2rwhz4jSVambqesEBZ/lua-reference/gameobj.html Game Object Functions]]
 
Official Docs and GameObj engine API: [[http://shardsonline.com/lN2rwhz4jSVambqesEBZ/lua-reference/gameobj.html Game Object Functions]]
 
* '''<code>Id</code>''':The unique Id of a GameObject, Ids are unique on a per cluster basis.
 
* '''<code>Id</code>''':The unique Id of a GameObject, Ids are unique on a per cluster basis.
Line 8: Line 8:
 
** Setter: Gameobject Ids cannot be set. They are created and assigned by the engine on object creation.
 
** Setter: Gameobject Ids cannot be set. They are created and assigned by the engine on object creation.
 
**Referencing a gameobject from a known Id(=number):  <code>mGameObj = GameObj(mId)</code>
 
**Referencing a gameobject from a known Id(=number):  <code>mGameObj = GameObj(mId)</code>
 +
 +
* '''<code>Client Id</code>''': The type of gameobject, it defines the visual look, like Human Female Model, A Rock, a House, whatever.
 +
**Getter: <code>mType = mObj:GetCreationTemplateId()</code>
 +
**Setter: <code>mObj:SetAppearanceFromTemplate(mTemplateName)</code> Sets the Client Id and appearance of the object to the Client Id set in the referenced template. Its a bit of an indirect way of setting it, instead of directly using the Client Id, but thats how it works right now (0.3.5)
  
 
* '''<code>Name</code>''': The name of a gameobject, visible in game.
 
* '''<code>Name</code>''': The name of a gameobject, visible in game.
Line 34: Line 38:
 
** Getter: <code>mValue = mObj:GetObjVar("MyVariable")</code>
 
** Getter: <code>mValue = mObj:GetObjVar("MyVariable")</code>
 
** Getter2: <code>mBool = mObj:HasObjVar("MyVariable")</code> Returns a boolean if the ObjVar exists.
 
** Getter2: <code>mBool = mObj:HasObjVar("MyVariable")</code> Returns a boolean if the ObjVar exists.
 +
** Getter3: <code>mTable = mObj:GetAllObjVars()</code> Returns a Dictionary with ObjVar names as keys and values as values
 +
** Setter: <code>mObj:SetObjVar("MyVariable", SomeValue)</code> Type of the ObjVar is the type of the value assigned.
 +
** Deletion: <code>mObj:DelObjVar("MyVariable")</code>
 +
** Caveat: SetObjVar is asynchronous, when used from another object and synchronous when used from script attached to the object itself. This means, setting an objvar on another object than the one the script is running on will not be executed immediately !!!
 +
 +
* '''<code>Shared Object Properties</code>''': A gameobject can have [[Shared Object Properties]], additional data we can assign, query, change and delete from script and which is shared with the client. Generally this data is data the clients needs for certain tasks, like displaying the object properly. Which of this data can be used depends on the object type, given by its ClientId and is predefined in the engine.
 +
** Getter: <code>mValue = mObj:GetObjVar("MyVariable")</code>
 +
** Getter2: <code>mBool = mObj:HasObjVar("MyVariable")</code> Returns a boolean if the ObjVar exists.
 +
** Getter3: <code>mTable = mObj:GetAllObjVars()</code> Returns a Dictionary with ObjVar names as keys and values as values
 
** Setter: <code>mObj:SetObjVar("MyVariable", SomeValue)</code> Type of the ObjVar is the type of the value assigned.
 
** Setter: <code>mObj:SetObjVar("MyVariable", SomeValue)</code> Type of the ObjVar is the type of the value assigned.
 
** Deletion: <code>mObj:DelObjVar("MyVariable")</code>
 
** Deletion: <code>mObj:DelObjVar("MyVariable")</code>
** Caveat: SetObjVar is asynchronous, when used from another object and synchronous when used from script attached to the object itself. This means, setting an objvar on another object than the one the script is running on will not be available immediately !!!
+
** Caveat: SetObjVar is asynchronous, when used from another object and synchronous when used from script attached to the object itself. This means, setting an objvar on another object than the one the script is running on will not be executed immediately !!!
  
 
== Tips ==
 
== Tips ==

Revision as of 13:20, 1 November 2016

Game Object (GameObj) is a Dynamic object within the game that can occupy a position of the world, including a Container. Game Objects are the most common of all Objects and can have Variables and/or Modules attached to them.

A potion, a monster, a door, and a sword are all examples of GameObjs.

Basic Game Object Properties

Official Docs and GameObj engine API: [Game Object Functions]

  • Id:The unique Id of a GameObject, Ids are unique on a per cluster basis.
    • Getting the Id of a gameObject: mId = mObj.Id
    • Setter: Gameobject Ids cannot be set. They are created and assigned by the engine on object creation.
    • Referencing a gameobject from a known Id(=number): mGameObj = GameObj(mId)
  • Client Id: The type of gameobject, it defines the visual look, like Human Female Model, A Rock, a House, whatever.
    • Getter: mType = mObj:GetCreationTemplateId()
    • Setter: mObj:SetAppearanceFromTemplate(mTemplateName) Sets the Client Id and appearance of the object to the Client Id set in the referenced template. Its a bit of an indirect way of setting it, instead of directly using the Client Id, but thats how it works right now (0.3.5)
  • Name: The name of a gameobject, visible in game.
    • Getter: mName = mObj:GetName()
    • Setter: mObj:SetName("Samogh the Blacksmith")
  • Hue: The hue of an object which mixes with the texture colors. You cannot force an object to be magenta, when its texture color is green.
    • Getter: mHue = mObj:GetHue()
    • Setter: mObj:SetHue("FF0000")
  • Location: Location of the object in the world
    • Getter: mLoc = mObj:GetLoc()
    • Setter: mObj:SetWorldPosition(Loc(0,0,0)) The example positions the object at the world origin.
    • Setter2: mObj:MoveToContainer(mBag, Loc(0,0,0)) Object gets put into container mBag at relative coordinates 0,0,0 inside the container.
    • You can use SetWorldPosition() to move an object out of a container into the world.
  • Rotation: Rotation of the object in its own local coordinate system
    • Getter: mRot = mObj:GetRotation() Returns a Loc object whith three angles in degrees which describe the object rotation around the axis x,y and z. The order of rotation is: z, y, x (The Unity standard of rotation)
    • Setter: mObj:SetRotation(Loc(45,30,60)) The example sets the rotation of the object to 60° around its Z axis, 45° around its X axis and 30° around its Y axis.
  • Scale: Scaling of the object in its own local coordinate system
    • Getter: mScale = mObj:GetScale() Returns a Loc object whith three scale factors which describe the object scaling in each axis x,y and z.
    • Setter: mObj:SetScale(Loc(2,4,2)) The example sets the scale of the object to 2x at its x and Z axis, and 4x at its X axis. So it is 2 times taller than wide and stretched up high (y-axis). This has been changed. Formerly (pre 0.3.5) Scale was only scalar, now its a vector.
  • Object Variables: A gameobject can have Object Variables, additional data we can assign, query, change and delete from script.
    • Getter: mValue = mObj:GetObjVar("MyVariable")
    • Getter2: mBool = mObj:HasObjVar("MyVariable") Returns a boolean if the ObjVar exists.
    • Getter3: mTable = mObj:GetAllObjVars() Returns a Dictionary with ObjVar names as keys and values as values
    • Setter: mObj:SetObjVar("MyVariable", SomeValue) Type of the ObjVar is the type of the value assigned.
    • Deletion: mObj:DelObjVar("MyVariable")
    • Caveat: SetObjVar is asynchronous, when used from another object and synchronous when used from script attached to the object itself. This means, setting an objvar on another object than the one the script is running on will not be executed immediately !!!
  • Shared Object Properties: A gameobject can have Shared Object Properties, additional data we can assign, query, change and delete from script and which is shared with the client. Generally this data is data the clients needs for certain tasks, like displaying the object properly. Which of this data can be used depends on the object type, given by its ClientId and is predefined in the engine.
    • Getter: mValue = mObj:GetObjVar("MyVariable")
    • Getter2: mBool = mObj:HasObjVar("MyVariable") Returns a boolean if the ObjVar exists.
    • Getter3: mTable = mObj:GetAllObjVars() Returns a Dictionary with ObjVar names as keys and values as values
    • Setter: mObj:SetObjVar("MyVariable", SomeValue) Type of the ObjVar is the type of the value assigned.
    • Deletion: mObj:DelObjVar("MyVariable")
    • Caveat: SetObjVar is asynchronous, when used from another object and synchronous when used from script attached to the object itself. This means, setting an objvar on another object than the one the script is running on will not be executed immediately !!!

Tips

  • Obj variables should only contain data you are intending to persist to disk, especially since reading from an ObjVar immediately after setting it will not always return the new value.
  • GameObj can communicate between each other using SendMessage just like Modules.