Допустим, я вывожу на экран сообщение, которое содержит в себе имя расы игрока (не само имя, а именно название константы).
Делаю я это через if:
local player p = Player( 0 )
if ( GetPlayerRace( Player( p ) ) == RACE_HUMAN ) then
call DisplayTimedTextToPlayer( p, 0, 0, 5, "RACE_HUMAN" )
elseif ......................
А если, к примеру, мне нужно получить не просто имя расы, а еще и цвет игрока, то в каждый такой if я добавляю еще 12 if'ов:
local player p = Player( 0 )
if ( GetPlayerRace( Player( p ) ) == RACE_HUMAN ) then
if ( GetPlayerColor( Player( p ) ) == PLAYER_COLOR_RED ) then
call DisplayTimedTextToPlayer( p, 0, 0, 5, "RACE_HUMAN, PLAYER_COLOR_RED" )
elseif ......................
И так далее. Конечно, можно и в таком виде все оставить, еще можно повозиться с хэш-таблицей, но нет ли простого способа взять эти самые RACE_HUMAN и PLAYER_COLOR_RED и сразу представить в виде строки?
После этого иконка строительства у ночных эльфов пропадёт, но меню по-прежнему можно будет открыть триггерно. Аналогично для других рас.
Вообще, лучше всего делать так со строителями Альянса и Нежити, т. к. рабам и светлячкам не получится назначить очередь строительства (способности не будут нажиматься в то время, когда работник находится "внутри" здания".
Сделать способность на основе "превратиться в медведя" (нормальная форма - нормальный работник, альтернативная - работник с дополнительным списком построек). Для превращения в альтернативного работника - иконка доп. построек, позиция 1,2. Для превращения обратно в нормальный облик - иконка обычных построек, позиция 0,2.
Дать нормальному работнику способность-пустышку без указания цели (иконка обычных построек, позиция 0,2). Альтернативному - такую же способности, но с иконкой дополнительных построек, позиция 1,2.
При применении одной из этих трёх способностей триггерно открывать работнику список построек.
Готово!
P. S: Способность "превратиться в медведя" здесь - лучший вариант, т. к. она сохраняет информацию об ресурсах, которые "держит" работник.
На днях пришлось ковыряться со звуками - и действительно, недостаточно просто прописать звуку нужный путь. Но и ничего особо сложного нет.
Нужно достать таблицу UI\SoundInfo\UnitAckSounds.slk из War3Patch.mpq. Там довольно просто отредактировать стандартные наборы звуков и, при необходимости, добавить новые.
На примере Малфуриона: есть несколько подряд идущих строк, в первых ячейках которых записано:
Был же мод с дополнительными расами, можно авторов поискать/инфу о их деятельности...
Я и сам когда-то пытался это провернуть. В моде этом вместо выбора расы стоял выбор гандикапа, где вместо цифр (90%, 80% и.т.д.) отображалось название расы. Это сделать легко, отредактировав файлы PlayerSlot.fdf и GlobalStrings.fdf. Затем при загрузке карты происходил выбор расы, в зависимости от выбранного значения гандикапа, при помощи сторонних dll-библиотек. Тут уже редактированием файлов из mpq-архива не обойтись. Однако, игра не стоит свеч. Конечно, будет удобнее и приятнее сделать "отдельную выбираемую расу", но копаться в этом нужно очень долго, а шансы на сколько-нибудь положительный результат очень малы.
Maolink, отображение юнитов - оно же в SLK-таблицах настраивается. Можно даже просто сделать нестандартных юнитов в редакторе, а потом при помощи SLK-оптимизатора переделать данные о войсках в таблицы и вставить в mpq-архив.
Если ты добавляешь модели в один из существующих архивов (War3, War3X, War3XLocal, War3Patch), то они будут отображаться в редакторе, если ты пропишешь юниту соответствующий путь.
Поясню, я хочу добавить дополнительный отдел в редакторе, например, дворфы. Чтобы во вшитом редакторе при выборе рас: Альянс, Орда, Нежить, Ночные Эльфы, Нейтралы и Наги, появился раздел "Дворфы".
А вот это уже гораздо сложнее, чем кажется. Можно покопаться в UI\WorldEditStrings.txt и еще в паре файлов, с ним связанных, но не факт, что получится, да и не нужно это. Какая разница, в каком разделе эти дворфы будут отображаться в редакторе? На игру это никак не повлияет.
Да, помимо всего прочего, новый патч еще и неплохо так тормозит игру. Откатился до 1.27 - такое ощущение, что вар летать начал, после двух дней изучения 1.28.
Сначала я даже обрадовался, когда узнал, что пользовательские карты перенесены в "Документы" из Program Files. Но это только сначала. Половина карт не запускается ни из какой директории, а если запускается, названия папок в Warcraft раздваиваются; имеют место прочие странные глюки. Надпись "Не удалось загрузить данные карты" вылазит к месту и не к месту - как в редакторе, так и в самой игре. Одни только карты с подписью Blizzard работают без сбоев, но это никак не скрашивает общую картину.
Новый лаунчер при каждом запуске радостно сообщает, что доступно очередное обновление и каждый раз обновляет игру до одной и той же версии 1.28.
Единственное, что радует: на сайте Battle.net всё ещё предлагается к скачиванию предпоследняя версия (1.27).
После обновления в настройках игры осталось всего 4 варианта разрешения экрана, максимальное из них - 1024x768. Естественно, качество картинки стало хуже, а ведь у меня далеко не самый большой экран.
quq_CCCP, Вот я выбрал работника Орды и отправил его строить здание. И если я не снял с него выделение, то он останется выбран даже когда начнёт строительство. И я смогу ему отдать следующий приказ (который он выполнит после окончания строительства). Т.е. я могу во время строительства приказать ему куда-то идти, или отправиться добывать ресурсы, или построить следующее здание. Способности же он отказывается воспринимать и "нажимаются" они только после того, как он построит здание. Ремонт - это тоже способность, но она в данном случае работает как приказ и её можно "нажать" во время строительства и отследить нажатие триггерно. Любая похожая способность мне и нужна. Необязательно она должна что-то ремонтировать и вообще что-то делать. Главное - чтобы она "нажималась" во время постройки.
quq_CCCP, так мне же не нужно чинить что-то. Надо просто отследить нажатие кнопки во время строительства. Проблема в том, что юнит не хочет ни применять, ни направлять способности, пока строительство не завершено. Вот я и ищу что-то, похожее на ремонт - его ведь работник любой расы может "нажать" при строительстве, и это нажатие можно будет отследить.
Diaboliko, я имел в виду такое строительство, когда работник "внутри" здания. У Орды, ночных эльфов или нейтралов. Ремонт даже при таком строительстве направить можно.
Тут не столь важно, сбивает или нет. Нужно, чтобы можно было направить во время строительства, чтобы отследить, что нажата кнопка во время строительства. Так работает "ремонт", но нужно что-то другое, т.к. ремонт у работника и так есть, а способности с одинаковыми id приказа будут конфликтовать.
'Absk' (безумие) всё так же невозможно применить во время строительства.
в MyAbility проверяй есть ли уже абилка 'A06B' у этого юнита
и если есть - ищи таймер и меняй ему время на новое (опять 25 сек - обновление)
Так, а если у меня будет 2 разных действия, запускающие таймер на разное время - в зависимости от уровня способности? Можно ли как-то выяснить, сколько времени осталось до срабатывания таймера, и перезаписывать его только в том случае, если новое значение больше?
Самое удивительное: если карта "открыта" - всё работает, чёрная маска создаётся. Если же "разведана" - нет...
Как мне удалось наконец-то выяснить:
Если выставлен флаг "карта открыта" - просто запрещаются туман войны и чёрная маска. И чтобы вернуть всё на место, нужно разрешить их, а потом создать модификатор чёрной маски.
Если выставлен флаг "карта разведана" - ничего не запрещается, но создается модификатор тумана войны на всю карту. И его просто не может перекрыть новый модификатор чёрной маски, который я создаю триггерно. Нужно как-то отловить этот первоначальный модификатор тумана войны - и удалить его. Обращение через "последний созданный модификатор" не помогает. Может быть, есть еще какие-то способы найти и удалить этот модификатор?
dave_wwid, результат всё тот же. Игра упорно игнорирует любой модификатор "черной маски", если выставлена видимость "по умолчанию", а не "скрыта". Naadir, если бы было всё так просто... Это в моём случае не годится, здесь может помочь только триггерное решение.
Воду как раз заменить легче всего. И её можно сделать разной для разных ландшафтов. В Water.slk за 5 минут всё настраивается.
А вот создать новый тип ландшафта гораздо труднее, и я не помню, чтобы были примеры, когда кто-то кроме близзов добавил бы в WarCraft новый тайлсет. Заменить можно, сделать новый - вряд ли. Там же не только текстуры земли, но и текстуры склонов, которые хранятся в архивах с названиями Z.mpq, F.mpq, L.mpq и. т. д.
Ред. Тимур
» WarCraft 3 / Handle to string
» WarCraft 3 / Вторая кнопка "Построить"
Ред. Тимур
» WarCraft 3 / Вторая кнопка "Построить"
Ред. Тимур
» WarCraft 3 / Вторая кнопка "Построить"
» WarCraft 3 / Проверка на наличие у юнита требующей апгрейда способности
Ред. Тимур
» WarCraft 3 / Вторая кнопка "Построить"
Ред. Тимур
» WarCraft 3 / дополнение набора звуков
» WarCraft 3 / дополнение набора звуков
Ред. Тимур
» WarCraft 3 / MPQ архивы Warcraft 3
Ред. Тимур
» WarCraft 3 / MPQ архивы Warcraft 3
» WarCraft 3 / Есть ли тут утечки?
Ред. Тимур
» WarCraft 3 / Есть ли тут утечки?
» WarCraft 3 / Есть ли тут утечки?
Юнит создаётся так:
» WarCraft 3 / Важная информация об обновлении 1.28
» WarCraft 3 / Важная информация об обновлении 1.28
Новый лаунчер при каждом запуске радостно сообщает, что доступно очередное обновление и каждый раз обновляет игру до одной и той же версии 1.28.
Единственное, что радует: на сайте Battle.net всё ещё предлагается к скачиванию предпоследняя версия (1.27).
» WarCraft 3 / Важная информация об обновлении 1.28
» WarCraft 3 / Работающая во время строительства способность
Ред. Тимур
» WarCraft 3 / Работающая во время строительства способность
Ред. Тимур
» WarCraft 3 / Работающая во время строительства способность
Ред. Тимур
» WarCraft 3 / Работающая во время строительства способность
Ред. Тимур
» WarCraft 3 / Конфликт нескольких таймеров для юнита
Ред. Тимур
» WarCraft 3 / Включение чёрной маски
» WarCraft 3 / Включение чёрной маски
Naadir, если бы было всё так просто... Это в моём случае не годится, здесь может помочь только триггерное решение.
» WarCraft 3 / Добавление типов рельефа в редакторе
» WarCraft 3 / Включение чёрной маски