├── .github └── workflows │ └── build.yml ├── .gitignore ├── .travis.yml ├── .vuepress ├── config.js ├── list.js └── styles │ ├── index.styl │ └── palette.styl ├── README.md ├── ci └── www │ ├── CNAME │ └── favicon.ico ├── contribution.md ├── foreign.md ├── manual ├── array.md ├── continued_event.md ├── documents │ ├── README.md │ ├── action-control-flow.md │ ├── action-effect-text.md │ ├── action-match.md │ ├── action-player.md │ ├── action-team.md │ ├── action-variable.md │ ├── contributor.md │ ├── event.md │ ├── icon.md │ ├── string.md │ ├── value-array.md │ ├── value-constant.md │ ├── value-effect-and-text-id.md │ ├── value-event-info.md │ ├── value-logical-operator.md │ ├── value-match-map-team.md │ ├── value-math.md │ ├── value-player.md │ ├── value-variable.md │ └── value-vector-angle.md └── vector.md ├── package.json └── tutorial ├── 2d.md ├── aiming_and_perspective.md ├── common.md ├── core.md ├── mutation.md ├── observer.md ├── use_styler.md └── zero_based.md /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: build 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | 7 | jobs: 8 | build: 9 | 10 | runs-on: ubuntu-latest 11 | 12 | strategy: 13 | matrix: 14 | node-version: [12.x] 15 | steps: 16 | - uses: actions/checkout@v2 17 | - name: Use Node.js ${{ matrix.node-version }} 18 | uses: actions/setup-node@v2 19 | with: 20 | node-version: ${{ matrix.node-version }} 21 | - name: Install Yarn 22 | run: npm i -g yarn 23 | - name: Install and build 24 | run: | 25 | mkdir -p $GITHUB_WORKSPACE/build 26 | yarn 27 | yarn build 28 | mv $GITHUB_WORKSPACE/.vuepress/dist/* $GITHUB_WORKSPACE/build 29 | cp $GITHUB_WORKSPACE/ci/www/* $GITHUB_WORKSPACE/build/ 30 | - name: Deploy 31 | uses: JamesIves/github-pages-deploy-action@4.1.4 32 | with: 33 | branch: gh-pages 34 | folder: build -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /buildyarn.lock 3 | package-lock.json 4 | yarn.lock 5 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 'node' 4 | 5 | notifications: 6 | email: false 7 | 8 | cache: 9 | yarn: true 10 | 11 | before_install: 12 | - export TZ="Asia/Shanghai" 13 | - date 14 | 15 | install: 16 | - curl -o- -L https://yarnpkg.com/install.sh | bash 17 | - export PATH="$HOME/.yarn/bin:$PATH" 18 | 19 | script: 20 | - bash ci/build.sh 21 | 22 | env: 23 | global: 24 | - secure: "QwDK+pc0qFr8ukY01ASnDNLCPzyInK2NYB6Thdvg3HV2hUeAeS6FdQaWjoqQ06UHVI/FRn+1fO0JuvTRsJUDlhpinDE8y8PfHbXbIuwA80kfQ1uU9p/UPXHI9i7iJ94XK5IoLjj/kTschqOI70zQaBEzSc2w3LK8uIOkJCCHOe91T+njvEHH9gxzZPn7wTiCPA4Z/DttVu+mzLvW9AhH5CyE67LhaeBwzgaP3U/peBplO6YtcHA+Wnvfg6Tzxocs/nEDDKHEifMS/VEs8q12MjGAQJw/jWpHa77ngnryKygvAgjBWX/9uufiaA8xqUU2NQX5wka3R6qijieygG/kc6fjLjeIBzjyKOHvXjhlOtHQm6+njebFh9x74b9pk4P7maUkCumIl6IqE7ogt7sqok7aSkvX5lI8k4d5UmouQW+m4fQNLBlQrSFl2B43vq/RnCUp5VZ2AS02Ynq/fDfxWqlLG8uV92mNiy9iEG1cU+FvLwUGTHQJT1CxYrIuGstpevLh8RGxXzW4IltSCqMshgJDdj40ifR//w0+DF3P24ppC61TlPkWGA5zMvS1BdvUtF7nie8Dy5HiljeKlS8hYCNXOVmlQEz+uMd56Fcnpz4Jl0mx83z6kKD/eXPFUwkSbVuAgMqxw7x28o3R3x9j4nHiXKY83nwI2QSJzSpUEKU=" -------------------------------------------------------------------------------- /.vuepress/config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | base: "/", 3 | title: "熔火工坊文档", 4 | description: "地图工坊,守望先锋,地图工坊教程,地图工坊文档,熔火工坊文档", 5 | markdown: { 6 | lineNumbers: true, 7 | toc: { 8 | includeLevel: [1, 2, 3] 9 | } 10 | }, 11 | plugins: [ 12 | '@vuepress/back-to-top', 13 | ['vuepress-plugin-baidu-google-analytics', { 14 | hm: '964e6c85881afa4ed3d6bbfcbe4bac27', 15 | ignore_hash: true 16 | }], 17 | ['vuepress-plugin-copy-via-link', { 18 | start: '#copy:', 19 | message: '复制成功', 20 | manual_copy: '复制失败,请手动复制' 21 | }] 22 | ], 23 | themeConfig: { 24 | repo: "GKD-OW/docs", 25 | editLinks: true, 26 | lang: 'zh-CN', 27 | editLinkText: '在 GitHub 上编辑', 28 | sidebarDepth: 1, 29 | lastUpdated: '上次更新', 30 | searchMaxSuggestions: 10, 31 | nav: [{ 32 | text: '文档', 33 | link: '/' 34 | }, { 35 | text: '熔火工坊', 36 | link: 'https://www.owmod.net/' 37 | }, { 38 | text: 'QQ群', 39 | link: 'https://jq.qq.com/?_wv=1027&k=5J2QSeu' 40 | }], 41 | sidebar: require('./list') 42 | } 43 | }; -------------------------------------------------------------------------------- /.vuepress/list.js: -------------------------------------------------------------------------------- 1 | module.exports = [{ 2 | title: '概述', 3 | children: [ 4 | '/', 5 | '/contribution.md' 6 | ] 7 | }, { 8 | title: '教程', 9 | children: [ 10 | '/tutorial/zero_based', 11 | '/tutorial/common', 12 | '/tutorial/mutation', 13 | '/tutorial/2d', 14 | '/tutorial/aiming_and_perspective', 15 | '/tutorial/observer', 16 | '/tutorial/core', 17 | '/tutorial/use_styler' 18 | ] 19 | }, { 20 | title: '手册', 21 | children: [ 22 | { 23 | title: '命令手册(中英对照)', 24 | path: '/manual/documents', 25 | children: [ 26 | '/manual/documents/event.md', 27 | { 28 | title: '值(Value)', 29 | children: [ 30 | "/manual/documents/value-vector-angle.md", 31 | "/manual/documents/value-effect-and-text-id.md", 32 | "/manual/documents/value-logical-operator.md", 33 | "/manual/documents/value-math.md", 34 | "/manual/documents/value-event-info.md", 35 | "/manual/documents/value-player.md", 36 | "/manual/documents/value-match-map-team.md", 37 | "/manual/documents/value-array.md", 38 | "/manual/documents/value-variable.md", 39 | "/manual/documents/value-constant.md" 40 | ] 41 | }, { 42 | title: '动作(Action)', 43 | children: [ 44 | "/manual/documents/action-control-flow.md", 45 | "/manual/documents/action-player.md", 46 | "/manual/documents/action-team.md", 47 | "/manual/documents/action-variable.md", 48 | "/manual/documents/action-match.md", 49 | "/manual/documents/action-effect-text.md" 50 | ] 51 | }, 52 | "/manual/documents/string.md", 53 | { 54 | title: "效果与音效(Effect And Sound)", 55 | path: "https://www.yuque.com/zhaohua-zgi3w/overwatch-document/tykhqq" 56 | }, 57 | "/manual/documents/icon.md", 58 | "/manual/documents/contributor.md" 59 | ] 60 | }, 61 | '/manual/array', 62 | '/manual/continued_event', 63 | '/manual/vector' 64 | ] 65 | }, { 66 | title: '工具', 67 | path: 'https://tools.owmod.net/' 68 | }, { 69 | title: '国服作品', 70 | path: 'https://www.owmod.net/' 71 | }, 72 | '/foreign' 73 | ]; 74 | -------------------------------------------------------------------------------- /.vuepress/styles/index.styl: -------------------------------------------------------------------------------- 1 | .page .theme-default-content, 2 | .page .page-edit, 3 | .page .page-nav { 4 | max-width: 1200px; 5 | padding-left: 3em; 6 | padding-right: 3em; 7 | } 8 | 9 | table { 10 | min-width: 100%; 11 | } 12 | 13 | .page-manual table tr > td:first-child { 14 | min-width: 160px; 15 | width: 160px; 16 | } 17 | .page-manual table tr > td:nth-child(2) { 18 | min-width: 230px; 19 | } 20 | 21 | .page-works table tr > td:first-child { 22 | width: 160px; 23 | } 24 | .page-works table tr > td:nth-child(2) { 25 | min-width: 120px; 26 | } 27 | .page-works table tr > td:nth-child(3) { 28 | min-width: 120px; 29 | } 30 | .page-works table tr > td:nth-child(4), 31 | .page-works table tr > td:nth-child(5) { 32 | width: 80px; 33 | } 34 | 35 | @media (max-width: 959px) { 36 | .page .theme-default-content, 37 | .page .page-edit, 38 | .page .page-nav { 39 | padding-left: 2em; 40 | padding-right: 2em; 41 | } 42 | .page-manual table tr > td:first-child { 43 | min-width: 80px; 44 | width: 80px; 45 | } 46 | .page-manual table tr > td:nth-child(2) { 47 | min-width: auto; 48 | } 49 | .page-works table tr > td:first-child { 50 | min-width: 80px; 51 | width: 80px; 52 | } 53 | .page-works table tr > td:nth-child(2) { 54 | min-width: 200px; 55 | } 56 | .page-works table tr > td:nth-child(3), 57 | .page-works table tr > td:nth-child(4) { 58 | width: 80px; 59 | } 60 | } -------------------------------------------------------------------------------- /.vuepress/styles/palette.styl: -------------------------------------------------------------------------------- 1 | $accentColor = #448aff 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 概述 3 | lang: zh-CN 4 | --- 5 | 6 | # 熔火工坊文档 7 | 8 | 这是一个OW地图工坊的相关文档网站。 9 | 10 | ## 教程 11 | 12 | | 名称 | 难度 | 说明 | 13 | | --- | --- | --- | 14 | | [零基础入门](tutorial/zero_based.md) | ★☆☆☆☆ | 入门教程,介绍了规则、变量的基本概念和使用 | 15 | | [常见功能](tutorial/common.md) | ★★☆☆☆ | 一些常见的功能是怎么做的 | 16 | | [生化模式](tutorial/mutation.md) | ★★★☆☆ | 一个简单的生化模式是怎么一步一步做出来的 | 17 | | [2D格斗解析](tutorial/2d.md) | ★★☆☆☆ | 解析2D横版格斗的基本规则 | 18 | | [自瞄和透视解析](tutorial/aiming_and_perspective.md) | ★★☆☆☆ | 解析最基本的自瞄和透视的基本规则 | 19 | | [应用观察者模式思想](tutorial/observer.md) | ★★★★☆ | 使用观察者模式的思想,方便我们编写规则 | 20 | | [运行机制推测](tutorial/core.md) | ★★★★★ | 地图工坊内部机制推测 | 21 | 22 | 另外,Bilibili的UP主也有制作[视频教程](https://www.bilibili.com/video/av53276348),您可以前往观看。 23 | 24 | ## 手册 25 | 26 | 一些功能的查阅。 27 | 28 | ### 目录 29 | 30 | | 名称 | 说明 | 31 | | --- | --- | 32 | | [手册](manual/documents/README.md) | 由昭华整理的官方功能手册,方便快速查阅相关功能 | 33 | | [数组](manual/array.md) | 数组基本使用 | 34 | | [持续事件](manual/continued_event.md) | 持续事件基本使用 | 35 | | [矢量和向量](manual/vector.md) | 矢量向量基本使用和基本运算 | 36 | 37 | ### 技巧和提示 38 | 39 | * 大部分时候,需要使用“位置”,你可以直接使用“事件玩家”而不必使用“位置(事件玩家)”。 40 | * 某些操作连续进行可能会无法达到预期效果。如果你确认规则已运行且编写正确,可以尝试在无效动作前等待很少一段时间。(原因已经在[运行机制推测](tutorial/core.md)中有所推测) 41 | * 有的功能会有“重新赋值”选项,例如HUD文本、效果等。若你在相应内容上使用了变量,并且开启了“重新赋值”,那么当变量变化时,它们就会自动变化,不需要手动重新创建。但是,若你使用的不是变量,则需要手动重新创建。 42 | * “在视野内”表示一个以准心为顶点的圆锥体视野,而“在视线内”则表示不隔墙能看见。 43 | * 有一些功能的翻译并不准确,如“已重生”实际指的是“玩家是否选择英雄”。请先阅读手册。 44 | * 在"持续 - 全局" 事件中用循环连续创建效果可能导致部分效果创建失败,可使用条件 存活玩家数量(所有队伍)>0 来避免这种情况。 45 | 46 | ## 代码编写辅助工具 47 | 48 | 因为工坊支持代码转存及粘贴,所以玩家可以使用第三方工具直接编写代码,以此衍生出许多辅助工具,总结如下,需要注意的是,这些工具多为开源版本,作者可能会随时弃坑: 49 | 50 | ### 代码高亮 51 | 52 | | 名称 | 平台 | GitHub | 说明 | 53 | | --- | --- | --- | --- | 54 | | [owlang](https://marketplace.visualstudio.com/items?itemName=vicerust.overwatch) | VSCode | [vicerust/owlang](https://github.com/vicerust/owlang) | VSCode 的代码高亮、补全插件 | 55 | | [Overwatch Workshop Syntax Highlight](https://github.com/Mike111177/Overwatch-Workshop-Syntax-Highlight) | Sublime text | [Mike111177/Overwatch-Workshop-Syntax-Highlight](https://github.com/Mike111177/Overwatch-Workshop-Syntax-Highlight) | Sublime text的代码高亮样式 | 56 | 57 | ### 解释器 58 | 59 | | 语言 | GitHub | 说明 | 60 | | --- | --- | --- | 61 | | C# | [ItsDeltin/Overwatch-Script-To-Workshop](https://github.com/ItsDeltin/Overwatch-Script-To-Workshop) | 完成度最高,对其他版本解释器的开发提供了很有价值的参考 | 62 | | C# | [TrueCP6/ostw-method-library](https://github.com/TrueCP6/ostw-method-library) | 上一解释器的函数库 | 63 | | Python | [Zezombye/overpy](https://github.com/Zezombye/overpy) | 看上去很强大 | 64 | | Python | [adapap/OWScript](https://github.com/adapap/OWScript) | 已经许久没更新 | 65 | | Python | [fredi-68/OverScript](https://github.com/fredi-68/OverScript) | 已经许久没更新 | 66 | | Typescript | [GKD-OW/OverTS](https://github.com/GKD-OW/OverTS) | 使用方式[见此](https://github.com/GKD-OW/OverTS-Template) | 67 | | Typescript | [Beier/Omnium](https://github.com/Beier/Omnium) | 已经许久没更新 | 68 | | Java | [Groodion/Overwatch-Code](https://github.com/Groodion/Overwatch-Code) | 甚至还有一个界面版转换工具,已经许久没更新 | 69 | 70 | ### 可视化工具 71 | 72 | 可视化工具均未有完成品,仅在此记录以待关注 73 | 74 | * [fredi-68/OWWvisualScripting](https://github.com/fredi-68/OWWvisualScripting) 75 | 76 | ### 其他 77 | 78 | * [一个不使用射线检测球体碰撞的思路](https://github.com/Corrade/OW-workshop/tree/master/hitscan_spheres) 79 | 80 | ## 作品 81 | 82 | 国服作品请前往[owmod.net](https://www.owmod.net)浏览或提交。 83 | 84 | 部分外服优秀作品可见[外服作品](foregin.md)。 85 | 86 | ## 参与 87 | 88 | 本项目所有人均可参与。参与方式: 89 | 90 | * 建议加入QQ群[OW地图工坊交流](https://jq.qq.com/?_wv=1027&k=5J2QSeu),群号码:464623297。 91 | * 另一个交流群:[守望先锋地图工坊交流群](https://jq.qq.com/?_wv=1027&k=5uVyEyn),群号码:682132275。 92 | * 文档使用Markdown编写。Markdown是一种非常简单的写作语言,您可以[在此](https://www.jianshu.com/p/191d1e21f7ed)学习。工具使用没有特别限制,您可以使用任何一款Markdown编辑器,如果您不知道如何选择,可以参考[此处](https://www.zhihu.com/question/19637157) 93 | * 协作使用GitHub进行,仓库地址:[GKD-OW/docs](https://github.com/GKD-OW/docs) 94 | 95 | 更多内容,请参见[贡献指南](contribution.md) 96 | 97 | ## 使用协议 98 | 99 | 若您需要使用本站任何内容,您需要遵循以下条件: 100 | 101 | * 您不在我们的**黑名单**中。 102 | * 署名 — 您必须给出适当的署名,提供指向本站的链接,同时标明是否(对原始作品)作了修改。您可以用任何合理的方式来署名,但是不得以任何方式暗示许可人为您或您的使用背书。 103 | * 非商业性使用 — 您**不得**将本作品用于商业目的。 104 | * 相同方式共享 — 如果您再混合、转换或者基于本站内容进行创作,您必须基于此协议相同的许可协议分发您的作品。 105 | * 没有附加限制 — 您不得适用法律术语或者技术措施从而限制其他人做许可协议允许的事情。 106 | 107 | 只要您遵循以上的条件,您就可以: 108 | 109 | * 共享 — 在任何媒介以任何形式复制、发行本作品。 110 | * 演绎 — 修改、转换或以本作品为基础进行创作。 111 | 112 | 如何确定自己的行为是否属于商业目的: 113 | 114 | * 以个人身份转载一般不会存在问题(但不绝对)。 115 | * 转载任何内容至公众号、微博、B站、第三方网站/论坛等媒介,维护人员有权**自行认定**是否为商业目的使用。 116 | * 若您无法确定,请联系维护人员确认。联系方式:“OW地图工坊交流”群主或B站私信[泷涯](https://space.bilibili.com/2002598) 117 | 118 | 另外: 119 | 120 | * 原作者对自己作品的任何行为,均不属于上述条件的限制范围。 121 | * 若您不满足上面的需求,但仍然希望使用本站内容,请联系站务组或原作者,取得单独授权。 122 | 123 | **若您参与本项目贡献,或使用本项目任何内容,均代表您同意本协议。** 124 | 125 | ### 黑名单 126 | 127 | * owmod.com 128 | -------------------------------------------------------------------------------- /ci/www/CNAME: -------------------------------------------------------------------------------- 1 | docs.owmod.net -------------------------------------------------------------------------------- /ci/www/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GKD-OW/docs/9f399dab26f4d4800703b46ad2bcd1b4bbb4c085/ci/www/favicon.ico -------------------------------------------------------------------------------- /contribution.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 贡献指南 3 | lang: zh-CN 4 | --- 5 | 6 | # 贡献指南 7 | 8 | ## 贡献方式 9 | 10 | 如果您会使用Git和GitHub: 11 | 12 | * 若您希望长期参与,可以联系管理人员,成为Collaborators 13 | * 若您仅希望贡献少量内容,或者修复某些错误,您可以fork本仓库,修改完成后提交Pull request 14 | 15 | 如果您不会: 16 | 17 | * 您可以[提交issue](https://github.com/GKD-OW/docs/issues/new),来描述您所遇到的问题 18 | * 您可以在群内联系管理人员 19 | * 您还可以尝试[学习如何使用Git](https://blog.sylingd.com/archives/346.html) 20 | 21 | 当仓库内容更新后,一般网站会在五分钟内更新。您可以[查看构建状态](https://github.com/GKD-OW/docs/actions) 22 | 23 | ## 插入图片 24 | 25 | **不建议使用大量图片,如果可以的话,尽量使用文字。** 26 | 27 | 图片上传前请先压缩,压缩工具: 28 | * [compressjpeg.com](https://compressjpeg.com/zh/) 29 | * [yasuotu.com](https://www.yasuotu.com/) 30 | * [iloveimg.com](https://www.iloveimg.com/zh-cn/compress-image/compress-jpg) 31 | 32 | 上传至公共图床,如[路过图床](https://imgchr.com/)、[SM.MS](https://sm.ms/),然后复制Markdown代码,粘贴到文章中 33 | 34 | ## 创建新文档 35 | 36 | * 在相应目录下创建Markdown文件(扩展名为`.md`),命名为英文命名。基本内容如下: 37 | 38 | ``` 39 | --- 40 | title: 文档标题 41 | lang: zh-CN 42 | --- 43 | 44 | # 文档标题 45 | 46 | 文档内容 47 | ``` 48 | 49 | * 加入侧边栏:修改`/.vuepress/list.js`,按照[此说明](https://v1.vuepress.vuejs.org/zh/theme/default-theme-config.html#侧边栏),将您的文档加入到侧边栏 50 | -------------------------------------------------------------------------------- /foreign.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 外服作品 3 | lang: zh-CN 4 | pageClass: page-works 5 | --- 6 | 7 | # 外服作品收集 8 | 9 | 外服代码收集网站:[overwatchmodding.com](https://overwatchmodding.com/) [workshop.elohell.gg](https://workshop.elohell.gg/) [overwatchforge.com](https://overwatchforge.com/) [avastips.com/overwatch/](https://avastips.com/overwatch/) 10 | 11 | ## 竞技类 12 | 13 | | 名称 | 原始地址 | 作者 | 分享码 | 国服 | 14 | | --- | ------- | --- | ----- | ---- | 15 | | 烫手山芋 | [Reddit](https://www.reddit.com/r/OverwatchCustomGames/comments/brjsxa/mccrees_hot_potato_gets_a_major_update/) | [olipoulihot](https://www.reddit.com/user/olipoulihot) | [M5DDB](#copy:M5DDB) | [#2](https://www.owmod.net/work/view/2) | 16 | | 安娜一枪(加强版) | [Reddit](https://www.reddit.com/r/TheOverwatchWorkshop/comments/brmyr0/enhanced_ana_paintball_has_plenty_of_new_features/) | [JinkoNorray](https://www.reddit.com/user/JinkoNorray) | [YK7XJ](#copy:YK7XJ) | [#7](https://www.owmod.net/work/view/7) | 17 | | 海盗船战争 | [Reddit](https://www.reddit.com/r/Overwatch/comments/bq41pv/overwatch_pirate_ship_wars_workshop/) | [fuzzbucklol](https://www.reddit.com/user/fuzzbucklol) | [19CQC](#copy:19CQC) | [4M9WT](#copy:4M9WT) | 18 | | 偷王冠 | [Reddit](https://www.reddit.com/r/Overwatch/comments/bny4kt/presenting_steal_the_crown_my_reverse_tag_gamemode/) | [olipoulihot](https://www.reddit.com/user/olipoulihot) | [0X8N0](#copy:0X8N0) | [#80](https://www.owmod.net/work/view/80) | 19 | | 2D横版格斗 | [Reddit](https://www.reddit.com/r/Overwatch/comments/bi3uh5/i_made_a_2d_sidescroll_on_busan/) | [HaxD3](https://www.reddit.com/user/HaxD3) | [79X9D](#copy:79X9D) | 暂无 | 20 | | 斯巴达版禅雅塔死斗 | [Reddit](https://www.reddit.com/r/Overwatch/comments/bjgvff/ive_made_sparta_mode_workshop_by_darwinstreams/) | [DarkyPaky](https://www.reddit.com/user/DarkyPaky) | [NEKEV](#copy:NEKEV) | [#160](https://www.owmod.net/work/view/160) | 21 | | 细胞吞噬 Agar.io | [Reddit](https://www.reddit.com/r/Overwatch/comments/bi29d4/agario_remade_in_overwatch_link_description_in/) | [CuddFlow](https://www.reddit.com/user/CuddFlow) | [2KW11](#copy:2KW11) | 暂无 | 22 | | 生化模式(大逃杀)| [Elo Hell](https://workshop.elohell.gg/2GUy1M9gL/Zombie_Escape_v41) | [Zezombye](https://www.reddit.com/user/Zezombye) | [XKNDX](#copy:XKNDX) | 暂无 | 23 | | 无限宝石 | [Reddit](https://www.reddit.com/r/Overwatch/comments/blxd3v/infinity_stones_deathmatch_updated_petra/) | [kaiomm](https://www.reddit.com/user/kaiomm) | [DR240](#copy:DR240) | 暂无 | 24 | 25 | 26 | ## 休闲类 27 | 28 | | 名称 | 原始地址 | 作者 | 分享码 | 国服 | 29 | | --- | ------- | --- | ----- | ---- | 30 | | Flappy Bird | [Reddit](https://www.reddit.com/r/Overwatch/comments/bp0xo4/its_finally_here_introducing_multiplayer_flappy/) | [Thriver9](https://www.reddit.com/user/Thriver9) | [4QY7N](#copy:4QY7N) | [#3](https://www.owmod.net/work/view/3) | 31 | | OW空战 | [Reddit](https://www.reddit.com/r/Overwatch/comments/bm53xq/third_person_jetfighter_bastion_dogfight_workshop/) | [Ghibliomatic](https://www.reddit.com/user/Ghibliomatic/) | [6CSC1](#copy:6CSC1) | [#21](https://www.owmod.net/work/view/21) | 32 | | 双英雄模式 | [Reddit](https://www.reddit.com/r/Overwatch/comments/bmlnkc/i_made_a_mod_so_you_can_play_two_heroes_at_once/) | [Hawaiian_spawn](https://www.reddit.com/user/Hawaiian_spawn) | [Y1S15](#copy:Y1S15) | [#29](https://www.owmod.net/work/view/29) | 33 | | 艾什俄罗斯轮盘 | [Reddit](https://www.reddit.com/r/Overwatch/comments/bj1oeq/workshop_ashe_roulette_v12n4sz8_now_with_less/) | [Oran9eUtan](https://www.reddit.com/user/Oran9eUtan) | [N4SZ8](#copy:N4SZ8) | 暂无 | 34 | | 托比昂保龄球 | [Reddit](https://www.reddit.com/r/Overwatch/comments/bl6io0/oversports_ten_torbjorn_bowling_by_lym_andygmb/) | [Lymbow](https://www.reddit.com/user/Lymbow) | [Y6VRT](#copy:Y6VRT) | 暂无 | 35 | | 半藏塔防 | [Reddit](https://www.reddit.com/r/Overwatch/comments/booq35/workshop_gamemode_hanzos_wild_tower_defense/) | [TheRealPT0007](https://www.reddit.com/user/TheRealPT0007/) | [Y1PWP](#copy:Y1PWP) | 暂无 | 36 | | 绿洲城躲车 | - | - | [WMJYD](#copy:WMJYD) | [#4](https://www.owmod.net/work/view/4) | 37 | | 排球 | [YouTube](https://www.youtube.com/watch?v=6wREW4WrLaU) | [라샤](https://www.youtube.com/channel/UCsy0puFN40_fMdVnSYai7vQ) | [HNRXF](#copy:HNRXF) | [#157](https://www.owmod.net/work/view/157) | 38 | | 躲球 | [Elo Hell](https://workshop.elohell.gg/8wisSggm3) | [Lymbow](https://www.reddit.com/user/Lymbow) | [C3S3H](#copy:C3S3H) | 暂无 | 39 | 40 | ## 跑酷类 41 | 42 | | 名称 | 原始地址 | 作者 | 分享码 | 国服 | 43 | | --- | ------- | --- | ----- | ---- | 44 | | 卢西奥-艾兴瓦尔德Ⅰ | [Reddit](https://www.reddit.com/r/Overwatch/comments/bhwe2k/i_made_a_lucio_racingskill_course_game_mode_ph0bj/) | [waycoolway](https://www.reddit.com/user/waycoolway) | [PHSHA](#copy:PHSHA) | [#1](https://www.owmod.net/work/view/1) | 45 | | 卢西奥-艾兴瓦尔德Ⅱ | - | - | [YVB13](#copy:YVB13) | 暂无 | 46 | | 卢西奥-多拉多 | [Reddit](https://www.reddit.com/r/Overwatch/comments/bhcf4i/dorado_trial_1_code_prgrp/) | [Toilet_Assassin](https://www.reddit.com/user/Toilet_Assassin) | [019D2](#copy:019D2) | 暂无 | 47 | | 卢西奥-直布罗陀 | [Reddit](https://www.reddit.com/r/Overwatch/comments/bid4mw/i_made_another_wallriding_trial_and_its_much/) | [Toilet_Assassin](https://www.reddit.com/user/Toilet_Assassin) | [Y88KB](#copy:Y88KB) | 暂无 | 48 | | 竞速赛 | [Twitter](https://twitter.com/DanielFenner/status/1122291285103194112) | [Daniel Fenner](https://twitter.com/DanielFenner)
[Dane Fairbanks](https://twitter.com/danefairbanks) | [Q8KT7](#copy:Q8KT7) | 暂无 | 49 | 50 | ## 练习类 51 | 52 | | 名称 | 原始地址 | 作者 | 分享码 | 国服 | 53 | | --- | ------- | --- | ----- | ---- | 54 | | 源氏龙刃练习 | [Twitter](https://twitter.com/Nakotsu09/status/1125017679679463424) | [Nakotsu09](https://twitter.com/Nakotsu09) | [BE8VH](#copy:BE8VH) | [#5](https://www.owmod.net/work/view/5) | 55 | | 莱因哈特练习 | [Reddit](https://www.reddit.com/r/Overwatch/comments/bppuai/ninja_ana_paintball_workshop_by_darwinstreams/) | [DarkyPaky](https://www.reddit.com/user/DarkyPaky/) | [440GD](#copy:440GD) | [#10](https://www.owmod.net/work/view/10) | 56 | | 瞄准练习Ⅰ | [Reddit](https://www.reddit.com/r/Overwatch/comments/biuex8/overwatch_workshop_aim_practice_v2_homemade/) | [firenty](https://www.reddit.com/user/firenty) | [QN6S3](#copy:QN6S3) | [#9](https://www.owmod.net/work/view/9) | 57 | | 瞄准练习Ⅱ | [Elo Hell](https://workshop.elohell.gg/P0oO8STBa/PMAJellies_Aim_Trainer_V2) | [PMAJellies](https://twitter.com/PMAJellies) | [BQSSS](#copy:BQSSS) | 暂无 | 58 | | 瞄准练习Ⅲ | [Elo Hell](https://workshop.elohell.gg/a_Km0-jeI/Aim_Practice_RAMBE_Update_12th_May_2019) | RAMBE | [EY9J6](#copy:EY9J6) | 暂无 | 59 | | 瞄准练习Ⅳ | [Reddit](https://www.reddit.com/r/Overwatch/comments/bpapl2/workshop_i_made_a_target_practice_tool_with_3d/) | [Pineapple__Squish](https://www.reddit.com/user/Pineapple__Squish/) | [RJ6X3](#copy:RJ6X3) | 暂无 | 60 | | 抛射物练习 | [Reddit](https://www.reddit.com/r/Overwatch/comments/brd8k3/darwins_ana_nade_tool_v12_added_ashe_baptiste_mei/) | [DarkyPaky](https://www.reddit.com/user/DarkyPaky) | [QHQ8E](#copy:QHQ8E) | 暂无 | 61 | | 弹道类瞄准练习 | [Reddit](https://www.reddit.com/r/Competitiveoverwatch/comments/bspwcy/workshop_aerial_aim_trainer_for_predictable_air/) | [Giacomand](https://www.reddit.com/user/Giacomand) | [P3PZC](#copy:P3PZC) | 暂无 | 62 | 63 | ## 功能扩展 64 | 65 | | 名称 | 原始地址 | 作者 | 分享码 | 国服 | 66 | | --- | ------- | --- | ----- | ---- | 67 | | 增强版标记系统 | [Reddit](https://www.reddit.com/r/Overwatch/comments/blqrwc/enchanced_ping_system_by_darwinstreams/) | [DarkyPaky](https://www.reddit.com/user/DarkyPaky) | [K65E4](#copy:K65E4) | 暂无 | 68 | | 自拍摄像头 | [Reddit](https://www.reddit.com/r/Overwatch/comments/biaz05/selfie_cam_mode_finally_here_by_darwinstreams/) | [DarkyPaky](https://www.reddit.com/user/DarkyPaky) | [X67X2](#copy:X67X2) | 暂无 | 69 | 70 | ## 英雄重做 71 | 72 | | 名称 | 原始地址 | 作者 | 分享码 | 国服 | 73 | | --- | ------- | --- | ----- | ---- | 74 | | 堡垒炮台版托比昂 | [Reddit](https://www.reddit.com/r/Overwatch/comments/bj0tmt/deployable_bastion_turret_torb_ult_we_all_wanted/) | [DarkyPaky](https://www.reddit.com/user/DarkyPaky) | [BEDTA](#copy:BEDTA) | 暂无 | 75 | | 托比昂大炮 | [Reddit](https://www.reddit.com/r/Overwatch/comments/bhzq8n/i_made_bastion_fire_torbjorns_that_lock_onto/) | [DarkyPaky](https://www.reddit.com/user/DarkyPaky) | [WQNAD](#copy:WQNAD) | 暂无 | 76 | | 飞行堡垒 | [Reddit](https://www.reddit.com/r/Overwatch/comments/bhekc7/saw_this_gamemode_and_decided_to_try_the_workshop/) | [LLDva](https://www.reddit.com/user/LLDva) | [9TBV2](#copy:9TBV2) | 暂无 | 77 | | 黑百合摄像头 | - | [DarkyPaky](https://www.reddit.com/user/DarkyPaky) | [RREWD](#copy:RREWD) | 暂无 | 78 | | 滑铲巴蒂斯特 | [Reddit](https://www.reddit.com/r/Overwatch/comments/bjx7gf/apex_legends_style_slide_made_in_the_workshop/) | [DarkyPaky](https://www.reddit.com/user/DarkyPaky) | [6R02B](#copy:6R02B) | 暂无 | 79 | | 路霸抓钩 | [Reddit](https://www.reddit.com/r/Overwatch/comments/bhacnk/i_made_hogs_hook_double_as_a_fully_functional/) | [Altimor](https://www.reddit.com/user/Altimor) | [3VA7X](#copy:3VA7X) | 暂无 | 80 | | 时停EMP | [Twitter](https://twitter.com/LeoHill10/status/1124437969308409858) | [Leo Hill](https://twitter.com/LeoHill10) | [NVAGK](#copy:NVAGK) | 暂无 | 81 | | 滑墙大锤 | [Reddit](https://www.reddit.com/r/reinhardtrollouts/comments/bharrg/reinhardt_20_rollout_wall_riding_workshop/) | [w0rthiless](https://www.reddit.com/user/w0rthiless) | [YNV6M](#copy:YNV6M) | 暂无 | 82 | | 闪电球秩序之光 | [Reddit](https://www.reddit.com/r/Overwatch/comments/bi5jpx/custom_symmetra_ultimate_ball_lightning/) | [Lymbow](https://www.reddit.com/user/Lymbow) | [YD4KM](#copy:YD4KM) | [#56](https://www.owmod.net/work/view/56) | 83 | | 穿墙死神 | [Reddit](https://www.reddit.com/r/Overwatch/comments/bo4dj5/i_made_reaper_much_scarier_workshop_by/) | [DarkyPaky](https://www.reddit.com/user/DarkyPaky) | [DY7MH](#copy:DY7MH) | 暂无 | 84 | | 猎空闪回技能 | [Reddit](https://www.reddit.com/r/Overwatch/comments/bn19b0/tracers_recall_for_any_hero_workshop_by/) | [DarkyPaky](https://www.reddit.com/user/DarkyPaky) | [KC981](#copy:KC981) | 暂无 | 85 | | 安娜机动性增强 | [Reddit](https://www.reddit.com/r/Overwatch/comments/bknzqc/darwins_ana_nade_tool/) | [DarkyPaky](https://www.reddit.com/user/DarkyPaky) | [1ZH9V](#copy:1ZH9V) | 暂无 | 86 | 87 | -------------------------------------------------------------------------------- /manual/array.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 数组 3 | lang: zh-CN 4 | --- 5 | 6 | # 数组 7 | 8 | 什么情况下你应该考虑使用数组?当你有一系列“相似”的数据,例如你做跑酷地图时有几十个检查点坐标需要存放时,你就可以考虑使用“数组”能不能简化你的逻辑了。 9 | 10 | ## 基础 11 | 12 | 先介绍几个基本名词: 13 | * 数组:一系列数据的集合。注意,与数学中的集合不同的是,数组内的元素是可以重复的。 14 | * 元素:也称为“值”。集合中的单个数据。 15 | * 索引:在编程中一般将它叫做下标或索引。它表示是集合中的第几个,从0开始计数。 16 | 17 | 例如我们有一个数组是`[10, 20, 30]`,那么20是这个数组的第2个元素,它的索引是1。 18 | 19 | 数组的基本操作和普通变量一样,分为读取和写入。读取非常简单,使用“数组中的值”即可。写入又分为直接写入索引,或者添加到数组末尾。它们分别使用: 20 | 21 | * 在索引处设置全局变量(A, 索引, 值) 22 | * 在索引处设置玩家变量(玩家, A, 索引, 值) 23 | * 修改全局变量(A, 添加至数组, 值) 24 | 25 | ## 结合“索引”读写 26 | 27 | 假如我们要做一个有很多个检查点的跑酷地图,每次通过一个检查点,我们就需要给玩家创建下一个检查点的光环。如果不使用数组,我们需要写非常多的规则。但是如果使用数组,事情就会变得简单起来: 28 | 29 | ### 初始化 30 | 31 | 我们使用变量A来存放所有的检查点: 32 | 33 | * 设置全局变量(A, 空数组) 34 | * 修改全局变量(A, 添加至数组, 矢量(0, 0, 0)) 35 | * 修改全局变量(A, 添加至数组, 矢量(10, 10, 10)) 36 | * 修改全局变量(A, 添加至数组, 矢量(20, 20, 20)) 37 | * 修改全局变量(A, 添加至数组, 矢量(30, 30, 30)) 38 | 39 | 玩家一开始的索引是0,我们使用变量B来存放: 40 | * 设置玩家变量(事件玩家, B, 0) 41 | * 创建效果(事件玩家, 有益光环, 绿色, 数组中的值(全局变量, A, 玩家变量(事件玩家, B)), 10.000, 可见, 位置和半径) 42 | 43 | 另外,关于“创建效果”为什么在这里创建也能达到效果,在[技巧与提示](tips.md)中有简单说明。 44 | 45 | ### 通过检查点 46 | 47 | 假设检查点的碰撞半径是10。 48 | 49 | * 事件:持续 - 每名玩家 50 | * 条件:范围内玩家(数组中的值(全局变量(A, 玩家变量(事件玩家,B)), 10.000, 所有队伍, 关闭) == 事件玩家 51 | * 动作:修改玩家变量(事件玩家, B, 加, 1) 52 | 53 | ## 增加可用变量 54 | 55 | 注意:合理利用数组可以让我们可以存储更多数据。但并不推荐使用数组存储一系列互相无关的数据——从设计的角度来说,这不是好事。直接读取变量肯定比读取数组更快,因此,如果能使用普通变量解决的,那么就不推荐使用数组来解决。 56 | 57 | 我们可以将一系列不相关的内容放入一个数组中,达到“增加可用变量”的目的。例如: 58 | 59 | * 设置玩家变量(事件玩家, A, 空数组) 60 | * 在索引处设置玩家变量(事件玩家, A, 0, 矢量(0, 0, 0)) 61 | * 在索引处设置玩家变量(事件玩家, A, 1, 英雄(莱因哈特)) 62 | * 在索引处设置玩家变量(事件玩家, A, 2, 假) 63 | 64 | 然后在别的规则中这样使用: 65 | * 传送(事件玩家, 数组中的值(玩家变量(事件玩家, A), 0)) 66 | * 开始强制玩家选择英雄(事件玩家, 数组中的值(玩家变量(事件玩家, A), 1)) 67 | * 在索引处设置玩家变量(事件玩家, A, 2, 真) 68 | 69 | 70 | ## 其他 71 | 72 | * 数组使用前请先初始化!(即:`设置全局变量(A, 空数组)`)否则可能出现意料之外的结果。 73 | * 在某一时刻大量写入数组可能导致“服务器意外关闭”。 74 | * 数组的数量可以使用“数量”来获得。 75 | * “已排序的数组”默认使用升序排列(即从小到大)。如果你需要使用降序排序,目前请自行进行运算转换。 76 | * 如果你尝试读取一个不存在的索引,目前版本的结果是0。例如数组是`[1, 2, 3]`,当你尝试使用`数组中的值(数组, 3)`时,结果是0,因为数组一共有三个元素,其中3的索引是2。并不存在索引为3的元素。 77 | 78 | ## 二维数组 79 | 80 | 二维数组在编程中可以说是相当基础的操作,但是大部分人都会误以为工坊只支持一维数组。 81 | 82 | 我们可以通过索引处设置变量为空数组来初始化二维数组,并在索引处修改变量来追加成员。个中细节需要配合代码来理解,例如: 83 | 84 | * 在索引处设置全局变量(A, 0, 空数组); 85 | * 在索引处修改全局变量(A, 0, 添加至数组, 1); 86 | * 在索引处修改全局变量(A, 0, 添加至数组, 2); 87 | * 在索引处修改全局变量(A, 0, 添加至数组, 矢量(111, 222, 333)); 88 | 89 | 之后便可以这样读取: 90 | 91 | * 数组中的值(数组中的值(全局变量(A), 0), 2); 92 | 93 | 另外,二维数组中,有以下“坑”需要注意: 94 | 95 | * 将二维数组用作`数组值的索引`的第一个参数时,例如`数组值的索引(某二维数组, ……)`,前者将会被展开为一位数组。如本来的二维数组是`[[1, 2], [2, 3]]`,实际查找使用的是`[1, 2, 2, 3]`。 96 | * 将数组用作`数组值的索引`的第二个参数时,例如`数组值的索引(某二维数组, 某数组)`,会取后者的第一个值在前者中进行查找。例如`数组值的索引(某二维数组, [1, 2])`,实际运行的代码相当于:`数组值的索引(某二维数组, 1)` 97 | 98 | 例如下面动作: 99 | 100 | * 设置全局变量(A, 空数组); 101 | * 在索引处设置全局变量(A, 0, 空数组); 102 | * 在索引处修改全局变量(A, 0, 添加至数组, 1); 103 | * 在索引处修改全局变量(A, 0, 添加至数组, 2); 104 | * 在索引处设置全局变量(A, 1, 空数组); 105 | * 在索引处修改全局变量(A, 1, 添加至数组, 2); 106 | * 在索引处修改全局变量(A, 1, 添加至数组, 3); 107 | * 设置全局变量(B, 空数组); 108 | * 修改全局变量(B, 添加至数组, 2); 109 | * 修改全局变量(B, 添加至数组, 3); 110 | * 设置全局变量(C, 数组值的索引(全局变量(A), 全局变量(B))); 111 | 112 | C的结果是1,因为: 113 | * `全局变量(A)`本来为`[[1, 2], [2, 3]]`,查找时被展开为`[1, 2, 2, 3]`。 114 | * `全局变量(B)`为`[2, 3]`,实际使用2进行查找。 115 | * 实际运行的动作相当于`数组值的索引([1, 2, 2, 3], 2)`,因此结果为1。 116 | -------------------------------------------------------------------------------- /manual/continued_event.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 持续事件 3 | lang: zh-CN 4 | --- 5 | 6 | # 持续事件 7 | 8 | 目前为止,有“持续 - 全局”和“持续 - 每名玩家”两个持续事件。它们有一些难以把握。官方说:“当首次检查就满足条件时,则会执行行动。当未满足条件列表,但之后又满足时,则会尝试再次执行行动”。 9 | 10 | 我们举一些例子,来看看持续事件到底怎么回事。 11 | 12 | ## 只运行一次 13 | 14 | 使用持续事件但不附加任何条件,它在一次游戏中只会运行一次。你可以借此实现初始化。 15 | 16 | ## 结合“循环”多次运行 17 | 18 | 例如,我们想追踪玩家位置,如果玩家的Z坐标大于100,我们就每秒给玩家恢复100点生命值: 19 | 20 | 21 | * 事件:持续 - 每名玩家 22 | * 条件:Z方向分量(位置(事件玩家)) > 100 23 | * 动作: 24 | * 等待(1, 无视条件) 25 | * 治疗(事件玩家, 无, 100) 26 | * 如条件为“真”则循环 27 | 28 | 如果没有`如条件为“真”则循环`,那么便达不到我们的目的,因为条件并没有从满足变为不满足再变为满足,规则就只会运行一次。 29 | 30 | ## “等待”中不会运行 31 | 32 | 例如,我们想追踪玩家位置,如果玩家的Z坐标大于100,我们就在3秒后将玩家移动到某个位置: 33 | 34 | * 事件:持续 - 每名玩家 35 | * 条件:Z方向分量(位置(事件玩家)) > 100 36 | * 动作: 37 | * 等待(3, 无视条件) 38 | * 传送(事件玩家, 矢量(0, 0, 0)) 39 | 40 | 这个规则能达到我们的目的,但它是有问题的:如果一个玩家在Z=100的地方进进出出(即一会儿小于100,一会儿又大于100),那么玩家也只会传送第一次。原因是“等待”过程中,OW会认为规则仍然在运行,因此不会运行第二次。解决是把等待改成`等待(3, 当为“假”时中止)`。 41 | 42 | 借助这个现象,我们可以给规则加“CD”。例如禅雅塔打中的玩家会造成“破甲”效果三秒,冷却时间五秒,从“破甲”触发开始计时: 43 | 44 | * 事件:玩家受到伤害 45 | * 条件:英雄(攻击方) == 英雄(禅雅塔) 46 | * 动作: 47 | * 设置受到伤害(事件玩家, 150) 48 | * 等待(3, 无视条件) 49 | * 设置受到伤害(事件玩家, 100) 50 | * 等待(2, 无视条件) -------------------------------------------------------------------------------- /manual/documents/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 命令手册(中英对照) 3 | lang: zh-CN 4 | --- 5 | 6 | # 命令手册(中英对照) 7 | 8 | 9 | ## 事件 (Event) 10 | 11 | - [事件](event.md) 12 | 13 | 14 | ## 值 (Value) 15 | 16 | - [矢量和角度](value-vector-angle.md) 17 | - [效果与文本ID](value-effect-and-text-id.md) 18 | - [逻辑运算](value-logical-operator.md) 19 | - [数学运算](value-math.md) 20 | - [事件信息](event-info.md) 21 | - [玩家信息](value-player.md) 22 | - [比赛 / 地图 / 队伍](value-match-map-team.md) 23 | - [数组](value-array.md) 24 | - [变量](value-variable.md) 25 | - [常量](value-constant.md) 26 | 27 | 28 | ## 动作 (Action) 29 | 30 | - [流程控制](action-control-flow.md) 31 | - [玩家](action-player.md) 32 | - [队伍](action-team.md) 33 | - [变量](action-variable.md) 34 | - [比赛](action-match.md) 35 | - [效果与文本](action-effect-text.md) 36 | 37 | 38 | ## 字符串 (String) 39 | 40 | - [字符串](string.md) 41 | 42 | 43 | ## 效果与音效 (Effect And Sound) 44 | 45 | - [效果与音效](https://www.yuque.com/zhaohua-zgi3w/overwatch-document/tykhqq) 46 | 47 | 48 | ## 图标示例 (Icon) 49 | 50 | - [图标](icon.md) 51 | 52 | 53 | ## 贡献者 54 | 55 | - [贡献者](contributor.md) 56 | -------------------------------------------------------------------------------- /manual/documents/action-control-flow.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 流程控制 3 | lang: zh-CN 4 | --- 5 | 6 | # 流程控制类 7 | 8 | 9 | 10 | ## 如果 If 11 | 12 | _表示仅在指定条件为真时才会开始的一系列行动._ 13 | 14 | 15 | 16 | ## 否则如果 Else If 17 | 18 | _表示仅在指定条件为真, 且前一个if或else if的条件为假时, 才会开始的一系列行动._ 19 | 20 | 21 | 22 | ## 否则 Else 23 | 24 | _表示仅在前一个if或else if的条件为假时, 才会开始的一系列动作._ 25 | 26 | 27 | 28 | ## 当 While 29 | 30 | _表示只要指定的条件为真, 就会在循环中执行的一系列行动的开始. 当前级别中的下一个end行动表示循环的结束. 如果执行至循环顶部时, 条件评估为假, 则退出循环, 跳至end操作之后的下一个操作执行._ 31 | 32 | 33 | 34 | ## 中断 Break 35 | 36 | _表示一个中止当前 While 或 For 循环的动作. 跳至 End 动作后的下一个动作继续执行._ 37 | 38 | 39 | 40 | ## 继续 Continue 41 | 42 | _表示一个跳至当前 While 或 For 循环起始处继续执行的动作._ 43 | 44 | 45 | 46 | ## 结束 End 47 | 48 | _表示以 if/else if/ while 或for开始的一系列行动的结束._ 49 | 50 | 51 | 52 | ## 等待 Wait 53 | 54 | _暂停执行动作列表.除非等待被中断,否则剩余的动作将在暂停之后执行._ 55 | 56 | - `时间` 持续暂停的时间 57 | - `等待行为` 指定等待是否可以被中断.如果忽略条件列表,则等待不会被中断.否则则依据条件列表判断是否以及何时中止或重新开始动作列表. 58 | 59 | 60 | 61 | ## 中止 Abort 62 | 63 | _停止执行动作列表._ 64 | 65 | 66 | 67 | ## 跳过 Skip 68 | 69 | _跳过动作列表中一定条数的动作._ 70 | 71 | - `动作数量` 跳过的动作条数,不包括此动作. 72 | 73 | 74 | 75 | ## 循环 Loop 76 | 77 | _从头开始执行动作列表.为避免无限循环,在动作列表开始与此动作之间必须执行一个等待动作._ 78 | 79 | 80 | 81 | ## 如条件为"假"则中止 Abort If Condition Is False 82 | 83 | _如果条件列表中至少有一项条件为"假",则停止执行动作列表.如果所有条件均为"真"则继续执行下一条动作._ 84 | 85 | 86 | 87 | ## 如条件为"假"则循环 Loop If Condition Is False 88 | 89 | _如果条件列表中至少有一项条件为"假"则从头开始执行动作列表.如果所有条件均为"真",则执行下一项动作.为避免无限循环,在动作列表开始与此动作之间必须执行一个等待动作._ 90 | 91 | 92 | 93 | ## 如条件为"真"则中止 Abort If Condition Is True 94 | 95 | _如果条件列表中所有条件均为"真"则停止执行动作列表.如果有任何一条为"假",则继续执行下一条动作._ 96 | 97 | 98 | 99 | ## 如条件为"真"则循环 Loop If Condition Is True 100 | 101 | _如果条件列表中的每一项条件均为"真"则从头开始执行动作列表.如果任意一项为"假",则执行下一项动作.为避免无限循环,在动作列表开始与此动作之间必须执行一个等待动作._ 102 | 103 | 104 | 105 | ## 根据条件中止 Abort If 106 | 107 | _如果此动作的条件为"真则停止执行动作列表.否则,则继续执行下一条动作._ 108 | 109 | - `条件` 是否停止执行. 110 | 111 | 112 | 113 | ## 根据条件循环 Loop If 114 | 115 | _如果此动作的条件为"真则从头开始动作列表.否则,则继续执行下一条动作.为避免无限循环,在动作列表开始与此动作之间必须执行一个等待动作._ 116 | 117 | - `条件` 循环是否发生. 118 | 119 | 120 | 121 | ## 根据条件跳过 Skip If 122 | 123 | _如果此动作的条件为"真":则跳过动作列表中一定条数的动作.否则,则继续执行下一条动作._ 124 | 125 | - `条件` 是否跳过行动. 126 | - `动作数量` 跳过的动作条数,不包括此动作. 127 | -------------------------------------------------------------------------------- /manual/documents/action-effect-text.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 效果与文本 3 | lang: zh-CN 4 | --- 5 | 6 | # 效果与文本 7 | 8 | 9 | 10 | ## 创建HUD文本 Create HUD Text 11 | 12 | _在指定玩家屏幕上的指定位置创建HUD一条文本.此文本会持续至消除为止.如果想指定此文本,可使用"上一个文本ID"的返还值.如果已创建了太多的文本元素,此动作可能会失败.__ 13 | 14 | - `可见` 一名或多名玩家将可以看到此图标. 15 | - `标题` 将要显示的文本(可以为空). 16 | - `子标题` 要显示的子标题文本(可以为空). 17 | - `文本` 将要显示的正文文本(可以为空) 18 | - `坐标` 文本在屏幕上出现的位置. 19 | - `排序` 此文本与其他在同样位置的文本的排序关系.排序较高的文本会在排序较低的文本之后显示. 20 | - `标题颜色` 标题文本的颜色.如果选择了一支队伍,此效果将显示为红色或蓝色,根据观察者是否与这支队伍敌对决定. 21 | - `子标题颜色` 子标题文本的颜色.如果选择了一支队伍,此效果将显示为红色或蓝色,根据观察者是否与这支队伍敌对决定. 22 | - `文本颜色` 所创建文本的颜色.如果选择了一支队伍,此效果将显示为红色或蓝色,根据观察者是否与这支队伍敌对决定. 23 | - `重新赋值` 指定此动作的某个输入值将被持续重新赋值.这段文本会要求输入新的数值,并用输入的数值进行重新赋值. 24 | - `观战者` 观战者是否可以看到此文本. 25 | 26 | 27 | 28 | ## 创建图标 Create Icon 29 | 30 | _创建一个地图中的图标实体.此实体会持续至消除为止.如果想指定此实体,可使用"上一个创建的实体"的返还值.如果已创建了太多的实体,此动作可能会失败._ 31 | 32 | - `可见` 一名或多名玩家将可以看到此图标. 33 | - `位置` 图标所在的位置.如果此值为一名玩家,那么图标将显示在这名玩家的头顶上否则,此值将代表地图中的一个位置. 34 | - `图标` 将要创建的图标. 35 | - `重新赋值` 指定此动作的某个输入值将被持续重新赋值.此图标会一直要求并采用重新赋值所传入的值. 36 | - `图标颜色` 所创建图标的颜色.如果选择了一支队伍,此效果将显示为红色或蓝色,根据观察者是否与这支队伍敌对决定. 37 | - `离开屏幕后显示` 当此图标在你背后时是否显示? 38 | 39 | 40 | 41 | ## 创建地图文本 Create In-World Text 42 | 43 | _在地图的指定位置创建一条地图文本,可以由指定玩家看到.此文本会持续至消除为止.如果想指定此文本,可使用(上一个文本ID"的返还值.如果已创建了太多的文本元素,此动作可能会失败._ 44 | 45 | - `可见` 一名或多名玩家将可以看到本条地图文本. 46 | - `标题` 将要显示的文本. 47 | - `位置` 文本所在位置.如果此值为一名玩家,那么文本将显示在这名玩家的头顶上方.否则,此值将代表地图中的一个位置. 48 | - `大小` 文本的大小. 49 | - `截取` 文本可以穿透墙壁或是将被遮挡. 50 | - `重新赋值` 指定此动作的某个输入值将被持续重新赋值.这段文本会要求输入新的数值,并用输入的数值进行重新赋值. 51 | - `观战者` 观战者是否可以看到此文本. 52 | 53 | 54 | 55 | ## 播放效果 Play Effect 56 | 57 | _在地图的指定位置播放一个效果.此效果的持续时间很短所以不需要更新消除._ 58 | 59 | - `可见` 一名或多名玩家将可以看到此效果. 60 | - `类型` 将要创建的效果类型. 61 | - `颜色` 所创建效果的颜色.如果选择了一支队伍,此效果将显示为红色或色,根据观察者是否与这支队伍敌对决定. 62 | - `位置` 效果所在的位置.如果此值为一名玩家,那么该效果将与玩家一起移动.否则,此值将代表地图中的一个位置. 63 | - `半径` 效果的半径,单位为米.对声音效果则影响其音量. 64 | 65 | 66 | 67 | ## 创建效果 Create Effect 68 | 69 | _创建一个地图中的效果实体.此实体会持续至消除为止.如果想指定此实体,可使用"上一个创建的实体"的返还值.如果已创建了太多的实体,此动作可能会失败._ 70 | 71 | - `可见` 一名或多名玩家将可以看到此效果. 72 | - `类型` 将要创建的效果类型. 73 | - `颜色` 所创建效果的颜色.如果选择了一支队伍,此效果将显示为红色或色,根据观察者是否与这支队伍敌对决定.对声音效果无效. 74 | - `位置` 效果所在的位置.如果此值为一名玩家,那么该效果将与玩家一起移动.否则,此值将代表地图中的一个位置. 75 | - `半径` 效果的半径,单位为米.对声音效果则影响其音量. 76 | - `重新赋值` 指定此动作的某个输入值将被持续重新赋值.此效果会要求输入新的数值,并用输入的数值进行重新赋值. 77 | 78 | 79 | 80 | ## 小字体信息 Small Message 81 | 82 | _在准星下方显示小字体信息,对指定玩家可见._ 83 | 84 | - `可见` 下列玩家将看到此信息. 85 | - `标题` 将要显示的信息. 86 | 87 | 88 | 89 | ## 大字体信息 Big Message 90 | 91 | _在准星上方显示大字体信息,对指定玩家可见._ 92 | 93 | - `可见` 下列玩家将看到此信息. 94 | - `标题` 将要显示的信息. 95 | 96 | 97 | 98 | ## 设置目标点描述 Set Objective Description 99 | 100 | _将屏幕顶部正中通常用来显示目标点信息的文字修改为其他信息,对指定的玩家可见._ 101 | 102 | - `可见` 下列玩家将看到此信息. 103 | - `标题` 将要显示的信息. 104 | - `重新赋值` 指定此动作的某个输入值将被持续重新赋值.这段信息会要求输入新的数值,并用输入的数值进行重新赋值. 105 | 106 | 107 | 108 | ## 消除HUD文本 Destroy HUD Text 109 | 110 | _消除由"创建HUD文本"所创建的HUD文本._ 111 | 112 | - `文本ID` 指定要消除的HUD文本.此ID可以是"上一个文本ID",或一个之前储存"上一个文本ID"的变量. 113 | 114 | 115 | 116 | ## 消除图标 Destroy Icon 117 | 118 | _消除通过"创建图标"所创建的一个图标实体._ 119 | 120 | - `实体` 指定要消除的图标实体.可以是"上一个创建的实体",或一个之前储存"上一个创建的实体"的变量. 121 | 122 | 123 | 124 | ## 消除地图文本 Destroy In-World Text 125 | 126 | _清除"创建地图文本"所创建的地图文本._ 127 | 128 | - `文本ID` 指定要消除的地图文本.此ID可以是"上一个文本ID",或一个之前储存"上一个文本ID"的变量. 129 | 130 | 131 | 132 | ## 消除效果 Destroy Effect 133 | 134 | _消除一个由"创建效果"所创建的效果实体._ 135 | 136 | - `实体` 指定要消除的效果实体.可以是"上一个创建的实体",或一个之前储存"上一个创建的实体"的变量. 137 | 138 | 139 | 140 | ## 消除所有HUD文本 Destroy All HUD Text 141 | 142 | _消除所有由"创建HUD文本"动作所创建的所有HUD文本._ 143 | 144 | 145 | 146 | ## 消除所有图标 Destroy All Icons 147 | 148 | _消除所有由"创建图标"所创建的图标实体._ 149 | 150 | 151 | 152 | ## 消除所有地图文本 Destroy All In-World Text 153 | 154 | _消除所有"创建地图文本"所创建的所有地图文本._ 155 | 156 | 157 | 158 | ## 消除所有效果 Destroy All Effects 159 | 160 | _消除所有由"创建效果"所创建的效果实体._ 161 | 162 | 163 | 164 | ## 隐藏消灭提示 Disable Kill Feed 165 | 166 | _隐藏一名或多名玩家的消灭提示,直到重新被显示为止._ 167 | 168 | - `玩家`: 下列玩家的消灭提示将被隐藏. 169 | 170 | 171 | 172 | ## 显示消灭提示 Enable Kill Feed 173 | 174 | _取消 “隐藏消灭提示” 动作的效果._ 175 | 176 | - `玩家`: 下列玩家的消灭提示将被显示. 177 | 178 | 179 | 180 | ## 隐藏信息 Disable Messages 181 | 182 | _隐藏一名或多名玩家的信息, 直到重新被显示为止._ 183 | 184 | - `玩家`: 下列玩家的信息将被隐藏. 185 | 186 | 187 | 188 | ## 显示信息 Enable Messages 189 | 190 | _取消 “隐藏信息” 动作的效果._ 191 | 192 | - `玩家`: 下列玩家的信息将被显示. 193 | 194 | 195 | 196 | ## 隐藏计分板 Disable Scoreboard 197 | 198 | _隐藏一名或多名玩家的计分板,直到重新被显示为止._ 199 | 200 | - `玩家`: 下列玩家的计分板将被隐藏. 201 | 202 | 203 | 204 | ## 显示计分板 Enable Scoreboard 205 | 206 | _取消 “隐藏计分板” 动作的效果._ 207 | 208 | - `玩家`: 下列玩家的计分板将被显示. 209 | 210 | 211 | 212 | ## 开始修改英雄语音 Start Modifying Hero Voice Lines 213 | 214 | _修改玩家的英雄语音声音._ 215 | 216 | - `玩家`: 下列玩家的英雄语音声音将被修改. 217 | - `音调调整`: 语音的音调提高 (最高值1.5) 或降低 (最低指0.5) 的值. 218 | - `重新赋值`: 如果此值为真, 那么每一帧都会重新计算音调调整的值. 如果此值为假, 则只会再次行动一开始时赋予一个值. 219 | 220 | 221 | 222 | ## 停止修改英雄语音 Stop Modifying Hero Voice Lines 223 | 224 | _取消 “开始修改英雄语音” 动作的效果._ 225 | 226 | - `玩家`: 下列玩家的英雄语音声音将停止被修改. 227 | -------------------------------------------------------------------------------- /manual/documents/action-match.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 比赛 3 | lang: zh-CN 4 | --- 5 | 6 | # 比赛 7 | 8 | 9 | 10 | ## 开启游戏预设完成条件 Enable Built-In Game Mode Completion 11 | 12 | _启用"关闭游戏预设完成模式"动作的效果._ 13 | 14 | 15 | 16 | ## 开启游戏预设计分模式 Enable Built-In Game Mode Scoring 17 | 18 | _启用"关闭游戏预设计分模式"动作的效果._ 19 | 20 | 21 | 22 | ## 开启游戏预设通告模式 Enable Built-In Game Mode Announcer 23 | 24 | _启用"关闭游戏预设通告模式"动作的效果._ 25 | 26 | 27 | 28 | ## 开启游戏预设重生模式 Enable Built-In Game Mode Respawning 29 | 30 | _启用"关闭游戏预设重生模式"动作的效果._ 31 | 32 | - `玩家` 下列玩家的重生受到影响. 33 | 34 | 35 | 36 | ## 开启游戏预设音乐模式 Enable Built-In Game Mode Music 37 | 38 | _启用"关闭游戏预设音乐模式"动作的效果._ 39 | 40 | 41 | 42 | ## 关闭游戏预设完成条件 Disable Built-In Game Mode Completion 43 | 44 | _取消游戏模式自带的完成条件,比赛只由程序命令完成._ 45 | 46 | 47 | 48 | ## 关闭游戏预设计分模式 Disable Built-In Game Mode Scoring 49 | 50 | _取消游戏模式本身对玩家和队伍进行的计分,分数只会由程序命令改变._ 51 | 52 | 53 | 54 | ## 关闭游戏预设通告模式 Disable Built-In Game Mode Announcer 55 | 56 | _禁用游戏模式中所有提示语音,直到重新启用或比赛结束为止._ 57 | 58 | 59 | 60 | ## 关闭游戏预设重生模式 Disable Built-In Game Mode Respawning 61 | 62 | _使一名或多名玩家不再自动重生,只允许其在程序命令控制下重生._ 63 | 64 | - `玩家` 下列玩家的重生受到影响. 65 | 66 | 67 | 68 | ## 关闭游戏预设音乐模式 Disable Built-In Game Mode Music 69 | 70 | _禁用游戏模式中所有音乐,直到重新启用或比赛结束为止._ 71 | 72 | 73 | 74 | ## 宣告回合胜利 Declare Round Victory 75 | 76 | _宣布一支队伍为当前回合的胜利方(只在占领要点模式和决斗先锋模式中可用._ 77 | 78 | - `本回合获胜队伍` 本回合获胜队伍 79 | 80 | 81 | 82 | ## 宣告玩家胜利 Declare Player Victory 83 | 84 | _立即结束比赛并指定一名玩家为胜利者.此动作只在自由混战模式中生效._ 85 | 86 | - `玩家` 获胜的玩家. 87 | 88 | 89 | 90 | ## 宣告队伍胜利 Declare Team Victory 91 | 92 | _立即结束比赛,并指定获胜的队伍.此动作在自由混战模式中无效._ 93 | 94 | - `队伍` 获胜的队伍. 95 | 96 | 97 | 98 | ## 宣布回合为平局 Declare Round Draw 99 | 100 | _宣布当前回合为平局. 只在决斗先锋模式中可用._ 101 | 102 | 103 | 104 | ## 宣布比赛为平局 Declare Match Draw 105 | 106 | _立即结束比赛,且结果为平局.此动作在自由混战模式中无效._ 107 | 108 | 109 | 110 | ## 比赛时间暂停 Pause Match Time 111 | 112 | _暂停比赛时间.玩家、目标点逻辑、以及游戏模式的进展标准不会受暂停的影响_ 113 | 114 | 115 | 116 | ## 比赛时间继续 Unpause Match Time 117 | 118 | _取消比赛时间暂停._ 119 | 120 | 121 | 122 | ## 前往集结英雄 Go To Assemble Heroes 123 | 124 | _回到比赛模式的集结英雄阶段.只有在游戏正在进行中时生效._ 125 | 126 | 127 | 128 | ## 设置比赛时间 Set Match Time 129 | 130 | _设置当前比赛时间(玩家可在屏幕顶端看到).此行动可以用来缩短或延长比赛的持续时间,或改变集结英雄或准备阶段的时间._ 131 | 132 | - `时间` 比赛时间,单位为秒. 133 | 134 | 135 | 136 | ## 设置慢动作 Set Slow Motion 137 | 138 | _设置整个游戏的模拟速率,包括所有玩家、弹道、效果及游戏模式逻辑_ 139 | 140 | - `速度百分比` 模拟速率与正常速率的百分比.此数值不得超过100%. 141 | 142 | 143 | 144 | ## 启用查看器记录 Enable Inspector Recording 145 | 146 | _使地图工坊查看器可以继续录制新的条目(假如之前被禁用的话). 在特定时间开启录制可以更容易地对你的脚本逻辑中出问题的地方进行错误排查._ 147 | 148 | 149 | 150 | ## 禁用查看器记录 Disable Inspector Recording 151 | 152 | _使地图工坊查看器无法录制新的条目. 此功能可以降低你的脚本对服务器造成的负担, 特别是当修改数组时._ 153 | 154 | 155 | 156 | ## 调用子程序 Call Subroutine 157 | 158 | _暂停执行当前规则, 并开始执行子程序规则(事件类型为"子程序"的规则). 当子程序规则结束时, 原来的规则将恢复执行. 子程序可以使用相同的情景变量(如事件玩家)的原始值._ 159 | 160 | 161 | 162 | ## 开始规则 Start Rule 163 | 164 | _开始同时执行一个子程序规则(事件类型为"子程序"的规则). 原来规则的执行不会被打断. 子程序可以使用同样的情景变量(如事件玩家)的原始值._ 165 | 166 | 167 | 168 | ## 开启与环境的移动碰撞 Enable Movement Collision With Environment 169 | 170 | _取消 “取消与环境的移动碰撞” 动作的效果._ 171 | 172 | - `玩家`: 下列玩家的移动碰撞将受到影响. 173 | 174 | 175 | 176 | ## 取消与环境的移动碰撞 Disable Movement Collision With Environment 177 | 178 | _使玩家停止与其他环境 (墙壁, 天花板, 以及特定物体) 发生碰撞._ 179 | 180 | - `玩家`: 下列玩家的移动碰撞将受到影响. 181 | - `包括地面`: 如果为真, 则同事取消与地面的碰撞. 182 | 183 | 184 | 185 | ## 开启与玩家的移动碰撞 Enable Movement Collision With Players 186 | 187 | _取消 “取消与玩家的移动碰撞” 动作的效果._ 188 | 189 | - `玩家`: 下列玩家的移动碰撞将受到影响. 190 | 191 | 192 | 193 | ## 取消与玩家的移动碰撞 Disable Movement Collision With Players 194 | 195 | _使玩家停止与其他玩家发生碰撞._ 196 | 197 | - `玩家`: 下列玩家的移动碰撞将受到影响. 198 | -------------------------------------------------------------------------------- /manual/documents/action-player.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 玩家 3 | lang: zh-CN 4 | --- 5 | 6 | # 玩家 7 | 8 | 9 | 10 | ## 传送 Teleport 11 | 12 | _将一名或多名玩家传送到指定位置._ 13 | 14 | - `玩家` 下列玩家将被传送. 15 | - `位置` 玩家将被传送到的位置.如果此处填入一名玩家,则使用此玩家所在的位置. 16 | 17 | 18 | 19 | ## 伤害 Damage 20 | 21 | _立刻为一名或多名玩家造成伤害,可能会杀死玩家._ 22 | 23 | - `玩家` 下列玩家将受到伤害. 24 | - `伤害者` 伤害视为此名玩家造成的.如果"伤害者"设置为"空"则此伤害不会归到任何玩家名下. 25 | - `伤害量` 造成的伤害量.此数值可能会受到增益、减益状态或护甲的影响. 26 | 27 | 28 | 29 | ## 重生(适当位置) Respawn 30 | 31 | _使一名或多名玩家在适当的重生位置重生并恢复至最大生命值,对仍然存活的玩家依然有效._ 32 | 33 | - `玩家` 下列玩家将重生. 34 | 35 | 36 | 37 | ## 重生(原地重生) Resurrect 38 | 39 | _立即使一名到多名玩家在其死亡的位置复活,无需等待时间._ 40 | 41 | - `玩家` 下列玩家将被复活. 42 | 43 | 44 | 45 | ## 击杀 Kill 46 | 47 | _立即杀死一名或多名玩家._ 48 | 49 | - `玩家` 下列玩家将被杀死. 50 | - `击杀者` 击杀视为此名玩家造成的.如果"击杀者"设置为"空"则此击杀不会归到任何玩家名下. 51 | 52 | 53 | 54 | ## 修改玩家分数 Modify Player Score 55 | 56 | _修改一名或多名玩家的分数(击杀数).此动作只会在自由混战模式中生效._ 57 | 58 | - `玩家` 下列玩家的分数被改变. 59 | - `得分` 增加或减少的分数.如果为正数则增加分数,为负数则减少分数. 60 | 61 | 62 | 63 | ## 停止伤害调整 Stop All Damage Modifications 64 | 65 | _停止由"开始伤害调整"动作开始的一个伤害调整._ 66 | 67 | - `伤害调整ID` 指定要结束的伤害调整副本.此ID可以是"上一个伤害调整ID",或一个之前储存"上一个伤害调整ID"的变量. 68 | 69 | 70 | 71 | ## 停止加速 Stop Accelerating 72 | 73 | _停止"开始加速"动作造成的加速效果._ 74 | 75 | - `玩家` 下列玩家将停止加速. 76 | 77 | 78 | 79 | ## 停止强制玩家选择英雄 Stop Forcing Player To Be Hero 80 | 81 | _停止强制一名或多名玩家使用指定的英雄.此行动不会使玩家重生只会在其下次选择英雄时恢复可用的其他英雄_ 82 | 83 | - `玩家` 下列玩家将不再被强制使用指定英雄. 84 | 85 | 86 | 87 | ## 停止所有伤害调整 Stop All Damage Modifications 88 | 89 | _停止所有由"开始伤害调整"动作开始的伤害调整._ 90 | 91 | 92 | 93 | ## 停止所有持续伤害 Stop All Damage Over Time 94 | 95 | _停止一个或多个玩家身上所有由"开始持续伤害"给予的持续伤害._ 96 | 97 | - `玩家` 停止下列玩家身上程序给予的持续伤害. 98 | 99 | 100 | 101 | ## 停止所有持续治疗 Stop All Heal Over Time 102 | 103 | _停止一个或多个玩家身上所有由"开始持续治疗"给予的持续治疗._ 104 | 105 | - `玩家` 停止下列玩家身上程序给予的持续治疗. 106 | 107 | 108 | 109 | ## 停止持续伤害 Stop Damage Over Time 110 | 111 | _停止一个由"开始持续伤害"动作创建的持续伤害副本._ 112 | 113 | - `持续伤害ID` 指定要结束的持续伤害副本.此ID可以是"上一个持续伤害ID",或一个之前储存"上一个持续伤害ID"的变量. 114 | 115 | 116 | 117 | ## 停止持续治疗 Stop Heal Over Time 118 | 119 | _停止一个由"开始持续治疗"动作创建的持续治疗副本._ 120 | 121 | - `持续治疗ID` 指定要结束的持续治疗副本.此ID可以是"上一个持续治疗ID",或一个之前储存"上一个持续治疗ID"的变量. 122 | 123 | 124 | 125 | ## 停止按下按钮 Stop Holding Button 126 | 127 | _取消"开始按下按钮"动作的效果._ 128 | 129 | - `玩家` 下列玩家不再持续按下虚拟按钮. 130 | - `按钮` 不再持续按下的虚拟按钮. 131 | 132 | 133 | 134 | ## 停止朝向 Stop Facing 135 | 136 | _停止"开始转向"动作造成的转向效果._ 137 | 138 | - `玩家` 下列玩家将停止转向. 139 | 140 | 141 | 142 | ## 停止镜头 Stop Camera 143 | 144 | _无描述_ 145 | 146 | - `玩家` 将下列玩家的镜头恢复至默认视角. 147 | 148 | 149 | 150 | ## 停止限制阈值 Stop Forcing Throttle 151 | 152 | _取消"开始限制阈值"动作的效果._ 153 | 154 | - `玩家` 下列玩家的移动恢复正常. 155 | 156 | 157 | 158 | ## 对所有玩家启用死亡回放 Enable Death Spectate All Players 159 | 160 | _使一名或多名玩家死亡后可以观看所有玩家的比赛,而不止是自己的队友._ 161 | 162 | - `玩家` 下列玩家将可以观看所有玩家. 163 | 164 | 165 | 166 | ## 对所有玩家禁用死亡回放 Disable Death Spectate All Players 167 | 168 | _取消"对所有玩家启用死亡回放"动作的效果._ 169 | 170 | - `玩家` 下列玩家死亡后观战的行为将恢复正常. 171 | 172 | 173 | 174 | ## 开始伤害调整 Start Damage Modification 175 | 176 | _开始调整一名或多名受伤害者从一个或多个伤害者受到的伤害.如果想指定此伤害调整,可以使用"上一个伤害调整ID"的值.如果已经开始了太多的伤害调整,此动作可能会失败._ 177 | 178 | - `受伤害者` 修正下列玩家受到的伤害(被"伤害者"攻击时). 179 | - `伤害者` 修正下列玩家造成的伤害(攻击"受伤害者"时). 180 | - `伤害百分比` 伤害者对受伤害者造成伤害将调整至此百分比. 181 | - `重新赋值` 指定此动作的某个输入值被持续重新赋值.此动作会要求输入新的数值,并用输入的数值进行重新赋值. 182 | 183 | 184 | 185 | ## 开始加速 Start Accelerating 186 | 187 | _开始令一名或多名玩家向指定方向加速._ 188 | 189 | - `玩家` 下列玩家将开始加速. 190 | - `方向` 施加加速度的单位方向.此值将进行内部归一化. 191 | - `速率` 加速度,单位为米/秒.需要较大的加速度才能够克服引力和/或表面摩擦力. 192 | - `最大速度` 玩家达到此速度后会停止(加速)*.由于引力和/或表面摩擦力的存在,可能将无法达到此速度. 193 | - `相对` 确定此方向是相对于地图坐标还是玩家的本地坐标. 194 | - `重新赋值` 指定此动作的某个输入值被持续重新赋值.此动作会要求输入新的数值,并用输入的数值进行重新赋值. 195 | 196 | 197 | 198 | ## 开始强制玩家选择英雄 Start Forcing Player To Be Hero 199 | 200 | _开始强制一名或多名玩家使用指定的英雄,如有必要,使这些玩家立即在当前位置重生.这名或这些玩家只能使用指定的英雄,直到执行"停止强制玩家选择英雄"动作为止._ 201 | 202 | - `玩家` 下列玩家被强制使用指定英雄. 203 | - `英雄` 玩家将被强制使用的英雄. 204 | 205 | 206 | 207 | ## 开始持续伤害 Start Damage Over Time 208 | 209 | _开始一个持续伤害副本.此持续伤害会持续一段指定长度的时间,直到被程序中止.如果想指定此持续伤害,可以使用"上一个持续伤害ID"的返还值._ 210 | 211 | - `玩家` 在下列玩家身上施加持续伤害效果. 212 | - `伤害者` 伤害视为此名玩家造成的.如果"伤害者"设置为"空"则此伤害不会归到任何玩家名下. 213 | - `持续时间` 持续伤害的持续时间,以秒为单位.如果要让状态持续到被程序终止为止,可以提供一个*较长的持续时间,如9999. 214 | - `每秒伤害` 持续伤害每秒造成的伤害值. 215 | 216 | 217 | 218 | ## 开始持续治疗 Start Heal Over Time 219 | 220 | _开始一个持续治疗副本.此持续治疗会持续一段指定长度的时间,直到被程序中止.如果想指定此持续治疗,可以使用"上一个持续治疗ID"的返还值._ 221 | 222 | - `玩家` 下列玩家会受到持续治疗. 223 | - `治疗者` 治疗视为此名玩家造成的.如果"治疗者"设置为"空"则此治疗不会归到任何玩家名下. 224 | - `持续时间` 持续治疗的持续时间,以秒为单位.如果要让状态持续到被程序终止为止,可以提供一个*较长的持续时间,如9999. 225 | - `每秒治疗` 此持续治疗每秒造成的治疗. 226 | 227 | 228 | 229 | ## 开始治疗修改 Start Healing Modification 230 | 231 | _开始调整一名或多名受治疗者从一个或多个治疗者受到的治疗. 如果想指定此治疗调整, 可以使用"上一个治疗调整ID"的值. 如果已经开始了太多的治疗调整, 此动作可能会失败._ 232 | 233 | 234 | 235 | ## 停止治疗修改 Stop Healing Modification 236 | 237 | _停止由"开始治疗调整"动作启动的一个治疗调整._ 238 | 239 | 240 | 241 | ## 停止所有治疗调整 Stop All Healing Modifications 242 | 243 | _停止所有由"开始治疗调整"动作启动的治疗调整._ 244 | 245 | 246 | 247 | ## 开始按下按钮 Start Holding Button 248 | 249 | _强制一名或多名玩家按下一个虚拟按钮,直到被"停止按下按钮"动作取消._ 250 | 251 | - `玩家` 下列玩家持续按下虚拟按钮. 252 | - `按钮` 设置按下的虚拟按钮. 253 | 254 | 255 | 256 | ## 开始朝向 Start Facing 257 | 258 | _开始强制一名或多名玩家转向面对指定的方向._ 259 | 260 | - `玩家` 下列玩家将开始转向. 261 | - `方向` 玩家最终将面朝的单位方向.此值将进行内部归一化. 262 | - `角速率` 角速率,单位为度/秒. 263 | - `相对` 确定此方向是相对于地图坐标还是玩家的本地坐标. 264 | - `重新赋值` 指定此动作的某个输入值被持续重新赋值.此动作会要求输入新的数值,并用输入的数值进行重新赋值. 265 | 266 | 267 | 268 | ## 开始镜头 Start Camera 269 | 270 | _将你的镜头放置在一个位置,面向一个角度._ 271 | 272 | - `玩家` 将下列玩家的镜头放置于此. 273 | - `眼睛位置` 镜头的位置.持续重新赋值. 274 | - `望向位置` 镜头望向的位置.持续重新赋值. 275 | - `转动速度` ~~位置移动时镜头转动速度的快慢.0意味着不转动镜头方向,只改变其位置~~.(当镜头的"眼睛位置"移动时镜头转向 "望向位置"速度的快慢.0意味着镜头完全没有转向过程,并且直接立即移动其"眼睛位置".)* 276 | 277 | 278 | 279 | ## 开始限制阈值 Start Forcing Throttle 280 | 281 | _定义玩家移动输入的最大值和最小值,可能会强迫或阻止玩家移动._ 282 | 283 | - `玩家` 下列玩家将被强制或限制移动. 284 | - `向前最小` 设置向前行进的最小速度.设为0时玩家可以停下,设为1时将强迫玩家全速向前移动 285 | - `向前最大` 设置向前行进的最大速度.设为0时玩家将无法前进,设为1时玩家可以全速向前移动 286 | - `向后最小` 设置向后行进的最小速度.设为0时玩家可以停下,设为1时将强迫玩家全速向后移动. 287 | - `向后最大` 设置向后行进的最大速度.设为0时玩家将无法后退,设为1时玩家可以全速向后移动 288 | - `侧向最小` 设置侧向*行进的最小速度.设为0时玩家可以停下,设为1时将强迫玩家全速向侧向移动. 289 | - `侧向最大` 设置侧向*行进的最大速度.设为0时玩家无法侧移,设为1时玩家可以全速向侧向移动. 290 | 291 | 292 | 293 | ## 开始定向阈值 Start Throttle In Direction 294 | 295 | _为一名或多名玩家设置或添加阈值(方向性输入控制), 对其向指定方向的移动做出限制, 取消之前所有的定向阈值._ 296 | 297 | - `玩家` 设置或添加下列玩家的阈值. 298 | - `方向` 设置或添加阈值的单位方向. 此值将进行内部归一化. 299 | - `幅度` 阈值的值(或改变值). 值为1时表示阈值为满. 300 | - `相对` 确定此方向是相对于地图坐标还是玩家的本地坐标. 301 | - `行为` 指定需要替换或添加的已存在的阈值. 302 | - `重新赋值` 指定此动作的某个输入值将被持续重新赋值. 此动作会要求输入新的数值, 并用输入的数值进行重新赋值. 303 | 304 | 305 | 306 | ## 停止定向阈值 Stop Throttle In Direction 307 | 308 | _取消"开始定向阈值"所造成的行为._ 309 | 310 | - `玩家` 恢复下列玩家的默认阈值控制. 311 | 312 | 313 | 314 | ## 创建光束效果 Create Beam Effect 315 | 316 | _创建一个地图中的光束效果实体. 此实体会持续至消除为止. 如果想引用此实体, 可使用"上一个创建的实体"的返还值. 如果已创建了太多的实体, 此动作可能会失败._ 317 | 318 | - `可见` 一名或多名玩家将可以看到此效果. 319 | - `光束类型` 将要创建的效果类型. 320 | - `开始位置` 效果开始的位置. 如果此值为一名玩家, 那么该效果将与玩家一起移动. 否则, 此值将代表地图中的一个位置. 321 | - `颜色` 所创建效果的颜色. 如果选择了一支队伍, 此效果将显示为红色或蓝色, 根据观察者是否与这支队伍敌对决定. 不会影响音效, 只会影响"有益"或"有害"的光束效果. 322 | - `重新赋值` 指定此动作的某个输入值将被持续重新赋值. 此效果会要求输入新的数值, 并用输入的数值进行重新赋值. 323 | 324 | 325 | 326 | ## 生成机器人 Create Dummy Bot 327 | 328 | _在指定队伍的指定栏位添加一个新的机器人(只要该空位可用). 机器人智能移动与射击, 或根据地图工坊的动作设置使用技能._ 329 | 330 | - `英雄` 机器人使用的英雄. 如果提供了多于一个英雄, 则会随机在其中选择. 331 | - `队伍` 将机器人添加至此队伍. "全部"选项只适用于自由混战模式, "队伍"选项只适用于基于队伍的游戏模式. 332 | - `栏位` 在此玩家栏位添加机器人(-1表示第一个可用的空位). 不管游戏大厅的设置如何, 每支队伍最多可以添加6个机器人, 自由混战队伍中最多可添加12个机器人. 333 | - `位置` 机器人最初出现的位置. 334 | - `方向` 假人最初面向的方向. 335 | 336 | 337 | 338 | ## 移除所有机器人 Destroy All Dummy Bots 339 | 340 | _从比赛中移除所有机器人._ 341 | 342 | 343 | 344 | ## 移除机器人 Destroy Dummy Bot 345 | 346 | _从比赛中移除指定机器人._ 347 | 348 | - `队伍` 移除此队伍的机器人. "全部"选项只适用于自由混战模式, "队伍"选项只适用于基于队伍的游戏模式. 349 | - `栏位` 移除此空位的机器人. 350 | 351 | 352 | 353 | ## 开始转换阈值 Start Transforming Throttle 354 | 355 | _开始转换(放大并旋转)一名或多名玩家的阈值(方向输入控制)。取消所有已存在的“开始转换阈值”动作。_ 356 | 357 | - `玩家` 转换下列玩家阈值。 358 | - `X轴调整` 大小下列玩家的x轴(左右方向)将会乘以此数值,然后转换到新的相对方向。这个值会不断重新赋值(每一帧都会更新)。 359 | - `Y轴调整` 大小下列玩家的y轴(前后方向)将会乘以此数值,然后转换到新的相对方向。这个值会不断重新赋值(每一帧都会更新)。 360 | - `相对方向` 应用轴向调整时,大小玩家的阈值将会被转换为相对此单位方向的矢量。例如,如果阈值转换至对摄像机视角,则以摄像机的朝向为基准计算方向,这个值会不断被重新赋值(每一帧都会更新)。 361 | 362 | 363 | ## 停止转换阈值 Stop Transforming Throttle 364 | 365 | _停止由“开始转换阈值”所开始的转换效果。_ 366 | 367 | - `玩家` 停止转换下列玩家的阈值。 368 | 369 | 370 | ## 按下按键 Press Button 371 | 372 | _强制一名或多名玩家按下虚拟按键,持续一帧._ 373 | 374 | - `玩家` 下列玩家将强制按下按腱. 375 | - `按钮` 要按下的按键. 376 | 377 | 378 | 379 | ## 施加推力 Apply Impulse 380 | 381 | _立即使一名或多名玩家的移动速度发生改变._ 382 | 383 | - `玩家` 下列玩家的速度被改变. 384 | - `方向` 施加推力的单位方向.此值进行内部归一化. 385 | - `速度` 玩家速度改变的数值. 386 | - `相对` 确定此方向是相对于地图坐标还是玩家的本地坐标. 387 | - `运动` 确定在施加推力前是否首先消除已有的与此方向相反的速度. 388 | 389 | 390 | 391 | ## 启用死亡回放时目标的HUD Enable Death Spectate Target HUD 392 | 393 | _使一名或多名玩家在死亡后观战时看到目标的HUD信息,而不是他们自己的._ 394 | 395 | - `玩家` 下列玩家在死亡后观战时看到观战目标的HUD信息. 396 | 397 | 398 | 399 | ## 禁用死亡回放时目标的HUD Disable Death Spectate Target HUD 400 | 401 | _取消"死亡回放时启用目标的HUD"动作的效果._ 402 | 403 | - `玩家` 下列玩家在死亡后观战时看到他们自己的HUD信息. 404 | 405 | 406 | 407 | ## 交流 Communicate 408 | 409 | _使一名或多名玩家使用一个表情、语音或其他已装备的方式进行交流._ 410 | 411 | - `玩家` 下列玩家将自动开始交流. 412 | - `类型` 交流的类型. 413 | 414 | 415 | 416 | ## 治疗 Heal 417 | 418 | _立刻为一名或多名玩家恢复生命值.此治疗效果不会复活已死亡的玩家._ 419 | 420 | - `玩家` 下列玩家将恢复生命值. 421 | - `治疗者` 治疗视为此名玩家造成的.如果"治疗者"设置为"空"则此治疗不会归到任何玩家名下. 422 | - `治疗量` 造成的治疗量.此数值可能会受到增益或减益状态的影响.治疗量不会超过每名玩家的最大生命值. 423 | 424 | 425 | 426 | ## 清除状态 Clear Status 427 | 428 | _清除一个或多个玩家身上由"设置状态"动作施加的一个状态._ 429 | 430 | - `玩家` 下列玩家的状态将被清除. 431 | - `状态` 从指定玩家身上清除的状态. 432 | 433 | 434 | 435 | ## 禁用按钮 Disallow Button 436 | 437 | _禁用一名或多名玩家的逻辑按键,按下此按键后不会产生效果._ 438 | 439 | - `玩家` 下列玩家的按钮将被禁用. 440 | - `按钮` 禁用的逻辑按钮. 441 | 442 | 443 | 444 | ## 可用按钮 Allow Button 445 | 446 | _取消"禁用按钮"动作的效果._ 447 | 448 | - `玩家` 下列玩家的按钮重新启用. 449 | - `按钮` 将要重新启用的逻辑按键. 450 | 451 | 452 | 453 | ## 设置不可见 Set Invisible 454 | 455 | _使一名或多名玩家变为隐形,此效果可对所有玩家生效,也可以只对敌人生效._ 456 | 457 | - `玩家` 下列玩家将变得隐形. 458 | - `不可见对象` 将要对下列玩家隐形. 459 | 460 | 461 | 462 | ## 设置主要攻击模式启用 Set Primary Fire Enabled 463 | 464 | _启用或禁用一名或多名玩家的主要攻击模式._ 465 | 466 | - `玩家` 下列玩家的主要攻击模式受到影响. 467 | - `启用` 指定一名或多名玩家是否能够使用主要攻击模式.此处应为一个布尔值,如"真"/"假"或"比较式". 468 | 469 | 470 | 471 | ## 设置受到伤害 Set Damage Received 472 | 473 | _将一名或多名玩家受到的伤害设置为其原始受到伤害的一定百分比._ 474 | 475 | - `玩家` 设置下列玩家受到的伤害. 476 | - `受到伤害百分比` 将玩家所受到的伤害设置为此百分比. 477 | 478 | 479 | 480 | ## 设置受到治疗 Set Healing Received 481 | 482 | _将一名或多名玩家受到的治疗效果设置为其原始受到治疗的一定百分比._ 483 | 484 | - `玩家` 设置下列玩家受到的治疗. 485 | - `受到治疗百分比` 将玩家所受到的治疗设置为此百分比. 486 | 487 | 488 | 489 | ## 设置技能冷却 Set Ability Cooldown 490 | 491 | _设置一名或多名玩家的技能冷却时间._ 492 | 493 | - `玩家` 下列玩家的技能冷却时间将被修改. 494 | - `按钮` 与此技能关联的逻辑按钮将被修改. 495 | - `冷却时间` 设置冷却时间, 单位为秒. 496 | 497 | 498 | 499 | ## 设置启用技能 1 Set Ability 1 Enabled 500 | 501 | _启用或禁用一名或多名玩家的技能1._ 502 | 503 | - `玩家` 下列玩家的技能1受到影响. 504 | - `启用` 玩家是否可以使用技能1.此处应为一个布尔值,如"真"、"假"或"比较式". 505 | 506 | 507 | 508 | ## 设置启用技能 2 Set Ability 2 Enabled 509 | 510 | _启用或禁用一名或多名玩家的技能2._ 511 | 512 | - `玩家` 下列玩家的技能2将受到影响. 513 | - `启用` 玩家是否可以使用技能2.此处应为一个布尔值,如"真"、"假"或"比较式". 514 | 515 | 516 | 517 | ## 设置启用终极技能 Set Ultimate Ability Enabled 518 | 519 | _启用或禁用一名或多名玩家的终极技能._ 520 | 521 | - `玩家` 下列玩家的终极技能受到影响. 522 | - `启用` 玩家是否可以使用终极技能.此处应为一个布尔值,如"真"、"假"或"比较式". 523 | 524 | 525 | 526 | ## 设置启用跳跃 Set Jump Enabled 527 | 528 | _启用或禁用一名或多名玩家的跳跃动作._ 529 | 530 | - `玩家` 下列玩家的跳跃动作将受到影响. 531 | - `启用` 玩家是否可以使用近战攻击. 此处应为一个布尔值, 如 "真", "假" 或 "比较式". 532 | 533 | 534 | 535 | ## 设置启用下蹲 Set Crouch Enabled 536 | 537 | _启用或禁用一名或多名玩家的蹲下动作._ 538 | 539 | - `玩家` 下列玩家的下蹲动作将受到影响. 540 | - `启用` 玩家是否可以使用近战攻击. 此处应为一个布尔值, 如 "真", "假" 或 "比较式". 541 | 542 | 543 | 544 | ## 设置启用近战攻击 Set Melee Enabled 545 | 546 | _启用或禁用一名或多名玩家的近战攻击._ 547 | 548 | - `玩家` 下列玩家的近战攻击将受到影响. 549 | - `启用` 玩家是否可以使用近战攻击. 此处应为一个布尔值, 如 "真", "假" 或 "比较式". 550 | 551 | 552 | 553 | ## 设置引力 Set Gravity 554 | 555 | _将一名或多名玩家的行动引力设置为正常行动引力的一定百分比._ 556 | 557 | - `玩家` 设置下列玩家的行动引力. 558 | - `引力百分比` 将玩家个人的行动引力设置为此百分比. 559 | 560 | 561 | 562 | ## 设置弹道引力 Set Projectile Gravity 563 | 564 | _将一名或多名玩家的弹道引力设置为正常弹道引力的一定百分比._ 565 | 566 | - `玩家` 设置下列玩家的弹道引力. 567 | - `弹道引力百分比` 将玩家个人的弹道引力设置为此百分比. 568 | 569 | 570 | 571 | ## 设置弹道速度 Set Projectile Speed 572 | 573 | _将一名或多名玩家的弹道速度设置为正常弹道速度的一定百分比._ 574 | 575 | - `玩家` 设置下列玩家的弹道速度. 576 | - `弹道速度百分比` 将玩家个人的弹道速度设置为此百分比. 577 | 578 | 579 | 580 | ## 设置最大生命值 Set Max Health 581 | 582 | _将一名或多名玩家的最大生命值设置为其原始最大生命值的一定百分比.此动作会保证玩家当前的生命值不会超过其新的最大生命值._ 583 | 584 | - `玩家` 下列玩家的最大生命值将被设定. 585 | - `生命百分比` 将这些玩家的最大生命值设为其原始最大生命值的百分比. 586 | 587 | 588 | 589 | ## 设置最大重生时间 Set Respawn Max Time 590 | 591 | _设置一名或多名玩家死亡与重生之间的持续时间.对此动作执行时已经死亡的玩家,此效果将在他们下次死亡时生效._ 592 | 593 | - `玩家` 设置下列玩家的最大重生时间. 594 | - `时间` 死亡与重生之间的持续时间,以秒为单位. 595 | 596 | 597 | 598 | ## 设置朝向 Set Facing 599 | 600 | _设置一名或多名玩家面向的方向._ 601 | 602 | - `玩家` 设置下列玩家面朝的方向. 603 | - `方向` 玩家面朝的单位方向.此值进行内部归一化. 604 | - `相对` 确定此方向是相对于地图坐标还是玩家的本地坐标. 605 | 606 | 607 | 608 | ## 设置状态 Set Status 609 | 610 | _对一名或多名玩家施加一个状态.此状态会持续指定的"持续时间或直到被"清除状态"动作清除._ 611 | 612 | - `玩家` 下列玩家将被施加此状态. 613 | - `助攻者` 如果在效果持续期间受到影响的玩家被击杀,则视为此名玩家完成的助攻.如"助攻者"设置为"空"则此助攻不会归到任何玩家名下. 614 | - `状态` 对指定玩家施加此状态.此状态与玩家使用英雄技能时施放的状态效果相同. 615 | - `持续时间` 状态持续时间,以秒为单位.如果要让状态持续直到执行"清除状态"动作为止可以输入较长的持续时间,如9999. 616 | 617 | 618 | 619 | ## 设置玩家分数 Set Player Score 620 | 621 | _设置一名或多名玩家的分数(击杀数).此动作只在自由混战模式中生效._ 622 | 623 | - `玩家` 设置下列玩家的分数. 624 | - `分数` 要设置的分数. 625 | 626 | 627 | 628 | ## 设置玩家可选的英雄 Set Player Allowed Heroes 629 | 630 | _设置一名或多名玩家可用的英雄列表.如果玩家当前所使用的英雄变得不可用,则此玩家将被强制选择另一名英雄,并在适当的重生位置重生._ 631 | 632 | - `玩家` 设置下列玩家的英雄列表. 633 | - `英雄` 可供选择的英雄.如果没有提供英雄,此动作无效. 634 | 635 | 636 | 637 | ## 设置瞄准速度 Set Aim Speed 638 | 639 | _将一名或多名玩家的瞄准速度设置为其原始瞄准速度的一定百分比._ 640 | 641 | - `玩家` 设置下列玩家的瞄准速度. 642 | - `转向速度百分比` 将玩家的瞄准速度设置为此百分比. 643 | 644 | 645 | 646 | ## 设置移动速度 Set Move Speed 647 | 648 | _将一名或多名玩家的移动速度设置为其原始移动速度的一定百分比._ 649 | 650 | - `玩家` 设置下列玩家的移动速度. 651 | - `移动速度百分比` 将玩家的移动速度设置为此百分比. 652 | 653 | 654 | 655 | ## 设置终极技能充能 Set Ultimate Charge 656 | 657 | _将一名或多名玩家的终极技能充能设为最大充能的一定百分比._ 658 | 659 | - `玩家` 设置下列玩家的终极技能充能. 660 | - `充能百分比` ~~最大的充能百分比~~ 充能的最大百分比,可以使用大多数基于数值的"值"语法. * 661 | 662 | 663 | 664 | ## 设置辅助攻击模式启用 Set Secondary Fire Enabled 665 | 666 | _启用或禁用一名或多名玩家的辅助攻击模式._ 667 | 668 | - `玩家` 下列玩家的辅助攻击模式受到影响. 669 | - `启用` 指定一名或多名玩家是否能够使用辅助攻击模式.此处应为一个布尔值,如"真"、"假"或"比较式". 670 | 671 | 672 | 673 | ## 设置造成伤害 Set Damage Dealt 674 | 675 | _将一名或多名玩家造成的伤害设置为其原始造成伤害的一定百分比._ 676 | 677 | - `玩家` 设置下列玩家造成的伤害. 678 | - `造成伤害百分比` 将玩家所造成的伤害设置为此百分比. 679 | 680 | 681 | 682 | ## 设置造成治疗 Set Healing Dealt 683 | 684 | _将一名或多名玩家造成的治疗效果设置为其原始造成治疗的一定百分比._ 685 | 686 | - `玩家` 设置下列玩家造成的治疗. 687 | - `造成治疗百分比` 将玩家所造成的治疗设置为此百分比. 688 | 689 | 690 | 691 | ## 重置玩家英雄可选状态 Reset Player Hero Availability 692 | 693 | _将一名或多名玩家可用的英雄列表恢复至游戏设置所指定的英雄列表.如果玩家当前所使用的英雄变得不可用,则此玩家将被强制选择另一名英雄,并在适当的重生位置重生._ 694 | 695 | - `玩家` 下列玩家的英雄列表将被重置. 696 | 697 | 698 | 699 | ## 取消主要动作 Cancel Primary Action 700 | 701 | _取消一名或多名玩家启动技能的设置._ 702 | 703 | - `玩家` 下列玩家的启动技能将取消. 704 | 705 | 706 | 707 | ## 预加载英雄 Preload Hero 708 | 709 | _预先为指定的玩家将指定的英雄及皮肤加载入内存.当需要经常改变英雄且已知接下来要使用哪个英雄时适用._ 710 | 711 | - `玩家` 下列玩家将开始预载一名或多名英雄.对每名玩家,同一时间只能有一个"预载英雄"动作生效. 712 | - `英雄` 为指定的玩家加载下列英雄.当选择了包含多个英雄的数组时,靠前的英雄将被优先加载. 713 | 714 | 715 | 716 | ## 绑定玩家 Attach Players 717 | 718 | _将一名玩家(子玩家)与另一名玩家(父玩家)绑定. 绑定之后, 除非解除绑定或传送离开, 否则子玩家无法自由移动. 多个子玩家可以绑定至同一名父玩家, 但反之则不成立._ 719 | 720 | - `子玩家` 将此玩家绑定至父玩家. 在解除绑定或传送离开之前, 此玩家无法自由移动. 721 | - `父玩家` 将子玩家绑定至此玩家. 此玩家本身的动作不受影响, 而其行动会决定子玩家的位置. 722 | - `偏移` 子玩家与父玩家的相对坐标. 例如, 矢量 (1,2,0) 指示的是父玩家头顶左边的位置. 723 | 724 | 725 | 726 | ## 解除绑定玩家 Detach Players 727 | 728 | _为一名或多名玩家解除"绑定玩家"的行动产生的效果. 这些玩家将从其当前位置开始恢复自由行动的能力._ 729 | 730 | - `儿童` 下列玩家将与其父玩家解除绑定. (黑人问号???) 731 | 732 | 733 | 734 | ## 开始强制设置玩家位置 Start Forcing Player Position 735 | 736 | _开始强制一名玩家停留在指定位置. 如果启动了"重新复制", 那么每一帧都会重新为"位置"赋值, 让玩家进行强制移动._ 737 | 738 | - `玩家` 强制设置此玩家的位置. (重新复制选项不会影响此值.) 739 | - `位置` 将指定玩家设置至此位置. 如果"重新复制"选项启动, 会食用这个值强制使玩家移动. 740 | - `重新赋值` 如果此值为真, 那么每一帧都会重新计算"位置"这个变量的值, 如果此值为假, 则"位置"只会在此行动一开始时赋予一个值. 741 | 742 | 743 | 744 | ## 停止强制设置玩家位置 Stop Forcing Player Position 745 | 746 | _取消"开始强制设置玩家位置"行动为指定的一名或多名玩家造成的影响. 这些玩家将从其最后被强制设置到的位置开始进行正常移动._ 747 | 748 | - `玩家` 停止强制设置下列玩家的位置. 749 | 750 | 751 | 752 | ## 设置弹药 Set Ammo 753 | 754 | _设置一名或多名玩家的弹药数量._ 755 | 756 | - `玩家`: 设置下列玩家面朝的弹药数量. 757 | - `弹夹`: 设置索引处弹夹的弹药数量. 0为第一个弹夹, 1为第二个. 若指定类型不存在, 则不进行任何操作. 758 | - `弹药`: 要设置的弹药数量. 759 | 760 | 761 | 762 | ## 设置最大弹药 Set Max Ammo 763 | 764 | _设置一名或多名玩家的最大弹药数量._ 765 | 766 | - `玩家`: 设置下列玩家面朝的最大弹药数量. 767 | - `弹夹`: 设置索引处弹夹的最大弹药数量. 0为第一个弹夹, 1为第二个. 若指定类型不存在, 则不进行任何操作. 768 | - `最大弹药`: 要设置的最大弹药数量. 769 | 770 | 771 | 772 | ## 设置武器 Set Weapon 773 | 774 | _设置一名或多名玩家的武器._ 775 | 776 | - `玩家`: 设置下列玩家的武器. 777 | - `武器`: 正在装备的武器号码. 1为主武器, 2为辅助武器. 如果指定的武器不存在, 玩家将使用默认武器. 778 | 779 | 780 | 781 | ## 设置装填启用 Set Reload Enabled 782 | 783 | _启用或禁用一名或多名玩家的装填._ 784 | 785 | - `玩家`: 下列玩家的装填将受到影响. 786 | - `启用`: 玩家是否可以使用装填. 此处应为一个布尔值, 如 “真”, “假” 或 “比较式”. 787 | 788 | 789 | 790 | ## 隐藏游戏模式HUD Disable Game Mode HUD 791 | 792 | _隐藏一名或多名玩家的游戏模式HUD, 知道重新被显示为止._ 793 | 794 | - `玩家`: 下列玩家的游戏模式HUD将被隐藏. 795 | 796 | 797 | 798 | ## 显示游戏模式HUD Enable Game Mode HUD 799 | 800 | _取消 “隐藏游戏模式HUD” 动作的效果._ 801 | 802 | - `玩家`: 下列玩家的游戏模式HUD将被显示. 803 | 804 | 805 | 806 | ## 隐藏游戏模式世界UI Disable Game Mode In-World UI 807 | 808 | _隐藏一名或多名玩家的游戏模式世界UI,直到重新被显示为止._ 809 | 810 | - `玩家`: 下列玩家的游戏模式世界UI将被隐藏. 811 | 812 | 813 | 814 | ## 显示游戏模式世界UI Enable Game Mode In-World UI 815 | 816 | _取消 “隐藏游戏模式世界UI” 动作的效果._ 817 | 818 | - `玩家`: 下列玩家的游戏模式世界UI将被显示. 819 | 820 | 821 | 822 | ## 隐藏英雄HUD Disable Hero HUD 823 | 824 | _隐藏一名或多名玩家的英雄HUD,直到重新被显示为止._ 825 | 826 | - `玩家`: 下列玩家的英雄HUD将被隐藏. 827 | 828 | 829 | 830 | ## 显示英雄HUD Enable Hero HUD 831 | 832 | _取消 “隐藏英雄HUD” 动作的效果._ 833 | 834 | - `玩家`: 下列玩家的英雄HUD将被显示. 835 | 836 | 837 | 838 | ## 设置技能充能 Set Ability Charge 839 | 840 | _设置一名或多名玩家的技能充能次数 (如果支持的话)._ 841 | 842 | - `玩家`: 下列玩家的技能充能次数将被修改. 843 | - `按钮`: 与此技能关联的逻辑按钮将被修改. 844 | - `充能计数`: 要设置的充能次数. 845 | 846 | 847 | 848 | ## 设置技能资源 Set Ability Resource 849 | 850 | _设置一名或多名玩家的技能资源百分比 (如果支持的话)._ 851 | 852 | - `玩家`: 下列玩家的技能资源百分比将被修改. 853 | - `按钮`: 与此技能关联的逻辑按钮将被修改. 854 | - `资源百分比`: 技能资源相对于每位玩家技能资源量的百分比. 855 | 856 | 857 | 858 | ## 设置跳跃垂直速度 Set Jump Vertical Speed 859 | 860 | _将一名或多名玩家的跳跃垂直速度设置为其原始跳跃垂直速度的一定百分比._ 861 | 862 | - `玩家`: 设置下列玩家的跳跃垂直速度. 863 | - `垂直跳跃速度百分比`: 将玩家的跳跃垂直速度设置为此百分比. 864 | 865 | 866 | 867 | ## 隐藏姓名板 Disable Nameplates 868 | 869 | _从观察玩家的视角看, 被观察的玩家的姓名板将被隐藏._ 870 | 871 | - `被观察的玩家`: 下列被观察的玩家的姓名板将被隐藏. 872 | - `观察玩家`: 从此观察玩家的视角看, 被观察的玩家的姓名板将被隐藏. 873 | 874 | 875 | 876 | ## 显示姓名板 Enable Nameplates 877 | 878 | _从观察玩家的视角看, 取消被观察的玩家的 “隐藏姓名板” 效果._ 879 | 880 | - `被观察的玩家`: 下列被观察的玩家的姓名板将被显示. 881 | - `观察玩家`: 从此观察玩家的视角看, 被观察的玩家的姓名板将被显示. 882 | 883 | 884 | 885 | ## 开始强制设置玩家轮廓 Start Forcing Player Outlines 886 | 887 | _从观察玩家的视角看, 设置被观察的玩家的轮廓的可见性和颜色._ 888 | 889 | - `被观察的玩家`: 被观察的玩家的轮廓将被修改. 890 | - `观察玩家`: 从观察玩家的视角看, 被观察的玩家的轮廓将被修改. 891 | - `可见`: 指定玩家的轮廓是否可见. 892 | - `颜色`: 指定玩家的轮廓的颜色 (如果可见). 如果选择了特定的队伍, 那么此颜色将为红色或蓝色, 取决于此队伍是观察者的友方还是敌方. 893 | 894 | 895 | 896 | ## 停止强制设置玩家轮廓 Stop Forcing Player Outlines 897 | 898 | _从观察玩家的视角看, 取消被观察的玩家的 “开始强制设置玩家轮廓” 的效果._ 899 | 900 | - `被观察的玩家`: 下列被观察的玩家的轮廓将被设置. 901 | - `观察玩家`: 从观察玩家的视角看, 被观察的玩家的轮廓将被重新设置. 902 | 903 | 904 | 905 | ## 为玩家添加生命池 Add Health Pool To Player 906 | 907 | _为一名或多名玩家添加临时的生命池. 如果要指定此生命池, 可以使用 “上一个创建的生命池” 值. 同一名玩家身上任意一个生命值类型 (生命, 护甲或护盾) 的生命池最多可以存在16个 (包括基本生命池和由技能获得的生命池)._ 908 | 909 | - `玩家`: 下列玩家将得到此生命池. 910 | - `生命值类型`: 指定此生命池中所包含的生命值类型 (护甲或护盾). 911 | - `最大生命值`: 生命池的数值. 912 | - `可恢复`: 此生命池中的生命在失去后是否可以由治疗恢复. 如果此值为假, 则此生命值在受到伤害后会削减并消失. 913 | 914 | 915 | 916 | ## 移除玩家的生命池 Remove Health Pool From Player 917 | 918 | _移除由 “添加生命池” 行动添加的一个生命池._ 919 | 920 | - `生命池ID`: 指定一个由 “添加生命池” 动作所创建的生命池. (可以用 “最后创建的生命池” 获得生命池ID的值. 921 | 922 | 923 | 924 | ## 移除玩家的所有生命池 Remove All Health Pool From Player 925 | 926 | _移除由 “添加生命池” 行动添加的所有生命池._ 927 | 928 | - `玩家`: 下列玩家身上所添加的生命池将移除. 929 | 930 | 931 | 932 | ## 设置玩家生命值 Set Player Health 933 | 934 | _设置一名或多名玩家的生命值, 同时不影响状态, 也不造成伤害/治疗. 此行动只会对还活着的玩家造成影响. (对死去的玩家, 请使用 “复活玩家” 动作.)_ 935 | 936 | - `玩家`: 将玩家的生命设为此值. 937 | - `数值`: 玩家所能拥有的最大生命值. 938 | 939 | 940 | 941 | ## 开始调整玩家大小 Start Scaling Players 942 | 943 | _开始调整一名或多名玩家的大小 (会影响模型, 移动碰撞, 命中判定及部分技能). 请注意将大体型的玩家放置到复杂环境中会严重影响服务器负载, 所以在做出此调整的同时应用 "禁用与环境的移动碰撞" 行动._ 944 | 945 | - `玩家`: 设置下列玩家的大小. 946 | - `大小`: 此系数将作用于玩家的大小 (0.5即为一半大小, 2.0为大小加倍, 诸如此类). 947 | - `重新赋值`: 如果此值为真, 那么每一帧会重新计算玩家的大小. 如果此值为假, 则大小只会在此行动一开始时赋予一个值. 948 | 949 | 950 | 951 | ## 停止调整玩家大小 Stop Scaling Players 952 | 953 | _停止调整一名或多名玩家的大小._ 954 | 955 | - `玩家`: 停止强制设置下列玩家的大小. 956 | 957 | 958 | 959 | ## 开始调整屏障大小 Start Scaling Barriers 960 | 961 | _开始调整一名或多名玩家的屏障大小._ 962 | 963 | - `玩家`: 停止强制设置下列玩家的屏障大小. 964 | - `大小`: 此系数将作用于玩家的大小 (0.5即为一半大小, 2.0为大小加倍, 诸如此类), 此调整以 "开始调整玩家大小" 动作所设置的大小为基准. 965 | - `重新赋值`: 如果此值为真, 那么每一帧都会重新计算玩家的屏障大小. 如果此值为假, 则大小只会在此行动一开始时赋予一个值. 966 | 967 | 968 | 969 | ## 停止调整屏障大小 Stop Scaling Barriers 970 | 971 | _停止调整一名或多名玩家的屏障大小._ 972 | 973 | - `玩家`: 停止改变下列玩家的屏障大小. 974 | -------------------------------------------------------------------------------- /manual/documents/action-team.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 队伍 3 | lang: zh-CN 4 | --- 5 | 6 | # 队伍 7 | 8 | 9 | 10 | ## 设置队伍分数 Set Team Score 11 | 12 | _设置一方或双方队伍的分数.此动作在自由混战模式或没有队伍分数的模式中无效._ 13 | 14 | - `队伍` 要设置分数的队伍. 15 | - `分数` 要设置的分数. 16 | 17 | 18 | 19 | ## 修改队伍分数 Modify Team Score 20 | 21 | _改变一方或双方队伍的分数.此动作在自由混战模式或没有队伍分数的模式中无效._ 22 | 23 | - `队伍` 要改变分数的队伍. 24 | - `分数` 增加或减少的分数.如果为正数则增加分数,为负数则减少分数. 25 | 26 | 27 | 28 | ## 开始强制重生室 Start Forcing Spawn Room 29 | 30 | _强制一支队伍在指定的重生室重生,不管在游戏模式中应当使用哪个重生室.此动作只会在攻防作战、攻击/护送和运载目标地图上生效._ 31 | 32 | - `队伍` 这支队伍将被强制使用指定重生室. 33 | - `室内` 强制使用的重生室编号.0为第一间重生室,1为第二间,2为第三间.如果指定的重生室不存在,则玩家会使用正常状态下的重生室. 34 | 35 | 36 | 37 | ## 停止强制重生室 Stop Forcing Spawn Room 38 | 39 | _取消"开始强制使用重生室"动作对一支队伍的效果._ 40 | 41 | - `队伍` 这支队伍将使用正常状态下的重生室重生. 42 | -------------------------------------------------------------------------------- /manual/documents/action-variable.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 变量 3 | lang: zh-CN 4 | --- 5 | 6 | # 变量 7 | 8 | ## 设置全局变量 Set Global Variable 9 | 10 | _将一个值存储为一个全局变量,全局变量即属于游戏本身的变量._ 11 | 12 | - `变量` 指定将值存储到哪个全局变量. 13 | - `值` 此值将被存储. 14 | 15 | 16 | 17 | ## 设置玩家变量 Set Player Variable 18 | 19 | _将一个值存储为一个玩家变量,玩家变量即属于一个特定玩家的变量._ 20 | 21 | - `玩家` 此玩家的变量将被设置.如果有多个玩家,则每个玩家的变量都被设置. 22 | - `变量` 指定将值存储到哪个玩家变量. 23 | - `值` 此值将被存储. 24 | 25 | 26 | 27 | ## 修改全局变量 Modify Global Variable 28 | 29 | _修改一个全局变量的值,全局变量即属于游戏本身的变量._ 30 | 31 | - `变量` 要修改的全局变量. 32 | - `操作` 变量的值改变的方式.选项包括标准运算操作,以及数组操作(如添加或移除值). 33 | - `值` 用于修改的值.若要进行运算操作,则此值为两个运算量中的第二个,第一个运算量为变量当前的值.若要进行数组操作,则此值是用于添加或移除的值. 34 | 35 | 36 | 37 | ## 修改玩家变量 Modify Player Variable 38 | 39 | _修改一个玩家变量的值,玩家变量即属于一个特定玩家的变量._ 40 | 41 | - `玩家` 此玩家的变量将被修改.如果有多个玩家,则每个玩家的变量都被设置. 42 | - `变量` 要修改的玩家变量. 43 | - `操作` 变量的值改变的方式.选项包括标准运算操作,以及数组操作(如添加或移除值). 44 | - `值` 用于修改的值.若要进行运算操作,则此值为两个运算量中的第二个,第一个运算量为变量当前的值.若要进行数组操作,则此值是用于添加或移除的值. 45 | 46 | 47 | 48 | ## 对于全局变量 For Global Variable 49 | 50 | _表示在循环中执行的一系列行动的开始, 并在每次循环时修改控制变量的值. 当前级别中的下一个end行动表示循环的结束. 如果执行至循环顶部时, 控制条件达到或超过终止值, 则退出循环, 跳至end操作之后的下一个操作执行._ 51 | 52 | 53 | 54 | ## 对于玩家变量 For Player Variable 55 | 56 | _表示在循环中执行的一系列行动的开始, 并在每次循环时修改控制变量的值. 当前级别中的下一个end行动表示循环的结束. 如果执行至循环顶部时, 控制条件达到或超过终止值, 则退出循环, 跳至end操作之后的下一个操作执行._ 57 | 58 | 59 | 60 | ## 在索引处设置全局变量 Set Global Variable At Index 61 | 62 | _为一个全局变量寻找或创建一个数组,然后将一个值储存至指定的索引处.全局变量即属于游戏本身的变量._ 63 | 64 | - `变量` 指定哪个全局变量的值是要修改的数组.如果变量的值不是一个数组,则使其值变为一个空的数组. 65 | - `索引` 修改数组的索引.如果索引的位置已经超过了数组的末尾,则将数组延伸至索引位置,且新的元素值均为0. 66 | - `值` 将此值存储到数组中. 67 | 68 | 69 | 70 | ## 在索引处设置玩家变量 Set Player Variable At Index 71 | 72 | _为一个玩家变量寻找或创建一个数组,然后将一个值储存至指定的索引处.玩家变量即属于一个特定玩家的变量._ 73 | 74 | - `玩家` 此玩家的变量将被修改.如果有多个玩家,则每个玩家的变量都被修改. 75 | - `变量` 指定哪个玩家变量的值是要修改的数组.如果变量的值不是一个数组,则使其值变为一个空的数组. 76 | - `索引` 修改数组的索引.如果索引的位置已经超过了数组的末尾,则将数组延伸至索引位置,且新的元素值均为0. 77 | - `值` 将此值存储到数组中. 78 | 79 | 80 | 81 | ## 在索引处修改全局变量 Modify Global Variable At Index 82 | 83 | _修改索引处一个全局变量的值,全局变量即属于游戏本身的变量._ 84 | 85 | - `变量` 要修改的全局变量. 86 | - `索引` 修改数组的索引.如果索引的位置已经超过了数组的末尾,则将数组延伸至索引位置,且新的元素值均为0. 87 | - `操作` 变量的值改变的方式.选项包括标准运算操作,以及数组操作(如添加或移除值). 88 | - `值` 用于修改的值.若要进行运算操作,则此值为两个运算量中的第二个,第一个运算量为变量当前的值.若要进行数组操作,则此值是用于添加或移除的值. 89 | 90 | 91 | 92 | ## 在索引处修改玩家变量 Modify Player Variable At Index 93 | 94 | _修改索引处一个玩家变量的值,玩家变量即属于一个特定玩家的变量._ 95 | 96 | - `玩家` 此玩家的变量将被修改.如果有多个玩家,则每个玩家的变量都被设置. 97 | - `变量` 要修改的玩家变量. 98 | - `索引` 修改数组的索引.如果索引的位置已经超过了数组的末尾,则将数组延伸至索引位置,且新的元素值均为0. 99 | - `操作` 变量的值改变的方式.选项包括标准运算操作,以及数组操作(如添加或移除值). 100 | - `值` 用于修改的值.若要进行运算操作,则此值为两个运算量中的第二个,第一个运算量为变量当前的值.若要进行数组操作,则此值是用于添加或移除的值. 101 | 102 | 103 | 104 | ## 持续追踪全局变量 Chase Global Variable Over Time 105 | 106 | _逐渐改变一个全局变量的值,全局变量即属于游戏本身的变量._ 107 | 108 | - `变量` 指定要改变的全局变量. 109 | - `最终值` 该全局变量最后达到的值.这个值的类型可以是数字或矢量,然而必须与追踪开始时全局变量所具有的值相同. 110 | - `持续时间` 变量到达最终值所用的时间,以秒为单位. 111 | - `重新赋值` 指定此动作的某个输入值被持续重新赋值.此动作会要求输入新的数值,并用输入的数值进行重新赋值. 112 | 113 | 114 | 115 | ## 持续追踪玩家变量 Chase Player Variable Over Time 116 | 117 | _逐步改变一个玩家变量的值,玩家变量即属于一个特定玩家的变量._ 118 | 119 | - `玩家` 此玩家的变量将被逐渐改变.如果有多个玩家,则每个玩家的变量都各自被改变 120 | - `变量` 指定将要改变的玩家变量. 121 | - `最终值` 该玩家变量最后达到的值.这个值的类型可以是数字或矢量,然而必须与追踪开始时玩家变量所具有的值相同. 122 | - `持续时间` 变量到达最终值所用的时间,以秒为单位. 123 | - `重新赋值` 指定此动作的某个输入值被持续重新赋值.此动作会要求输入新的数值,并用输入的数值进行重新赋值. 124 | 125 | 126 | 127 | ## 追踪全局变量频率 Chase Global Variable At Rate 128 | 129 | _以指定的速率逐步改变一个全局变量的值,全局变量即属于游戏本身的变量._ 130 | 131 | - `变量` 指定要改变的全局变量. 132 | - `最终值` 该全局变量最后达到的值.这个值的类型可以是数字或矢量,然而必须与追踪开始时全局变量所具有的值相同. 133 | - `刷新率` 此变量的值每秒改变的量. 134 | - `重新赋值` 指定此动作的某个输入值被持续重新赋值.此动作会要求输入新的数值,并用输入的数值进行重新赋值. 135 | 136 | 137 | 138 | ## 追踪玩家变量频率 Chase Player Variable At Rate 139 | 140 | _以指定的速率逐步改变一个玩家变量的值,玩家变量即属于一个特定玩家的变量._ 141 | 142 | - `玩家` 此玩家的变量将被逐渐改变.如果有多个玩家,则每个玩家的变量都各自被改变. 143 | - `变量` 指定将要改变的玩家变量. 144 | - `最终值` 该玩家变量最后达到的值.这个值的类型可以是数字或矢量,然而必须与追踪开始时变量所具有的值相同. 145 | - `刷新率` 此变量的值每秒改变的量. 146 | - `重新赋值` 指定此动作的某个输入值被持续重新赋值.此动作会要求输入新的数值,并用输入的数值进行重新赋值. 147 | 148 | 149 | 150 | ## 停止追踪全局变量 Stop Chasing Global Variable 151 | 152 | _停止追踪一个全局变量,并使其保持为当前值._ 153 | 154 | - `变量` 指定要停止修改的全局变量. 155 | 156 | 157 | 158 | ## 停止追踪玩家变量 Stop Chasing Player Variable 159 | 160 | _停止追踪一个玩家变量,并使其保持为当前值._ 161 | 162 | - `玩家` 此玩家的变量将停止改变.如果有多个玩家,则每个玩家的变量都将停止改变. 163 | - `变量` 指定要停止修改的玩家变量. 164 | -------------------------------------------------------------------------------- /manual/documents/contributor.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 贡献者 3 | lang: zh-CN 4 | --- 5 | 6 | # 贡献者 7 | 8 | 衷心感谢以下朋友对文档做出的贡献. 9 | 10 | ## 昭华 11 | 12 | - 整理贡献了文档主体 13 | 14 | ## 星夏 15 | 16 | - 整理了动作(Action) 列表中英对照命令名 17 | 18 | ## Tresni 19 | 20 | - 对事件(Event)提出了建议 21 | - 对值(Value)部分进行了再次精校 22 | - 对动作(Action)部分进行了再次精校 23 | -------------------------------------------------------------------------------- /manual/documents/event.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 事件 (Event) 3 | lang: zh-CN 4 | --- 5 | 6 | # 事件 (Event) 7 | 8 | ## 位置图示 9 | 10 | - ![eEQDqf.png](https://s2.ax1x.com/2019/07/24/eEQDqf.png) 11 | 12 | ## 持续 - 全局 Ongoing - Global 13 | 14 | _当比赛开始时,创建此规则的单一副本。此副本在整场比赛中保持激活状态。_ 15 | 16 | - 由于副本会在整场比赛中保持激活,所以有时会满足条件,有时会不满足条件。当首次检查就满足条件时,则会执行行动列表。 17 | - 当未满足条件列表,但之后又满足时,则会尝试再次执行行动列表。 18 | 19 | 20 | 21 | ## 持续 - 每名玩家 Ongoing - Each Player 22 | 23 | _当玩家加入比赛时,为每位玩家创建此规则的副本。此副本会保持激活,直至玩家离开比赛或比赛结束。每个副本都会独立追踪并执行条件和行动。_ 24 | 25 | - 只要玩家在比赛中,副本就会保持激活,所以有时会满足条件,有时会不满足条件。当首次检查就满足条件时,则会执行行动列表。 26 | - 当未满足条件列表,但之后又满足时,则会尝试再次执行行动列表。 27 | 28 | ### 队伍 29 | 30 | - 双方 - 本规则将追踪和处理双方队伍(包括自由混战的全部玩家)所产生的事件,当条件满足时执行动作列表 31 | - 队伍1 - 本规则仅追踪和处理队伍1(蓝队/防守方)所产生的事件,当条件满足时执行动作列表 32 | - 队伍2 - 本规则仅追踪和处理队伍2(红队/进攻方)所产生的事件,当条件满足时执行动作列表 33 | 34 | ### 位置 35 | 36 | - (0-11) - 本规则仅追踪和处理该位置的玩家(指在大厅中的顺序位置)所产生的事件,当条件满足时执行动作列表 37 | - {英雄名称} - 本规则仅追踪和处理在指定`队伍`中使用该英雄的所有玩家所产生的事件,当条件满足时执行动作列表 38 | 39 | 40 | 41 | ## 玩家参与消灭 Player Earned Elimination 42 | 43 | _当玩家参与消灭时执行规则。每名玩家一次只能激活一个规则副本。_ 44 | 45 | - 当玩家参与消灭时,检查条件。如果满足条件,则执行行动列表。如果不满足,则不会执行行动列表。 46 | 47 | ### 队伍 48 | 49 | - 双方 - 本规则将追踪和处理双方队伍(包括自由混战的全部玩家)所产生的参与消灭事件,当条件满足时执行动作列表 50 | - 队伍1 - 本规则仅追踪和处理队伍1(蓝队/防守方)所产生的参与消灭事件,当条件满足时执行动作列表 51 | - 队伍2 - 本规则仅追踪和处理队伍2(红队/进攻方)所产生的参与消灭事件,当条件满足时执行动作列表 52 | 53 | ### 位置 54 | 55 | - (0-11) - 本规则仅追踪和处理该位置的玩家(指在大厅中的顺序位置)所产生的参与消灭事件,当条件满足时执行动作列表 56 | - {英雄名称} - 本规则仅追踪和处理在指定`队伍`中使用该英雄的所有玩家所产生的参与消灭事件,当条件满足时执行动作列表 57 | 58 | 59 | 60 | ## 玩家造成最后一击 Player Dealt Final Blow 61 | 62 | _当玩家造成最后一击时执行规则。每名玩家一次只能激活一个规则副本。_ 63 | 64 | - 当玩家对任何人造成最后一击时,检查条件。如果满足条件,则执行行动列表。如果不满足,则不会执行行动列表。 65 | 66 | ### 队伍 67 | 68 | - 双方 - 本规则将追踪和处理双方队伍(包括自由混战的全部玩家)所产生的造成最后一击事件,当条件满足时执行动作列表 69 | - 队伍1 - 本规则仅追踪和处理队伍1(蓝队/防守方)所产生的造成最后一击事件,当条件满足时执行动作列表 70 | - 队伍2 - 本规则仅追踪和处理队伍2(红队/进攻方)所产生的造成最后一击事件,当条件满足时执行动作列表 71 | 72 | ### 位置 73 | 74 | - (0-11) - 本规则仅追踪和处理该位置的玩家(指在大厅中的顺序位置)所产生的造成最后一击事件,当条件满足时执行动作列表 75 | - {英雄名称} - 本规则仅追踪和处理在指定`队伍`中使用该英雄的所有玩家所产生的造成最后一击事件,当条件满足时执行动作列表 76 | 77 | 78 | 79 | ## 玩家造成伤害 Player Dealt Damage 80 | 81 | _当玩家造成伤害时执行规则。每名玩家一次只能激活一个规则副本。_ 82 | 83 | - 当玩家对任何玩家造成伤害时,检查条件。如果满足条件,则执行行动列表。如果不满足,则不会执行行动列表。 84 | 85 | ### 队伍 86 | 87 | - 双方 - 本规则将追踪和处理双方队伍(包括自由混战的全部玩家)所产生的造成伤害事件,当条件满足时执行动作列表 88 | - 队伍1 - 本规则仅追踪和处理队伍1(蓝队/防守方)所产生的造成伤害事件,当条件满足时执行动作列表 89 | - 队伍2 - 本规则仅追踪和处理队伍2(红队/进攻方)所产生的造成伤害事件,当条件满足时执行动作列表 90 | 91 | ### 位置 92 | 93 | - (0-11) - 本规则仅追踪和处理该位置的玩家(指在大厅中的顺序位置)所产生的造成伤害事件,当条件满足时执行动作列表 94 | - {英雄名称} - 本规则仅追踪和处理在指定`队伍`中使用该英雄的所有玩家所产生的造成伤害事件,当条件满足时执行动作列表 95 | 96 | 97 | 98 | ## 玩家受到伤害 Player Took Damage 99 | 100 | _当玩家受到伤害时执行规则。每名玩家一次只能激活一个规则副本。_ 101 | 102 | - 当玩家受到任何玩家伤害时,检查条件。如果满足条件,则执行行动列表。如果不满足,则不会执行行动列表。 103 | 104 | ### 队伍 105 | 106 | - 双方 - 本规则将追踪和处理双方队伍(包括自由混战的全部玩家)所产生的受到伤害事件,当条件满足时执行动作列表 107 | - 队伍1 - 本规则仅追踪和处理队伍1(蓝队/防守方)所产生的受到伤害事件,当条件满足时执行动作列表 108 | - 队伍2 - 本规则仅追踪和处理队伍2(红队/进攻方)所产生的受到伤害事件,当条件满足时执行动作列表 109 | 110 | ### 位置 111 | 112 | - (0-11) - 本规则仅追踪和处理该位置的玩家(指在大厅中的顺序位置)所产生的受到伤害事件,当条件满足时执行动作列表 113 | - {英雄名称} - 本规则仅追踪和处理在指定`队伍`中使用该英雄的所有玩家所产生的受到伤害事件,当条件满足时执行动作列表 114 | 115 | 116 | 117 | ## 玩家阵亡 Player Died 118 | 119 | _当玩家阵亡时执行规则。每名玩家一次只能激活一个规则副本。_ 120 | 121 | - 当玩家阵亡时,检查条件。如果满足条件,则执行行动列表。如果不满足,则不会执行行动列表。 122 | 123 | ### 队伍 124 | 125 | - 双方 - 本规则将追踪和处理双方队伍(包括自由混战的全部玩家)所产生的玩家阵亡事件,当条件满足时执行动作列表 126 | - 队伍1 - 本规则仅追踪和处理队伍1(蓝队/防守方)所产生的玩家阵亡事件,当条件满足时执行动作列表 127 | - 队伍2 - 本规则仅追踪和处理队伍2(红队/进攻方)所产生的玩家阵亡事件,当条件满足时执行动作列表 128 | 129 | ### 位置 130 | 131 | - (0-11) - 本规则仅追踪和处理该位置的玩家(指在大厅中的顺序位置)所产生的玩家阵亡事件,当条件满足时执行动作列表 132 | - {英雄名称} - 本规则仅追踪和处理在指定`队伍`中使用该英雄的所有玩家所产生的玩家阵亡事件,当条件满足时执行动作列表 133 | 134 | 135 | 136 | ## 玩家造成治疗 Player Dealt Healing 137 | 138 | _当玩家造成治疗时执行规则。每名玩家一次只能激活一个规则副本。_ 139 | 140 | - 当玩家造成治疗时,检查条件。如果满足条件,则执行行动列表。如果不满足,则不会执行行动列表。 141 | 142 | ### 队伍 143 | 144 | - 双方 - 本规则将追踪和处理双方队伍(包括自由混战的全部玩家)所产生的玩家造成治疗事件,当条件满足时执行动作列表 145 | - 队伍1 - 本规则仅追踪和处理队伍1(蓝队/防守方)所产生的玩家造成治疗事件,当条件满足时执行动作列表 146 | - 队伍2 - 本规则仅追踪和处理队伍2(红队/进攻方)所产生的玩家造成治疗事件,当条件满足时执行动作列表 147 | 148 | ### 位置 149 | 150 | - (0-11) - 本规则仅追踪和处理该位置的玩家(指在大厅中的顺序位置)所产生的玩家造成治疗事件,当条件满足时执行动作列表 151 | - {英雄名称} - 本规则仅追踪和处理在指定`队伍`中使用该英雄的所有玩家所产生的玩家造成治疗事件,当条件满足时执行动作列表 152 | 153 | 154 | 155 | ## 玩家受到治疗 Player Received Healing 156 | 157 | _当玩家受到治疗时执行规则。每名玩家一次只能激活一个规则副本。_ 158 | 159 | - 当玩家受到治疗时,检查条件。如果满足条件,则执行行动列表。如果不满足,则不会执行行动列表。 160 | 161 | ### 队伍 162 | 163 | - 双方 - 本规则将追踪和处理双方队伍(包括自由混战的全部玩家)所产生的玩家受到治疗事件,当条件满足时执行动作列表 164 | - 队伍1 - 本规则仅追踪和处理队伍1(蓝队/防守方)所产生的玩家受到治疗事件,当条件满足时执行动作列表 165 | - 队伍2 - 本规则仅追踪和处理队伍2(红队/进攻方)所产生的玩家受到治疗事件,当条件满足时执行动作列表 166 | 167 | ### 位置 168 | 169 | - (0-11) - 本规则仅追踪和处理该位置的玩家(指在大厅中的顺序位置)所产生的玩家受到治疗事件,当条件满足时执行动作列表 170 | - {英雄名称} - 本规则仅追踪和处理在指定`队伍`中使用该英雄的所有玩家所产生的玩家受到治疗事件,当条件满足时执行动作列表 171 | 172 | 173 | 174 | ## 玩家造成击退 Player Dealt Knockback 175 | 176 | _当玩家造成击退时执行规则. 每名玩家一次只能激活一个规则副本._ 177 | 178 | - 当玩家造成击退时, 检查条件. 如果满足条件, 则执行行动列表. 如果不满足, 则不会执行列表. 179 | 180 | ### 队伍 181 | 182 | - 双方 - 本规则将追踪和处理双方队伍(包括自由混战的全部玩家)所产生的玩家受到治疗事件,当条件满足时执行动作列表 183 | - 队伍1 - 本规则仅追踪和处理队伍1(蓝队/防守方)所产生的玩家受到治疗事件,当条件满足时执行动作列表 184 | - 队伍2 - 本规则仅追踪和处理队伍2(红队/进攻方)所产生的玩家受到治疗事件,当条件满足时执行动作列表 185 | 186 | ### 位置 187 | 188 | - (0-11) - 本规则仅追踪和处理该位置的玩家(指在大厅中的顺序位置)所产生的玩家受到治疗事件,当条件满足时执行动作列表 189 | - {英雄名称} - 本规则仅追踪和处理在指定`队伍`中使用该英雄的所有玩家所产生的玩家受到治疗事件,当条件满足时执行动作列表 190 | 191 | 192 | 193 | ## 玩家受到击退 Player Received Knockback 194 | 195 | _当玩家受到击退时执行规则. 每名玩家一次只能激活一个规则副本._ 196 | 197 | - 当玩家造成击退时, 检查条件. 如果满足条件, 则执行行动列表. 如果不满足, 则不会执行列表. 198 | 199 | ### 队伍 200 | 201 | - 双方 - 本规则将追踪和处理双方队伍(包括自由混战的全部玩家)所产生的玩家受到治疗事件,当条件满足时执行动作列表 202 | - 队伍1 - 本规则仅追踪和处理队伍1(蓝队/防守方)所产生的玩家受到治疗事件,当条件满足时执行动作列表 203 | - 队伍2 - 本规则仅追踪和处理队伍2(红队/进攻方)所产生的玩家受到治疗事件,当条件满足时执行动作列表 204 | 205 | ### 位置 206 | 207 | - (0-11) - 本规则仅追踪和处理该位置的玩家(指在大厅中的顺序位置)所产生的玩家受到治疗事件,当条件满足时执行动作列表 208 | - {英雄名称} - 本规则仅追踪和处理在指定`队伍`中使用该英雄的所有玩家所产生的玩家受到治疗事件,当条件满足时执行动作列表 209 | 210 | 211 | 212 | ## 玩家加入比赛 Player Joined Match 213 | 214 | _当玩家加入比赛时执行规则。每名玩家一次只能激活一个规则副本。_ 215 | 216 | - 当玩家加入比赛时,检查条件。如果满足条件,则执行行动列表。如果不满足,则不会执行行动列表。 217 | 218 | ### 队伍 219 | 220 | - 双方 - 本规则将追踪和处理双方队伍(包括自由混战的全部玩家)所产生的玩家加入比赛事件,当条件满足时执行动作列表 221 | - 队伍1 - 本规则仅追踪和处理队伍1(蓝队/防守方)所产生的玩家加入比赛事件,当条件满足时执行动作列表 222 | - 队伍2 - 本规则仅追踪和处理队伍2(红队/进攻方)所产生的玩家加入比赛事件,当条件满足时执行动作列表 223 | 224 | ### 位置 225 | 226 | - (0-11) - 本规则仅追踪和处理该位置的玩家(指在大厅中的顺序位置)所产生的玩家加入比赛事件,当条件满足时执行动作列表 227 | - {英雄名称} - 本规则仅追踪和处理在指定`队伍`中使用该英雄的所有玩家所产生的玩家加入比赛事件,当条件满足时执行动作列表 228 | 229 | 230 | 231 | ## 玩家离开比赛 Player Left Match 232 | 233 | _当玩家离开比赛时执行规则。每名玩家一次只能激活一个规则副本。_ 234 | 235 | - 当玩家离开比赛时,检查条件。如果满足条件,则执行行动列表。如果不满足,则不会执行行动列表。 236 | 237 | ### 队伍 238 | 239 | - 双方 - 本规则将追踪和处理双方队伍(包括自由混战的全部玩家)所产生的玩家离开比赛事件,当条件满足时执行动作列表 240 | - 队伍1 - 本规则仅追踪和处理队伍1(蓝队/防守方)所产生的玩家离开比赛事件,当条件满足时执行动作列表 241 | - 队伍2 - 本规则仅追踪和处理队伍2(红队/进攻方)所产生的玩家离开比赛事件,当条件满足时执行动作列表 242 | 243 | ### 位置 244 | 245 | - (0-11) - 本规则仅追踪和处理该位置的玩家(指在大厅中的顺序位置)所产生的玩家离开比赛事件,当条件满足时执行动作列表 246 | - {英雄名称} - 本规则仅追踪和处理在指定`队伍`中使用该英雄的所有玩家所产生的玩家离开比赛事件,当条件满足时执行动作列表 247 | -------------------------------------------------------------------------------- /manual/documents/icon.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 图标图示 (ICON) 3 | lang: zh-CN 4 | --- 5 | 6 | # 图标图示 (Icon) 7 | 8 | 以下所有效果参数皆为: 9 | 10 | - 颜色:蓝色 11 | 12 | 13 | 14 | ## 箭头:向下 Arrow:Down 15 | 16 | ![ebVkS1.png](https://s2.ax1x.com/2019/08/09/ebVkS1.png) 17 | 18 | 19 | 20 | ## 箭头:向左 Arrow:Left 21 | 22 | ![ebVVOK.png](https://s2.ax1x.com/2019/08/09/ebVVOK.png) 23 | 24 | 25 | 26 | ## 箭头:向右 Arrow:Right 27 | 28 | ![ebVAQx.png](https://s2.ax1x.com/2019/08/09/ebVAQx.png) 29 | 30 | 31 | 32 | ## 箭头:向上 Arrow:Up 33 | 34 | ![ebVEy6.png](https://s2.ax1x.com/2019/08/09/ebVEy6.png) 35 | 36 | 37 | 38 | ## 星形 Asterisk 39 | 40 | ![ebViWR.png](https://s2.ax1x.com/2019/08/09/ebViWR.png) 41 | 42 | 43 | 44 | ## 箭矢 Bolt 45 | 46 | ![ebVeeO.png](https://s2.ax1x.com/2019/08/09/ebVeeO.png) 47 | (没弄错,暴雪的翻译估计没看图标长啥样) 48 | 49 | 50 | 51 | ## 对号 Checkmark 52 | 53 | ![ebVmwD.png](https://s2.ax1x.com/2019/08/09/ebVmwD.png) 54 | 55 | 56 | 57 | ## 圆圈 Circle 58 | 59 | 60 | ![ebVnTe.png](https://s2.ax1x.com/2019/08/09/ebVnTe.png) 61 | 62 | 63 | 64 | ## 梅花 Club 65 | 66 | ![ebVKFH.png](https://s2.ax1x.com/2019/08/09/ebVKFH.png) 67 | 68 | 69 | 70 | ## 方块 Diamond 71 | 72 | ![ebVMYd.png](https://s2.ax1x.com/2019/08/09/ebVMYd.png) 73 | 74 | 75 | 76 | ## 晕眩 Dizzy 77 | 78 | ![ebVQfA.png](https://s2.ax1x.com/2019/08/09/ebVQfA.png) 79 | 80 | 81 | 82 | ## 感叹号 Exclamation Mark 83 | 84 | ![ebV1SI.png](https://s2.ax1x.com/2019/08/09/ebV1SI.png) 85 | 86 | 87 | 88 | ## 眼睛 Eye 89 | 90 | ![ebV3lt.png](https://s2.ax1x.com/2019/08/09/ebV3lt.png) 91 | 92 | 93 | 94 | ## 火焰 Fire 95 | 96 | ![ebV86P.png](https://s2.ax1x.com/2019/08/09/ebV86P.png) 97 | 98 | 99 | 100 | ## 旗帜 Flag 101 | 102 | ![ebVGOf.png](https://s2.ax1x.com/2019/08/09/ebVGOf.png) 103 | 104 | 105 | 106 | ## 光晕 Halo 107 | 108 | ![ebVYm8.png](https://s2.ax1x.com/2019/08/09/ebVYm8.png) 109 | 110 | 111 | 112 | ## 高兴 Happy 113 | 114 | ![ebVt0S.png](https://s2.ax1x.com/2019/08/09/ebVt0S.png) 115 | 116 | 117 | 118 | ## 红桃 Heart 119 | 120 | ![ebVakQ.png](https://s2.ax1x.com/2019/08/09/ebVakQ.png) 121 | 122 | 123 | 124 | ## 满月 Moon 125 | 126 | ![ebVdYj.png](https://s2.ax1x.com/2019/08/09/ebVdYj.png) 127 | (没弄错,暴雪的翻译估计没有看图标长啥样) 128 | 129 | 130 | 131 | ## 拒绝 No 132 | 133 | ![ebVwfs.png](https://s2.ax1x.com/2019/08/09/ebVwfs.png) 134 | 135 | 136 | 137 | ## 加号 Plus 138 | 139 | ![ebVBpn.png](https://s2.ax1x.com/2019/08/09/ebVBpn.png) 140 | 141 | 142 | 143 | ## 剧毒 Poison 144 | 145 | ![ebVr60.png](https://s2.ax1x.com/2019/08/09/ebVr60.png) 146 | 147 | 148 | 149 | ## 剧毒2 Poison 2 150 | 151 | ![ebV6mT.png](https://s2.ax1x.com/2019/08/09/ebV6mT.png) 152 | 153 | 154 | 155 | ## 问号 Question Mark 156 | 157 | ![ebVc0U.png](https://s2.ax1x.com/2019/08/09/ebVc0U.png) 158 | 159 | 160 | 161 | ## 辐射 Radioactive 162 | 163 | ![ebVRk4.png](https://s2.ax1x.com/2019/08/09/ebVRk4.png) 164 | 165 | 166 | 167 | ## 回收 Recycle 168 | 169 | ![ebVWtJ.png](https://s2.ax1x.com/2019/08/09/ebVWtJ.png) 170 | 171 | 172 | 173 | ## 宽环 Ring Thick 174 | 175 | ![ebV4pR.png](https://s2.ax1x.com/2019/08/09/ebV4pR.png) 176 | 177 | 178 | 179 | ## 细环 Ring Thin 180 | 181 | ![ebV511.png](https://s2.ax1x.com/2019/08/09/ebV511.png) 182 | 183 | 184 | 185 | ## 难过 Sad 186 | 187 | ![ebVoX6.png](https://s2.ax1x.com/2019/08/09/ebVoX6.png) 188 | 189 | 190 | 191 | ## 骷髅 Skull 192 | 193 | ![ebV7nK.png](https://s2.ax1x.com/2019/08/09/ebV7nK.png) 194 | 195 | 196 | 197 | ## 黑桃 Spade 198 | 199 | ![ebVb7D.png](https://s2.ax1x.com/2019/08/09/ebVb7D.png) 200 | 201 | 202 | 203 | ## 螺旋 Spiral 204 | 205 | ![ebVOtH.png](https://s2.ax1x.com/2019/08/09/ebVOtH.png) 206 | 207 | 208 | 209 | ## 停止 Stop 210 | 211 | ![ebVXhd.png](https://s2.ax1x.com/2019/08/09/ebVXhd.png) 212 | 213 | 214 | 215 | ## 垃圾箱 Trashcan 216 | 217 | ![ebVx1I.png](https://s2.ax1x.com/2019/08/09/ebVx1I.png) 218 | 219 | 220 | 221 | ## 警告 Warning 222 | 223 | ![ebVzct.png](https://s2.ax1x.com/2019/08/09/ebVzct.png) 224 | 225 | 226 | 227 | ## X /Eks/ 228 | 229 | ![ebZSjP.png](https://s2.ax1x.com/2019/08/09/ebZSjP.png) 230 | -------------------------------------------------------------------------------- /manual/documents/string.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 字符串(String) 3 | lang: zh-CN 4 | --- 5 | 6 | |英文版本|中文版本| 7 | |-----|-----| 8 | -> {0}|-> {0} 9 | !|! 10 | !!|!! 11 | !!!|!!! 12 | #{0}|#{0} 13 | ({0})|({0}) 14 | *|* 15 | ...|…… 16 | ?|? 17 | ??|?? 18 | ???|??? 19 | {0} - {1}|{0} - {1} 20 | {0} - {1} - {2}|{0} - {1} - {2} 21 | {0} ->|{0} -> 22 | {0} -> {1}|{0} -> {1} 23 | {0} != {1}|{0} != {1} 24 | {0} * {1}|{0} * {1} 25 | {0} / {1}|{0} / {1} 26 | {0} : {1} : {2}|{0} : {1} : {2} 27 | {0} {1}|{0} {1} 28 | {0} {1} {2}|{0} {1} {2} 29 | {0} + {1}|{0} + {1} 30 | {0} <-|{0} <- 31 | {0} <- {1}|{0} <- {1} 32 | {0} <->|{0} <-> 33 | {0} <-> {1}|{0} <-> {1} 34 | {0} < {1}|{0} < {1} 35 | {0} <= {1}|{0} <= {1} 36 | {0} = {1}|{0} = {1} 37 | {0} == {1}|{0} == {1} 38 | {0} > {1}|{0} > {1} 39 | {0} >= {1}|{0} >= {1} 40 | {0} and {1}|{0}和{1} 41 | {0} m|{0} 米 42 | {0} m/s|{0} 米/秒 43 | {0} sec|{0}秒 44 | {0} vs {1}|{0}对阵{1} 45 | {0}!|{0}! 46 | {0}!!|{0}!! 47 | {0}!!!|{0}!!! 48 | {0}%|{0}% 49 | {0}, {1}|{0},{1} 50 | {0}, {1}, and {2}|{0},{1}和{2} 51 | {0}:|{0}: 52 | {0}: {1}|{0}:{1} 53 | {0}: {1} and {2}|{0}:{1}和{2} 54 | {0}:{1}|{0}:{1} 55 | {0}?|{0}? 56 | {0}??|{0}?? 57 | {0}???|{0}??? 58 | <- {0}|<- {0} 59 | <-> {0}|<-> {0} 60 | Abilities|技能 61 | Ability|技能 62 | Ability 1|技能1 63 | Ability 2|技能2 64 | Agility|敏捷 65 | Alert|警报 66 | Alive|存活 67 | Allies|盟友 68 | Ally|盟友 69 | Ammunition|弹药 70 | Angle|角度 71 | Attack|进攻 72 | Attacked|已进攻 73 | Attacking|正在进攻 74 | Attempt|尝试 75 | Attempts|尝试 76 | Average|平均 77 | Avoid|躲避 78 | Avoided|已躲避 79 | Avoiding|正在躲避 80 | Backward|后 81 | Bad|差 82 | Ban|屏蔽 83 | Banned|已屏蔽 84 | Banning|正在屏蔽 85 | Best|最佳 86 | Better|优秀 87 | Bid|加注 88 | Bids|加注 89 | Block|阻挡 90 | Blocked|已阻挡 91 | Blocking|正在阻挡 92 | Blue|蓝色 93 | Bonus|奖励 94 | Bonuses|奖励 95 | Boss|首领 96 | Bosses|首领 97 | Bought|已购买 98 | Build|建造 99 | Building|正在建造 100 | Built|已建造 101 | Burn|点燃 102 | Burning|正在点燃 103 | Burnt|已点燃 104 | Buy|购买 105 | Buying|正在购买 106 | Capture|夺取 107 | Captured|已夺取 108 | Capturing|正在夺取 109 | Caution|危险 110 | Center|中 111 | Challenge Accepted|接受挑战 112 | Charisma|魅力 113 | Chase|追击 114 | Chased|已追击 115 | Chasing|正在追击 116 | Checkpoint|检查点 117 | Checkpoints|检查点 118 | Cloud|云朵 119 | Clouds|云朵 120 | Club|梅花 121 | Clubs|梅花 122 | Combo|连击 123 | Come Here|到这儿来 124 | Condition|条件 125 | Congratulations|恭喜 126 | Connect|连接 127 | Connected|已连接 128 | Connecting|正在连接 129 | Constitution|建筑 130 | Control Point|控制点 131 | Control Points|控制点 132 | Cooldown|冷却时间 133 | Cooldowns|冷却时间 134 | Corrupt|腐化 135 | Corrupted|已腐化 136 | Corrupting|正在腐化 137 | Credit|货币 138 | Credits|货币 139 | Critical|严重 140 | Crouch|蹲下 141 | Crouched|已蹲下 142 | Crouching|正在蹲下 143 | Current|当前 144 | Current Allies|当前盟友 145 | Current Ally|当前盟友 146 | Current Attempt|当前尝试 147 | Current Checkpoint|当前检查点 148 | Current Enemies|当前敌人 149 | Current Enemy|当前敌人 150 | Current Form|当前形态 151 | Current Game|当前游戏 152 | Current Hero|当前英雄 153 | Current Heroes|当前英雄 154 | Current Hostage|当前人质 155 | Current Hostages|当前人质 156 | Current Level|当前等级 157 | Current Mission|当前任务 158 | Current Object|当前对象 159 | Current Objective|当前目标点 160 | Current Objects|当前对象 161 | Current Phase|当前阶段 162 | Current Player|当前玩家 163 | Current Players|当前玩家 164 | Current Round|当前回合 165 | Current Target|当前目标 166 | Current Targets|当前目标 167 | Current Upgrade|当前升级 168 | Damage|伤害 169 | Damaged|已伤害 170 | Damaging|正在伤害 171 | Danger|危险 172 | Dead|已死亡 173 | Deal|发牌 174 | Dealing|正在发牌 175 | Dealt|已发牌 176 | Deck|牌堆 177 | Decks|牌堆 178 | Defeat|战败 179 | Defend|防守 180 | Defended|已防守 181 | Defending|正在防守 182 | Defense|防御 183 | Deliver|送达 184 | Delivered|已送达 185 | Delivering|正在送达 186 | Depth|深度 187 | Destabilize|干扰 188 | Destabilized|已干扰 189 | Destabilizing|正在干扰 190 | Destroy|摧毁 191 | Destroyed|已摧毁 192 | Destroying|正在摧毁 193 | Detect|探测 194 | Detected|被探测 195 | Detecting|正在探测 196 | Dexterity|灵巧 197 | Diamond|方块 198 | Diamonds|方块 199 | Die|死亡 200 | Discard|弃牌 201 | Discarded|已弃牌 202 | Discarding|正在弃牌 203 | Disconnect|断开 204 | Disconnected|已断开 205 | Disconnecting|正在断开 206 | Distance|距离 207 | Distances|距离 208 | Dodge|躲闪 209 | Dodged|已躲闪 210 | Dodging|正在躲闪 211 | Dome|罩子 212 | Domes|罩子 213 | Down|下 214 | Download|下载 215 | Downloaded|已下载 216 | Downloading|正在下载 217 | Draw|平局 218 | Drawing|正在抽牌 219 | Drawn|已抽牌 220 | Drop|掉落 221 | Dropped|已掉落 222 | Dropping|正在掉落 223 | Dying|正在死亡 224 | East|东 225 | Eliminate|消灭 226 | Eliminated|已消灭 227 | Eliminating|正在消灭 228 | Elimination|消灭 229 | Eliminations|消灭 230 | Enemies|敌人 231 | Enemy|敌人 232 | Entrance|进入 233 | Escort|护送 234 | Escorted|已护送 235 | Escorting|正在护送 236 | Excellent|优秀 237 | Exit|离开 238 | Experience|经验值 239 | Extreme|极端 240 | Face|面向 241 | Faces|面向 242 | Facing|正在面向 243 | Failed|已失败 244 | Failing|即将失败 245 | Failure|失败 246 | Fall|跌落 247 | Fallen|已跌落 248 | Falling|正在跌落 249 | Far|远 250 | Fast|快 251 | Faster|较快 252 | Fastest|最快 253 | Fault|失误 254 | Faults|失误 255 | Final|最终 256 | Final Allies|最终盟友 257 | Final Ally|最终盟友 258 | Final Attempt|最终尝试 259 | Final Checkpoint|最终检查点 260 | Final Enemies|最终敌人 261 | Final Enemy|最终敌人 262 | Final Form|最终形态 263 | Final Game|最终游戏 264 | Final Hero|最终英雄 265 | Final Heroes|最终英雄 266 | Final Hostage|最终人质 267 | Final Hostages|最终人质 268 | Final Item|最终物品 269 | Final Level|最终等级 270 | Final Mission|最终任务 271 | Final Object|最终对象 272 | Final Objective|最终目标点 273 | Final Objects|最终对象 274 | Final Phase|最终阶段 275 | Final Player|最终玩家 276 | Final Players|最终玩家 277 | Final Round|最终回合 278 | Final Target|最终目标 279 | Final Targets|最终目标 280 | Final Time|最终时间 281 | Final Upgrade|最终升级 282 | Find|寻找 283 | Finding|正在寻找 284 | Finish|结束 285 | Finished|已结束 286 | Finishing|正在结束 287 | Flown|已飞行 288 | Fly|飞行 289 | Flying|正在飞行 290 | Fold|收起 291 | Folded|已收起 292 | Folding|正在收起 293 | Form|表格 294 | Forms|表格 295 | Forward|前 296 | Found|已找到 297 | Freeze|冰冻 298 | Freezing|正在冰冻 299 | Frozen|已冰冻 300 | Game|比赛 301 | Games|比赛 302 | Games Lost|战败场数 303 | Games Won|胜利场数 304 | GG|GG 305 | Go|前往 306 | Goal|终点 307 | Goals|终点 308 | Going|正在前往 309 | Good|好 310 | Good Luck|好运 311 | Goodbye|再见 312 | Green|绿色 313 | Guilty|有罪 314 | Hack|入侵 315 | Hacked|已入侵 316 | Hacking|正在入侵 317 | Hand|手牌 318 | Hands|手牌 319 | Heal|治疗 320 | Healed|已治疗 321 | Healer|治疗者 322 | Healers|治疗者 323 | Healing|正在治疗 324 | Heart|红桃 325 | Hearts|心 326 | Height|高度 327 | Hello|问候 328 | Help|求助 329 | Here|此处 330 | Hero|英雄 331 | Heroes|英雄 332 | Hidden|已隐藏 333 | Hide|隐藏 334 | Hiding|正在隐藏 335 | High Score|最高得分 336 | High Scores|最高得分 337 | Hit|击中 338 | Hitting|正在击中 339 | Hmmm|嗯 340 | Hostage|人质 341 | Hostages|人质 342 | Huh|哈 343 | Hunt|狩猎 344 | Hunted|已狩猎 345 | Hunter|猎人 346 | Hunters|猎人 347 | Hunting|正在狩猎 348 | I Give Up|我放弃了 349 | I Tried|我尽力了 350 | In View|在视野中 351 | Income|收入 352 | Incoming|正在前来 353 | Initial|初始 354 | Initial Allies|初始盟友 355 | Initial Ally|初始盟友 356 | Initial Attempt|初始尝试 357 | Initial Checkpoint|初始检查点 358 | Initial Enemies|初始敌人 359 | Initial Enemy|初始敌人 360 | Initial Form|初始形态 361 | Initial Game|初始游戏 362 | Initial Hero|初始英雄 363 | Initial Heroes|初始英雄 364 | Initial Hostage|初始人质 365 | Initial Level|初始等级 366 | Initial Mission|初始任务 367 | Initial Object|初始对象 368 | Initial Objective|初始目标点 369 | Initial Objects|初始对象 370 | Initial Phase|初始阶段 371 | Initial Player|初始玩家 372 | Initial Players|初始玩家 373 | Initial Round|初始回合 374 | Initial Target|初始目标 375 | Initial Targets|初始目标 376 | Initial Upgrade|初始升级 377 | Innocent|无罪 378 | Inside|内 379 | Intelligence|智力 380 | Interact|互动 381 | Invisible|不可见 382 | Item|物品 383 | Items|物品 384 | Join|加入 385 | Joined|已加入 386 | Joining|正在加入 387 | Jump|跳跃 388 | Jumping|正在跳跃 389 | Kill|击杀 390 | Kills|击杀 391 | Killstreak|连杀 392 | Killstreak|连杀 393 | Killstreaks|连杀 394 | Leader|队长 395 | Leaders|队长 396 | Least|最少 397 | Left|左 398 | Less|更少 399 | Level|等级 400 | Level Down|等级下降 401 | Level Up|等级提升 402 | Levels|等级 403 | Life|生命 404 | Limited|受限 405 | Lives|生命 406 | Load|读取 407 | Loaded|已读取 408 | Loading|正在读取 409 | Location|坐标 410 | Lock|锁定 411 | Locked|已锁定 412 | Locking|正在锁定 413 | Loser|败者 414 | Losers|败者 415 | Loss|失败 416 | Losses|失败 417 | Max|较大 418 | Mild|轻微 419 | Min|较小 420 | Mission|任务 421 | Mission|任务 422 | Mission Aborted|放弃的任务 423 | Mission Accomplished|任务完成 424 | Mission Failed|失败的任务 425 | Missions|任务 426 | Moderate|适中 427 | Money|金钱 428 | Monster|怪物 429 | Monsters|怪物 430 | More|更多 431 | Most|最多 432 | My Mistake|我的错 433 | Near|近 434 | New High Score|最新高分 435 | New Record|最新记录 436 | Next|下一个 437 | Next Allies|下一批盟友 438 | Next Ally|下一个盟友 439 | Next Attempt|下一次尝试 440 | Next Checkpoint|下一个检查点 441 | Next Enemies|下一批敌人 442 | Next Enemy|下一个敌人 443 | Next Form|下一个表格 444 | Next Game|下一个游戏 445 | Next Hero|下一个英雄 446 | Next Heroes|下一批英雄 447 | Next Hostage|下一个人质 448 | Next Hostages|下一批人质 449 | Next Level|下一个等级 450 | Next Mission|下一个任务 451 | Next Object|下一批对象 452 | Next Objective|下一个目标点 453 | Next Objects|下一个对象 454 | Next Phase|下一个阶段 455 | Next Player|下一个玩家 456 | Next Players|下一批玩家 457 | Next Round|下一个回合 458 | Next Target|下一个目标 459 | Next Targets|下一批目标 460 | Next Upgrade|下一个升级 461 | Nice Try|表现不错 462 | No|否 463 | No Thanks|不用了 464 | None|无 465 | Normal|普通 466 | North|北 467 | Northeast|东北 468 | Northwest|西北 469 | Not Today|算了吧 470 | Object|对象 471 | Objective|目标点 472 | Objectives|目标点 473 | Objects|对象 474 | Obtain|获取 475 | Obtained|已获取 476 | Obtaining|正在获取 477 | Off|关闭 478 | On|开启 479 | Oof|噢 480 | Oops|啊呀 481 | Optimal|最佳 482 | Optimize|优化 483 | Optimized|已优化 484 | Optimizing|正在优化 485 | Out of View|不在视野中 486 | Outgoing|正在远去 487 | Outside|外 488 | Over|上方 489 | Overtime|加时 490 | Participant|参与者 491 | Participants|参与者 492 | Payload|运载目标 493 | Payloads|运载目标 494 | Phase|阶段 495 | Phases|阶段 496 | Pick|选取 497 | Picked|已选取 498 | Picking|正在选取 499 | Pile|堆 500 | Piles|堆 501 | Play|打出 502 | Played|已打出 503 | Player|玩家 504 | Players|玩家 505 | Playing|正在打出 506 | Point|点 507 | Points|点 508 | Points Earned|获得分数 509 | Points Lost|失去分数 510 | Position|位置 511 | Power|能量 512 | Power-up|强化 513 | Power-ups|强化 514 | Price|价格 515 | Primary Fire|主要攻击模式 516 | Projectile|飞弹 517 | Projectiles|飞弹 518 | Protect|保护 519 | Protected|已保护 520 | Protecting|正在保护 521 | Purified|已净化 522 | Purify|净化 523 | Purifying|正在净化 524 | Purple|紫色 525 | Raise|复活 526 | Raised|已复活 527 | Raising|正在复活 528 | Rank|排名 529 | Rank A|等级 A 530 | Rank B|等级 B 531 | Rank C|等级 C 532 | Rank D|等级 D 533 | Rank E|等级 E 534 | Rank F|等级 F 535 | Rank S|等级 S 536 | Reach|前往 537 | Reached|已抵达 538 | Reaching|正在前往 539 | Ready|就绪 540 | Record|记录 541 | Records|记录 542 | Recover|恢复 543 | Recovered|已恢复 544 | Recovering|正在恢复 545 | Red|红色 546 | Remain|剩余 547 | Remaining|剩余 548 | Rescue|营救 549 | Rescued|已营救 550 | Rescuing|正在营救 551 | Resource|资源 552 | Resources|资源 553 | Resurrect|重生 554 | Resurrected|已重生 555 | Resurrecting|正在重生 556 | Reveal|揭示 557 | Revealed|已揭示 558 | Revealing|正在揭示 559 | Reverse|撤销 560 | Reversed|已撤销 561 | Reversing|正在撤销 562 | Right|右 563 | Round|回合 564 | Round {0}|第{0}回合 565 | Rounds|回合 566 | Rounds Lost|战败回合数 567 | Rounds Won|胜利回合数 568 | Run|运行 569 | Running|正在运行 570 | Safe|安全 571 | Save|保存 572 | Saved|已保存 573 | Saving|正在保存 574 | Score|分数 575 | Scores|分数 576 | Secondary Fire|辅助攻击模式 577 | Secure|保护 578 | Secured|已保护 579 | Securing|正在保护 580 | Select|选择 581 | Selected|已选择 582 | Selecting|正在选择 583 | Sell|出售 584 | Selling|正在出售 585 | Server Load|服务器负载 586 | Server Load Average|服务器负载平均值 587 | Server Load Peak|服务器负载峰值 588 | Sever|撕裂 589 | Severe|严重 590 | Severed|已撕裂 591 | Severing|正在撕裂 592 | Shop|商店 593 | Shops|商店 594 | Shuffle|洗牌 595 | Shuffled|已洗牌 596 | Shuffling|正在洗牌 597 | Sink|击沉 598 | Sinking|正在击沉 599 | Skip|跳过 600 | Skipped|已跳过 601 | Skipping|正在跳过 602 | Sleep|沉睡 603 | Sleeping|正在沉睡 604 | Slept|已沉睡 605 | Slow|慢 606 | Slower|较慢 607 | Slowest|最慢 608 | Sold|已出售 609 | Sorry|抱歉 610 | South|南 611 | Southeast|东南 612 | Southwest|西南 613 | Spade|黑桃 614 | Spades|黑桃 615 | Sparkles|火花 616 | Spawn|孵化 617 | Spawned|已孵化 618 | Spawning|正在孵化 619 | Speed|速度 620 | Speeds|速度 621 | Sphere|球体 622 | Spheres|球形 623 | Stabilize|稳定 624 | Stabilized|已稳定 625 | Stabilizing|正在稳定 626 | Stable|存放宠物 627 | Star|星星 628 | Stars|群星 629 | Start|开始 630 | Started|已开始 631 | Starting|正在开始 632 | Status|状态 633 | Stay|停止 634 | Stay Away|走开 635 | Stayed|已停止 636 | Staying|正在停止 637 | Stop|阻止 638 | Stopped|已阻止 639 | Stopping|正在阻止 640 | Strength|力量 641 | Stun|昏迷 642 | Stunned|已昏迷 643 | Stunning|正在昏迷 644 | Suboptimal|次佳 645 | Success|成功 646 | Sudden Death|绝杀局 647 | Sunk|已击沉 648 | Superb|强烈 649 | Survive|生存 650 | Survived|已生存 651 | Surviving|正在生存 652 | Target|目标 653 | Targets|目标 654 | Team|队伍 655 | Teammate|队友 656 | Teammates|队友 657 | Teams|队伍 658 | Terrible|极差 659 | Thank You|衷心感谢 660 | Thanks|感谢 661 | That Was Awesome|太棒了 662 | Threat|威胁 663 | Threat Level|威胁等级 664 | Threat Levels|威胁等级 665 | Threats|威胁 666 | Tiebreaker|绝杀局 667 | Time|时间 668 | Times|时间 669 | Total|总计 670 | Trade|交易 671 | Traded|已交易 672 | Trading|正在交易 673 | Traitor|叛徒 674 | Traitors|叛徒 675 | Transfer|转移 676 | Transferred|已转移 677 | Transferring|正在转移 678 | Try Again|再来试试 679 | Turret|炮台 680 | Turrets|炮台 681 | Ugh|呃 682 | Ultimate Ability|终极技能 683 | Under|下方 684 | Unknown|未知 685 | Unlimited|不受限 686 | Unlock|解锁 687 | Unlocked|已解锁 688 | Unlocking|正在解锁 689 | Unsafe|不安全 690 | Unstable|不稳定 691 | Up|上 692 | Upgrade|升级 693 | Upgrades|升级 694 | Upload|上传 695 | Uploaded|已上传 696 | Uploading|正在上传 697 | Use Ability 1|使用技能 1 698 | Use Ability 2|使用技能 2 699 | Use Ultimate Ability|使用终极技能 700 | Victory|胜利 701 | Visible|可见 702 | Vortex|漩涡 703 | Vortices|漩涡 704 | Wait|等待 705 | Waiting|正在等待 706 | Wall|墙壁 707 | Walls|墙壁 708 | Warning|警告 709 | Welcome|欢迎 710 | Well Played|称赞 711 | West|西 712 | White|白色 713 | Wild|关键牌 714 | Win|胜利 715 | Winner|胜者 716 | Winners|胜者 717 | Wins|胜利 718 | Wisdom|感知 719 | Worse|较差 720 | Worst|最差 721 | Wow|哇哦 722 | Yellow|黄色 723 | Yes|是 724 | You|你 725 | You Lose|你失败了 726 | You Win|你胜利了 727 | Zone|区域 728 | Zones|区域 729 | ¡{0}!|¡{0}! 730 | ¿{0}?|¿{0}? 731 | -------------------------------------------------------------------------------- /manual/documents/value-array.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 数组 3 | lang: zh-CN 4 | --- 5 | 6 | # 数组 7 | 8 | 9 | 10 | ## 数组 Array 11 | 12 | _由所列出的值组成的数组._ 13 | 14 | 15 | 16 | ## 对任意为"真" Is True For Any 17 | 18 | _指定数组中是否有元素对指定的条件为"真"._ 19 | 20 | - `数组` :此数组中的值. 21 | - `条件` :对指定的数组中每个元素判断此条件.可以使用"当前数组元素值"来指代数组中当前正在进行判断的元素. 22 | 23 | 24 | 25 | ## 对全部为"真" Is True For All 26 | 27 | _指定数组中所有元素是否都对指定的条件为"真"._ 28 | 29 | - `数组` :此数组中的值. 30 | - `条件` :对指定的数组中每个元素判断此条件.可以使用"当前数组元素值"来指代数组中当前正在进行判断的元素. 31 | 32 | 33 | 34 | ## 已排序的数组 Sorted Array 35 | 36 | _复制指定的数组,根据每个元素的值的排名重新排序._ 37 | 38 | - `数组` :对此数组的复制进行排序. 39 | - `数值排序` :将此值赋值给复制的数组中的每个元素.数组将以升序排列.可以使用"当前数组元素值"来指代数组中当前正在进行判断的元素. 40 | 41 | 42 | 43 | ## 已过滤的数组 Filtered Array 44 | 45 | _复制指定的数组,不满足特定条件的值将被移除._ 46 | 47 | - `数组` :对此数组的复制进行过滤. 48 | - `条件` :对复制的数组中每个元素判断此条件.如果条件为"真",则在复制的数组中保留元素.可以使用"当前数组元素值"来指代数组中当前正在进行判断的元素. 49 | 50 | 51 | 52 | ## 当前数组元素 Current Array Element 53 | 54 | _当前在考察的数组元素.只有在使用"过滤数组"或"排序数组"值时才有意义._ 55 | 56 | 57 | 58 | ## 数组中的值 Value In Array 59 | 60 | _一个数组中指定元素的值.如果该元素不存在,则结果为0._ 61 | 62 | - `数组` :获取此数组中的元素. 63 | - `索引` :获取索引处的元素. 64 | 65 | 66 | 67 | ## 数组值的索引 Index Of Array Value 68 | 69 | _一个值在数组中的索引位置.如果找不到此值,则为-1._ 70 | 71 | - `数组` :在此数组中搜索指定的值. 72 | - `值` :要搜索的值. 73 | 74 | 75 | 76 | ## 数组分割 Array Slice 77 | 78 | _复制指定的数组,只复制指定索引范围内的值._ 79 | 80 | - `数组` :产生此数组的复制. 81 | - `开始索引` :范围内的第一个索引. 82 | - `计数` :结果数组中的元素数量.如果指定的范围超过此数组的限制,则结果数组中会包含较少的元素. 83 | 84 | 85 | 86 | ## 数组包含 Array Contains 87 | 88 | _指定数组中是否包括指定的值._ 89 | 90 | - `数组` :在此数组中搜索指定的值. 91 | - `值` :要搜索的值. 92 | 93 | 94 | 95 | ## 数组随机取值 Random Value In Array 96 | 97 | _指定数组中的一个随机值._ 98 | 99 | - `数组` :从一个数组中随机取值.如果提供的值不是数组,则结果为提供的值. 100 | 101 | 102 | 103 | ## 数量 Count Of 104 | 105 | _指定数组的元素个数._ 106 | 107 | - `数组` :计算此数组的元素个数. 108 | 109 | 110 | 111 | ## 随机数组 Randomized Array 112 | 113 | _复制指定的数组,所有值随机排序._ 114 | 115 | - `数组` :对此数组的复制进行随机排列. 116 | 117 | 118 | 119 | ## 首个 First Of 120 | 121 | _指定数组开始处的值.如果指定数组为空,此值则为0._ 122 | 123 | - `数组` :获取此数组中的值. 124 | 125 | 126 | 127 | ## 最后 Last Of 128 | 129 | _指定数组末尾元素的值.如果指定数组为空,则结果为0._ 130 | 131 | - `数组` :获取此数组中的值. 132 | 133 | 134 | 135 | ## 添加至数组 Append To Array 136 | 137 | _一个数组的复制,将一个或更多的值添加至其末尾._ 138 | 139 | - `数组` :要添加值的数组. 140 | - `值` :加入数组*尾端的值.如果值本身是一个数组*,则添加其中的每一个元素. 141 | 142 | 143 | 144 | ## 从数组中移除 Remove From Array 145 | 146 | _一个数组的复制,移除一个或更多的值(如果能找到)._ 147 | 148 | - `数组` :从此数组*中移除值. 149 | - `值` :要从数组*中移除的值(如果能找到).如果值本身是一个数组*,则所有匹配的元素都将被移除. 150 | 151 | 152 | 153 | ## 空数组 Empty Array 154 | 155 | _一个没有任何元素的数组._ 156 | 157 | 158 | 159 | ## 当前数组索引 Current Array Index 160 | 161 | _当前在考察的数组索引. 只有在使用 “过滤数组” 或 “排序数组” 赋值时才有意义._ 162 | 163 | 164 | 165 | ## 映射的数组 Mapped Array 166 | 167 | _复制指定的数组, 根据映射表达式对每个元素进行赋值._ 168 | 169 | - `数组`: 对此数组的赋值进行映射. 170 | - `映射表达式`: 映射表达式将此数组中的每个元素赋值为被赋值的数组中的元素值. 使用 “当前数组元素值” 可以指定当前考察的数组中元素的值. 171 | -------------------------------------------------------------------------------- /manual/documents/value-constant.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 常量 3 | lang: zh-CN 4 | --- 5 | 6 | # 常量 7 | 8 | 9 | 10 | ## 假 False 11 | 12 | _布尔值,假._ 13 | 14 | 15 | 16 | ## 真 True 17 | 18 | _布尔值,真._ 19 | 20 | 21 | 22 | ## 全部英雄 All Heroes 23 | 24 | _此数组包括了《守望先锋》中所有英雄._ 25 | 26 | 27 | 28 | ## 全部重装英雄 All Tank Heroes 29 | 30 | _此数组包括了《守望先锋》中所有重装英雄._ 31 | 32 | 33 | 34 | ## 全部支援英雄 All Support Heroes 35 | 36 | _此数组包括了《守望先锋》中所有支援英雄._ 37 | 38 | 39 | 40 | ## 全部输出英雄 All Damage Heroes 41 | 42 | _此数组包括了《守望先锋》中所有输出英雄._ 43 | 44 | 45 | 46 | ## 英雄图标字符串 Hero Icon String 47 | 48 | _将一个英雄的参数转化为字符串并作为图标显示._ 49 | 50 | 51 | 52 | ## 数字 Number 53 | 54 | _一个实数常量._ 55 | 56 | - `数字` :无解释 57 | 58 | 59 | 60 | ## 字符串 String 61 | 62 | _由选定的字符串和指定的值构成的文本._ 63 | 64 | - `字符` :结果文本.花括号中的数字将被相应的值替代. 65 | - `{0}` :此值将转换为文本并用于替代{0}. 66 | - `{1}` :此值将转换为文本并用于替代{1}. 67 | - `{2}` :此值将转换为文本并用于替代{2}. 68 | 69 | 70 | 71 | ## 自定义字符串 Custom String 72 | 73 | _可以输入值的自定义文本._ 74 | 75 | - `字符` :返回的文本. 花括号中的数字将被相应的值取代. (如果想在文本中使用花括号中的数字, 请使用两次花括号.) 76 | - `{0}` :此值将转换为文本并用于替代{0}. 77 | - `{1}` :此值将转换为文本并用于替代{1}. 78 | - `{2}` :此值将转换为文本并用于替代{2}. 79 | 80 | 81 | 82 | ## 英雄(常量) Hero 83 | 84 | _一个英雄常量._ 85 | 86 | 87 | 88 | ## 无 Null 89 | 90 | _一名玩家已离开.当没有玩家进行输入时使用.在用来比较或测试时等效于实数 0._ 91 | 92 | 93 | 94 | ## 队伍(队伍常数) Team 95 | 96 | _一个队伍常数."全部"选顶代表队伍模式中的两支队伍,或自由混战模式中的全部玩家._ 97 | 98 | - `队伍` :一个队伍常数."全部"选项代表队伍模式中的两支队伍,自由混战模式中的全部玩家. 99 | -------------------------------------------------------------------------------- /manual/documents/value-effect-and-text-id.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 效果与文本ID 3 | lang: zh-CN 4 | --- 5 | 6 | # 效果与文本ID 7 | 8 | 9 | 10 | ## 上一个伤害调整ID Last Damage Modification ID 11 | 12 | _此ID值代表最后一个事件玩家(或全局)所执行的"开始伤害调整"动作._ 13 | 14 | 15 | 16 | ## 上一个治疗修改ID Last Healing Modification ID 17 | 18 | _此ID值代表最后一个事件玩家(或全局)所执行的"开始治疗调整"动作._ 19 | 20 | 21 | 22 | ## 上一个持续伤害效果ID Last Damage Over Time ID 23 | 24 | _此ID值代表最后一个事件玩家(或全局)所执行的"持续伤害"动作._ 25 | 26 | 27 | 28 | ## 上一个持续治疗效果ID Last Heal Over Time ID 29 | 30 | _此ID值代表最后一个事件玩家(或全局)所执行的"持续治疗"动作._ 31 | 32 | 33 | 34 | ## 上一个文本ID Last Text ID 35 | 36 | _代表事件玩家创建的(或由全局创建的)通过"创建HUD文本"或"创建地图文本"动作所创建的最后一段文本._ 37 | 38 | 39 | 40 | ## 最后创建的实体 Last Created Entity 41 | 42 | _代表事件玩家创建的(或由全局创建的)最后一个效果或图标实体._ 43 | 44 | 45 | 46 | ## 最后创建的生命池 Last Creeated Health Pool 47 | 48 | _此ID值代表最后一个事件玩家 (或全局) 所执行的 “添加生命池” 动作._ 49 | 50 | 51 | 52 | ## 事件为治疗包 Event Was Health Pack 53 | 54 | _此规则正在处理的事件中的治疗是否来自于急救包._ 55 | -------------------------------------------------------------------------------- /manual/documents/value-event-info.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 事件信息 3 | lang: zh-CN 4 | --- 5 | 6 | # 事件信息 7 | 8 | ## 事件玩家 Event Player 9 | 10 | _正在执行此规则的玩家,由事件指定.可能与攻击者或被攻击者为同一人._ 11 | 12 | 13 | ## 攻击方 Attacker 14 | 15 | _根据此规则处理的事件中造成伤害的玩家.可能与被攻击者或事件玩家是同一个人._ 16 | 17 | 18 | ## 被攻击方 Victim 19 | 20 | _根据此规则处理的事件中受到伤害的玩家.可能与攻击者事件玩家是同一个人._ 21 | 22 | 23 | ## 治疗者 Healer 24 | 25 | _根据此规则处理的事件中造成治疗的玩家。可能与被治疗者或者事件玩家是同一个人。_ 26 | 27 | 28 | ## 受治疗者 Healee 29 | 30 | _根据此规则处理的事件中受到治疗的玩家。可能与治疗者或者事件玩家是同一个人。_ 31 | 32 | 33 | ## 事件伤害 Event Damage 34 | 35 | _此规则所处理的事件中被攻击者受到的伤害数值._ 36 | 37 | 38 | ## 事件治疗 Event Healing 39 | 40 | _此规则所处理的事件中被治疗者受到的治疗数值._ 41 | 42 | 43 | ## 事件暴击 Event Was Critical Hit 44 | 45 | _此规则处理的伤害是否为暴击(如爆头伤害)._ 46 | 47 | 48 | ## 事件方向 Event Direction 49 | 50 | _此规则当前处理的事件来自的哪个方向._ 51 | 52 | 53 | ## 事件技能 Event Ability 54 | 55 | _此规则所处理的事件中被攻击者受到的伤害技能._ 56 | 57 | 58 | ## 主机玩家 Host Player 59 | 60 | _当前自定义游戏的主机玩家。如果当前主机玩家离开了比赛,该值会改变。_ 61 | 62 | 63 | 64 | ## 事件为环境事件 Event Was Environment 65 | 66 | _此规则正在处理的事件中的消灭是否是由环境引起的._ 67 | -------------------------------------------------------------------------------- /manual/documents/value-logical-operator.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 逻辑运算 3 | lang: zh-CN 4 | --- 5 | 6 | # 逻辑运算 7 | 8 | 9 | 10 | ## 与 And 11 | 12 | _两个输入值是否均为"真"(或等效于"真")._ 13 | 14 | - `值` 考察的两个输入值中的一个.如果两个值均为"真"(或等效于"真"),则"与"的值为"真". 15 | - `值` 考察的两个输入值中的一个.如果两个值均为"真"(或等效于"真"),则"与"的值为"真". 16 | 17 | 18 | 19 | ## 或 Or 20 | 21 | _两个输入值中是否存在"真"(或等效于"真")._ 22 | 23 | - `值` 考察的两个输入值中的一个.如果两个值有一个为"真"(或等效于"真"),则"或"的值为"真". 24 | - `值` 考察的两个输入值中的一个.如果两个值有一个为"真"(或等效于"真"),则"或"的值为"真". 25 | 26 | 27 | 28 | ## 非 Not 29 | 30 | _输入是否为"假"(或等效于"假")._ 31 | 32 | - `值` 如果输入为"假"(或等效于"假"),则"非"的值为"真".否则,则"非"的值为"假". 33 | 34 | 35 | 36 | ## 比较 Compare 37 | 38 | _所输入的两个值的比较结果是否为"真"._ 39 | 40 | - `值` 比较式的左边.如果操作为"=="或"!=",则可以为任意类型的值.否则此值应该是实数. 41 | - `值` 比较式的右边.如果操作为"=="或"!=",则可以为任意类型的值.否则此值应该是实数. 42 | 43 | 44 | 45 | ## If-Then-Else 46 | 47 | _如果 if 后面的条件为真, 则结果为 Then 后面的值; 否则结果为 Else 后面的值._ 48 | 49 | - `IF` 如果此条件为真, 则结果为 THEN 后面的值; 否则结果为 ELSE 后面的值. 50 | - `THEN` 如果条件为真, 则结果是这个值. 51 | - `ELSE` 如果条件不为真, 则结果是这个值. -------------------------------------------------------------------------------- /manual/documents/value-match-map-team.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 比赛 / 地图 / 队伍 3 | lang: zh-CN 4 | --- 5 | 6 | # 比赛 / 地图 / 队伍 7 | 8 | ## 正在等待玩家 Is Waiting For Players 9 | 10 | _此比赛是否正在等待玩家加入._ 11 | 12 | 13 | 14 | ## 正在设置 Is In Setup 15 | 16 | _此比赛是否正在准备阶段._ 17 | 18 | 19 | 20 | ## 正在集结英雄 Is Assembling Heroes 21 | 22 | _此比赛是否正在集结英雄阶段._ 23 | 24 | 25 | 26 | ## 游戏正在进行中 Is Game In Progress 27 | 28 | _此比赛是否正在主要阶段(可以进行战斗并获得分数的阶段)._ 29 | 30 | 31 | 32 | ## 当前比赛模式 Current Game Mode 33 | 34 | _当前自定义游戏的比赛模式._ 35 | 36 | 37 | 38 | ## 比赛模式 Game Mode 39 | 40 | _比赛模式常量._ 41 | 42 | 43 | 44 | ## 地图 Map 45 | 46 | _一个地图常量._ 47 | 48 | 49 | 50 | ## 当前地图 Current Map 51 | 52 | _自定义游戏中当前使用的地图._ 53 | 54 | 55 | 56 | ## 比赛回合 Match Round 57 | 58 | _比赛当前的回合数,从1开始计数._ 59 | 60 | 61 | 62 | ## 比赛时间 Match Time 63 | 64 | _当前游戏模式阶段剩余的时间,以秒为单位._ 65 | 66 | 67 | 68 | ## 比赛结束 Is Match Complete 69 | 70 | _此比赛是否已经结束._ 71 | 72 | 73 | 74 | ## 此位置的玩家 Players In Slot 75 | 76 | _游戏的指定位置编号处的玩家或玩家数组._ 77 | 78 | - `位置` 获取指定位置编号的玩家.在队伍模式中,每个队伍中玩家的位置编号为0到5"在自由混战模式中,位置编号为0到11. 79 | - `队伍` 从这些队伍中选择玩家. 80 | 81 | 82 | 83 | ## 正在使用英雄 Is Hero Being Played 84 | 85 | _指定英雄是否正在使用(可以限定在队伍中或游戏中)._ 86 | 87 | - `英雄` 检测此英雄是否在使用. 88 | - `队伍` 检测队伍中是否正在使用这名英雄. 89 | 90 | 91 | 92 | ## 选择英雄的玩家 Players On Hero 93 | 94 | _此数组*中是一支队伍或本场比赛中正在使用指定英雄的玩家._ 95 | 96 | - `英雄` 检测此英雄是否在使用. 97 | - `队伍` 检测该队伍中的玩家.*** ** 98 | 99 | 100 | 101 | ## 总计消耗时间 Total Time Elapsed 102 | 103 | _该游戏副本创建后已经过去的总时间(包括准备时间和攻防转换时间),以秒为单位._ 104 | 105 | 106 | 107 | ## 玩家数量 Number Of Players 108 | 109 | _队伍或比赛中的玩家数量._ 110 | 111 | - `队伍` 计算下列队伍中玩家的数量. 112 | 113 | 114 | 115 | ## 英雄数量 Number Of Heroes 116 | 117 | _在一支队伍或此比赛中使用指定英雄的数量._ 118 | 119 | - `英雄` 检测此英雄是否在使用. 120 | - `队伍` 检测队伍中是否正在使用这名英雄. 121 | 122 | 123 | 124 | ## 存活玩家数量 Number Of Living Players 125 | 126 | _队伍或比赛中存活的玩家数量.__ 127 | 128 | - `队伍` 计算下列队伍中玩家的数量. 129 | 130 | 131 | 132 | ## 死亡玩家数量 Number Of Dead Players 133 | 134 | _队伍或比赛中死亡的玩家数量._ 135 | 136 | - `队伍` 计算下列队伍中玩家的数量. 137 | 138 | 139 | 140 | ## 所有存活玩家 All Living Players 141 | 142 | _此数组中包括一支队伍或整个比赛中所有存活的玩家._ 143 | 144 | - `队伍` 玩家所在的队伍 145 | 146 | 147 | 148 | ## 所有死亡玩家 All Dead Players 149 | 150 | _此数组中包括一支队伍或整个比赛中所有已死亡的玩家._ 151 | 152 | - `队伍` 玩家所在的队伍 153 | 154 | 155 | 156 | ## 所有玩家 All Players 157 | 158 | _此数组中包括一支队伍或整个比赛中所有的玩家._ 159 | 160 | - `队伍` 玩家所在的队伍 161 | 162 | 163 | 164 | ## 所有目标点内玩家 All Players On Objective 165 | 166 | _此数组中包括所有在运载目标或控制点上的玩家(可以是一支队伍中的,也可以是整个比赛中的)._ 167 | 168 | - `队伍` 玩家所在的队伍 169 | 170 | 171 | 172 | ## 所有目标点外玩家 All Players Not On Objective 173 | 174 | _此数组中包括所有不在运载目标或控制点上的玩家(可以是一支队伍中的,也可以是整个比赛中的)._ 175 | 176 | - `队伍` 玩家所在的队伍 177 | 178 | 179 | 180 | ## 携带旗帜的玩家 Player Carrying Flag 181 | 182 | _在勇夺锦旗模式中正在携带指定队伍旗帜的玩家.如果没有玩家正在携带旗帜,则返回值为空._ 183 | 184 | - `队伍` 检测此队伍的旗帜. 185 | 186 | 187 | 188 | ## 旗帜位置 Flag Position 189 | 190 | _在勇夺锦旗模式中指定队伍的位置._ 191 | 192 | - `队伍` 获取此队伍旗帜的位置. 193 | 194 | 195 | 196 | ## 旗帜是否在基地中 Is Flag At Base 197 | 198 | _在勇夺锦旗模式下,指定队伍的旗帜是否在其基地内._ 199 | 200 | - `队伍` 检测此队伍的旗帜. 201 | 202 | 203 | 204 | ## 是否有人携带旗帜 Is Flag Being Carried 205 | 206 | ~~_在勇夺锦旗模式下,指定队伍的旗帜是否在其基地内._~~检测指定队伍的旗帜是否被敌对队伍的玩家所携带,如果没有则返回空。* 207 | 208 | - `队伍` 检测此队伍的旗帜. 209 | 210 | 211 | 212 | ## 在夺旗模式中开始绝杀局 Is Ctf Mode In Sudden Death 213 | 214 | _当前勇夺锦旗游戏是否处于绝杀局状态._ 215 | 216 | 217 | 218 | ## 最近的可行走位置 Nearest Walkable Position 219 | 220 | _与指定位置最接近的、可以站立且能够从一个重生点到达的位置._ 221 | 222 | - `位置` 寻找此位置附近最近的可行走位置. 223 | 224 | 225 | 226 | ## 距离最近的玩家 Closest Player To 227 | 228 | _距离一个位置最近的玩家,可以选择是否限制所在队伍._ 229 | 230 | - `中间` 用于测定距离的位置. 231 | - `队伍` 最近一名玩家所在的队伍. 232 | 233 | 234 | 235 | ## 距离最远的玩家 Farthest Player From 236 | 237 | _距离一个位置最远的玩家,可以选择是否限制所在队伍._ 238 | 239 | - `中间` 以此位置为起点测量距离. 240 | - `队伍` 最远一名玩家所在的队伍. 241 | 242 | 243 | 244 | ## 实体存在 Entity Exists 245 | 246 | _指定玩家、图标实体或效果实体是否存在.可以用来查看一个玩家是否已经离开比赛,或一个实体是否已被消除._ 247 | 248 | - `实体` 检查是否存在此玩家,图标实体或者效果实体. 249 | 250 | 251 | 252 | ## 占领要点模式占领点解锁 Is Control Mode Point Locked 253 | 254 | _占领要点模式中占领点是否解锁._ 255 | 256 | 257 | 258 | ## 占领要点模式得分百分比 Control Mode Scoring Percentage 259 | 260 | _指定队伍在占领要点模式中的得分百分比._ 261 | 262 | - `百分比` 获取此队伍的得分百分比. 263 | 264 | 265 | 266 | ## 占领要点模式正在得分的队伍 Control Mode Scoring Team 267 | 268 | _该队伍正在占领要点模式中积累得分百分比.如果双方队伍都没有在积累得分,则结果为"全部"_ 269 | 270 | 271 | 272 | ## 运载目标位置 Payload Position 273 | 274 | _已激活的运载目标在地图中的位置._ 275 | 276 | 277 | 278 | ## 运载目标进度百分比 Payload Progress Percentage 279 | 280 | _已激活的运载目标前往目标地的当前进度(以百分比表示)._ 281 | 282 | 283 | 284 | ## 目标位置 Objective Position 285 | 286 | _特定目标点(控制点、运载目标检查点、运载目标目的地)在地图中的位置._ 287 | 288 | - `数字` 考察的目标点的索引,从0开始逐渐累加.每个控制点、运载目标检查点、运载目地都有其独自的索引. 289 | 290 | 291 | 292 | ## 目标是否完成 Is Objective Complete 293 | 294 | _指定目标是否已经完成.如果游戏模式不是攻防作战、护送、攻击/护送,则结果为假"._ 295 | 296 | - `数字` 考察的目标点的索引,从0开始逐渐累加.每个控制点、运载目标检查点、运载目地都有其独自的索引. 297 | 298 | 299 | 300 | ## 目标点上玩家数量 Number Of Players On Objective 301 | 302 | _在运载目标或控制点上的玩家数量(可以是一支队伍中的,也可以是整个比赛中的)._ 303 | 304 | - `队伍` 计算下列队伍中玩家的数量. 305 | 306 | 307 | 308 | ## 目标点占领百分比 Point Capture Percentage 309 | 310 | _已激活的控制点当前的占领进度(以百分比表示)._ 311 | 312 | 313 | 314 | ## 对象索引 Objective Index 315 | 316 | _当前激活的控制点、运载目标检查点或运载目标目的地(0,1或2).在攻防作战、攻击/护送及占领要点模式中生效._ 317 | 318 | 319 | 320 | ## 已重生 Has Spawned 321 | 322 | _一个实体是否存在于地图中.如果玩家尚未选择英雄,则返回结果为"假"._ 323 | 324 | - `实体` 检测此玩家,图标实体或效果实体是否存在于地图中. 325 | 326 | 327 | 328 | ## 处于回合之间 Is Between Rounds 329 | 330 | _此比赛是否正在两个回合之间._ 331 | 332 | 333 | 334 | ## 团队得分 Team Score 335 | 336 | _指定队伍当前的得分.在自由混战模式中结果为0._ 337 | 338 | - `队伍` 获取此队伍的得分. 339 | 340 | 341 | 342 | ## 对方队伍 Opposite Team Of 343 | 344 | _指定队伍的对方队伍._ 345 | 346 | - `队伍` 获得此队伍的对方队伍.如果选择"全部",结果亦为"全部". 347 | 348 | 349 | 350 | ## (作为防守队伍)*正在防守 Is Team On Defense 351 | 352 | _指定队伍是否是防守方.如果游戏模式不是攻防作战、护送、攻击/护送,则结果为假"._ 353 | 354 | - `队伍` 检查此队伍的角色. 355 | 356 | 357 | 358 | ## 作为进攻队伍 Is Team On Offense 359 | 360 | _指定队伍是否是进攻方.如果游戏模式不是攻防作战、护送、或攻击/护送,则结果为"假"._ 361 | 362 | - `队伍` 检查此队伍的角色 363 | 364 | 365 | 366 | ## 地图工坊设置开关 Workshop Setting Toggle 367 | 368 | _提供一个新的开关设置的值 (真或假), 会显示在 “地图工坊设置” 卡片上作为勾选项._ 369 | 370 | - `类别`: 此类型的名字, 可以用来找到此设置. 371 | - `名称`: 此设置的名称. 372 | - `默认` 373 | 374 | 375 | 376 | ## 地图工坊设置整数 Workshop Setting Integer 377 | 378 | _提供一个新的整数型设置值, 会显示在 “地图工坊设置” 卡片上作为标记._ 379 | 380 | - `类别`: 此类型的名字, 可以用来找到此设置. 381 | - `名称`: 此设置的名称. 382 | - `默认` 383 | - `最小` 384 | - `最大` 385 | 386 | 387 | 388 | ## 地图工坊设置实数 Workshop Setting Real 389 | 390 | _提供一个新的实数型设置值, 会显示在 “地图工坊设置” 卡片上作为标记._ 391 | 392 | - `类别`: 此类型的名字, 可以用来找到此设置. 393 | - `名称`: 此设置的名称. 394 | - `默认` 395 | - `最小` 396 | - `最大` 397 | -------------------------------------------------------------------------------- /manual/documents/value-math.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 数学运算 3 | lang: zh-CN 4 | --- 5 | 6 | # 数学运算 7 | 8 | 9 | 10 | ## 较大 Max 11 | 12 | _两个数字中较大的一个._ 13 | 14 | 15 | 16 | ## 较小 Min 17 | 18 | _两个数字中较小的一个._ 19 | 20 | 21 | 22 | ## 加 Add 23 | 24 | _两个数字或矢量的和._ 25 | 26 | - `值` 左边的运算量,可以是结果为数字或矢量的值 27 | - `值` 右边的运算量,可以是结果为数字或矢量的值. 28 | 29 | 30 | 31 | ## 减 Subtract 32 | 33 | _两个数字或矢量的差._ 34 | 35 | - `值` 左边的运算量,可以是结果为数字或矢量的值 36 | - `值` 右边的运算量,可以是结果为数字或矢量的值. 37 | 38 | 39 | 40 | ## 乘 Multiply 41 | 42 | _两个数字或矢量的积.矢量乘以数字会得到一个缩放后的矢量._ 43 | 44 | - `值` 左边的运算量,可以是结果为数字或矢量的值 45 | - `值` 右边的运算量,可以是结果为数字或矢量的值. 46 | 47 | 48 | 49 | ## 除 DivIDe 50 | 51 | _两个数字或矢量的商.矢量除以数字会得到一个缩放后的矢量.除以零的结果为0._ 52 | 53 | - `值` 左边的运算量,可以是结果为数字或矢量的值 54 | - `值` 右边的运算量,可以是结果为数字或矢量的值. 55 | 56 | 57 | 58 | ## 乘方 Raise To Power 59 | 60 | _左边运算量的乘方,幂为右边运算量.如果左边运算量为负,则结果始终为0._ 61 | 62 | - `值` 左边的运算量,可以是结果为数字的值 63 | - `值` 右边的运算量,可以是结果为数字的值 64 | 65 | 66 | 67 | ## 余数 Modulo 68 | 69 | _左边的运算量除以右边的运算量之后的余数.如果右边是0的话则结果为0._ 70 | 71 | - `值` 左边的运算量,可以是结果为数字的值 72 | - `值` 右边的运算量,可以是结果为数字的值 73 | 74 | 75 | 76 | ## 绝对值 Absolute Value 77 | 78 | _指定值的绝对值._ 79 | 80 | 81 | 82 | ## 随机实数 Random Real 83 | 84 | _指定最小值与最大值之间的一个随机实数._ 85 | 86 | - `最小` 允许的最小实数. 87 | - `最大` 允许的最大实数. 88 | 89 | 90 | 91 | ## 随机整数 Random Integer 92 | 93 | _指定最小值与最大值之间的一个随机整数(包括最小值与最大值在内)._ 94 | 95 | - `最小` 允许的最小整数.如果此处输入的是一个实数,则取最接近此实数的整数. 96 | - `最大` 允许的最大整数.如果此处输入的是一个实数,则取最接近此实数的整数. 97 | 98 | 99 | 100 | ## 平方根 Square Root 101 | 102 | _指定值的平方根._ 103 | 104 | - `值` 计算此实数值的平方根,负数值则为0. 105 | 106 | 107 | 108 | ## 取整 Round To Integer 109 | 110 | _指定值取整后的值._ 111 | 112 | - `取整方式` 决定此值取整的方式. 113 | 114 | 115 | ## 归一化 Normalize 116 | 117 | _将矢量归一化为单位长度._ 118 | 119 | - `矢量` 要归一化的矢量. 120 | 121 | 122 | ## 与此方向的垂直角度 Vertical Angle From Direction 123 | 124 | _与指定方向矢量的垂直夹角,单位为度._ 125 | 126 | - `方向` 对此方向矢量获取垂直角度,单位为度.此矢量在计算开始前进行~~统一化~~(归一化)*. 127 | 128 | 129 | 130 | ## 与此方向的水平角度 Horizontal Angle From Direction 131 | 132 | _与指定方向矢量的水平夹角,单位为度._ 133 | 134 | - `方向` 对此方向矢量获取水平角度,单位为度.此矢量在计算开始前进行~~统一化~~(归一化)*. 135 | 136 | 137 | 138 | ## 与此角度的相对方向 Direction From Angles 139 | 140 | _指向指定角度的单位长度矢量._ 141 | 142 | - `水平角度` 用于构建结果矢量的水平角度,单位为度. 143 | - `垂直角度` 用于构建结果矢量的垂直角度,单位为度. 144 | 145 | 146 | 147 | ## 相距距离 Distance Between 148 | 149 | _两个位置之间的距离,单位为米._ 150 | 151 | - `开始位置` 用于测量距离的两个位置之一 152 | - `结束位置` 用于测量距离的两个位置之一 153 | 154 | 155 | 156 | ## 矢量积 Cross Product 157 | 158 | _指定值的矢量积.(左乘以上等于前)_ 159 | 160 | 161 | 162 | ## 标量积 Dot Product 163 | 164 | _指定值的标题积._ 165 | 166 | - `值` 用于计算标量积的矢量之一. 167 | - `值` 用于计算标量积的矢量之一. 168 | 169 | 170 | ## 角度差 Angle Difference 171 | 172 | _两个角度之间的度数差.将两个角度折算为彼此+/-180度范围内之后进行计算,如果第二个角度比第一个大则结果为正数.否则结果为负数._ 173 | 174 | - `角度` 用于计算结果角度的两个角度之一 175 | - `角度` 用于计算结果角度的两个角度之一 176 | 177 | 178 | 179 | ## 角度的余弦值 Cosine From Degrees 180 | 181 | _指定角度(以度为单位)的余弦值._ 182 | 183 | - `角度` 角度,以角度为单位. 184 | 185 | 186 | 187 | ## 角度的正弦值 Sine From Degrees 188 | 189 | _指定角度(以度为单位)的正弦值._ 190 | 191 | - `角度` 角度,以角度为单位. 192 | 193 | 194 | 195 | ## 弧度的余弦值 Cosine From Radians 196 | 197 | _指定角度(以弧度为单位)的余弦值._ 198 | 199 | - `角度` 角度,以弧度为单位. 200 | 201 | 202 | 203 | ## 弧度的正弦值 Sine From Radians 204 | 205 | _指定角度(以弧度为单位)的正弦值._ 206 | 207 | - `角度` 角度,以弧度为单位. 208 | 209 | 210 | ## 角度的正切值 Tangent From Degrees 211 | 212 | _指定角度(以度为单位)的正切值._ 213 | 214 | - `角度` 角度,以角度为单位. 215 | 216 | 217 | ## 弧度的正切值 Tangent From Radians 218 | 219 | _指定角度(以弧度为单位)的正切值._ 220 | 221 | - `角度` 角度,以弧度为单位. 222 | 223 | 224 | ## 以角度为单位的反余弦值 Arccosine In Degrees 225 | 226 | _指定值的反余弦值,以角度为单位._ 227 | 228 | - `值` 为函数输入值. 229 | 230 | 231 | ## 以弧度为单位的反余弦值 Arccosine In Radians 232 | 233 | _指定值的反余弦值,以弧度为单位._ 234 | 235 | - `值` 为函数输入值. 236 | 237 | 238 | ## 以角度为单位的反正弦值 Arcsine In Degrees 239 | 240 | _指定值的反正弦值,以角度为单位._ 241 | 242 | - `值` 为函数输入值. 243 | 244 | 245 | ## 以弧度为单位的反正弦值 Arcsine In Radians 246 | 247 | _指定值的反正弦值,以弧度为单位._ 248 | 249 | - `值` 为函数输入值. 250 | 251 | 252 | ## 以角度为单位的反正切值 Arctangent In Degrees 253 | 254 | _指定值的反正切值,以角度为单位._ 255 | 256 | - `值` 为函数输入值. 257 | 258 | 259 | ## 以弧度为单位的反正切值 Arctangent In Radians 260 | 261 | _指定值的反正切值,以弧度为单位._ 262 | 263 | - `值` 为函数输入值. 264 | 265 | 266 | ## 矢量间夹角 Angle Between Vectors 267 | 268 | _两个方向性矢量间的夹角(不需要归一化)._ 269 | 270 | - `矢量` 需以角度为单位测量夹角的两个方向性矢量之一.该矢量不需要预先归一化. 271 | - `矢量` 需以角度为单位测量夹角的两个方向性矢量之一.该矢量不需要预先归一化. 272 | -------------------------------------------------------------------------------- /manual/documents/value-player.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 玩家信息 3 | lang: zh-CN 4 | --- 5 | 6 | # 玩家信息 7 | 8 | 9 | 10 | ## 队伍(玩家所在) Team Of 11 | 12 | _一支玩家所在的队伍.如果在自由混战模式中,则"队伍"视为"全部"._ 13 | 14 | - `玩家` 获取此玩家的队伍. 15 | 16 | 17 | 18 | ## 存活 Is Alive 19 | 20 | _玩家是否存活._ 21 | 22 | - `玩家` 检测此玩家的生命状态. 23 | 24 | 25 | 26 | ## 死亡 Is Dead 27 | 28 | _玩家是否死亡._ 29 | 30 | - `玩家` 检测此玩家的死亡状态. 31 | 32 | 33 | 34 | ## 是否是机器人 Is Dummy Bot 35 | 36 | _玩家是否是机器人._ 37 | 38 | - `玩家` 考察此玩家. 39 | 40 | 41 | 42 | ## 死亡数 Number Of Deaths 43 | 44 | _指定玩家死亡的次数.这个值会随着游戏的进程不断累积._ 45 | 46 | - `玩家` 获取此玩家的死亡次数. 47 | 48 | 49 | 50 | ## 消灭数 Number Of Eliminations 51 | 52 | _指定玩家参与消灭的次数.这个值会随着游戏的进程不断累积._ 53 | 54 | - `玩家` 获取此玩家的消灭次数. 55 | 56 | 57 | 58 | ## 最后一击数 Number Of Final Blows 59 | 60 | _指定玩家造成最后一击的次数.这个值会随着游戏的进程不断累积._ 61 | 62 | - `玩家` 获取此玩家的最后一击次数. 63 | 64 | 65 | 66 | ## 生命值 Health 67 | 68 | _玩家当前的生命值,包括护甲和护盾._ 69 | 70 | - `玩家` 获取此玩家的生命值. 71 | 72 | 73 | ## 标准化生命值 Normalized Health 74 | 75 | _玩家当前的生命值,包括护甲和护盾,在0到1之间取标准化值.(例如,0为无生命值,0.5为半生命值,1为满生命值,以此类推.)_ 76 | 77 | - `玩家` 获取此玩家的标准化生命值. 78 | 79 | 80 | ## 最大生命值 Max Health 81 | 82 | _一名玩家的最大生命值包括护甲和护盾._ 83 | 84 | - `玩家` 获取此玩家的最大生命值. 85 | 86 | 87 | 88 | ## 正在交流 Is Communicating 89 | 90 | _玩家是否在使用指定的交流类型(如表情、播放语音等)._ 91 | 92 | - `玩家` 检测此玩家的通讯状态. 93 | - `类型` 考察的交流类型.表情的持续时间为准确值,语音的播放时间视为4秒,其他所有交流类型的持续时间视为2秒. 94 | 95 | 96 | 97 | ## 正在与人交流 Is Communicating Any 98 | 99 | _玩家是否在使用任意的交流类型(如表情、播放语音等)._ 100 | 101 | - `玩家` 检测此玩家的通讯状态. 102 | 103 | 104 | 105 | ## 正在使用主要武器 Is Firing Primary 106 | 107 | _指定玩家是否在使用主要武器攻击._ 108 | 109 | - `玩家` 检测此玩家的主要武器攻击状态. 110 | 111 | 112 | 113 | ## 正在使用辅助武器 Is Firing Secondary 114 | 115 | _指定玩家是否在使用辅助武器攻击._ 116 | 117 | - `玩家` 检测此玩家的辅助武器攻击状态. 118 | 119 | 120 | 121 | ## 正在使用技能1 Is Using Ability 1 122 | 123 | _指定玩家是否在使用技能1._ 124 | 125 | - `玩家` 检测此玩家的技能1状态. 126 | 127 | 128 | 129 | ## 正在使用技能2 Is Using Ability 2 130 | 131 | _指定玩家是否在使用技能2._ 132 | 133 | - `玩家` 检测此玩家的技能2状态. 134 | 135 | 136 | 137 | ## 正在使用终极技能 Is Using Ultimate 138 | 139 | _玩家是否在使用终极技能._ 140 | 141 | - `玩家` 检测此玩家的终极技能状态. 142 | 143 | 144 | 145 | ## 英雄(玩家使用的) Hero Of 146 | 147 | _一名玩家当前的英雄._ 148 | 149 | - `玩家` 获取此玩家的英雄. 150 | 151 | 152 | 153 | ## 正在使用表情交流 Is Communicating Any Emote 154 | 155 | _玩家是否在使用表情._ 156 | 157 | - `玩家` 检测此玩家是否在使用表情. 158 | 159 | 160 | 161 | ## 正在使用语音交流 Is Communicating Any Voice Line 162 | 163 | _玩家是否在播放语音(语音的长度统一视为4秒)._ 164 | 165 | - `玩家` 检测此玩家是否在播放语音. 166 | 167 | 168 | 169 | ## 正在移动 Is Moving 170 | 171 | _玩家是否在移动(当前速度不为零)._ 172 | 173 | - `玩家` 检测此玩家的运动状态. 174 | 175 | 176 | 177 | ## 正在空中 Is In Air 178 | 179 | _玩家是否在空中._ 180 | 181 | - `玩家` 检测此玩家的浮空状态. 182 | 183 | 184 | 185 | ## 正在站立 Is Standing 186 | 187 | _玩家是否在站立(既不在移动也不在空中)._ 188 | 189 | - `玩家` 检测此玩家的站立状态. 190 | 191 | 192 | 193 | ## 正在蹲下 Is Crouching 194 | 195 | _玩家是否在下蹲._ 196 | 197 | - `玩家` 检测此玩家是否正在下蹲. 198 | 199 | 200 | 201 | ## 正在跳跃 Is Jumping 202 | 203 | _指定玩家是否在跳跃._ 204 | 205 | - `玩家` 检测此玩家的跳跃状态. 206 | 207 | 208 | 209 | ## 正在近战攻击 Is Meleeing 210 | 211 | _指定玩家是否在近战攻击._ 212 | 213 | - `玩家` 检测此玩家的近战攻击状态. 214 | 215 | 216 | 217 | ## 面朝方向 Facing Direction Of 218 | 219 | _玩家当前面向方向与地图相对角度的单位长度方向矢量.此矢量的值同时包括水平和垂直方向._ 220 | 221 | - `玩家` 获取此玩家面向的方向. 222 | 223 | 224 | 225 | ## 速度 Speed Of 226 | 227 | _一名玩家的当前速度,单位为米/秒._ 228 | 229 | - `玩家` 获取此玩家的速度. 230 | 231 | 232 | 233 | ## 垂直速度 Vertical Speed Of 234 | 235 | _一名玩家在垂直方向上的当前速度,单位为米/秒.排除所有水平方向的运动,包括沿斜坡方向的运动._ 236 | 237 | - `玩家` 获取此玩家的垂直速度. 238 | 239 | 240 | 241 | ## 水平速度 Horizontal Speed Of 242 | 243 | _一名玩家在水平方向上的当前速度,单位为米/秒.排除所有垂直方向的运动._ 244 | 245 | - `玩家` 获取此玩家的水平速度. 246 | 247 | 248 | 249 | ## 指定方向速度 Speed Of In Direction 250 | 251 | _一名玩家在指定方向上的当前速度,单位为米/秒._ 252 | 253 | - `玩家` 获取此玩家的速度. 254 | - `方向` 行动的方向,用于测量玩家速度. 255 | 256 | 257 | 258 | ## 高度 Altitude Of 259 | 260 | _玩家当前距离表面的高度,以米为单位.如果玩家正在表面上则结果为0._ 261 | 262 | - `玩家` 获取此玩家的高度. 263 | 264 | 265 | 266 | ## 速率 Velocity Of 267 | 268 | _玩家当前的速度,此值为一个矢量.如果玩家位于表面上,则矢量在Y方向上的分量为0,即使在上坡或下坡._ 269 | 270 | - `玩家` 获取此玩家的速度. 271 | 272 | 273 | 274 | ## 阈值 Throttle Of 275 | 276 | _玩家所输入的方向,通过一个矢量表示X轴为水平(正值代表向左),Z轴为垂直(正值代表向前)._ 277 | 278 | - `玩家` 获取此玩家的方向输入. 279 | 280 | 281 | 282 | ## 眼睛位置 Eye Position 283 | 284 | _玩家第一人称视角的位置(用于瞄准)_ 285 | 286 | - `玩家` 玩家第一人称视角的位置(用于瞄准) 287 | 288 | 289 | 290 | ## 在目标点上 Is On Objective 291 | 292 | _指定玩家是否正在运载目标或占领点上._ 293 | 294 | - `玩家` 检测此玩家的目标点状态. 295 | 296 | 297 | 298 | ## 位置(矢量) Position Of 299 | 300 | _玩家的当前位置,此值为矢量._ 301 | 302 | - `玩家` 获取此玩家的位置. 303 | 304 | 305 | 306 | ## 位置(大厅) Slot Of 307 | 308 | _指定玩家的位置编号.在队伍模式中,每个队伍中玩家的位置编号为0到5的数字;在自由混战模式中,位置编号为0到11._ 309 | 310 | - `玩家` 获取此玩家的位置编号. 311 | 312 | 313 | 314 | ## 具有状态 Has Status 315 | 316 | _指定玩家是否具有指定状态,无论此状态是通过"设置状态"行为获得的还是除命令以外的游戏机制获得的._ 317 | 318 | - `玩家` 检测此玩家的状态. 319 | - `状态` 要检测的状态. 320 | 321 | 322 | 323 | ## 分数 Score Of 324 | 325 | _一名玩家当前的得分.如果游戏不是自由混战模式,则结果为0._ 326 | 327 | - `玩家` 获取此玩家的分数. 328 | 329 | 330 | 331 | ## 可用英雄 Allowed Heroes 332 | 333 | _此数组中包括指定玩家当前可以选择的英雄._ 334 | 335 | - `玩家` 获取此玩家可用的英雄. 336 | 337 | 338 | 339 | ## 在地面上 Is On Ground 340 | 341 | _玩家是否位于地面上(或可行走的表面上)._ 342 | 343 | - `玩家` 检测此玩家是否处于地面上. 344 | 345 | 346 | 347 | ## 在墙上 Is On Wall 348 | 349 | _玩家是否位于墙体上(滑墙或爬墙)._ 350 | 351 | - `玩家` 检测此玩家的滑墙状态. 352 | 353 | 354 | 355 | ## 在重生室中 Is In Spawn Room 356 | 357 | _指定玩家是否正在重生室内(恢复生命值且可更换英雄)._ 358 | 359 | - `玩家` 检测此玩家的重生室状态. 360 | 361 | 362 | 363 | ## 头像火力全开 Is Portrait On Fire 364 | 365 | _指定玩家的头像是否处于火力全开状态._ 366 | 367 | - `玩家` 检测此玩家的头像状态. 368 | 369 | 370 | 371 | ## 按钮 Button 372 | 373 | _一个按钮常量._ 374 | 375 | 376 | 377 | ## 按钮被按下 Is Button Held 378 | 379 | _玩家是否正在按下特定按钮._ 380 | 381 | - `玩家` 检测此玩家的按钮. 382 | - `按钮` 用于检测的按钮. 383 | 384 | 385 | 386 | ## 技能冷却时间 Ability Cooldown 387 | 388 | _一名玩家的指定按键对应技能的冷却时间, 以秒为单位._ 389 | 390 | - `玩家` 检测此玩家的按钮. 391 | - `按钮` 检测此按键对应的技能状态. 392 | 393 | 394 | 395 | ## 技能图标字符串 Ability Icon String 396 | 397 | _将一个英雄和按键的参数转化为图标在字符串中显示(每个字母串中最多4个)._ 398 | 399 | - `英雄` 将这个英雄的技能转化为图标. 400 | - `按钮` 将这个技能的按钮转化为图标. 401 | 402 | 403 | 404 | ## 终极技能充能百分比 Ultimate Charge Percent 405 | 406 | _一名玩家当前终极技能的充能百分比._ 407 | 408 | - `玩家` 获取此玩家当前终极技能的充能百分比. 409 | 410 | 411 | 412 | ## 处于非初始状态 Is In Alternate Form 413 | 414 | _指定玩家当前是否处于非初始状态(如 D.va 离开机甲, 卢西奥使用加速音乐, 堡垒处于转换形态期间, 天使和托比昂使用复制攻击武器, 等等.) 如果要检测回声是否正在使用人格复制, 请使用"正在人格复制"的值._ 415 | 416 | - `玩家` 检测此玩家的状态. 417 | 418 | 419 | 420 | ## 正在人格复制 Is Duplicating 421 | 422 | _指定玩家是否正在复制另一名英雄. (为了检测复制的英雄, 可使用"正在复制的英雄"的值._ 423 | 424 | - `玩家` 检测此玩家的人格复制状态. 425 | 426 | 427 | 428 | ## 正在复制的英雄 Hero Being Duplicated 429 | 430 | _指定玩家正在复制此英雄. 如果没有复制英雄, 结果值为0_ 431 | 432 | - `玩家` 正在施展人格复制的玩家 433 | 434 | 435 | 436 | ## 弹药 Ammo 437 | 438 | _一名玩家当前的弹药数量._ 439 | 440 | - `玩家`: 获取此玩家的弹药数量. 441 | - `弹夹`: 获取弹夹的索引. 0为第一个弹夹, 1为第二个. 若指定类型不存在, 则返还0. 442 | 443 | 444 | 445 | ## 最大弹药 Max Ammo 446 | 447 | _一名玩家当前的最大弹药数量._ 448 | 449 | - `玩家`: 获取此玩家的最大弹药数量. 450 | - `弹夹`: 获取弹夹的索引. 0为第一个弹夹, 1为第二个. 若指定类型不存在, 则返还0. 451 | 452 | 453 | 454 | ## 武器 Weapon 455 | 456 | _一名玩家当前的武器._ 457 | 458 | - `玩家`: 获取此玩家的武器. 459 | 460 | 461 | 462 | ## 正在装填 Is Reloading 463 | 464 | _指定玩家是否在装填._ 465 | 466 | - `玩家`: 检测此玩家的装填状态. 467 | 468 | 469 | 470 | ## 输入绑定字符串 Input Binding String 471 | 472 | _将一个 “按钮” 参数转化为一个字符串, 根据玩家所输入的绑定按键显示. 此值不能存储在变量中._ 473 | 474 | - `按钮`: 将这个输入绑定的按键转化为图标. 475 | 476 | 477 | 478 | ## 技能充能 Ability Charge 479 | 480 | _一名玩家指定按键对应技能的充能次数._ 481 | 482 | - `玩家`: 检测此玩家的技能状态. 483 | - `按钮`: 检测此按键对应的技能状态. 484 | 485 | 486 | 487 | ## 技能资源 Ability Resource 488 | 489 | _一名玩家指定按键对应技能的资源百分比._ 490 | 491 | - `玩家`: 检测此玩家的技能状态. 492 | - `按钮`: 检测此按键对应的技能状态. 493 | -------------------------------------------------------------------------------- /manual/documents/value-variable.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 变量 3 | lang: zh-CN 4 | --- 5 | 6 | # 变量 7 | 8 | 9 | 10 | ## 全局变量 Global Variable 11 | 12 | _一个全局变量的当前值,全局变量即属于游戏本身的变量._ 13 | 14 | - `变量` 获取此变量的值. 15 | 16 | 17 | 18 | ## 玩家变量 Player Variable 19 | 20 | _一个玩家变量当前的值,玩家变量即属于一个特定玩家的变量._ 21 | 22 | - `玩家` 获取此玩家的变量值. 23 | - `变量` 获取此变量的值. 24 | -------------------------------------------------------------------------------- /manual/documents/value-vector-angle.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 矢量和角度 3 | lang: zh-CN 4 | --- 5 | 6 | # 矢量和角度 7 | 8 | ## 矢量 Vector 9 | 10 | _矢量在三个方向上的实数值(X、Y、Z),X为左,Y为上,Z为前.矢量用来表示位置、方向和速度._ 11 | 12 | 13 | 14 | ## X方向分量 X Component Of 15 | 16 | _指定矢量在X方向上的分量,通常代表向左的量._ 17 | 18 | - `值` 要获取X方向分量的矢量. 19 | 20 | 21 | 22 | ## Y方向分量 Y Component Of 23 | 24 | _指定矢量在Y方向上的分量,通常代表向上的量._ 25 | 26 | - `值` 要获取Y方向分量的矢量. 27 | 28 | 29 | 30 | ## Z方向分量 Z Component Of 31 | 32 | _指定矢量在Z方向上的分量,通常代表向前的量._ 33 | 34 | - `值` 要获取Z方向分量的矢量. 35 | 36 | 37 | 38 | ## 上 Up 39 | 40 | _方向性矢量(0,1,0)的简写,此矢量指向上方._ 41 | 42 | 43 | 44 | ## 下 Down 45 | 46 | _方向性矢量(0,-1,0)的简写,此矢量指向下方._ 47 | 48 | 49 | 50 | ## 左 Left 51 | 52 | _方向性矢量(1,0,0)的简写,此矢量指向左方._ 53 | 54 | 55 | 56 | ## 右 Right 57 | 58 | _方向性矢量(-1,0,0)的简写,此矢量指向右方._ 59 | 60 | 61 | 62 | ## 前 Forward 63 | 64 | _方向性矢量(0,0,1)的简写,此矢量指向前方._ 65 | 66 | 67 | 68 | ## 后 Backward 69 | 70 | _方向性矢量(0,0,-1)的简写,此矢量指向后方._ 71 | 72 | 73 | 74 | ## 方向 Direction Towards 75 | 76 | _从一个位置到另一个位置的单位长度矢量._ 77 | 78 | - `开始位置` 用于获取方向矢量的起点位置. 79 | - `结束位置` 用于获取方向矢量的终点位置. 80 | 81 | 82 | 83 | ## 向量 Vector Towards 84 | 85 | _从一个位置到另一个位置的位移矢量._ 86 | 87 | - `开始位置` 位移矢量的起点. 88 | - `结束位置` 位移矢量的终点. 89 | 90 | 91 | 92 | ## 地图矢量 World Vector Of 93 | 94 | _相对于地图坐标的矢量值,与所提供的相对本地坐标的矢量值对应._ 95 | 96 | - `本地矢量` 将此相对本地坐标的矢量值转化为相对于地图坐标的矢量值. 97 | - `相对玩家` 本地矢量是相对此玩家的. 98 | - `转换` 指定此矢量是否接受旋转及平移(通常是位置),或者只接受旋转(通常是方向和速度). 99 | 100 | 101 | 102 | ## 本地矢量 Local Vector Of 103 | 104 | _相对于本地坐标的矢量值,与所提供的相对地图坐标的矢量值对应._ 105 | 106 | - `地图矢量` 将此相对地图坐标的矢量值转化为相对于本地坐标的矢量值. 107 | - `相对玩家` 本地矢量是相对此玩家的. 108 | - `转换` 指定此矢量是否接受旋转及平移(通常是位置),或者只接受旋转(通常是方向和速度). 109 | 110 | 111 | 112 | ## 垂直方向夹角 Vertical Angle Towards 113 | 114 | _玩家当前朝向的方向与指定位置之间的垂直方向夹角,单位为度.如果位置在玩家下方,则结果为正数.否则,结果为零或负数._ 115 | 116 | - `玩家` 以此玩家当前面向的角度为起点. 117 | - `位置` 以地图中的此位置为终点. 118 | 119 | 120 | 121 | ## 垂直朝向角度 Vertical Facing Angle Of 122 | 123 | _玩家当前面对的方向与地图的垂直夹角.当玩家转向下方时这个值会增加._ 124 | 125 | - `玩家` 获取此玩家的面向角度. 126 | 127 | 128 | 129 | ## 水平方向夹角 Horizontal Angle Towards 130 | 131 | _玩家当前朝向的方向与指定位置之间的水平方向夹角,单位为度.如果位置在玩家左边,则结果为正数.否则,结果为零或负数._ 132 | 133 | - `玩家` 以此玩家当前面向的角度为起点. 134 | - `位置` 测定与地图中此位置的夹角. 135 | 136 | 137 | 138 | ## 水平朝向角度 Horizontal Facing Angle Of 139 | 140 | _玩家当前面对的方向与地图的水平夹角.当玩家转向左方时这个值会增加.(范围为+/-180)._ 141 | 142 | - `玩家` 获取此玩家的水平面向角度. 143 | 144 | 145 | 146 | ## 射线命中位置 Ray Cast Hit Position 147 | 148 | _射线在表面、物体或玩家上命中的位置(如果没有命中则此位置在视线结束处)._ 149 | 150 | - `开始位置` 射线开始施放的位置.如果此处填入一名玩家,则使用从此玩家脚部向上2米位置. 151 | - `结束位置` 射线结束的位置.如果此处填入一名玩家,则使用从此玩家的部向上2米的位置 152 | 153 | 154 | 155 | ## 射线命中法线 Ray Cast Hit Normal 156 | 157 | 线命中位置的表面的法线_(如果没有命中,则从视线结束位置到视线起始位置)._ 158 | 159 | - `开始位置` 射线开始施放的位置.如果此处填入一名玩家,则使用从此玩家脚部向上2米位置. 160 | - `结束位置` 射线结束的位置.如果此处填入一名玩家,则使用从此玩家脚部向上2米的位置 161 | 162 | 163 | 164 | ## 射线命中玩家 Ray Cast Hit Player 165 | 166 | _射线命中的玩家(如果没有命中则为空)._ 167 | 168 | - `开始位置` 射线开始施放的位置.如果此处填入一名玩家,则使用从此玩家脚部向上2米位置. 169 | - `结束位置` 射线结束的位置.如果此处填入一名玩家,则使用从此玩家脚部向上2米的位置 170 | 171 | 172 | 173 | ## 在视线内 Is In Line Of Sight 174 | 175 | _两个位置是否在彼此的视线内._ 176 | 177 | - `开始位置` 用于进行视线检测的起点位置.如果此处填入一名玩家,则使用从此玩家脚部向上2米的位置. 178 | - `结束位置` 用于进行视线检的终点位置.如果此处填入一名玩家,则使用从此玩家脚部向上2米的位置. 179 | 180 | 181 | 182 | ## 在视野内 Is In View Angle 183 | 184 | _检测一个坐标是否位于玩家的视角内._ 185 | 186 | - `玩家` 检测此名玩家的视野. 187 | - `坐标` 检测此坐标是否在视角内. 188 | - `视角` 用于比较的视角,单位为度. 189 | 190 | 191 | 192 | ## 视角中的玩家 Players In View Angle 193 | 194 | _在该视角内指定队伍的玩家。_ 195 | 196 | - `队伍` 考察的玩家所在的队伍. 197 | - `视角` 用于比较的视角,单位为度. 198 | 199 | 200 | 201 | ## 距离准星最近的玩家 Player Closest To Reticle 202 | 203 | _最接近指定玩家准星位置的玩家,可以选择是否限制所在队伍._ 204 | 205 | - `玩家` 搜索距此玩家准星最近的玩家. 206 | - `队伍` 搜索此队伍中最近的玩家. 207 | 208 | 209 | ## 范围内玩家 Players Within Radius 210 | 211 | _一个列表,其中包含距离指定位置小于一定距离的玩家,可设置是否受到队伍及视线的限制._ 212 | 213 | - `中间` 以此位置为中心测定距离. 214 | - `半径` 玩家需在此距离范围内(单位:米)才会出现在结果列表中. 215 | - `队伍` 所选队伍的玩家会出现在结果列表中. 216 | - `视线检测` 只有通过视线检测的玩家才会出现在结果列表中. 217 | -------------------------------------------------------------------------------- /manual/vector.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 矢量和向量 3 | lang: zh-CN 4 | --- 5 | 6 | ## 矢量 7 | 8 | 矢量是一个由三个数字组成的、有方向的量。在OW中,矢量更类似于一个三维坐标点。又分为本地矢量和地图矢量。 9 | 10 | 本地矢量即原点位于玩家位置,玩家面对方向为Z轴正方向的坐标系。如图所示: 11 | 12 | ![1.png](https://p.pstatp.com/origin/pgc-image/f56f5722028940a185a8373bd6d82dec) 13 | 14 | 在这张图中,Z轴正方向为玩家面对的方向。X轴正方向为玩家左侧。Y轴正方向为玩家上方。例如: 15 | 16 | * 坐标(1,1,1)位于玩家的左、前、上方向。 17 | * 图中的F点坐标为(-1,2,-1),位于玩家的右、后、上方向。 18 | 19 | 注意:本地矢量的XoZ平面与地图矢量的XoZ平面完全平行,不会因为玩家低头或仰头改变。 20 | 21 | * 本地矢量和地图矢量可以通过函数“地图矢量”和“本地矢量”互相转换。 22 | * 矢量本身与参考系无关,当你使用动作时,一般会有“相对:至地图/至玩家”的选项。当你选择“至地图”时,游戏则会将矢量当做地图矢量来处理。反之亦然。 23 | 24 | ## 向量 25 | 26 | 矢量和向量其实是一个东西。在OW中,向量可以用来方便的表示一个矢量到另一个矢量的方向。 27 | 28 | 即:`向量(A, B)=矢量(Xb - Xa, Yb - Ya, Zb - Za)` 29 | 30 | ## 旋转和转换 31 | 32 | 将本地矢量转换为地图矢量时,可以选择“旋转”或“旋转并转换”。它们的区别是: 33 | 34 | * 旋转 35 | * 只会对本地矢量进行旋转 36 | * 例如玩家位于`(1, 1, 1)`,面向X、Z中间时,将`(0, 0, 1)`转换为地图矢量的结果是`(0.70, 0, 0.70)` 37 | * 旋转并转换: 38 | * 对本地矢量进行旋转,然后平移到玩家所在的位置 39 | * 例如玩家位于`(1, 1, 1)`,面向X、Z中间时,将`(0, 0, 1)`转换为地图矢量的结果是`(1.70, 1, 1.70)` 40 | 41 | ## 技巧 42 | 43 | * 你可以使用矢量积取得两个矢量的垂直方向 44 | * 你可以使用标量积判断两个矢量之间的夹角大小 45 | * `a · b > 0`方向基本相同,夹角在0°到90°之间 46 | * `a · b = 0`正交,相互垂直 47 | * `a · b < 0`方向基本相反,夹角在90°到180°之间 48 | * 你可以使用上、下、左、右、前、后来代替手动写X、Y、Z坐标 49 | * 你可以使用`乘(上, 矢量A)`来取得矢量A的Z方向矢量。以此类推,例如当你需要让英雄面向地图的正Z方向,但不需要改变英雄的X、Y方向时,可以使用`乘(矢量(1, 1, 0), 面朝方向(事件玩家))`方便编写。 50 | 51 | ## 示例 52 | 53 | ### 获取玩家面前的坐标 54 | 55 | 利用本地矢量和地图矢量的转换,我们可以比较方便的获取基于玩家位置的坐标。例如,我们想要获取玩家面前1单位处的坐标,则可以使用: 56 | 57 | * 地图矢量(矢量(0, 0, 1), 事件玩家, 旋转并转换) 58 | 59 | ### 击退:使用向量 60 | 61 | 效果:伤害敌人造成击退。假设A击中B时,我们希望让B在A-B向量上移动10单位。 62 | 63 | * 事件:玩家受到伤害 64 | * 动作:施加推力(事件玩家, 向量(位置(攻击方), 位置(事件玩家)), 10, 至地图, 取消相反运动) 65 | 66 | ### 击退:手动计算矢量 67 | 68 | 效果:伤害敌人造成击退。假设A击中B时,我们希望让B在A-B向量上移动10单位。 69 | 70 | * 事件:玩家受到伤害 71 | * 动作:施加推力(事件玩家, 矢量(减(X方向分量(位置(攻击方)), X方向分量(位置(事件玩家))), 减(Y方向分量(位置(攻击方)), Y方向分量(位置(事件玩家))), 减(Z方向分量(位置(攻击方)), Z方向分量(位置(事件玩家)))), 10, 至地图, 取消相反运动) 72 | 73 | ### 三角函数计算 74 | 75 | 我们演示一下三角函数的使用。因为比较复杂,特别是OW中编写就更复杂了,所以实际上不会这样写,仅作为参考: 76 | 77 | * 通过“向量”我们可以得到一个方向,假设是向量A(X,Y,Z)。 78 | * 余弦:计算向量A与向量(0,Y,Z)的夹角(即向量A与Y-Z平面的夹角),则可以得出Z方向位移=总距离*cos(夹角) 79 | * 正弦:计算向量A与向量(X,Y,0)的夹角(即向量A与X-Y平面的夹角),则可以得出Z方向位移=总距离*sin(夹角) 80 | 81 | 正弦和余弦可以这样计算: 82 | 83 | * `sin = a × b / |a||b|`,可以使用矢量积函数帮助计算 84 | * `cos = a · b / |a||b|`,可以使用标量积函数帮助计算 85 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ow-workshop", 3 | "version": "1.0.0", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "devDependencies": { 6 | "vuepress": "^1.0.0-alpha.48", 7 | "vuepress-plugin-baidu-google-analytics": "^1.0.0", 8 | "vuepress-plugin-copy-via-link": "^1.0.0", 9 | "@vuepress/plugin-back-to-top": "^1.0.0-alpha.48" 10 | }, 11 | "scripts": { 12 | "dev": "vuepress dev .", 13 | "build": "vuepress build ." 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /tutorial/2d.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 2D横版格斗 3 | lang: zh-CN 4 | --- 5 | 6 | # 2D横版格斗 7 | 8 | > 仅解析核心规则,不解析平衡等其他规则 9 | 10 | ## 规则1:限制玩家的移动方向 11 | 12 | 事件 13 | * 持续 - 每名玩家 14 | * 队伍 双方 全部 15 | 16 | 条件 17 | * 已重生(事件玩家) == 真 18 | 19 | 动作 20 | * 开始限制速度(事件玩家, 0, 1, 0, 1, 0, 0) 21 | 22 | 解析 23 | * 通过“开始限制速度”,让玩家只能向前和向后移动,不能左右移动 24 | 25 | ## 规则2:调整摄像头位置 26 | 27 | 事件 28 | * 持续 - 每名玩家 29 | * 队伍 双方 全部 30 | 31 | 条件 32 | * 存活(事件玩家) == 真 33 | * 在重生室中(事件玩家) == 假 34 | 35 | 动作 36 | * 开始镜头(事件玩家, 矢量(加(除(X方向分量(位置(事件玩家)), 2), -164.250), 加(除(Y方向分量(位置(事件玩家)), 4), 12), 200.600), 矢量(加(除(X方向分量(位置(事件玩家)), 2), -164.250), 加(除(Y方向分量(位置(事件玩家)), 4), 12), 180.600), 10) 37 | 38 | 解析 39 | * 眼睛位置的X,Y,Z坐标计算: 40 | * X:(英雄的位置 / 2) - 164.25 41 | * Y:(英雄的位置 / 4) + 12 42 | * Z:200.6 43 | * 望向位置的X,Y,Z坐标计算: 44 | * X:(英雄的位置 / 2) - 164.25 45 | * Y:(英雄的位置 / 4) + 12 46 | * 180.6 47 | * 这两个数是怎么得出来的?当然是在游戏里找出来的。没有什么特别的理由,只是这个角度比较舒服。不同地图数值不一样,你也可以自己找其他更舒服的数值 48 | 49 | ## 规则3:强制英雄Z坐标 50 | 51 | 事件 52 | * 持续 - 每名玩家 53 | * 队伍 双方 全部 54 | 55 | 条件 56 | * 绝对值(减(180.6, Z方向分量(位置(事件玩家)))) > 0.250 57 | * 存活(事件玩家) == 真 58 | * 已重生(事件玩家) == 真 59 | * 在重生室中(事件玩家) == 假 60 | 61 | 动作 62 | * 传送(事件玩家, 矢量(X方向分量(位置(事件玩家)), Y方向分量(位置(事件玩家)), 180.600)) 63 | * 等待(0.250, 无视条件) 64 | * 如果条件为“真”则循环 65 | 66 | 解析 67 | * 上面我们已经设置了强制移动,为什么这里还要来一条?因为我们要考虑到一些位移技能,例如狂鼠的炸弹。 68 | * 这条规则便是每隔0.25秒,就检测英雄的Z坐标是否与180.6差别过大,如果过大,则强制移动回这个坐标 69 | * 180.6这个坐标是根据地图测量出的 70 | 71 | ## 规则4:强制英雄朝向 72 | 73 | 事件 74 | * 持续 - 每名玩家 75 | * 队伍 双方 全部 76 | 77 | 条件 78 | * 绝对值(Z方向分量(面朝方向(事件玩家)))) > 0.050 79 | * 存活(事件玩家) == 真 80 | * 已重生(事件玩家) == 真 81 | * 在重生室中(事件玩家) == 假 82 | 83 | 动作 84 | * 设置朝向(事件玩家, 乘(矢量(1, 1, 0), 面朝方向(事件玩家)), 至地图) 85 | * 等待(0.250, 无视条件) 86 | * 如果条件为“真”则循环 87 | 88 | 解析 89 | * 和上面类似,这也是为了防止意外的英雄镜头改变 90 | * 这条规则便是每隔0.25秒,就检测英雄面向的Z坐标是否与0差别过大(0是刚好垂直于X/Y平面),如果过大,则强制朝向这个坐标 91 | * 这里有一个取巧的地方:使用了矢量乘法,取得了(英雄面向X, 英雄面向Y, 0)这个矢量 92 | 93 | ## 规则5:重生传送 94 | 95 | 事件 96 | * 持续 - 每名玩家 97 | * 队伍 队伍1 全部 98 | 99 | 条件 100 | * 存活(事件玩家) == 真 101 | * 已重生(事件玩家) == 真 102 | * 在重生室中(事件玩家) == 真 103 | 104 | 动作 105 | * 传送(事件玩家, 矢量(加(-350.000, 随机实数(0, 5)), 11.800, 180.600)) 106 | * 设置朝向(事件玩家, 矢量(1, 0, 0), 至地图) 107 | 108 | 解析 109 | * 传送英雄到相应位置 110 | * 设置英雄朝向 -------------------------------------------------------------------------------- /tutorial/aiming_and_perspective.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 自瞄和透视 3 | lang: zh-CN 4 | --- 5 | 6 | # 自瞄和透视 7 | 8 | ## 自瞄 9 | 10 | ### 规则1 11 | 12 | 事件 13 | * 持续 - 每名玩家 14 | * 队伍 双方 全部 15 | 16 | 条件 17 | * 按钮被按下(事件玩家, 主要攻击模式) == 真 18 | 19 | 动作 20 | * 开始朝向(事件玩家, 向量(位置(事件玩家), 位置(距离准心最近的玩家(事件玩家, 对方队伍(队伍(事件玩家))))), 1000, 至地图, 方向及角速率) 21 | 22 | 解析 23 | * 通过“条件”,我们找到了正在开枪的玩家(下面成为A玩家) 24 | * “开始朝向”可以移动玩家正面方向,我们要移动的是“事件玩家”,即A玩家 25 | * “方向”为向量,意思是从A玩家,到离准心最近的对方玩家 26 | * 如何找到准心最近的对方玩家?这个玩家应该满足两个条件:一是距离A玩家的准心最近,二是属于对方队伍。 27 | * 因此,我们从A玩家 - 队伍 - 对方队伍,即可找到对方玩家 28 | * 最后,“角速度”用来让“自瞄”更“暴力”一些 29 | * 另外,在这个例子中,我们只设定了“主要攻击模式”。如果需要设定辅助攻击模式,则需要再添加一个规则 30 | 31 | ### 规则2 32 | 33 | 事件 34 | * 持续 - 每名玩家 35 | * 队伍 双方 全部 36 | 37 | 条件 38 | * 按钮被按下(事件玩家, 主要攻击模式) == 假 39 | 40 | 动作 41 | * 停止朝向(事件玩家) 42 | 43 | ## 透视 44 | 45 | 事件 46 | * 持续 - 每名玩家 47 | * 队伍 双方 全部 48 | 49 | 条件 50 | * 无 51 | 52 | 动作 53 | * 创建图标(所有玩家(所有队伍), 事件玩家, ARROW: DOWN, 可见和位置, 绿色, 假) 54 | 55 | 解析 56 | * 我们给事件玩家创建了一个箭头 57 | * 这个箭头可以被所有队伍的所有玩家看见 -------------------------------------------------------------------------------- /tutorial/common.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 常见功能 3 | lang: zh-CN 4 | --- 5 | 6 | # 常见功能 7 | 8 | ## 倒计时 9 | 10 | 倒计时有两种方式,一种是使用“追踪变量”,另一种则是手动等待。一般情况下,推荐使用前者。如果有特殊需要,则使用后者。下面的例子中,均使用变量A作为倒计时,假设倒计时为30秒。 11 | 12 | 方式一: 13 | 14 | * 事件:持续 - 全局 15 | * 动作: 16 | * 设置全局变量(A, 30) 17 | * 追踪全局变量频率(A, 0, 1, 无) 18 | 19 | * 事件:持续 - 全局 20 | * 条件:全局变量(A) == 0 21 | * 动作:// 倒计时结束的动作 22 | 23 | 方式二(你可以在循环前的任意位置做一些别的事): 24 | 25 | * 事件:持续 - 全局 26 | * 动作:设置全局变量(A, 30) 27 | 28 | * 事件:持续 - 全局 29 | * 条件:全局变量(A) > 0 30 | * 动作: 31 | * 等待(1.000, 无视条件) 32 | * 修改全局变量(A, 减, 1) 33 | * 如条件为"真"则循环 34 | * // 倒计时结束的动作 35 | 36 | 37 | 如果是针对每个玩家单独计时,则将相应的事件和变量修改即可,例如: 38 | 39 | * 事件:持续 - 每名玩家 40 | * 动作: 41 | * 设置玩家变量(事件玩家, A, 30) 42 | * 追踪玩家变量频率(事件玩家, A, 0, 1, 无) 43 | 44 | * 事件:持续 - 每名玩家 45 | * 条件:玩家变量(事件玩家, A) == 0 46 | * 动作:// 倒计时结束的动作 47 | 48 | ## 创建特效,稍后删除 49 | 50 | 特效如果创建而不删除,会导致实体数量超过上限,从而影响到正常的规则功能。本例中,我们让“天使”使用终极技能时,会有伴随着的小星星。当技能使用结束时,则删除这些小星星。 51 | 52 | * 事件:持续 - 每名玩家 天使 53 | * 条件:正在使用终极技能(事件玩家) == 真 54 | * 动作: 55 | * 设置玩家变量(事件玩家, A, 空数组) 56 | * 创建效果(所有玩家(所有队伍), 火花, 蓝色, 事件玩家, 1.500, 可见,位置和半径) 57 | * 修改玩家变量(事件玩家, A, 添加至数组, 最后创建的实体) 58 | * 创建效果(所有玩家(所有队伍), 火花, 红色, 事件玩家, 1.500, 可见,位置和半径) 59 | * 修改玩家变量(事件玩家, A, 添加至数组, 最后创建的实体) 60 | * 创建效果(所有玩家(所有队伍), 火花, 黄色, 事件玩家, 1.500, 可见,位置和半径) 61 | * 修改玩家变量(事件玩家, A, 添加至数组, 最后创建的实体) 62 | 63 | 删除小星星: 64 | * 事件:持续 - 每名玩家 天使 65 | * 条件: 66 | * 正在使用终极技能(事件玩家) == 假 67 | * 玩家变量(事件玩家, A) != 空数组 68 | * 动作: 69 | * 消除效果(数组中的值(玩家变量(事件玩家, A), 0)) 70 | * 消除效果(数组中的值(玩家变量(事件玩家, A), 1)) 71 | * 消除效果(数组中的值(玩家变量(事件玩家, A), 2)) 72 | * 设置玩家变量(事件玩家, A, 空数组) 73 | 74 | 本例中创建了三个颜色不同的效果,如果你只有一个效果,则可以不使用数组,更加简单。 -------------------------------------------------------------------------------- /tutorial/core.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 运行机制推测 3 | lang: zh-CN 4 | --- 5 | 6 | # 运行机制推测 7 | 8 | 注意:本文绝大部分内容均为主观推测​,因此正确性不做保证,仅供参考。 9 | 10 | 规则会同时在服务器与不同玩家的设备上运行。这保证了所有玩家的体验一致,但也导致了一些问题,例如服务器拥挤的情况下可能会感到不流畅,随机并不是真随机。 11 | 12 | 部分操作不会立刻生效,因为在OW中,命令的模拟(即实际运行命令)是周期性的,目前大致为16.6ms(60Hz)。又称每16.6ms是一个tick。例如,当你重生一名玩家后,立刻改变玩家的一些属性很可能无效。 13 | 14 | 所有能在屏幕上显示或能发出声音的东西,包括玩家、建筑、文字、图标、特效等,都可以被称作“实体”,但不包括HUD(广义的)部分。地图工坊仅能操作由地图工坊创建的实体,和一些实体的特定内容(例如访问玩家的部分状态)。地图工坊限制的实体数量,只包括由地图工坊创建的实体,并且所有玩家共享此上限。 15 | 16 | ## 运行过程 17 | 18 | OW的地图工坊很可能是单线程运行的(指规则运行过程)如果没有发生阻塞(即等待动作),则当前的动作会一直运行下去,不会被其他规则打断。 19 | 20 | 根据我们的测试,我们推测OW的运行过程如下: 21 | 22 | * 维护一个运行队列。 23 | * 每个tick,进行: 24 | * 游戏本身的逻辑(如命中判定、移动模拟等) 25 | * 如果在此过程中,触发了事件(如“玩家造成伤害”等),则将其放入队列。 26 | * 等待队列是否有到达等待时间或条件不满足的 27 | * 到达等待时间:加入到执行队列中。 28 | * 条件不满足:根据动作处理。 29 | * 检查每个可用的持续事件的条件是否满足,如果满足就加入到执行队列中。 30 | * 更新部分带有“重新赋值”属性的实体、HUD。 31 | * 按照运行队列执行。 32 | 33 | ## 优化建议 34 | 35 | ### 独立重复运算 36 | 37 | 目前所观察到的现象表明:持续事件的“条件”、带有“重新赋值”属性的实体、HUD,会在每个tick进行运算。因此,有多个规则使用了同样的运算时,例如:(规则1、规则2、规则3事件均为“持续 - 每名玩家”) 38 | 39 | * 规则1:相距距离(事件玩家, 全局变量(A)) < 5 40 | * 规则2:相距距离(事件玩家, 全局变量(A)) > 0 41 | * 规则3:相距距离(事件玩家, 全局变量(A)) == 5 42 | 43 | 则可以写为: 44 | 45 | * 规则A: 46 | * 事件:持续 - 每名玩家 47 | * 动作: 48 | * 设置玩家变量(事件玩家, B, 相距距离(事件玩家, 全局变量(A))) 49 | * 等待(0.016, 无视条件) 50 | * 循环 51 | * 规则1:玩家变量(事件玩家, B) < 5 52 | * 规则2:玩家变量(事件玩家, B) > 0 53 | * 规则3:玩家变量(事件玩家, B) == 5 54 | 55 | 这样写有一个小问题:本来响应条件变化的时间不超过16.7ms,但现在则不超过33.3ms。但一般不会有太大负面作用。 56 | 57 | 另外,直接读取属性(如玩家是否按下按键、玩家的生命值、游戏时间等)的操作其实优化空间并不大,所以不需要单独独立出来。 58 | 59 | ### 模拟局部变量 60 | 61 | 目前所观察到的现象表明:若无“等待”动作,规则运行不会被中断。因此,单个规则中若有多个同样的运算时,例如: 62 | 63 | * 根据条件跳过(相距距离(事件玩家, 全局变量(A)) < 5, 1) 64 | * // xxx 65 | * 根据条件跳过(相距距离(事件玩家, 全局变量(A)) > 10, 1) 66 | * // xxx 67 | * 根据条件跳过(相距距离(事件玩家, 全局变量(A)) > 20, 1) 68 | * // xxx 69 | 70 | 则可以写为: 71 | 72 | * 设置玩家变量(事件玩家, B, 相距距离(事件玩家, 全局变量(A))) 73 | * 根据条件跳过(玩家变量(事件玩家, B) < 5, 1) 74 | * // xxx 75 | * 根据条件跳过(玩家变量(事件玩家, B) > 10, 1) 76 | * // xxx 77 | * 根据条件跳过(玩家变量(事件玩家, B) > 20, 1) 78 | * // xxx 79 | 80 | ## 其他 81 | 82 | * 因为运行机制,“等待”并不完全准确。一次等待时间,误差一般不超过16ms。 83 | 84 | ## “服务器意外关闭”的猜测 85 | 86 | 关于“服务器意外关闭”,我们有一些猜测,可能并不完全准确。 87 | 88 | * “运行队列”可能到了某个上限 89 | * 每个tick运行的时间超过了某个上限 90 | 91 | ## 参考资料 92 | 93 | * [《守望先锋》架构设计与网络同步](https://gameinstitute.qq.com/community/detail/114516) 94 | * [《守望先锋》中的网络脚本化的武器和技能系统](https://gameinstitute.qq.com/community/detail/114122) 95 | 96 | 另外感谢[竹子菌](https://space.bilibili.com/2418570)、[昭华](https://weibo.com/u/6571188444)的协助 -------------------------------------------------------------------------------- /tutorial/mutation.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 生化模式 3 | lang: zh-CN 4 | --- 5 | 6 | # 生化模式 7 | 8 | 本文将介绍如何从零开始创造一个“生化模式”——相信很多人都玩过CSOL的生化模式。在阅读本文前,建议你先简单阅读[官方说明](https://ow.blizzard.cn/article/news/1307),对地图工坊有初步了解,或者进入游戏,简单看看官方的几个示例。 9 | 10 | ## 选择基本模版 11 | 12 | OW基本模式有:推车、占点、AB点、混合。除此之外,还有个人死斗、团队死斗、夺旗模式、突击模式。我们先想一下,哪个模式最合适?因为我们需要动态的修改敌对关系,所以我们只能选择个人死斗作为基础模式。 13 | 14 | ## 从基本功能开始 15 | 16 | 如何走出第一步?我建议从基本功能开始。“生化模式”的基本功能应该是感染。这个过程是什么样的? 17 | 18 | * 僵尸抓了人一下 19 | * 把人变成僵尸 20 | 21 | 所以,我们应该有一个这样的规则: 22 | 23 | * 事件:玩家受到伤害 24 | * 条件:受伤玩家是人,攻击方是僵尸 25 | * 动作:受伤玩家变成僵尸 26 | 27 | 如何判断玩家是僵尸还是人类?考虑到人类英雄可能不止一个,用英雄来判断不是一个好的选择。我们可以用一个玩家变量(例如B)来标记一个玩家是人类还是僵尸,那么条件就是: 28 | 29 | * 玩家变量(事件玩家, B) == 真 30 | * 玩家变量(攻击方, B) == 假 31 | 32 | 动作: 33 | * 设置玩家变量(事件玩家, B, 假) 34 | * 开始强制玩家选择英雄(事件玩家, 英雄(僵尸英雄)) 35 | * 修改玩家分数(攻击方, 1) 36 | 37 | ## 完善整体框架 38 | 39 | 我们想想这个模式框架还要些什么: 40 | 41 | * 倒计时后随机母体僵尸 42 | * 获胜判定 43 | 44 | ### 倒计时后随机母体僵尸 45 | 46 | 查询手册,我们知道有一个值是“总计消耗时间”。它似乎和我们的要求一致。但仔细想想:它包括了准备时间和攻防转换时间。这和我们的要求有很大差别。目前没有直接能用的值,我们只能用变量来模拟: 47 | 48 | * 有一个变量,一开始是30 49 | * 游戏开始后,每秒将它-1 50 | * 当它是0时,就代表时间到了 51 | 52 | 于是,我们写出这样一个规则: 53 | 54 | 事件 55 | * 持续 - 全局 56 | 57 | 条件 58 | * 游戏正在进行中 == 真 59 | * 全局变量(C) >= 0 60 | 61 | 动作 62 | * 根据条件跳过(比较(全局变量(C), >, 0), 3) 63 | * 设置全局变量(Z, 数组随机值(所有玩家(所有队伍))) 64 | * 设置玩家变量(全局变量(Z), B, 假) 65 | * 开始强制玩家选择英雄(全局变量(Z), 英雄(僵尸英雄)) 66 | * 修改全局变量(C, 减, 1) 67 | * 等待(1, 无视条件) 68 | * 如条件为“真”则循环 69 | 70 | 当然,这只是最核心的部分,你可以加上如倒计时提示等功能,来改善游戏体验。 71 | 72 | ### 获胜判定 73 | 74 | 有两种获胜情况: 75 | 76 | * 僵尸感染了全部人类,僵尸获胜 77 | * 人类坚持到了最后一秒,人类获胜 78 | 79 | 考虑到游戏中可能有玩家进入、退出,我们最好这样判断: 80 | 81 | 事件 82 | * 持续 - 全局 83 | 84 | 条件 85 | * 游戏正在进行中 == 真 86 | * 全局变量(C) < 0 87 | * 空数组 == 已过滤的数组(所有玩家(所有队伍), 玩家变量(当前数组元素,B)) 88 | 89 | 动作 90 | * 宣告玩家胜利(全局变量(Z)) 91 | 92 | 事件 93 | * 持续 - 全局 94 | 95 | 条件 96 | * 游戏正在进行中 == 真 97 | * 全局变量(C) < 0 98 | * 比赛时间 <= 0.200 99 | * 空数组 != 已过滤的数组(所有玩家(所有队伍), 玩家变量(当前数组元素,B)) 100 | 101 | 动作 102 | * 设置全局变量(Y,数组中的值(已排序的数组(已过滤的数组(所有玩家(所有队伍), 玩家变量(当前数组元素,B)), 分数(当前数组元素,B)),0)) 103 | * 宣告玩家胜利(全局变量(Y)) 104 | 105 | ## 完善游戏逻辑 106 | 107 | 这个时候我们的“生化模式”已经可以玩了!但是当你作为第一批玩家试玩时,你会发现少了一些东西: 108 | 109 | * 有队友伤害 110 | * 没有击退效果 111 | * 僵尸不能自己回复生命值 112 | * 僵尸死亡没有自动复活 113 | 114 | ### 队友伤害 115 | 116 | 我们只要保证同类型的玩家间无法互相伤害: 117 | 118 | * 事件:玩家受到伤害 119 | * 条件:玩家变量(事件玩家, B) == 玩家变量(攻击方, B) 120 | * 动作:治疗(事件玩家, 无, 事件伤害) 121 | 122 | ### 击退效果 123 | 124 | 我们想一下CSOL中是什么样的: 125 | 126 | * 僵尸一瞬间的移动速度变得很慢 127 | * 往人类-僵尸的方向上移动一小段距离 128 | 129 | 因此,我们可以写出这样的规则: 130 | 131 | 事件 132 | * 玩家受到伤害 133 | * 双方 全部 134 | 135 | 条件 136 | * 玩家变量(事件玩家, B) == 假 137 | * 玩家变量(攻击方, B) == 真 138 | 139 | 动作 140 | * 设置移动速度(事件玩家,10) 141 | * 施加推力(事件玩家,向量(位置(攻击方), 位置(事件玩家)), 3,至地图, 取消相反运动) 142 | * 等待(0.500, 无视条件) 143 | * 设置移动速度(事件玩家, 100) 144 | 145 | ### 僵尸回复生命值 146 | 147 | CSOL中有一个有意思的设定:僵尸在原地停三秒钟,就可以回复生命值,并且原地跳跃不算移动。我们不能直接知道玩家在几秒内有没有动,也不知道玩家几秒前的坐标。但我们可以换一个思路:我们每秒记一下玩家的位置。如果X、Z坐标与上一秒相同,那么我们就可以给计数器+1。计数器>3时,就可以给玩家回复生命值。 148 | 149 | 事件 150 | * 持续 - 每名玩家 151 | * 双方 全部 152 | 153 | 条件 154 | * 玩家变量(事件玩家, B) == 假 155 | 156 | 动作 157 | * // 标记玩家的X坐标、Z坐标与上一秒钟的坐标是否相同 158 | * 设置玩家变量(事件玩家, G, 比较(X方向分量(位置(事件玩家)), ==, 玩家变量(事件家,D))) 159 | * 设置玩家变量(事件玩家, H, 比较(Z方向分量(位置(事件玩家)), ==, 玩家变量(事件家,E))) 160 | * // 如果任意一个坐标不相同,则跳过下一条给计数器+1的语句 161 | * 根据条件跳过(或(非(玩家变量(事件玩家, G)), 非(玩家变量(事件玩家, H)), 1) 162 | * 修改玩家变量(事件玩家, F, 加, 1) 163 | * // 如果两个坐标都相同,则跳过下面重置计数器与坐标的语句 164 | * 根据条件跳过(与(玩家变量(事件玩家, G), 玩家变量(事件玩家, H)), 3) 165 | * 设置玩家变量(事件玩家, F, 0) 166 | * 设置玩家变量(事件玩家, D, X方向分量(位置(事件玩家))) 167 | * 设置玩家变量(事件玩家, E, Z方向分量(位置(事件玩家))) 168 | * // 如果计数器 < 3 或 玩家达到最大生命值,则跳过回复生命值的语句 169 | * 根据条件跳过(或(比较(玩家变量(事件玩家, F), <, 3), 比较(最大生命值(事件玩家), ==, 生命值(事件玩家))), 1) 170 | * 治疗(事件玩家,无,180) 171 | * // 等一秒后继续检查 172 | * 等待(1, 无视条件) 173 | * 如条件为“真”则循环 174 | 175 | ### 僵尸死亡自动复活 176 | 177 | OW本身就提供了重生的函数,并且同时支持原地重生和随机地点重生,因此我们的规则也非常简单: 178 | 179 | * 事件:玩家阵亡 180 | * 条件:玩家变量(事件玩家, B) == 假 181 | * 动作:重生(事件玩家) 182 | 183 | ## 初始化规则 184 | 185 | 初始化规则并不是一个一开始就设计好的,或者说单独存在的规则。它服务于我们的其他规则。例如,在上面的那么多规则里面,我们需要初始化一些变量: 186 | * 全局变量C默认是倒计时秒数 187 | * 玩家变量B默认是真 188 | * 玩家变量F默认是0 189 | 190 | 以及,我们需要关闭游戏预置的模式内容: 191 | * 关闭游戏预设完成模式 192 | * 关闭游戏预设计分模式 193 | * 关闭游戏预设重生模式 194 | 195 | 我们将初始化规则写成两条,一条是全局规则,包括对整个游戏都生效的初始化内容。一条是玩家规则,包括对单个玩家生效的内容。事件分别是“持续 - 全局”和“持续 - 每名玩家”。原因是,“持续 - 全局”中不能使用“事件玩家”,操作每名玩家非常麻烦。而“持续 - 每名玩家”会对每名玩家都运行一遍,如果把初始化全局变量的功能放在这里面,就有可能引起变量的混乱。 196 | 197 | ## 总结 198 | 199 | 目前为止,我们的“生化模式”已经基本完成了,我们可以在此基础上完善一些细节,例如不同英雄的击退距离不一样等。这些就留给各位自行发挥了。 200 | 201 | 各位如果想自己设计一个有意思的模式,请记住:不要急于上手。建议各位仿照本文,将自己的模式分割为很多个小功能,然后一步一步完善。 202 | 203 | 另外给大家一个个人建议:在编写规则的时候,最好开一个记事本,记一下自己的变量都用来干什么了。否则规则一多,变量维护起来会很麻烦。例如本文中,我们用到了这些变量: 204 | 205 | * 玩家变量B:是否是人类 206 | * 玩家变量D:最后停止移动的X坐标 207 | * 玩家变量E:最后停止移动的Z坐标 208 | * 玩家变量F:停止移动计数器 209 | * 玩家变量G、H:停止移动判断(方便编写规则) 210 | * 全局变量C:开始倒计时 211 | * 全局变量Y:胜利人类玩家 212 | * 全局变量Z:母体僵尸玩家 -------------------------------------------------------------------------------- /tutorial/observer.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 应用观察者模式思想 3 | lang: zh-CN 4 | --- 5 | 6 | # 应用观察者模式思想 7 | 8 | > 本文的目标对象,是已经有一定地图工坊编写经验的朋友。如果你并不熟悉,建议你阅读其他教程。 9 | 10 | ## 引言​ 11 | 12 | 相对于一门编程语言来说,地图工坊的功能其实非常基础。它没有函数,更别提类了。不过,不知道你是否注意到,持续事件有一个特性:它可以持续等待,直到条件为真。 13 | 14 | 编程里面有一个“设计模式”,叫做“观察者模式”。它的意思是:当一个对象变化时,会自动通知依赖它的对象。 15 | 16 | 看到这里,不知道你有没有觉得,持续事件和观察者模式是有一定相似之处的:它们都是在“等”一个东西。 17 | 18 | ## 简化规则 19 | 20 | 这个东西有什么用?我们可以借此来简化规则的编写。例如,我们要做一个等级系统,当经验达到100的时候就升一级,死亡的时候就掉50%经验,如果经验是负了,就掉一级。 21 | 22 | 我们的经验来源可能不止一种,例如在RPG模式里,我们击杀敌人可以获得经验,摧毁防御塔也可以获得经验。当我们用传统办法写规则的时候,我们就需要: 23 | 24 | * 击杀敌人:增加经验,如果经验>100,增加等级,修改等级BUFF 25 | * 摧毁防御塔:增加经验,如果经验>100,增加等级,修改等级BUFF 26 | * 死亡:减少经验,如果经验<0,减少等级,修改等级BUFF 27 | 28 | 你有没有觉得,这是一个繁琐的过程?当你需要修改等级BUFF的时候,你需要修改很多条规则。 29 | 30 | 我们再分析一下我们的逻辑:实际上,等级什么时候会增加,增加会有什么效果,这并不是我们的“死亡”事件该处理的。 31 | 32 | 正确的做法是:有一个东西在“看着”经验,当它大于100时,就代表升级了。当它小于100时,就代表降级了。我们将其解耦后,规则就变成了: 33 | 34 | * 击杀敌人:增加经验 35 | * 摧毁防御塔:增加经验 36 | * 死亡:减少经验 37 | * 观察者1:如果经验>100,增加等级,修改等级BUFF 38 | * 观察者2:如果经验<0,减少等级,修改等级BUFF 39 | 40 | 换做游戏内规则,即是:(假设用玩家变量A表示等级,玩家变量B表示经验) 41 | 42 | * 击杀敌人:修改玩家变量(事件玩家, B, 加, 50) 43 | * 摧毁防御塔:修改玩家变量(事件玩家, B, 加, 30) 44 | * 死亡:修改玩家变量(事件玩家, B, 减, 50) 45 | 46 | **观察者1** 47 | 48 | * 事件:持续 - 每名玩家 49 | * 条件:玩家变量(事件玩家, B) >= 100 50 | * 动作: 51 | * 修改玩家变量(事件玩家, B, 减, 100) 52 | * 修改玩家变量(事件玩家, A, 加, 1) 53 | * // 这里写等级变化的逻辑 54 | * 等待(0.016, 无视条件) 55 | * 如条件为“真”则循环 56 | 57 | **观察者2** 58 | 59 | * 事件:持续 - 每名玩家 60 | * 条件:玩家变量(事件玩家, B) < 0 61 | * 动作: 62 | * 修改玩家变量(事件玩家, B, 加, 100) 63 | * 修改玩家变量(事件玩家, A, 减, 1) 64 | * // 这里写等级变化的逻辑 65 | * 等待(0.016, 无视条件) 66 | * 如条件为“真”则循环 67 | 68 | 注意: 69 | 70 | 1. 一定要注意逻辑设计上不能存在死循环,例如上面的例子里,观察者2的条件不能写“玩家变量 <= 100”。因为当玩家经验=100时,观察者1会将其变为0,就会触发观察者2。而观察者2又会再次触发观察者1。这就导致了死循环的出现。 71 | 72 | 2. 我们在两个观察者最后都加上了循环,目的是打破条件满足的情况。考虑这种情况:当我们一次性给玩家增加300点经验时,按理来说,应该让玩家升3级,但因为我们没有循环,玩家升了一级就结束了,并且后续增加经验,也不会再触发升级。只有当条件满足被打破时,条件再次满足,才会再次触发该规则。 73 | 74 | ## 模拟函数调用 75 | 76 | 编程总是免不了函数,但目前为止OW中没有函数。但是,我们可以使用上面的方法,来模拟函数。 77 | 78 | 还是用上面的例子。你会发现我们的等级变化逻辑还是写了两遍。我们能不能再将其独立成一个规则?当然是可以的。我们变化的目标是玩家,因此我们需要使用一个玩家变量,来标记我们需不需要对此玩家执行等级变化逻辑。假设我们使用玩家变量C。 79 | 80 | 首先,在游戏初始化的时候,将其设置为假。我们的规则就可以变成: 81 | 82 | **观察者1** 83 | * 事件:持续 - 每名玩家 84 | * 条件:玩家变量(事件玩家, B) >= 100 85 | * 动作: 86 | * 修改玩家变量(事件玩家, B, 减, 100) 87 | * 修改玩家变量(事件玩家, A, 加, 1) 88 | * 等待(0.016, 无视条件) 89 | * 如条件为“真”则循环 90 | * 设置玩家变量(事件玩家, C, 真) 91 | 92 | **观察者2** 93 | * 事件:持续 - 每名玩家 94 | * 条件:玩家变量(事件玩家, B) < 0 95 | * 动作: 96 | * 修改玩家变量(事件玩家, B, 加, 100) 97 | * 修改玩家变量(事件玩家, A, 减, 1) 98 | * 等待(0.016, 无视条件) 99 | * 如条件为“真”则循环 100 | * 设置玩家变量(事件玩家, C, 真) 101 | 102 | **等级变化规则** 103 | * 事件:持续 - 每名玩家 104 | * 条件:玩家变量(事件玩家, C) == 真 105 | * 动作: 106 | * // 这里写等级变化的逻辑 107 | * 设置玩家变量(事件玩家, C, 假) 108 | 109 | 注意:这里只是模拟函数调用,但实际上它比函数还是少很多东西。因此,并不是所有情况都适合这样写。 110 | 111 | ## 延伸:地图适配 112 | 113 | 有的代码明明用到了地图坐标,但还是可以兼容很多张地图,怎么做到的呢?判断地图的代码在[owmod.net/44](https://www.owmod.net/work/view/44)。但是,当我知道是什么地图后,怎么做后面的事呢?当然是借鉴上面的方法了。例如,我们希望给几张地图放上一些“道具”: 114 | 115 | **地图检测(最新代码请参见上面的链接)** 116 | * 事件:持续 - 全局 117 | * 条件:无 118 | * 动作: 119 | * 设置全局变量(A, 取整(X方向分量(最近的可行走位置(矢量(100, 100, 100))), 上)) 120 | * 根据条件跳过(比较(目标位置(0), ==, 无), 1) 121 | * 修改全局变量(A, 加, 加(取整(X方向分量(目标位置(0)), 上), 300)) 122 | * 设置全局变量(B, 空数组) 123 | * 设置全局变量(C, 假) 124 | 125 | **阿育陀耶** 126 | * 事件:持续 - 全局 127 | * 条件:全局变量(A) == 42 128 | * 动作: 129 | * 修改全局变量(B, 添加至数组, 矢量(0, 0, 0)) 130 | * 修改全局变量(B, 添加至数组, 矢量(10, 10, 10)) 131 | * 修改全局变量(B, 添加至数组, 矢量(20, 20, 20)) 132 | * 设置全局变量(C, 真) 133 | 134 | **黑森林** 135 | * 事件:持续 - 全局 136 | * 条件:全局变量(A) == 37 137 | * 动作: 138 | * 修改全局变量(B, 添加至数组, 矢量(1, 1, 1)) 139 | * 修改全局变量(B, 添加至数组, 矢量(11, 11, 11)) 140 | * 修改全局变量(B, 添加至数组, 矢量(21, 21, 21)) 141 | * 设置全局变量(C, 真) 142 | 143 | **创建一些效果** 144 | * 事件:持续 - 全局 145 | * 条件:全局变量(C) == 真 146 | * 动作: 147 | * 创建效果(所有玩家(所有队伍), 球体, 红色, 数组中的值(全局变量(B), 0)) 148 | * 创建效果(所有玩家(所有队伍), 球体, 红色, 数组中的值(全局变量(B), 1)) 149 | * 创建效果(所有玩家(所有队伍), 球体, 红色, 数组中的值(全局变量(B), 2)) 150 | 151 | ## 总结 152 | 153 | 本文其实并没有用什么很稀奇古怪的技术,但本文的难点是思路的转变:你需要将几个本来不相同的逻辑,找出他们的共同点,并巧妙的将其拆分成多个逻辑,然后用规则来实现。 154 | 155 | 到底要不要使用这种方式来设计规则?你需要考虑它的优缺点。它的优点有: 156 | 157 | * 将重复的内容独立出来,减少工作量。 158 | * 方便以后的修改(不仅需要修改的地方少了,漏改的可能性也更小了) 159 | 160 | 它也有缺点: 161 | * 增加了规则数量。 162 | * 增加了逻辑上的复杂度。 163 | * 运行效率稍低。 164 | 165 | 个人认为,**适当**的使用这种思路来设计规则,可以减少你的工作量和维护难度。但并不代表这种方式一定就是最好的,你应当**考虑你的实际情况**。 -------------------------------------------------------------------------------- /tutorial/use_styler.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 自定义房名/游戏内图标 3 | lang: zh-CN 4 | --- 5 | 6 | # 自定义房名/游戏内图标 7 | 8 | > 原作者[@终焉硝烟狂欢](https://weibo.com/gunpowdermayhem),原文链接:[微博](https://weibo.com/ttarticle/p/show?id=2309404416231540129893) 9 | 10 | 可以同时应用于房名/游戏内 11 | 12 | ## 房名图标说明 13 | 14 | 固定格式:`` 15 | 16 | 一共有9个0 (零),后面的星号是可以改的地方 17 | 18 | `< >`括号不可去掉 19 | 20 | ![demo](http://http.cdn.sylibs.com/workshop/docs/use_styler/be971962ly1g6yc0vzzffj20c104j3yz.jpg) 21 | 22 | ## 游戏内(队伍名)图标说明 23 | 24 | * 队伍1:``括号不需要 30 | 31 | ![demo](http://http.cdn.sylibs.com/workshop/docs/use_styler/be971962ly1g6yc3djv3hj20tt0agta2.jpg) 32 | 33 | ## ​如何添加到游戏中 34 | 35 | 只需要按照下方添加一条「持续-每名玩家」的规则即可 36 | 37 | 也可以直接使用我做好的预设代码:`9P3GM` 38 | 39 | 动作中的「事件玩家」则是所有人头上都会显示图标 40 | 41 | 图标只会显示在玩家正上方并跟随玩家移动 42 | 43 | **如何改为仅房主显示** 44 | 45 | * 将「持续-每名玩家」改成「全局」 46 | * 将「事件玩家」改成「主机玩家」 47 | 48 | ![demo](http://http.cdn.sylibs.com/workshop/docs/use_styler/be971962ly1g6yc7xpmdvj20fw06jgm9.jpg) 49 | 50 | ![demo](http://http.cdn.sylibs.com/workshop/docs/use_styler/be971962ly1g6ycljc63rj20ex07jain.jpg) 51 | 52 | ![demo](http://http.cdn.sylibs.com/workshop/docs/use_styler/be971962ly1g6ycna5pnxj20g50eq14n.jpg) 53 | 54 | ## 生成器 55 | 56 | 你可以使用[生成器](https://ow-styler.owmod.net/)来帮助你找到需要的图片、一键生成代码 -------------------------------------------------------------------------------- /tutorial/zero_based.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 零基础入门 3 | lang: zh-CN 4 | --- 5 | 6 | # 零基础入门 7 | 8 | > 本文的目的是从0开始到入门。如果你已经理解了地图工坊是怎么回事了,那么本文可能对你帮助并不大 9 | 10 | 我们先用几个问题来“揭开”​地图工坊神秘的“面纱”: 11 | 12 | * 地图工坊是什么?它是一个功能更多的自定义模式。 13 | * 地图工坊能做什么?现阶段,它可以做一些很有意思的玩法,相信你已经体验过地图工坊的作品了。 14 | * 地图工坊不能做什么?它不能脱离游戏的基本框架,例如OW限制了只能有12个玩家,地图工坊并不能让你的房间能塞更多人。现阶段它也不能替换模型,不能改变地形。 15 | * 地图工坊在哪里?它不难找,新建一个自定义房间,打开设置,你就会发现一个大大的“地图工坊”按钮。地图工坊所有的设置就在这里面了。 16 | 17 | ## 什么是规则 18 | 19 | 地图工坊是由很多条“规则”组成的。规则是什么?你可以把它看做是一条一条的“条例”。当“规则”该被运行的时候,它就会被运行。 20 | 21 | 举个例子:在生活中,如果你上班迟到了,那么老板就会扣你工资。当你早上闹铃响了,那么你就应该起床了。这些都是生活中的“规则”。 22 | 23 | 规则由三个部分组成:事件,条件和动作。还是上面的例子,当你上班迟到,并且今天不是休息日的话,那么老板就会扣你工资。这条“规则”中,“上班迟到”是事件,“今天不是休息日”是条件,“扣工资”则是动作。 24 | 25 | 那在游戏里怎么体现呢?例如,我们知道,DVA的核爆会对一定范围内的敌人造成伤害,那么,“机甲爆炸”是事件,“玩家在爆炸范围内,且玩家和DVA是敌对关系”是条件,“造成伤害”则是动作。(PS:这里只是用“机甲爆炸”举例子,让你明白事件、条件、动作之间的关系) 26 | 27 | 总而言之,规则即是:**当某件事(事件)发生,且条件满足时,就做一些动作。** 28 | 29 | ## 编写规则 30 | 31 | 相信你已经知道“规则”是什么了,那么,接下来,我们就通过“规则”做一件简单的事:让玩家每次受伤时,回复10生命值。 32 | 33 | 过程其实很简单:玩家受伤→回血。那么相应的规则应该是什么样? 34 | 35 | 通过翻阅事件列表,我们发现有一个事件刚好合适:玩家受到伤害。那么我们就用它作为事件了。 36 | 37 | 我们并没有什么特别的要求,所以不需要“条件”。 38 | 39 | 动作是给玩家回血。我们应该用什么动作?通过翻阅手册,我们发现了一个“治疗”的动作。它需要选择几个东西: 40 | 41 | * 玩家 42 | * 治疗者 43 | * 治疗量 44 | 45 | “玩家”就是这个动作的目标,即给谁治疗。我们怎么让游戏知道,治疗的目标是受伤的玩家呢?我们可以使用“事件玩家”。顾名思义,“事件玩家”指的是触发事件的玩家。我们在上面使用了“玩家受到伤害”事件,那么,在这里“事件玩家”指的就是受到伤害的那个玩家。类似的,如果我们使用“玩家阵亡”作为事件,那么就可以用“事件玩家”来代指阵亡的那个玩家。 46 | 47 | 在本例中,治疗者是谁并不重要,所以我们选择“无”就行了。 48 | 49 | 最后,我们设定的治疗量是10点,所以我们选择“数字”,然后输入10。 50 | 51 | ## 变量和值 52 | 53 | 在OW中,变量和常量统称叫“值”。没接触过编程的朋友可能会觉得这个东西有一些难以理解。但它并没有想象中那么难。我们可以用数学来理解它。 54 | 55 | 例如我们有一个等式:`y=x+1`。在数学上,我们把x叫做自变量:当我们放入不同的x时,y就不一样。我们的“方程”只是定义了一个从x到y的过程。 56 | 57 | 在我们上面的例子中,我们有一条动作:给事件玩家治疗10点生命值。这里面,“事件玩家”是一个变量——因为触发事件的玩家可以有很多个。过程是给玩家治疗。而10我们一般把它叫做“常量”——因为它不会变,无论是哪个玩家受伤了,治疗量都是10。 58 | 59 | 看完上面是不是觉得有点绕,还是不太明白“变量”是什么?没关系,变量就像一个“盒子”,我们可以把东西放进去,也可以把里面的东西拿出来。在下面的内容里,我会举一些实际的例子,让你知道什么时候用到“变量”。 60 | 61 | ## 实现“冰冻弹” 62 | 63 | 现在我们来写一点更复杂的规则。我们希望让麦克雷的子弹变成“冰冻弹”——被麦克雷打中的玩家,就会被冰冻住1秒。 64 | 65 | 同样的,我们先想一想过程:玩家被麦克雷打中→把玩家冻住。 66 | 67 | 我们发现“事件”并没有“被麦克雷打中”的事件。怎么办?这时候就该让“条件”出马了。被麦克雷打是受到伤害的一种,所以“事件”我们可以继续用“玩家受到伤害”。但是我们有一个附加条件:伤害的来源应该是一名麦克雷玩家。 68 | 69 | 我们翻阅手册,找到“攻击方”可以代指伤害来源。但我们应该直接拿它来做比较吗?仔细想想,“玩家使用的是麦克雷”比较的应该是英雄,而不是玩家。因此,我们继续找找怎么知道玩家用的什么英雄。最后,我们找到了“英雄”这个选项。条件便是:`英雄(攻击方) == 英雄(麦克雷)` 70 | 71 | 注意:等号的左右两边一定要是相同类型的,即类似`事件玩家 == 英雄(麦克雷)`是不正确的,因为左边是玩家,右边是英雄。正确的写法是`英雄(事件玩家) == 英雄(麦克雷)` 72 | 73 | 动作应该是什么?“冰冻”是官方提供的状态之一,我们可以直接使用“设置状态”。 74 | 75 | * 玩家 76 | * 助攻者 77 | * 状态 78 | * 持续时间 79 | 80 | “玩家”和上面一样,使用“事件玩家”即可。助攻者即为“攻击方”。状态是“冻结”。“持续时间”输入“1”。 81 | 82 | ## 两个“特殊”​的事件 83 | 84 | 通过上面的内容,我们已经知道了规则是什么,以及基本都规则编写。但你发现,“事件”只有非常少的几项。如果我们要做一些其他功能,例如,我们想让玩家重生后马上将他移到某个位置,无论是受到、造成伤害事件,还是阵亡事件,都不能满足要求。这时候,就需要用到持续事件+条件了。 85 | 86 | 持续事件和其他的事件都不太一样。其他事件都是“当这件事发生时”,而持续事件则是“我会一直等着,直到条件满足”。 87 | 88 | 例如,我们可以用“存活”来判断玩家阵亡与否。而结合我们上面所说的持续事件,我们可以写出这样的规则: 89 | 90 | * 事件:持续 - 每名玩家 91 | * 条件:存活(事件玩家) == 真 92 | 93 | 这是什么意思呢?根据上面的介绍,我们把它“翻译”过来,就是:一直等,直到玩家活着的时候,就做下面的动作。 94 | 95 | 官方文档中有这样的解释:“当首次检查就满足条件时,则会执行行动。当未满足条件列表,但之后又满足时,则会尝试再次执行行动”。 96 | 97 | 因此,我们上面的规则,实际上就是:当玩家阵亡的时候,游戏就会等——等到玩家复活,然后做相应的动作。之后玩家又阵亡了,游戏又会继续等。不断重复上述的过程。 98 | 99 | 类似的,我们现在要编写一个规则,能响应不在地板上的玩家按互动键(F),那么我们就可以这样写 100 | 101 | 事件: 102 | * 持续 - 每名玩家 103 | 104 | 条件: 105 | * 在地面上(事件玩家) == 假 106 | * 按钮被按下(事件玩家, 互动) == 真 107 | 108 | ## 动手做一个模式 109 | 110 | 通过上面的文章,我们已经知道了如何编写规则。但相信你还不知道如何编写一个简单的玩法。不知道大家是否玩过有“守望传火”​之称的“烫手山芋”模式?这里,我们就以此模式为例子。(如果没玩过的朋友可以在[这里](https://owmod.net/2)体验) 111 | 112 | 注意:因为本文是一篇教程文章,所以不会完整覆盖整个游戏模式。 113 | 114 | ### 传火 115 | 116 | 我们想想这个模式是怎么玩的?带着“火”的玩家通过攻击别的玩家(不论是何种方式),就可以把“火”传给别人。 117 | 118 | 那么,这个过程用规则怎么描述?我们可以这样说:当一名玩家受到伤害,并且他自己没有火,但是攻击他的玩家有火的时候,就把火传给这名玩家。 119 | 120 | 从上面的描述不难看出,我们应该选择“玩家受到伤害”事件。但是,我们如何知道玩家有没有“火”呢?不知道大家是否记得艾什的“延时雷管”——我们可以用点燃状态来表示火。通过翻阅手册,我们可以找到“具有状态”和“设置状态”、“清除状态”几个东西。这样,我们就可以把条件组合出来。 121 | 122 | 条件是受伤的玩家没有火,而攻击方有火。因为我们使用了“玩家受到伤害”事件,因此,我们使用“事件玩家”表示前者,“攻击方”表示后者。条件便是: 123 | 124 | * 具有状态(事件玩家, 点燃) == 假 125 | * 具有状态(攻击方, 点燃) == 真 126 | 127 | 动作是把火“传给”另一名玩家。“传”的过程,又分为一名玩家“失去”火,和一名玩家“得到”火。因此,规则有两条: 128 | * 设置状态(事件玩家, 无, 点燃, 9999) 129 | * 清除状态(攻击方, 点燃) 130 | 131 | 另外,“点燃”只是效果——能看不能用,所以,我们还得再加上一个“伤害”的动作: 132 | * 开始持续伤害(事件玩家, 无, 9999, 50) 133 | * 设置玩家变量(事件玩家, A, 上一个持续伤害效果ID) 134 | * 停止持续伤害(玩家变量(攻击方, A)) 135 | 136 | 这里我们用到了变量。大家可以结合上面的变量小节,想一想为什么要这样做。(PS:你可以把变量想象成一个“盒子”,设置就是往“盒子”里放东西)。如果你想不通,文末会有更详细的解释。 137 | 138 | 最终的规则如图所示: 139 | 140 | ![1](https://p.pstatp.com/origin/pgc-image/54e937dadac34ac399e973595b58bd09) 141 | 142 | ### 加分 143 | 144 | 俗话说“万事开头难”。既然我们已经把最基本的东西做出来了,那么我们就可以做下一个东西了:胜利判断。我们的逻辑是:剩下一名玩家的时候,就给这名玩家加一分。 145 | 146 | 我们不知道什么时候会剩下一名玩家——可能是某位玩家死亡后,但也可能是某位玩家退出游戏后。我们没办法确定到底是什么时候,但我们条件非常清楚:只剩下一名活着的玩家。因此,我们使用`持续事件+条件`来做这件事。我们翻阅手册,可以找到一个叫做“存活玩家数量”的值。我们直接使用它: 147 | 148 | * 事件:持续 - 全局 149 | * 条件:存活玩家数量(所有队伍) == 1 150 | 151 | 而我们要做的,就是给他加一分。我们在手册中找到一个叫“所有存活玩家”的内容,但注意:它是一个数组。因为游戏中可能有很多玩家存活,也可能一个都没有。游戏没有那么智能,它并不知道我们的规则一定只有一个玩家。因此,我们需要使用“数组中的值”: 152 | 153 | * 修改玩家分数(数组中的值(所有存活玩家(所有队伍), 0), 1) 154 | 155 | 接下来,我们要复活所有玩家,开始一局新的比赛: 156 | 157 | * 重生(所有玩家(所有队伍)) 158 | 159 | 最终的规则如图所示: 160 | 161 | ![2](https://p.pstatp.com/origin/pgc-image/3d566048a2b54623b2c77965be65e074) 162 | 163 | ### 随机传火 164 | 165 | 现在大体框架已经有了,但是,我们还没处理一些特别的情况:例如,当玩家死亡时,或者玩家退出游戏,导致“火”不见了的时候,我们需要将“火”随机给一名玩家。和上面一样,我们使用持续事件+条件。 166 | 167 | 我们的条件应该是,当所有玩家都没有火的时候。换句话说,就是有火的玩家数量=0的时候。游戏并不能直接获取到有火的玩家,但我们可以利用“已过滤的数组”来做到这一点:我们从所有存活玩家里,筛选出有火的玩家,不就可以了? 168 | 169 | 换成条件,就应该这样写:`数量(已过滤的数组(所有存活玩家, 具有状态(当前数组元素, 被点燃))) == 0`。(如果这条规则你不太看得懂,请尝试把括号拆开,从里到外,结合手册,一点一点看) 170 | 171 | 动作则是从存活玩家里面,随机选择一个玩家,让他有“火”。同样的,我们又要用到“数组”了: 172 | 173 | * 设置全局变量(A, 数组随机取值(所有存活玩家(所有队伍))) 174 | * 设置状态(全局变量(A), 点燃) 175 | * 开始持续伤害(全局变量(A), 无, 9999, 50) 176 | * 设置玩家变量(全局变量(A), A, 上一个持续伤害效果ID) 177 | 178 | 最终规则如下: 179 | 180 | ![3](https://p.pstatp.com/origin/pgc-image/e8424aedc6a24f14bfe54f9668b0a4e2) 181 | 182 | ### 修复问题:死亡掉火 183 | 184 | 现在邀请几个好友,或者多开账号进入游戏。开始一局游戏。你们愉快的传火中,有一名玩家阵亡了。但是,你们发现,“火”并没有传给下一个人。房主打开“地图工坊查看器”一看,哎?随机传火的规则怎么没有运行呢? 185 | 186 | 原来,死亡是不会自动掉火的,我们还需要手动处理它: 187 | * 事件:玩家阵亡 188 | * 具有状态(事件玩家, 点燃) == 真 189 | 190 | “掉火”其实就是把状态去掉,所以动作也很简单,基本上就是上面的规则复制粘贴: 191 | * 清除状态(事件玩家, 点燃) 192 | * 停止持续伤害(玩家变量(事件玩家, A)) 193 | 194 | 最终规则如下: 195 | 196 | ![4](https://p.pstatp.com/origin/pgc-image/166fea58782b41bfa2e95dbe3d469dee) 197 | 198 | ### 为什么要使用变量 199 | 200 | 前面有一个地方我们编写了这样的规则: 201 | 202 | * 开始持续伤害(事件玩家, 无, 9999, 50) 203 | * 设置玩家变量(事件玩家, A, 上一个持续伤害效果ID) 204 | * 停止持续伤害(玩家变量(攻击方, A)) 205 | 206 | 为什么我们需要这样写呢?让我们想一想,如果我们直接使用`停止持续伤害(上一个持续伤害效果ID)`,会有什么样的结果?其实并不难想象,当你增加别的规则或动作,里面同样有“开始持续伤害”时,“上一个持续伤害效果ID”就不一定是我们想要的那个伤害了。我们就可能停止不了正确的持续伤害。 207 | 208 | 那我们用变量达到了什么目的呢?因为规则是不会被“等待”之外的动作打断,因此我们在“开始持续伤害”之后,紧接着使用“上一个持续伤害效果ID”,就一定是我们刚才设置的持续伤害。我们将它放到一个“盒子”里,等我们需要把它消除的时候,再取出来。 209 | 210 | 类似的,例如我们想让玩家在某些条件下创建一个特效(比如圆球、小星星什么的),过一会儿再消除掉。我们一般会: 211 | 212 | * 创建效果(所有玩家(所有队伍), 火花, 蓝色, 事件玩家, 1.500, 可见,位置和半径) 213 | * 设置玩家变量(事件玩家, A, 最后创建的实体) 214 | * 等待(5, 无视条件) 215 | * 消除效果(玩家变量(事件玩家, A)) 216 | 217 | ### 总结 218 | 219 | 通过几条规则,我们就写出了一个简单的“烫手山芋”模式。相信你也发现了,这并不是什么难事。你需要的,只是把一件事变成一件件小事,然后用规则来完成它。 220 | --------------------------------------------------------------------------------