StendhalScripting/LuaAPI: Difference between revisions

Jump to navigation Jump to search
Content deleted Content added
imported>AntumDeluge
m add navigation menu to page
imported>AntumDeluge
add scripting category
 
(15 intermediate revisions by the same user not shown)
Line 65: Line 65:


Defines functions for accessing Java system properties.
Defines functions for accessing Java system properties.

Methods:

; ''<span style="color:green;">properties:getValue</span>(p)''
: Retrieves the value of a property.
: '''''p:''''' (string) Property name.
: '''''returns:''''' (string) Property value or `nil`.

; ''<span style="color:green;">properties:enabled</span>(p)''
: Checks if a property is enabed.
: '''''p:''''' (string) Property name.
: '''''returns:''''' (boolean) `true` if enabled.

; ''<span style="color:green;">properties:equals</span>(p, v)''
: Checks if a property is set to a specified value.
: '''''p:''''' (string) Property name.
: '''''v:''''' (string) Value to compare with.
: '''''returns:''''' (boolean) `true` if the value of the property is the same as `v`.

Examples usage:

<pre>
-- example of only executing script contents on test server

if not properties:enabed("stendhal.testserver") then
do return end
end
</pre>


== game ==
== game ==
Line 170: Line 198:


== entities ==
== entities ==

