编辑“︁
Marauroa 3.8
”︁(章节)
跳转到导航
跳转到搜索
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
== Protocol extensions == === Details in character list === ; Summary : The character list on login now contains the RPObject with details about all owned characters ; Reason for change : Player should have more information in the choose character dialog. ; Impact on Marauroa users : A new optional method onAvailableCharacterDetails in ClientFramework will provide the additional data, onAvailableCharacters is still called so old programs will continue to work without adjustments. ; Details : When the client uses at least protocol version 32 on login, the server will include details of the characters belonging to that account. [[Image:Stendhal_choose_character.png]] === Maps attributes === ; Summary : There is a new map datatype that is capable of storing key value pairs. ; Reason for change : There are many kinds of map like data structures in Stendhal (buddy list, ignore list, quest states, visited zones, ...). The previous way of using an RPSlot with exactly one RPObject was inconvenient. ; Impact on Marauroa users : There are new methods in RPObject to work with the maps ; Details : To use a map attribute you need to define an attribute with type map in the RPClass. It is done the same way as ''normal'' attributes for Strings or Integers. Here a short example on how to define a map attribute as it is done in Stendhal for the buddy list: player.addAttribute("buddies", Type.MAP, Definition.PRIVATE); Afterwards you can access the map with several methods defined in RPObject to put or get values. To put a key value pair in a certain map you need to call the put method for maps: rpobject.put(mapname, key, value); To get a value stored for a key in a map you need to use the get method for maps: rpobject.get(mapname, key); The put and get methods provide methods to store/access String, Integer and Boolean values like they are provided for the existing attributes. public void put(String mapname, String key, String value) public void put(String mapname, String key, int value) public void put(String mapname, String key, boolean value) public String get(String mapname, String key) public int get(String mapname, String key) public boolean get(String mapname, String key) If you need to check if a certain map is present in a RPObject you can to this by calling rpobject.hasMap(mapname) It returns true if within the RPObject has a map with mapname and false if not. To access the map as a whole thing it is possible to obtain a copy via the getMap method. Map<String, String> theWholeMap = rpobject.getMap(mapname); As a convenience method RPObject can return all maps put together in one map: public Map<String, Map<String, String>> maps() An example usage of the maps can be found in the [http://arianne.cvs.sourceforge.net/viewvc/arianne/stendhal/src/games/stendhal/server/entity/player/Player.java?revision=1.284.2.1&view=markup Player] class of [[Stendhal]]. The buddies and their online statusses of a player are stored as a map within the player object. The class [http://arianne.cvs.sourceforge.net/viewvc/arianne/stendhal/src/games/stendhal/server/entity/player/PlayerRPClass.java?revision=1.164&view=markup PlayerRPClass] shows how to define a map attribute in a RPClass.
摘要:
请注意,所有对gamedev的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Gamedev:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
不转换
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息