какая есть софтина по переименованию функций и переменных в j файле ? [deprotect]
например
переименовать функцию func в Test1
переименовать переменную tion в Test2
переименовать функцию func в Test1
переименовать переменную tion в Test2
Принятый ответ
может быть тому виной кавычки "jass" в 38 строке и формула RegExp перестаёт работать
Нет, просто из-за того, что я разрешил multiline строки, вышло так, что оно матчит закрывающую кавычку, потом кучу линий, затем название переменной, затем кучу линий и затем открывающую кавычку.
Я переделал, теперь всё работает как нужно. Заодно добавил обработку случаев с одинарными кавычками.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован Keparis9
Отредактирован host_pi
цель этой задумки - вручную без ломания кода вернуть нормальные названия функциям после протекта (состоящим из 2-3 символов)
возьми любой j файл в своей карте и по своему совету замени как написано в примере ниже, я посмотрю потом на твою карту
Отредактирован nazarpunk
Отредактирован host_pi
тогда бы никто не протектил карты, если бы она не работала
на глаз скроллить код? и на глаз отсеивать где переменная, а где часть слова?
почему консольный pjass умеет различать где переменная, где функция, умеет сверять типы данных, но нет ни одной софтины, которая бы их переименовывала?
предвосхищаю "не нравится - сделай сам такую"
а потом заменять " fu " , " nc " , " ti " , " on "
в принципе - если накатать автору этой софтины чтобы добавил (или запилить самому) простановку пробелов вокруг запятых - то получится уже что-то
+ с массивами заменить a[i] на a [ i ]
ну а потом написать автоматический переименоватор " fu " в Test1 , " nc " в Test2 итд
костыльно всё это конечно, но с этим уже можно попробовать работать
т.к. для написания подобной софтины-переименовальщика не требуется особых знаний, можно запилить на любом языке
сначала проставить пробелы (исключая текст в кавычках) вокруг всех операторов !(),<>==+-[] , а потом переименовать " fu "
т.е. вводишь в неё списком fu=Test1 nc=Test2 ti=Test3 on=Test4, а на выходе получаешь переименованный ЧИТАБЕЛЬНЫЙ рабочий код
Отредактирован PT153
Отредактирован PT153
А так для работы с кодом рекомендую Notepad++. Легковесный и быстрый редактор текстовых файлов со всеми нужными фичами. Локлизация на русском присутствует. Вот его окно замены и документация.
Отредактирован host_pi
а как работает "Только слово целиком" ? по каким законам? проверяет слева и справа чтобы не [A-z] [А-я] было?
PT153:
Отредактирован host_pi
то можно дополнительно изъять из кода (до и после) только текст в кавычках и его сравнить, а потом изменённые части вернуть в исходное положение
или ждать таки софтину от сообщества ну или писать самому и публиковать
т.е. первый список - что заменяем (особо актуально для разных запротекченных версий одной карты, когда в разных версиях названия одних и тех же функций отличаются)
второй список - на что заменяем (когда мы разобрались в логике карты и уже можем давать функциям осмысленное название, ну либо когда под руку попался незапротекченный код с оригинальными названиями функций)
если пользователь второй список не ввёл то Word12345 или иным правилом
также можно добавить автоматический парсинг списка глобалок и всех имён функций
v1 - поставить пробелы вокруг операторов + заменять с пробелами " text "
v2 - полурабочий X-deprotect + "заменить запутанные имена глобальных переменных"
v3 - заменять "слово целиком" + с доп проверкой внутри кавычек
Отредактирован host_pi
а на чистой карте с добавленным 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 магическим образом меняется
Отредактирован Extremator
При попытке пересохранить карту в редакторе, идёт перезапись этого скрипта... вот здесь обычно и вылезает первое предупреждение что он корявый и карта после этого уже не работает.
Это будут " fu", "fu ", ",fu", "fu,", " fu,", ",fu ", ",fu," для первой, и аналогичные для остальных.
В первые пару раз такой работы глаз конечно может замыливаться, но это дело привычки.
Но я вижу тебе уже подсказали что это именно так и делается.
Я в своём плагине остановился на построении дерева импорта. Но токенизатор в принципе уже всё разметил. Так что если решения не найдётся, то попробую найти время, чтоб сделать переименование для одного файла.
Отредактирован host_pi
а ты точно продюсер? (в смысле погромист)
а замена " f" испортит последующую замену " fu"
не проще ли заменить "," на " , " а потом работать с " fu " ? что сократит твоих 7 замен всего до 2. это описано выше под именем v1
Так ты можешь сразу CTRL+A и DEL
Там где это применимо - это можно применять. И наоборот.
Я разве сказал "выдели всё, нажми авто-замену, и насрать что будет" ?
Отредактирован nazarpunk
Но если у тебя "нечитабельный" скрипт, то скорее всего из него были удалены все лишние пробелы и отступы. Логичное предположение? Хоть и не обязательное.
Отредактирован nazarpunk
Отредактирован host_pi
даже лог присутствует, не ну это песня