• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

Gothic ½ Плагин барьера | zBarrier [Плагин для Union]

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
Мультиплатформенный плагин zBarrier
Добавляет барьер из G1 во все остальные движки



Доступно к скачиванию через Менеджер ресурсов
- Скачать Менеджер Ресурсов - 1559419291725.png
- Скачать автономный установщик -


Авторы: Gratt, Saturas
Требования:
Union 1.0h или выше
Платформа: продолжение Gothic, Gothic II, Gothic II NoTR


Версии плагина:
1. zBarrierClassic
Данная версия плагина готова для работы с миром OldWorld. Просто укажите zBarrierClassic.mod в ini файле Вашего мода.

2. zBarrier
Данная версия плагина требует ручного включения барьера из скриптов. Используйте эту версию, если барьер необходим в нестандартных локациях или сценариях.

3. zBarrierDemo
Данная версия плагина является демонстрационной. После установки барьер будет появляться во всех модах, локациях, а также всегда будет виден.

При использовании Gothic Sourcer для управления барьером, необходимо добавить следующий код в файл Внешних функций, после чего перезайти в программу:
Скриптовые функции:
Daedalus:
// Вставляет барьер в мир
// enabled - определяет будет ли барьер вставлен в мир
func void Barrier_SetEnabled (var int включен);

// Задает цвет текстуры барьера
// R - уровень красного (0-255)
// G - уровень зеленого (0-255)
// B - уровень синего (0-255)
func void Barrier_SetColor (var int R, var int G, var int B);

// Устанавливает количество урона наносимого барьером
// damage - количество урона за один удар молнией
func void Barrier_SetDamage (var int damage);

// Устанавливает текстуру первого слоя
// texName - имя текстуры
func void Barrier_SetTexture1 (var string texName);

// Устанавливает текстуру второго слоя
// texName - имя текстуры
func void Barrier_SetTexture2 (var string texName);

// Устанавливает визуальный эффект,
// который необходимо наложить на персонажа
// в непосредственной близости от барьера
// visName - имя визуального эффекта
func void Barrier_SetWarnFx (var string visName);

// Устанавливает временной интервал следующего
// включения барьера. Время выбирается случайно
// от мин до макс.
// min - минимальное время, через которое может появиться барьер (в миллисекундах)
// min - максимальное время, через которое может появиться барьер (в миллисекундах)
func void Barrier_SetNextActivationTime (var float min, var float max);

// Сбрасывает точки границ барьера
func void MagFrontier_ResetPoint ();

// Добавляет точку границы барьера
func void MagFrontier_SetPoint(var float x, var float y);

Вызовы этих функций необходимо производить в момент инициализации Вашего мира.

Картиночки:
B1.jpg B2.jpg B3.jpg B4.jpg B5.jpg
 
Последнее редактирование модератором:

Ur-tRall

Участник форума
Регистрация
16 Май 2009
Сообщения
4.100
Благодарности
2.123
Баллы
475
Интересно конечно, а возможно в одном мире скажем по сюжету будет снять на время барьер и потом снова его включить, при этом изменив частично и сами некоторые крупные объекты типа корабля, более разрушенного замка, выженного немного леса или для этого строго нужно создавать новый мир? Конечно может и нубский немного вопрос, но в спейсере не слишком то много и работал.

