0
17
3 дня назад
0

» Hunter or Victim / Главная страница

Это похоже на вопрос сжатия, так то 100 вариаций можно и в одну строку засунуть. Только работа со строками в jass желает лучшего
С генератором действительно есть момент что при изменении его в одном месте придется менять и во втором, а так как языки разные то получается не очень
Но я бы все равно разделил генератор города в UE и генератор кода для варкрафта, условно все элементы сохраняются в список json, а потом из него генерится код для варкрафта, а какой он будет код в варе вопрос второй
Да и какая разница хоть 10_000 строк если это чистый jass, можно же сгенерить и объявление функций которые строят города и сделать там лимит что каждый 10ый ассет создается через 0.01 в таймере и конечную функцию типа построй_город, а все if внутри. Зато будет полная консистенция с тем что в UE и что на выходе в варе
0
17
5 дней назад
0

» Hunter or Victim / Главная страница

Генератор прикольный, дома/строения внутри областей генерируют некоторые кучки или линии, но эти кучки и линии на видео всегда внутри одной области, хотя место где области пересекаются, то есть на поворотах, тоже есть
Сам принцип преобразования областей и стен в строки не понял потому что области это группа четырехугольников которые можно так и хранить + точка смещения на итоговой карте, а граница стен и так выводится исходя из областей. Честно говоря если нужно сохранить конкретный вариант то я бы просто хранил генератор и сид от генератора случайных чисел или несколько сидов, например от областей, от стен и от строений внутри области
0
17
5 дней назад
0

» IntelliJASS / Типы данных

Эх упущен опыт варкрафтеров по хранению нескольких малых чисел внутри большого числа

Тут кстати можно добавить функцию как выводить числа с плавающей точкой больше сколько-то знаков чем выводит стандартная функция вывода, помнится PT153 скидывал
0
17
5 дней назад
0

» IntelliJASS / Циклы

Сам пользуюсь аналогом for
for i in range(0, 10):
	# code
set i = 0
loop
exitwhen i >= 10
    // code
set i = i + 1
endloop
0
17
5 дней назад
0

» IntelliJASS / Условия

Разгадка сего действия проста - если первым аргументом функции AND был передан false то игра перестаёт считать выражение и экстренно возвращает false
Тут хорошо бы уточнить подразумевается false как значение выражения или false как переменная "false", и если первое то получается все выражения с and надо оборачивать в скобки
0
17
2 месяца назад
0

» WarCraft 3 / Когда переступил через лимиты WarCraft 3

Музыка знакомая, кажется из геншин импакт
0
17
2 месяца назад
0

» WarCraft 3 / Как дополнить методами структуру unit?

Это можно сделать проще через функцию
func get_unit_gold(unit)
	return LoadInteger(GlobalHashtable, GetUnitHandle(unit), IDGold)
endfunc

А то что указано в решении, и зачем то сделано через шаблоны - это именно обращение к полям по индексу
0
17
2 месяца назад
0

» Hunter or Victim / Главная страница

Честно говоря хотелось бы более подробное описание генератора, в плане логики генерирования, это самая интересная часть
3
17
2 месяца назад
3

» WarCraft 3 / Rabbits vs Sheep

Топовая карта, хорошо с друзьями порубиться
0
17
3 месяца назад
0

» WarCraft 3 / Как дополнить методами структуру unit?

Решение через оператор unit
Обращение к полям юнита через индексы приведет к тому что с ростом проекта код станет сложно читать, `unit.target_y` против `unit.LoadReal(2)`
1
17
3 месяца назад
1

» WarCraft 3 / Возможно ли прикрепить аттачи к портрету персонажа?

Сделать свою систему портрета
0
17
3 месяца назад
0

» WarCraft 3 / Предмет усиливающий броню

А есть ли какой то предмет который усиливает броню похожим образом?
Есть библиотеки типа Bonus Mod
Их идея в том чтобы в зависимости желаемого бонуса выдавать способности соответствующие степени двойки, таким образом можно действием "установить бонус защиты" менять свой бонус юниту по желанию в любой момент
0
17
3 месяца назад
0

» WarCraft 3 / Как раскрыть функцию с полярным смещением

Почему не написать все то же самое в одну строку?
В 90% случаев без разницы если это читается понятно. Тут больше вопросы к названиям переменных в одну букву, например назвать юнита `t` "шикарное" решение
1
17
3 месяца назад
1

» WarCraft 3 / Lua-программирование для чайников

Для того чтобы легко поддерживать хоть сколько то большой проект на lua необходимы подсказки типов. А те typechecker которые есть сейчас не имеют возможности описывать generic типы.
Из за того что стандартный тип `table` имеет разные порядок при обходе через `pairs()` на разных ПК, это критически требует создания собственных коллекций просто чтобы начать хранить данные, а без generic типов поддержка коллекций быстро превратится в ад
3
17
3 месяца назад
3