See also: [[StendhalAPI#Entities]] for public methods that can be performed on <code>Entity</code> objects.


Methods:
Methods:
Line 181: Line 211:
: Retrieves an existing SpeakerNPC.
: Retrieves an existing SpeakerNPC.
: '''''name:''''' (<code>String</code>) Name of NPC.
: '''''name:''''' (<code>String</code>) Name of NPC.
: ''returns:'' {{StendhalFile|master|src/games/stendhal/server/entity/npc/SpeakerNPC.java|SpeakerNPC}} instance or <code>null</code>.
: ''returns:'' [[StendhalScripting/LuaAPI#LuaSpeakerNPC|SpeakerNPC]] instance or <code>null</code>.


; ''<span style="color:green">entities:getItem</span>(name)''
; ''<span style="color:green">entities:getItem</span>(name)''
Line 196: Line 226:
: Creates an interactive NPC.
: Creates an interactive NPC.
: '''''name:''''' (<code>String</code>) Name of new NPC.
: '''''name:''''' (<code>String</code>) Name of new NPC.
: ''returns:'' New {{StendhalFile|master|src/games/stendhal/server/entity/npc/SpeakerNPC.java|SpeakerNPC}} instance.
: ''returns:'' New [[StendhalScripting/LuaAPI#LuaSpeakerNPC|SpeakerNPC]] instance.


; ''<span style="color:green">entities:createSilentNPC</span>()''
; ''<span style="color:green">entities:createSilentNPC</span>()''
: Creates a non-interactive NPC.
: Creates a non-interactive NPC.
: ''returns:'' New {{StendhalFile|master|src/games/stendhal/server/entity/npc/SilentNPC.java|SilentNPC}} instance.
: ''returns:'' New [[StendhalScripting/LuaAPI#LuaSilentNPC|SilentNPC]] instance.


; ''<span style="color:green">entities:setPath</span>(entity, table, loop)''
; ''<span style="color:green">entities:setPath</span>(entity, table, loop)''
Line 239: Line 269:
:: ''<span style="color:blue;">summoner:</span>'' (<code>string</code>) (optional) Name of entity doing the summoning (used for logging game events).
:: ''<span style="color:blue;">summoner:</span>'' (<code>string</code>) (optional) Name of entity doing the summoning (used for logging game events).
:: ''<span style="color:blue;">raid:</span>'' (<code>bool</code>) (optional) Whether or not the creature should be a <code>RaidCreature</code> instance (default: true).
:: ''<span style="color:blue;">raid:</span>'' (<code>bool</code>) (optional) Whether or not the creature should be a <code>RaidCreature</code> instance (default: true).

=== Lua Entity Classes ===

==== LuaSpeakerNPC ====

* Inherits: [[StendhalAPI#SpeakerNPC|SpeakerNPC]]

Public methods:

{{PublicMethod | add | params=states, triggers, conditions, nextState, reply, actions | desc=Additional method to support passing Lua data types as parameters. | paramlist=
{{MethodParam | states | desc=The conversation state(s) the entity should be in to trigger response. Can be [[StendhalAPI#ConversationStates|ConversationStates enum]] value or <code>LuaTable</code> of ConversationStates. }}
{{MethodParam | triggers | desc=<code>String</code> or <code>LuaTable</code> of strings to trigger response. }}
{{MethodParam | conditions | desc=Conditions to check for this response. Can be [[StendhalAPI#ChatCondition|ChatCondition instance]], a <code>LuaTable</code> of ChatCondition instances, or a function. }}
{{MethodParam | nextState | type=ConversationState | desc=Conversation state to set entity to after response. }}
{{MethodParam | reply | type=String | desc=The NPC's response or <code>null</code>. }}
{{MethodParam | actions | desc=Actions to execute. Can be [[StendhalAPI#ChatAction|ChatAction instance]], a <code>LuaTable</code> of ChatAction instances, or a function. }} }}

{{PublicMethod | setPath | params=table, loop | desc=Set a path for this entity to follow. | paramlist=
{{MethodParam | table | type=table | desc=Table of coordinates to set as path. Example: <code>{{35, 79}, {35, 89}, {40, 89}}</code> }}
{{MethodParam | loop | type=boolean | desc=(optional) If <code>true</code>, entity should loop around to restart path when reaching the end. }} }}

{{PublicMethod | setPathAndPosition | params=table, loop | desc=Set path & starting position for entity. The starting position is the first node in the path. | paramlist=
{{MethodParam | table | type=table | desc=Table of coordinates to set as path. Example: <code>{{35, 79}, {35, 89}, {40, 89}}</code> }}
{{MethodParam | loop | type=boolean | desc=(optional) If <code>true</code>, entity should loop around to restart path when reaching the end. }} }}

==== LuaSilentNPC ====

* Inherits: [[StendhalAPI#SilentNPC|SilentNPC]]

Public methods:

{{PublicMethod | setPath | params=table, loop | desc=Set a path for this entity to follow. | paramlist=
{{MethodParam | table | type=table | desc=Table of coordinates to set as path. Example: <code>{{35, 79}, {35, 89}, {40, 89}}</code> }}
{{MethodParam | loop | type=boolean | desc=(optional) If <code>true</code>, entity should loop around to restart path when reaching the end. }} }}

{{PublicMethod | setPathAndPosition | params=table, loop | desc=Set path & starting position for entity. The starting position is the first node in the path. | paramlist=
{{MethodParam | table | type=table | desc=Table of coordinates to set as path. Example: <code>{{35, 79}, {35, 89}, {40, 89}}</code> }}
{{MethodParam | loop | type=boolean | desc=(optional) If <code>true</code>, entity should loop around to restart path when reaching the end. }} }}


=== entities.manager ===
=== entities.manager ===
Line 479: Line 547:
; ''<span style="color:green;">conditions:notCondition</span>(condition)''
; ''<span style="color:green;">conditions:notCondition</span>(condition)''
: Creates a {{StendhalFile|master|src/games/stendhal/server/entity/npc/condition/NotCondition.java|NotCondition}}.
: Creates a {{StendhalFile|master|src/games/stendhal/server/entity/npc/condition/NotCondition.java|NotCondition}}.
: '''''condition:''''' Can be a <code>ChatCondition</code>, <code>LuaValue</code> containing at <code>ChatCondition</code> instance, or a Lua table of <code>ChatCondition</code> instances.
: '''''condition:''''' Can be a <code>ChatCondition</code>, <code>LuaValue</code> containing a <code>ChatCondition</code> instance, a Lua table of <code>ChatCondition</code> instances, or a function.
: ''returns:'' New <code>NotCondition</code> instance.
: ''returns:'' New <code>NotCondition</code> instance.


Line 506: Line 574:


Exposes merchant handling classes & functions to Lua.
Exposes merchant handling classes & functions to Lua.

Members:

; ''<span style="color:brown;">merchants.shops</span>''
: This is the {{StendhalFile|master|src/games/stendhal/server/entity/npc/ShopList.java|games.stendhal.server.entity.npc.ShopList}} instance.
: ''public methods: TODO''


Methods:
Methods:
Line 547: Line 621:


The {{StendhalFile|master|src/games/stendhal/server/entity/npc/ConversationStates.java|games.stendhal.server.entity.npc.ConversationStates}} enum.
The {{StendhalFile|master|src/games/stendhal/server/entity/npc/ConversationStates.java|games.stendhal.server.entity.npc.ConversationStates}} enum.

Example usage:
<pre>
local npc = entities:createSpeakerNPC("foo")
npc:setCurrentState(ConversationStates.IDLE)
</pre>


== ConversationPhrases ==
== ConversationPhrases ==


The {{StendhalFile|master|src/games/stendhal/server/entity/npc/ConversationPhrases.java|games.stendhal.server.entity.npc.ConversationPhrases}} class.
The {{StendhalFile|master|src/games/stendhal/server/entity/npc/ConversationPhrases.java|games.stendhal.server.entity.npc.ConversationPhrases}} class.

Example usage:
<pre>
local npc = entities:createSpeakerNPC("foo")
npc:add(ConversationStates.IDLE,
ConversationPhrases.GREETING_MESSAGES,
nil,
ConversationStates.ATTENDING,
"Hello! How can I help you.",
nil)
</pre>


== CollisionAction ==
== CollisionAction ==


The {{StendhalFile|master|src/games/stendhal/server/entity/CollisionAction.java|games.stendhal.server.entity.CollisionAction}} enum.
The {{StendhalFile|master|src/games/stendhal/server/entity/CollisionAction.java|games.stendhal.server.entity.CollisionAction}} enum.

Example usage:
<pre>
local npc = entities:createSilentNPC()
npc:setCollisionAction(CollisionAction.STOP)
</pre>


== SkinColor ==
== SkinColor ==


The {{StendhalFile|master|src/games/stendhal/common/constants/SkinColor.java|games.stendhal.common.constants.SkinColor}} enum.
The {{StendhalFile|master|src/games/stendhal/common/constants/SkinColor.java|games.stendhal.common.constants.SkinColor}} enum.

Example usage:
<pre>
local npc = entities:createSpeakerNPC("foo")
npc:setOutfit("body=0,head=0,hair=3,dress=5")
npc:setOutfitColor("skin", SkinColor.DARK)
</pre>


== Direction ==
== Direction ==


The {{StendhalFile|master|src/games/stendhal/common/Direction.java|games.stendhal.common.Direction}} enum.
The {{StendhalFile|master|src/games/stendhal/common/Direction.java|games.stendhal.common.Direction}} enum.

Example usage:
<pre>
local npc = entities:createSpeakerNPC("foo")
npc:setDirection(Direction.DOWN)
</pre>


== DaylightPhase ==
== DaylightPhase ==
Line 579: Line 689:


The [https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html java.awt.Color] class.
The [https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html java.awt.Color] class.

Example usage:
<pre>
local npc = entities:createSpeakerNPC("foo")
npc:setOutfit("body=0,head=0,hair=3,dress=5")
npc:setOutfitColor("dress", Color.BLUE)
</pre>


= Supplemental Methods =
= Supplemental Methods =
Line 632: Line 749:


The following methods have been added to the built-in Lua [https://www.lua.org/manual/5.3/manual.html#6.6 table] library.
The following methods have been added to the built-in Lua [https://www.lua.org/manual/5.3/manual.html#6.6 table] library.

; ''<span style="color:green;">table.concat</span>(tbl1, tbl2)''
: Merges the contents of one table into another.
: '''''tbl1:''''' The table receiving the new content.
: '''''tbl2:''''' The table containing the content to be copied.

{{PublicMethod | table.contains | params=table, o | desc=Checks if a table contains a value. | paramlist=
{{MethodParam | table | type=table | desc=Table to be checked.}}
{{MethodParam | o | desc=The object to check for.}}
| ret=<code>true</code> if <code>o</code> is in <code>table</code>. | rettype=boolean }}


; ''<span style="color:green;">table.clean</span>(tbl)''
; ''<span style="color:green;">table.clean</span>(tbl)''
Line 638: Line 765:
: ''returns:'' Copy of <code>tbl</code> with <code>nil</code> values removed.
: ''returns:'' Copy of <code>tbl</code> with <code>nil</code> values removed.


{{PublicMethod | table.join | params=table, delim | desc=Joins a table of strings into a string. | paramlist=
; ''<span style="color:green;">table.concat</span>(tbl1, tbl2)''
{{MethodParam | table | type=table | desc=Table to be joined.}}
: Merges the contents of one table into another.
{{MethodParam | delim | type=string | desc=Character(s) to be used as separator.}}
: '''''tbl1:''''' The table receiving the new content.
| ret=The resulting string. | rettype=string }}
: '''''tbl2:''''' The table containing the content to be copied.


= See Also =
= See Also =
Line 647: Line 774:
* [[StendhalScripting/Lua#Lua_Basics|Lua: Basics]]
* [[StendhalScripting/Lua#Lua_Basics|Lua: Basics]]
* [[StendhalScripting/Lua#Stendhal_Application|Lua: Stendhal Application]]
* [[StendhalScripting/Lua#Stendhal_Application|Lua: Stendhal Application]]


[[Category:Stendhal]]
[[Category:Documentation]]
[[Category:API]]
[[Category:Scripting]]
[[Category:Lua]]