И да, для Готики 1 не планируется такого плагина? Строго Готика Сиквел и Готика 2?
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
Gratt,
Супер! Поставил в мод пока в виде zBarrier (DEMO), работает как нужно и по периметру лупит! Красота! Ляпота! *dance*
Укажи еще в примере пожалуйста значения по умолчанию для скриптовых функций для "стандартного" барьера как в Г1.
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
C++:
Barrier_SetEnabled(true);
        MagFrontier_ResetPoint();
        Barrier_SetWarnFx ("BARRIERE_PC_WARNING");
        MagFrontier_SetPoint(57939, 1280);
        MagFrontier_SetPoint(55954, 5422);
        MagFrontier_SetPoint( 52857, 10047);
        MagFrontier_SetPoint( 49452, 14908);
        MagFrontier_SetPoint( 44200, 20513);
        MagFrontier_SetPoint( 37684, 26271);
        MagFrontier_SetPoint( 30434, 31462);
        MagFrontier_SetPoint( 25574, 32693);
        MagFrontier_SetPoint( 21248, 35176);
        MagFrontier_SetPoint( 19451, 35205);
        MagFrontier_SetPoint( 16263, 32800);
        MagFrontier_SetPoint( 10756, 34744);
        MagFrontier_SetPoint( 9737, 37990);
        MagFrontier_SetPoint( 8219, 38393);
        MagFrontier_SetPoint( 4065, 39018);
        MagFrontier_SetPoint( 840, 39079);
        MagFrontier_SetPoint( -9313, 38694);
        MagFrontier_SetPoint( -19258, 40991);
        MagFrontier_SetPoint( -29684, 40536);
        MagFrontier_SetPoint( -39314, 36559);
        MagFrontier_SetPoint( -49320, 31970);
        MagFrontier_SetPoint( -54137, 26762);
        MagFrontier_SetPoint( -62089, 21598);
        MagFrontier_SetPoint( -66194, 12999);
        MagFrontier_SetPoint( -66132, 6204);
        MagFrontier_SetPoint( -63855, -5701);
        MagFrontier_SetPoint( -59385, -10082);
        MagFrontier_SetPoint( -56014, -22393);
        MagFrontier_SetPoint( -47250, -28502);
        MagFrontier_SetPoint( -37137, -38319);
        MagFrontier_SetPoint( -24665, -46688);
        MagFrontier_SetPoint( -7861, -48967);
        MagFrontier_SetPoint( 4877, -49691);
        MagFrontier_SetPoint( 23148, -47875);
        MagFrontier_SetPoint( 48722, -39489);
        MagFrontier_SetPoint( 55902, -31910);
        MagFrontier_SetPoint( 61239, -23413);
        MagFrontier_SetPoint( 60230, -6642);

Точки брать по x\y координатам нпс.

По вопросу выше, снимать \поднимать можно когда душе заблагорассудится. Для использования барьера спейсер не нужен.

И еще момент, пока что мы так и не поняли как заставить барьер работать с куполами меньших размеров чем в г1, по этому пока если создаешь свой барьер, то нужно размер брать не меньше того что в г1.
 
Последнее редактирование:

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
Интересно конечно, а возможно в одном мире скажем по сюжету будет снять на время барьер и потом снова его включить, при этом изменив частично и сами некоторые крупные объекты типа корабля, более разрушенного замка, выженного немного леса или для этого строго нужно создавать новый мир? Конечно может и нубский немного вопрос, но в спейсере не слишком то много и работал.
Обычно по факту на такое ТЗ отвечаю, движок не сильно любит, когда у зена меняется меш. А с барьером да, в зависимости от сюжета можно то включать, то отключать его.

И да, для Готики 1 не планируется такого плагина? Строго Готика Сиквел и Готика 2?
А зачем первой готике этот плагин?)

Укажи еще в примере пожалуйста значения по умолчанию для скриптовых функций для "стандартного" барьера как в Г1.
Daedalus:
В целом если ты ограничишься функцией Barrier_SetEnabled, то остальное подтянется по-умолчанию.
А если надо восстановить, то:
Barrier_SetColor(255, 255, 255);
Barrier_SetDamage(5);
Barrier_SetTexture1("BARRIERE.TGA");
Barrier_SetTexture2("BARRIERE.TGA");
Barrier_SetWarnFx(""); // В плагине эффект предупреждения вшит в код, поэтому при отсутствии имени он будет создавать его сам
Barrier_SetNextActivationTime(10 * 60 * 1000, 25 * 60 * 1000); // Вообще барьер в г1 вроде может быть скрыт от глаз до 25 минут
MagFrontier_ResetPoint(); // После сброса барьер принимает форму границ как в г1
 
Последнее редактирование:

Ur-tRall

Участник форума
Регистрация
16 Май 2009
Сообщения
4.100
Благодарности
2.123
Баллы
475
А зачем первой готике этот плагин?)
Как зачем? Вдруг будет мод до возведения барьера и потом понадобится возвести барьер над миром. Или наоборот реализовать взрыв магической руды, после которого барьер спадёт на 10 минут, кое кто выбежит из него. а потом снова восстановится в исконном виде или просто продлится как в рассказе Дикаря, охватив территорию Дракии и полей Бенгара.
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
Gratt,
Внедрил полноценно барьер в мод, вызываю функцией через init_world()
Barrier_SetEnabled(TRUE);
Barrier_SetDamage(100);
Первые две функции норм компилируются движком игры, с ними барьер норм работает, а следующая не хочет - требует запятую, хотя вроде синтаксис правильный.
Barrier_SetNextActivationTime(10 * 60 * 1000, 25 * 60 * 1000);
06:59 Fatal:-1 U: PAR: Expected ',' ( line 2258 ) .... <zParser.cpp,#599>

