Новые сообщения · Участники · Правила форума · Поиск · RSS

Модератор форума: Mitrandir  
Форум » Моддинг BFME » Кодинг » Вопросы (Ответы на вопросы, касающиеся псевдокода BFME)
Вопросы
SauronGreat
Дата: Суббота, 08.06.2019, 22:02 | Сообщение # 2761
Магистр
Администраторы
Сообщений: 2778
Репутация: 270
Награды: 3
Offline
Да, забыл написать про хороший импортер - Enhanced W3D Importer. С ним можно будет не перезакащивать модель эльфов, т.к. он умеет импортировать с сохранением закостки (в окошке импортера надо поставить галку Auto-Bind). То есть надо будет просто импортировать модель, наложить текстуру на эльфа, на стрелу (на них как обычно) и на партикл FIREAROWTIP (об этом выше написал). И всё, можно экспортировать :]
Прикрепления: 2492280.png(2.5 Kb)


-Intel Core i7-2600k @4.5GHz;
-ASRock Z77 Pro3; 24GB DDR3-1866MHz (11-11-11-30 CR2);
-MSI RX460@RX560 2GB GDDR5 @1300\7500MHz 1.1V;
-SiliconPower P34A80 512GB + WD10EZRX 1TB;
-Корпус Inwin IW-S506; Cougar STE 500W PSU
 
Профиль Цитировать Изменить Удалить
klushtane
Дата: Суббота, 08.06.2019, 23:50 | Сообщение # 2762
Крестьянин
Проверенные пользователи
Сообщений: 40
Репутация: 0
Offline
Цитата SauronGreat ()
По дефолту огненные стрелы имеют текстуру exfiretorchseq.tga, можно сменить её в коде на свою (через строку Texture = дефолтная_текстура.tga новая_текстура.tga, которая прописывается в нужных ModelConditionState у юнита), где изменить цвет. Голубой вариант этой текстуры есть в rotwk, лежит под именем exfiretorchseqblue.tga


; --------- With Fire arrows Upgrade  ------------
ModelConditionState                = WEAPONSET_PLAYER_UPGRADE USER_4
Model                        = EUGaladhrim_SKN
Skeleton                    = RUElfWar_SKL
WeaponLaunchBone            = PRIMARY ARROW
WeaponLaunchBone            = SECONDARY ARROWNOCK    ; when upgraded to flaming arrow
;    ParticleSysBone                = FireArowTip arrowFire FollowBone:Yes
;    ParticleSysBone                = FireArowTip arrowFire FollowBone:Yes
End

Где здесь прописывать Texture = ? И какую лучше из этих выбрать (EXMinerLight.tga и EXLdrshpLvl2b.tga)?
У меня стоит 3DS Max 7 c W3D Importer by CoolLife. Сойдет?


Сообщение отредактировал klushtane - Воскресенье, 09.06.2019, 00:00
 
Профиль Цитировать Изменить Удалить
SauronGreat
Дата: Воскресенье, 09.06.2019, 00:13 | Сообщение # 2763
Магистр
Администраторы
Сообщений: 2778
Репутация: 270
Награды: 3
Offline
Просто вставить строку надо, вот так:

Код
; --------- With Fire arrows Upgrade  ------------
        ModelConditionState                = WEAPONSET_PLAYER_UPGRADE USER_4
            Model                        = EUGaladhrim_SKN
            Skeleton                    = RUElfWar_SKL
            Texture = exfiretorchseq.tga exfiretorchseqblue.tga
            WeaponLaunchBone            = PRIMARY ARROW
            WeaponLaunchBone            = SECONDARY ARROWNOCK    ; when upgraded to flaming arrow
        ;    ParticleSysBone                = FireArowTip arrowFire FollowBone:Yes
        ;    ParticleSysBone                = FireArowTip arrowFire FollowBone:Yes
        End


На EXMinerLight.tga и EXLdrshpLvl2b.tga просто так заменить текстуру не получится, там надо еще материал наложения менять в модели для смены анимации текстуры.
Для огненных стрел используется grid с раскадровкой - на текстуру exfiretorchseq.tga посмотрите и увидите там 16 отдельных кадров.
У звездных стрел отрисовка другая: используются две текстуры с определенным наложением друг на дружку, плюс одна из них заанимирована через rotate и, соответственно, вращается относительно другой, - создается эффект сияния.

Цитата
У меня стоит 3DS Max 7 c W3D Importer by CoolLife. Сойдет?


Лучше воспользоваться Enhanced - не придётся заново костить модель эльфов. Импортер от CoolLife не умеет сохранять закостку при импорте.


-Intel Core i7-2600k @4.5GHz;
-ASRock Z77 Pro3; 24GB DDR3-1866MHz (11-11-11-30 CR2);
-MSI RX460@RX560 2GB GDDR5 @1300\7500MHz 1.1V;
-SiliconPower P34A80 512GB + WD10EZRX 1TB;
-Корпус Inwin IW-S506; Cougar STE 500W PSU
 
Профиль Цитировать Изменить Удалить
klushtane
Дата: Воскресенье, 09.06.2019, 00:35 | Сообщение # 2764
Крестьянин
Проверенные пользователи
Сообщений: 40
Репутация: 0
Offline
FIREAROWTIP оказался не в моделе, а в скелете (RUElfWar_SKL). Не могу найти в Material Editor тех настроек, что у вас на фото:

В Stage 0 Mapping прописано:

Код
Speed=0..05; In Hertz. 1 = 1 rotate per second
UCenter=0.5
VCenter=0.5
UScale=1.0
VScale=1.0

В Stage 1 Mapping:

Код
Speed=-0.06; In Hertz. 1 = 1 rotate per second
UCenter=0.5
VCenter=0.5
UScale=1.0
VScale=1.0

Вот что у меня:



Извините. я новичок в 3ds max

Добавлено (09.06.2019, 11:18)
---------------------------------------------
И еще. Хочу сделать, что б в кампании добра в битве за Хельмовую Падь эльфы появлялись с улучшенными стрелами. Нужно редактировать map good helms deep.map, или только map.ini? И что именно редактировать?

Не могу найти exfiretorchseqblue.tga в ROTWK. Можеть отправить текстуру сюда?
Прикрепления: 8390716.png(423.4 Kb)


Сообщение отредактировал klushtane - Воскресенье, 09.06.2019, 11:28
 
Профиль Цитировать Изменить Удалить
SauronGreat
Дата: Вторник, 11.06.2019, 00:50 | Сообщение # 2765
Магистр
Администраторы
Сообщений: 2778
Репутация: 270
Награды: 3
Offline
Цитата klushtane ()
FIREAROWTIP оказался не в моделе, а в скелете (RUElfWar_SKL)

Найдите плоскость, она может немного отличаться по буквам от упомянутого названия, это не суть. Скрин, как выглядит, я скидывал.

Цитата klushtane ()
Не могу найти в Material Editor тех настроек, что у вас на фото:

Скачайте и установите BFME Mod SDK, там будут файлы для 3ds max. Их надо будет добавить в директорию программы, после чего станут доступны для наложения шейдеры игры, а также экспорт в .w3d. Накладывать надо материал "W3D" вместо "Standard".
В SDK, если что, есть документация с картинками, рекомендую ознакомиться. Про W3D-материал есть целый раздел (3DSMax Plugins->3DSMax W3D Materials).

Цитата klushtane ()
Нужно редактировать map good helms deep.map, или только map.ini

Можно и в самой карте прописать, можно и в map.ini. Проще второй вариант, добавить надо активацию соответствующего апгрейда:

Код
Object RohanElvenWarrior
  AddModule
    Behavior = GrantUpgradeCreate ModuleTag_SilverthornArrows
        UpgradeToGrant = Upgrade_RohanFireArrows
    End
  End
END


Цитата klushtane ()
Не могу найти exfiretorchseqblue.tga в ROTWK.

В Textures1.big лежит.


-Intel Core i7-2600k @4.5GHz;
-ASRock Z77 Pro3; 24GB DDR3-1866MHz (11-11-11-30 CR2);
-MSI RX460@RX560 2GB GDDR5 @1300\7500MHz 1.1V;
-SiliconPower P34A80 512GB + WD10EZRX 1TB;
-Корпус Inwin IW-S506; Cougar STE 500W PSU
 
Профиль Цитировать Изменить Удалить
rdsviktor
Дата: Пятница, 14.06.2019, 06:26 | Сообщение # 2766
Крестьянин
Проверенные пользователи
Сообщений: 11
Репутация: 0
Offline
Доброго дня, у меня возник такой вопрос. Я изменил количество коммандных очков для юнитов и столкнулся с проблемой в кампании как за зло, так и за добро. У примеру я сделал что 1 юнит стоит 1 очко и увеличил отряд до 15, тоесть отряд стоит 15 очков. Но вот в кампании за зло в 1 миссии надо набрать 100 уруков и сработает скрип, у меня по колличеству набралось как бы уже, а вот скрипт не запускается и ни энтов, ни армии рохана не запускается скрипт и никого нет. А в кампании за добро на миссии ривендела и вовсе при покупке отрядов вылетает. Можно ли как нибудь поменять условия этих миссий под мои изменения или вообще что-то сделать?
 
