В UI макрос это не скрипт, а просто цепочка блоков. Ты добавляешь действия сверху вниз в том порядке,
в котором они должны произойти. По ощущению это ближе к Scratch: ты собираешь сценарий из готовых визуальных блоков.
Если сценарий зависит от предмета, цели или состояния игрока, то следует добавить проверки, так как это экономит время при выполнении (см. дефолтные пресеты)
Далее уже добавляете действия: перенос в хотбар, выбор слота, use, перенос в оффхенд и так далее. По сути основная часть макроса.
После инвентарных шагов при необходимости добавь короткий Await. В целом, не всегда нужно, но для безопасности он добавлен в дефолтных пресетах.
В конце добавь Notify, так банально понятнее.
Когда используешь If Condition, думай о нём как о Scratch-блоке с внутренней областью. Снаружи стоит сама
проверка, а внутри неё лежат дочерние блоки, которые ты отдельно добавляешь внутрь этого контейнера. Они
должны выполниться только при выполнении условия.
Чаще всего проблемы не в самом editor UI, а в порядке действий. Если сначала ставить use, а потом перенос,
сценарий НЕ будет работать. Если не добавить паузу после перемещения предмета, следующий шаг может начаться
слишком рано (часто это может происходить из-за пинга).
Если не сделать предварительную проверку, макрос будет выглядеть как будто “ничего не сделал”, так что да, для дебага удобнее или чат или уведомления.
Если действие можно привязать к предмету, лучше привязывать его к предмету, а не к номеру слота. Слот удобен
только тогда, когда раскладка инвентаря у тебя всегда одинаковая. Так обычно не бывает, но было бы глупо не добавлять просто селект конкретного слота.Ещё один хороший ориентир: если блок в голове читается как отдельный шаг сценария, значит его место в макросе
скорее всего выбрано правильно. Если без пояснений уже непонятно, что делает кусок цепочки, то макрос лучше
упростить или разбить на вложенные условия и отдельные части.Хорошим напоминанием, что ты можешь разбивать макросы на несколько подмакросов. Макрос позволяет вызывать другие, потому таким образом можно разгрузить логическую нагрузку на экране.
Часть функций в макросах может не содержаться, потому можно применять просто команды клиента И/ИЛИ сервера.
ЗапомнитьВ UI макрос почти всегда собирается по схеме: проверка -> перенос -> пауза -> использование -> уведомление.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Vzmax","colors":{"primary":"#0E87FF","light":"#73ADFF","dark":"#0A6AD1"},"logo":{"light":"https://mintcdn.com/wing-3fe5c5c9/OHu60s3xBgQMSKsX/logo/light.svg?fit=max\u0026auto=format\u0026n=OHu60s3xBgQMSKsX\u0026q=85\u0026s=2ea2f5d2d9881c6cee6c8eeea627fea4","dark":"https://mintcdn.com/wing-3fe5c5c9/OHu60s3xBgQMSKsX/logo/dark.svg?fit=max\u0026auto=format\u0026n=OHu60s3xBgQMSKsX\u0026q=85\u0026s=408d4d486f2e3f73008f014e4466c60a"},"favicon":"https://mintcdn.com/wing-3fe5c5c9/OHu60s3xBgQMSKsX/favicon.png?fit=max\u0026auto=format\u0026n=OHu60s3xBgQMSKsX\u0026q=85\u0026s=e1ae4daae7442028c3d2c60e90cdd1c2","navbar":{"links":[{"href":"https://wing.cat","label":"Сайт"}],"primary":{"type":"button","label":"Купить","href":"https://wing.cat/shop/tariffs/"}},"footer":{"socials":{"website":"https://wing.cat"}},"contextual":{"options":["copy","view"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"wing-3fe5c5c9","hasAudioNarration":false,"actualSubdomain":"wing-3fe5c5c9","customDomains":["docs.wing.cat"],"gitSource":{"type":"github","owner":"voilecx","repo":"vzmax-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6a6a14229623bc990f7a5852","collectionId":"2335c8c9-bb43-4ad9-af0c-a668d27c8b05","liveDeploymentHistoryId":"6a6a14229623bc990f7a5852","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6a6a14229623bc990f7a5852:success","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"Макросы","count":7},{"language":"default","tag":"Команды","count":6},{"language":"default","tag":"Основы","count":1},{"language":"default","tag":"Справочник","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"macros/ui","slug":"/macros/ui","pageMetadata":{"title":"Сборка в UI","description":"Как обычно собирают макрос в интерфейсе Vzmax: порядок шагов, базовый шаблон и практические советы.","href":"/macros/ui"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Как обычно собирают макрос в интерфейсе Vzmax: порядок шагов, базовый шаблон и практические советы.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Heading,Tip}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`как-воспринимать-макрос-в-редакторе`,children:`Как воспринимать макрос в редакторе`}),`\n`,_jsx(_components.p,{children:`В UI макрос это не скрипт, а просто цепочка блоков. Ты добавляешь действия сверху вниз в том порядке,\nв котором они должны произойти. По ощущению это ближе к Scratch: ты собираешь сценарий из готовых визуальных блоков.`}),`\n`,_jsx(Heading,{level:`2`,id:`базовый-порядок-сборки`,children:`Базовый порядок сборки`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Если сценарий зависит от предмета, цели или состояния игрока, то следует добавить проверки, так как это экономит время при выполнении (см. дефолтные пресеты)`}),`\n`,_jsx(_components.li,{children:`Далее уже добавляете действия: перенос в хотбар, выбор слота, use, перенос в оффхенд и так далее. По сути основная часть макроса.`}),`\n`,_jsxs(_components.li,{children:[`После инвентарных шагов при необходимости добавь короткий `,_jsx(_components.code,{children:`Await`}),`. В целом, не всегда нужно, но для безопасности он добавлен в дефолтных пресетах.`]}),`\n`,_jsxs(_components.li,{children:[`В конце добавь `,_jsx(_components.code,{children:`Notify`}),`, так банально понятнее.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Когда используешь `,_jsx(_components.code,{children:`If Condition`}),`, думай о нём как о Scratch-блоке с внутренней областью. Снаружи стоит сама\nпроверка, а внутри неё лежат дочерние блоки, которые ты отдельно добавляешь внутрь этого контейнера. Они\nдолжны выполниться только при выполнении условия.`]}),`\n`,_jsx(Heading,{level:`2`,id:`рабочий-шаблон`,children:`Рабочий шаблон`}),`\n`,_jsx(_components.p,{children:`Самый стабильный пользовательский шаблон выглядит так:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Проверить, что предмет есть.`}),`\n`,_jsx(_components.li,{children:`Переложить его в нужное место.`}),`\n`,_jsx(_components.li,{children:`Подождать короткую паузу.`}),`\n`,_jsx(_components.li,{children:`Выбрать предмет или нужную руку.`}),`\n`,_jsx(_components.li,{children:`Использовать предмет.`}),`\n`,_jsx(_components.li,{children:`Показать уведомление.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`когда-макросы-обычно-ломаются`,children:`Когда макросы обычно ломаются`}),`\n`,_jsx(_components.p,{children:`Чаще всего проблемы не в самом editor UI, а в порядке действий. Если сначала ставить use, а потом перенос,\nсценарий НЕ будет работать. Если не добавить паузу после перемещения предмета, следующий шаг может начаться\nслишком рано (часто это может происходить из-за пинга).\nЕсли не сделать предварительную проверку, макрос будет выглядеть как будто “ничего не сделал”, так что да, для дебага удобнее или чат или уведомления.`}),`\n`,_jsx(Heading,{level:`2`,id:`практический-совет`,children:`Практический совет`}),`\n`,_jsx(_components.p,{children:`Если действие можно привязать к предмету, лучше привязывать его к предмету, а не к номеру слота. Слот удобен\nтолько тогда, когда раскладка инвентаря у тебя всегда одинаковая. Так обычно не бывает, но было бы глупо не добавлять просто селект конкретного слота.`}),`\n`,_jsx(_components.p,{children:`Ещё один хороший ориентир: если блок в голове читается как отдельный шаг сценария, значит его место в макросе\nскорее всего выбрано правильно. Если без пояснений уже непонятно, что делает кусок цепочки, то макрос лучше\nупростить или разбить на вложенные условия и отдельные части.`}),`\n`,_jsx(_components.p,{children:`Хорошим напоминанием, что ты можешь разбивать макросы на несколько подмакросов. Макрос позволяет вызывать другие, потому таким образом можно разгрузить логическую нагрузку на экране.\nЧасть функций в макросах может не содержаться, потому можно применять просто команды клиента И/ИЛИ сервера.`}),`\n`,_jsxs(Tip,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Запомнить`})}),_jsx(_components.p,{children:`В UI макрос почти всегда собирается по схеме: проверка -> перенос -> пауза -> использование -> уведомление.`})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Сборка в UI","description":"Как обычно собирают макрос в интерфейсе Vzmax: порядок шагов, базовый шаблон и практические советы.","href":"/macros/ui"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Как воспринимать макрос в редакторе","slug":"как-воспринимать-макрос-в-редакторе","depth":2,"children":[]},{"title":"Базовый порядок сборки","slug":"базовый-порядок-сборки","depth":2,"children":[]},{"title":"Рабочий шаблон","slug":"рабочий-шаблон","depth":2,"children":[]},{"title":"Когда макросы обычно ломаются","slug":"когда-макросы-обычно-ломаются","depth":2,"children":[]},{"title":"Практический совет","slug":"практический-совет","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"wing-3fe5c5c9","siteName":"Vzmax","title":"Сборка в UI - Vzmax","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-07-29T14:54:28.319Z","originalFileLocation":"macros/ui.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Как обычно собирают макрос в интерфейсе Vzmax: порядок шагов, базовый шаблон и практические советы.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Vzmax\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://mintcdn.com/wing-3fe5c5c9/OHu60s3xBgQMSKsX/favicon.png?fit=max\u0026amp;auto=format\u0026amp;n=OHu60s3xBgQMSKsX\u0026amp;q=85\u0026amp;s=e1ae4daae7442028c3d2c60e90cdd1c2\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://mintcdn.com/wing-3fe5c5c9/OHu60s3xBgQMSKsX/favicon.png?fit=max\u0026amp;auto=format\u0026amp;n=OHu60s3xBgQMSKsX\u0026amp;q=85\u0026amp;s=e1ae4daae7442028c3d2c60e90cdd1c2\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://mintcdn.com/wing-3fe5c5c9/OHu60s3xBgQMSKsX/favicon.png?fit=max\u0026amp;auto=format\u0026amp;n=OHu60s3xBgQMSKsX\u0026amp;q=85\u0026amp;s=e1ae4daae7442028c3d2c60e90cdd1c2\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/png\" href=\"https://mintcdn.com/wing-3fe5c5c9/OHu60s3xBgQMSKsX/favicon.png?fit=max\u0026amp;auto=format\u0026amp;n=OHu60s3xBgQMSKsX\u0026amp;q=85\u0026amp;s=e1ae4daae7442028c3d2c60e90cdd1c2\">\u003cmeta data-mint-head property=\"og:title\" content=\"Сборка в UI - Vzmax\">\u003cmeta data-mint-head property=\"og:description\" content=\"Как обычно собирают макрос в интерфейсе Vzmax: порядок шагов, базовый шаблон и практические советы.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Vzmax\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.wing.cat/macros/ui\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://wing-3fe5c5c9.mintlify.app/_mintlify/api/og/v2?division=%D0%9C%D0%B0%D0%BA%D1%80%D0%BE%D1%81%D1%8B\u0026amp;title=%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0+%D0%B2+UI\u0026amp;description=%D0%9A%D0%B0%D0%BA+%D0%BE%D0%B1%D1%8B%D1%87%D0%BD%D0%BE+%D1%81%D0%BE%D0%B1%D0%B8%D1%80%D0%B0%D1%8E%D1%82+%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81+%D0%B2+%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B5+Vzmax%3A+%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BE%D0%BA+%D1%88%D0%B0%D0%B3%D0%BE%D0%B2%2C+%D0%B1%D0%B0%D0%B7%D0%BE%D0%B2%D1%8B%D0%B9+%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD+%D0%B8+%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5+%D1%81%D0%BE%D0%B2%D0%B5%D1%82%D1%8B.\u0026amp;theme=6ef3b78c1234401fb9ba350c\u0026amp;signature=7be14c01da283624cb56620db709d13f4670e3a3066938c409e280f4deece18a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Сборка в UI - Vzmax\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Как обычно собирают макрос в интерфейсе Vzmax: порядок шагов, базовый шаблон и практические советы.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://wing-3fe5c5c9.mintlify.app/_mintlify/api/og/v2?division=%D0%9C%D0%B0%D0%BA%D1%80%D0%BE%D1%81%D1%8B\u0026amp;title=%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0+%D0%B2+UI\u0026amp;description=%D0%9A%D0%B0%D0%BA+%D0%BE%D0%B1%D1%8B%D1%87%D0%BD%D0%BE+%D1%81%D0%BE%D0%B1%D0%B8%D1%80%D0%B0%D1%8E%D1%82+%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81+%D0%B2+%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B5+Vzmax%3A+%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BE%D0%BA+%D1%88%D0%B0%D0%B3%D0%BE%D0%B2%2C+%D0%B1%D0%B0%D0%B7%D0%BE%D0%B2%D1%8B%D0%B9+%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD+%D0%B8+%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5+%D1%81%D0%BE%D0%B2%D0%B5%D1%82%D1%8B.\u0026amp;theme=6ef3b78c1234401fb9ba350c\u0026amp;signature=7be14c01da283624cb56620db709d13f4670e3a3066938c409e280f4deece18a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"https://mintlify.s3.us-west-1.amazonaws.com/wing-3fe5c5c9/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Vzmax\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0E87FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.wing.cat/macros/ui\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/macros/ui.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.wing.cat/#organization\",\"name\":\"Vzmax\",\"url\":\"https://docs.wing.cat\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/wing-3fe5c5c9/OHu60s3xBgQMSKsX/logo/light.svg?fit=max\u0026auto=format\u0026n=OHu60s3xBgQMSKsX\u0026q=85\u0026s=2ea2f5d2d9881c6cee6c8eeea627fea4\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.wing.cat#website\",\"name\":\"Vzmax\",\"url\":\"https://docs.wing.cat\",\"publisher\":{\"@id\":\"https://docs.wing.cat/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.wing.cat/macros/ui#webpage\",\"url\":\"https://docs.wing.cat/macros/ui\",\"name\":\"Сборка в UI\",\"description\":\"Как обычно собирают макрос в интерфейсе Vzmax: порядок шагов, базовый шаблон и практические советы.\",\"dateModified\":\"2026-07-29T14:54:28.319Z\",\"isPartOf\":{\"@id\":\"https://docs.wing.cat#website\"},\"breadcrumb\":{\"@id\":\"https://docs.wing.cat/macros/ui#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.wing.cat/macros/ui#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Макросы\",\"item\":\"https://docs.wing.cat/macros\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Сборка в UI\",\"item\":\"https://docs.wing.cat/macros/ui\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.wing.cat/macros/ui#article\",\"headline\":\"Сборка в UI\",\"name\":\"Сборка в UI\",\"description\":\"Как обычно собирают макрос в интерфейсе Vzmax: порядок шагов, базовый шаблон и практические советы.\",\"url\":\"https://docs.wing.cat/macros/ui\",\"mainEntityOfPage\":{\"@id\":\"https://docs.wing.cat/macros/ui#webpage\"},\"dateModified\":\"2026-07-29T14:54:28.319Z\",\"publisher\":{\"@id\":\"https://docs.wing.cat/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.wing.cat#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Vzmax\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Vzmax","nav":{"global":null,"pages":[{"group":"Основы","pages":[{"title":"Обзор","href":"/index"}]},{"group":"Справочник","pages":[{"title":"Плейсхолдеры","href":"/placeholders"}]},{"group":"Команды","pages":[{"title":"Обзор","href":"/commands"},{"title":"Базовые и управление","href":"/commands/basics"},{"title":"Перемещение и чат","href":"/commands/movement"},{"title":"Повороты","href":"/commands/rotation"},{"title":"GPS и точки","href":"/commands/gps"},{"title":"Слоты","href":"/commands/slots"}]},{"group":"Макросы","pages":[{"title":"Макросы","description":"Короткий обзор раздела про макросы Vzmax и карта глав по UI-редактору, действиям и пресетам.","href":"/macros"},{"title":"Сборка в UI","href":"/macros/ui"},{"title":"Базовые действия","description":"Короткий справочник по базовым действиям макросов: ввод, чат, команды, уведомления и остановка.","href":"/macros/basic-actions"},{"title":"Действия с предметами","href":"/macros/inventory-actions"},{"title":"Логика и условия","href":"/macros/logic"},{"title":"Повороты и наведение","href":"/macros/rotation"},{"title":"Библиотека пресетов","href":"/macros/presets"}]}]},"title":"Сборка в UI - Vzmax","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":[],"chunks":[]}