И кстати указываемое время в минутах реальное, или игровое?
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
Myxomop, а это float число, просчитай цифры руками по заданной формуле: 600000.0, 1500000.0
 

Fabiosek

Участник форума
Регистрация
17 Июн 2017
Сообщения
147
Благодарности
47
Баллы
190
In Gothic 1 there is SFX, which is called "WARNING". This sound is not used, but probably it was to be used when lightning marked a NPC.

Do you plan to add it? :D

==

EDIT: I checked this plugin and I noticed that the speed (barrier rotation) is higher than in the original Gothic. I compared it several times.

EDIT 2: I don't like when the barrier disappearing. Can you make the barrier not disappear at all?

I set it up like this and although I've reduced its disappearance, the barrier still disappears for a moment.

Barrier_SetNextActivationTime(0,0);
 
Последнее редактирование:

Auronen

Участник форума
Регистрация
5 Сен 2021
Сообщения
20
Благодарности
3
Баллы
45
Hello Gratt, Saturas,
is the source-code going to be available for this plugin also? It is throwing me this error and without source-code I cannot debug it myslef. :(
1638649247927.png

There is no stacktrace underneath, so I didn't include it.

Auronen
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
Auronen, remove the MAGICFRONTIER_OUT.MSH if you use this plugin for G2A. You only need the dll plugin from the .mod volume.
 

Auronen

Участник форума
Регистрация
5 Сен 2021
Сообщения
20
Благодарности
3
Баллы
45
Auronen, remove the MAGICFRONTIER_OUT.MSH if you use this plugin for G2A. You only need the dll plugin from the .mod volume.
Thank you for your fast response, I removed the compiled mesh, but there is the same problem, I am calling
Код:
Barrier_SetEnabled (TRUE);
from
Код:
INIT_WORLD ()
Am I suppose to use only the dll?
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
Auronen, use this file. Report me about this and give me a few minutes to update resources for better usability.
 

Вложения

  • MAGICFRONTIER_OUT.7z
    18 KB · Просмотры: 23

Auronen

Участник форума
Регистрация
5 Сен 2021
Сообщения
20
Благодарности
3
Баллы
45
I placed it in _work\Data\Meshes\_compiled and got the same error.
The game tries to load it, but fails on game start.
This was a zSpy output:
Код:
[w] 00:31 Warn: 0 D: z3d(zCMesh::LoadMSH): wrong mesh-file version, engine: 265, file: 9 .... <zMesh.cpp,#3092>
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
Auronen, or some vdf volume contains a similar file, or your game is not a Gothic II. If you don't want to search for this file in volumes, pack it in the vdf with the highest priority.
 

Auronen

Участник форума
Регистрация
5 Сен 2021
Сообщения
20
Благодарности
3
Баллы
45
Thank you, you were right, I had a redundant file there. Everything works great now.
Thank you very much *blush*
 
Последнее редактирование:

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
Auronen, thanks for the report.

Обновлено

Для вашего удобства модель барьера внутри тома поделена на две версии: MAGICFRONTIER_OUT_G1.MSH и MAGICFRONTIER_OUT_G2.MSH. Загрузка конкретной модели происходит самостоятельно, в зависимости от текущей версии движка. MAGICFRONTIER_OUT.MSH по прежнему может быть загружен, если отсутствует модель для конкретного движка.

Также теперь можно найти три установщика, подберите походящий в зависимости от предпочтений или спецификации мода:
1. zBarrierClassic
Данная версия плагина готова для работы с миром OldWorld. Просто укажите zBarrierClassic.mod в ini файле Вашего мода.

2. zBarrier
Данная версия плагина требует ручного включения барьера из скриптов. Используйте эту версию, если барьер необходим в нестандартных локациях или сценариях.

3. zBarrierDemo
Данная версия плагина является демонстрационной. После установки барьер будет появляться во всех модах, локациях, а также всегда будет виден.
 
Сверху Снизу