Профиль Цитировать Изменить Удалить
klushtane
Дата: Суббота, 15.06.2019, 21:16 | Сообщение # 2767
Крестьянин
Проверенные пользователи
Сообщений: 40
Репутация: 0
Offline
Правильно ли я все сделал? Нажимаю Assign Material to Selection - не накладывает текстуру. XMinerLight.dds и EXLdrshpLvl2b.dds не хотело накладывать; пришлось конвертировать с DDS в TGA. При экспорте какой тип файла выбрать W3D Asset (*.W3D) или Shockwave 3D Scene Export (*.W3D). И правильно ли я вообще экспортирую?
Прикрепления: 2580036.png(430.8 Kb) · 8460982.png(425.8 Kb) · 7603992.png(408.8 Kb) · 5474263.png(368.2 Kb) · 6943388.png(366.1 Kb)


Сообщение отредактировал klushtane - Воскресенье, 16.06.2019, 00:18
 
Профиль Цитировать Изменить Удалить
klushtane
Дата: Воскресенье, 16.06.2019, 03:01 | Сообщение # 2768
Крестьянин
Проверенные пользователи
Сообщений: 40
Репутация: 0
Offline
Проблему с отображением стрел решил. Визуальный эффект звездных стрел добавил. Но теперь не отображается визуальный эффект свечения Forged Blades. При экспорте пришлось убирать BOUNDINGBOX (Hide Selection) потому что появлялась ошибка. Можете расписать для клинков улучшенных параметры наложения текстур, как вы это сделали для стрел?
И еще вопрос: BOUNDINGBOX (странный ящик) для чего он?

P.S. При открытии уже измененной модели (eugaladhrim_skn) почему-то поменяли место расположения FIREAROWTIP (хотя в игре проблем нету) и FORGED_BLADE (визуальный эфект пропал).
Прикрепления: 6281190.png(387.8 Kb) · 9373826.png(387.8 Kb)


Сообщение отредактировал klushtane - Понедельник, 17.06.2019, 01:03
 
Профиль Цитировать Изменить Удалить
SauronGreat
Дата: Четверг, 20.06.2019, 23:28 | Сообщение # 2769
Магистр
Администраторы
Сообщений: 2778
Репутация: 270
Награды: 3
Offline
Цитата klushtane ()
Можете расписать для клинков улучшенных параметры наложения текстур, как вы это сделали для стрел?

Там всё проще: надо только указать в BlendMode 'Add', ну и цвет какой надо указать в Emissive (Ambient, Diffuse и Specular должны быть черными).
Цитата klushtane ()
При экспорте пришлось убирать BOUNDINGBOX (Hide Selection) потому что появлялась ошибка.

Какая ошибка была? Что выдавало?
Цитата klushtane ()
И еще вопрос: BOUNDINGBOX (странный ящик) для чего он?

Для удобного выделения юнитов в игре. Баундинг боксы считаются за геометрию. Перед экспортом их надо немного настроить: в W3D Tools выбрать пункт 'OBBox' вместо дефолтного 'Normal'. Также важно, чтобы баундинг бокс имел название BOUNDINGBOX.
Цитата klushtane ()
P.S. При открытии уже измененной модели (eugaladhrim_skn) почему-то поменяли место расположения FIREAROWTIP (хотя в игре проблем нету) и FORGED_BLADE (визуальный эфект пропал).

Если после экспорта проблем нет, то и не столь важно.


-Intel Core i7-2600k @4.5GHz;
-ASRock Z77 Pro3; 24GB DDR3-1866MHz (11-11-11-30 CR2);
-MSI RX460@RX560 2GB GDDR5 @1300\7500MHz 1.1V;
-SiliconPower P34A80 512GB + WD10EZRX 1TB;
-Корпус Inwin IW-S506; Cougar STE 500W PSU
 
Профиль Цитировать Изменить Удалить
SauronGreat
Дата: Четверг, 20.06.2019, 23:32 | Сообщение # 2770
Магистр
Администраторы
Сообщений: 2778
Репутация: 270
Награды: 3
Offline
Кстати, а на скриншотах у вас Windows 10? Каким образом получилось запустить 3Ds Max 7\8? Насколько знаю, на десятке имеются проблемы со старыми версиями макса.


-Intel Core i7-2600k @4.5GHz;
-ASRock Z77 Pro3; 24GB DDR3-1866MHz (11-11-11-30 CR2);
-MSI RX460@RX560 2GB GDDR5 @1300\7500MHz 1.1V;
-SiliconPower P34A80 512GB + WD10EZRX 1TB;
-Корпус Inwin IW-S506; Cougar STE 500W PSU
 
Профиль Цитировать Изменить Удалить
klushtane
Дата: Пятница, 21.06.2019, 00:50 | Сообщение # 2771
Крестьянин
Проверенные пользователи
Сообщений: 40
Репутация: 0
Offline
Цитата SauronGreat ()
Какая ошибка была? Что выдавало?


Ниже фото. В Geometry Options выбрал OBBox
Цитата SauronGreat ()
Кстати, а на скриншотах у вас Windows 10? Каким образом получилось запустить 3Ds Max 7\8? Насколько знаю, на десятке имеются проблемы со старыми версиями макса.


Да Windows 10. Не знаю у меня 8 Max. Проблем с установкой и запуском нету. Установил по этой инструкции:
Подробная инструкция по установке "Autodesk 3ds Max 8"
1. Установите 3ds max 8.0, при установке введите
S/N: 666-12345678, в типе лицензии выберите "Standalone".
2. После установки, перезапустите компьютер. Отключите Интернет, запустите Max 8,
при запросе активации, выберите "Activate the product", через некоторое
время откроется окно "Register Today",
Не закрывая это окно, запустите взлом (keygen) с компакт-диска. В keygen'е
введите в окне "Request Code:" те данные, которые указаны напротив "Request Code"
в окне "Register Today". Нажмите кнопку Calculate, если все правильно, то
в окне Auth Code появится код активации. Скопируйте его в буфер обмена или запишите.
В Окне "Register Today" выберите "Enter an Activation code" нажмите кнопку Next.
В открывшемся окне, выберите Country/Region (любой) и в поле "Enter activation code"
введите записанный (или скопированный в буфер обмена) код активации.
нажмите кнопку Next. Ecли вы все указали правильно, то в следующем окне будет написано
"Thank you for registering and activating your product.". Нажмите Finish.

Прикрепления: 1659135.png(271.7 Kb)


Сообщение отредактировал klushtane - Пятница, 21.06.2019, 23:29
 
Профиль Цитировать Изменить Удалить
SauronGreat
Дата: Суббота, 22.06.2019, 22:23 | Сообщение # 2772
Магистр
Администраторы
Сообщений: 2778
Репутация: 270
Награды: 3
Offline
Экспортируете в Shockwave 3D Scene Export? Надо в W3D Asset. И в настройках экспорта выбрать Hierarchical Model. В Export Using Existing Skeleton выбрать скелет эльфов (_skl). Галку на Smooth Vertex Normals Across Meshes оставить.


-Intel Core i7-2600k @4.5GHz;
-ASRock Z77 Pro3; 24GB DDR3-1866MHz (11-11-11-30 CR2);
-MSI RX460@RX560 2GB GDDR5 @1300\7500MHz 1.1V;
-SiliconPower P34A80 512GB + WD10EZRX 1TB;
-Корпус Inwin IW-S506; Cougar STE 500W PSU
 
Профиль Цитировать Изменить Удалить
klushtane
Дата: Суббота, 22.06.2019, 23:41 | Сообщение # 2773
Крестьянин
Проверенные пользователи
Сообщений: 40
Репутация: 0
Offline
Цитата SauronGreat ()
Экспортируете в Shockwave 3D Scene Export? Надо в W3D Asset. И в настройках экспорта выбрать Hierarchical Model. В Export Using Existing Skeleton выбрать скелет эльфов (_skl). Галку на Smooth Vertex Normals Across Meshes оставить.


Большое спасибо. Помогло

Вопрос по другой теме:
Добавлял уруков-скаутов из TDH. Но есть проблема с текстурой меча. Наверно упустил ее. не знаете как посмотреть какая именно текстура нужна. И еще урукам-арбалетчикам добавил способность Overdraw из того же TDH, но она не активируется. Иконка становится активной после улучшения, но сама способность не активируется.
Прикрепления: 7525856.png(758.4 Kb)


Сообщение отредактировал klushtane - Воскресенье, 23.06.2019, 00:00
 
Профиль Цитировать Изменить Удалить
klushtane
Дата: Воскресенье, 23.06.2019, 00:12 | Сообщение # 2774
Крестьянин
Проверенные пользователи
Сообщений: 40
Репутация: 0
Offline
Цитата SauronGreat ()
Там всё проще: надо только указать в BlendMode 'Add', ну и цвет какой надо указать в Emissive (Ambient, Diffuse и Specular должны быть черными).


Вот что получилось. Похоже я не добавил нужную текстуру. Какая текстуру нужно наложить? Ambient, Diffuse и Specular точно сделал черными.
Прикрепления: 3418929.png(821.9 Kb)


Сообщение отредактировал klushtane - Воскресенье, 23.06.2019, 00:13
 
Профиль Цитировать Изменить Удалить
SauronGreat
Дата: Воскресенье, 23.06.2019, 00:13 | Сообщение # 2775
Магистр
Администраторы
Сообщений: 2778
Репутация: 270
Награды: 3
Offline
Цитата klushtane ()
Но есть проблема с текстурой меча. Наверно упустил ее. не знаете как посмотреть какая именно текстура нужна.

