28

» WarCraft 3 / Самоходная мортира и паровой танк

Если делаешь свою похожую систему, тебе нужно во время инициализации для всех игроков заблокировать паровой танк, то есть поставить лимит на 0.
Действия -> игрок. Там немного, легко найти.
28

» WarCraft 3 / Самоходная мортира и паровой танк

Принятый ответ
В бараках нанимаются оба юнита, но изначально паровой танк заблокирован. Во время загрузочного экрана запускается специальная функция main (есть в каждой карте), что в свою очередь запускает ряд функций из blizzard.j. Одна из них блокирует (ставит лимит на 0) берсеркера, паровой танк и ставит лимит в 25 на скелетов для всех игроков. Вызов данной функции можно убрать через редактирование функции main.

Если делаешь свою похожую систему, тебе нужно во время инициализации для всех игроков заблокировать паровой танк, то есть поставить лимит на 0.
28

» WarCraft 3 / Продолжение разработки карты

Naadir, так там в "Разрешённые цели" указано non-suicidal, ничего удивительного.
8gabriel8:
А с Благодатью можно юнитам нежити добавить классификацию Самоубийцы и в допустимых целях способности указать Самоубийц.
Я думаю, что можно просто убрать из целей "Friend".
28

» Эксперименты в Пустоте / Ломаем Warcraft3 1.31 полностью: Кастомный компилятор Lua

Поэтому, например, не имеет смысла что-то чудить с пробелами перед синтакс чеком т.к. синтакс чек из WE просто не будет вызываться в 99% случаев.
Я про syntax check в самом VSCode. Я сказал "ПЕРЕД" для того, чтобы в алгоритме по удалению пробелов можно было засечь ошибку, да и всяко лучше запускать чекер после всех препроцессорных махинаций.
Что касается синтаксиса макросов - я не случайно пошел путем аннотаций к переменным вместо кода в комментах - в моем варианте с этим более-менее прилично работает обычный синтакс-чекер для Lua и мне не нужно писать кастомный.
В целом, так тоже неплохо.
PT153:
Ещё бы я хотел, чтобы выражения в константах считались препроцессором.
На самом деле было бы хорошо делать вычисления для всех выражений без переменных, как это делает python.
Аналогично с макросом RAW - он принимает только значения в одинарных кавычках и имена констант чтобы проходить стандартный синтакс-чек. Более того, используется еще и объявление глобальной переменной RAW=FourCC, чтобы если что-то пошло не так с макросом, был шанс на срабатывание стандартного конвертера, ну и строгий синтакс-чек без этого не пройти.
Мудро.
28

» Эксперименты в Пустоте / Ломаем Warcraft3 1.31 полностью: Кастомный компилятор Lua

--#INLINE для маркировки функций подлежащих инлайну в пределах текущего файла
--#INLINE GLOBAL для маркировки функций и переменных подлежащих инлайну во всех файлах
--#IF для начала блока условной компиляции, предварительно без серьезных вычислений, только на основе сравнения констант
--#ELSE для начала блока else при условной компиляции
--#END для завершения блоков у любых блочных макросов
Что-то похожее я и хотел иметь, но с другим синтаксисом.
<name> - идентификатор.
<expression> - значение или выражение.

регулярное выражение
описание
примеры

 *-- *const +<name> *= *<expression>
Заменяет все вхождения <name> на <expression> во всех файлах. <expression> может являться <name> другой const. Другая константа может быть определена ниже, главное, чтобы не было рекурсий.
-- const INVUL = raw(Ainv)
-- const UserPlayers = 10
-- const AIPlayers = 2
-- const AllPlayers = UserPlayers + AIPlayers

 *-- *localconst +<name> *= *<expression>
Заменяет все вхождения <name> на <expression> в файле, где определена localconst. <expression> может являться <name> другой const или localconst. Другая константа может быть определена ниже, главное, чтобы не было рекурсий.
-- localconst invul_here = INVUL

 *-- *bool +<name> *= *<expression>
 *-- *localbool +<name> *= *<expression>
Тоже самое, что и const, но значения могут быть только true, false, другая bool или даже выражение из операнд bool и localbool и операторов or, and и not. <expression> для bool не может содержать операнды типа localbool.
-- bool debug = true
-- localbool debug_here = debug
-- localbool no_debug_here = not debug_here

 *-- *#if +<expression>( +then)?
 *-- *#elseif +<expression>( +then)?
 *-- *#else
 *-- *#endif
Условная компиляция. <expression> состоит из операнд bool и localbool и операторов or, and и not. #endif можно заменить на #fi или #end.
Для укорочения можно изменить вид операнд и операторов.
false -> 0
true -> 1
and -> *
or -> +
not -> -

 *<bool or localbool var> +<some lua expression>
