Extremator:
а ты точно продюсер? (в смысле погромист)
А так это всё вручную делается, в блокноте.
Это будут " fu", "fu ", ",fu", "fu,", " fu,", ",fu ", ",fu," для первой, и аналогичные для остальных.
такое даже больно читать, не то что кодить в софте или вручную заменять в блокноте
замена " fu" заменит тебе все " function", не? тоже самое с " ta" (takes) " el" (else) " en" (endif) и тд
а замена " f" испортит последующую замену " fu"
не проще ли заменить "," на " , " а потом работать с " fu " ? что сократит твоих 7 замен всего до 2. это описано выше под именем v1
не сработал, в карте со 100% листфайлом просто удалил scripts\war3map.j и перепаковал
а на чистой карте с добавленным war3map.j оставил этот j файл без изменений (сам j файл выложен ниже)
и также после своего "рекаверинга" удаляет HM3W заголовок, предлагая юзеру назад допиливать самостоятельно новый mpq файл до нормальной w3x карты
хотя - сработал, после закидывания "восстановленной" карты в WE - в F4 можно полистать новый переименованный код
но есть пара моментов:
1 - работа происходит не с изначальным j файлом а через создание war3map.wct
2 - чуть изменяется оригинальный код (даже через количество строк), что не удобно при сравнении j и wct файлов - добавляется неотключаемая? отсылка к именам старых функций
3 - также он добавляет неотключаемые? строковую табуляцию и пробелы вокруг операторов - что делает различия между новым и оригинальном кодом практически в каждой строке
т.е. технически способ рабочий, но удобство надо смотреть более подробно
и это первое хоть сколько-то автоматическое решение вопроса из шапки
особый шик - переименование main в main2, наверное чтобы не конфликтовать с main из j
на родном тесте из 19 строк срабатывает нормально, а при добавлении своего j файла - обрабатывает только начало файла (первые переменные V E), остальной файл оставляет без изменений (переменные fu nc ti on) (да, эти переменные есть в коде)
обрабатываемый j файл есть в replit.com/@egxwaxg111111/111 или тут controlc.com/2fb2e68c или тут xgm.guru/files/100/314140/comments/518102/war3map.j
т.е либо реплит не может обработать 20 тыс строк, либо работа кода на обработке какой-то строки прерывается
цвет подсветки строк после 104 строки в output.j магическим образом меняется
после тестов оказалось что в 30й строке он заменяет, а уже в 40й строке не может заменить
может быть тому виной кавычки "jass" в 38 строке и формула RegExp перестаёт работать
Обойти это можно, написав небольшой скрипт, что построчно заменяет одни слова на другие, игнорируя слова в строках
ну или как вариант - т.к. полноценно весь код сравнивать до и после переименования мы не сможем, т.к. будет изменено 90% кода
то можно дополнительно изъять из кода (до и после) только текст в кавычках и его сравнить, а потом изменённые части вернуть в исходное положение
или ждать таки софтину от сообщества ну или писать самому и публиковать
в любом случае замена по двум спискам текста целиком - тоже простая задача для решения этой темы или для написания софтины
т.е. первый список - что заменяем (особо актуально для разных запротекченных версий одной карты, когда в разных версиях названия одних и тех же функций отличаются)
второй список - на что заменяем (когда мы разобрались в логике карты и уже можем давать функциям осмысленное название, ну либо когда под руку попался незапротекченный код с оригинальными названиями функций)
если пользователь второй список не ввёл то Word12345 или иным правилом
также можно добавить автоматический парсинг списка глобалок и всех имён функций
итого благодаря PT153 появился третий алгоритм решения: (все три решения являются костыльными)
v1 - поставить пробелы вокруг операторов + заменять с пробелами " text "
v2 - полурабочий X-deprotect + "заменить запутанные имена глобальных переменных"
v3 - заменять "слово целиком" + с доп проверкой внутри кавычек
После ломания протектором и получается ломание кода
ломания кода не происходит, т.к. карта работает как и задумано
тогда бы никто не протектил карты, если бы она не работала
выглядит так как-будто ты наоборот хочешь произвести обфускацию скрипта
зачем просить то, что умеет делать протектор? не проще ли его просто запустить и использовать, чем создавать вопрос?
А так это всё вручную делается, в блокноте.
как ты себе представляешь замену 4 переменных с именами - fu, nc, ti, on ? если они встречаются в коде раз 200 каждая?
на глаз скроллить код? и на глаз отсеивать где переменная, а где часть слова?
почему консольный pjass умеет различать где переменная, где функция, умеет сверять типы данных, но нет ни одной софтины, которая бы их переименовывала?
предвосхищаю "не нравится - сделай сам такую"
Не видел ни одного плагина, который умеет в рефактор для jass
наверное это и будет ответом на вопрос
хотя у меня появилось некоторое решение - можно использовать программу по простановке пробелов вокруг переменных и функций - Script Language Aligner
а потом заменять " fu " , " nc " , " ti " , " on "
единственное - она не обрамляет пробелами запятые
в принципе - если накатать автору этой софтины чтобы добавил (или запилить самому) простановку пробелов вокруг запятых - то получится уже что-то
+ с массивами заменить a[i] на a [ i ]
ну а потом написать автоматический переименоватор " fu " в Test1 , " nc " в Test2 итд
костыльно всё это конечно, но с этим уже можно попробовать работать
странно, что этого никто не сделал к 2к24 году
т.к. для написания подобной софтины-переименовальщика не требуется особых знаний, можно запилить на любом языке
сначала проставить пробелы (исключая текст в кавычках) вокруг всех операторов !(),<>==+-[] , а потом переименовать " fu "
т.е. вводишь в неё списком fu=Test1 nc=Test2 ti=Test3 on=Test4, а на выходе получаешь переименованный ЧИТАБЕЛЬНЫЙ рабочий код
вопрос был конкретно про j файл, а не про карту. в редакторе любой ду, в смысле любой гуишник сможет
цель этой задумки - вручную без ломания кода вернуть нормальные названия функциям после протекта (состоящим из 2-3 символов)
итоговый короткий код от BaHeK
конвертация return bug для UNIT <-> INTEGER
globals
hashtable ht = InitHashtable()
endglobals
function Trig_U2I takes unit u returns integer
local integer id = GetHandleId(u)
call SaveUnitHandle(ht, 0, id, u)
return id
endfunction
function Trig_I2U takes integer i returns unit
return LoadUnitHandle(ht, 0, i)
endfunction
у иконок от крупных компаний - чёткие грани, насыщенный цвет
у иконок от васянов-нонеймов - два вагона блюра, потом сверху размытие, в конце полирнуть фильтром гаусса
в прошлый раз китаец как то смог ответить, который даже эту карту в глаза не видел
может быть ответ и есть такой: 双人版
попробуй просто эту же строку ввести в ответ которая в вопросе
там тебе пишут в самом вопросе, что ответ такой-то - вместо вопроса сразу ответ тебе написали
» SOLO MID / Reforged есть? А если найду
Ред. host_pi
» Мир безумного / Counter-Strike 2 - релиз
» WarCraft 3 / Крашит и Вылетает
Ред. host_pi
» XGM Конкурсы / Большой Турнир Ландшафтеров 2023
Ред. host_pi
» WarCraft 3 / какая есть софтина по переименованию функций и переменных?
даже лог присутствует, не ну это песня
Ред. host_pi
» WarCraft 3 / Azerothien Militia
» WarCraft 3 / какая есть софтина по переименованию функций и переменных?
Ред. host_pi
» WarCraft 3 / какая есть софтина по переименованию функций и переменных?
а ты точно продюсер? (в смысле погромист)
а замена " f" испортит последующую замену " fu"
не проще ли заменить "," на " , " а потом работать с " fu " ? что сократит твоих 7 замен всего до 2. это описано выше под именем v1
Ред. host_pi
» WarCraft 3 / какая есть софтина по переименованию функций и переменных?
а на чистой карте с добавленным war3map.j оставил этот j файл без изменений (сам j файл выложен ниже)
и также после своего "рекаверинга" удаляет HM3W заголовок, предлагая юзеру назад допиливать самостоятельно новый mpq файл до нормальной w3x карты
но есть пара моментов:
1 - работа происходит не с изначальным j файлом а через создание war3map.wct
2 - чуть изменяется оригинальный код (даже через количество строк), что не удобно при сравнении j и wct файлов - добавляется неотключаемая? отсылка к именам старых функций
3 - также он добавляет неотключаемые? строковую табуляцию и пробелы вокруг операторов - что делает различия между новым и оригинальном кодом практически в каждой строке
т.е. технически способ рабочий, но удобство надо смотреть более подробно
и это первое хоть сколько-то автоматическое решение вопроса из шапки
обрабатываемый j файл есть в replit.com/@egxwaxg111111/111 или тут controlc.com/2fb2e68c или тут xgm.guru/files/100/314140/comments/518102/war3map.j
т.е либо реплит не может обработать 20 тыс строк, либо работа кода на обработке какой-то строки прерывается
цвет подсветки строк после 104 строки в output.j магическим образом меняется
Ред. host_pi
» WarCraft 3 / какая есть софтина по переименованию функций и переменных?
то можно дополнительно изъять из кода (до и после) только текст в кавычках и его сравнить, а потом изменённые части вернуть в исходное положение
или ждать таки софтину от сообщества ну или писать самому и публиковать
т.е. первый список - что заменяем (особо актуально для разных запротекченных версий одной карты, когда в разных версиях названия одних и тех же функций отличаются)
второй список - на что заменяем (когда мы разобрались в логике карты и уже можем давать функциям осмысленное название, ну либо когда под руку попался незапротекченный код с оригинальными названиями функций)
если пользователь второй список не ввёл то Word12345 или иным правилом
также можно добавить автоматический парсинг списка глобалок и всех имён функций
v1 - поставить пробелы вокруг операторов + заменять с пробелами " text "
v2 - полурабочий X-deprotect + "заменить запутанные имена глобальных переменных"
v3 - заменять "слово целиком" + с доп проверкой внутри кавычек
Ред. host_pi
» WarCraft 3 / какая есть софтина по переименованию функций и переменных?
а как работает "Только слово целиком" ? по каким законам? проверяет слева и справа чтобы не [A-z] [А-я] было?
PT153:
Ред. host_pi
» WarCraft 3 / какая есть софтина по переименованию функций и переменных?
тогда бы никто не протектил карты, если бы она не работала
на глаз скроллить код? и на глаз отсеивать где переменная, а где часть слова?
почему консольный pjass умеет различать где переменная, где функция, умеет сверять типы данных, но нет ни одной софтины, которая бы их переименовывала?
предвосхищаю "не нравится - сделай сам такую"
а потом заменять " fu " , " nc " , " ti " , " on "
в принципе - если накатать автору этой софтины чтобы добавил (или запилить самому) простановку пробелов вокруг запятых - то получится уже что-то
+ с массивами заменить a[i] на a [ i ]
ну а потом написать автоматический переименоватор " fu " в Test1 , " nc " в Test2 итд
костыльно всё это конечно, но с этим уже можно попробовать работать
т.к. для написания подобной софтины-переименовальщика не требуется особых знаний, можно запилить на любом языке
сначала проставить пробелы (исключая текст в кавычках) вокруг всех операторов !(),<>==+-[] , а потом переименовать " fu "
т.е. вводишь в неё списком fu=Test1 nc=Test2 ti=Test3 on=Test4, а на выходе получаешь переименованный ЧИТАБЕЛЬНЫЙ рабочий код
» WarCraft 3 / Стол заказов Мульти Ледяные Стрелы
где тогда комментарий или текст "заказ выполнен" ?
Ред. host_pi
» WarCraft 3 / какая есть софтина по переименованию функций и переменных?
цель этой задумки - вручную без ломания кода вернуть нормальные названия функциям после протекта (состоящим из 2-3 символов)
возьми любой j файл в своей карте и по своему совету замени как написано в примере ниже, я посмотрю потом на твою карту
Ред. host_pi
» WarCraft 3 / как запустить на 1.26 карту [ Nature's Call - Circle Defense ] ?
конвертация return bug для UNIT <-> INTEGER
» WarCraft 3 / Стол заказов Мульти Ледяные Стрелы
там и решение есть
» WarCraft 3 / Иконки Воды
у иконок от васянов-нонеймов - два вагона блюра, потом сверху размытие, в конце полирнуть фильтром гаусса
Ред. host_pi
» WarCraft 3 / [вакансия] скачать w3x карты из QQ группы
» WarCraft 3 / [вакансия] скачать w3x карты из QQ группы
Ред. host_pi
» WarCraft 3 / [вакансия] скачать w3x карты из QQ группы
сроки любые, это делается за 10 минут
Ред. host_pi
» WarCraft 3 / [вакансия] скачать w3x карты из QQ группы
может быть ответ и есть такой:
双人版
попробуй просто эту же строку ввести в ответ которая в вопросе
там тебе пишут в самом вопросе, что ответ такой-то - вместо вопроса сразу ответ тебе написали
Ред. host_pi
» WarCraft 3 / [вакансия] скачать w3x карты из QQ группы
" 双人版 " это вторая часть в названии 橙色蘑菇的约会-双人版
Ред. host_pi
» WarCraft 3 / [вакансия] скачать w3x карты из QQ группы
2 - 橙色蘑菇的约会-双人版
» WarCraft 3 / [вакансия] скачать w3x карты из QQ группы
» WarCraft 3 / На какой версии лучше работать?