Можно открыть модель W3DView'ом (BFME2 Mod SDK). Там есть кнопка 'Missing Textures', после нажатия появится окошко со всеми отсутствующими текстурами (вьювер, если что, находит текстуры строго в тех директориях, где лежит сама открытая модель).
Другой вариант: открыть модель любым текстовым редактором (блокнотом, например) и найти (Ctrl+F) там все упоминания .tga. Собственно, найдутся все названия текстур, наложенных на модель.
Таким же образом, кстати, можно искать параметры эффектов. Настройки для звёздных стрел я так и посмотрел на эльфийских моделях в бфме2.

Цитата
И еще урукам-арбалетчикам добавил способность Overdraw из того же TDH, но
она не активируется. Иконка становится активной после улучшения, но
сама способность не активируется.

Значит не всё нужное прописано. Насколько понимаю из описания, абилка активирует на 25 секунд специальный режим через условие, вместе с которым меняется оружие, ну а в оружии прописано опрокидывание пехоты. В WeaponSet прописывали блок?

Цитата klushtane ()
Вот что получилось. Похоже я не добавил нужную текстуру. Какая текстуру нужно наложить? Ambient, Diffuse и Specular точно сделал черными.

exlnzflar2.tga


-Intel Core i7-2600k @4.5GHz;
-ASRock Z77 Pro3; 24GB DDR3-1866MHz (11-11-11-30 CR2);
-MSI RX460@RX560 2GB GDDR5 @1300\7500MHz 1.1V;
-SiliconPower P34A80 512GB + WD10EZRX 1TB;
-Корпус Inwin IW-S506; Cougar STE 500W PSU
 
Профиль Цитировать Изменить Удалить
SauronGreat
Дата: Воскресенье, 23.06.2019, 00:28 | Сообщение # 2776
Магистр
Администраторы
Сообщений: 2778
Репутация: 270
Награды: 3
Offline
Цитата rdsviktor ()
Доброго дня, у меня возник такой вопрос. Я изменил количество коммандных очков для юнитов и столкнулся с проблемой в кампании как за зло, так и за добро. У примеру я сделал что 1 юнит стоит 1 очко и увеличил отряд до 15, тоесть отряд стоит 15 очков. Но вот в кампании за зло в 1 миссии надо набрать 100 уруков и сработает скрип, у меня по колличеству набралось как бы уже, а вот скрипт не запускается и ни энтов, ни армии рохана не запускается скрипт и никого нет. А в кампании за добро на миссии ривендела и вовсе при покупке отрядов вылетает. Можно ли как нибудь поменять условия этих миссий под мои изменения или вообще что-то сделать?


Да, скрипты легко изменить. Надо открыть карту кампании (лежит в Maps.big) и в разделе скриптов пошаманить. Там всё на понятном английском, разобраться несложно.
Карты кампаний начинаются с map evil или map good, если что. Если надо узнать точное название карты, то его можно узнать в data\ini\campaigns\mordorcampaign.ini (кампания тьмы) или data\ini\campaigns\gondorcampaign.ini (кампания света).

Вот, например, название карты вашей первой миссии:
Прикрепления: 0771151.png(52.9 Kb)


-Intel Core i7-2600k @4.5GHz;
-ASRock Z77 Pro3; 24GB DDR3-1866MHz (11-11-11-30 CR2);
-MSI RX460@RX560 2GB GDDR5 @1300\7500MHz 1.1V;
-SiliconPower P34A80 512GB + WD10EZRX 1TB;
-Корпус Inwin IW-S506; Cougar STE 500W PSU
 
Профиль Цитировать Изменить Удалить
rdsviktor
Дата: Воскресенье, 23.06.2019, 00:43 | Сообщение # 2777
Крестьянин
Проверенные пользователи
Сообщений: 11
Репутация: 0
Offline
SauronGreat, Спасибо большое. Разобрался))
 
Профиль Цитировать Изменить Удалить
klushtane
Дата: Воскресенье, 23.06.2019, 01:24 | Сообщение # 2778
Крестьянин
Проверенные пользователи
Сообщений: 40
Репутация: 0
Offline
Цитата SauronGreat ()
Значит не всё нужное прописано. Насколько понимаю из описания, абилка активирует на 25 секунд специальный режим через условие, вместе с которым меняется оружие, ну а в оружии прописано опрокидывание пехоты. В WeaponSet прописывали блок?


Да прописывал. Напишу что где я прописал.

в attributemodifier

;------------------------------------------------------------------------------
ModifierList DwarfKhazadGuardAxeThrowUSER_1
Category = WEAPON
Duration = 5000
ModelCondition = USER_1
End

ModifierList IsengardOverdraw
Category = WEAPON
Duration = 250000
;FX = FX_Overdraw
End

ModifierList IsengardCrossbowUSER_1
Category = WEAPON
Duration = 25000
ModelCondition = USER_1

в commandbutton

;------------------------------------------------------------------------------
CommandButton Command_PurchaseTechnologyIsengardSteelDrawstrings
Command                = PLAYER_UPGRADE
Options                = CANCELABLE
Upgrade                = Upgrade_TechnologyIsengardSteelDrawstrings
;NeededUpgrade        = Upgrade_TechnologyIsengardForgedBlades
TextLabel            = CONTROLBAR:PurchaseTechnologyIsengardSteelDrawstrings
ButtonImage            = UCIsengard_UpgradeSteelDrawstrings
ButtonBorderType    = UPGRADE
DescriptLabel        = CONTROLBAR:ToolTipPurchaseTechnologyIsengardSteelDrawstrings
Radial                = Yes
InPalantir            = Yes
;LacksPrerequisiteLabel        = TOOLTIP:LackTechnologyIsengardForgedBlades
End

CommandButton Command_PurchaseUpgradeIsengardSteelDrawstrings
Command                = OBJECT_UPGRADE
Options                = NEED_UPGRADE OK_FOR_MULTI_SELECT CANCELABLE
Upgrade                = Upgrade_IsengardSteelDrawstrings
NeededUpgrade        = Upgrade_TechnologyIsengardSteelDrawstrings
TextLabel            = CONTROLBAR:PurchaseUpgradeIsengardSteelDrawstrings
ButtonImage            = UCIsengard_UpgradeSteelDrawstrings
ButtonBorderType    = UPGRADE
DescriptLabel        = CONTROLBAR:ToolTipPurchaseUpgradeIsengardSteelDrawstrings
InPalantir            = Yes
LacksPrerequisiteLabel        = TOOLTIP:LackTechnologyIsengardSteelDrawstrings
End

CommandButton Command_IsengardCrossbowOverdraw
Command                = SPECIAL_POWER
SpecialPower            = SpecialAbilityCrossbowOverdraw
Options                = OK_FOR_MULTI_SELECT NEED_UPGRADE
NeededUpgrade        = Upgrade_IsengardSteelDrawstrings
TextLabel                = CONTROLBAR:SpecialAbilityIsengardOverdraw
ButtonImage                = UCIsengard_Overdraw
InvalidCursorName            = GenericInvalid
ButtonBorderType            = ACTION
DescriptLabel            = CONTROLBAR:ToolTipSpecialAbilityIsengardOverdraw
InPalantir                = Yes
AutoAbility                = Yes
PresetRange                = 50.0
LacksPrerequisiteLabel        = CONTROLBAR:ToolTipSpecialAbilityIsengardOverdrawLackUpgrade
;UnitSpecificSound            = LegolasSwitchToSword
;UnitSpecificSound2        = LegolasKnifeMode
End

в commandset

;------------------------------------------------------------------------------
CommandSet IsengardUrukCrossbowHordeCommandSet
1 = Command_Guard
2 = Command_ToggleFormationCrossbow
3 = Command_PurchaseUpgradeIsengardHeavyArmor
4 = Command_PurchaseUpgradeIsengardSteelDrawstrings
5 = Command_PurchaseUpgradeIsengardBasicTraining
6 = Command_IsengardCrossbowOverdraw
13 = Command_AttackMove
14 = Command_Stop
15 = Command_Guard
End

CommandSet IsengardFighterCrossbowComboHordeCommandSet
1 = Command_Guard
2 = Command_PurchaseUpgradeIsengardForgedBlades
3 = Command_PurchaseUpgradeIsengardHeavyArmor
4 = Command_PurchaseUpgradeIsengardSteelDrawstrings
5 = Command_PurchaseUpgradeIsengardBasicTraining
6 = Command_IsengardCrossbowOverdraw
13 = Command_AttackMove
14 = Command_Stop
15 = Command_Guard
End

CommandSet IsengardCrossbowPikemanComboHordeCommandSet
1 = Command_Guard
2 = Command_PurchaseUpgradeIsengardForgedBlades
3 = Command_PurchaseUpgradeIsengardHeavyArmor
4 = Command_PurchaseUpgradeIsengardSteelDrawstrings
5 = Command_PurchaseUpgradeIsengardBasicTraining
6 = Command_IsengardCrossbowOverdraw
13 = Command_AttackMove
14 = Command_Stop
15 = Command_Guard
End