Условная компиляция в линию. Для этого я и ввёл отдельно тип bool.
debug print(GetUnitName(u))

(RAW|raw)\( *('<rawcode>'|"<rawcode>"|<rawcode>) *\)
конвертирует равкод в число. Может принимать как в кавычках, так и без. С кавычками следует быть аккуратнее, так как сами кавычки могут быть частью равкода.
Так же я бы хотел опцию по удалению лишних пробелов для уменьшения веса кода ПЕРЕД вызовом syntax check.

Ещё бы я хотел, чтобы выражения в константах считались препроцессором.
28

» Администрация XGM / Перенос слов

ScorpioT1000, как бы прикол в том, что ширина не менялась, но на одном скрине перенос есть, а другом нет.
28

» WarCraft 3 / [lua] Дамми каст

NazarPunk, выше дополнил пост.
Они у исходного юнита уже правильно выставлены.
Не совсем, у совы Colision Size равен 16. Лично я даммикам вообще pathing отключаю.
Ещё стоит Art - Projectile Launch - Z (launchZ) поставить на 0 и Art - Propulsion Window (propWin) на 180.
Я ещё Max Pitch и Max Roll зануляю, реген отключаю, дабы таймер регена юнита потенциально не тикал.
28

» WarCraft 3 / [lua] Дамми каст

Так-то Point Value - это point value, ничего общего с опытом оно не имеет. В ТД туда пишут начальную стоимость башни. Например, в той же BlizzardTD.

Здесь есть формулы.
Там это значение никак не фигурирует, потому что с опытом никак не связано.

Также есть такой сурс.
Has no significance in the game other than to be used as part of a trigger through the Integer functions
А самый надёжный сурс говорит вот что.
Point Value - This is the number of points awarded to the player who kills this unit.
Что как бы совсем не связано с опытом. А так как даммика никто не убивает, то и смысла менять данное поле нет. Хотя в этом нет ничего страшного.

Короче, перевод крайне кривой, мда.
Характеристики - Опыт, начисляемый за уничтожение
vs.
Point Value - This is the number of points awarded to the player who kills this unit.
Загруженные файлы
28

» WarCraft 3 / [lua] Дамми каст

GetUnitPointValue()
Это же вообще другое поле в РО. Или это опять кривой перевод?
28

» WarCraft 3 / [lua] Дамми каст

Это же очки статистики в послеигровом меню, зачем лишний раз их накапливать.
Это же опыт за убийство, не? А тут даммик, которого нельзя убить.
Если уже можно настроить в редакторе, почему это не сделать.
Просто всё равно у дамми спелов манакост и кд на 0.
28

» WarCraft 3 / Иконки атаки и движения

Попробуй проимпортировать прикреплённый файл в карту по такому пути.
Units\CommandFunc.txt
Сложные вы.
Вот карта, нет тех иконок, что я скрыл. Смотреть импорт.
Загруженные файлы
28

» WarCraft 3 / [lua] Дамми каст

Ману у дамми можно занулить, а требования способности менять в коде. Опыт не нужно трогать, юнит же неуязвим.
Вместо .mdl можно поставить просто _.
Укажи поля CastPoint, Fly Height, Movement Type, Collision Size. Они тоже важны.
28

» WarCraft 3 / Продолжение разработки карты

За улучшение "Улучшеные топоры" у Альянса вы наверно не знаете?
Зависит от патча. На 1.26 с этим могут быть проблемы, так как там нельзя понижать уровень грейда.
В War2 бонус к добыче есть только при лесопилке.
Нужно указать на своего союзника или трупа
Редактор Ландшафта -> Дополнительно -> Игровой интерфейс.
28

» WarCraft 3 / Иконки атаки и движения

Принятый ответ
Попробуй проимпортировать прикреплённый файл в карту по такому пути.
Units\CommandFunc.txt
В файле атака не скрыта, поставть ей 0,-11.
Загруженные файлы
28

» Мир безумного / TcX на Dota 2

А что с ремейком? Пусть выйдет сначала, а там видно будет.
28

» WarCraft 3 / Сложная система найма рабочих

BladeInDoom, только нужно данный лимит запоминать, нет опции "получить" (вроде как) или "увеличить", только "установить".
28

» WarCraft 3 / Награда за убийство нейтрально-враждебного

SayHAchenko, игрок -> там найдёшь.
Это действие можно найти в кастомках от близзард, как правило, во время инициализации.

10. Неправильное использование модуля «Вопросы»

  • 10.4 Создание ресурса, название которого не отражает суть вопроса.
Исправил заголовок вопроса.