3
28
7 месяцев назад
Отредактирован PT153
3

» XGM Конкурсы / Большой Турнир Ландшафтеров 2023

Лучше писать 23:59:59 10.10.2023 МСК, чтобы не было путаницы. Ещё можно добавить полоску, что отображает время, чтобы точно никто не затупил.
0
28
7 месяцев назад
0

» XGM Конкурсы / Большой Турнир Ландшафтеров 2023

ME_RiDi, писали же, что всё на классике будут оценивать.
1
28
7 месяцев назад
1

» WarCraft 3 / какая есть софтина по переименованию функций и переменных?

может быть тому виной кавычки "jass" в 38 строке и формула RegExp перестаёт работать
Нет, просто из-за того, что я разрешил multiline строки, вышло так, что оно матчит закрывающую кавычку, потом кучу линий, затем название переменной, затем кучу линий и затем открывающую кавычку.
Я переделал, теперь всё работает как нужно. Заодно добавил обработку случаев с одинарными кавычками.
1
28
7 месяцев назад
1

» WarCraft 3 / какая есть софтина по переименованию функций и переменных?

или ждать таки софтину от сообщества ну или писать самому и публиковать
Да что там ждать.
Регистрируетесь в реплите, клонируете себе этот репл, в war3map.j кидаете свой код. В main.py описываете имена, что хотите заменить и на что. Запускаете main.py. В output.j результат.

UPD 8:27: теперь строки, что располагаются на нескольких линиях, верно обрабатываются.
1
28
7 месяцев назад
1

» WarCraft 3 / какая есть софтина по переименованию функций и переменных?

Тут есть момент, что замена состоится везде. То есть, если "fu" встречается в строке как слово, то там тоже будет заменено. Это справедливо и для замены с помощью " fu ", так как скорее всего в строке слово будет выделено пробелами.
Обойти это можно, написав небольшой скрипт, что построчно заменяет одни слова на другие, игнорируя слова в строках.

а как работает "Только слово целиком" ? по каким законам? проверяет слева и справа чтобы не [A-z] [А-я] было?
Обычно это поиск по "\byour_word\b".
1
28
7 месяцев назад
Отредактирован PT153
1

» WarCraft 3 / какая есть софтина по переименованию функций и переменных?

странно, что этого никто не сделал к 2к24 году
Это давно уже всё сделано. Тот же WordPad в винде появился с релиза Windows 95, что вообще-то была выпущена в 1995 году.
А так для работы с кодом рекомендую Notepad++. Легковесный и быстрый редактор текстовых файлов со всеми нужными фичами. Локлизация на русском присутствует. Вот его окно замены и документация.
Загруженные файлы
1
28
7 месяцев назад
Отредактирован PT153
1

» WarCraft 3 / какая есть софтина по переименованию функций и переменных?

какая есть софтина по переименованию функций и переменных в j файле?
Любой уважающий себя текстовый редактор.
вы прикалываетесь оба?
возьми любой j файл в своей карте и по своему совету замени как написано в примере ниже, я посмотрю потом на твою карту
Ну заменил, в чём проблема-то?
Загруженные файлы
1
28
8 месяцев назад
Отредактирован PT153
1

» WarCraft 3 / OrderId

  • Отсутсвует Order_wandillusion = 852274 (надо перепроверить).
  • Отсутвуют Order_itembuild = 852619 и integer Order_reveal = 852270. Они не именные, но лучше перепроверить.
Также есть ещё не указанные приказы. Вот тут есть ещё пара примеров.
0
28
9 месяцев назад
0

» WarCraft 3 / Не работает vJass и cJass в Warcatf 3 Jass New Gen Pack

блок globals должен быть за пределами library. Если мне память не изменяет.
Нет
0
28
9 месяцев назад
0

» WarCraft 3 / Не работает vJass и cJass в Warcatf 3 Jass New Gen Pack

Поддерживается.
0
28
9 месяцев назад
0

» WarCraft 3 / TESH для Reforged

Всё работает с лицензией.
0
28
9 месяцев назад
0

» WarCraft 3 / Visual Studio Code: WarCode

Вродь норм, а в чём беда multiline строк? Последний pjass их вроде поддерживает.
0
28
9 месяцев назад
0

» WarCraft 3 / Visual Studio Code: WarCode

Зачем |n, если стандартный \n справляется?
0
28
10 месяцев назад
0

» WarCraft 3 / Jass MythBusters

Создай несколько и потом переиспользуй
0
28
10 месяцев назад
0

» WarCraft 3 / w3x-to-toml

nazarpunk, стоит поработать над меню, а скорее вовсе его убрать.
File - там есть кнопка exit, что в целом не особо нужно.
Edit - Undo и Redo ничего не делают, остальные не особо полезны.
View - в целом бесполезно. а наличие Developer Tools даже опасно.
Window - Zoom ничего не делает, остальное есть на самом окне.
Help - пусто.
Стоит добавить возможно выбора папки для результата.
0
28
10 месяцев назад
Отредактирован PT153
0

» WarCraft 3 / w3x-to-toml

host_pi, какая версия ОС? У меня Windows 10 Pro 21H2, программа запустилась без проблем.
0
28
10 месяцев назад
0

» WarCraft 3 / w3x-to-toml

> Посмотри в сторону YAML, он более человечный.
YAML из Ада habr.com/ru/articles/710414
Проблема Норвегии
О да, именно такую ошибку я и встретил. Проcто ужас! Поэтому предпочитаю JSON и TOML. У JSON не нравится отсутствие комментов и поддержки trailing comma.
0
28
10 месяцев назад
0

» WarCraft 3 / w3x-to-toml

На самом деле лучше тогда уж обратно в slk кидать
0
28
10 месяцев назад
Отредактирован PT153
0