CommandSet IsengardArmoryCommandSet
1    = Command_PurchaseTechnologyIsengardForgedBlades
2    = Command_PurchaseTechnologyIsengardHeavyArmor
3    = Command_PurchaseTechnologyIsengardFireArrows
4    = Command_PurchaseTechnologyIsengardSteelDrawstrings
5    = Command_PurchaseTechnologyIsengardBasicTraining
6    = Command_Sell
End

в fxlist

; =========================================
; ================ Uruk Crossbows ==================
; =========================================

FXList FX_Overdraw
ParticleSystem
Name = UrukCrossbowOverdraw
AttachToObject    = Yes
End

ParticleSystem
Name = UrukCrossbowOverdraw_2
AttachToObject    = Yes
End
End

FXList FX_SteelDrawstringsDeliver
Sound
Name = SteelDrawstringsUpgradeSound
End
ParticleSystem
Name = GondorDeliver
Offset = X:0.0 Y:0.0 Z:10.0
OrientToObject = Yes
End
End

в fxparticlesystem

; ---------------------------------------------
; --------------- Uruk Crossbows --------------
; ---------------------------------------------

; ............ Overdraw effects ..............
FXParticleSystem UrukCrossbowOverdraw
System
Priority = ALWAYS_RENDER
ParticleName = exlightmotes.tga
Lifetime = 3 3
SystemLifetime = 750
Size = 30 45
BurstDelay = 5 7
BurstCount = 3 8
End
Color = DefaultColor
Color1 = R:124 G:19 B:0 0
Color2 = R:255 G:200 B:200 0
Color3 = R:0 G:0 B:0 20
ColorScale = -1 1
End
Update = DefaultUpdate
SizeRate = 1 2
SizeRateDamping = 1 1
AngleZ = -100.0 100.0
AngularRateZ = -0.1 0.1
AngularDamping = 1 1
End
Physics = DefaultPhysics
VelocityDamping = 0.6 0.6
End
EmissionVelocity = OrthoEmissionVelocity
End
EmissionVolume = LineEmissionVolume
StartPoint = X:0 Y:0 Z:-12
EndPoint = X:0 Y:0 Z:12
End
Draw = DefaultDraw
End
End

FXParticleSystem UrukCrossbowOverdraw_2
System
Priority = ALWAYS_RENDER
ParticleName = exbarb.tga
SystemLifetime = 750
Lifetime = 10 10
SortLevel = 1
Size = 15 25
BurstCount = 1 1
End
Color = DefaultColor
Color1 = R:124 G:19 B:0 0
Color2 = R:200 G:145 B:145 0
Color3 = R:0 G:0 B:0 10
ColorScale = -1 1
End
Update = DefaultUpdate
SizeRate = 1 1
SizeRateDamping = 1 1
AngleZ = 0 7
AngularRateZ = -0.1 0.1
AngularDamping = 1 1
End
Physics = DefaultPhysics
Gravity = -0.01
VelocityDamping = 1 1
End
EmissionVelocity = OutwardEmissionVelocity
End
EmissionVolume = LineEmissionVolume
StartPoint = X:0 Y:0 Z:10
EndPoint = X:0 Y:0 Z:10
End
Draw = DefaultDraw
End
End

; Overdraw Projectile
FXParticleSystem OverDrawProjectile
System
Priority = WEAPON_TRAIL
Type = STREAK
ParticleName = dExPoisonProjectile.tga
Lifetime = 7 7
SortLevel = 1
Size = 1 2
BurstCount = 1 1
InitialDelay = 1 1
End
Color = DefaultColor
Color1 = R:100 G:10 B:10 0
Color2 = R:0 G:0 B:0 7
Color4 = R:32 G:32 B:32 0
End
Alpha = DefaultAlpha
End
Update = DefaultUpdate
SizeRate = -0.3 -0.3
SizeRateDamping = 0.85 0.9
End
Physics = DefaultPhysics
VelocityDamping = 0.93 0.94
End
EmissionVelocity = OrthoEmissionVelocity
End
EmissionVolume = LineEmissionVolume
StartPoint = X:7 Y:0 Z:0
EndPoint = X:8 Y:0 Z:0
End
Draw = StreakDraw
End
End

FXParticleSystem OverDrawProjectile_Head
System
Priority = ALWAYS_RENDER
ParticleName = exsparklight.tga
Lifetime = 50 50
SortLevel = 1
Size = 10 10
BurstCount = 3 3
IsGroundAligned = Yes
IsParticleUpTowardsEmitter = Yes
End
Color = DefaultColor
Color1 = R:89 G:29 B:30 0
Color2 = R:0 G:0 B:0 50
End
Alpha = DefaultAlpha
End
Update = DefaultUpdate
SizeRate = 1.2 1.2
SizeRateDamping = 1 1
AngleZ = -100.0 100.0
AngularRateZ = -0.1 0.1
AngularDamping = 1 1
End
Physics = DefaultPhysics
VelocityDamping = 1 1
End
EmissionVelocity = OrthoEmissionVelocity
End
EmissionVolume = PointEmissionVolume
End
Draw = DefaultDraw
End
End

в mappedimages

;------------------------------------------------------------------------------
MappedImage UCIsengard_UpgradeSteelDrawstrings
Texture = iamisc.tga
TextureWidth = 256
TextureHeight = 256
Coords = Left:0 Top:0 Right:64 Bottom:64
Status = NONE
End

MappedImage UCIsengard_Overdraw
Texture = iamisc.tga
TextureWidth = 256
TextureHeight = 256
Coords = Left:64 Top:0 Right:128 Bottom:64
Status = NONE
End

в evilfactionsubobjects

;------------------------------------------------------------------------------
Object UrukOverDrawArrow
; *** ART Parameters ***
Draw = W3DScriptedModelDraw ModuleTag_Draw
DefaultModelConditionState
Model = NONE
ParticleSysBone NONE OverDrawProjectile
ParticleSysBone NONE OverDrawProjectile_Head
End
End

Draw = W3DStreakDraw ModuleTag_Draw2
Length        = 15
Width        = 2
NumSegments    = 1                ; number of segements in the streak, increase for smoother line
Color        = R:255 G:255 B:255
Texture        = EXArrowStreak.tga
End

; *** AUDIO Parameters ***

; ***DESIGN parameters ***
EditorSorting     = SYSTEM

ArmorSet
Armor = NoArmor
End

VisionRange = 0.0

; *** ENGINEERING Parameters ***
KindOf = PROJECTILE NO_COLLIDE HIDE_IF_FOGGED
Body = ActiveBody ModuleTag_02
MaxHealth       = 100.0
End

Behavior = DestroyDie ModuleTag_03
;nothing
End

Behavior = BezierProjectileBehavior ModuleTag_04

FirstHeight = 9  ; Height of Bezier control points above highest intervening terrain
SecondHeight = 9
FirstPercentIndent = 20% ; Percentage of shot distance control points are placed
SecondPercentIndent = 90%
FlightPathAdjustDistPerSecond = 50 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag. (45 is default human speed)
GroundHitFX = FX_GondorArrowDeath
CurveFlattenMinDist = 100.0
End

Behavior = CreateObjectDie ModuleTag_06
DeathTypes = ALL
CreationList = OCL_EvilFactionShatteredArrowBits
End

Behavior = FXListDie ModuleTag_07
DeathTypes = ALL -CRUSHED -SPLATTED
DeathFX = FX_GondorArrowDeath
End

Geometry = Sphere
GeometryIsSmall = Yes
GeometryMajorRadius = 0.8
End

в soundeffects

;------------------------------------------------------------------------------
AudioEvent SteelDrawstringsUpgradeSound
Sounds      = iUpSteelDrawstrings
Limit         = 2
Volume      = 110
MinRange    = 500
MaxRange    = 1000
Type        = world shrouded everyone
SubmixSlider = SoundFX
End

в specialpower

;------------------------------------------------------------------------------
SpecialPower SpecialAbilityCrossbowOverdraw
Enum                = SPECIAL_SHIELD_BUBBLE
ReloadTime            = ISENGARD_URUKCROSSBOW_OVER_RELOADTIME
PublicTimer            = No
End

в upgrade

;------------------------------------------------------------------------------
Upgrade Upgrade_TechnologyIsengardSteelDrawstrings
DisplayName       = UPGRADE:IsengardSteelDrawstringsUpgrade
Type              = PLAYER
BuildCost        = 1400
BuildTime        = 30
ResearchSound    = CampOrcGenericBannerReady
End

Upgrade Upgrade_IsengardSteelDrawstrings
DisplayName       = UPGRADE:IsengardSteelDrawstringsUpgrade
Type              = OBJECT
Tooltip        = TOOLTIP:IsengardSteelDrawstrings
BuildCost        = 700
BuildTime        = 10
ResearchSound    = UpgradeFlamingArrows
UpgradeFX        = FX_SteelDrawstringsDeliver
End

в weapon

#define ISENGARD_URUKCROSSBOW_ACCURACY            80
#define ISENGARD_URUKCROSSBOW_SCATTER            20

#define ISENGARD_URUKCROSSBOW_OVER_DAMAGE            5
#define ISENGARD_URUKCROSSBOW_OVER_DURATION            25000
#define ISENGARD_URUKCROSSBOW_OVER_RELOADTIME            90000