» WarCraft 3 / Триггер на стак предметов в инвентаре

Он имеет ввиду
  1. Либо отлаживать приказ smart когда кликаешь на предмет и когда подошел делать автосбор
  2. Либо дублировать предметы, бутылка-руна и бутылка предмет, поднимаешь всегда руну а дальше смотришь положить предмет в инвентарь или состакать заряд
0
17
3 месяца назад
0

» WarCraft 3 / Visual Studio Code: WarCode

а встроить один язык в другой ваш хвалёный LSP в вскоде умеет?
А почему нет?)

Только в 99% это хреновая затея так как ничего не гарантирует, разве что банальная подсветка ключевых слов
0
17
3 месяца назад
0

» WarCraft 3 / Visual Studio Code: WarCode

Давеча реализовал вложенные многострочные комментарии для vJASS. Ваша хвалёная вскода так умеет?
Такое умеет любой LSP сервер который может быть написан на любом языке и подключен к vscode)
0
17
3 месяца назад
0

» WarCraft 3 / Определение хоста карты

просто воспользоваться нативкой
Или подождать адептов мемхака...
Слишком просто...
0
17
3 месяца назад
0

» WarCraft 3 / Приоритеты атаки

Редактор Объектов -> Нужная боевая единица -> Характеристики - Приоритет (снизу)
0
17
4 месяца назад
0

» Quro / Главная страница

Попробовал я перейти на луа. Ну сложна. Вышел на моменте что в карту что-то запаковывать надо будет руками чуть ли не через mpq архивы. Ну неудобно. Сделайте встроенную визуальную поддержку луа в джнгп. Тогда на это можно будет переходить.
Для того чтобы удобно было разрабатывать карту на lua сейчас надо выполнить следующие действия:
  1. Положить в карту файл war3map.lua с одной строчкой
local my = require "my"
  1. Создать в папке файл Game\Warcraft 3 Frozen Throne\lua\my.lua
  2. Запустить игру с флагом -dev (режим разработчика)
С этого момента при запуске карты игра будет автоматически подгружать файл my.lua. Туда можно вносить изменения с помощью любой IDE.
Для того чтобы проверить изменения в my.lua даже не надо закрывать игру, достаточно нажать в меню перезапустить карту и новый my.lua подтянется автоматически.
Только когда надо релизить новую версию карты, тогда необходимо перенести изменения из my.lua в war3map.lua, чтобы код работал в обычном режиме.
1
17
4 месяца назад
1

» WarCraft 3 / Циклы и их лимиты (+ способы обхода лимитов)

каким образом можно писать что lua hrua cjass vjass ...{вставить ещё сотню языков} могут больше чем оригинал?
если они в конце компиляции тупо конвертят свой личный код в обычный жас
lua не конвертируется в jass, это отдельный язык со своей luaVM который интегрируется в игру и дергает нативки как сишные функции, оп-лимит это прикол исключительно jassVM
1
17
4 месяца назад
1

» WarCraft 3 / как создавать юнитов с уникальным HandleId ?

//StringHash((I2S((GetHandleId((O41904)))) )) сохраняется под значением StringHash и дополнительно под Хэндл
Почему просто не использовать GetHandleId(...) вместо StringHash(I2S(GetHandleId(...))) ?
1
17
4 месяца назад
Отредактирован Vlod
1

» WarCraft 3 / Циклы и их лимиты (+ способы обхода лимитов)

вчера он аналогично не захотел обработать 50 строк длиннее 1000 символов - ну ладно, на тебе второй триггер
но нет же, сегодня во втором триггере заглох при обработке одной строки на 1400 символов (во время вызова доп функции) - пришлось делать триггер в триггере
итого 3 раза цикл из-за оплимита оборвался и не доработал, пока его на триггер не посадили
сидишь только и борешься с оплимитом в циклах сутками
Да понимаю что это сложно, поэтому рекомендуй уйти на lua где нет такого лимита и больше перфоманс. Если такой возможности нет то дели код на части и делай отложенные вычисления типа таймером на 0 сек и т.п.
1
17
4 месяца назад
1

» WarCraft 3 / Циклы и их лимиты (+ способы обхода лимитов)

Априорная оценка «вычислений» относительно лимита операций
1
17
5 месяцев назад
1

» WarCraft 3 / как создавать юнитов с уникальным HandleId ?

от чего естественно летит вся ht,
При удалении юнита должны чистится все данные в ht которые с ним связаны, иначе это ведет к засорению памяти, лагам и крашу

или надо периодически обнулять всю ht и заполнять заново? (разве нет команды очищения ht? только через пересоздание?)
Инициировать хеш-таблицу (InitHashtable()) насколько мне известно можно только 255 раз. Чтобы работать с пересоздаваемыми хеш-таблицами на jass нужно писать свою систему, типа такой xgm.guru/p/wc3/hashtable8000