» WarCraft 3 / w3x-to-toml

host_pi, там же сразу портативный экзешник есть, в чём проблема?
0
28
10 месяцев назад
0

» WarCraft 3 / w3x-to-toml

Тобишь в ini можно описать такую структуру и IDE её будет адекватно подсвечивать?
Именно как на картинке - нельзя. У INI нет чёткого формата. Считай, что томл это ини на максималках.
YAML слишком неформальный.
0
28
10 месяцев назад
0

» WarCraft 3 / w3x-to-toml

host_pi, TOML - это расширение INI. У INI вообще одного стандарта нет.
В ini есть list, map и mulitline strings?
лист легко делается строкой, мапы через разделы. TOML просто является улучшенным INI, что очень хорошо. Сам буду его использовать, так как более human-friendly, чем тот же JSON.
0
28
10 месяцев назад
Отредактирован PT153
0

» WarCraft 3 / Группы или таблицы в луа?

Но я, если честно, не понял, как из приведённой выдержки документации ты сделал вывод о том, что порядок может быть не идентичным на разных машинах?
The order <...> is not specified
То есть порядок не определён, или по-другому - разработчики не гарантируют одинаковый порядок. Поэтому возможно, что next на разных машинах в разное время выдаёт разный результат. Что подтверждается эмпирическими тестами. Запустить онлайн можно тут.
t = {a = 1, b = 2, c = 3}

function call(t)
    for k, v in pairs(t) do
        print(k, v)
    end
    print('--------------')
end

t.a = nil
t.d = 5
t.a = '1'

call(t)
call(t)
Вывод:
b	2
a	1
d	5
c	3
--------------
b	2
a	1
d	5
c	3
--------------
Жму restart, вновь запускаю тот же код. Результат:
c	3
b	2
a	1
d	5
--------------
c	3
b	2
a	1
d	5
--------------
Таким образом, разный порядок возможен.

Что касается десинхронизаций, то они возникают, только когда идёт работа с объектами игры. Например, если идёт перебор множества чисел через дефолтную pairs, то никаких проблем не будет. Также вполне возможно, что изменения для юнитов, сделанные путём перебора через дефолтную pairs, могут произойти быстро и игра синхронизирует своё состояния уже по окончании всего перебора, что не приведёт к десинхронизации. Однако если из такой группы взять N-го юнита и сделать какие-то операции только с ним, или делать операции с юнитами в зависимости от их порядкового номера, то это приведёт к десинхронизации тех игроков, у кого другой порядок перебора.

Проверить наличие разного порядка в варе довольно просто. Создать карту на несколько человек. Разместить на карте N разных юнитов. Во время инициализации вызывать такой код:
local t = {}
local r = GetWorldBounds()
local f = Filter(function() t[GetFilterUnit()] = true end)
GroupEnumUnitsInRect(bj_lastCreatedGroup, r, f)
RemoveRect(r)
DestroyFilter(f)
PreloadGenClear()
for u, _ in pairs(t) do
    print(GetUnitName(u))
    Preload(GetUnitName(u))
end
PreloadGenEnd("check-table-order.txt")
Сравнить файлы после запуска. Файлы будут находится в папке Documents\WarCraft III\CustomMapData.
0
28
10 месяцев назад
0

» WarCraft 3 / IsUnitDeadBJ()

Тут достаточно подробно описано, сколько у юнита может быть минимальное хп. И это значение чуть меньше 0.405. Но в любом случае это не имеет значения, есть UnitAlive отсюда, а в луа эта функция изначально доступна.
0
28
10 месяцев назад
0

» WarCraft 3 / Группы или таблицы в луа?

сортированный список
Сортированный не есть упорядоченный. Перед тем как токсичить без причины стоит хотя бы с терминологией ознакомится.
те более если использовать пейрсы как в вашем примере, это путь к десинкам
pairs - это просто функция, которая возвращает функцию next, переданную таблицу и nil. Если у таблицы есть метаметод __pairs, то вызывается он. Таким образом, добавляется метаметод и никаких десинков нет.
отссылая в гугл
Он отослал не в гугл, а на страницу вики от юзеров луа. Но это всё же такой себе источник. И как я уже сказал, pairs вообще не при делах. Всё дело в функции next. Цитата из официальной документации Lua 5.3:
Allows a program to traverse all fields of a table. Its first argument is a table and its second argument is an index in this table. next returns the next index of the table and its associated value. When called with nil as its second argument, next returns an initial index and its associated value. When called with the last index, or with nil in an empty table, next returns nil. If the second argument is absent, then it is interpreted as nil. In particular, you can use next(t) to check whether a table is empty.
The order in which the indices are enumerated is not specified, even for numeric indices. (To traverse a table in numerical order, use a numerical for.)
The behavior of next is undefined if, during the traversal, you assign any value to a non-existent field in the table. You may however modify existing fields. In particular, you may clear existing fields.
Таким образом, порядок может быть идентичен на разных машинах, а может быть и не идентичен. Поэтому изначальное утверждение Hate правдиво:
что на одном компьютере будет A, B, C а на втором C, B, A

Что касается самого вопроса. Удобство таблиц в том, что их не надо удалять функцией, но нужно реализовать уникальность юнитов. На HIVE есть готовая библиотека, которая включает в себя переписывание нативок для групп юнитов, точек, ректов и групп игроков на таблицы. Краткое описание библиотеки от автора, Bribe:
Most recently, I've revamped the old GUI Fixer Collection to a much more powerful tool: Lua-Infused GUI. Since GUI variables don't actually require strict type assignment when compiled into Lua, I was able to change Locations, Rects, Unit Groups and Player Groups into Lua tables, allowing them to consume an order of magnitude less RAM and be automatically cleaned up by Lua's garbage collector.