;------------------------------------------------------------------------------
Weapon IsengardArcherBow         ; BALANCE Archer Weapon
AttackRange                = ISENGARD_URUKCROSSBOW_RANGE
LeechRangeWeapon            = Yes
WeaponSpeed                = 321         ; dist/sec
MinWeaponSpeed            = 61
MaxWeaponSpeed            = 481      ; dist/sec Upper limit on scaling, when attacking past nominal "max" range
FireFX = FX_RohanArcherBowWeapon
ScaleWeaponSpeed            = Yes ; Used for lob weapons, scales speed proportional to range
HitPercentage                = 100     ;When this weapon is used it will hit exactly 50% of the time.
ScatterRadius                = 16.0     ;When this weapon misses it can randomly miss by as much as this distance.
PreAttackRandomAmount     = 200     ; amount of additional preattack variance for archer type attacks only
DelayBetweenShots            = ISENGARD_URUKCROSSBOW_DELAYBETWEENSHOTS     ; time between shots, msec
PreAttackDelay            = ISENGARD_URUKCROSSBOW_PREATTACKDELAY     ; 733 is the prep time for archer.
PreAttackType                = PER_SHOT ; Do the delay each time we attack a new target
FiringDuration            = ISENGARD_URUKCROSSBOW_FIRINGDURATION         ; Duration of the archer firing shot is 500ms.
CanFireWhileMoving        = No
IsAimingWeapon            = Yes

AcceptableAimDelta        = 20    ; prevent twitchy reaiming in horde on horde
AntiAirborneVehicle        = Yes
AntiAirborneMonster        = Yes

CanBeDodged = Yes ; Will check for a DodgePercent on the target to have a second chance at failing HitPercent

ProjectileNugget                    ; Default arrow
ProjectileTemplateName    = EvilArrow
WarheadTemplateName       = IsengardArcherBowWarhead
ForbiddenUpgradeNames     = Upgrade_IsengardFireArrows
End

ProjectileNugget                    ; Fire arrow available from fire arrow upgrade
ProjectileTemplateName    = GoodFactionFireArrow
WarheadTemplateName       = IsengardArcherBowSteelWarhead
RequiredUpgradeNames      = Upgrade_IsengardSteelDrawstrings
End

End

;------------------------------------------------------------------------------
Weapon IsengardOverdrawBow        ; BALANCE Archer Weapon
AttackRange                = ISENGARD_URUKCROSSBOW_RANGE
LeechRangeWeapon            = Yes
WeaponSpeed                = 321         ; dist/sec
MinWeaponSpeed            = 61
MaxWeaponSpeed            = 481      ; dist/sec Upper limit on scaling, when attacking past nominal "max" range
FireFX = FX_RohanArcherBowWeapon
ScaleWeaponSpeed            = Yes ; Used for lob weapons, scales speed proportional to range
HitPercentage                = ISENGARD_URUKCROSSBOW_ACCURACY     ;When this weapon is used it will hit exactly 50% of the time.
ScatterRadius                = ISENGARD_URUKCROSSBOW_SCATTER     ;When this weapon misses it can randomly miss by as much as this distance.
PreAttackRandomAmount     = 200     ; amount of additional preattack variance for archer type attacks only
DelayBetweenShots            = ISENGARD_URUKCROSSBOW_DELAYBETWEENSHOTS     ; time between shots, msec
PreAttackDelay            = ISENGARD_URUKCROSSBOW_PREATTACKDELAY     ; 733 is the prep time for archer.
PreAttackType                = PER_SHOT ; Do the delay each time we attack a new target
FiringDuration            = ISENGARD_URUKCROSSBOW_FIRINGDURATION         ; Duration of the archer firing shot is 500ms.
CanFireWhileMoving        = No
IsAimingWeapon            = Yes

AcceptableAimDelta        = 20    ; prevent twitchy reaiming in horde on horde
AntiAirborneVehicle        = Yes
AntiAirborneMonster        = Yes

CanBeDodged = Yes ; Will check for a DodgePercent on the target to have a second chance at failing HitPercent

ProjectileNugget                    ; Default arrow
ProjectileTemplateName    = UrukOverDrawArrow
WarheadTemplateName       = IsengardArcherBowOverdrawWarhead
End

End

;-----------------------------------
Weapon IsengardArcherBowSteelWarhead
RadiusDamageAffects = ENEMIES
HitStoredTarget = Yes    ; Always hits initial target.
DamageNugget                        ; A basic Nugget that just does damage
Damage        = ISENGARD_URUKCROSSBOW_DAMAGE
DamageScalar            = 70% ANY +CAVALRY
Radius        = 0.0    ; HitStoredTarget means we hurt the person we launched at.  And nobody else.  So a miss hurts nobody.
DelayTime     = 0
DamageType    = PIERCE
DamageFXType  = EVIL_ARROW_PIERCE
DeathType     = NORMAL
End

DamageNugget                        ; A basic Nugget that just does damage
Damage        = ISENGARD_URUKCROSSBOW_OVER_DAMAGE
DamageScalar            = 70% ANY +CAVALRY
Radius        = 0.0    ; HitStoredTarget means we hurt the person we launched at.  And nobody else.  So a miss hurts nobody.
DelayTime     = 0
DamageType    = PIERCE
DamageFXType  = EVIL_ARROW_PIERCE
DeathType     = NORMAL
End
End

;-----------------------------------
Weapon IsengardArcherBowOverdrawWarhead
RadiusDamageAffects = ENEMIES
HitStoredTarget = Yes    ; Always hits initial target.
DamageNugget                        ; A basic Nugget that just does damage
Damage        = ISENGARD_URUKCROSSBOW_DAMAGE
DamageScalar            = 70% ANY +CAVALRY
Radius        = 0.0    ; HitStoredTarget means we hurt the person we launched at.  And nobody else.  So a miss hurts nobody.
DelayTime     = 0
DamageType    = PIERCE
DamageFXType  = EVIL_ARROW_PIERCE
DeathType     = NORMAL
End

DamageNugget                        ; A basic Nugget that just does damage
Damage        = ISENGARD_URUKCROSSBOW_OVER_DAMAGE
DamageScalar            = 70% ANY +CAVALRY
Radius        = 0.0    ; HitStoredTarget means we hurt the person we launched at.  And nobody else.  So a miss hurts nobody.
DelayTime     = 0
DamageType    = PIERCE
DamageFXType  = EVIL_ARROW_PIERCE
DeathType     = NORMAL
End

MetaImpactNugget                    ; A Nugget that throws things back with force
HeroResist            = 1
ShockWaveAmount        = 10.0 ;10.0
ShockWaveRadius        = 1
ShockWaveArc        = 30
ShockWaveTaperOff = 1
End
End

в scriptevents

<EventList Name="IsengardCrossbowHordeFunctions" Inherit="InfantryFunctions">
<EventHandler EventName="User1Achieved"    ScriptFunctionName="OnUrukCrossbowSpecialActivation"  DebugSingleStep="false"/>
</EventList>

в scripts.lua

function OnUrukCrossbowSpecialActivation(self)
ObjectDoSpecialPower(self, "SpecialAbilityCrossbowOverdraw" )
--ObjectHideSubObjectPermanently( self, "OBJECT04", true )
end

function OnIsengardArcherCreated(self)
ObjectHideSubObject( self, "ARROWNOCK", true )
ObjectHideSubObjectPermanently( self, "FIREAROWTIP", true )
end

Добавлено (23.06.2019, 01:41)
---------------------------------------------
в evilfactionunits

;------------------------------------------------------------------------------
;Isengard Archer Isengard Uruk Crossbow UrukHaiCrossbowman
Object IsengardUrukCrossbow
; *** ART Parameters ***

; This is required for garrisoned objects - please put in all objects.
ButtonImage = BIUrukPit_Crossbowmen
SelectPortrait         = UPIsenguard_UrukCrossbow

UpgradeCameo1           = Upgrade_FireArrows

Draw = W3DHordeModelDraw ModuleTag_01

OkToChangeModelColor = Yes

StaticModelLODMode = yes ; Will append M or L to the skin name depending on GameLOD

; specify options for static LODs
RandomTexture = iuurukcrossbw.tga 0 iuurukcrossbw.tga
RandomTexture = iuurukcrossbw2.tga 0 iuurukcrossbw.tga
RandomTexture = iuurukcrossbw3.tga 0 iuurukcrossbw.tga

; --------- With Bow ------------

DefaultModelConditionState
Model = iuurukcrsbw_skn
Skeleton = IUCrsbowmn_SKL
WeaponLaunchBone            =    PRIMARY B_CRSBOW
WeaponLaunchBone            =    SECONDARY B_CRSBOW    ; when upgraded to flaming arrow
End

; --------- With Bow Upgrade  ------------

ModelConditionState WEAPONSET_PLAYER_UPGRADE
Model = iuurukcrsbw_skn
WeaponLaunchBone            =    PRIMARY B_CRSBOW
WeaponLaunchBone            =    SECONDARY B_CRSBOW    ; when upgraded to flaming arrow
;ParticleSysBone    =    FireArowTip arrowFire FollowBone:Yes
;ParticleSysBone    =    FireArowTip arrowFire FollowBone:Yes
End

