<?xml version="1.0"?>
<rss version="2.0"><channel><title>&#x41C;&#x43E;&#x434;&#x43E;&#x441;&#x442;&#x440;&#x43E;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x438;&#x445; &#x442;&#x435;&#x43C;</title><link>https://bestgothic.net/forum/223-%D0%BC%D0%BE%D0%B4%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D0%B5/</link><description>&#x41C;&#x43E;&#x434;&#x43E;&#x441;&#x442;&#x440;&#x43E;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x438;&#x445; &#x442;&#x435;&#x43C;</description><language>ru</language><item><title>Gothic Union (&#x41C;&#x43E;&#x434;&#x43E;&#x441;&#x442;&#x440;&#x43E;&#x435;&#x43D;&#x438;&#x435;)</title><link>https://bestgothic.net/topic/4430-gothic-union-modostroenie/</link><description><![CDATA[<p style="text-align:center;"><img src="https://bestgothic.top/uploads/monthly_2026_08/bg_ai_c2dcedbd6b092cccdad00053e59e1769.png.ad9967285297c6a4bfd32dc269c566ad.png" alt="Cover" class="ipsRichText__align--block" width="1344" height="768" data-fileid="4534" loading="lazy"></p><p style="text-align:center;"><br></p><p style="text-align:center;"><strong>Разработчик: Gratt и команда разработчиков Союза</strong><br><strong>Год релиза: 2019 (активно поддерживается)</strong><br><strong>Тип: Платформа расширения движка ZenGin (SDK)</strong><br><strong>Язык программирования: C++ / Daedalus</strong><br></p><p style="text-align:center;"><br></p><p style="text-align:center;"><strong><span data-i-color="blue">Долгие годы готическое модостроение напоминало попытку построить замок из болотной грязи и палок. Скриптовый язык Daedalus, на котором пираньи написали игру, имел столько ограничений, что любая попытка сделать шаг влево или вправо приводила к неизбежному вылету на рабочий стол. Мододелы совершали настоящие чудеса, используя костыли вроде пакетов Ikarus и LeGo, чтобы напрямую ковыряться в оперативной памяти движка, но это всегда было прогулкой по минному полю.<br><br>Всё изменилось с появлением Union. Эта платформа стала эволюционным развитием систем SystemPack и AST, позволив разработчикам напрямую внедрять C++ код в старый движок ZenGin. Union открыл ворота для создания полноценных плагинов, которые могут менять механику игры на лету, не ломая оригинальные скрипты. Теперь любой желающий может накатить быстрый сбор лута, свободное прицеливание или даже кооперативный режим без необходимости перелопачивать терабайты исходников.</span></strong></p><p><br></p><hr><p><br></p><p>Скажу прямо, как человек, который половину жизни махал киркой в шахте: Union — это лучшее, что случалось с Готикой со времён обрушения Барьера. Раньше, если ты хотел добавить в игру банальный инвентарь с категориями, тебе нужно было продать душу Белиару и переписать половину исполняемого файла. Сегодня ты просто кидаешь готовый плагин в папку автозапуска, и всё работает. Именно благодаря этой технологии мы получили такие шедевры, как «Хроники Миртаны: Архолос», где техническая часть отполирована до блеска.<br><br>Но у этой медали, как у любой ворованной монеты, есть обратная сторона. Свобода развязала руки не только гениям, но и откровенным халтурщикам. Народ повадился пихать в несчастный ZenGin всё подряд: анимешные интерфейсы, свистоперделки, циферки урона на пол-экрана и прочий мусор, который напрочь убивает ту самую мрачную атмосферу старого Рудника. Движок от такого насилия порой начинает стонать и плеваться критическими ошибками круче, чем рассерженный болотный лагерь.<br><br>Тем не менее, если вы сегодня решите собрать свой мод или просто настроить игру под себя, игнорировать Union — это как пытаться разжечь костёр под проливным дождём без магии огня. Инструмент мощный, надёжный, хоть и требующий прямых рук. Главное — знать меру и не превращать суровое средневековое фэнтези в корейскую гриндилку.</p>]]></description><guid isPermaLink="false">4430</guid><pubDate>Sat, 22 Aug 2026 13:36:58 +0000</pubDate></item><item><title>&#x41F;&#x43E;&#x43B;&#x43D;&#x43E;&#x435; &#x43E;&#x43F;&#x438;&#x441;&#x430;&#x43D;&#x438;&#x435; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;&#x43E;&#x432; ParticleFX &#x438; VisualFX</title><link>https://bestgothic.net/topic/4178-polnoe-opisanie-parametrov-particlefx-i-visualfx/</link><description><![CDATA[<p style="text-align:center;"><img src="https://i.postimg.cc/0j2ppnjM/create.png" alt="create.png" class="ipsRichText__align--block" width="997" height="672" loading="lazy"></p><p></p><p></p><h2>ParticleFX</h2><p>Вот полный список параметров для инстанций класса <code>C_PARTICLEFX</code> из файла <code>PfxInstMagic.d</code>. Этот файл отвечает за визуальные эффекты заклинаний.</p><p>Все параметры сгруппированы по их функции.</p><p></p><h3><strong>Временные параметры излучения</strong></h3><p>Эта группа описывает, <strong>как именно</strong> и с <strong>какой скоростью</strong> рождаются частицы.</p><div class="ipsRichText__table-wrapper"><table style="min-width: 80px;"><colgroup><col style="min-width:20px;"><col style="min-width:20px;"><col style="min-width:20px;"><col style="min-width:20px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p><strong>Параметр</strong></p></th><th colspan="1" rowspan="1"><p><strong>Тип</strong></p></th><th colspan="1" rowspan="1"><p><strong>Описание</strong></p></th><th colspan="1" rowspan="1"><p><strong>Пример</strong></p></th></tr><tr><td colspan="1" rowspan="1"><p><code>ppsValue</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Базовое количество частиц, создаваемых в секунду.</p></td><td colspan="1" rowspan="1"><p><code>ppsValue = 40;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>ppsScaleKeys_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Список коэффициентов для <code>ppsValue</code> во времени. Позволяет менять количество частиц, например, делать "всплески" эффекта.</p></td><td colspan="1" rowspan="1"><p><code>ppsScaleKeys_S = "1.0 0.5 0.2";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>ppsIsLooping</code></p></td><td colspan="1" rowspan="1"><p><code>INT</code></p></td><td colspan="1" rowspan="1"><p>Флаг <code>BOOL</code>. Если <code>1</code>, то цикл изменения (из <code>ppsScaleKeys_S</code>) зацикливается. Если <code>0</code>, эффект умирает после одного прохода.</p></td><td colspan="1" rowspan="1"><p><code>ppsIsLooping = 1;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>ppsIsSmooth</code></p></td><td colspan="1" rowspan="1"><p><code>INT</code></p></td><td colspan="1" rowspan="1"><p>Флаг <code>BOOL</code>. Если <code>1</code>, то изменения между ключами в <code>ppsScaleKeys_S</code> будут сглажены (линейная интерполяция). Если <code>0</code> — переходы резкие.</p></td><td colspan="1" rowspan="1"><p><code>ppsIsSmooth = 1;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>ppsFPS</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Скорость, с которой проигрывается список <code>ppsScaleKeys_S</code> (в кадрах в секунду).</p></td><td colspan="1" rowspan="1"><p><code>ppsFPS = 0.8;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>ppsCreateEm_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Позволяет создать <strong>другой</strong> PFX-эффект одновременно с текущим. Редко используемая, но мощная опция.</p></td><td colspan="1" rowspan="1"><p><code>ppsCreateEm_S = "MFX_Explosion_INIT";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>ppsCreateEmDelay</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Задержка в миллисекундах перед созданием эффекта, указанного в <code>ppsCreateEm_S</code>.</p></td><td colspan="1" rowspan="1"><p><code>ppsCreateEmDelay = 500;</code></p></td></tr></tbody></table></div><p></p><h3><strong>Пространственное распределение (Эмиттер)</strong></h3><p>Эти параметры определяют <strong>форму, размер и положение</strong> источника частиц.</p><div class="ipsRichText__table-wrapper"><table style="min-width: 80px;"><colgroup><col style="min-width:20px;"><col style="min-width:20px;"><col style="min-width:20px;"><col style="min-width:20px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p><strong>Параметр</strong></p></th><th colspan="1" rowspan="1"><p><strong>Тип</strong></p></th><th colspan="1" rowspan="1"><p><strong>Описание</strong></p></th><th colspan="1" rowspan="1"><p><strong>Пример</strong></p></th></tr><tr><td colspan="1" rowspan="1"><p><code>shpType_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Форма эмиттера. Варианты: <code>"point"</code>, <code>"line"</code>, <code>"circle"</code>, <code>"box"</code>, <code>"sphere"</code>, <code>"mesh"</code>.</p></td><td colspan="1" rowspan="1"><p><code>shpType_S = "sphere";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>shpFOR_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Система координат для эмиттера: <code>"world"</code> (мир) или <code>"object"</code> (объект). Влияет на то, будет ли источник двигаться с объектом.</p></td><td colspan="1" rowspan="1"><p><code>shpFOR_S = "object";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>shpOffsetVec_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Смещение центра эмиттера от центра объекта. Задается вектором <code>"X Y Z"</code> в сантиметрах.</p></td><td colspan="1" rowspan="1"><p><code>shpOffsetVec_S = "0 50 0";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>shpDistribType_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Тип распределения частиц на эмиттере: <code>"RAND"</code> (случайно), <code>"UNIFORM"</code> (равномерно), <code>"WALK"</code> (прогулка по форме).</p></td><td colspan="1" rowspan="1"><p><code>shpDistribType_S = "WALK";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>shpDistribWalkSpeed</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Скорость "прогулки" по форме при <code>shpDistribType_S = "WALK"</code>.</p></td><td colspan="1" rowspan="1"><p><code>shpDistribWalkSpeed = 0.0001;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>shpIsVolume</code></p></td><td colspan="1" rowspan="1"><p><code>INT</code></p></td><td colspan="1" rowspan="1"><p>Флаг <code>BOOL</code>. Если <code>1</code> и форма <code>"box"</code> или <code>"sphere"</code>, частицы рождаются по всему объему. Если <code>0</code> — только на поверхности.</p></td><td colspan="1" rowspan="1"><p><code>shpIsVolume = 1;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>shpDim_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Размеры эмиттера. Для <code>"sphere"</code>/<code>"circle"</code> — один радиус <code>"R"</code>. Для <code>"box"</code> — три размера <code>"X Y Z"</code>.</p></td><td colspan="1" rowspan="1"><p><code>shpDim_S = "100 50 100";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>snpMesh_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Имя mesh-файла (например, <code>.3ds</code>), если <code>shpType_S = "mesh"</code>.</p></td><td colspan="1" rowspan="1"><p><code>snpMesh_S = "myMesh.3ds";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>shpMeshRender_B</code></p></td><td colspan="1" rowspan="1"><p><code>INT</code></p></td><td colspan="1" rowspan="1"><p>Флаг <code>BOOL</code>. Если <code>1</code>, сам mesh (из <code>snpMesh_S</code>) будет визуализироваться.</p></td><td colspan="1" rowspan="1"><p><code>shpMeshRender_B = 1;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>shpScaleKeys_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Коэффициенты масштабирования эмиттера во времени (аналогично <code>ppsScaleKeys_S</code>).</p></td><td colspan="1" rowspan="1"><p><code>shpScaleKeys_S = "1.0 0.5 1.0";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>shpScaleIsLooping</code></p></td><td colspan="1" rowspan="1"><p><code>INT</code></p></td><td colspan="1" rowspan="1"><p>Флаг <code>BOOL</code>. Зацикливает изменение масштаба (из <code>shpScaleKeys_S</code>).</p></td><td colspan="1" rowspan="1"><p><code>shpScaleIsLooping = 1;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>shpScaleIsSmooth</code></p></td><td colspan="1" rowspan="1"><p><code>INT</code></p></td><td colspan="1" rowspan="1"><p>Флаг <code>BOOL</code>. Сглаживает изменения масштаба между ключами в <code>shpScaleKeys_S</code>.</p></td><td colspan="1" rowspan="1"><p><code>shpScaleIsSmooth = 1;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>shpScaleFPS</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Скорость проигрывания ключей масштабирования (из <code>shpScaleKeys_S</code>) в FPS.</p></td><td colspan="1" rowspan="1"><p><code>shpScaleFPS = 2;</code></p></td></tr></tbody></table></div><p></p><h3><strong>Движение частиц</strong></h3><p>Здесь задается, <strong>куда</strong> и с <strong>какой скоростью</strong> летят частицы после рождения.</p><div class="ipsRichText__table-wrapper"><table style="min-width: 80px;"><colgroup><col style="min-width:20px;"><col style="min-width:20px;"><col style="min-width:20px;"><col style="min-width:20px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p><strong>Параметр</strong></p></th><th colspan="1" rowspan="1"><p><strong>Тип</strong></p></th><th colspan="1" rowspan="1"><p><strong>Описание</strong></p></th><th colspan="1" rowspan="1"><p><strong>Пример</strong></p></th></tr><tr><td colspan="1" rowspan="1"><p><code>dirMode_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Режим направления: <code>"RAND"</code> (случайное), <code>"DIR"</code> (конкретное), <code>"TARGET"</code> (на цель).</p></td><td colspan="1" rowspan="1"><p><code>dirMode_S = "DIR";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>dirFOR_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Система координат для заданного направления (<code>"world"</code> или <code>"object"</code>).</p></td><td colspan="1" rowspan="1"><p><code>dirFOR_S = "world";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>dirAngleHead</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Угол направления по горизонтали (азимут) в градусах.</p></td><td colspan="1" rowspan="1"><p><code>dirAngleHead = 45;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>dirAngleHeadVar</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Допустимое отклонение для <code>dirAngleHead</code> для создания рассеивания.</p></td><td colspan="1" rowspan="1"><p><code>dirAngleHeadVar = 15;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>dirAngleElev</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Угол направления по вертикали (элевация) в градусах.</p></td><td colspan="1" rowspan="1"><p><code>dirAngleElev = -30;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>dirAngleElevVar</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Допустимое отклонение для <code>dirAngleElev</code>.</p></td><td colspan="1" rowspan="1"><p><code>dirAngleElevVar = 10;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>velAvg</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p><strong>Средняя скорость</strong> частиц (см/мс). <strong>Именно этот параметр отвечает за горизонтальную скорость</strong>.</p></td><td colspan="1" rowspan="1"><p><code>velAvg = 200;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>velVar</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p><strong>Разброс</strong> скорости частиц.</p></td><td colspan="1" rowspan="1"><p><code>velVar = 50;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>flyGravity_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p><strong>Вектор гравитации</strong> <code>"X Y Z"</code>, который влияет на траекторию (например, <code>"0 -200 0"</code> тянет вниз).</p></td><td colspan="1" rowspan="1"><p><code>flyGravity_S = "0 -100 0";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>flyCollDet_B</code></p></td><td colspan="1" rowspan="1"><p><code>INT</code></p></td><td colspan="1" rowspan="1"><p>Включает столкновения с миром. <code>0</code> — нет; <code>1</code> — замедление и отскок; <code>2</code> — ускорение и отскок; <code>3</code> — остановка; <code>4</code> — удаление частицы.</p></td><td colspan="1" rowspan="1"><p><code>flyCollDet_B = 1;</code></p></td></tr></tbody></table></div><p></p><h3><strong>Жизненный цикл</strong></h3><p>Эти параметры отвечают за "время жизни" каждой частицы.</p><div class="ipsRichText__table-wrapper"><table style="min-width: 80px;"><colgroup><col style="min-width:20px;"><col style="min-width:20px;"><col style="min-width:20px;"><col style="min-width:20px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p><strong>Параметр</strong></p></th><th colspan="1" rowspan="1"><p><strong>Тип</strong></p></th><th colspan="1" rowspan="1"><p><strong>Описание</strong></p></th><th colspan="1" rowspan="1"><p><strong>Пример</strong></p></th></tr><tr><td colspan="1" rowspan="1"><p><code>lspPartAvg</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Среднее время жизни одной частицы в <strong>миллисекундах</strong>.</p></td><td colspan="1" rowspan="1"><p><code>lspPartAvg = 2000;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>lspPartVar</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Разброс времени жизни частиц в <strong>миллисекундах</strong>.</p></td><td colspan="1" rowspan="1"><p><code>lspPartVar = 500;</code></p></td></tr></tbody></table></div><p></p><h3><strong>Визуализация</strong></h3><p>Эти параметры управляют тем, <strong>как выглядит</strong> частица.</p><div class="ipsRichText__table-wrapper"><table style="min-width: 80px;"><colgroup><col style="min-width:20px;"><col style="min-width:20px;"><col style="min-width:20px;"><col style="min-width:20px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p><strong>Параметр</strong></p></th><th colspan="1" rowspan="1"><p><strong>Тип</strong></p></th><th colspan="1" rowspan="1"><p><strong>Описание</strong></p></th><th colspan="1" rowspan="1"><p><strong>Пример</strong></p></th></tr><tr><td colspan="1" rowspan="1"><p><code>visName_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Имя текстурного файла (<code>.TGA</code>) для частиц. Обычно путь относительно папки <code>_work/Data/Textures</code>.</p></td><td colspan="1" rowspan="1"><p><code>visName_S = "FX_SMOKE_01.TGA";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>visOrientation_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Ориентация спрайта к камере: <code>"NONE"</code> (всегда к камере), <code>"VELO"</code>, <code>"VELO3D"</code>.</p></td><td colspan="1" rowspan="1"><p><code>visOrientation_S = "NONE";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>visTexIsQuadPoly</code></p></td><td colspan="1" rowspan="1"><p><code>INT</code></p></td><td colspan="1" rowspan="1"><p>Флаг <code>BOOL</code>. Рендерить как полноценный 2D-квадрат, а не как точку. Улучшает вид, но нагружает систему.</p></td><td colspan="1" rowspan="1"><p><code>visTexIsQuadPoly = 1;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>visTexAniFPS</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Скорость анимации текстуры в FPS, если текстура — это последовательность кадров (например, <code>name_A0.TGA</code>, <code>name_A1.TGA</code>).</p></td><td colspan="1" rowspan="1"><p><code>visTexAniFPS = 24;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>visTexAniIsLooping</code></p></td><td colspan="1" rowspan="1"><p><code>INT</code></p></td><td colspan="1" rowspan="1"><p>Флаг <code>BOOL</code>. Зациклить анимацию текстуры.</p></td><td colspan="1" rowspan="1"><p><code>visTexAniIsLooping = 1;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>visTexColorStart_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Начальный цвет частицы в формате <code>"R G B"</code> (0-255). Белый <code>"255 255 255"</code> означает "без изменений".</p></td><td colspan="1" rowspan="1"><p><code>visTexColorStart_S = "255 128 0";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>visTexColorEnd_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Конечный цвет частицы. Цвет будет плавно меняться от <code>Start</code> к <code>End</code> за время жизни частицы.</p></td><td colspan="1" rowspan="1"><p><code>visTexColorEnd_S = "255 0 0";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>visSizeStart_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Начальный размер частицы <code>"Ширина Высота"</code> (в см для 3D-пространства).</p></td><td colspan="1" rowspan="1"><p><code>visSizeStart_S = "50 50";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>visSizeEndScale</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Коэффициент масштабирования к конечному размеру (умножает <code>visSizeStart_S</code>). Позволяет частицам расти или сжиматься.</p></td><td colspan="1" rowspan="1"><p><code>visSizeEndScale = 0.5;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>visAlphaFunc_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Режим смешивания цветов с фоном: <code>"NONE"</code>, <code>"BLEND"</code>, <code>"ADD"</code> (обычно для огня/магии), <code>"MUL"</code>.</p></td><td colspan="1" rowspan="1"><p><code>visAlphaFunc_S = "ADD";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>visAlphaStart</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Начальная прозрачность частицы (0 — полностью прозрачна, 1 — непрозрачна).</p></td><td colspan="1" rowspan="1"><p><code>visAlphaStart = 0.8;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>visAlphaEnd</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Конечная прозрачность частицы. Часто ставится 0, чтобы частицы плавно исчезали.</p></td><td colspan="1" rowspan="1"><p><code>visAlphaEnd = 0;</code></p></td></tr></tbody></table></div><p></p><h3><strong>Специальные эффекты (Следы, Отметки, Стаи)</strong></h3><p>Сюда входят дополнительные эффекты вроде свечения, следов и отметок при столкновении.</p><div class="ipsRichText__table-wrapper"><table style="min-width: 80px;"><colgroup><col style="min-width:20px;"><col style="min-width:20px;"><col style="min-width:20px;"><col style="min-width:20px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p><strong>Параметр</strong></p></th><th colspan="1" rowspan="1"><p><strong>Тип</strong></p></th><th colspan="1" rowspan="1"><p><strong>Описание</strong></p></th><th colspan="1" rowspan="1"><p><strong>Пример</strong></p></th></tr><tr><td colspan="1" rowspan="1"><p><code>trlFadeSpeed</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Скорость затухания следа от движущейся частицы. След включается, если значение &gt; 0.</p></td><td colspan="1" rowspan="1"><p><code>trlFadeSpeed = 0.5;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>trlTexture_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Текстура для следа частицы.</p></td><td colspan="1" rowspan="1"><p><code>trlTexture_S = "FX_TRAIL.TGA";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>trlWidth</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Ширина следа в сантиметрах.</p></td><td colspan="1" rowspan="1"><p><code>trlWidth = 10;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>mrkFadeSpeed</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Скорость затухания "отметки", которая появляется на месте столкновения частицы с поверхностью (например, дым от пули).</p></td><td colspan="1" rowspan="1"><p><code>mrkFadeSpeed = 0.3;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>mrkTexture_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Текстура отметки.</p></td><td colspan="1" rowspan="1"><p><code>mrkTexture_S = "FX_MARK.TGA";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>mrkSize</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Размер отметки в сантиметрах.</p></td><td colspan="1" rowspan="1"><p><code>mrkSize = 15;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>flockMode</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Включает поведение "стая" (частицы следуют за лидером). Требует дополнительных настроек.</p></td><td colspan="1" rowspan="1"><p><code>flockMode = "MODE";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>flockStrength</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Сила притяжения к вожаку стаи.</p></td><td colspan="1" rowspan="1"><p><code>flockStrength = 0.5;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>useEmittersFOR</code></p></td><td colspan="1" rowspan="1"><p><code>INT</code></p></td><td colspan="1" rowspan="1"><p>Флаг <code>BOOL</code>. Если <code>1</code>, то частицы наследуют движение эмиттера (например, вылетают из движущейся руки).</p></td><td colspan="1" rowspan="1"><p><code>useEmittersFOR = 1;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>timeStartEnd_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Интервал игрового времени в часах <code>"Начало Конец"</code>, когда эффект виден. Например, для ночных светлячков.</p></td><td colspan="1" rowspan="1"><p><code>timeStartEnd_S = "22 3";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>m_bIsAmbientPFX</code></p></td><td colspan="1" rowspan="1"><p><code>INT</code></p></td><td colspan="1" rowspan="1"><p>Флаг <code>BOOL</code>. Если <code>1</code>, эффект считается атмосферным и может отключаться в настройках игры.</p></td><td colspan="1" rowspan="1"><p><code>m_bIsAmbientPFX = 1;</code></p></td></tr></tbody></table></div><p></p><p></p><h2>VisualFX</h2><p>Вот полный список параметров для <code>VisualFXInst.d</code>. В отличие от <code>PfxInstMagic.d</code>, где собраны «сырые» частицы, этот файл служит управляющей оболочкой (<code>CFx_Base_Proto</code>) для них: он отвечает за анимацию, прикрепление к модели персонажа и взаимодействие с миром.</p><p></p><h3><strong>Траектория и наведение</strong></h3><p>Эти параметры управляют тем, как эффект перемещается в пространстве, куда направлен и как строит свой путь.</p><div class="ipsRichText__table-wrapper"><table style="min-width: 80px;"><colgroup><col style="width:20px;"><col style="min-width:20px;"><col style="min-width:20px;"><col style="min-width:20px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p><strong>Параметр</strong></p></th><th colspan="1" rowspan="1"><p><strong>Тип</strong></p></th><th colspan="1" rowspan="1"><p><strong>Описание</strong></p></th><th colspan="1" rowspan="1"><p><strong>Пример</strong></p></th></tr><tr><td colspan="1" rowspan="1"><p><code>emTrjMode_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Режим траектории. Определяет, как эффект летит к цели: <code>"FIXED"</code> (фиксированное направление), <code>"TARGET"</code> (на цель), <code>"SPLINE"</code> (по сплайну), <code>"LINE"</code> (по линии), <code>"RANDOM"</code> (случайные точки).</p></td><td colspan="1" rowspan="1"><p><code>emTrjMode_S = "TARGET";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emTrjOriginNode</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Узел-источник. Часть модели (<code>"BIP01"</code> или <code>"ZS_RIGHTHAND"</code>), из которой начинается эффект. Обычно привязан к анимации персонажа.</p></td><td colspan="1" rowspan="1"><p><code>emTrjOriginNode = "ZS_RIGHTHAND";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emTrjTargetNode</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Узел-цель. Часть модели цели, к которой будет лететь эффект, например, <code>"BIP01 HEAD"</code> для попадания в голову.</p></td><td colspan="1" rowspan="1"><p><code>emTrjTargetNode = "BIP01 HEAD";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emTrjTargetRange</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Дальность полёта. Максимальная дистанция, на которую эффект может удалиться от источника, прежде чем исчезнуть (в метрах).</p></td><td colspan="1" rowspan="1"><p><code>emTrjTargetRange = 15.0;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emTrjTargetAzi</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Азимут цели. Горизонтальный угол поворота эффекта при наведении на цель (в градусах).</p></td><td colspan="1" rowspan="1"><p><code>emTrjTargetAzi = 45.0;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emTrjTargetElev</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Угол места цели. Вертикальный угол наведения эффекта (в градусах).</p></td><td colspan="1" rowspan="1"><p><code>emTrjTargetElev = 30.0;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emTrjNumKeys</code></p></td><td colspan="1" rowspan="1"><p><code>INT</code></p></td><td colspan="1" rowspan="1"><p>Количество опорных точек. Минимальное число случайных точек для построения траектории.</p></td><td colspan="1" rowspan="1"><p><code>emTrjNumKeys = 3;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emTrjNumKeysVar</code></p></td><td colspan="1" rowspan="1"><p><code>INT</code></p></td><td colspan="1" rowspan="1"><p>Вариация опорных точек. Дополнительное случайное количество точек (с низкой вероятностью появления).</p></td><td colspan="1" rowspan="1"><p><code>emTrjNumKeysVar = 1;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emTrjAngleElevVar</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Вариация угла места. Диапазон случайного отклонения по вертикали для создания "разброса" траектории.</p></td><td colspan="1" rowspan="1"><p><code>emTrjAngleElevVar = 5.0;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emTrjAngleHeadVar</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Вариация азимута. Диапазон случайного отклонения по горизонтали.</p></td><td colspan="1" rowspan="1"><p><code>emTrjAngleHeadVar = 5.0;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emTrjKeyDistVar</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Вариация дистанции ключей. Фактор случайного расстояния (от 0.0 до 1.0), на который умножается дистанция до опорной точки.</p></td><td colspan="1" rowspan="1"><p><code>emTrjKeyDistVar = 0.5;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emTrjLoopMode_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Режим зацикливания траектории. Что происходит, когда эффект достигает конца пути: <code>"RESTART"</code>, <code>"PINGPONG_ONCE"</code>, <code>"PINGPONG"</code>, <code>"HALT"</code>.</p></td><td colspan="1" rowspan="1"><p><code>emTrjLoopMode_S = "RESTART";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emTrjEaseFunc_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Функция плавности. Определяет характер движения по траектории: <code>"LINEAR"</code> (линейно) или <code>"SINE"</code> (синусоидально).</p></td><td colspan="1" rowspan="1"><p><code>emTrjEaseFunc_S = "SINE";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emTrjEaseVel</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Скорость плавности. Значение, влияющее на интенсивность работы функции плавности.</p></td><td colspan="1" rowspan="1"><p><code>emTrjEaseVel = 1.0;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emTrjDynUpdateDelay</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Задержка обновления динамической траектории. Время в секундах, через которое обновляется позиция движущегося эффекта.</p></td><td colspan="1" rowspan="1"><p><code>emTrjDynUpdateDelay = 0.1;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emTrjDynUpdateTargetOnly</code></p></td><td colspan="1" rowspan="1"><p><code>BOOL</code></p></td><td colspan="1" rowspan="1"><p>Обновлять только цель. Если <code>true</code>, эффект не отслеживает постоянно движущуюся цель, а застывает в точке привязки.</p></td><td colspan="1" rowspan="1"><p><code>emTrjDynUpdateTargetOnly = true;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emAdjustShpToOrigin</code></p></td><td colspan="1" rowspan="1"><p><code>INT</code></p></td><td colspan="1" rowspan="1"><p>Подстраивать форму под источник. Если <code>1</code>, эмиттер (<code>PfxInstMagic.d</code>) поворачивается вслед за узлом-источником, откуда летит заклинание.</p></td><td colspan="1" rowspan="1"><p><code>emAdjustShpToOrigin = 1;</code></p></td></tr></tbody></table></div><p></p><h3><strong>Временные и структурные параметры</strong></h3><p>Эта группа управляет продолжительностью жизни эффекта, его каскадированием и реакцией на столкновения.</p><div class="ipsRichText__table-wrapper"><table style="min-width: 80px;"><colgroup><col style="min-width:20px;"><col style="min-width:20px;"><col style="min-width:20px;"><col style="min-width:20px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p><strong>Параметр</strong></p></th><th colspan="1" rowspan="1"><p><strong>Тип</strong></p></th><th colspan="1" rowspan="1"><p><strong>Описание</strong></p></th><th colspan="1" rowspan="1"><p><strong>Пример</strong></p></th></tr><tr><td colspan="1" rowspan="1"><p><code>emFXLifeSpan</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Время жизни эффекта. Продолжительность существования основного визуального эффекта в секундах. Значение <code>-1</code> делает его бесконечным.</p></td><td colspan="1" rowspan="1"><p><code>emFXLifeSpan = 2.0;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emFXTriggerDelay</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Задержка перед запуском. Эффект начнёт проигрываться только через указанное количество секунд.</p></td><td colspan="1" rowspan="1"><p><code>emFXTriggerDelay = 0.5;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emFXCreate_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Создать дочерний эффект. Имя другой инстанции <code>CFx_Base_Proto</code>, которая запустится одновременно с текущей.</p></td><td colspan="1" rowspan="1"><p><code>emFXCreate_S = "SLOW_TIME_CHILD";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emFXInvestOrigin_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Эффект вложения (источник). Визуальный эффект, который проигрывается у заклинателя во время "инвестиции" (произнесения заклинания).</p></td><td colspan="1" rowspan="1"><p><code>emFXInvestOrigin_S = "spellFX_Sleep_ORIGIN";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emFXInvestTarget_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Эффект вложения (цель). Эффект, который проигрывается на цели после успешного применения заклинания.</p></td><td colspan="1" rowspan="1"><p><code>emFXInvestTarget_S = "spellFX_Charm_TARGET";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emFXCollStat</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Эффект при статическом столкновении. Какой эффект (<code>CFx_Base_Proto</code>) создать при столкновении с неподвижным объектом (стена, земля).</p></td><td colspan="1" rowspan="1"><p><code>emFXCollStat = "FX_IMPACT_EARTH";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emFXCollDyn</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Эффект при динамическом столкновении. Какой эффект создать при столкновении с движущимся NPC.</p></td><td colspan="1" rowspan="1"><p><code>emFXCollDyn = "FX_IMPACT_NPC";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emFXCollDynPerc</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Эффект восприятия цели. Эффект, применяемый к цели, если функция <code>C_CanNPCCollideWithSpell</code> возвращает успех.</p></td><td colspan="1" rowspan="1"><p><code>emFXCollDynPerc = "FX_HIT_SPARK";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emFXCollStatAlign</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Выравнивание статического эффекта. Должен ли эффект столкновения быть выровнен по нормали поверхности.</p></td><td colspan="1" rowspan="1"><p><code>emFXCollStatAlign = "COLLISIONNORMAL";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emFXCollDynAlign</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Выравнивание динамического эффекта. Должен ли эффект быть выровнен по объекту, с которым столкнулся.</p></td><td colspan="1" rowspan="1"><p><code>emFXCollDynAlign = "COLLISIONNORMAL";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>emActionCollStat_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Тип статического столкновения. Должен содержать <code>"CREATE"</code>, чтобы <code>emFXCollStat</code> был создан. Используется для настройки поведения при столкновении.</p></td><td colspan="1" rowspan="1"><p><code>emActionCollStat_S = "CREATE";</code></p></td></tr></tbody></table></div><p></p><h3><strong>Визуальные параметры</strong></h3><p>Здесь задаётся, как именно будет выглядеть эффект, его текстура, прозрачность, размеры и анимация.</p><div class="ipsRichText__table-wrapper"><table style="min-width: 80px;"><colgroup><col style="min-width:20px;"><col style="min-width:20px;"><col style="min-width:20px;"><col style="min-width:20px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p><strong>Параметр</strong></p></th><th colspan="1" rowspan="1"><p><strong>Тип</strong></p></th><th colspan="1" rowspan="1"><p><strong>Описание</strong></p></th><th colspan="1" rowspan="1"><p><strong>Пример</strong></p></th></tr><tr><td colspan="1" rowspan="1"><p><code>visName_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Имя визуального эффекта. Может быть: имя PFX-эффекта (из <code>PfxInstMagic.d</code>), текстура (<code>.TGA</code>), 3D-модель (<code>.3DS</code>), анимация (<code>.MMS</code>), эффекты смены ракурса/замедления времени (<code>.FOV</code>/<code>.SLW</code>).</p></td><td colspan="1" rowspan="1"><p><code>visName_S = "MFX_CHARM_INIT";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>visAlpha</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>Общая прозрачность эффекта. Значение от <code>0.0</code> (полностью прозрачен) до <code>1.0</code> (полностью непрозрачен).</p></td><td colspan="1" rowspan="1"><p><code>visAlpha = 0.8;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>visAlphaBlendFunc</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Режим смешивания. Определяет, как прозрачность эффекта смешивается с фоном. Варианты: <code>"NONE"</code>, <code>"BLEND"</code>, <code>"ADD"</code> (аддитивное смешение), <code>"SUB"</code>, <code>"MUL"</code>, <code>"MUL2"</code>.</p></td><td colspan="1" rowspan="1"><p><code>visAlphaBlendFunc = "ADD";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>visSize_S</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Вектор размера. Размеры эффекта в 3D-пространстве в виде строки <code>"X Y Z"</code> (в сантиметрах).</p></td><td colspan="1" rowspan="1"><p><code>visSize_S = "100 100 100";</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>visTexAniFPS</code></p></td><td colspan="1" rowspan="1"><p><code>FLOAT</code></p></td><td colspan="1" rowspan="1"><p>FPS анимации текстуры. Скорость смены кадров анимированной текстуры в секунду.</p></td><td colspan="1" rowspan="1"><p><code>visTexAniFPS = 24.0;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>visTexAniIsLooping</code></p></td><td colspan="1" rowspan="1"><p><code>BOOL</code></p></td><td colspan="1" rowspan="1"><p>Зациклить анимацию текстуры. Если <code>true</code>, анимация текстур будет повторяться бесконечно.</p></td><td colspan="1" rowspan="1"><p><code>visTexAniIsLooping = true;</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><code>lightpresetname</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Имя пресета освещения. Позволяет привязать к эффекту определённый источник света или цветовую гамму, например, <code>"REDAMBIENCE"</code>.</p></td><td colspan="1" rowspan="1"><p><code>lightpresetname = "REDAMBIENCE";</code></p></td></tr></tbody></table></div><p></p><h3><strong>Пользовательские строки</strong></h3><p>Эти параметры используются для передачи кастомных данных в сложные эффекты, которые требуют дополнительных настроек.</p><div class="ipsRichText__table-wrapper"><table style="width: 1067px;"><colgroup><col style="width:158px;"><col style="width:133px;"><col style="width:568px;"><col style="width:208px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p><strong>Параметр</strong></p></th><th colspan="1" rowspan="1"><p><strong>Тип</strong></p></th><th colspan="1" rowspan="1"><p><strong>Описание</strong></p></th><th colspan="1" rowspan="1"><p><strong>Пример</strong></p></th></tr><tr><td colspan="1" rowspan="1"><p><code>userString[0-9]</code></p></td><td colspan="1" rowspan="1"><p><code>STRING</code></p></td><td colspan="1" rowspan="1"><p>Пользовательские строки. Массив из 10 строк, предназначенных для хранения произвольных данных, например, для передачи параметров в медленный эффект <code>SLOW_TIME</code>.</p></td><td colspan="1" rowspan="1"><p><code>userString[0] = "0.5";</code></p></td></tr></tbody></table></div><p></p><p>Источники:</p><ol><li><p><strong>World of Players (русскоязычный форум)</strong>:<br><code>https://worldofplayers.ru</code></p></li><li><p><strong>World of Gothic (немецкоязычный форум)</strong>:<br><code>https://forum.worldofplayers.de</code></p></li><li><p><strong>Gothic Wiki (на </strong><a rel="external nofollow" href="https://wiki.worldofplayers.de/"><strong>wiki.worldofplayers.de</strong></a><strong>)</strong>:<br><code>https://wiki.worldofplayers.de</code></p></li><li><p><strong>Gothic Modding Community на GitHub</strong>:<br><code>https://github.com</code> (ищите репозитории по ключевым словам <code>Gothic</code>, <code>Daedalus</code>, <code>PfxInstMagic</code>, <code>VisualFXInst</code>)</p></li></ol><p></p><p>Я собираюсь делать новый мод, пока что не буду о нем говорить. И вот, пытаюсь освоить эту тему с частицами. Это нужно для разного рода визуальных эффектов.</p>]]></description><guid isPermaLink="false">4178</guid><pubDate>Fri, 05 Jun 2026 14:37:11 +0000</pubDate></item><item><title>(Gothic 1/2) Spacer.NET - &#x440;&#x435;&#x434;&#x430;&#x43A;&#x442;&#x43E;&#x440; &#x43C;&#x438;&#x440;&#x43E;&#x432;</title><link>https://bestgothic.net/topic/3865-gothic-12-spacernet-redaktor-mirov/</link><description><![CDATA[<p style="text-align:center;"><img class="ipsImage ipsRichText__align--block" data-fileid="2786" src="https://bestgothic.top/uploads/monthly_2026_02/SPLASH.png.c41d03ba09cee3fb1419eb39ff61ef79.png" alt="SPLASH.png" title="SPLASH.png" width="750" height="300" loading="lazy"></p><p style="text-align:center;">Вся информация по проекту была взята из данного <a rel="external nofollow" href="https://worldofplayers.ru/threads/41991/"><strong><span data-i-color="orange">первоисточника</span></strong></a></p><p style="text-align:left;"><strong><span data-i-color="orange">Версия игры:</span> </strong>Готика 1 (1.08k_mod), Готика 2 Ночь Ворона<strong><br><span data-i-color="orange">Страна разработчика:</span> </strong><span style='font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;'>Россия</span><br><strong><span data-i-color="orange">Тип:</span> </strong><span style='font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;'>Плагин для Union</span><br><strong><span data-i-color="orange">Рабочее название:</span></strong><span style='font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;'> Spacer.NET</span><br><strong><span data-i-color="orange">Версия:</span></strong><span style='font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;'> 1.46</span><br><strong><span data-i-color="orange">Язык:</span></strong><span style='font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;'> Русский, English, German, Polish, Czech</span><br><strong><span data-i-color="orange">Размер:</span></strong><span style='font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;'> ~2 МБ</span><br><strong><span data-i-color="orange">Автор:</span> </strong><a rel="external nofollow" href="https://worldofplayers.ru/members/102978/"><strong>LikerGothic</strong></a><br><strong><span data-i-color="orange">Разработчики:</span></strong><span style='font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;'> </span><a rel="external nofollow" href="https://worldofplayers.ru/members/102978/"><strong>LikerGothic</strong></a><span style='font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;'>, Patrix, </span><a rel="external nofollow" href="https://worldofplayers.ru/members/88148/"><strong>Haart</strong></a><span style='font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;'>, </span><a rel="external nofollow" href="https://worldofplayers.ru/members/11723/"><strong>Saturas</strong></a><span style='font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;'>, </span><a rel="external nofollow" href="https://worldofplayers.ru/members/97625/"><strong>Gratt</strong></a><span style='font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;'>, </span><a rel="external nofollow" href="https://worldofplayers.ru/members/58483/"><strong>Jr13San</strong></a><br><strong><span data-i-color="orange">Тестеры:</span> </strong><a rel="external nofollow" href="https://worldofplayers.ru/members/88148/"><strong>Haart</strong></a><span style='font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;'>, </span><a rel="external nofollow" href="https://worldofplayers.ru/members/8748/"><strong>Adept</strong></a><span style='font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;'>, </span><a rel="external nofollow" href="https://worldofplayers.ru/members/58483/"><strong>Jr13San</strong></a><br><strong><span data-i-color="orange">Статус:</span> </strong><span style='font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;'>выходят обновления</span><br><strong><span data-i-color="orange">Требования:</span> </strong>.NET Framework 4.0, Union 1.0m</p><p style="text-align:left;"><strong><span data-i-color="orange">SpacerNET - представляет из себя переработанную версию редактора миров для Готики 1/Готики 2 Ночь Ворона.</span></strong></p><p><strong><span data-i-color="orange">Основные цели проекта:</span></strong></p><ul><li><p>Максимальная автоматизация процесса вобинга</p></li><li><p>Удобство в работе</p></li><li><p>Нелагающий интерфейс</p></li></ul><p><strong><span data-i-color="orange">Основные фишки:</span></strong></p><ul><li><p>Максимально похожий по виду интерфейс на старый Spacer</p></li><li><p>Иерархичное копирование вобов (дети-вобы копируются вместе с родителем)</p></li><li><p>Удобная манипуляция вобом (коллизии не мешают его перемещать и вращать)</p></li><li><p>Изменение родителя для воба</p></li><li><p>Некоторые настройки "под себя"</p></li><li><p>Предпросмотр моделей, PFX-эффектов, итемов</p></li><li><p>Поддержка VobTree</p></li><li><p>Поддержка extended-классов (можно через Юнион создать воб нового типа, и он будет здесь работать)</p></li><li><p>Удобное редактирование содержимого сундуков</p></li><li><p>Настройки отображения FPS, кол-ва вобов и т.д.</p></li><li><p><strong>Поддержка dx11</strong> (минимум SK6 версия) <a rel="external nofollow" href="https://github.com/SaiyansKing/GD3D11/releases"><strong>Скачать</strong></a></p></li><li><p>Новые возможности, по сравнению со старым Spacer<br></p></li></ul><details class="ipsRichTextBox ipsRichTextBox--expandable ipsRichText__no-index"><summary class="ipsRichTextBox__title"><p><strong><span data-i-color="orange">Скриншоты</span></strong></p></summary><p><img class="ipsImage ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="2801" src="https://bestgothic.top/uploads/monthly_2026_02/1.JPG.efe360745cd1b538ad5d396ed7e057de.JPG" alt="1.JPG" title="1.JPG" width="898" height="693" style="--i-media-width: 500px;" loading="lazy"><img class="ipsImage ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="2802" src="https://bestgothic.top/uploads/monthly_2026_02/2.JPG.61b7520848fe0518b4691b5008a00a1a.JPG" alt="2.JPG" title="2.JPG" width="648" height="500" style="--i-media-width: 500px;" loading="lazy"><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="2799" src="https://bestgothic.top/uploads/monthly_2026_02/3.thumb.JPG.6cacc36d2afd39cc73e69768c6bead05.JPG" alt="3.JPG" title="3.JPG" width="1000" height="540" data-full-image="https://bestgothic.top/uploads/monthly_2026_02/3.JPG.7dac467e4169b110692396c985c3e9f6.JPG" style="--i-media-width: 650px;" loading="lazy"><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="2798" src="https://bestgothic.top/uploads/monthly_2026_02/4.thumb.JPG.5c4b0171abf0d91d70da4da254156e11.JPG" alt="4.JPG" title="4.JPG" width="1000" height="625" data-full-image="https://bestgothic.top/uploads/monthly_2026_02/4.JPG.c1a6f333036493b764ea980c7da2b176.JPG" style="--i-media-width: 650px;" loading="lazy"><img class="ipsImage ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="2797" src="https://bestgothic.top/uploads/monthly_2026_02/5.JPG.8ca76d998958b6d155294c33cf5d2137.JPG" alt="5.JPG" title="5.JPG" width="734" height="374" style="--i-media-width: 650px;" loading="lazy"><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="2796" src="https://bestgothic.top/uploads/monthly_2026_02/6.thumb.JPG.4d951b77bbc577d035d868eee0d7db4d.JPG" alt="6.JPG" title="6.JPG" width="1000" height="540" data-full-image="https://bestgothic.top/uploads/monthly_2026_02/6.JPG.ded4fa09894dd91760b621e070ffc2b5.JPG" style="--i-media-width: 649px;" loading="lazy"><img class="ipsImage ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="2795" src="https://bestgothic.top/uploads/monthly_2026_02/7.JPG.bb5b2c2e3b5192be0bf8a2b08c281a23.JPG" alt="7.JPG" title="7.JPG" width="573" height="417" style="--i-media-width: 500px;" loading="lazy"><img class="ipsImage ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="2794" src="https://bestgothic.top/uploads/monthly_2026_02/8.JPG.34eb45900f608c245ed678947b024027.JPG" alt="8.JPG" title="8.JPG" width="571" height="417" style="--i-media-width: 500px;" loading="lazy"><img class="ipsImage ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="2792" src="https://bestgothic.top/uploads/monthly_2026_02/10.JPG.1c4ad1c817c3ec8e870b2e12492dba8b.JPG" alt="10.JPG" title="10.JPG" width="427" height="253" style="--i-media-width: 500px;" loading="lazy"><img class="ipsImage ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="2791" src="https://bestgothic.top/uploads/monthly_2026_02/11.JPG.5e8a178b9a3b99ecf4d5c500dd7bbb6e.JPG" alt="11.JPG" title="11.JPG" width="634" height="395" style="--i-media-width: 500px;" loading="lazy"><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="2790" src="https://bestgothic.top/uploads/monthly_2026_02/12.thumb.JPG.eafb9d426e08936c6c090ebf35fca74e.JPG" alt="12.JPG" title="12.JPG" width="1000" height="541" data-full-image="https://bestgothic.top/uploads/monthly_2026_02/12.JPG.f259eec2c1473e55f32898b8c0fcac6e.JPG" style="--i-media-width: 650px;" loading="lazy"><img class="ipsImage ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="2788" src="https://bestgothic.top/uploads/monthly_2026_02/14.JPG.879c3f28bee5ea60482431f6713bc483.JPG" alt="14.JPG" title="14.JPG" width="604" height="583" style="--i-media-width: 649px;" loading="lazy"><img class="ipsImage ipsRichText__align--block" data-fileid="2787" src="https://bestgothic.top/uploads/monthly_2026_02/1591030518225.png.359759cf5051b3686e85a6ebbb79395e.png" alt="1591030518225.png" title="1591030518225.png" width="481" height="573" loading="lazy"></p><p></p></details><p></p><details class="ipsRichTextBox ipsRichTextBox--expandable ipsRichText__no-index"><summary class="ipsRichTextBox__title"><p><strong><span data-i-color="orange">Видео</span></strong></p></summary><p><a rel="external nofollow" href="https://Spacer.NET">Spacer.NET</a></p></details><p></p><details class="ipsRichTextBox ipsRichTextBox--expandable ipsRichText__no-index"><summary class="ipsRichTextBox__title"><p><span data-i-color="orange">Управление</span></p></summary><p><strong><span data-i-color="orange">Управление можно настроить под себя в специальном окне.</span><br><br><span data-i-color="orange">Камера:</span></strong><br><span style='font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;'>Зажать ПКМ (правая кнопка мыши) + WASD перемещение, вверх - пробел, вниз - X, перемещать мышь для вращения камеры.</span><br><span style='font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;'>Колесико мышки - быстрое перемещение в направлении взгляда (не работает на готике 1)</span><br><br><strong><span data-i-color="orange">Управление выделенным вобом:</span></strong></p><ul><li><p>Выделение воба : ЛКМ, расширенное выделение: левый ctrl+ЛКМ (выделение vobAnimate, некоторой травы)</p></li><li><p>Клавиша 1 - режим <strong>перемещения </strong>воба (WASD)</p></li><li><p>Клавиша 2 - режим <strong>вращения </strong>воба (WASD)</p></li><li><p>Клавиша 3 - соединить/разъединить два вейпоинта (один выделяется через shift+ЛКМ, второй просто выделяется, всё как в старом спейсере)</p></li><li><p>Клавиша 4 - снять <strong>выделение </strong>с воба</p></li><li><p>Клавиша 5 - переместить выделенный воб перед камерой</p></li><li><p>Клавиша 6 - выбрать режим редактирование bbox объекта (для муверов, зон музыки и тд)</p></li><li><p>Клавиши Q/E - вращение воба вокруг вертикальной оси</p></li></ul><p><strong><span data-i-color="orange">Модификаторы:</span></strong></p><ul><li><p>LShift - ускорение перемещения/вращения в 10 раз</p></li><li><p>LControl- замедление перемещения/вращения в 10 раз</p></li></ul><p><strong><span data-i-color="orange">Сочетания клавиш:</span></strong></p><ul><li><p>Shift+F прижать воб к поверхности (работает через динамическую коллизию)</p></li><li><p>Shift+R сбросить поворот воба по трем осям, нажимать можно несколько раз</p></li><li><p>Control+C, Control+V - скопировать воб и вставить</p></li><li><p>Control+Z, Control+V - вставить выделенный воб в нового родителя (изменение родителя)</p></li></ul><p><strong><span data-i-color="orange">Прочее</span></strong><span data-i-color="orange"><span style='font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;'>:</span></span></p><ul><li><p>ПКМ на выбранной модельке в окне поиска визуалов: скопировать имя модели в буфер</p></li><li><p>ПКМ на списке вобов: удалить воб, сохранить vobTree, вставить vobTree</p></li><li><p>F1 - собрать вобы в vobContainer в выбранном радиусе...</p></li><li><p>F2 - вставить вейпоинт со сгенерированным именем (должен быть выделен другой вейпоинт)</p></li><li><p>F3 - скрыть/показать окна</p></li></ul></details><p></p><details class="ipsRichTextBox ipsRichTextBox--expandable ipsRichText__no-index"><summary class="ipsRichTextBox__title"><p><strong><span data-i-color="orange">FAQ</span></strong></p></summary><ul><li><p><strong>После загрузки в Спейсере черное окно и ничего нет. Ответ: </strong>скорее всего вы установили dx11 от обычной игры. Удалите файл ddraw.dll из папки system или установите dx11 для Спейсера. Однако, компилировать миры и свет с dx11 нельзя, поэтому легче тупо удалить его при работе со спейсером.</p></li><li><p><strong>После загрузки спейсера ничего не нажимается, меню неактивно.</strong> <strong>Ответ</strong>: зайти в gothic.ini и проставить там ваше разрешение экрана вручную. zVidResFullscreenX=1920, zVidResFullscreenY=1080 (как пример)</p></li><li><p><strong>Зажимаю правую клавишу мыши, камера не летит/не вертится. Ответ: </strong>зайдите 1 раз в игру (до главного меню), чтобы в <strong>systempack.ini</strong> записались нужные строки и выйдите. Всё заработает</p></li><li><p><strong>В глобальный список вобов локации самостоятельно добавляются какие-то вобы. Зачем?</strong> <strong>Ответ</strong>: это дочерние вобы от PFX-эффектов. Они добавляются, когда камера подлетает к ним или вы делаете предпросмотр некоторых эффектов из меню, и pfx-эффект активируется. Они не сохраняются в ZEN, так что они не опасны.</p></li><li><p><strong>Как сбросить управление на "по умолчанию"? Ответ: </strong>зайти в меню с кнопками и нажать "сбросить по умолчанию"</p></li><li><p><strong>Что за звук падения оружия на землю?</strong> <strong>Ответ:</strong> когда мир загрузился или скомпилился, воспроизводится такой звук-оповещение, потом заменим, если не понравится.</p></li><li><p><strong>После загрузки мира вылет</strong>. Ответ: скорее всего ваши скрипты используют Lego/Ikarus, выключите пункт "Отключать музыку при загрузке" в окне звуков.</p></li><li><p><strong>Спейсер вылетает при каких-то действиях</strong>: отписать в тему, но скорее всего, у вас используются другие плагины Union/Ninja, которые мешает работе спейсера.</p></li></ul></details><p></p><details class="ipsRichTextBox ipsRichTextBox--expandable ipsRichText__no-index"><summary class="ipsRichTextBox__title"><p><strong><span data-i-color="orange">Скачать</span></strong></p></summary><p><a class="ipsAttachLink" data-fileid="2822" href="https://bestgothic.net/applications/core/interface/file/attachment.php?id=2822&amp;key=a68b9a3c8586e22b4bb5501dec733c4b" data-fileext="zip" rel="">SpacerNET_G1.zip</a> - версия для Готики 1<br><a class="ipsAttachLink" data-fileid="2821" href="https://bestgothic.net/applications/core/interface/file/attachment.php?id=2821&amp;key=46d819a6ec55b3dc200b140b0c3cafff" data-fileext="zip" rel="">SpacerNET_G2NR.zip</a> - версия для Готики 2 Ночь Ворона</p></details><p></p><details class="ipsRichTextBox ipsRichTextBox--expandable ipsRichText__no-index"><summary class="ipsRichTextBox__title"><p><strong><span data-i-color="orange">Установка</span></strong></p></summary><ol><li><p>Установить Готику 2 Ночь Ворона</p></li><li><p>Установить gothic2_playerkit-2.6f/g2mdk-2.6_FULL с распаковкой нужных ресурсов для спейсера</p></li><li><p>Установить Union 1.0m из <a rel="external nofollow" href="https://worldofplayers.ru/resources/136/"><strong>Resource manager,</strong></a> но лучше из <a rel="external nofollow" href="https://worldofplayers.ru/threads/40376/"><strong>Union - Union (патч для Gothic)</strong></a></p></li><li><p>Поместить spacer_net.ini из скачанного архива выше в папку system (это нужно сделать <strong>только один раз</strong>, при обновлении заменять его не нужно)</p></li><li><p>Поместить SpacerNET.mod из скачанного архива выше в папку Data/ModVDF (при <strong>обновлении </strong>версий, просто закидывать этот обновленный файл с заменой)</p></li><li><p>Запустить игру один раз, чтобы появились нужные строки в ини-файлах игры (после установки юниона)</p></li><li><p>Запустить GothicStarter.exe и там выбрать Spacer.NET</p></li></ol><p></p></details><p></p>]]></description><guid isPermaLink="false">3865</guid><pubDate>Wed, 25 Feb 2026 07:49:52 +0000</pubDate></item></channel></rss>
