编辑“︁
StendhalScripting/LuaAPI
”︁(章节)
跳转到导航
跳转到搜索
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= Objects = == luajava == This is an object of the LuajavaLib library. It can be used to coerce Java static objects to Lua or create new Java object instances. Example of exposing a static object & enums to Lua: <pre> -- store a Java enum in a Lua global variable ConversationStates = luajava.bindClass("games.stendhal.server.entity.npc.ConversationStates") -- access the enum values like so ConversationStates.IDLE </pre> Example of creating an object instance: <pre> -- store instance in local variable local dog = luajava.newInstance("games.stendhal.server.entity.npc.SilentNPC") -- access object methods like so dog:setEntityClass("animal/puppy") dog:setPosition(2, 5) -- class with constructor using parameters local speaker = luajava.newInstance("games.stendhal.server.entity.npc.SpeakerNPC", "Frank") speaker:setOutfit("body=0,head=0,eyes=0,hair=5,dress=5") speaker:setPosition(2, 6) </pre> To make scripting easier, Stendhal employs a {{StendhalFile|master|src/games/stendhal/server/core/scripting/lua/init.lua|master script}} & some helper objects & methods to handle the functionality mentioned above. An explanation of these objects & methods follows. == logger == Manages logging in Lua via the [https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Logger.html org.apache.log4j.Logger] class. Methods: ; ''<span style="color:green;">logger:info</span>(message)'' : Prints an information level message to the console. : '''''message:''''' Text to be printed. ; ''<span style="color:green;">logger:warn</span>(message)'' : Prints a warning level message to the console. : '''''message:''''' Text to be printed. ; ''<span style="color:green;">logger:error</span>(message)'' : Prints an error level message to the console. : '''''message:''''' Text to be printed. Example usage: <pre> local zone = "0_semos_city" if game:setZone(zone) then -- do something else logger:error("Could not set zone: " .. zone) end </pre> == 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 == The main object that handles setting zone & adding entities to game. Methods: ; ''<span style="color:green">game:add</span>(object)'' : Adds an {{MarauroaFile|master|src/marauroa/common/game/RPObject.java|RPObject}} instance to the current zone. : '''''object:''''' Object to add. ; ''<span style="color:green">game:add</span>(npc)'' : Adds an {{StendhalFile|master|src/games/stendhal/server/entity/npc/NPC.java|NPC}} instance to the current zone. : '''''npc:''''' NPC to add. ; ''<span style="color:green">game:add</span>(creature, x, y)'' : Adds a {{StendhalFile|master|src/games/stendhal/server/entity/creature/Creature.java|Creature}} instance to the current zone. : '''''creature:''''' Creature to add. : '''''x:''''' Horizontal position of where to add creature. : '''''y:''''' Vertical position of where to add creature. ; ''<span style="color:green">game:remove</span>(object)'' : : '''''object:''''' ; ''<span style="color:green">game:remove</span>(npc)'' : : '''''npc:''''' ; ''<span style="color:green">game:addGameEvent</span>(source, event, params)'' : Adds a new {{StendhalFile|master|src/games/stendhal/server/core/engine/GameEvent.java|GameEvent}}. : '''''source:''''' : '''''event:''''' : '''''params:''''' ; ''<span style="color:green">game:setZone</span>(name)'' : Sets the current zone. : '''''name:''''' String identifier for zone to be set as current zone. : ''returns:'' <code>true</code> if zone was successfully set. ; ''<span style="color:green">game:setZone</span>(zone)'' : Sets the current zone. : '''''zone:''''' {{StendhalFile|master|src/games/stendhal/server/core/engine/StendhalRPZone.java|StendhalRPZone}} instance to set as current zone. : ''returns:'' <code>true</code> if zone was successfully set. ; ''<span style="color:green">game:getZone</span>(object)'' : Retrieves the zone where <code>object</code> is located. : '''''object:''''' The {{MarauroaFile|master|src/marauroa/common/game/RPObject.java|RPObject}} from which the zone should be retrieved. : ''returns:'' {{StendhalFile|master|src/games/stendhal/server/core/engine/StendhalRPZone.java|StendhalRPZone}} or <code>null</code> if it doesn't exists ; ''<span style="color:green">game:getZone</span>(name)'' : Retrieves a zone by string ID. : '''''zoneName:''''' Name of zone to retrieve. : ''returns:'' {{StendhalFile|master|src/games/stendhal/server/core/engine/StendhalRPZone.java|StendhalRPZone}} or <code>null</code> if it doesn't exist. ; ''<span style="color:green">game:setMusic</span>(filename, args)'' : Sets the music for the currently selected zone. :; <span style="color:darkgreen; font-style:italic;">filename:</span> :: File basename excluding .ogg extension. :; <span style="color:darkgreen; font-style:italic;">args:</span> :: Lua table of key=value integer values. ::; Valid keys: ::: <span style="color:darkblue; font-style:italic;">volume:</span> Volume level (default: 100). ::: <span style="color:darkblue; font-style:italic;">x:</span> The X coordinate of the sound source (default: 1). ::: <span style="color:darkblue; font-style:italic;">y:</span> The Y coordinate of the sound source (default: 1). ::: <span style="color:darkblue; font-style:italic;">radius:</span> The radius from which the music can be heard (default: 10000). ; ''<span style="color:green">game:playerIsInZone</span>(player, zoneName)'' : : '''''player:''''' : '''''zoneName:''''' : ''returns:'' <code>boolean</code> ; ''<span style="color:green">game:getCreatures</span>()'' : : ''returns:'' An array of all available creatures. ; ''<span style="color:green">game:getCreature</span>(clazz)'' : Retrieves a {{StendhalFile|master|src/games/stendhal/server/entity/creature/Creature.java|Creature}} instance. : '''''clazz:''''' String name of the creature. : ''returns:'' Creature or <code>null</code> if doesn't exist. ; ''<span style="color:green">game:getItems</span>()'' : : ''returns:'' Array list of available items. ; ''<span style="color:green">game:getItem</span>(name)'' : : '''name:''' : ''returns:'' Item instance or <code>null</code> if doesn't exist. ; ''<span style="color:green">game:modify</span>(entity)'' : : '''''entity:''''' ; ''<span style="color:green">game:privateText</span>(player, text)'' : Sends a private text to a player. : '''''player:''''' Player to receive the message. : '''''text:''''' Message text to send to player. ; ''<span style="color:green">game:getMessage</span>()'' : : ''returns:'' <code>String</code> == entities == See also: [[StendhalAPI#Entities]] for public methods that can be performed on <code>Entity</code> objects. Methods: ; ''<span style="color:green">entities:getPlayer</span>(name)'' : Retrieves a logged in Player. : '''''name:''''' (<code>String</code>) Name of player. : ''returns:'' Logged in {{StendhalFile|master|src/games/stendhal/server/entity/player/Player.java|Player}} or <code>null</code>. ; ''<span style="color:green">entities:getNPC</span>(name)'' : Retrieves an existing SpeakerNPC. : '''''name:''''' (<code>String</code>) Name of NPC. : ''returns:'' [[StendhalScripting/LuaAPI#LuaSpeakerNPC|SpeakerNPC]] instance or <code>null</code>. ; ''<span style="color:green">entities:getItem</span>(name)'' : Retrieves a registered Item. : '''''name:''''' (<code>String</code>) Name of the item. : ''returns:'' {{StendhalFile|master|src/games/stendhal/server/entity/item/Item.java|Item}} instance or <code>null</code> if not a registered item. ; ''<span style="color:green">entities:getStackableItem</span>(name)'' : Retrieves a registered StackableItem. : '''''name:''''' (<code>String</code>) Name of the item. : ''returns:'' {{StendhalFile|master|src/games/stendhal/server/entity/item/StackableItem.java|StackableItem}} instance or <code>null</code> if not a registered stackable item. ; ''<span style="color:green">entities:createSpeakerNPC</span>(name)'' : Creates an interactive NPC. : '''''name:''''' (<code>String</code>) Name of new NPC. : ''returns:'' New [[StendhalScripting/LuaAPI#LuaSpeakerNPC|SpeakerNPC]] instance. ; ''<span style="color:green">entities:createSilentNPC</span>()'' : Creates a non-interactive NPC. : ''returns:'' New [[StendhalScripting/LuaAPI#LuaSilentNPC|SilentNPC]] instance. ; ''<span style="color:green">entities:setPath</span>(entity, table, loop)'' : '''''DEPRECATED:''' path can now be set by directly calling the NPC's <code>setPath</code> method'' : Helper method for setting an NPC's path. : '''''entity:''''' (<code>RPEntity</code>) Then entity whose path is being set. : '''''table:''''' (<code>LuaTable</code>) Table with list of coordinates representing nodes. : '''''loop:''''' (<code>boolean</code>) If <code>true</code>, the entity's path should loop. ; ''<span style="color:green">entities:setPathAndPosition</span>(entity, table, loop)'' <nowiki> : '''''DEPRECATED:''' path can now be set by directly calling the NPC's <code>setPath</code> method'' : Helper function for setting an NPC's path & starting position. : '''''entity:''''' (<code>RPEntity</code>) Then entity whose path is being set. : '''''table:''''' (<code>LuaTable</code>) Table with list of coordinates representing nodes. : '''''loop:''''' (<code>boolean</code>) If <code>true</code>, the entity's path should loop. ; ''<span style="color:green">entities:createSign</span>(visible)'' : Creates a new {{StendhalFile|master|src/games/stendhal/server/entity/sign/Sign.java|Sign}} entity. : '''''visible:''''' (<code>boolean</code>) (optional) If <code>false</code>, the sign will not have a visual representation. : ''returns:'' New <code>Sign</code> instance. ; ''<span style="color:green">entities:createShopSign</span>(name, title, caption, seller)'' : Creates a new {{StendhalFile|master|src/games/stendhal/server/entity/sign/ShopSign.java|ShopSign}} entity. : '''''name:''''' (<code>String</code>) The shop name. : '''''title:''''' (<code>String</code>) The sign title. : '''''caption:''''' (<code>String</code>) The caption above the table. : '''''seller:''''' (<code>boolean</code>) <code>true</code>, if this sign is for items sold by an NPC (defaults to <code>true</code> if <code>null</code>). : ''returns:'' New <code>ShopSign</code> instance. ; ''<span style="color:green;">entities:summonCreature</span>(table)'' : Summons a creature into the area. : '''''table:''''' Key-value table containing parameters for summoning creature. :; ''keys:'' :: ''<span style="color:blue;">name:</span>'' (<code>string</code>) Name of creature to be summoned. :: ''<span style="color:blue;">zone:</span>'' (<code>string</code>) Name of zone where creature should be summoned. :: ''<span style="color:blue;">x:</span>'' (<code>int</code>) Horizontal position of summon location. :: ''<span style="color:blue;">y:</span>'' (<code>int</code>) Vertical position of summon location. :: ''<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). === 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 === This is simply the {{StendhalFile|master|src/games/stendhal/server/core/rule/defaultruleset/DefaultEntityManager.java|entity manager}} instance. Public methods: '''''TODO''''' == quests == Adds helper functions for creating & manipulating quests & exposes select public methods of the {{StendhalFile|master|src/games/stendhal/server/core/rp/StendhalQuestSystem.java|games.stendhal.server.core.rp.StendhalQuestSystem}} class. Methods: ; ''<span style="color:green">quests:create</span>(slotName, name)'' : Creates a new quest. : '''''slotName:''''' (optional) The string identifier for the quest. : '''''name:''''' (optional) The human-readable name that can be shown in travel log. : ''returns:'' New {{StendhalFile|master|src/games/stendhal/server/core/scripting/lua/QuestHelper.java|games.stendhal.server.core.scripting.lua.QuestHelper.LuaQuest}} instance. ; ''<span style="color:green">quests:load</span>(quest)'' : Adds a quest to the world. : '''''quest:''''' The {{StendhalFile|master|src/games/stendhal/server/maps/quests/IQuest.java|IQuest}} instance to be loaded. ; ''<span style="color:green">quests:unload</span>(questName)'' : Removes a quest from the world. : '''''questName:''''' String name of the quest to be removed. ; ''<span style="color:green">quests:cache</span>(quest)'' : Caches a quest for loading at server startup. : '''''quest:''''' {{StendhalFile|master|src/games/stendhal/server/maps/quests/IQuest.java|IQuest}} instance to be loaded. :; ''aliases:'' :: ''<span style="color:green">quests:register</span>'' ; ''<span style="color:green">quests:isLoaded</span>(quest)'' : Checks if a quest has been loaded. : '''''quest:''''' {{StendhalFile|master|src/games/stendhal/server/maps/quests/IQuest.java|IQuest}} instance to check. : ''returns:'' <code>true</code> if the instance matches stored quests. ; ''<span style="color:green">quests:listAll</span>(player)'' : List all quests the player knows about. : '''''player:''''' Player to create the report for. : ''returns:'' String report. ; ''<span style="color:green">quests:list</span>(player, questName)'' : Creates a report on a specified quest for a player. : '''''player:''''' Player to create the report for. : '''''questName:''''' Name of quest to be reported. : ''returns:'' String report. ; ''<span style="color:green">quests:listStates</span>(player)'' : Dumps the internal quest states for the specified player. This is used for the {{StendhalFile|master|src/games/stendhal/server/action/admin/InspectAction.java|InspectAction}}. : '''''player:''''' Player to create the report for. : ''returns:'' String report. ; ''<span style="color:green">quests:getQuest</span>(questName)'' : Retrieves the {{StendhalFile|master|src/games/stendhal/server/maps/quests/IQuest.java|IQuest}} object for a named quest. : '''''questName:''''' Name of quest. : ''returns:'' <code>IQuest</code> or <code>null</code> if doesn't exist. ; ''<span style="color:green">quests:getQuestFromSlot</span>(questSlot)'' : Retrieves the {{StendhalFile|master|src/games/stendhal/server/maps/quests/IQuest.java|IQuest}} object for a quest. : '''''questSlot:''''' Quest identifier string. : ''returns:'' <code>IQuest</code> or <code>null</code> if doesn't exist. ; ''<span style="color:green">quests:getOpen</span>(player)'' : Retrieves a list of open quests from a player. : '''''player:''''' {{StendhalFile|master|src/games/stendhal/server/entity/player/Player.java|Player}} instance to be checked. : ''returns:'' List of string identifiers for open quests. ; ''<span style="color:green">quests:getCompleted</span>(player)'' : Retrieves a list of completed quests from a player. : '''''player:''''' {{StendhalFile|master|src/games/stendhal/server/entity/player/Player.java|Player}} instance to be checked. : ''returns:'' List of string identifiers for completed quests. ; ''<span style="color:green">quests:getIncomplete</span>(player, region)'' : Retrieves a list of incomplete quests in a specified region. : '''''player:''''' {{StendhalFile|master|src/games/stendhal/server/entity/player/Player.java|Player}} instance to be checked. : '''''region:''''' Region name/identifier. : ''returns:'' List of string identifiers of incomplete quests in region. ; ''<span style="color:green">quests:getRepeatable</span>(player)'' : Retrieves a list of quests a player has completed, and can now do again. : '''''player:''''' {{StendhalFile|master|src/games/stendhal/server/entity/player/Player.java|Player}} instance to be checked. : ''returns:'' ; ''<span style="color:green">quests:getDescription</span>(player, questName)'' : Retrieves the description of a quest. : '''''player:''''' {{StendhalFile|master|src/games/stendhal/server/entity/player/Player.java|Player}} instance to be checked. : '''''questName:''''' Name of the quest. : ''returns:'' <code>String</code> description. ; ''<span style="color:green">quests:getLevelWarning</span>(player, questName)'' : If the quest is too dangerous, add a warning unless the player has already completed it. : '''''player:''''' {{StendhalFile|master|src/games/stendhal/server/entity/player/Player.java|Player}} instance to be checked. : '''''questName:''''' Name of the quest. : ''returns:'' <code>String</code> ; ''<span style="color:green">quests:getProgressDetails</span>(player, questeName)'' : Retrieves details on the progress of the quest. : '''''player:''''' {{StendhalFile|master|src/games/stendhal/server/entity/player/Player.java|Player}} instance to be checked. : '''''questName:''''' Name of the quest. : ''returns:'' <code>List<String></code> ; ''<span style="color:green">quests:getNPCNamesForUnstartedInRegionForLevel</span>(player, region)'' : Retrieves a list of the unique npc names for unstarted quests in a specified region. : '''''player:''''' {{StendhalFile|master|src/games/stendhal/server/entity/player/Player.java|Player}} instance to be checked. : '''''region:''''' Region to check in. : ''returns:'' <code>List<String></code> ; ''<span style="color:green">quests:getDescriptionForUnstartedInRegionFromNPCName</span>(player, region, name)'' : Retrieves quest descriptions for unstarted quests in a specified region matching a specific NPC name. : '''''player:''''' {{StendhalFile|master|src/games/stendhal/server/entity/player/Player.java|Player}} instance to be checked. : '''''region:''''' Region to check in. : '''''name:''''' Name of NPC. : ''returns:'' <code>List<String></code> === quests.simple === A special class for creating a simple collect single item quest. Methods: ; ''<span style="color:green">quests.simple:create</span></span>(slotName, properName, npcName)'' : '''''slotName:''''' <code>String</code> identifier to be used for quest. : '''''properName:''''' Human-readable name to be displayed in travel log. : '''''npcName:''''' The NPC associated with the quest. : ''returns:'' {{StendhalFile|master|src/games/stendhal/server/maps/quests/SimpleQuestCreator.java|SimpleQuest}} instance. ==== SimpleQuest Object ==== {{StendhalFile|master|src/games/stendhal/server/maps/quests/SimpleQuestCreator.java|games.stendhal.server.maps.quests.SimpleQuestCreator.SimpleQuest}} Methods: ; ''<span style="color:green">setDescription</span>(descr)'' : : '''''descr:''''' (<code>String</code>) ; ''<span style="color:green">setRepeatable</span>(delay)'' : : '''''delay:''''' (<code>Integer</code>) ; ''<span style="color:green">setItemToCollect</span>(itemName, quantity)'' : : '''''itemName:''''' (<code>String</code>) : '''''quantity:''''' (<code>int</code>) ; ''<span style="color:green">setXPReward</span>(xp)'' : : '''''xp:''''' (<code>int</code>) ; ''<span style="color:green">setKarmaReward</span>(karma)'' : : '''''karma:''''' (<code>double</code>) ; ''<span style="color:green">setKarmaAcceptReward</span>(karma)'' : : '''''karma:''''' (<code>double</code>) ; ''<span style="color:green">setKarmaRejectReward</span>(karma)'' : : '''''karma:''''' (<code>double</code>) ; ''<span style="color:green">addItemReward</span>(itemName, quantity)'' : : '''''itemName:''''' (<code>String</code>) : '''''quantity:''''' (<code>int</code>) (optional) ; ''<span style="color:green">addStatReward</span>(id, amount)'' : : '''''id:''''' (<code>String</code>) See IDs below. : '''''amount:''''' (<code>int</code>) :; ''IDs:'' :: '''''xp:''''' :: '''''def:''''' :: '''''atk:''''' :: '''''ratk:''''' ; ''<span style="color:green">setVerboseReward</span>(verbose)'' : : '''''verbose:''''' (<code>boolean</code>) ; ''<span style="color:green">setReply</span>(id, reply)'' : : '''''id:''''' (<code>String</code>) See IDs below. : '''''reply:''''' (<code>String</code>) :; ''IDs:'' :: '''''request:''''' :: '''''accept:''''' :: '''''reject:''''' :: '''''reward:''''' :: '''''verbose_reward_prefix:''''' :: '''''already_active:''''' :: '''''missing:''''' :: '''''no_repeat:''''' :: '''''cooldown_prefix:''''' ; ''<span style="color:green">setRegion</span>(regionName)'' : : '''''regionName:''''' (<code>String</code>) Also inherits methods from {{StendhalFile|master|src/games/stendhal/server/maps/quests/AbstractQuest.java|AbstractQuest}}: Example: <pre> -- create SimpleQuest instance local quest = simpleQuest:create("wood_for_lua", "Wood for Lua", "Lua") quest:setDescription("Lua needs help gathering wood.") quest:setRequestReply("I need help gathering some wood. Will you help me?") quest:setAcceptReply("Great!") quest:setRewardReply("Thank a bunch!") quest:setRejectReply("Fine! I don't need your help anyway.") quest:setItemToCollect("wood", 5) quest:setRepeatable(true) quest:setRepeatDelay(10) quest:setXPReward(50) quest:setKarmaReward(5.0) quest:addItemReward("rose", 3) quest:addItemReward("money", 100) quest:setRegion(Region.SEMOS_CITY) quests:register(quest) </pre> == conditions == Object for creating {{StendhalFile|master|src/games/stendhal/server/entity/npc/ChatCondition.java|games.stendhal.server.entity.npc.ChatCondition}} instances. Methods: ; ''<span style="color:green;">conditions:create</span>(function)'' : Creates a custom {{StendhalFile|master|src/games/stendhal/server/entity/npc/ChatCondition.java|ChatCondition}}. : '''''function:''''' Lua function to be invoked when <code>ChatCondition.fire</code> is called. : ''returns:'' New <code>ChatCondition</code> instance. ; ''<span style="color:green;">conditions:notCondition</span>(condition)'' : 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 a <code>ChatCondition</code> instance, a Lua table of <code>ChatCondition</code> instances, or a function. : ''returns:'' New <code>NotCondition</code> instance. ; ''<span style="color:green;">conditions:andCondition</span>(conditionList)'' : Creates an {{StendhalFile|master|src/games/stendhal/server/entity/npc/condition/AndCondition.java|AndCondition}}. : '''''conditionList:''''' Lua table containing <code>ChatCondition</code> instances. : ''returns:'' New <code>AndCondition</code> instance. == actions == Object for creating {{StendhalFile|master|src/games/stendhal/server/entity/npc/ChatAction.java|games.stendhal.server.entity.npc.ChatAction}} instances. Methods: ; ''<span style="color:green;">actions:create</span>(function)'' : Creates a custom {{StendhalFile|master|src/games/stendhal/server/entity/npc/ChatAction.java|ChatAction}}. : '''''function:''''' A Lua function to be executed when <code>ChatAction.fire</code> is called. : ''returns:'' New <code>ChatAction</code> instance. ; ''<span style="color:green;">actions:multiple</span>(actionList)'' : Helper method for creating a {{StendhalFile|master|src/games/stendhal/server/entity/npc/action/MultipleActions.java|MultipleActions}} instance. : '''''actionList:''''' A Lua table containing ChatAction instances. : ''returns:'' New <code>MultipleActions</code> instance. == merchants == 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: ; ''<span style="color:green;">merchants:add</span>(merchantType, npc, prices, addOffer)'' : Adds merchant behavior to a {{StendhalFile|master|src/games/stendhal/server/entity/npc/SpeakerNPC.java|SpeakerNPC}}. : '''''merchantType:''''' If set to "buyer", will add buyer behavior, otherwise will be "seller". : '''''npc:''''' The SpeakerNPC to add the behavior to. : '''''prices:''''' List of items & their prices (can be instance of either Map<String, Integer> or a Lua table). : '''''addOffer:''''' If <code>true</code>, will add default replies for "offer" (default: <code>true</code>). ; ''<span style="color:green;">merchants:addSeller</span>(npc, prices, addOffer)'' : Adds seller behavior to a {{StendhalFile|master|src/games/stendhal/server/entity/npc/SpeakerNPC.java|SpeakerNPC}}. : '''''npc:''''' The SpeakerNPC to add the behavior to. : '''''prices:''''' List of items & their prices (can be instance of either Map<String, Integer> or a Lua table). : '''''addOffer:''''' If <code>true</code>, will add default replies for "offer" (default: <code>true</code>). ; ''<span style="color:green;">merchants:addBuyer</span>(npc, prices, addOffer)'' : Adds buyer behavior to a {{StendhalFile|master|src/games/stendhal/server/entity/npc/SpeakerNPC.java|SpeakerNPC}}. : '''''npc:''''' The SpeakerNPC to add the behavior to. : '''''prices:''''' List of items & their prices (can be instance of either Map<String, Integer> or a Lua table). : '''''addOffer:''''' If <code>true</code>, will add default replies for "offer" (default: <code>true</code>). == arrays == Handles some conversion of Java arrays & lists to Lua tables. Methods: ; ''<span style="color:green;">arrays:toTable</span>(list)'' : Converts a Java array or list to a Lua table. : '''''list:''''' Java array or [https://docs.oracle.com/javase/8/docs/api/java/util/List.html list]. : ''returns:'' New Lua table with contents of <code>list</code> added. == grammar == Exposes the {{StendhalFile|master|src/games/stendhal/common/grammar/Grammar.java|games.stendhal.common.grammar.Grammar}} parser instance to Lua.
摘要:
请注意,所有对gamedev的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Gamedev:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
不转换
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息