;-------- Default Idle animations -------
IdleAnimationState
StateName = STATE_Idle
Animation = IDLB
AnimationName        = IUCrsbowmn_IDLB
AnimationMode        = ONCE
AnimationPriority    = 14
AnimationSpeedFactorRange = 0.8 1.2
AnimationBlendTime  = 15
End
;*** Repeat IDLB because animation priorities will not choose same animation twice so it can alternate between first two mostly.
Animation = IDLB
AnimationName        = IUCrsbowmn_IDLB
AnimationMode        = ONCE
AnimationPriority    = 14
AnimationSpeedFactorRange = 0.8 1.2
AnimationBlendTime  = 15
End
Animation = IDLC
AnimationName        = IUCrsbowmn_IDLC
AnimationMode        = ONCE
AnimationPriority    = 4
AnimationSpeedFactorRange = 0.8 1.2
AnimationBlendTime  = 15
End
Animation = IDLD
AnimationName        = IUCrsbowmn_IDLD
AnimationMode        = ONCE
AnimationPriority    = 4
AnimationSpeedFactorRange = 0.8 1.2
AnimationBlendTime  = 15
End
Animation = IDLE
AnimationName        = IUCrsbowmn_IDLE
AnimationMode        = ONCE
AnimationPriority    = 4
AnimationSpeedFactorRange = 0.8 1.2
AnimationBlendTime  = 15
End
Animation = IDLF
AnimationName        = IUCrsbowmn_IDLF
AnimationMode        = ONCE
AnimationPriority    = 4
AnimationSpeedFactorRange = 0.8 1.2
AnimationBlendTime  = 15
End
Animation = IDLI
AnimationName        = IUCrsbowmn_IDLI
AnimationMode        = ONCE
AnimationPriority    = 1
AnimationSpeedFactorRange = 0.8 1.2
AnimationBlendTime  = 15
End
BeginScript
;                CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
End

;----------- Flying through air -------

AnimationState                        = PASSENGER
Animation                        = Wiggling
AnimationName                = IUCrsbowmn_FLLA
AnimationMode                = LOOP
End
End

AnimationState        = THROWN_PROJECTILE
Animation           = FLYA
AnimationName     = IUCrsbowmn_FLYA
AnimationMode     = LOOP
End
BeginScript
;                CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
End

AnimationState                        = FREEFALL
Animation                        = Wiggling
AnimationName                = IUCrsbowmn_FLYA
AnimationMode                = LOOP
AnimationSpeedFactorRange    = 0.5    0.5
AnimationBlendTime            = 5
End
End

AnimationState        = STUNNED_FLAILING
Animation           = StunFlail
AnimationName     = IUCrsbowmn_FLYA
AnimationMode      = LOOP
End
BeginScript
;                CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
End

;----------- Dying -------

AnimationState                    =    DYING SPLATTED
Animation                    =    Fire
AnimationName            =    IUCrsbowmn_LNDA
AnimationMode            =    ONCE
AnimationSpeedFactorRange = 0.7 1.3
End
EnteringStateFX = FX_SoldierHitGround
BeginScript
;                CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
End

AnimationState                    =    DYING AFLAME
Animation                    =    Fire
AnimationName            =    GUArcher_MFDA
AnimationSpeedFactorRange = 0.9 1.1
End
BeginScript
;                CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
End

AnimationState = DYING
Animation = Dying_1
AnimationName = IUCrsbowmn_DIEA
AnimationMode = ONCE
End
Animation = Dying_2
AnimationName = IUCrsbowmn_DIEB
AnimationMode = ONCE
End
Animation = Dying_3
AnimationName = IUCrsbowmn_DIEC
AnimationMode = ONCE
End
Animation = Dying_4
AnimationName = IUCrsbowmn_DIED
AnimationMode = ONCE
End
Animation = Dying_5
AnimationName = IUCrsbowmn_DIEE
AnimationMode = ONCE
End
Animation = Dying_2
AnimationName = IUCrsbowmn_DIEF
AnimationMode = ONCE
End
BeginScript
;                CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
End

;---------- Stunned on ground -------

AnimationState        = STUNNED_STANDING_UP
Animation           = GTPA
AnimationName     = IUCrsbowmn_GTPA
AnimationMode     = ONCE
AnimationSpeedFactorRange = 1.5 1.5
End
BeginScript
;            CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
End

AnimationState        = STUNNED
Animation           = LNDA
AnimationName     = IUCrsbowmn_LNDA
AnimationMode     = ONCE
End
BeginScript
CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
End

;----------- Climbing -------

AnimationState = MOVING CLIMBING BACKING_UP
Animation = Climbing_Down
AnimationName = IUCrsbowmn_CLMA
AnimationMode = LOOP_BACKWARDS
AnimationSpeedFactorRange = 2.0 2.0
End
BeginScript
CurDrawableHideSubObject("arrownock")
;            CurDrawableShowSubObject("Box01")
EndScript
End

AnimationState = MOVING CLIMBING
Animation = Climbing_Up
AnimationName = IUCrsbowmn_CLMA
AnimationMode = LOOP
AnimationSpeedFactorRange = 2.0 2.0
End
BeginScript
CurDrawableHideSubObject("arrownock")
;            CurDrawableShowSubObject("Box01")
EndScript
End

; --------- Click and Hit Reactions ------------
AnimationState = HIT_REACTION HIT_LEVEL_1
Animation = Hit_Level_1_a
AnimationName = IUCrsbowmn_HITA
AnimationMode = ONCE
End
Animation = Hit_Level_1_b
AnimationName = IUCrsbowmn_HITB
AnimationMode = ONCE
End
BeginScript
CurDrawableHideSubObject("arrownock")
;            CurDrawableShowSubObject("Box01")
EndScript
End

AnimationState = HIT_REACTION HIT_LEVEL_2
Animation = Hit_Level_2_a
AnimationName = IUCrsbowmn_HITE
AnimationMode = ONCE
End
BeginScript
CurDrawableHideSubObject("arrownock")
;            CurDrawableShowSubObject("Box01")
EndScript
End

;;========= TERROR
AnimationState                    = MOVING EMOTION_TERROR EMOTION_LOOK_TO_SKY
Animation                    = TerrorFromTheSky
AnimationName            = IUCrsbowmn_RUND
AnimationMode            = LOOP
End
BeginScript
;                CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
End

AnimationState = MOVING EMOTION_TERROR
;            Animation = Moving
;                AnimationName = IUCrsbowmn_RUNC
;                AnimationMode = LOOP
;            End
Animation = RUND
AnimationName = IUCrsbowmn_RUND
AnimationMode = LOOP
End
Flags = RANDOMSTART
ParticleSysBone = None InfantryDustTrails
BeginScript
;                CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
End

;;========= BACKING UP

; frightened walking backwards (about to get smashed)
AnimationState = MOVING BACKING_UP
Animation = Backing_Up
AnimationName = IUCrsbowmn_BAKA
AnimationMode = LOOP
End
BeginScript
;            CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
End

;;========= MOVING

AnimationState = MOVING
Animation = Moving
AnimationName = IUCrsbowmn_RUNA
AnimationMode = LOOP
End
Animation = Moving_2
AnimationName = IUCrsbowmn_RUNB
AnimationMode = LOOP
End
Flags = RANDOMSTART
ParticleSysBone = None InfantryDustTrails
BeginScript
;            CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
End

;------- Old Style Archery --------------------------------------------
;Note: Crossbow animations are not appropriate for using the new animation system.
;      The ready state is actually an aiming pose and they just simply shoot while
;      firing. The reloading state simply continues the firing state.

AnimationState = PREATTACK_A
Animation = IDLA
AnimationName = IUCrsbowmn_IDLA
AnimationMode = ONCE
UseWeaponTiming    = Yes
AnimationBlendTime = 8
End
BeginScript
CurDrawableShowSubObject("arrownock")
;            CurDrawableHideSubObject("Box01")
EndScript
End
AnimationState = FIRING_OR_RELOADING_A
StateName = STATE_Firing
Animation = ATKA
AnimationName = IUCrsbowmn_ATKA
AnimationMode = ONCE
UseWeaponTiming    = Yes
AnimationBlendTime = 0
End
FrameForPristineBonePositions = 0
BeginScript
Prev = CurDrawablePrevAnimationState()
CurDrawableShowSubObject("arrownock")
;            CurDrawableShowSubObject("Box01")
EndScript
End

;-emotions--
; Must go before selected so we don't become unafraid.
AnimationState                    = EMOTION_AFRAID UNCONTROLLABLE
Animation                    = FERA
AnimationName            = IUCrsbowmn_FERA
AnimationMode            = LOOP
End
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_Firing" then CurDrawableAllowToContinue() return end
;        CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
End

AnimationState                    = EMOTION_UNCONTROLLABLY_AFRAID
Animation                    = FERA
AnimationName            = IUCrsbowmn_FERA
AnimationMode            = LOOP
End
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_Firing" then CurDrawableAllowToContinue() return end
;        CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
End

AnimationState        = ATTACKING
Animation           = IdleAttackComesFrom
AnimationName     = IUCrsbowmn_IDLA
AnimationMode     = LOOP
End
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_Firing" then CurDrawableAllowToContinue() return end
;            CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
End

AnimationState                            = EMOTION_AFRAID
Animation                            = FERA
AnimationName                    = IUCrsbowmn_FERA
AnimationMode                    = LOOP
End
Flags = RANDOMSTART
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_Firing" then CurDrawableAllowToContinue() return end
;            CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
End
AnimationState                            = EMOTION_TAUNTING
Animation                            = TNTA
AnimationName                    = IUCrsbowmn_TNTA
AnimationSpeedFactorRange        = 0.8 1.2
AnimationMode                    = ONCE
End
Animation                            = TNTB
AnimationName                    = IUCrsbowmn_TNTB
AnimationSpeedFactorRange        = 0.8 1.2
AnimationMode                    = ONCE
End
Flags                                = RANDOMSTART RESTART_ANIM_WHEN_COMPLETE
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_Firing" then CurDrawableAllowToContinue() return end
;            CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
End

