Difference between revisions of "Dota2 Compendium Scriptfiles:zh-cn"

From Valve Developer Community
Jump to: navigation, search
(嵌入页面)
Line 1: Line 1:
Dota 2 Compendiums are in-game items associated with leagues. They're described by a script file that third parties upload to the Dota 2 backend via the Edit League page on Dota2.com. This page will describe that script file, and the process we recommend to develop your compendium.
+
{{otherlang2
 +
|title =Dota2互动指南编写
 +
|en=Dota2_Compendium_Scriptfiles
 +
}}
 +
Dota2的互动指南是与联赛相关的游戏内建物品。它们由一个第三方脚本文件描述,并通过Dota2.com的联赛编辑页面上传至Dota2后台。
 +
这个页面将会描述此脚本文件,以及我们建议的开发互动指南的流程。
 +
=建立和测试(Building and Testing)=
  
=Building and Testing=
+
首先,确保你的联赛可以使用互动指南。你可以通过联赛页面联系Valve联赛管理团队。一旦你的联赛获准使用互动指南,你需要从你的联赛编辑页面下载一份互动指南的脚本文件例程(或者直接从这里下载:http://media.steampowered.com/apps/dota2/images/leagues/CompendiumExample.zip)
First, ensure your league is allowed to have a compendium. You can contact the Valve league admin team via your League pages. Once compendiums have been enabled for your league, you should download the example compendium script file from your league's Edit page (or grab it directly from here: http://media.steampowered.com/apps/dota2/images/leagues/CompendiumExample.zip)
 
  
Compendiums should be built and tested on your local machine before they're uploaded to the Dota 2 backend. You can test your compendium using the ''test_compendium'' command.
+
在上传到Dota2后台之前,互动指南必须先在你的本机上建立并进行测试。你可以使用''test_compendium''命令来测试你的互动指南
For example:
 
  
 +
例如:
 
  test_compendium "c:/compendium/example_compendium.txt"
 
  test_compendium "c:/compendium/example_compendium.txt"
  
Once your compendium is open, you can make changes to your script file and instantly reload the compendium with the ''test_compendium_refresh'' command. We recommend doing all your script file editing live in this way, so you're testing quickly as you go.
+
一旦打开你的互动指南,你可以对你的脚本文件进行修改,并且通过''test_compendium_refresh''命令立即重新加载你的互动指南。我们建议通过这种方式编辑你所有的脚本文件,这样你可以一边编写一边测试的你的文件。
  
Place any images for your compendium in the same directory as your script file, and they'll be found automatically while testing. Note that any selections in your compendium won't be actually saved, and some other data will be faked for testing purposes (progress bars will constantly move, the prize pool will roll forward, etc)
+
将你在互动指南中要插入的图片和你的脚本文件放在同一路径下,这样在测试时它们将被自动加载。注意,在互动指南中的选择操作不会被真正地保存,其他部分数据是为了测试而伪造的数据(例如:进度条将会不停地移动,江金城会上涨。)
 
+
你可以使用以下指令来模拟奖金池的值:
To simulate the prize pool value you can use the following commands:
 
  
 
:*<code>test_compendium_prizepool_min 1600000</code>  
 
:*<code>test_compendium_prizepool_min 1600000</code>  
:::Sets the starting (minimal) prize pool to whichever value you specify.
+
:::设置奖金池的初始(最少)奖金。
  
 
:*<code>test_compendium_prizepool_max 6000000</code>  
 
:*<code>test_compendium_prizepool_max 6000000</code>  
:::Sets the ending (maximal) prize pool to whichever value you specify.
+
:::设置奖金池的封顶(最高)奖金。
  
 
:*<code>test_compendium_prizepool_inc 5000</code>  
 
:*<code>test_compendium_prizepool_inc 5000</code>  
:::Sets the amount by which the prize pool will be increased per second
+
:::设置奖金池每秒钟将会增加的数量。
  
Once you're getting ready to publish, submit your compendium & images through the league admin page, but don't set it public yet. Non public compendiums will be visible to all the admins for your league. Start your Dota 2 client and look through the compendium to make sure you're happy with it. Once you are, submit it again and mark it as public, and then all players who've purchased a ticket for your league will have access to it.
+
一旦你准备好通过联赛管理员页面发布、提交你的互动指南和图片,但并不设置它为公开可访问的。非公开的互动指南对于你联赛中的所有管理员都是可见的。启动你的Dota2客户端并且浏览你的互动指南确保你对它满意。如果你对它满意,再次提交它,并将其标记为公开的,之后所有购买了你联赛门票的玩家都将可以访问它。
  
=Concepts=
+
=概念(Concepts)=
Compendiums contain several concepts that will be referred to throughout the script file.
+
互动指南包含了多种脚本文件提及的概念。
  
===Pages===
+
===页面(Pages)===
The compendium is a virtual book containing pages. Each page contains a list of elements, which are used to display that page to the player. Elements range from visuals (like text fields and images) to input (like buttons and combo boxes) to layout helpers (like containers and templates).
+
互动指南是包含多个页面的虚拟图书。每个页面包含了一个将页面显示给玩家的元素列表,元素包括:图形部分(比如文本框和图片),输入部分(比如按钮和组合框),布局助手(比如容器和模板)
  
===Elements===
+
===元素(Elements)===
Pages are made up of a list of elements. Each element must have a unique name, and an element type. Each type then has a list of required and optional parameters.
+
页面由元素列表组成。每个元素都有一个独立命名和元素类型。每个类型都有一个必需的和可选的参数列表。
  
===Selections===
+
===选项(Selections)===
Selections are used to store a dynamic value in the compendium. The value is either set by the player, or by the Dota 2 backend. Many elements inside compendiums can then interact with selection values. Each selection must have a unique index to identify it.
+
选项是用来存放互动指南中的动态值的。这些值可以由玩家或者Dota2后台进行修改。互动指南中的许多元素可以作用于选择值。每个选项必须有一个独有的索引来鉴别它。
  
Selections are what you use any time you'd like to accept a player's input inside your compendium - to allow them to make a prediction on a future match, vote on who they'd like in a show match, to select a favorite Hero or item, etc. The actual UI method by which a user sets the selection can vary.
+
选项是在你用来在任意时刻接收玩家在互动指南中输入的数据的。比如:允许他们对未来的比赛做出预测,对他们希望在表演赛中出现的内容进行投票,选择自己最喜欢的英雄或者物品。当用户做出选择是,实际的用户界面也会发生变化。
  
Selections that are set by players can be set to become locked at some point in time. Once locked, players cannot change them. Selections can also choose to lock themselves based on the value of other selections.
+
由玩家设定的选项可以在某个特定的时刻锁定,之后玩家无法对它们做出修改。选项也可以根据其它选项的值来锁定它们自身。
 +
===模板(Templates)===
 +
模板允许你简单的在你的脚本文件中大量复制键值和脚本值。模板必须由脚本文件中的某个名称注册,之后它们可以在你的互动指南中的任意地方被实例化。
  
===Templates===
+
模板也支持宏定义,本质上来说是模板的实例必须提供值的变量。模板在这之后可以使用内部查看,模板可以使用模板中定义的元素,在这之后宏定义将被提供的值所替换。在[[Dota2_Compendium_Scriptfiles#Template_Element_Parameters|Template Element Parameters]]中查看语法和例子。
Templates allow you to easily replicate a chunk of script Keys & Values throughout your script file. Templates must be registered with a unique name somewhere in your script file, and then they can be instantiated by name anywhere else in your compendium.
+
===翻译(Localization)===
 +
翻译工作会在你发布你的互动指南后自动的进行处理。任何在你互动指南中出现的文本都会被提取并且替换为翻译键值。文本会在[[http://translation.steampowered.com Steam Translation Web page]]发表。其它语言的版本会在社区完成翻译工作后发行。
  
Templates also support "defines", which are essentially variables that instances of the template must provide values for. The template can then use those defines inside elements in the template, knowing that the defines will be replaced later by the values provided in instances. See [[Dota2_Compendium_Scriptfiles#Template_Element_Parameters|Template Element Parameters]] for syntax and examples.
+
一些便于互动指南翻译的方法:
 +
*不要在你的图片中添加文本,因为图片中的文本不能被翻译。取而代之的是在图片上覆盖一层文本框。
 +
*在互动指南发售后,在更新它时不要重命名页面或者元素。翻译的键值是根据页面和元素名称生成的,重命名它们将会导致翻译时使用的键值改变,这对翻译者来说非常痛苦。
 +
*试着为其它语言预留提供更多的文本空间。如果你的文本恰好填充完它的文本框,那么它很可能在翻译成其它语言时不能够完美填充。
 +
*不要把句子打散到多个文本框中。有些语言会阻止你将一个句子拆成多块单独的文本。
 +
*你可以通过在文本框开头添加'''^^''',让某些文本不被翻译。
 +
=脚本文件格式(The Script File Format)=
 +
互动指南脚本文件是一个[[KeyValues_class|KeyValues]]在任意文本编辑器中都可轻松编辑的文本文档。它包含了一系列的含有参数的段落,一些是必需的,一些的可选的。''test_compendium''命令会在你打开互动指南时报出其中所有的错误。
  
===Localization===
+
==根级类型(Root Level Parameters)==
Localization is automatically handled for you when you publish your compendium. Any text that appears in your compendium will be extracted and replaced with localization keys. The text is then published on the [[http://translation.steampowered.com Steam Translation Web page]]. The other language strings for your compendium will be shipped after the community has finished translating them.
+
脚本文件的根级别必须包含以下的键值:
  
Some best practices for ensuring your compendium localizes well:
 
*Don't put text inside your images, because it can't be localized. Instead, ise text fields to overlay text over images.
 
*Don't rename pages or elements when updating your compendium after it's shipped. The localization keys are generated based on page & element names, so renaming them shifts localization keys around, which causes pain for our translators.
 
*Try and provide extra space for text in other languages. If you have text that fits exactly inside its textfield, it probably won't fit once it's translated to other languages.
 
*Try not to break sentences into multiple textfields. Some languages have concepts that prevent you from assembling valid sentences from multiple chunks of separately localized text (like gender specific nouns).
 
*You can force any text to not be localized by adding '''^^''' at the start of it. i.e. "text" "^^DON'T LOCALIZE".
 
 
=The Script File Format=
 
The compendium script file is a [[KeyValues_class|KeyValues]] text file that's easily edited in any text editor. It contains a series of sections that each have a set of parameters, some required and some optional. The ''test_compendium'' command will report any errors it finds in your compendium when you try to open it.
 
 
==Root Level Parameters==
 
The root level of the script file must contain the following keys:
 
 
:*'''"version"''' '''"3"'''
 
:*'''"version"''' '''"3"'''
:::This is the version for the scriptfile. Don't change it.
+
:::这是脚本文件的版本号,不要修改它。
 
:*'''"table_of_contents_page"''' '''"<name of your table of contents page>"'''
 
:*'''"table_of_contents_page"''' '''"<name of your table of contents page>"'''
:::The value should be the name of the page that you want the user to be taken to when they click the "Table Of Contents" button in the navigation controls.
+
:::这个值必须是页面的名称,使用者在导航中点击"Table Of Contents"按钮时,会前往至你希望他们前往的页面。
 
:*'''"table_of_contents_version"''' '''"<version of the Table of Contents>"'''
 
:*'''"table_of_contents_version"''' '''"<version of the Table of Contents>"'''
:::The value is simply a number that you increment whenever you like. Whenever a user opens your compendium, and this number is higher than it was the last time they opened it, an alert "!" image will be shown on the Table of Contents button in the navigation controls. We recommend increasing this number any time you add new pages to your compendium.
+
:::这个值是一个你可以随时增大的数值。任何时候玩家打开互动指南时,这个数字会比上次互动指南被打开时的值更高,一个"!"的提示图标会在导航中"Table Of Contents"按钮旁显示。我们建议你在互动指南中添加新的页面时,自增这个数值。
:*'''"theme_color"'''
+
:*'''"主题色(theme_color)"'''
:::This should be an RGB value for the thematic color of your compendium. It will be used as the color for the various glows around the compendium navigation buttons.
+
:::这是一个你的互动指南的主题RGB值。这个会用作互动指南导航按钮周围的模糊光效。
:*'''"precache"'''
+
:*'''"预加载(precache)"'''
:::This section should contain a list of images that must be fully downloaded before the compendium opens. You definitely want to have you cover & page backgrounds here, but if you don't have large images you could make players download most/all of your compendium before it opens. Images not in this list will be downloaded when the user browses to the page with the image on it (i.e. they'll appear after a the download finishes).
+
:::这一项包含一个在互动指南打开前必须被下载的图像列表。如果你想要一个封面或者页面背景,但是你没有大文件图片,你可以让玩家在打开互动指南前下载大部分/所有你的图片。不在列表中的图片会在使用者浏览到包含此图片的页面时进行下载。(这些图片会在下载完成后显示)
 
{{syntax2
 
{{syntax2
 
|in=
 
|in=
Line 82: Line 84:
 
}}
 
}}
 
:*'''"timers"'''
 
:*'''"timers"'''
:::This section contains the master list of times that other elements will refer to. Timers must be specified in the following format:
+
:::此项表示其他元素与主列表引用的次数。计数器必须按照如下格式书写:
 
:::'''"HH:MM:SS DD-MM-YYYY GMT+ZZZZ"'''&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;''(timezone + can be a - instead)''
 
:::'''"HH:MM:SS DD-MM-YYYY GMT+ZZZZ"'''&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;''(timezone + can be a - instead)''
 
{{syntax2
 
{{syntax2
Line 95: Line 97:
 
}}
 
}}
 
:*'''"preregister_selections"'''
 
:*'''"preregister_selections"'''
:::This section contains a list of selections that need to be defined before being used inside elements in the pages. Any selection that's set in some way other than a combo box must be registered here (combo boxes can contain the selection registration themselves). See [[Dota2_Compendium_Scriptfiles#Selection_Parameters|Selection Parameters]] to see how to register an individual selection.
+
:::此项包含了一个在页面内元素中使用前需要被定义的选项列表,任意被设置为非复选框的选项必须在此进行注册(复选框本身包含了选项的注册)。在[[Dota2_Compendium_Scriptfiles#Selection_Parameters|Selection Parameters]]查看如何注册一个单体选项。
 
:*'''"result_dialog_settings"'''
 
:*'''"result_dialog_settings"'''
:::This section customizes the extra information dialog that pops up when the user clicks the "More Info" button associated with a selection combo box. Generally only used for prediction results. The parameters inside this section are as follows:
+
:::此项会定制使用者点击"More Info"按钮后弹出的复选框中的额外对话框信息。一般只用来预测比赛结果。选项中的参数如下:
:::*'''"color_title"''' : The RGB color of the title text
+
:::*'''"color_title"''' : 标题文本的RGB颜色。
:::*'''"color_bg"''' : Sets the RGB color for the flat, shaded background. Alternatively, use '''"image_bg_filename"'''.
+
:::*'''"color_bg"''' : 设置扁平化背景的RGB颜色,可用'''"image_bg_filename"'''替代。
:::*'''"color_result"''' : The RGB color of the result text
+
:::*'''"color_result"''' : 结果文本的RGB值。
:::*'''"color_extrainfo"''' : The RGB color of the extra information text
+
:::*'''"color_extrainfo"''' :额外信息的文本RGB颜色值。
:::*'''"color_correctedness"''' : The RGB color of the CORRECT! / INCORRECT! text
+
:::*'''"color_correctedness"''' :正确的/不正确的文本RGB颜色值。
:::*'''"image_bg_filename"''' : An image to be used as the background of the dialog, instead of the flat, shaded background.
+
:::*'''"image_bg_filename"''' : 替代平面阴影背景,用作对话框背景的图片。
:*'''"templates"'''
+
:*'''"模板(templates)"'''
:::This section contains a list of template definitions. See [[Dota2_Compendium_Scriptfiles#Templates|Compendium Templates]] for more information. Templates can also be specified inside pages themselves, using the "embedded template" element type. For templates that are only used inside a single page, this is preferable for organisational reasons, keeping your template definitions near where they're used. See [[Dota2_Compendium_Scriptfiles#Template_Element_Parameters|Template Element Parameters]] for format details.
+
:::此项包含了一个模板定义的列表。在[[Dota2_Compendium_Scriptfiles#Templates|Compendium Templates]]查看更多的信息。使用"embedded template"元素类型后,模板也可以在自身页面内部被指定。只在一个页面中使用过的模板,这是优先选择的组织形式,保证在使用模板是,模板的定义在模板附近。在[[Dota2_Compendium_Scriptfiles#Template_Element_Parameters|Template Element Parameters]]中查看格式细节问题。
 +
 
 
:*'''"pages"'''
 
:*'''"pages"'''
:::This section contains the master list of pages, in the order that they should appear in the compendium. Each page then contains a list of elements. See [[Dota2_Compendium_Scriptfiles#Page_Parameters|Page Parameters]] to see how to layout individual pages.
+
:::此项包含了页面的住列表,以保证它们能够出现在互动指南中。每个页面都有一个元素列表。在[[Dota2_Compendium_Scriptfiles#Page_Parameters|Page Parameters]]中查看如何对不可见的页面进行布局。
 +
 
 
:*'''"embedded_pages"'''
 
:*'''"embedded_pages"'''
:::This optional section contains a list of pages that don't appear in the book itself, and instead are used as popups, dialogs or tooltips. See [[Dota2_Compendium_Scriptfiles#Embedded_Pages|Embedded Pages]] for more information.
+
:::这个可选项包含了在一个虚拟图书中不会显示的页面列表,取而代之的是用作弹出列表,对话框或者工具提示。在[[Dota2_Compendium_Scriptfiles#Embedded_Pages|Embedded Pages]]中查看更多信息。
 
 
==Page Parameters==
 
Each page must have a unique name, and contain a list of elements. A useful organisational technique is to also store templates used by the page inside the page itself, instead of in the global templates list (which is a good place to store templates used by multiple pages). See the "page_insidecover" in the example to see this.
 
  
 +
==页面参数(Page Parameters)==
 +
每个页面都必须有一个独立的名称,并且包含一个元素列表。一个有效的组织技术是将模板的使用储存在页面本身中,而不是存放在全局模板列表中(一个适合存放被多重页面调用的模板的地方)。查看样例中的"page_insidecover"来了解更多。
 
{{syntax2
 
{{syntax2
 
|in=
 
|in=
Line 153: Line 156:
 
}}
 
}}
  
 
+
除了元素列表,页面还有如下的可选设置:
In addition to the list of elements, pages have the following optional settings:
 
  
 
:*'''"crease"'''
 
:*'''"crease"'''
:::The visibility of the darkened crease in the middle of the book. It should be a range from 0 - 1, where 1 is fully visible, and 0 is invisible. Only the value of the left-hand page is used. Useful if you want to have images or text that stretches across both visible pages.
+
:::书中央的暗化分界线的可见性。这个值的范围在0~1之间,当值为1的时候是完全可见的,当值为0的时候是完全不可见的。只有左边页面的值是可用的。对于想在可见页面中排布文本或图片是非常用帮助的。
  
 
=Element Parameters=
 
=Element Parameters=
There are several types of elements. The first key in any element section should be the "elementtype" parameter, which tells the compendium what kind of element the section is describing. The remaining keys in the section will be parsed depending on the element type.
+
这里有多种元素的类型,任意元素选项的第一个键值应为"elementtype"参数,,用来提示互动指南当前项正在描述哪一种元素类型。选项中保留的键值会根据元素的类型来进行解析。
  
Valid element types:
+
有效的元素类型:
 
:*'''"textfield"'''
 
:*'''"textfield"'''
:::A blob of text. [[Dota2_Compendium_Scriptfiles#Text_Element_Parameters|Text Element Parameters]]
+
:::一块文本。 [[Dota2_Compendium_Scriptfiles#Text_Element_Parameters|Text Element Parameters]]
 
:*'''"image"
 
:*'''"image"
:::An image. [[Dota2_Compendium_Scriptfiles#Image_Element_Parameters|Image Element Parameters]]
+
:::一幅图片。[[Dota2_Compendium_Scriptfiles#Image_Element_Parameters|Image Element Parameters]]
 
:*'''"selection"
 
:*'''"selection"
:::A collection of smaller elements that handles users making a selection and seeing the results.
+
:::一个处理用户做出的选择并看到选择结果的更小元素的集合。
 
[[Dota2_Compendium_Scriptfiles#Selection_Element_Parameters|Selection Element Parameters]]
 
[[Dota2_Compendium_Scriptfiles#Selection_Element_Parameters|Selection Element Parameters]]
 
:*'''"button"
 
:*'''"button"
:::A clickable button that performs a command, or sets a selection value. [[Dota2_Compendium_Scriptfiles#Button_Element_Parameters|Button Element Parameters]]
+
:::一个可以作为指令来使用的可点击按钮,或者用来设置一个选项的值。[[Dota2_Compendium_Scriptfiles#Button_Element_Parameters|Button Element Parameters]]
 
:*'''"line"
 
:*'''"line"
:::A line drawn directly on the page. [[Dota2_Compendium_Scriptfiles#Line_Element_Parameters|Line Element Parameters]]
+
:::直接在页面上画出的线。[[Dota2_Compendium_Scriptfiles#Line_Element_Parameters|Line Element Parameters]]
 
:*'''"timer"
 
:*'''"timer"
:::A timer that shows the amount of time left until a registered timer expires. [[Dota2_Compendium_Scriptfiles#Timer_Element_Parameters|Timer Element Parameters]]
+
:::在注册计数器到期前显示剩余时间计数器。 [[Dota2_Compendium_Scriptfiles#Timer_Element_Parameters|Timer Element Parameters]]
 
:*'''"progressbar"
 
:*'''"progressbar"
:::A progress bar that shows the amount of progress towards a goal. [[Dota2_Compendium_Scriptfiles#ProgressBar_Element_Parameters|ProgressBar Element Parameters]]
+
:::显示达成目标进度的进度条。[[Dota2_Compendium_Scriptfiles#ProgressBar_Element_Parameters|ProgressBar Element Parameters]]
 
:*'''"video"
 
:*'''"video"
:::An embedded youtube / youku video. [[Dota2_Compendium_Scriptfiles#Video_Element_Parameters|Video Element Parameters]]
+
:::内嵌的Youtube/优酷视频。 [[Dota2_Compendium_Scriptfiles#Video_Element_Parameters|Video Element Parameters]]
 
:*'''"container"
 
:*'''"container"
:::A container of other elements. Used in templates to contain a mix of elements, and for controlling visibility of block of elements. [[Dota2_Compendium_Scriptfiles#Container_Element_Parameters|Container Element Parameters]]
+
:::其他元素的容器。在模板中使用,用以容纳混合的元素,以及控制元素块的可见性。[[Dota2_Compendium_Scriptfiles#Container_Element_Parameters|Container Element Parameters]]
 
:*'''"generic"
 
:*'''"generic"
:::A generic scaleform element by name. Currently only designed to support scrollable views within pages. [[Dota2_Compendium_Scriptfiles#Generic_Element_Parameters|Generic Element Parameters]]
+
:::叫做scaleform的通用元素。目前只支持滚动视图内的页面。 [[Dota2_Compendium_Scriptfiles#Generic_Element_Parameters|Generic Element Parameters]]
  
In addition to an '''"elementtype"''', a section can also optionally contain an '''"embedded_template"''' key, set to "1". If done so, this element will be registered as a template instead of actually being instantiated on the page. It's exactly the same as putting the element in the root '''"templates"''' section, except that it's stored inside a page. Useful for keeping your templates near where they're used. See [[Dota2_Compendium_Scriptfiles#Template_Element_Parameters|Template Element Parameters]] for additional template-only parameters.
+
除了'''"elementtype"''',一个选项还可以选择性包含一个'''"embedded_template"'''键值,默认设置为"1"。如果这么做,此元素将被注册为一个模板而不是被实例化显示在页面上。它实际上和将元素放置在模板项的根部分中一样,但是它被保存在一个页面中。将模板保存在你经常使用它们的页面附近。 在[[Dota2_Compendium_Scriptfiles#Template_Element_Parameters|Template Element Parameters]] 中查看额外的模板专有元素。
  
==Text Element Parameters==
+
==文本元素参数(Text Element Parameters)==
Text elements are fields that contain chunks of localizable text.
+
文本元素是包含了大量可翻译文本的区域。
  
Parameters:
+
参数:
:*'''"text"'''   
+
:*'''"文本(text)"'''   
:::Text to display. Can contain [[Dota2_Compendium_Scriptfiles#Text_Escape_Sequences|Text Escape Sequences]].
+
:::显示的文本。可以包含[[Dota2_Compendium_Scriptfiles#Text_Escape_Sequences|Text Escape Sequences]].
:*'''"font"'''
+
:*'''"字体 (font)"'''
:::Can be one of the Dota fonts: "text", "textbold", "title". Or it can be the name of a font (like "courier" or "arial". Note that you can only really use fonts that are widely available in Windows, Linux, and OSX).
+
:::可以是可用的Dota字体:"text", "textbold", "title". 或者它时一个字体的名称(比如"courier"或者"arial"。注意你只可以使用window或者OSX下广泛使用的字体)
:*'''"size"'''
+
:*'''"字号(size)"'''
:::Font size.
+
:::字号。
:*'''"bold"'''
+
:*'''"加粗(bold)"'''
:::Makes the font bold.
+
:::加粗。
:*'''"italic"'''
+
:*'''"斜体(italic)"'''
:::Makes the font italic.
+
:::斜体。
:*'''"glow"'''
+
:*'''"(glow)"'''
:::Adds a soft alpha glow around the text.
+
:::给文本周围添加一个蒙版发光效果。
 
:*[[Dota2_Compendium_Scriptfiles#Positioning_Parameters|Standard Element Positioning Parameters]]
 
:*[[Dota2_Compendium_Scriptfiles#Positioning_Parameters|Standard Element Positioning Parameters]]
:::Specifies where this element is on the page.
+
:::指定页面中元素的位置。
 
:*'''"w"'''
 
:*'''"w"'''
:::Text width. Make sure you leave enough room for other languages (good rule of thumb is to leave 2x the amount required for english)
+
:::文本宽度。确保你为其它语言预留了足够的位置。(比较好的方法是为英文预留原语言2倍的空间)
:*'''"h"'''
+
:::文本高度。所以了翻译文本的另一种方法是为你当前使用的语言预留足够的行高,这样翻译后的文本可以自动换行到下一行。
:::Text height. Another way to how localization is to provide enough height for an extra line of text beyond what you're using, so localized text can word wrap down to the next line.
 
 
:*'''"resize_to_fit"'''
 
:*'''"resize_to_fit"'''
:::If set to 1, the text field will resize itself to match the size of the text inside it. Generally only needed for text fields that have other elements depending on them (like the text inside an embedded page acting as a tooltip, where the background is being resized to match the text inside it)
+
:::如果设置为1,文本框会重置本身以适应当前的行高。通常只有在文本框有依赖他们的元素时需要使用。(内嵌页面中的文本作用类似于工具提示,那里的背景会被重置大小以适应内部文字的大小)
 
:*'''"spacing_horizontal"'''
 
:*'''"spacing_horizontal"'''
:::Horizontal spacing between each text character.
+
:::文字水平间距。
 
:*'''"spacing_vertical"'''
 
:*'''"spacing_vertical"'''
:::Vertical spacing between multiple lines of text in word wrapped elements.
+
:::换行符的行间距。
 
:*'''"align"'''  
 
:*'''"align"'''  
:::Sets how the text inside the element will be aligned within the element's width & height. Must be one of these: "left", "right", "center" ("left" if unspecified).
+
:::设置元素内部文本的按高度和宽度对齐的方式。必须是以下的对齐模式:"左对齐(left)", "右对齐(right)", "居中对齐(center)"(默认为左对齐)
 
:*'''"depth"'''  
 
:*'''"depth"'''  
:::Either "front" or "back" ("front" if unspecified). Front elements will be placed in front of existing content in the template. Back will be behind. Bear in mind that the order that elements are specified is the order they're placed on the page.
+
:::可以为"front"或者"back"(未指定时默认为"front" )Front元素将被放置在模板中现有内容的前面,Back元素将被放置在模板中现有内容的后面。记住,元素指定的顺序是他们放置在页面上的顺序。
 
:*'''"color"'''  
 
:*'''"color"'''  
:::RGB values of the text ("255 255 255" if unspecified).
+
:::文本的RGB色值。(默认为"255 255 255" 白色)
:*'''"link_to_page"'''
+
:::这个值必须是你互动指南中的一个页面名称。点击这个文本将会跳转到那个页。对于表内内容很有用,或者在互动指南中快速前后跳转。
:::Value must match the name of one of your pages in your compendium. Clicking on this text will jump to that page. Great for Table Of Contents, or rapid jumps back & forth in your compendium.
 
 
:*'''"link_to_url"'''   
 
:*'''"link_to_url"'''   
:::Value should be a URL. Clicking on this text will popup that URL in an external browser.
+
:::这个值必须是一个URL地址,点击这个文本将会弹出一个浏览器并在其中加载此链接。
 
:*'''"min"'''
 
:*'''"min"'''
:::Minimum value used by the '''%prizepool_togo%''' and '''%prizepool_perc%''' [[Dota2_Compendium_Scriptfiles#Text_Escape_Sequences|Text Escape Sequences]].
+
:::最小值在'''%prizepool_togo%'''''%prizepool_perc%'''中使用。 [[Dota2_Compendium_Scriptfiles#Text_Escape_Sequences|Text Escape Sequences]].
 
:*'''"max"'''
 
:*'''"max"'''
:::Maximum value used by the '''%prizepool_togo%''' and '''%prizepool_perc%''' [[Dota2_Compendium_Scriptfiles#Text_Escape_Sequences|Text Escape Sequences]].
+
:::最大值在'''%prizepool_togo%'''''%prizepool_perc%'''中使用。 [[Dota2_Compendium_Scriptfiles#Text_Escape_Sequences|Text Escape Sequences]].
 
:*'''"show_selection_tooltip"'''
 
:*'''"show_selection_tooltip"'''
:::If set to the index of a Selection, rolling the mouse over this text will pop up a tooltip. The tooltip will be configured based on the '''"tooltip_data"''' section of the Selection (not this text field's). This allows custom tooltips per choice in the Selection.
+
:::如果为选项设置一个索引,在此文本上滚动鼠标将会弹出一个工具提示。这个工具提示将会基于选项中的'''"tooltip_data"'''项进行配置(并非属于此文本框)这允许自定义工具提示选项中的每一种选择。
 
:*[[Dota2_Compendium_Scriptfiles#Tooltip_Parameters|Standard Element Tooltip Parameters]]
 
:*[[Dota2_Compendium_Scriptfiles#Tooltip_Parameters|Standard Element Tooltip Parameters]]
:::Used to make a tooltip popup when the user moves their mouse cursor over this element.
+
:::当用户移动鼠标指针到此元素上时,会弹出一个工具提示。
 
:*[[Dota2_Compendium_Scriptfiles#Visibility_Parameters|Standard Element Visibility Parameters]]
 
:*[[Dota2_Compendium_Scriptfiles#Visibility_Parameters|Standard Element Visibility Parameters]]
:::Used to control when this element is visible / non visible. Elements are always visible by default.
+
:::用来控制合适这个元素是可见或不可见的。元素默认为可见。
  
 +
====Selection Points Displays====
 +
一个文本元素可以选择显示一组选项中用户获得的所有的点数,用以取代显示普通文本。主要用来显示用户预测是获得的点数。为了做到这一点,文本元素需要一个按照以下两种方式之一设置的'''"Points"'''项:
 +
*列表选项由索引独立分类。(键值为选项索引,值只能为"1")
 +
*在 '''"index_min"'''和'''"index_max"'''的值之间指定一个最小/最大选项索引范围,
 +
*在'''"index_min"'''和'''"index_max"'''的值间指定一个最小/最大的索引,用以在其间统计所有的索引数目。
  
====Selection Points Displays====
+
这两种方法也可以结合使用。
Instead of displaying normal text, a text element can elect to show the total points earned by the user for a set of Selections. Mostly used for showing the user's points earned for predictions. To do this, the text element needs a '''"Points"''' section setup in one of the two following ways:
+
 
*List Selection indices individually by index (key is the selection index, value is just "1")
+
样例:
*Specify a min & max selection index range with the '''"index_min"''' and '''"index_max"''' keys, which sums all indices between them inclusively.
 
These two methods can also be combined.
 
Examples:
 
 
{{syntax2
 
{{syntax2
 
|in=
 
|in=
Line 266: Line 268:
  
  
====Textlists====
+
====文本列表(Textlists)====
Text fields can also be setup to act as Textlists. A Textlist is a Text Element that dynamically updates the text it's displaying based on some other data (like the Compendium Level, or the League's Prizepool). A good example of what they're useful for is displaying text describing what the player will unlock once their compendium levels up.
+
文本框也可以被设置为文本列表。一个文本列表是一个根据文本增长动态更新的文本元素(比如互动指南的等级,或者说联赛奖金池)一个证明文本列表有用的例子是玩家的互动指南升级时,对玩家解锁的内容的显示文本。
To setup a Text Element as a Textlist, you need to set the following parameters:
+
将一个文本元素设置为文本列表,你需要进行如下的参数设置:
 
:*'''"textlist_var"'''
 
:*'''"textlist_var"'''
:::The data value you want to use to decide which piece of dynamic text to display. Currently only "prizepool" (for the League Prizepool) and "level" (For the player's Compendium Level) are supported.
+
:::你想使用的数据值将决定哪块动态文本是否。当前仅支持于"prizepool"(联赛的奖金池) "level"(玩家的互动指南等级)
 
:*'''"textlist_rule"'''
 
:*'''"textlist_rule"'''
:::The mathematical way you want to compare the data value specified in "textlist_var" to the values in the "textlist" below when deciding which piece of dynamic text to display. Valid rules are "=", "!=", ">", "<", ">=", and "<="
+
:::当决定显示某块动态文本时,比较"textlist_var"中指定的"textlist"数值的数学方法。有效的方法是 "=", "!=", ">", "<", ">=",以及 "<="
 
:*'''"textlist"'''
 
:*'''"textlist"'''
:::A section containing a list of all the dynamic text chunks that can be shown in this Text Element. The section's keys should be the number to compare against the the data value specified in "textlist_var" (using the mathematical rule in "textlist_rule"). The section's values should be the dynamic text chunks.
+
:::此项包含了在文本元素中显示的所有动态文本块的列表。此项的值应该与"textlist_var"指定的值进行比较(使用"textlist_rule"中的数学方法)此项的值是动态的文本块。
 +
 
 +
在此样例中,文本框设置为一个基于玩家互动指南等级的文本列表。文本将按照文本列表中的值等于或小于玩家的互动指南等级时动态显示。如果互动指南的等级为3,那里将会显示"额外的载入画面(Extra Loading Screen Treasures)"。如果互动指南等级为8,那么文本内容将会是"昆卡的信使:鹦鹉副将(Kunkka's Courier: Lieutenant Squawkins)"。如果等级大于10级,那么那里将不会有可见的文本。
  
In this example, the text field is configured as a Textlist based on the player's Compendium Level. The text will be dynamically set to the entry in the "textlist" that has the key that's less than or equal the player's Compendium Level. So if the Compendium Level is 3, the text would be "Extra Loading Screen Treasures". If the level was 8, the text would be "Kunkka's Courier: Lieutenant Squawkins". If the levels was above 10, there would be no visible text.
 
 
{{syntax2
 
{{syntax2
 
|in=
 
|in=
Line 303: Line 306:
 
}}
 
}}
  
==Image Element Parameters==
+
==图像元素参数(Image Element Parameters)==
Image elements are used to display an image.
+
图像元素用来显示一幅图。
  
Parameters:
+
参数:
 
:*[[Dota2_Compendium_Scriptfiles#Positioning_Parameters|Standard Element Positioning Parameters]]
 
:*[[Dota2_Compendium_Scriptfiles#Positioning_Parameters|Standard Element Positioning Parameters]]
:::Specifies where this element is on the page.
+
:::指定页面上元素的位置。
 
:*'''"w"'''
 
:*'''"w"'''
:::Element width. The image will be scaled to fit.
+
:::元素宽度。图片将变形以适应宽度。
 
:*'''"h"'''
 
:*'''"h"'''
:::Element height. The image will be scaled to fit.
+
:::元素高度 。图片将变形以适应高度。
:*'''"scaleX"'''
+
:*'''"X轴形变(scaleX)"'''
:::An amount to scale the image by horizontally. Defaults to 1. Negative values will flip the image, so -1 would draw the image fully flipped along the horizontal axis.
+
:::图像的水平形变量。默认值为1,负值将会翻转图像,所以-1将会沿水平轴画出完全反转的图像。
:*'''"scaleY"'''
+
:*'''"Y轴形变(scaleY)"'''
:::An amount to scale the image by vertically. Defaults to 1. Negative values will flip the image, so -1 would draw the image fully flipped along the vertical axis.
+
:::图像的垂直形变量。默认值为1,负值将会翻转图像,所以-1将会沿垂直轴画出完全反转的图像。
 
:*'''"depth"'''  
 
:*'''"depth"'''  
 
:::Either "front" or "back" ("front" if unspecified). Front elements will be placed in front of existing content in the template. Back will be behind. Bear in mind that the order that elements are specified is the order they're placed on the page.
 
:::Either "front" or "back" ("front" if unspecified). Front elements will be placed in front of existing content in the template. Back will be behind. Bear in mind that the order that elements are specified is the order they're placed on the page.
:*'''"filename"'''
+
:*'''"文件名(filename)"'''
:::The filename of the image. It should match the filename of an image sitting in the same directory as the compendium script file. Alternatively, you can specify the relative path of an existing image inside Dota 2's resource\flash3 directory (i.e. "images/heroes/beastmaster.png" or "images/items/abyssal_blade.png")
+
:::图片的文件名。它应该与互动指南脚本文件同一路径下的图像文件名相同。或者你可以指定Dota 2's resource\flash3 相对路径下的存在的文件(例如:"images/heroes/beastmaster.png" 或者"images/items/abyssal_blade.png")
 
:*'''"color"'''
 
:*'''"color"'''
:::An optional RGB value to multiply the image color by.
+
:::一个叠加在图像上的可选RGB值。
:*'''"tooltip_data"'''
+
:::一个描述此图片的可选项。 点击[[Dota2_Compendium_Scriptfiles#Tooltip_Parameters|Tooltip Parameters]]查看更多.
:::An optional section describing the tooltip for this image, if you want one. See [[Dota2_Compendium_Scriptfiles#Tooltip_Parameters|Tooltip Parameters]].
 
 
:*'''"link_to_page"'''  
 
:*'''"link_to_page"'''  
:::Value must match the name of one of your pages in your compendium. Clicking on this image will jump to that page.
+
:::此值必须为互动指南中的一个页面的名称。点击此幅图将会跳转到这一页。
 
:*'''"link_to_url"'''   
 
:*'''"link_to_url"'''   
:::Value should be a URL. Clicking on this text will popup that URL in an external browser.
+
:::这个值必须是一个URL地址,点击这个文本将会弹出一个浏览器并在其中加载此链接。
 
:*'''"show_selection_tooltip"'''
 
:*'''"show_selection_tooltip"'''
:::If set to the index of a Selection, rolling the mouse over this image will pop up a tooltip. The tooltip will be configured based on the '''"tooltip_data"''' section of the Selection (not this text field's). This allows custom tooltips per choice in the Selection.
+
:::如果为选项设置一个索引,在此文本上滚动鼠标将会弹出一个工具提示。这个工具提示将会基于选项中的'''"tooltip_data"'''项进行配置(并非属于此文本框)这允许自定义工具提示选项中的每一种选择。
 
:*'''"show_selection_index"'''
 
:*'''"show_selection_index"'''
:::If set to the index of a Selection, this image will change the image it's displaying to match the image specified in the  '''"show_selection_images"''' section of the selection.
+
:::如果为选项设置一个索引,此图片将会改变它的显示方式来匹配选项中'''"show_selection_images"'''项指定的图片。
 
:*'''"imagestyle"'''
 
:*'''"imagestyle"'''
:::Set to "movie" if you want this image to show the Hero portrait movie of the Hero matching the value of the selection in the '''"show_selection_index"''' selection, instead of the static Hero icon.
+
:::,如果你希望这个图片展示英雄的肖像动画,将其设置为"movie"。匹配选项中的'''"show_selection_index"''项的英雄值,来替代静态英雄图标。
 
 
==Line Element Parameters==
 
Line elements are used to draw straight lines directly onto the page.
 
  
Parameters:
+
==线条元素参数(Line Element Parameters)==
 +
线条元素的用途是直接在页面上添加直线。
 +
参数:
 
:*'''"color"'''
 
:*'''"color"'''
:::The RGB value of the line.
+
:::线条的RGB颜色值。
 
:*'''"thickness"'''
 
:*'''"thickness"'''
:::The thickness of the line.
+
:::线条的粗细。
 
:*'''"start_pos"'''
 
:*'''"start_pos"'''
:::A section containing "x" and "y" values for the starting position of the line.
+
:::开始位置,包含线条结束位置"x""y"的值。
 
:*'''"end_pos"'''
 
:*'''"end_pos"'''
:::A section containing "x" and "y" values for the ending position of the line.
+
:::结束位置,包含线条结束位置"x""y"的值。
  
 
{{syntax2
 
{{syntax2
Line 370: Line 371:
  
  
==Selection Element Parameters==
+
==选项元素参数(Selection Element Parameters)==
Selections require several parameters to tell Dota 2 how to store and display them. If the Selection is shown as a combo box in the compendium, those parameters can be specified in the combo box section itself. If the Selection isn't a combo box (i.e. it's set by a button, or it's set by something on the Dota 2 backend), then the parameters can be specified in the root '''"preregister_selections"''' section.
+
选项需要多个参数来告诉Dota2如何储存并展示它们。如果选项在互动指南中的组合框中显示,那些参数可以被指定为下拉列表项自身。如果选项不是一个下拉列表,(例如,它被设置为按钮,或者被Dota2后台总的某个东西指定了)那么参数会被指定为'''"preregister_selections"'''的根项。
  
Parameters shared by all types of selections are as follows:
+
参数被如下的所有选项类型所共享:
 
:*'''selection_index'''
 
:*'''selection_index'''
:::The index of this selection. No two selections can share the same index. Other elements will use this index to refer to this selection.
+
:::选项的索引。没有两个共享一个相同的索引。其他元素使用此索引来指向这个选项。
 
:*'''"choice_type"'''
 
:*'''"choice_type"'''
:::The type of choices that this selection is using. Available choices are:
+
:::选择的类型必须是当前选项正在使用的类型。可用的选择有:
:::*"generic" - Choices are a list of strings and corresponding IDs. The strings will be used to display the choices, and the backend will store the IDs.
+
:::*"泛型(generic)" - 选项是一个字符串和相应的ID列表。字符串将被用于选择的显示,后台将会储存ID。
:::*"hero" - Choices must be a list of Hero IDs. They'll be displayed with Hero names.
+
:::*"英雄(hero)" - 选项必须是英雄的ID的列表。它们将和英雄的名称一起显示。
:::*"all_heroes" - Choices will be automatically filled out for you with a list of all Hero names.
+
:::*"所有英雄(all_heroes)" - 选项会自动填充为所有英雄的名称。
:::*"all_items" - Choices will be automatically filled out for you with a list of all Item names.
+
:::*"所有物品(all_items") - 选项会自动填充为所有物品的名称。
:::*"counter" - Set by the Dota 2 Backend, not selected by users. Displayed as a raw number.
+
:::*"计数器(counter) - 由Dota2后台设定,而非由用户选择。显示为原始数据。
:::*"accountid" - Set by the Dota 2 Backend, not selected by users. Displayed as the profile name on the Steam Profile matching the account ID.
+
:::*"账户ID(accountid)" - 由Dota2后台设定,而非由用户选择。显示为与账户ID匹配的Steam档案的档案名。
 
:*'''"choices"'''
 
:*'''"choices"'''
:::This must be a section that lists all the valid choices for this selection. Not required for "all_heroes", "all_items", or "counter" selections. Each choice should have a text description, and a unique choice value. For selections of type "hero", the choice values should match the Hero IDs.
+
:::此项必须为选项中所有有效选择的集合列表。对于"all_heroes", "all_items","counter"不是必须的。每个选择都应有一个文本描述和一个独有的选择键值。比如在英雄选项中,选择的键值必须是英雄ID。
:*'''"time"'''
+
:*'''"时间(time)"'''选项中的时间玩家不能改进行修改。应被设置为指定在'''"计时器(timers)"'''根项的名称。
:::The time at which this selection can no longer be changed by players. Should be set to the name of a timer specified in the root '''"timers"''' section.
+
:*'''"描述(description)"'''
:*'''"description"'''
+
:::这个选项的文本描述。
:::The text description of this selection.
+
:*'''"后台描述(backend_desc)"'''
:*'''"backend_desc"'''
+
:::当使用联赛编辑页面查看你的互动指南时显示的对选项的描述。
:::A description for this selection shown only to you when using the Edit League web page to view your compendium stats.
 
 
:*'''"points"'''
 
:*'''"points"'''
:::The number of points this selection is worth. Generally used only for predictions. If unspecified it defaults to 0, and won't be shown in the UI.
+
:::点数的数值是有价值的。一般仅用作预测。未指定的话默认为0,也不会在界面中显示。
:*'''"selection_element_color"'''
+
:*'''"选项元素的颜色(selection_element_color)"'''
:::In addition to being changeable by a combo box, selections can also be setup to be changeable by buttons. The standard method is to have a button that the player clicks (something like "CHOOSE A TEAM"), which then highlights a set of images on the page (such as a set of team logos), and once the player then clicks on one of those logos the selection is set to the matching team's ID. If this selection works like that, set '''"selection_element_color"''' to the RGB value that you want the highlight element around the images to have.
+
:::除了在下拉列表中,选项可以由按钮来初始化。标准方法是玩家点击按钮时(比如"选择一支队伍"),然后页面上的一系列图片会高亮显示(比如一系列队伍的图标),一旦玩家点击了选项中一个队伍的图标,选项将会匹配队伍的ID。如果选项这么做的话,设置'''"selection_element_color"'''来给图片添加高亮RGB色值。
 
:*'''"selection_set"'''
 
:*'''"selection_set"'''
:::An optional string that, if matching other selections in the compendium, ensures that no two selections in the set are ever set to the same choice. Useful for things like All-Star match votes, where you don't want players to be able to select the same player in multiple slots.
+
:::一个可选的字串,用以在互动指南中与其它选项相匹配,确保在选项中没有两个相同的选择项。在全明星赛的投票很有用,你不会希望一个选手出现在同一场比赛的多个位置的。
 
:*'''"disable_set_rollup"'''
 
:*'''"disable_set_rollup"'''
:::When viewing your Compendium Stats on the League page, we'll roll up multiple selections in the same selection set into a single entry. This is useful for when you have a set of selections where users are voting on something (like the 10 players they'd like to see in a show match). But if you don't want the set rolled up, because you need to see the selections in the set separately, then set this key on each of the selections in the selection_set.
+
:::当在联赛页面浏览互动指南时,我们会将同一选项下的多个选项集合到一个单独的条目下。当玩家进行投票时,你会有一系列的选项(比如最想看到哪十个选手进行一场表演赛)当你需要分开查看集合中的选项,而不希望这个选项集合起来,在每个选项中重置selection_set这个键值。
 
:*'''"empty_string"'''
 
:*'''"empty_string"'''
:::An optional string that will be shown instead of "Make A Selection" when the user hasn't selected a choice.
+
:::一个可选的字串。当玩家没有完成选择时,显示在"作出选择(Make A Selection)"位置。
 
:*'''"tooltip_data"'''
 
:*'''"tooltip_data"'''
:::An optional section that lists all the choices for this selection, and their associated tooltip data. Any textfield setup to show the value of this selection will use the tooltip data for the current choice. See [[Dota2_Compendium_Scriptfiles#Tooltip_Parameters|Tooltip Parameters]] to see how to setup an individual tooltip.
+
:::一个可选项,用以列出选项中所有的选择项,以及和选择项相关的工具提示数据。任何被初始化文本框都会显示此选项的值,并且为当前选择项使用工具提示数据。查看[[Dota2_Compendium_Scriptfiles#Tooltip_Parameters|Tooltip Parameters]]以了解如何初始化一个独立的工具提示。
 
:*'''"show_selection_images"'''
 
:*'''"show_selection_images"'''
:::An optional section that lists all the choices in this selection, and their associated image filename. Any image setup to show the image for this selection will use the image corresponding to the current choice.
+
:::此项列出选项中所有选择项,以及和它们相关的图像名称,这是一个可选的项目。任意设置为显示此图片的项目,将使用和当前的选择相关的图像。
 
:*'''"action"'''
 
:*'''"action"'''
:::The name of a registered action in the root '''"event_actions"''' list. If an action has selections listed for it, the action will be considered completed once all the selections for it have been set by the player. Not available to third party compendiums at this time.
+
:::'''"event_actions"'''列表根下的注册的操作。如果一个操作有列出的选项,一旦所有的选项都已经被玩家设置,那么这个操作将被认为全部完成了。目前第三方还不支持此操作。
 
:*'''"result"'''
 
:*'''"result"'''
:::A section used to specify the result for selections that are being used as predictions. The result section contains the correct answer for the selection, and any extra information for the user if they click the "More Info" button (shown only for combo box selections). The parameters inside the result section are:
+
:::用来指定正在进行的预测结果的选项。结果项包含预测的正确答案,并且包含点击"更多信息(More Info)"按钮弹出的所有信息(仅为下拉列表框选项显示)。结果项中的参数如下:combo box
 
:::*'''"answer"'''
 
:::*'''"answer"'''
::::::The choice value of the correct answer for this selection.
+
::::::此项是正确答案的选择项的值。
 
:::*'''"answers"'''
 
:::*'''"answers"'''
::::::If there were multiple right answers, then use this instead of '''"answer"'''. This should be a section containing a list of choice values (key is the choice value, value can just be "1").
+
::::::如果有多个正确答案,那么使用'''"answers"'''来替代'''"answer"'''。这应该是一个包含了选择项值的列表。(键值为选择项的值,键值只能为1)
:::*'''"info_dialog"'''
+
:::*'''"对话框信息(info_dialog)"'''
::::::An optional section containing extra information about the result. If this exists, the "More Info" button will be shown on the selection's combo box UI. Parameters inside this section are:
+
::::::包含结果的额外信息的可选项。如果此项存在,"更多信息(More Info)"的按钮应该显示在下拉列表框界面的选项中。内部的参数为:
::::::*'''"match_id"'''
+
::::::*'''"比赛ID(match_id)"'''
:::::::::If set the ID of a tournament match, the "Watch Replay" button will be shown, and clicking on it will start the replay downloading & watching process.
+
:::::::::如果设置为世界级比赛,"观看回放(Watch Replay)"按钮必须显示,点击它将会开始下载和回放。
 
::::::*'''"info"'''
 
::::::*'''"info"'''
:::::::::A string containing extra information about this result. Will be shown in the results popup dialog.
+
:::::::::包含结果的额外信息的字串。会在结果弹出的对话框中显示。
 
::::::*'''"result_override"'''
 
::::::*'''"result_override"'''
:::::::::An optional string that overrides the result showing in the results popup dialog. By default, the popup dialog will show the correct answer using the text description of the choice value of the '''"answer"''' key. But if you have multiple '''"answers"''', it's generally best if you write a more custom description here (i.e. "Bob & Mike tied for first place with matching scores of 100").
+
:::::::::可选的用来重载弹出对话框中显示结果的字串。默认情况下,弹出的对话框会使用键值为'''"answer"'''文本描述来显示正确的答案。但是如果你有多个'''"answers"''',一般最好的解决方法是补充更多的自定义描述。(比如,张三和李四以100分的成绩并列第一)
  
 
+
下拉列表框中需要的参数还有:
Selections that are shown as combo boxes also require the following parameters:
 
 
:*[[Dota2_Compendium_Scriptfiles#Positioning_Parameters|Standard Element Positioning Parameters]]
 
:*[[Dota2_Compendium_Scriptfiles#Positioning_Parameters|Standard Element Positioning Parameters]]
:::Specifies where this element is on the page.
+
:::指定一个元素在页面上的位置。
 
:*'''"textcolor"'''
 
:*'''"textcolor"'''
:::The RGB color of the description text above the combo box.
+
:::下拉列表上的描述文本的RGB颜色值。
 
:*'''"bgcolor"'''
 
:*'''"bgcolor"'''
:::The RGB color of the shaded background in the combo box itself.
+
:::下拉列表自身的阴影背景RGB颜色值。
 
:*'''"combotextcolor"'''
 
:*'''"combotextcolor"'''
:::The RGB color of the text inside the combo box.
+
:::下拉列表框中文本的RGB颜色值。
 
:*'''"style"'''
 
:*'''"style"'''
:::The visual style of the combo box. Right now, only "s_CompendiumSelectionPlain" is supported.
+
:::下拉列表框的视觉效果。目前只支持"s_CompendiumSelectionPlain"
  
  
=====Examples=====
+
=====样例(Examples)=====
A selection holding the votes for arcana items. It's a generic choice type, so the heroes aren't specified by ID. The selection UI used a button and images, not a combo box, so it has the selection element color specified.
+
一个为神秘物品投票的选项。这是一个通用的选择类型,因此不需要用英雄ID来指定他们。选项的界面使用的是图片和按钮,而不使用下拉列表选项。因此它有被指定的选项元素颜色。
 +
 
 
{{syntax2
 
{{syntax2
 
|in=
 
|in=
Line 460: Line 460:
 
}<br>
 
}<br>
 
}}
 
}}
 
+
用来选择玩家最喜欢的战队的选项。此项使用一个下拉列表进行选择,但是这是"选择你最喜欢的队伍"页面中的一部分。这会使"description"的键值为空,并指定一个"backend_desc",以便我们能够轻松找到互动指南的统计报告。注意:队伍名称的开头有一个'''^^'''作为转义序列,以提示翻译系统这些字串不需要被翻译。
A selection holding the player's favorite team. This selection uses a combo box for the selection, but it's part of a full page with a "PICK YOUR PAVORITE TEAM" treatment. As a result, it leaves the "description" key blank, and specifies a "backend_desc" so that we can easily find the result in the compendium stats report. Note also that the team names have the '''^^''' escape sequence at the start of them to tell the localization system that these strings should not be localized.
 
  
 
{{syntax2
 
{{syntax2
Line 500: Line 499:
 
}<br>
 
}<br>
 
}}
 
}}
 
+
预测哪位英雄会获得最高击杀数的下拉选框选项。既然一个是"所有英雄"属性的选项,那么这项就不需要一个选择项列表。当预测时间结束时,它会以英雄ID的形式储存结果。在这个案例中,斧王和小鱼人联系在一起。注意:它也包含一个可选的额外信息对话框版块。
A selection that handles a combo box for predicting which Hero had the most kills. Since it's an '''"all_heroes"''' selection, it doesn't need a list of choices. Now that the prediction time is over, it contains the results in the form of Hero IDs - in this case, Axe & Slark tied. Note that it also contains an optional info dialog block with some extra information.
 
 
{{syntax2
 
{{syntax2
 
|in=
 
|in=
Line 532: Line 530:
 
}}
 
}}
  
=====Custom Selection Layouts=====
+
=====自定义选项布局(Custom Selection Layouts)=====
If you'd like more control over your selection UI, you can manually assemble the components instead of using the entire "selection" element. Here's an example of a custom selection element that contains the components in a standard "selection" element, which you can use as a starting point:
+
如果你希望更多地控制你的选项界面,你可以手动配置组件而不使用"selection"元素。以下是一个在标准"selection" 元素中包含了自定义选项元素的组件。你可以用它作为你的起始组件:
  
 
{{syntax2
 
{{syntax2
Line 650: Line 648:
 
}}
 
}}
  
==Button Element Parameters==
+
==按钮元素参数(Button Element Parameters)==
Button elements are clickable buttons that allow users to provide input. Generally used as an alternative to combo boxes for setting selections.
+
按钮元素是允许用户提供输入流的可点击按钮。一般作为下拉列表框来设置选项。
  
Parameters:
+
 
 +
参数:
 
:*[[Dota2_Compendium_Scriptfiles#Positioning_Parameters|Standard Element Positioning Parameters]]
 
:*[[Dota2_Compendium_Scriptfiles#Positioning_Parameters|Standard Element Positioning Parameters]]
:::Specifies where this element is on the page.
+
:::指定元素在页面上的位置。
:*'''"style"'''
+
:*'''"样式(style)"'''
:::The style of the button. Valid styles are '''"button_transparent"''', '''"button_solid"''', '''"button_gradient"''', and '''"button_close"'''.
+
:::按钮的样式。有效的样式为'''"button_transparent"''', '''"button_solid"''', '''"button_gradient"''', 以及'''"button_close"'''
:*'''"color"'''
+
:*'''"颜色(color)"'''
:::An optional RGB value to multiply the button color by. Not all button styles support color setting at this time.
+
:::可选的叠加在按钮上的RGB颜色值。目前有部分按钮样式支持颜色的设置。
:*'''"text"'''
+
:*'''"文本(text)"'''
:::The text inside the button. Not all button styles support text ("button_close" is just an X, for instance)
+
:::按钮内部的文本。目前有部分按钮样式支持文本显示。 (比如"button_close" 就是一个X)
:*'''"align"'''
+
:*'''"对齐(align)"'''
:::How the X position of the button should be used, since button automatically expand to contain their text. "left" will make the button expand to the right (so the X position will be the left edge of the button), "right" will make it expand to the left (so the X position will be the right edge of the button), and "center" will make it expand equally in both directions (so the X position will be the middle of the button).
+
:::如何使用按钮的横坐标轴,按钮会自动扩展来容纳文本。"left"会使按钮向右扩展(所以X轴会在按钮的左侧)"right"会使按钮向左扩展(所以X轴会在按钮的右侧)"center"会使按钮向两侧等量扩展(所以X轴会在按钮的中央。
 
:*'''"show_confirmdialog"'''
 
:*'''"show_confirmdialog"'''
:::If you want to show an Are You Sure? dialog when the user clicks on this button, then this should be the descriptive text to be shown in the dialog. If unspecified, the button will apply its effects immediately on being clicked.
+
:::如果你希望在用户点击时显示一个"你确定吗?(Are You Sure?)"的对话框,那么这个值应为在对话框中显示的描述性文本。如果没有指定的话,这个按钮将在被点击后立即生效。
 
:*'''"selection_index"'''
 
:*'''"selection_index"'''
:::If you want this button to set the value of a selection when clicked by the user, this should be the selection index of the selection you want to set. The selection must be described in the root '''"preregister_selections"''' section. Only useful if you also specify '''"selection_elements"''' or '''"selection_force_to"'''.
+
:::如果你希望用户点击按钮时设置选项的值,这应该是你希望设置的选项的选项索引。选项必须在'''"preregister_selections"'''根项下被描述。仅当你也指定了'''"selection_elements"''' 或者'''"selection_force_to"'''时生效。
 
:*'''"selection_elements"'''
 
:*'''"selection_elements"'''
:::A section containing a list of elements that should be highlighted when the user clicks on this button. Each element must have a corresponding choice value. When the user clicks on one of the highlighted elements, the selection will be set to the choice value. The button will automatically change to a "Cancel" button while the elements are being highlighted. See examples below to see how useful this is.
+
:::当用户点击按钮时应高亮显示的元素列表。每个元素必须有一个相应的选择项的值。 当用户点击高亮元素时,选项将被设置为选择的值。
 +
当元素都被高亮显示时,按钮将自动转换为"取消(Cancel)"按钮。查看下面的例子来了解此项的用处。
 
:*'''"selection_force_to"'''
 
:*'''"selection_force_to"'''
:::If you want this button to immediately set the value of a selection when clicked by the user, this should be the choice value you want the selection to be set to.
+
:::如果你想要这个按钮在用户点击时立即设置选项的值,这个值应为你想要设置的选择项的值。
 
:*'''"link_to_page"'''  
 
:*'''"link_to_page"'''  
:::If you want this button to take the user to a compendium page when clicked by the user, this should be the name of one of your pages in your compendium.
+
:::如果你想让这个按钮在点击后在让用户跳转到观战指南中的一页,,那么它应该是观战指南目标页面的名字。
 
:*'''"link_to_url"'''   
 
:*'''"link_to_url"'''   
:::If you want this button to take the user to a URL in their external browser, this should be the target URL.
+
:::如果你想让这个按钮在点击后在让用户外部浏览器中打开一个URL地址,那么它应该是目标URL地址。
 
:*'''"tooltip_data"'''
 
:*'''"tooltip_data"'''
:::An optional section describing the tooltip for this button, if you want one. See [[Dota2_Compendium_Scriptfiles#Tooltip_Parameters|Tooltip Parameters]].
+
:::描述按钮的工具提示的可选项目。 在 [[Dota2_Compendium_Scriptfiles#Tooltip_Parameters|Tooltip Parameters]]中查看。
 
:*[[Dota2_Compendium_Scriptfiles#Visibility_Parameters|Standard Element Visibility Parameters]]
 
:*[[Dota2_Compendium_Scriptfiles#Visibility_Parameters|Standard Element Visibility Parameters]]
:::Used to control when this element is visible / non visible. Elements are always visible by default.
+
:::用来控制合适此元素是可见/不可见的。元素总是默认可见的。
 
:*'''"command"'''
 
:*'''"command"'''
:::If you want this button to issue a command issued when clicked by the user, this should be the command. Valid commands are as follows:
+
:::如果你需要这个按钮在用户点击时发出指令,那么这个值应为"command"。以下是有效的指令:
 
:::*'''"goto_tournament"'''
 
:::*'''"goto_tournament"'''
::::::The compendium will close and the user will be taken to the Live Games section of the Watch tab.
+
::::::观战指南将会关闭,并且用户会被带至赛事直播的标签页。
 
:::*'''"goto_offerings"'''
 
:::*'''"goto_offerings"'''
::::::The compendium will close and the user will be taken to the Offerings section of the Armory.
+
::::::观战指南将会关闭,并且用户会被带至兵器库的献祭页面。
 
:::*'''"compendium_buy_and_useX"'''
 
:::*'''"compendium_buy_and_useX"'''
::::::X must be the index of an item definition. This will initiate the purchase of the specified item.
+
::::::X必须是一个物品定义的索引。这会购买指定的物品。
 
:::*'''"popup:X"'''
 
:::*'''"popup:X"'''
::::::X must be the name of an embedded page. The corresponding embedded page will be instantiated. See [[Dota2_Compendium_Scriptfiles#Embedded_Pages|Embedded Pages]] for more information.
+
::::::X必须是一个嵌入的页面的名字。对应的内嵌页面会被实例化。在[[Dota2_Compendium_Scriptfiles#Embedded_Pages|Embedded Pages]]中查看更多。
 
:::*'''"close:X"'''
 
:::*'''"close:X"'''
::::::X must be the name of an embedded page. If the corresponding embedded page is currently visible, it will be closed. See [[Dota2_Compendium_Scriptfiles#Embedded_Pages|Embedded Pages]] for more information.
+
::::::X必须是一个嵌入的页面的名字。如果对应的内嵌页面当前可见,它将被关闭。在[[Dota2_Compendium_Scriptfiles#Embedded_Pages|Embedded Pages]]中查看更多。
:::*'''"popup_results:X"'''
+
::::::X必须有效的选择索引。 The standard Selection Results Dialog will be popped up with the results for the specified selection.
::::::X must a valid selection index. The standard Selection Results Dialog will be popped up with the results for the specified selection.
 
 
:::*'''"request_heroes"''', '''"reroll_heroes"''', and '''"roll_daily_hero"'''
 
:::*'''"request_heroes"''', '''"reroll_heroes"''', and '''"roll_daily_hero"'''
::::::These are used to handle the TI4 challenges, and are now obsolete.
+
::::::这些参数是用来处理Ti4的挑战的,现在已经弃用了。
 
 
  
An example button for selecting a favorite hero. When the user clicks the button, a set of hero icons are highlighted to allow the user to click directly on the hero they want to choose. Note that this button is only visible when selection 301 is 0 (unset).
+
一个选择最喜爱的英雄的样例按钮。当用户点击按钮时,一系列的英雄图标将会高亮显示,并允许用户直接点击他们想要选择的英雄。注意:这个按钮只在选项301为0时可见(未设置的)
 
{{syntax2
 
{{syntax2
 
|in=
 
|in=
Line 725: Line 723:
 
}}
 
}}
  
An example button that simply clears the specified selection. Note that it's only visible when selection 301 is not 0 (i.e. has been set).
+
一个简单地清楚指定选项的按钮的样例。注意:只有当选项301不为0时这个是可见的。
 +
 
 
{{syntax2
 
{{syntax2
 
|in=
 
|in=
Line 742: Line 741:
 
}}
 
}}
  
==Timer Element Parameters==
+
==计时器元件参数(Timer Element Parameters)==
Timer elements are non-interactive displays showing the amount of time left until a specified time is reached. Generally used as countdown displays on pages with user selections that close at some point.
+
计时器元件是一种非互动性质的元件,用于显示距离达到一个特定时间点还有多长时间。一般使用于显示还有多久关闭玩家选择。
 
+
参数:
Parameters:
+
:*标准元件配置参数[[Dota2_Compendium_Scriptfiles#Positioning_Parameters|Standard Element Positioning Parameters]]
:*[[Dota2_Compendium_Scriptfiles#Positioning_Parameters|Standard Element Positioning Parameters]]
+
:::用于定位元件在页面的位置
:::Specifies where this element is on the page.
 
 
:*'''"time"'''
 
:*'''"time"'''
:::The name of the time entry in the root '''"timers"''' section that this timer display is referring to.
+
:::"timers"根目录下的时间条目的名称,计时器所指示的是该事件的时间。
 
:*'''"textcolor_title"'''
 
:*'''"textcolor_title"'''
:::The RGB value of the title text in the display.
+
:::标题文本的RGB的颜色值。
 
:*'''"textcolor_sub"'''
 
:*'''"textcolor_sub"'''
:::The RGB value of the subtitle text in the display.
+
:::副标题文本的RGB的颜色值。
 
:*'''"maxseconds"'''
 
:*'''"maxseconds"'''
:::If you want to clamp the maximum time the timer is allowed to show, set this value to that max time (in seconds).
+
:::如果你想设置一个计时器所能显示的最大时间,将这个值设置为你想要要的时间(以秒为单位)
 
:*'''"timerstyle"'''
 
:*'''"timerstyle"'''
:::Can be set to '''"hero_challenge"''' for 24 Hour Hero Challenge timers. Should be left out otherwise.
+
:::可以被设置为"hero_challenge"用于24小时英雄挑战的计时器。暂时不做讨论
  
 
{{syntax2
 
{{syntax2
Line 772: Line 770:
 
}}
 
}}
  
==ProgressBar Element Parameters==
+
==进度条元件参数(ProgressBar Element Parameters)==
Progress Bars are non interactive elements designed to show the percentage progress towards something. Note that progress bar elements only draw the filled portion of a progress bar. It's generally best to place them on top of an image that acts as the underlying unfilled portion.
+
进度条是一种非互动性质的元件,用于显示完成某个目标的进度百分比。要注意进度条元件只会绘制进度条本身那一部分,因此最好把它们摆在图片的最上层作为潜在的未被填充的区域。
  
Parameters:
+
参数:
:*[[Dota2_Compendium_Scriptfiles#Positioning_Parameters|Standard Element Positioning Parameters]]
+
:*标准元件配置参数[[Dota2_Compendium_Scriptfiles#Positioning_Parameters|Standard Element Positioning Parameters]]
:::Specifies where this element is on the page.
+
:::用于定位元件在页面的位置
 
:*'''"w"'''
 
:*'''"w"'''
:::Element width. This is the maximum width of the filled bar. The actual drawn width of the bar will be between 0 and this value.
+
:::元件宽度 这是进度条的最大宽度。实际的填充区域的宽度应当在0和这个值之间。
 
:*'''"h"'''
 
:*'''"h"'''
:::Element height.
+
:::元件高度。
 
:*'''"data"'''
 
:*'''"data"'''
:::The data source that this progress bar is reading from. Currently supported sources are '''"prizepool"''' and '''"level"''' (of the compendium).
+
:::进度条所读取的数据源,目前的数据源是 '''"奖金池(prizepool)"'''以及 '''"互动指南等级(level)"'''
 
:*'''"min"'''
 
:*'''"min"'''
:::The value of the data source at which the bar should be 0 width. Values below this will be clamped.
+
:::进度条为0时数据源的值,比这个值小的都不会显示。
 
:*'''"max"'''
 
:*'''"max"'''
:::The value of the data source at which the bar should be at 100% width. Values above this will be clamped.
+
:::进度条为100时数据源的值,比这个值大的都不会显示。
 
:*'''"color"'''
 
:*'''"color"'''
:::The RGB color of the filled portion of the bar.
+
:::进度条填充区域的RGB值。
 
:*'''"filename"'''
 
:*'''"filename"'''
:::If you'd like to use an image to represent the portion of the filled bar, instead of a filled block of color, then specify the image filename here. It should match the filename of an image sitting in the same directory as the compendium script file. Alternatively, you can specify the relative path of an existing image inside Dota 2's resource\flash3 directory (i.e. "images/heroes/beastmaster.png" or "images/items/abyssal_blade.png")
+
:::I如果你想用一张图代替单一色来填充进度条,那么在这里指定一个图片的文件名。这个图片的位置要放在互动指南的script文件夹下的directory目录下。或者,你可以指定一个读取图片的路径,图片需要放在Dota 2's resource\flash3路径下( 类似"images/heroes/beastmaster.png" "images/items/abyssal_blade.png")
  
 
{{syntax2
 
{{syntax2
Line 809: Line 807:
 
}}
 
}}
  
==Video Element Parameters==
+
==视频元件参数(Video Element Parameters)==
Video elements display an embedded, playable video. Note that these videos are set to a fixed size of 494x278.
+
视频元件显示一个可播放的植入视频,注意这些视频的尺寸固定为494x278。
  
Parameters:
+
参数:
 
:*[[Dota2_Compendium_Scriptfiles#Positioning_Parameters|Standard Element Positioning Parameters]]
 
:*[[Dota2_Compendium_Scriptfiles#Positioning_Parameters|Standard Element Positioning Parameters]]
:::Specifies where this element is on the page.
+
:::用于定位元件在页面的位置
 
:*'''"providers"'''
 
:*'''"providers"'''
:::There are two currently supported providers: Youtube and Youku.
+
:::现在支持2个视频源:Youtube和优酷。
:::One or both may be supplied, with Chinese Dota 2 clients preferring to load the Youku video if present and the remaining clients preferring to load the Youtube video if present.
+
:::可以只用1个或者2个都用,中国dota2用户倾向于优先使用优酷视频,而其他地区倾向于优先使用youtube视频。
:::The value of the individual provider is the identifier of the video for that provider.
+
:::不同的视频源有着不同的值
:::For example, the Youtube ID in the example below comes from this full URL: http://www.youtube.com/watch?v=Eqk9C1wVT0U
+
:::举例说明,下方例子中的youtube ID来源于该链接: http://www.youtube.com/watch?v=Eqk9C1wVT0U
:::The Youku example comes from this URL: http://player.youku.com/embed/XNzQ2OTgzNjc2
+
:::优酷的例子来源于该链接:http://player.youku.com/embed/XNzQ2OTgzNjc2
  
  
Line 838: Line 836:
 
}}
 
}}
  
==Container Element Parameters==
+
==容器元件参数(Container Element Parameters)==
Container elements are invisible elements that contain other elements. Extremely useful for organisational purposes, and powerful tools in templates.
+
容器元件是一个用于包含其它元件的不可视元件,对于规划自己的工作非常有帮助,在模板里是一个非常强大的工具。
  
Parameters:
+
参数:
 
:*[[Dota2_Compendium_Scriptfiles#Positioning_Parameters|Standard Element Positioning Parameters]]
 
:*[[Dota2_Compendium_Scriptfiles#Positioning_Parameters|Standard Element Positioning Parameters]]
:::Specifies where this element is on the page.
+
:::用于定位元件在页面的位置。
 
:*'''"elementlist"'''
 
:*'''"elementlist"'''
:::A section containing one or more child elements, to be created and contained inside this Container.
+
:::此项包含着1个或多个创建或放置于此容器中的子元件
:*Relative Coordinates: '''"rx"''' & '''"ry"'''
+
:*相对坐标: '''"rx"''' & '''"ry"'''
:::Any child element inside a Container can also choose to use x/y positions relative to the Container's x/y. This allows you to easily position repeated blocks of elements. To use relative coordinates, the child element should use the '''"rx"''' and '''"ry"''' keys instead of the '''"x"''' and '''"y"''' keys.
+
:::任何一个容器中的子元件都可以相对于容器的X/Y值选择自身的坐标。这允许你很简单的定位重复的色块和元件。要使用相对坐标,子元件应当使用 "rx" "ry" 代替 "x""y" .
 
:*[[Dota2_Compendium_Scriptfiles#Visibility_Parameters|Standard Element Visibility Parameters]]
 
:*[[Dota2_Compendium_Scriptfiles#Visibility_Parameters|Standard Element Visibility Parameters]]
:::Used to control when this element is visible / non visible. Elements are always visible by default. Note that elements contained inside this Container will only evaluate their own Visibility Parameters if this Container is visible. Hence, you can use visibility parameters inside Containers and their embedded children to do AND visibility operations.
+
:::用于控制该元件何时可见/不可见。元件默认一直可见。请注意包含于容器中的元件只有在容器本身是可见的情况下才会评估自身的可视性参数。因此,你可以在容器和容器内子元件中使用可视性参数来进行操作.
  
 
+
下方例子容器中包含3个元件。容器本身只有在选项“500”的值为0时才可见,因为那3个元件在容器中,它们同样服从该规则。要注意说明文档有额外的可视性规则,它在选项“600”不为0时才可见。该规则只有在容器本身可见的情况下才有效,所以说明文档只有在选项“500”为0而选项“600”不为0的情况下才可见。还需要注意锁定键也再使用相对坐标,所以它的X&Y坐标要偏离容器的X&Y坐标。(这里我们定为55,,100)
This example container has three elements inside it. The container itself is only visible when selection 500 has a value of 0, and since the three elements are contained inside it, they follow the same rule. Note that the description text has additional visibility rules - it's only visible if selection 600 is not 0. That rule will only be evaluated if the container itself is visible, so the description text is only visible when selection 500 is 0 AND selection 600 is not 0. Note also that the lock button is using relative coordinates, so that its X & Y position are offset from the container's (resolving here to 55,100).
 
 
{{syntax2
 
{{syntax2
 
|in=
 
|in=
Line 884: Line 881:
 
}}
 
}}
  
==Template Element Parameters==
+
==模板元件参数(Template Element Parameters)==
Templates are sections of KeyValues that can be easily replicated throughout your script file. They're essential for building easily maintainable compendiums. Note that templates must still specify an '''"elementtype"''', unless they expect all their instanced objects to specify one.
+
模板是键值的一部分,它可以轻易的通过你的脚本文件复制。它们尤其适于用来制作可维护的互动指南。注意模板必须仍然指定一个 '''"elementtype"''', 除非其它所有举例的对象都指定了
 
+
要高效率的制作模板,你必须了解它们在互动指南中是如何被应用的。最直观的方式是通过一个例子来了解。首先假设我们有一个模板叫做"template_pagetitle"
To build templates effectively, you must understand how they're implemented in the compendium. The easiest way to understand them is via an example. First, imagine we have a template called "template_pagetitle":
 
 
{{syntax2
 
{{syntax2
 
|in=
 
|in=
Line 905: Line 901:
 
}}
 
}}
  
This is a useful template for our compendium - it's a textfield designed to show the title of a page. It has everything specified for a page title, minus the exact text to display. Note that it looks like a normal textfield, except that it has the '''"embedded_template"''' key set, which tells the compendium that it shouldn't create the textfield, it should register it as a template instead. Now we can instantiate that template in a page in the following way:
+
这是一个对于我们的互动指南非常有用的模板—这是一个用于显示页面标题的文本框。它规定了一个页面标题除去具体文本内容外所需的所有元素。注意它除了设置了"embedded_template" 键,看上去就像一个普通的文本框,它使互动指南不创建文本框而是把它作为一个模板记录下来。现在我们可以在一个页面中用如下方式对模板进行说明:
 
{{syntax2
 
{{syntax2
 
|in=
 
|in=
Line 922: Line 918:
 
}}
 
}}
  
When the compendium system finds the '''"t"''' key, it goes looking for a template with the specified name. Once it finds the template, it merges all the template's keys into this section. Any keys that are in the derived instances will override any key inside the template, so in this case the larger size (20) will be left intact, and the template's smaller size (16) will be ignored. Post template resolution, the script file would be as follows:
+
当互动指南的系统发现了"t" , 便会开始搜寻响应名称的模板。一旦发现该模板,将所有该模板的键合并到此部件。任意派生的情况都会会重载模板内部的键值,所以在这种情况下,较大的size(20)会被留下,而模板中的较小的size(16)会被无视。上传模板分辨率脚本文件应该如下方所示:
{{syntax2
 
 
|in=
 
|in=
 
"page_example"<br>
 
"page_example"<br>
Line 945: Line 940:
 
}
 
}
 
}}
 
}}
Note that the '''"embedded_template"''' key is not copied down into the instance, so that the instance doesn't become a template as well. As a result, if you have templates derived from other templates, you'll need to make sure they also have the '''"embedded_template"''' key set inside them, since they won't inherit it from their parent template.
+
注意'''"embedded_template"'''键并没有记录到实例中,因此这个实例不会成为一个模板。如果你有从别的模板中派生出来的模板,你需要确认它们也设置了"embedded_template"键值,这样它们才不会从父模板那里继承这个值过来。
 
 
 
 
====Defines====
 
Templates can also contain a section called '''"required_defines"'''. This section contains a list of defines that any derived instances of the template must provide values for. When the templates are resolved by the compendium system, the values of the derived defines will replace any instances of the defines inside the template.
 
  
Define names must also follow a strict format:
+
====定义(Defines)====
*Start and end with the '''%''' character.
+
模板也包含了叫做'''"required_defines"'''的项目。这一项包含一个任何派生实例的模板必须提供值的定义列表。当模板被互动指南系统解析时,模板中派生定义的值会被替换为实例化定义的值。
*Start with '''%def_''' or '''%defloc_'''. If the define will contain text that needs to be localized, use '''%defloc_'''. Otherwise, use '''%def_'''.
+
定义的名称必须为如下的脚本格式:
 +
*'''%'''作为前缀和后缀。
 +
*'''%def_''' '''%defloc_'''作为前缀。如果定义包含需要翻译的文本,使用'''%defloc_''',否则使用'''%def_'''
  
To understand, let's look at an example. Lets say we want every one of our compendium pages to have a title, and a nice border image under it. We could define a template as follows. It contains both the textfield and the image, and a define for the text inside the textfield. Note that we want the title text to be localized, so we use the '''%defloc_''' preface for our define name.
+
为了便于理解,我们看一个例子。我们希望互动指南的每一页都有一个标题,还有一个不错的边界图像。我们可以按如下所示定义一个模板。它包含文本框和图像,以及文本框内部文本的定义。注意:我们希望标题文本是可翻译的,所以我们使用 '''%defloc_'''作为定义的开始。
 
{{syntax2
 
{{syntax2
 
|in=
 
|in=
Line 986: Line 979:
 
}}
 
}}
  
We could then instantiate that template on a page as follows:
+
我们可以按如下方法实例化此模板:
 
{{syntax2
 
{{syntax2
 
|in=
 
|in=
Line 1,004: Line 997:
 
}
 
}
 
}}
 
}}
This page would now display the title text field and image. The instance must contain a '''"defines"''' block with a value for every one of the defines listed in the template's '''"required_defines"'''. The advantage of using defines are as follows:
+
这个页面现在会显示标题文本框和图片。实例中必须包含一个在模板的'''"required_defines"'''中列出的定义好的'''"defines"'''块。使用定义用如下的好处:
*Instances don't need to know the internal structure of the template. In the case above, the "title" instance of the "titlesection_template" template doesn't need to contain a matching elementlist to put the '''"text"''' key into the right place within the '''"titletext"''' textfield. This allows the template to be redesigned without breaking any derived instances.
+
*实例不需要知道模板额内部结构。在上面的例子中,"titlesection_template"模板中的"title"实例不需要包含一个匹配元素列表以在'''"titletext"'''文本框中置入正确的文本值。这允许模板被重新设计而不破坏任何派生模板。
*Defines are error checked, so instances can't forget to specify a define necessary to the operation of the template.
+
*定义是有错误检查机制的,所以不能忘记在实例中指定一个模板操作必要的定义。
*The define can be used in multiple places in the template, reducing the chances of incorrect data being specified by instances.
+
*定义能够在模板中的多个位置被使用,指定实例以减少数据错误的可能。
  
Here's a slightly more complex example. Note how it uses the '''%defloc_name%''' define in multiple textfields. It also uses the '''%def_''' prefix for the logo, because it's an image filename and hence shouldn't be localized.
+
如下是一个略微复杂的例子。注意在复合文本框如何使用'''%defloc_name%'''定义。它也使用'''%def_'''作为前缀,因为它是一个图像文件名,不应该被翻译。
 
{{syntax2
 
{{syntax2
 
|in=
 
|in=
Line 1,043: Line 1,036:
 
}}
 
}}
  
====Nested Templates====
+
====嵌套模板(Nested Templates)====
One useful technique is having templates that derived from other templates. For instance, you may want to have a root textfield template that sets up your fonts and colors, and then some derived templates for titles, subtitles, and descriptive blocks. KeysValues inside nested templates are merged downwards through the template chain just like any other key - keys in the lower templates will override the keys in the upper templates.
+
一个从其它模板派生出新模板的方法。例如,你可能想要一个根文本框模板来设置字体和颜色,然后一些派生模板用作标题、副标题以及描述块。嵌套模板内部的键值会与其他值一样合并到模板链中,低级模板中的键值会重载高级模板中的键值。
  
====Debugging====
+
====调试(Debugging)====
Liberal usage of templates and defines can lead to situations where your compendium script file is reporting bugs that are tricky to track down. A useful tool for debugging them is the '''"test_compendium_writeposttemplates"''' convar. If you set it to 1 in the Dota 2 console, and then run your '''"test_compendium"''' command, the compendium system will save your script file to disk after it's resolved all the templates in it.
+
自由地使用模板和定义会导致当你的互动指南脚本文件报错时难以追踪错误的来源。'''"test_compendium_writeposttemplates"'''是一个在调试错误时很有帮助的工具。如果你在Dota2控制台中将其设置为1,运行'''"test_compendium"'''指令,在解析完成所有的模板后,互动指南系统会在硬盘上保存你的脚本文件。
  
You can find the resolved script file under your Dota 2 directory in the following file: ''\dota\compendium_datafile.txt''
+
你可以在Dota2的''\dota\compendium_datafile.txt''路径下找到解析完的脚本文件。
  
 
==泛元件参数==
 
==泛元件参数==
Line 1,322: Line 1,315:
  
 
这是提示信息菱形图像,用来生成从元件到提示信息的箭头:[[Image:Tooltip_diamondpointer.png|Tooltip_diamondpointer.png]]
 
这是提示信息菱形图像,用来生成从元件到提示信息的箭头:[[Image:Tooltip_diamondpointer.png|Tooltip_diamondpointer.png]]
 +
 +
[[Category:AMHC 汉化]]

Revision as of 05:17, 26 September 2014

English

Dota2的互动指南是与联赛相关的游戏内建物品。它们由一个第三方脚本文件描述,并通过Dota2.com的联赛编辑页面上传至Dota2后台。 这个页面将会描述此脚本文件,以及我们建议的开发互动指南的流程。

建立和测试(Building and Testing)

首先,确保你的联赛可以使用互动指南。你可以通过联赛页面联系Valve联赛管理团队。一旦你的联赛获准使用互动指南,你需要从你的联赛编辑页面下载一份互动指南的脚本文件例程(或者直接从这里下载:http://media.steampowered.com/apps/dota2/images/leagues/CompendiumExample.zip)

在上传到Dota2后台之前,互动指南必须先在你的本机上建立并进行测试。你可以使用test_compendium命令来测试你的互动指南

例如:

test_compendium "c:/compendium/example_compendium.txt"

一旦打开你的互动指南,你可以对你的脚本文件进行修改,并且通过test_compendium_refresh命令立即重新加载你的互动指南。我们建议通过这种方式编辑你所有的脚本文件,这样你可以一边编写一边测试的你的文件。

将你在互动指南中要插入的图片和你的脚本文件放在同一路径下,这样在测试时它们将被自动加载。注意,在互动指南中的选择操作不会被真正地保存,其他部分数据是为了测试而伪造的数据(例如:进度条将会不停地移动,江金城会上涨。) 你可以使用以下指令来模拟奖金池的值:

  • test_compendium_prizepool_min 1600000
设置奖金池的初始(最少)奖金。
  • test_compendium_prizepool_max 6000000
设置奖金池的封顶(最高)奖金。
  • test_compendium_prizepool_inc 5000
设置奖金池每秒钟将会增加的数量。

一旦你准备好通过联赛管理员页面发布、提交你的互动指南和图片,但并不设置它为公开可访问的。非公开的互动指南对于你联赛中的所有管理员都是可见的。启动你的Dota2客户端并且浏览你的互动指南确保你对它满意。如果你对它满意,再次提交它,并将其标记为公开的,之后所有购买了你联赛门票的玩家都将可以访问它。

概念(Concepts)

互动指南包含了多种脚本文件提及的概念。

页面(Pages)

互动指南是包含多个页面的虚拟图书。每个页面包含了一个将页面显示给玩家的元素列表,元素包括:图形部分(比如文本框和图片),输入部分(比如按钮和组合框),布局助手(比如容器和模板)。

元素(Elements)

页面由元素列表组成。每个元素都有一个独立命名和元素类型。每个类型都有一个必需的和可选的参数列表。

选项(Selections)

选项是用来存放互动指南中的动态值的。这些值可以由玩家或者Dota2后台进行修改。互动指南中的许多元素可以作用于选择值。每个选项必须有一个独有的索引来鉴别它。

选项是在你用来在任意时刻接收玩家在互动指南中输入的数据的。比如:允许他们对未来的比赛做出预测,对他们希望在表演赛中出现的内容进行投票,选择自己最喜欢的英雄或者物品。当用户做出选择是,实际的用户界面也会发生变化。

由玩家设定的选项可以在某个特定的时刻锁定,之后玩家无法对它们做出修改。选项也可以根据其它选项的值来锁定它们自身。

模板(Templates)

模板允许你简单的在你的脚本文件中大量复制键值和脚本值。模板必须由脚本文件中的某个名称注册,之后它们可以在你的互动指南中的任意地方被实例化。

模板也支持宏定义,本质上来说是模板的实例必须提供值的变量。模板在这之后可以使用内部查看,模板可以使用模板中定义的元素,在这之后宏定义将被提供的值所替换。在Template Element Parameters中查看语法和例子。

翻译(Localization)

翻译工作会在你发布你的互动指南后自动的进行处理。任何在你互动指南中出现的文本都会被提取并且替换为翻译键值。文本会在[Steam Translation Web page]发表。其它语言的版本会在社区完成翻译工作后发行。

一些便于互动指南翻译的方法:

  • 不要在你的图片中添加文本,因为图片中的文本不能被翻译。取而代之的是在图片上覆盖一层文本框。
  • 在互动指南发售后,在更新它时不要重命名页面或者元素。翻译的键值是根据页面和元素名称生成的,重命名它们将会导致翻译时使用的键值改变,这对翻译者来说非常痛苦。
  • 试着为其它语言预留提供更多的文本空间。如果你的文本恰好填充完它的文本框,那么它很可能在翻译成其它语言时不能够完美填充。
  • 不要把句子打散到多个文本框中。有些语言会阻止你将一个句子拆成多块单独的文本。
  • 你可以通过在文本框开头添加^^,让某些文本不被翻译。

脚本文件格式(The Script File Format)

互动指南脚本文件是一个KeyValues在任意文本编辑器中都可轻松编辑的文本文档。它包含了一系列的含有参数的段落,一些是必需的,一些的可选的。test_compendium命令会在你打开互动指南时报出其中所有的错误。

根级类型(Root Level Parameters)

脚本文件的根级别必须包含以下的键值:

  • "version" "3"
这是脚本文件的版本号,不要修改它。
  • "table_of_contents_page" "<name of your table of contents page>"
这个值必须是页面的名称,使用者在导航中点击"Table Of Contents"按钮时,会前往至你希望他们前往的页面。
  • "table_of_contents_version" "<version of the Table of Contents>"
这个值是一个你可以随时增大的数值。任何时候玩家打开互动指南时,这个数字会比上次互动指南被打开时的值更高,一个"!"的提示图标会在导航中"Table Of Contents"按钮旁显示。我们建议你在互动指南中添加新的页面时,自增这个数值。
  • "主题色(theme_color)"
这是一个你的互动指南的主题RGB值。这个会用作互动指南导航按钮周围的模糊光效。
  • "预加载(precache)"
这一项包含一个在互动指南打开前必须被下载的图像列表。如果你想要一个封面或者页面背景,但是你没有大文件图片,你可以让玩家在打开互动指南前下载大部分/所有你的图片。不在列表中的图片会在使用者浏览到包含此图片的页面时进行下载。(这些图片会在下载完成后显示)
 
 Example "precache"

{

"compendium2014_cover.jpg"       "1"
"compendium2014_blankpage.jpg"   "1"
"compendium2014_insidecover.jpg" "1"

}

  • "timers"
此项表示其他元素与主列表引用的次数。计数器必须按照如下格式书写:
"HH:MM:SS DD-MM-YYYY GMT+ZZZZ"     (timezone + can be a - instead)
 
 Example "timers"

{

"always_locked"    "00:00:00 01-01-2000 GMT+0000"
"qualifiers_start" "12:00:00 12-05-2014 GMT-0500"
"qualifiers_end"   "23:59:59 27-05-2014 GMT+0200"
"mainevent"        "09:00:00 18-07-2014 GMT+0700"

}

  • "preregister_selections"
此项包含了一个在页面内元素中使用前需要被定义的选项列表,任意被设置为非复选框的选项必须在此进行注册(复选框本身包含了选项的注册)。在Selection Parameters查看如何注册一个单体选项。
  • "result_dialog_settings"
此项会定制使用者点击"More Info"按钮后弹出的复选框中的额外对话框信息。一般只用来预测比赛结果。选项中的参数如下:
  • "color_title" : 标题文本的RGB颜色。
  • "color_bg" : 设置扁平化背景的RGB颜色,可用"image_bg_filename"替代。
  • "color_result" : 结果文本的RGB值。
  • "color_extrainfo" :额外信息的文本RGB颜色值。
  • "color_correctedness" :正确的/不正确的文本RGB颜色值。
  • "image_bg_filename" : 替代平面阴影背景,用作对话框背景的图片。
  • "模板(templates)"
此项包含了一个模板定义的列表。在Compendium Templates查看更多的信息。使用"embedded template"元素类型后,模板也可以在自身页面内部被指定。只在一个页面中使用过的模板,这是优先选择的组织形式,保证在使用模板是,模板的定义在模板附近。在Template Element Parameters中查看格式细节问题。
  • "pages"
此项包含了页面的住列表,以保证它们能够出现在互动指南中。每个页面都有一个元素列表。在Page Parameters中查看如何对不可见的页面进行布局。
  • "embedded_pages"
这个可选项包含了在一个虚拟图书中不会显示的页面列表,取而代之的是用作弹出列表,对话框或者工具提示。在Embedded Pages中查看更多信息。

页面参数(Page Parameters)

每个页面都必须有一个独立的名称,并且包含一个元素列表。一个有效的组织技术是将模板的使用储存在页面本身中,而不是存放在全局模板列表中(一个适合存放被多重页面调用的模板的地方)。查看样例中的"page_insidecover"来了解更多。

 
 Example "pages"

{

"page_cover"
{
"elementlist"
{
"cover_image"
{
...
}
}
}
"page_insidecover"
{
"templatelist"
{
"template_image"
{
"elementtype" "embedded_template"
...
}
}
"elementlist"
{
"background_image"
{
...
}
"some_text"
{
...
}
}
}

}

除了元素列表,页面还有如下的可选设置:

  • "crease"
书中央的暗化分界线的可见性。这个值的范围在0~1之间,当值为1的时候是完全可见的,当值为0的时候是完全不可见的。只有左边页面的值是可用的。对于想在可见页面中排布文本或图片是非常用帮助的。

Element Parameters

这里有多种元素的类型,任意元素选项的第一个键值应为"elementtype"参数,,用来提示互动指南当前项正在描述哪一种元素类型。选项中保留的键值会根据元素的类型来进行解析。

有效的元素类型:

  • "textfield"
一块文本。 Text Element Parameters
  • "image"
一幅图片。Image Element Parameters
  • "selection"
一个处理用户做出的选择并看到选择结果的更小元素的集合。

Selection Element Parameters

  • "button"
一个可以作为指令来使用的可点击按钮,或者用来设置一个选项的值。Button Element Parameters
  • "line"
直接在页面上画出的线。Line Element Parameters
  • "timer"
在注册计数器到期前显示剩余时间计数器。 Timer Element Parameters
  • "progressbar"
显示达成目标进度的进度条。ProgressBar Element Parameters
  • "video"
内嵌的Youtube/优酷视频。 Video Element Parameters
  • "container"
其他元素的容器。在模板中使用,用以容纳混合的元素,以及控制元素块的可见性。Container Element Parameters
  • "generic"
叫做scaleform的通用元素。目前只支持滚动视图内的页面。 Generic Element Parameters

除了"elementtype",一个选项还可以选择性包含一个"embedded_template"键值,默认设置为"1"。如果这么做,此元素将被注册为一个模板而不是被实例化显示在页面上。它实际上和将元素放置在模板项的根部分中一样,但是它被保存在一个页面中。将模板保存在你经常使用它们的页面附近。 在Template Element Parameters 中查看额外的模板专有元素。

文本元素参数(Text Element Parameters)

文本元素是包含了大量可翻译文本的区域。

参数:

  • "文本(text)"
显示的文本。可以包含Text Escape Sequences.
  • "字体 (font)"
可以是可用的Dota字体:"text", "textbold", "title". 或者它时一个字体的名称(比如"courier"或者"arial"。注意你只可以使用window或者OSX下广泛使用的字体)
  • "字号(size)"
字号。
  • "加粗(bold)"
加粗。
  • "斜体(italic)"
斜体。
  • "(glow)"
给文本周围添加一个蒙版发光效果。
指定页面中元素的位置。
  • "w"
文本宽度。确保你为其它语言预留了足够的位置。(比较好的方法是为英文预留原语言2倍的空间)
文本高度。所以了翻译文本的另一种方法是为你当前使用的语言预留足够的行高,这样翻译后的文本可以自动换行到下一行。
  • "resize_to_fit"
如果设置为1,文本框会重置本身以适应当前的行高。通常只有在文本框有依赖他们的元素时需要使用。(内嵌页面中的文本作用类似于工具提示,那里的背景会被重置大小以适应内部文字的大小)
  • "spacing_horizontal"
文字水平间距。
  • "spacing_vertical"
换行符的行间距。
  • "align"
设置元素内部文本的按高度和宽度对齐的方式。必须是以下的对齐模式:"左对齐(left)", "右对齐(right)", "居中对齐(center)"。(默认为左对齐)
  • "depth"
可以为"front"或者"back"(未指定时默认为"front" )Front元素将被放置在模板中现有内容的前面,Back元素将被放置在模板中现有内容的后面。记住,元素指定的顺序是他们放置在页面上的顺序。
  • "color"
文本的RGB色值。(默认为"255 255 255" 白色)
这个值必须是你互动指南中的一个页面名称。点击这个文本将会跳转到那个页。对于表内内容很有用,或者在互动指南中快速前后跳转。
  • "link_to_url"
这个值必须是一个URL地址,点击这个文本将会弹出一个浏览器并在其中加载此链接。
  • "min"
最小值在'%prizepool_togo%%prizepool_perc%中使用。 Text Escape Sequences.
  • "max"
最大值在'%prizepool_togo%%prizepool_perc%中使用。 Text Escape Sequences.
  • "show_selection_tooltip"
如果为选项设置一个索引,在此文本上滚动鼠标将会弹出一个工具提示。这个工具提示将会基于选项中的"tooltip_data"项进行配置(并非属于此文本框)这允许自定义工具提示选项中的每一种选择。
当用户移动鼠标指针到此元素上时,会弹出一个工具提示。
用来控制合适这个元素是可见或不可见的。元素默认为可见。

Selection Points Displays

一个文本元素可以选择显示一组选项中用户获得的所有的点数,用以取代显示普通文本。主要用来显示用户预测是获得的点数。为了做到这一点,文本元素需要一个按照以下两种方式之一设置的"Points"项:

  • 列表选项由索引独立分类。(键值为选项索引,值只能为"1")
  • "index_min""index_max"的值之间指定一个最小/最大选项索引范围,
  • "index_min""index_max"的值间指定一个最小/最大的索引,用以在其间统计所有的索引数目。

这两种方法也可以结合使用。

样例:

 
 Example "points"

{

"1"          "1"
"3"          "1"
"6"          "1"

}
"points"
{

"index_min"  "8"
"index_max"  "11"

}
"points"
{

"index_min"  "1"
"index_max"  "7"
"10"         "1"
"11"         "2"

}


文本列表(Textlists)

文本框也可以被设置为文本列表。一个文本列表是一个根据文本增长动态更新的文本元素(比如互动指南的等级,或者说联赛奖金池)一个证明文本列表有用的例子是玩家的互动指南升级时,对玩家解锁的内容的显示文本。 将一个文本元素设置为文本列表,你需要进行如下的参数设置:

  • "textlist_var"
你想使用的数据值将决定哪块动态文本是否。当前仅支持于"prizepool"(联赛的奖金池) 和"level"(玩家的互动指南等级) 。
  • "textlist_rule"
当决定显示某块动态文本时,比较"textlist_var"中指定的"textlist"数值的数学方法。有效的方法是 "=", "!=", ">", "<", ">=",以及 "<="。
  • "textlist"
此项包含了在文本元素中显示的所有动态文本块的列表。此项的值应该与"textlist_var"指定的值进行比较(使用"textlist_rule"中的数学方法)此项的值是动态的文本块。

在此样例中,文本框设置为一个基于玩家互动指南等级的文本列表。文本将按照文本列表中的值等于或小于玩家的互动指南等级时动态显示。如果互动指南的等级为3,那里将会显示"额外的载入画面(Extra Loading Screen Treasures)"。如果互动指南等级为8,那么文本内容将会是"昆卡的信使:鹦鹉副将(Kunkka's Courier: Lieutenant Squawkins)"。如果等级大于10级,那么那里将不会有可见的文本。

 
 Example "recent_rewardname"

{

"elementtype"    "textfield"
"text"           ""
"font"           "title"
"size"           "15"
"x"              "40"
"y"              "242"
"w"              "432"
"h"              "80"
"align"          "center"
"color"          "51 51 51"
"textlist_var"   "level"
"textlist_rule"  "<="
"textlist"
{
   "1"           "200% Battle Point Booster"
   "3"           "Extra Loading Screen Treasures"
   "4"           "Kunkka's Courier: Lieutenant Squawkins"
   "10"           "220% Battle Point Booster"
}

}

图像元素参数(Image Element Parameters)

图像元素用来显示一幅图。

参数:

指定页面上元素的位置。
  • "w"
元素宽度。图片将变形以适应宽度。
  • "h"
元素高度 。图片将变形以适应高度。
  • "X轴形变(scaleX)"
图像的水平形变量。默认值为1,负值将会翻转图像,所以-1将会沿水平轴画出完全反转的图像。
  • "Y轴形变(scaleY)"
图像的垂直形变量。默认值为1,负值将会翻转图像,所以-1将会沿垂直轴画出完全反转的图像。
  • "depth"
Either "front" or "back" ("front" if unspecified). Front elements will be placed in front of existing content in the template. Back will be behind. Bear in mind that the order that elements are specified is the order they're placed on the page.
  • "文件名(filename)"
图片的文件名。它应该与互动指南脚本文件同一路径下的图像文件名相同。或者你可以指定Dota 2's resource\flash3 相对路径下的存在的文件(例如:"images/heroes/beastmaster.png" 或者"images/items/abyssal_blade.png")
  • "color"
一个叠加在图像上的可选RGB值。
一个描述此图片的可选项。 点击Tooltip Parameters查看更多.
  • "link_to_page"
此值必须为互动指南中的一个页面的名称。点击此幅图将会跳转到这一页。
  • "link_to_url"
这个值必须是一个URL地址,点击这个文本将会弹出一个浏览器并在其中加载此链接。
  • "show_selection_tooltip"
如果为选项设置一个索引,在此文本上滚动鼠标将会弹出一个工具提示。这个工具提示将会基于选项中的"tooltip_data"项进行配置(并非属于此文本框)这允许自定义工具提示选项中的每一种选择。
  • "show_selection_index"
如果为选项设置一个索引,此图片将会改变它的显示方式来匹配选项中"show_selection_images"项指定的图片。
  • "imagestyle"
,如果你希望这个图片展示英雄的肖像动画,将其设置为"movie"。匹配选项中的'"show_selection_index"项的英雄值,来替代静态英雄图标。

线条元素参数(Line Element Parameters)

线条元素的用途是直接在页面上添加直线。 参数:

  • "color"
线条的RGB颜色值。
  • "thickness"
线条的粗细。
  • "start_pos"
开始位置,包含线条结束位置"x"和"y"的值。
  • "end_pos"
结束位置,包含线条结束位置"x"和"y"的值。
 
 Example "dividing_line"

{
   "elementtype"   "line"
   "color"         "120 117 108"
   "thickness"     "1"
   "start_pos"
   {
      "x"   "132"
      "y"   "87"
   }
   "end_pos"
   {
      "x"   "917"
      "y"   "87"
   }
}


选项元素参数(Selection Element Parameters)

选项需要多个参数来告诉Dota2如何储存并展示它们。如果选项在互动指南中的组合框中显示,那些参数可以被指定为下拉列表项自身。如果选项不是一个下拉列表,(例如,它被设置为按钮,或者被Dota2后台总的某个东西指定了)那么参数会被指定为"preregister_selections"的根项。

参数被如下的所有选项类型所共享:

  • selection_index
选项的索引。没有两个共享一个相同的索引。其他元素使用此索引来指向这个选项。
  • "choice_type"
选择的类型必须是当前选项正在使用的类型。可用的选择有:
  • "泛型(generic)" - 选项是一个字符串和相应的ID列表。字符串将被用于选择的显示,后台将会储存ID。
  • "英雄(hero)" - 选项必须是英雄的ID的列表。它们将和英雄的名称一起显示。
  • "所有英雄(all_heroes)" - 选项会自动填充为所有英雄的名称。
  • "所有物品(all_items") - 选项会自动填充为所有物品的名称。
  • "计数器(counter) - 由Dota2后台设定,而非由用户选择。显示为原始数据。
  • "账户ID(accountid)" - 由Dota2后台设定,而非由用户选择。显示为与账户ID匹配的Steam档案的档案名。
  • "choices"
此项必须为选项中所有有效选择的集合列表。对于"all_heroes", "all_items",和"counter"不是必须的。每个选择都应有一个文本描述和一个独有的选择键值。比如在英雄选项中,选择的键值必须是英雄ID。
  • "时间(time)"选项中的时间玩家不能改进行修改。应被设置为指定在"计时器(timers)"根项的名称。
  • "描述(description)"
这个选项的文本描述。
  • "后台描述(backend_desc)"
当使用联赛编辑页面查看你的互动指南时显示的对选项的描述。
  • "points"
点数的数值是有价值的。一般仅用作预测。未指定的话默认为0,也不会在界面中显示。
  • "选项元素的颜色(selection_element_color)"
除了在下拉列表中,选项可以由按钮来初始化。标准方法是玩家点击按钮时(比如"选择一支队伍"),然后页面上的一系列图片会高亮显示(比如一系列队伍的图标),一旦玩家点击了选项中一个队伍的图标,选项将会匹配队伍的ID。如果选项这么做的话,设置"selection_element_color"来给图片添加高亮RGB色值。
  • "selection_set"
一个可选的字串,用以在互动指南中与其它选项相匹配,确保在选项中没有两个相同的选择项。在全明星赛的投票很有用,你不会希望一个选手出现在同一场比赛的多个位置的。
  • "disable_set_rollup"
当在联赛页面浏览互动指南时,我们会将同一选项下的多个选项集合到一个单独的条目下。当玩家进行投票时,你会有一系列的选项(比如最想看到哪十个选手进行一场表演赛)当你需要分开查看集合中的选项,而不希望这个选项集合起来,在每个选项中重置selection_set这个键值。
  • "empty_string"
一个可选的字串。当玩家没有完成选择时,显示在"作出选择(Make A Selection)"位置。
  • "tooltip_data"
一个可选项,用以列出选项中所有的选择项,以及和选择项相关的工具提示数据。任何被初始化文本框都会显示此选项的值,并且为当前选择项使用工具提示数据。查看Tooltip Parameters以了解如何初始化一个独立的工具提示。
  • "show_selection_images"
此项列出选项中所有选择项,以及和它们相关的图像名称,这是一个可选的项目。任意设置为显示此图片的项目,将使用和当前的选择相关的图像。
  • "action"
"event_actions"列表根下的注册的操作。如果一个操作有列出的选项,一旦所有的选项都已经被玩家设置,那么这个操作将被认为全部完成了。目前第三方还不支持此操作。
  • "result"
用来指定正在进行的预测结果的选项。结果项包含预测的正确答案,并且包含点击"更多信息(More Info)"按钮弹出的所有信息(仅为下拉列表框选项显示)。结果项中的参数如下:combo box
  • "answer"
此项是正确答案的选择项的值。
  • "answers"
如果有多个正确答案,那么使用"answers"来替代"answer"。这应该是一个包含了选择项值的列表。(键值为选择项的值,键值只能为1)
  • "对话框信息(info_dialog)"
包含结果的额外信息的可选项。如果此项存在,"更多信息(More Info)"的按钮应该显示在下拉列表框界面的选项中。内部的参数为:
  • "比赛ID(match_id)"
如果设置为世界级比赛,"观看回放(Watch Replay)"按钮必须显示,点击它将会开始下载和回放。
  • "info"
包含结果的额外信息的字串。会在结果弹出的对话框中显示。
  • "result_override"
可选的用来重载弹出对话框中显示结果的字串。默认情况下,弹出的对话框会使用键值为"answer"文本描述来显示正确的答案。但是如果你有多个"answers",一般最好的解决方法是补充更多的自定义描述。(比如,张三和李四以100分的成绩并列第一)

下拉列表框中需要的参数还有:

指定一个元素在页面上的位置。
  • "textcolor"
下拉列表上的描述文本的RGB颜色值。
  • "bgcolor"
下拉列表自身的阴影背景RGB颜色值。
  • "combotextcolor"
下拉列表框中文本的RGB颜色值。
  • "style"
下拉列表框的视觉效果。目前只支持"s_CompendiumSelectionPlain"。


样例(Examples)

一个为神秘物品投票的选项。这是一个通用的选择类型,因此不需要用英雄ID来指定他们。选项的界面使用的是图片和按钮,而不使用下拉列表选项。因此它有被指定的选项元素颜色。

 
 Example "arcana_select_group1"

{
   "selection_index"         "301"
   "selection_element_color" "0 255 0"
   "time"                    "arcana"
   "description"             "YOUR PICK FROM GROUP 1"
   "choice_type"             "generic"
   "choices"
   {
      "Storm Spirit"      "1"
      "Faceless Void"     "2"
      "Huskar"            "3"
      "Pudge"             "4"
      "Spectre"           "5"
      "Jakiro"            "6"
      "Lone Druid"        "7"
   }
}

用来选择玩家最喜欢的战队的选项。此项使用一个下拉列表进行选择,但是这是"选择你最喜欢的队伍"页面中的一部分。这会使"description"的键值为空,并指定一个"backend_desc",以便我们能够轻松找到互动指南的统计报告。注意:队伍名称的开头有一个^^作为转义序列,以提示翻译系统这些字串不需要被翻译。

 
 Example "favorite_team_selection"

{
   "x"                 "100"
   "y"                 "20"
   "textcolor"         "93 57 93"
   "bgcolor"           "93 57 93"
   "combotextcolor"    "243 234 217"
   "selection_index"   "601"
   "time"              "mainevent"
   "backend_desc"      "Favorite Team"
   "choice_type"       "generic"
   "choices"
   {
      "^^Alliance"            "1"
      "^^Titan"               "2"
      "^^EG"                  "3"
      "^^Fnatic"              "4"
      "^^NewBee"              "5"
      "^^VG"                  "6"
      "^^Na'Vi"               "7"
      "^^DK"                  "8"
      "^^IG"                  "9"
      "^^C9"                  "10"
      "^^Empire"              "11"
      "^^Na'Vi.US"            "12"
      "^^Arrow Gaming"        "13"
      "^^LGD Gaming"          "14"
      "^^Mousesports"         "15"
      "^^Liquid"              "16"
      "^^MVP Phoenix"         "17"
      "^^CIS-Game"            "18"   
      "^^Virtus.Pro"          "19"
   }
}

预测哪位英雄会获得最高击杀数的下拉选框选项。既然一个是"所有英雄"属性的选项,那么这项就不需要一个选择项列表。当预测时间结束时,它会以英雄ID的形式储存结果。在这个案例中,斧王和小鱼人联系在一起。注意:它也包含一个可选的额外信息对话框版块。

 
 Example "hero_with_most_kills"

{
   "x"                "100"
   "y"                "150"
   "textcolor"        "93 57 93"
   "bgcolor"          "93 57 93"
   "combotextcolor"   "243 234 217"
   "selection_index"  "30"
   "description"      "HERO WITH THE MOST KILLS"
   "points"           "4"
   "choice_type"      "all_heroes"
   "time"             "qualifiers"
   "result"
   {
      "answers"
      {
         "2"          "1"   // Axe's Hero ID
         "93"         "1"   // Slark Hero ID
      }
      "info_dialog"
      {
         "info"       "Axe and Slark tied with 22 kills"
         "match_id"   "679787098"
      }
   }
}

自定义选项布局(Custom Selection Layouts)

如果你希望更多地控制你的选项界面,你可以手动配置组件而不使用"selection"元素。以下是一个在标准"selection" 元素中包含了自定义选项元素的组件。你可以用它作为你的起始组件:

 
 Example "custom_selection"

{
   "elementtype"   "container"
   "x"             "20"
   "y"             "200"
   "elementlist"
   {
      "combobox"
      {
         "elementtype"                     "combobox"
         "rx"                              "28"
         "ry"                              "17"
         "textcolor"                       "93 57 93"
         "bgcolor"                         "93 57 93"
         "combotextcolor"                  "243 234 217"
         "selection_index"                 "1021"
         "visibility_selection_index"      "1021"
         "visible_when_selection_unlocked" "1"
      }
      "points"
      {
         "elementtype"  "textfield"
         "rx"           "378"
         "ry"           "0"
         "text"         "%selpoints_1021% pts"
         "font"         "text"
         "size"         "12"
         "w"            "70"
         "h"            "20"
         "align"        "right"
         "color"        "93 57 93"
      }
      "description"
      {
         "elementtype"  "textfield"
         "rx"           "26"
         "ry"           "0"
         "text"         "%seldesc_1021%"
         "font"         "text"
         "size"         "12"
         "w"            "350"
         "h"            "20"
         "color"        "93 57 93"
      }
      "results"
      {
         "elementtype"   "container"
         "rx"            "0"
         "ry"            "0"
         "visibility_selection_index"       "1021"
         "visible_when_selection_results"   "1"
         "visible_when_selection_unlocked"  "0"
         "elementlist"
         {
            "yourselection"
            {
               "elementtype"   "textfield"
               "rx"            "27"
               "ry"            "17"
               "text"          "Your Selection:"
               "font"          "text"
               "size"          "12"
               "w"             "100"
               "h"             "20"
               "color"         "93 57 93"
               "resize_to_fit" "1"
            }
            "choice"
            {
               "elementtype"   "textfield"
               "relative_to"
               {
                  "target"      "custom_selection-results-yourselection"
                  "point"       "tr"
                  "rx"          "5"
                  "ry"          "0"
               }
               "text"         "%selection_1021%"
               "font"         "textbold"
               "size"         "12"
               "w"            "260"
               "h"            "20"
               "color"        "93 57 93"
               "glow"         "1"
            }
            "infobutton"
            {
               "elementtype"  "button"
               "style"        "ButtonTextualRightPassport"
               "text"         "Show More Info"
               "rx"           "330"
               "ry"           "12"
               "color"        "93 57 93"
               "command"      "popup_results:1021"
            }
            "checkmark"
            {
               "elementtype"  "image"
               "rx"           "0"
               "ry"           "5"
               "w"            "25"
               "h"            "25"
               "filename"     "checkmark.png"
               "depth"        "front"
               "visibility_selection_index"      "1021"
               "visible_when_selection_correct"   "1"
            }
         }
      }
   }
}

按钮元素参数(Button Element Parameters)

按钮元素是允许用户提供输入流的可点击按钮。一般作为下拉列表框来设置选项。


参数:

指定元素在页面上的位置。
  • "样式(style)"
按钮的样式。有效的样式为"button_transparent", "button_solid", "button_gradient", 以及"button_close"
  • "颜色(color)"
:可选的叠加在按钮上的RGB颜色值。目前有部分按钮样式支持颜色的设置。
  • "文本(text)"
按钮内部的文本。目前有部分按钮样式支持文本显示。 (比如"button_close" 就是一个X)
  • "对齐(align)"
如何使用按钮的横坐标轴,按钮会自动扩展来容纳文本。"left"会使按钮向右扩展(所以X轴会在按钮的左侧), "right"会使按钮向左扩展(所以X轴会在按钮的右侧),"center"会使按钮向两侧等量扩展(所以X轴会在按钮的中央。
  • "show_confirmdialog"
如果你希望在用户点击时显示一个"你确定吗?(Are You Sure?)"的对话框,那么这个值应为在对话框中显示的描述性文本。如果没有指定的话,这个按钮将在被点击后立即生效。
  • "selection_index"
如果你希望用户点击按钮时设置选项的值,这应该是你希望设置的选项的选项索引。选项必须在"preregister_selections"根项下被描述。仅当你也指定了"selection_elements" 或者"selection_force_to"时生效。
  • "selection_elements"
当用户点击按钮时应高亮显示的元素列表。每个元素必须有一个相应的选择项的值。 当用户点击高亮元素时,选项将被设置为选择的值。

当元素都被高亮显示时,按钮将自动转换为"取消(Cancel)"按钮。查看下面的例子来了解此项的用处。

  • "selection_force_to"
如果你想要这个按钮在用户点击时立即设置选项的值,这个值应为你想要设置的选择项的值。
  • "link_to_page"
如果你想让这个按钮在点击后在让用户跳转到观战指南中的一页,,那么它应该是观战指南目标页面的名字。
  • "link_to_url"
如果你想让这个按钮在点击后在让用户外部浏览器中打开一个URL地址,那么它应该是目标URL地址。
  • "tooltip_data"
描述按钮的工具提示的可选项目。 在 Tooltip Parameters中查看。
用来控制合适此元素是可见/不可见的。元素总是默认可见的。
  • "command"
如果你需要这个按钮在用户点击时发出指令,那么这个值应为"command"。以下是有效的指令:
  • "goto_tournament"
观战指南将会关闭,并且用户会被带至赛事直播的标签页。
  • "goto_offerings"
观战指南将会关闭,并且用户会被带至兵器库的献祭页面。
  • "compendium_buy_and_useX"
X必须是一个物品定义的索引。这会购买指定的物品。
  • "popup:X"
X必须是一个嵌入的页面的名字。对应的内嵌页面会被实例化。在Embedded Pages中查看更多。
  • "close:X"
X必须是一个嵌入的页面的名字。如果对应的内嵌页面当前可见,它将被关闭。在Embedded Pages中查看更多。
X必须有效的选择索引。 The standard Selection Results Dialog will be popped up with the results for the specified selection.
  • "request_heroes", "reroll_heroes", and "roll_daily_hero"
这些参数是用来处理Ti4的挑战的,现在已经弃用了。

一个选择最喜爱的英雄的样例按钮。当用户点击按钮时,一系列的英雄图标将会高亮显示,并允许用户直接点击他们想要选择的英雄。注意:这个按钮只在选项301为0时可见(未设置的)。

 
 Example "selecthero1"

{
   "elementtype"               "button"
   "style"                     "button_transparent"
   "text"                      "SELECT HERO"
   "x"                         "380"
   "y"                         "175"
   "align"                     "center"
   "color"                     "255 255 255"
   "visible_when_selection_is" "0"
   "selection_index"           "301"
   "selection_elements"
   {
      "heroicon1"      "15"
      "heroicon2"      "22"
      "heroicon3"      "36"
      "heroicon4"      "41"
      "heroicon5"      "50"
      "heroicon6"      "65"
      "heroicon7"      "77"
   }
}

一个简单地清楚指定选项的按钮的样例。注意:只有当选项301不为0时这个是可见的。

 
 Example "clearhero1"

{
   "elementtype"                "button"
   "style"                      "Button_Close"
   "x"                          "435"
   "y"                          "145"
   "align"                      "center"
   "color"                      "255 255 255"
   "selection_index"            "301"
   "selection_force_to"         "0"
   "visible_when_selection_not" "0"
}

计时器元件参数(Timer Element Parameters)

计时器元件是一种非互动性质的元件,用于显示距离达到一个特定时间点还有多长时间。一般使用于显示还有多久关闭玩家选择。 参数:

用于定位元件在页面的位置
  • "time"
在"timers"根目录下的时间条目的名称,计时器所指示的是该事件的时间。
  • "textcolor_title"
标题文本的RGB的颜色值。
  • "textcolor_sub"
副标题文本的RGB的颜色值。
  • "maxseconds"
如果你想设置一个计时器所能显示的最大时间,将这个值设置为你想要要的时间(以秒为单位)
  • "timerstyle"
可以被设置为"hero_challenge"用于24小时英雄挑战的计时器。暂时不做讨论
 
 Example "mainevent_timer"

{
   "elementtype"     "timer"
   "x"               "156"
   "y"               "525"
   "time"            "mainevent"
   "textcolor_title" "93 57 93"
   "textcolor_sub"   "93 57 93"
}

进度条元件参数(ProgressBar Element Parameters)

进度条是一种非互动性质的元件,用于显示完成某个目标的进度百分比。要注意进度条元件只会绘制进度条本身那一部分,因此最好把它们摆在图片的最上层作为潜在的未被填充的区域。

参数:

用于定位元件在页面的位置
  • "w"
元件宽度 这是进度条的最大宽度。实际的填充区域的宽度应当在0和这个值之间。
  • "h"
元件高度。
  • "data"
进度条所读取的数据源,目前的数据源是 "奖金池(prizepool)"以及 "互动指南等级(level)"
  • "min"
进度条为0时数据源的值,比这个值小的都不会显示。
  • "max"
进度条为100时数据源的值,比这个值大的都不会显示。
  • "color"
进度条填充区域的RGB值。
  • "filename"
I如果你想用一张图代替单一色来填充进度条,那么在这里指定一个图片的文件名。这个图片的位置要放在互动指南的script文件夹下的directory目录下。或者,你可以指定一个读取图片的路径,图片需要放在Dota 2's resource\flash3路径下( 类似"images/heroes/beastmaster.png" 或 "images/items/abyssal_blade.png")
 
 Example "main_progressbar"

{
   "elementtype"  "progressbar"
   "x"            "53"
   "y"            "190"
   "w"            "406"
   "h"            "21"
   "data"         "prizepool"
   "min"          "1600000"
   "max"          "6000000"
   "filename"     "compendium2014_bar_stretchgoalbar_filler.png"
}

视频元件参数(Video Element Parameters)

视频元件显示一个可播放的植入视频,注意这些视频的尺寸固定为494x278。

参数:

用于定位元件在页面的位置
  • "providers"
现在支持2个视频源:Youtube和优酷。
可以只用1个或者2个都用,中国dota2用户倾向于优先使用优酷视频,而其他地区倾向于优先使用youtube视频。
不同的视频源有着不同的值
举例说明,下方例子中的youtube ID来源于该链接: http://www.youtube.com/watch?v=Eqk9C1wVT0U
优酷的例子来源于该链接:http://player.youku.com/embed/XNzQ2OTgzNjc2


 
 Example "embedded_video"

{
   "elementtype"  "video"
   "x"            "9"
   "y"            "150"
   "providers"
   {
      "youtube"     "Eqk9C1wVT0U"
      "youku"       "XNzQ2OTgzNjc2"
   }
}

容器元件参数(Container Element Parameters)

容器元件是一个用于包含其它元件的不可视元件,对于规划自己的工作非常有帮助,在模板里是一个非常强大的工具。

参数:

用于定位元件在页面的位置。
  • "elementlist"
此项包含着1个或多个创建或放置于此容器中的子元件
  • 相对坐标: "rx" & "ry"
任何一个容器中的子元件都可以相对于容器的X/Y值选择自身的坐标。这允许你很简单的定位重复的色块和元件。要使用相对坐标,子元件应当使用 "rx" 和 "ry" 代替 "x"和 "y" .
用于控制该元件何时可见/不可见。元件默认一直可见。请注意包含于容器中的元件只有在容器本身是可见的情况下才会评估自身的可视性参数。因此,你可以在容器和容器内子元件中使用可视性参数来进行操作.

下方例子容器中包含3个元件。容器本身只有在选项“500”的值为0时才可见,因为那3个元件在容器中,它们同样服从该规则。要注意说明文档有额外的可视性规则,它在选项“600”不为0时才可见。该规则只有在容器本身可见的情况下才有效,所以说明文档只有在选项“500”为0而选项“600”不为0的情况下才可见。还需要注意锁定键也再使用相对坐标,所以它的X&Y坐标要偏离容器的X&Y坐标。(这里我们定为55,,100)

 
 Example "favorite_hero_unset"

{
   "elementtype"                 "container"
   "x"                           "50"
   "y"                           "100"
   "visibility_selection_index"  "500"
   "visible_when_selection_is"   "0"
   "elementlist"
   {
      "selection_hero"
      {
         ...
      }
      "lockbutton"
      {
         "rx"  "5"
         "ry"  "0"
         ...
      }
      "description_text"
      {
         "visibility_selection_index"  "600"
         "visible_when_selection_not"  "0"
         ...
      }
   }
}

模板元件参数(Template Element Parameters)

模板是键值的一部分,它可以轻易的通过你的脚本文件复制。它们尤其适于用来制作可维护的互动指南。注意模板必须仍然指定一个 "elementtype", 除非其它所有举例的对象都指定了 要高效率的制作模板,你必须了解它们在互动指南中是如何被应用的。最直观的方式是通过一个例子来了解。首先假设我们有一个模板叫做"template_pagetitle":

 
 Example "template_pagetitle"

{

"embedded_template" "1"
"elementtype"       "textfield"
"x"                 "0"
"y"                 "46"
"w"                 "512"
"h"                 "20"
"font"              "title"
"size"              "16"
"align"             "center"
"color"             "93 57 93"

}

这是一个对于我们的互动指南非常有用的模板—这是一个用于显示页面标题的文本框。它规定了一个页面标题除去具体文本内容外所需的所有元素。注意它除了设置了"embedded_template" 键,看上去就像一个普通的文本框,它使互动指南不创建文本框而是把它作为一个模板记录下来。现在我们可以在一个页面中用如下方式对模板进行说明:

 
 Example "page_example"

{

"elementlist"
{
"title"
{
"t"    "template_pagetitle"
"text" "MY BIG PAGE TITLE"
"size" "20"
}
}

}

当互动指南的系统发现了"t" 键, 便会开始搜寻响应名称的模板。一旦发现该模板,将所有该模板的键合并到此部件。任意派生的情况都会会重载模板内部的键值,所以在这种情况下,较大的size(20)会被留下,而模板中的较小的size(16)会被无视。上传模板分辨率脚本文件应该如下方所示: |in= "page_example"
{

"elementlist"
{
"title"
{
"text"         "MY BIG PAGE TITLE"
"size"         "20"
"elementtype"  "textfield"
"x"            "0"
"y"            "46"
"w"            "512"
"h"            "20"
"font"         "title"
"align"        "center"
"color"        "93 57 93"
}
}

} }} 注意"embedded_template"键并没有记录到实例中,因此这个实例不会成为一个模板。如果你有从别的模板中派生出来的模板,你需要确认它们也设置了"embedded_template"键值,这样它们才不会从父模板那里继承这个值过来。

定义(Defines)

模板也包含了叫做"required_defines"的项目。这一项包含一个任何派生实例的模板必须提供值的定义列表。当模板被互动指南系统解析时,模板中派生定义的值会被替换为实例化定义的值。 定义的名称必须为如下的脚本格式:

  • %作为前缀和后缀。
  • %def_%defloc_作为前缀。如果定义包含需要翻译的文本,使用%defloc_,否则使用%def_

为了便于理解,我们看一个例子。我们希望互动指南的每一页都有一个标题,还有一个不错的边界图像。我们可以按如下所示定义一个模板。它包含文本框和图像,以及文本框内部文本的定义。注意:我们希望标题文本是可翻译的,所以我们使用 %defloc_作为定义的开始。

 
 Example "titlesection_template"

{

"elementtype"        "container"
"required_defines"
{
"%defloc_title%"  "1"
}
"elementlist"
{
"titletext"
{
"t"            "t_page_title"
"text"         "%defloc_title%"
}
"background_image"
{
"elementtype"  "image"
"filename"     "compendium2014_titlebackground.png"
"x"            "185"
"y"            "35"
"w"            "142"
"h"            "42"
"depth"        "back"
}
}

}

我们可以按如下方法实例化此模板:

 
 Example "page_example"

{

"elementlist"
{
"title"
{
"t"    "titlesection_template"
"defines"
{
"%defloc_title%" "MY PAGE TITLE"
}
}
}

}

这个页面现在会显示标题文本框和图片。实例中必须包含一个在模板的"required_defines"中列出的定义好的"defines"块。使用定义用如下的好处:

  • 实例不需要知道模板额内部结构。在上面的例子中,"titlesection_template"模板中的"title"实例不需要包含一个匹配元素列表以在"titletext"文本框中置入正确的文本值。这允许模板被重新设计而不破坏任何派生模板。
  • 定义是有错误检查机制的,所以不能忘记在实例中指定一个模板操作必要的定义。
  • 定义能够在模板中的多个位置被使用,指定实例以减少数据错误的可能。

如下是一个略微复杂的例子。注意在复合文本框如何使用%defloc_name%定义。它也使用%def_作为前缀,因为它是一个图像文件名,不应该被翻译。

 
 Example "template_qualifier_attendee"

{

"embedded_template"   "1"
"elementtype"         "container"
"required_defines"
{
"%defloc_name%"    "1"
"%def_logo%"       "1"
}
"elementlist"
{
"name"
{
"t"         "attendee_name"
"text"      "%defloc_name%"
}
"logo"
{
"t"         "img_teambig"
"filename"  "%def_logo%"
}
"tiny_name"
{
"t"         "attendee_name"
"size"      "8"
"text"      "%defloc_name%"
}
}

}

嵌套模板(Nested Templates)

一个从其它模板派生出新模板的方法。例如,你可能想要一个根文本框模板来设置字体和颜色,然后一些派生模板用作标题、副标题以及描述块。嵌套模板内部的键值会与其他值一样合并到模板链中,低级模板中的键值会重载高级模板中的键值。

调试(Debugging)

自由地使用模板和定义会导致当你的互动指南脚本文件报错时难以追踪错误的来源。"test_compendium_writeposttemplates"是一个在调试错误时很有帮助的工具。如果你在Dota2控制台中将其设置为1,运行"test_compendium"指令,在解析完成所有的模板后,互动指南系统会在硬盘上保存你的脚本文件。

你可以在Dota2的\dota\compendium_datafile.txt路径下找到解析完的脚本文件。

泛元件参数

泛元件是嵌入互动指南.FLA文件中的特定的界面元素。目前其唯一用处是创建可卷动的显示元件(比如带有滚动条的嵌入窗口).

基本参数部分

某些参数对不止一种元件类型有效。该部分包括一个标准参数的列表。

位置参数

所有元件都可以用数种方法在他们所在的页面上定位。注意页面大小是512x576像素(在全屏16x9上显示),并且根据屏幕分辨率来调整尺寸(在其他分辨率下图像与设备同宽).

最简单的方法是直接使用X与Y坐标在页面上定位:

  • "x"
元件X坐标
  • "y"
元件Y坐标


如果该元件位于一个容器元件中,你可以使用相对坐标:

  • "rx"
相对X坐标,使用父容器X坐标的偏移量
  • "ry"
相对Y坐标,使用父容器Y坐标的偏移量


此外,元件也能相对于页面上其他元件来定位:

  • "relative_to"
包括以下要素,解释如何定位这个元件:
  • "target"
目标相关元件的名称。目标必须位于这个页面上,并且必须在页面元件列表先于该元件被指定。如果目标元件位于一个容器中,你必须加上容器的名字,使用连接符 '-',例如"custom_selection-results-selectionbutton"是一个名为"selectionbutton"的元件,位于容器"results"中,且该容器位于容器"custom_selection"中
  • "point"
目标元件上的点,用来作为参考点定位该元件。必须是以下点中的一个: "tl", "tr", "bl", "br", "tm", "bm", "lm", or "rm" (t/b/l/r/m分别代表上/下/左/右/中,即分别对应左上、右上、左下、右下、上中、下中、左中、右中)。所以指定"rm"会使用目标元件的右中点作为参考点
  • "rx"
相对X坐标,使用参考点偏移量
  • "ry"
相对Y坐标,使用参考点偏移量

可见性参数

对可见性的控制多种多样。在一个元件中组合多种可见度控制可能会造成混淆,所以只要这样想:元件默认都是可见的,下列条件中一旦任一个不合就会变得不可见

  • "visible_when_prizepool_less"
元件只有在奖金池低于指定值时才会显示
  • "visible_when_prizepool_more"
元件只有在奖金池高于指定值时才会显示
  • "visible_when_level_less"
元件只有在互动指南等级低于指定值时才会显示
  • "visible_when_level_more"
元件只有在互动指南等级高于指定值时才会显示
  • "visibility_selection_index"
这是一个用于下面两个基于选项的可见性值的可见度选择索引
  • "visible_when_selection_is"
元件只有在可见度选项当前选定值符合指定值时才会显示
  • "visible_when_selection_not"
元件只有在可见度选项当前选定值不符合指定值时才会显示
  • "visible_when_selection_less"
元件只有在可见度选项当前选定值低于指定值时才会显示
  • "visible_when_selection_more"
元件只有在可见度选项当前选定值高于指定值时才会显示
  • "visible_when_selection_locked"
元件只有在可见度选项锁定时才会显示(比如当前时间高于该选项的"time" field")
  • "visible_when_selection_unlocked"
元件只有在可见度选项未锁定时才会显示(比如当前时间低于该选项的 "time" field")
  • "visible_when_selection_results"
元件只有在可见度选项拥有结果部件时才会显示
  • "visible_when_selection_correct"
元件只有在一个可见度选项的答案与手册所有者的选择相符时才会显示
  • "visible_after_time"
数值为互动指南根目录 "timers" 部件中一个计时器(timer)的名字,元件只有在当前时间超过计时器时间才会可见
  • "visible_until_time"
数值为互动指南根目录 "timers" 部件中一个计时器(timer)的名字,元件只有在当前时间还未超过计时器时间才会可见
  • "visible_when_game_live"
元件只有在该联赛有正在直播比赛时才会可见
  • "visible_when_action_started"
数值为一个有效的动作(Action)ID,元件只有在该动作开始后才会可见

提示信息参数

提示信息可以使用文本和图像,并且可以包括以下增强设置。选项也可以为每个可用选择包括一个提示信息部件-文本区域显示选项的值并且在鼠标悬停时显示对应的提示信息

以下设置可以用于调整提示信息:

  • "style"
提示信息的输出样式,必须为"tooltip_titleandtext", "tooltip_titletextandcountryflag",或者一个嵌入页面的名字,对应的嵌入页面将被实例化。查询嵌入页面获取更多信息。当使用嵌入页面作为提示信息是,其余的提示信息参数将被忽略(你可以随意自定义你的嵌入页面)
  • "tooltip_title"
提示信息的标题文本
  • "tooltip_text"
提示信息的主体文本
  • "color_title"
标题文本的颜色RGB值
  • "color_text"
主体文本的颜色RGB值
  • "color_bg"
提示信息背景的颜色RGB值
  • "filename"
一个图像的文件名,只有当提示信息风格含有图像时才需要,"tooltip_titletextandcountryflag" 包括一个小国旗

文本转义序列

文本元件可以在其 "text"(文本)值中使用转义序列,转义序列是在屏幕上显示时可以被动态信息取代的文本。某些转义序列需要额外指定"min""max" 信息

可用转义序列:

  • %prizepool%
将被联赛当前奖金池的数值所替代
  • %prizepool_togo%
将被联赛当前奖金池和文本区域的"max"值的区别所替代
  • %prizepool_perc%
将被联赛当前奖金池的百分比所取代,位于文本区域的"min""max"数值之间
  • %prizepool_owner%
将被互动指南所有者捐献到奖金池的金额所替代
  • %selection_X%
X必须为一个有效的选项索引,转义序列将基于选项类型被选项的当前值所替代
  • %selpoints_X%
X必须为一个有效的选项索引,转义序列将被选项的点值所替代
  • %seldesc_X%
X必须为一个有效的选项索引,转义序列将被选项的描述记录所替代
  • %selanswer_X%
X必须为一个有效的选项索引,转义序列将被选项的结果部分的第一个答案所替代
  • %owner%
将被指南所有者的Steam用户名所替代
  • %level%
将被互动指南的当前等级所替代
  • %levelup_pts%
将被达到下一个互动指南等级所需的互动指南点数所替代
  • %textlistvalue_X%
X必须为有效的文本列表的名字,将被列表中当前可见的文本所替代
  • %price_X%
X必须为Dota2虚拟道具的定义索引,将显示该物品在Dota 2商店的价格,使用用户本土货币
  • %action_X%
X必须为有效的动作ID,将被用户通过指定动作赚取的点数所替代
  • %actionmax_X%
X必须为有效的动作ID,将被指定动作最大可能获得的点数所替代
  • %actionscore_X%
X必须为有效的动作ID,将被用户指定动作的得分所替代

一个有效的转义序列实例,内容写入文本区域的"text"键值:

 
 Example "text" "$%prizepool%"

"text" "目标$%prizepool_togo%"
"text" "$%prizepool_owner%"
"text" "来自%owner%"
"text" "通过10局你最喜爱的英雄,你赢得了%selection_65211%"
"text" "%levelup_pts%点来升到下一等级"
"text" "等级%textlistvalue_mytextlist%"

嵌入页面

嵌入页面是一个强大的工具,用于给互动指南增加额外的信息层面和交互性。嵌入页面如同普通页面一样被安置在根目录"pages"部分,添加一些参数来描述嵌入页面如何显示。随后基本页面中的元件可以设置成触发嵌入页面的显示

目前触发嵌入页面显示的方法如下:

  • 设置一个按钮的"command"(指令)为"popup:<嵌入页面名称>"
  • 设置一个提示信息的"style"(样式)为嵌入页面的名称

除了基本的页面参数,嵌入页面还拥有以下参数:

  • "modal"
使得嵌入页面显示时表现为一个模态窗口。互动指南的其余部分将禁用。页面会在用户点击页面外时关闭
  • "positioning_rule"
设置该嵌入页面定位的方式,必须为以下几种:
  • "fixed"
页面将使用X/Y坐标定位,使用"x"和"y"作为参数
  • "centered_on_left_page"
页面将在书的左页中部显示,使用"x"和"y"参数指定偏移值
  • "centered_on_right_page"
页面将在书的右页中部显示,使用"x"和"y"参数指定偏移值
  • "centered_on_book"
页面将在书的中部显示,使用"x"和"y"参数指定偏移值
  • "as_tooltip"
页面作为提示信息使用,相对与提示信息对应的元件来定位,需要在"as_tooltip_data"部分指定额外数据(见下方).
  • "resize_elements"
一段有关该页面中需要调整尺寸的元件列表以及如何调整它们的定义。条目中必须有与嵌入页面"elementlist"中所对应的特定名字。此功能通常用于需要动态扩展其包含的文本内容的提示信息-对于这些情况,提示信息的背景图像需要调整尺寸来包含文本
要调整尺寸的图像必须在根目录"precache"部分被预读,否则他们在第一次显示时将会被错误安置(就像图像不同步载入一样)。在"resize_elements"部分的元件包括以下参数:
  • "horiz_rule"
这个规则描述元件水平放大的方向,可以设置成"none"(无), "left"(左),或者"right"(右)。例如,如果被设置成"right",元件将只会从右侧缩放来适应嵌入页面的宽度
  • "vert_rule"
这个规则描述元件垂直放大的方向,可以设置成"none"(无), "up"(上),或者"down"(下). 例如,如果被设置成"down",元件将只会从下方缩放来适应嵌入页面的高度
  • "indent_x"
调整元件尺寸时一个可选的额外宽度,对需要在内容和图像边缘留出空间时很有用
  • "indent_y"
调整元件尺寸时一个可选的额外高度,对需要在内容和图像边缘留出空间时很有用
  • "slice_x"
如果需要调整尺寸的元件是一个图像,你可以使用这个来执行一个[9 way slice],对于清晰缩放边框、矩形等很有用。这个X值用来作为两侧的缩进值创建两个纵向切片
  • "slice_y"
如果需要调整尺寸的元件是一个图像,你可以使用这个来执行一个[9 way slice],对于清晰缩放边框、矩形等很有用。这个Y值用来作为两侧的缩进值创建两个横向切片
  • "as_tooltip_data"
如果嵌入页面用来作为提示信息,这个部分是必要的。他包括了接下来用来描述如何操作处理提示信息的相关参数:
  • "diamond"
用来作为链接嵌入页面和显示提示信息的原元件的箭头的图像文件名。应为菱形。这样就可以作为四方向箭头使用
  • "desired"
提示信息的需求位置与原弹出提示信息的元件相关。必须为以下类型:"at_element_tl", "at_element_tr", "at_element_bl", "at_element_br", "at_element_tm", "at_element_bm", "at_element_lm", "at_element_rm" - TL = 左上, BR = 右下, TM = 上中, RM = 右中, 依此类推。提示信息会尝试将自己放置在指定位置。如果提示信息无法在该位置适应屏幕,提示信息将尝试更换元件周围合适的其他位置
  • "indent_x"
一个可选的横向数值,用来从原元件推离提示信息。调整该项通常需要校准调整尺寸的元件的缩进,以及菱形的宽度
  • "indent_y"
一个可选的纵向数值,用来从原元件推离提示信息。调整该项通常需要校准调整尺寸的元件的缩进,以及菱形的宽度

这是一个示例模板,使用一个嵌入页面作为提示信息。它包括一个短标题和描述字符串,以及一个调整尺寸来包括前两者的背景图像。它使用两块文本的定义,这样可以简单的使用提示信息覆盖元件中右侧的文本

在文本区域的"text"键值使用转义序列的示例:

 
 Example "embedded_tt_base"

{
   "positioning_rule"   "as_tooltip"
   "as_tooltip_data"   
   {
      "diamond"         "bg_diamond"
      "desired"         "at_element_lm"
      "indent_x"         "5"
      "indent_y"         "5"
   }
   "resize_elements"
   {
      "bg"
      {
         "horiz_rule"    "right"
         "vert_rule"     "down"
         "indent_x"      "15"
         "indent_y"      "15"
         "slice_x"       "6"
         "slice_y"       "6"
      }
   }
   "elementlist"
   {
      "nodename"
      {
         "elementtype"   "textfield"
         "font"          "textbold"
         "size"          "9"
         "x"             "0"
         "y"             "0"
         "w"             "500"
         "h"             "14"
         "text"          "%defloc_title%"
         "color"         "190 187 178"
         "depth"         "front"
         "resize_to_fit" "1"
      }
      "description"
      {
         "elementtype"   "textfield"
         "font"          "textbold"
         "size"          "9"
         "x"             "0"
         "y"             "15"
         "w"             "150"
         "h"             "400"
         "text"          "%defloc_desc%"
         "color"         "123 118 112"
         "depth"         "front"
         "resize_to_fit" "1"
      }
      "bg_diamond"
      {
         "elementtype"   "image"
         "w"             "25"
         "h"             "25"
         "depth"         "back"
         "filename"      "tooltip_diamondpointer.png"
      }
      "bg"
      {
         "elementtype"   "image"
         "x"             "0"
         "y"             "0"
         "w"             "50"
         "h"             "28"
         "depth"         "back"
         "filename"      "tooltip_background.png"      // 已经在根目录'precache'部分被预读
      }
   }
}

这是提示信息背景图像,将被调整尺寸(使用9-way slice法)来容纳文本:Tooltip_background.png

这是提示信息菱形图像,用来生成从元件到提示信息的箭头:Tooltip_diamondpointer.png