;----------- pointing emotion ----------
; idles thrown in to break up the monotony
AnimationState                            = EMOTION_POINTING
Animation                            = Pointing1

AnimationName                    = IUCrsbowmn_PNTA
AnimationMode                    = ONCE
AnimationPriority    = 10
End
Animation = IDLD
AnimationName        = IUCrsbowmn_IDLD
AnimationMode        = ONCE
AnimationPriority    = 2
AnimationSpeedFactorRange = 0.8 1.2
End
Animation                            = Pointing1
AnimationName                    = IUCrsbowmn_PNTB
AnimationMode                    = ONCE
AnimationPriority    = 8
End
Animation = IDLE
AnimationName        = IUCrsbowmn_IDLE
AnimationMode        = ONCE
AnimationPriority    = 1
AnimationSpeedFactorRange = 0.8 1.2
AnimationPriority    = 4
End
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_Firing" then CurDrawableAllowToContinue() return end
;            CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
Flags                = RESTART_ANIM_WHEN_COMPLETE
End
AnimationState                            = EMOTION_CELEBRATING
Animation                            = CHRA
AnimationName                    = IUCrsbowmn_CHRA
AnimationMode                    = ONCE
AnimationBlendTime                = 10
End
Animation                            = CHRB
AnimationName                    = IUCrsbowmn_CHRB
AnimationMode                    = ONCE
AnimationBlendTime                = 10
End
Animation                            = TNTA
AnimationName                    = IUCrsbowmn_TNTA
AnimationMode                    = ONCE
AnimationBlendTime                = 10
End
Flags                = RANDOMSTART RESTART_ANIM_WHEN_COMPLETE
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_Firing" then CurDrawableAllowToContinue() return end
;            CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
End

AnimationState                            = EMOTION_ALERT
Animation                            = ALERT
AnimationName                    = IUCrsbowmn_IDLA
AnimationMode                    = LOOP
End
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_Firing" then CurDrawableAllowToContinue() return end
;            CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
End

AnimationState        = ENGAGED SELECTED
Animation           = ALERT_1
AnimationName     = IUCrsbowmn_IDLA
AnimationMode     = LOOP
End
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_Firing" then CurDrawableAllowToContinue() return end
;            CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
End

AnimationState = SELECTED
Animation = ATNB
AnimationName = IUCrsbowmn_ATNB
AnimationMode = LOOP
AnimationBlendTime = 20
End
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_Firing" then CurDrawableAllowToContinue() return end
;            CurDrawableHideSubObject("Box01")
CurDrawableShowSubObject("arrownock")
EndScript
End

AnimationState = WEAPONSET_PLAYER_UPGRADE
StateName = STATE_Idle
Animation = IDLE
AnimationName        = IUCrsbowmn_IDLA
AnimationMode        = ONCE
AnimationPriority    = 20
AnimationSpeedFactorRange = 0.8 1.2
AnimationBlendTime  = 15
End
Animation = IDLF
AnimationName        = IUCrsbowmn_IDLB
AnimationMode        = ONCE
AnimationPriority    = 20
AnimationSpeedFactorRange = 0.8 1.2
AnimationBlendTime  = 15
End
Flags                = RESTART_ANIM_WHEN_COMPLETE
BeginScript
CurDrawableShowSubObject("arrownock")
EndScript
End

AnimationState = WAR_CHANT
Animation                            = ALERT
AnimationName                    = IUCrsbowmn_IDLA
AnimationMode                    = LOOP
End
BeginScript
CurDrawableSetTransitionAnimState("theRealWarChant")
EndScript
End

TransitionState = theRealWarChant
Animation = Chant
AnimationName = IUCrsbowmn_CHRA
AnimationMode = ONCE
End
Animation = Chant2
AnimationName = IUCrsbowmn_CHRB
AnimationMode = ONCE
End
End

End

; ***DESIGN parameters ***
Side = Isengard
EditorSorting = UNIT
ThreatLevel = 1.0
ThingClass = HORDE_UNIT
EmotionRange = 240
CommandPoints = 3

TransportSlotCount = 1
; WeaponSet
; Conditions = WEAPONSET_TOGGLE_1
; Weapon = PRIMARY    IsengardOverdrawBow

; OnlyAgainst = SECONDARY CAVALRY MONSTER HERO
; AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
; End

WeaponSet
Conditions = None
Weapon = PRIMARY    IsengardArcherBow
Weapon = SECONDARY    IsengardOverdrawBow
AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
AutoChooseSources    = SECONDARY NONE
End

ArmorSet
Conditions      = None
Armor           = ArcherArmor
DamageFX        = NormalDamageFX
End
ArmorSet
Conditions      = PLAYER_UPGRADE
Armor           = ArcherHeavyArmor
DamageFX        = NormalDamageFX
End

; This is required so that the build phase lasts as long as the anim.
BuildFadeInOnCreateTime = 0 ;1.5 ;temporarily set to 0

CommandSet IsengardUrukCrossbowCommandSet

ShroudClearingRange = SHROUD_CLEAR_STANDARD
VisionRange = ISENGARD_URUKCROSSBOW_VISION_RANGE

BountyValue = ISENGARD_URUKCROSSBOW_BOUNTY_VALUE
DisplayName = OBJECT:IsengardArcher
CrushableLevel = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
CrusherLevel = 0 ;What can I crush?: 0 = small animals, 1 = infantry, 2 = trees, 3 = vehicles
CrushRevengeWeapon = RangedInfantryCrushRevenge

; *** AUDIO Parameters ***;

VoiceAmbushed                = UrukCrossbowmanVoiceAmbushed
VoiceAttack                = UrukCrossbowmanVoiceAttack
VoiceAttackAir                 = UrukCrossbowmanVoiceAttack
VoiceAttackAir2                = OrcVoiceAttack2
VoiceAttack2                = OrcVoiceAttack2
VoiceAttackCharge            = UrukCrossbowmanVoiceAttackCharge
VoiceAttackStructure            = UrukCrossbowmanVoiceAttackBuilding
VoiceAttackMachine            = UrukCrossbowmanVoiceAttack
VoiceCreated                = CampOrcCreateUrukCrossbow
VoiceFullyCreated             = CampOrcCreateUrukCrossbow
VoiceMove                = UrukCrossbowmanVoiceMove
VoiceMove2                = OrcVoiceMove2
VoiceMoveToCamp                = UrukCrossbowmanVoiceMoveCamp
VoiceMoveWhileAttacking            = UrukCrossbowmanVoiceDisengage
VoicePriority                = 50
VoiceRetreatToCastle            = UrukCrossbowmanVoiceRetreat
VoiceSelect                = UrukCrossbowmanVoiceSelect
VoiceSelect2                = UrukCrossbowmanVoiceSelect2
VoiceSelectBattle            = UrukCrossbowmanVoiceSelectBattle
VoiceGuard            = UrukCrossbowmanVoiceMove

VoiceEnterStateAttack            = UrukCrossbowmanVoiceEnterStateAttack
VoiceEnterStateAttackCharge        = UrukCrossbowmanVoiceEnterStateAttackCharge
VoiceEnterStateAttackStructure        = UrukCrossbowmanVoiceEnterStateAttackBuilding
VoiceEnterStateAttackMachine        = UrukCrossbowmanVoiceEnterStateAttackBuilding
VoiceEnterStateMove            = UrukCrossbowmanVoiceEnterStateMove
VoiceEnterStateMoveToCamp        = UrukCrossbowmanVoiceEnterStateMoveCamp
VoiceEnterStateMoveWhileAttacking    = UrukCrossbowmanVoiceEnterStateDisengage
VoiceEnterStateRetreatToCastle        = UrukCrossbowmanVoiceEnterStateRetreat

SoundImpact                = ImpactHorse

UnitSpecificSounds
VoiceGarrison            = UrukCrossbowmanVoiceGarrison
VoiceEnterUnitSlaughterHouse    = UrukCrossbowmanVoiceGarrisonSlaughterHouse
End

EvaEventDamagedOwner            = UnitUnderAttack         ;Eva event to trigger when unit is damaged
;EvaEventDieOwner            = GroupUrukCrossbowmanDie    ;Eva event to trigger on unit's death. NOTICE THAT this is only for permanent deaths
;For deaths you can respawn from, use the DeathFX

Behavior = LargeGroupAudioUpdate ModuleTag_LGAU                ;Tie into LargeGroupAudio system
Key = UrukHai_Crossbowman
End

ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior
MaxUpdateRangeCap = 800
AnimationSound = Sound:BodyFallOrc            Animation:IUCrsbowmn_SKL.IUCrsbowmn_DIEA        Frames:23
AnimationSound = Sound:BodyFallOrc            Animation:IUCrsbowmn_SKL.IUCrsbowmn_DIEB        Frames:29
AnimationSound = Sound:BodyFallOrc            Animation:IUCrsbowmn_SKL.IUCrsbowmn_DIEC        Frames:76
AnimationSound = Sound:BodyFallOrc            Animation:IUCrsbowmn_SKL.IUCrsbowmn_DIED        Frames:38
AnimationSound = Sound:BodyFallOrc            Animation:IUCrsbowmn_SKL.IUCrsbowmn_DIEE        Frames:57
AnimationSound = Sound:BodyFallOrc            Animation:IUCrsbowmn_SKL.IUCrsbowmn_LNDA        Frames:4
End

; *** ENGINEERING Parameters ***

RadarPriority = UNIT
KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY PATH_THROUGH_EACH_OTHER CAN_USE_SIEGE_TOWER SCORE THROWN_OBJECT URUK ARCHER ATTACK_NEEDS_LINE_OF_SIGHT GRAB_AND_DROP

Body = ActiveBody ModuleTag_02
CheerRadius       = EMOTION_CHEER_RADIUS
MaxHealth         = ISENGARD_URUKCROSSBOW_HEALTH                ;BALANCE Isengard Crossbowman Health
MaxHealthDamaged  = ISENGARD_URUKCROSSBOW_HEALTH_DAMAGED
;RecoveryTime      = ISENGARD_URUKCROSSBOW_HEALTH_RECOVERY_TIME
End

; Fire arrow upgrade
Behavior = WeaponSetUpgrade ModuleTag_WeaponSetUpgradeTag
TriggeredBy = Upgrade_IsengardSteelDrawstrings
End

Behavior = SubObjectsUpgrade FireArrows_Upgrade
TriggeredBy        = Upgrade_IsengardSteelDrawstrings
;ShowSubObjects    = FireArowTip ArrowNock            ; yes, it's a typo.
;HideSubObjects    = arrow
End

Behavior = SpecialPowerModule ModuleTag_OverUser_1
SpecialPowerTemplate      = SpecialAbilityCrossbowOverdraw
UpdateModuleStartsAttack  = No
AttributeModifier = IsengardCrossbowUSER_1
AttributeModifierAffectsSelf = Yes
AttributeModifierAffects = NONE +IsengardUrukCrossbow
AttributeModifierFX = None
End

; Overdraw module
Behavior = WeaponModeSpecialPowerUpdate ModuleTag_SwitchToWeaponset1
SpecialPowerTemplate    = SpecialAbilityCrossbowOverdraw
Duration                = 25000 ;ISENGARD_URUKCROSSBOW_OVER_DURATION
AttributeModifier        = IsengardOverdraw
LockWeaponSlot            = SECONDARY
;WeaponSetFlags            = WEAPONSET_TOGGLE_1
StartsPaused            = No
;InitiateSound             = AragornBladeMaster        ;this doesn't work
End

;Heavy Armor
Behavior = ArmorUpgrade ArmorUpgradeModuleTag
TriggeredBy = Upgrade_IsengardHeavyArmor
ArmorSetFlag            = PLAYER_UPGRADE
End

Behavior = SubObjectsUpgrade Armor_Upgrade
TriggeredBy        = Upgrade_IsengardHeavyArmor
UpgradeTexture    = iuurukcrossbw.tga 0 iuurukcrossbw_ha.tga
UpgradeTexture    = iuurukcrossbw2.tga 0 iuurukcrossbw_ha2.tga
UpgradeTexture    = iuurukcrossbw3.tga 0 iuurukcrossbw_ha4.tga
RecolorHouse            = Yes
ExcludeSubobjects        = Forged_Blade
End

Behavior = HitReactionBehavior HitReactionBehaviorModuleTag
HitReactionLifeTimer1 = 2800 ; level 1 (light  damage)  hit reaction animations in ms
HitReactionLifeTimer2 = 3600 ; level 2 (medium damage)  hit reaction animations in ms

HitReactionThreshold1 = 0.0   ; level 1 (light  damage) threshold trigger
HitReactionThreshold2 = 50.0  ; level 2 (medium damage) threshold trigger
End

Behavior = AIUpdateInterface ModuleTag_03
AutoAcquireEnemiesWhenIdle    =    Yes ATTACK_BUILDINGS
CanAttackWhileContained        =    Yes
AILuaEventsList                =    IsengardArcherFunctions
MaxCowerTime                =    5000
MinCowerTime                =    3000
AttackPriority                =     AttackPriority_Archer
End

LocomotorSet
Locomotor   = HumanLocomotor
Condition   = SET_NORMAL
Speed       = NORMAL_EVIL_FAST_MEMBER_SPEED
End

Behavior = PhysicsBehavior ModuleTag_04
GravityMult = 1.0
ShockStandingTime = 1200    ;msec
End

;  Behavior = StealthUpdate ModuleTag_Stealth
;    StealthDelay                = 0 ; msec
;    StealthForbiddenConditions  = ATTACKING
;    HintDetectableConditions    = IS_FIRING_WEAPON
;    FriendlyOpacityMin          = 10.0%
;    FriendlyOpacityMax          = 60.0%
;    PulseFrequency              = 750   ; msec
;    OrderIdleEnemiesToAttackMeUponReveal  = Yes
;    StartsActive                = No
;    InnateStealth                = No
; End

Behavior = SlowDeathBehavior ModuleTag_05
DeathTypes = ALL -KNOCKBACK
SinkDelay = 3000
SinkRate = 1.40     ; in Dist/Sec
DestructionDelay = 8000
Sound = INITIAL UrukVoiceDie            ;UrukCrossbowmanVoiceDie
End

Behavior = SquishCollide ModuleTag_06
;nothing
End

Behavior = SlowDeathBehavior ModuleTag_07
; Same as normal death, but no sound (sound already played by SoundImpact = ... )
DeathTypes = NONE +KNOCKBACK
SinkDelay = 3000
SinkRate = 1.40     ; in Dist/Sec
DestructionDelay = 8000
Sound = INITIAL UrukVoiceDie
End

; IsengardUrukCrossbow
Behavior = HordeMemberCollide ModuleTag_HMC
;nothing
End

Behavior = BezierProjectileBehavior ModuleTag_08 ; Module starts asleep, and wakes up when thrown.
;
FirstHeight = 24  ; Height of Bezier control points above highest intervening terrain
SecondHeight = 24
FirstPercentIndent = 30% ; Percentage of shot distance control points are placed
SecondPercentIndent = 70%
TumbleRandomly = Yes

CrushStyle = Yes ; I don't detonate, I just hit
DieOnImpact = Yes
BounceCount = 1   ; When I hit the ground, I'll arc again
BounceDistance = 40 ; this far
BounceFirstHeight = 24  ; Height of Bezier control points above highest intervening terrain
BounceSecondHeight = 24
BounceFirstPercentIndent = 20% ; Percentage of shot distance control points are placed
BounceSecondPercentIndent = 80%

GroundHitFX       = FX_ThrownRockGroundHit
GroundBounceFX    = FX_ThrownRockBounceHit
End

Geometry = CYLINDER
GeometryMajorRadius = 8.0
GeometryMinorRadius = 8.0
GeometryHeight = 19.2
GeometryIsSmall = Yes
Shadow = SHADOW_DECAL
ShadowSizeX = 19;
ShadowSizeY = 19;
ShadowTexture = ShadowI;
End

Добавлено (23.06.2019, 01:43)
---------------------------------------------
Аналогические изменения в evilfactionhordes, но текс очень большой.



Сообщение отредактировал klushtane - Воскресенье, 23.06.2019, 01:41
 
Профиль Цитировать Изменить Удалить
klushtane
Дата: Воскресенье, 23.06.2019, 02:34 | Сообщение # 2779
Крестьянин
Проверенные пользователи
Сообщений: 40
Репутация: 0
Offline
Цитата SauronGreat ()
exlnzflar2.tga

Слишком сильный свет
Прикрепления: 8964690.png(823.9 Kb)
 
Профиль Цитировать Изменить Удалить
SauronGreat
Дата: Воскресенье, 23.06.2019, 19:01 | Сообщение # 2780
Магистр
Администраторы
Сообщений: 2778
Репутация: 270
Награды: 3
Offline
Насчет абилки: попробуйте сделать её на основе ядовитого оружия гоблинов из бфме2. Здесь как-то странно реализовано с локом на secondary-слот, да скрипты еще зачем-то прописаны. Достаточно просто прописать активацию какого-либо условия для оружия (WEAPONSET_TOGGLE_1, например, как у гоблинов с ядовитым оружием) на время работы абилки, и всё.
И да, используйте тег 'код' для кусков кода, чтобы не растягивать страницу. Иники юнитов вообще лучше прикреплять отдельным файлом в .ini или .txt

Чтобы у эльфов улучшение клинков так сильно не светилось, надо цвет emissive сделать потемнее. Не белый, а серый, например. Еще можно в BlendMode вместо 'Add' использовать 'Screen', - он тоже осветляет, но не так интенсивно, как 'Add'.


-Intel Core i7-2600k @4.5GHz;
-ASRock Z77 Pro3; 24GB DDR3-1866MHz (11-11-11-30 CR2);
-MSI RX460@RX560 2GB GDDR5 @1300\7500MHz 1.1V;
-SiliconPower P34A80 512GB + WD10EZRX 1TB;
-Корпус Inwin IW-S506; Cougar STE 500W PSU
 
Профиль Цитировать Изменить Удалить
Форум » Моддинг BFME » Кодинг » Вопросы (Ответы на вопросы, касающиеся псевдокода BFME)
Поиск: