Перейти к содержанию

[tools] SimbolFix - Проверка текста на ошибки для Fallout 1 & 2.


Slack64

Рекомендуемые сообщения

А тогда прошу прощения перепутал утилиты)

да всё нормально, я в утилитке ещё не доделал проверку на соответствие

места расположения скобок, но в описании сделал предупреждение,

что исп. только на 'исправленных' файлах

я раньше писал на АСМе, затем на TASM32, но это творение Борланда уже мертвяк,

да и библиотек там изначально мало было, приходилось INC'и в инете собирать,

поэтому перешёл на MASM32

мне надо было сразу делать утилиту на MASM32, но я ленивый, вот и сделал на Перл,

который знаю не совсем хорошо, только на уровне для тех задач которые мне были нужны

по работе

согласись, написать одну строку if ($_ =~ /^{100}/) ....

или ставить указатель на буфер строки в памяти, загрузка байта в регистр,

проверка, следующий шаг, поверка, возврат обратно к циклу ....

))

 

а ты каким Debugger'ом пользуешься?

Ссылка на комментарий

Никаким, и мне это не надо, я же не программист.

так крэкеры, они то же не программисты )

я почему спросил, когда прогу писал, то в одном месте затупил и не мог найти причину,

поставил Дебагер и по брэкпоинту отловил косяк в собственном творении )

Ссылка на комментарий

крекеры-шмекеры)

Я visual cтудией мирософта пользуюсь там все в комплекте.

понятно, я с SDK взял windbg, вещь конечно мощная, но без тренировки

с ним тяжело разобраться, да ещё к нему таблица символов на 3 Гб

снёс его и поставил x64dbg, х32 то же поддерживает, проект с 2014 начал развиваться,

маленький, простой и удобный, с ним легко работать

Ссылка на комментарий

NodeFix 0.2.0.7

 

незначительно изменение:

так как длина имени файлов разная, поэтому чтобы не возникло накладки в имени,

на всякий случай добавил функцию очистки строки имени файла в буфере памяти

и заменил иконку на исполняемом файле

это исправление сделано только в утилите NodeFix под ОС Windows

архив обновлён 07/02/2018

Ссылка на комментарий

NodeFix 0.2.0.9

 

добавлена более правильная проверка подсчёта строк с номерами НОДов,

то есть изменено условие проверки на кол-во скобок, СПАСИБО Mr.Сталин

за подсказанный вариант проверки, я сделал шаблон {}{}{}

и при проверке сохраняю скобки в отдельную строку в буфере,

а затем проверяю строку на совпадение с шаблоном, так как кол-во скобок 6

по три в группе, открыта и закрыта, то если будет больше, или меньше,

строка не будет засчитана, и не важно в какой строке, с комментарием,

в пустой, или правильной, единственная пока не доработка,

это если будет такая строка {}{}{} без содержимого, или  к примеру

###{###}###{##}#{###}# кол-во скобок ведь правильно, но что внутри,

пока не проверяется, я работаю над этим вопросом,

но это думаю для данной утилиты не принципиально, потому что она

предназначена для подсчёта по уже проверенным и редактированным файлам,

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

 

это добавление сделано только в утилите NodeFix под ОС Windows

архив обновлён 09/02/2018

Ссылка на комментарий

Mr.Сталин

Ранее у меня не было задач с подсчётом символов в строке,

поэтому сразу и пошёл не тем путём, и не получалось, но я разобрался,

Перл может многое, а foreach в принципе делать то же что и for

 

1. for

$len = length($string);  # получить длину строки

for ($i = 0; $i <= $len; $i++) {

....

}

 

2. foreach

@list = (split //,$string); # загружаем строку  в массив разделяя символы
foreach (@list) {
 ++$count if (($_ eq "{") || ($_ eq "}"));
}

в правильной строке скобок в $count будет 6

 

3. но почитав доки, я сделал ещё проще и это быстрее работает

$bracket_open = () = $string =~ /\{/g;
$bracket_close = () = $string =~ /\}/g;

 

в правильной строке скобок в $bracket_open и $bracket_close будет по 3

 

самое забаное то, что обходимся и без for и без foreach :)

 

я переписал правила, скрипт теперь работает быстрее, скобки ловятся

без проблем, в любом месте и любом количестве, и не нужно ни-какого

множества правил, которых я наделал ранее, надо ещё кое-что проверить,

после этого скомпилирую новую версию и выложу обновление

Ссылка на комментарий

в правильной строке скобок в $bracket_open и $bracket_close будет по 3

самое забаное то, что обходимся и без for и без foreach

 

Тогда я тебя еще немного огорчу, но вот такой вариант тоже правильный) и такой вариант бывает что используется.

...

{#}{}{ тлюля ля труляля

мы везем с собой кота}

...

Как видишь файл для движка это просто массив символов.

И нету такого понятия как строка. :)

Ну да ладно забей пусть будет как есть.

Ссылка на комментарий

 

Тогда я тебя еще немного огорчу, но вот такой вариант тоже правильный) и такой вариант бывает что используется.

...

{#}{}{ тлюля ля труляля

мы везем с собой кота}

...

Как видишь файл для движка это просто массив символов.

И нету такого понятия как строка. :)

Ну да ладно забей пусть будет как есть.

да, я знаю про такие строки, они есть в некоторых файлах и это конечно

задача не простая, здесь только человек может определить, это две

неправильных строки, или вторая продолжение первой, скрипт это ведь

робот, который понимает только равно, или не равно, на такой случай

мой скрипт прсто выводит сообщение о том, что неправильный формат строки

 

этот вариант аналогичен подобному с буквой Я, мы делаем проверку

на то, что Я должна начинатся заглавной, если строка к примеру такая

... мне это не нужно. я ухожу.

правильно должно быть

.. мне это не нужно. Я ухожу.

всё сделали и тут нам попадается строка

{306}{}{Сопр. ядам}

и что с этим делать?

))

 

а про движок я понял, он если нашёл { то заберёт всё что будет до }

и выдаст на экран, а если до следующей { не найдёт }, то выдаст error

Ссылка на комментарий

Обновление архива 16/02/2018

 

обновлены обе утилиты, текущие версии утилит 0.2.1.5

описание использования внутри каждого архива, сделано в формате html

 

список изменений:

 

Nodefix - дополнительно добавлено условие полной проверки строки с номером нода,

чтобы исключить возможность подсчёта строки, с неправильным форматом.

 

Symbolfix - сделан правильный алгоритм проверки скобок в основной строке

и проверки строк с комментариями на присутствие скобок,

основная строка теперь разбивается на три группы со скобками и каждая

группа проверяется отдельно, что даёт возможность конкретнее осуществлять

проверку и в выводе сообщения о ошибке, указывать в какой из групп

находится ошибка в основной строке

 

для тех кто не хочет читать описание )

 

 

 

 

ФОРМАТ ВЫВОДА ОШИБОК

номер оригинальная строка
строка с выводом сообщения о ошибке


(номер - это указатель номера строки для текстового редактора, выводится для удобства поиска)

Примеры:

2 #####{#############################
Строка 2 содержит неверное количество скобок, или неправильный формат.


(в строке 2 присутствует скобка)

3 { 101}{}{[тук тук чача… шии]}
Строка 3 содержит неправильный формат в первой группе скобок.


(в строке 3 присутствует пробел перед номером node)

4 {102{}{Вы получили не особенно свежую бутылку Ядер-Колы.}
Строка 4 содержит неверное количество скобок, или неправильный формат.


(в строке 4 нет скобки закрытия номера node)

8 {106}{#}{Похоже, в автомате кончился товар.}
Строка 8 содержит неправильный формат во второй группе скобок.


(в строке 8 присутствует # не в соответствующей группе)

9 {7}{}{Pip-Boy недоступен во время боя!}
Строка 9 содержит неверную кодировку, или английские символы в третьей группе скобок.


(в строке 9 Пип-бой на английском языке )

10 {101}{}{Вы видите женщину-рейдера.
Строка 10 содержит неверное количество скобок, или неправильный формат.


(в строке 10 нет скобки закрытия строки текста )

12 {101}{}{Вы видите наемницу.} #{Self is female (bude mezi nima tak jedna, max dvм)
Строка 12 содержит неверное количество скобок, или неправильный формат
.


(в строке 12 присутствует скобка в строке с комментарием )

13 {}{}{Вы видите матку пришельцев.}
Строка 13 содержит неправильный формат в первой группе скобок.


(в строке 13 отсутствует номер node)

17 {201}{}{{Вы видите матку пришельцев, ее величественное тело внушает страх.}
Строка 17 содержит неверное количество скобок, или неправильный формат.


(в строке 17 двойные скобки)

52 {501}{}{я смотрю, посетителям здесь не рады. Кто же вы такой?}# /4\/550\
Строка 52 содержит не соответствие буквы Я в третьей группе скобок.


(в строке 52 в начале текста буква Я  должна быть заглавной)
 

106 {9031}{}{Хеxe. Кажется, и старого пса можно обучить новым фокусам.}
Строка 106 содержит неверную кодировку, или английские символы в третьей группе скобок.


(в строке 106 имеются символы не в кодировке CP1251, поэтому выводится сообщение о ошибке
и если переключить кодировку из CP1251 в UTF-8, то эти символы можно увидеть)


106 {9031}{}{..xe. ......., . ....... ... ..... ....... ..... ........}

 

 

 

 

утилиты написаны на Perl и пока что сообщения о ходе выполнения работы,

выводятся в консольном окне, перевод вывода сообщений в стандартный

формат окна Windows, в процессе отлаживания

Ссылка на комментарий

 

Тогда я тебя еще немного огорчу, но вот такой вариант тоже правильный) и такой вариант бывает что используется.

...

{#}{}{ тлюля ля труляля

мы везем с собой кота}

...

Как видишь файл для движка это просто массив символов.

И нету такого понятия как строка. :)

Ну да ладно забей пусть будет как есть.

я разобрался, такой вариант тоже можно обрабатывать

что касается движка, то да, для него нет понятия конец строки это когда стоит ^M,

для него конец строки, это скобка закрытия в третьей группе

Ссылка на комментарий

Nodefix 0.2.2.3

для ОС Windows эта утилита переписана на MASM32 (ранее была написана на Перл)

описание и исходный код в архиве, архив обновлён 23/02/2018

 

при подсчёте количества строк с номером нода, проверяет не только правильность

всей строки на скобки, но и правильность формата первой группы скобок,

в которой номер нода, чтобы исключить возможность ошибочного подсчёта строки,

с неправильным форматом

 

относительно изменения Символфикс, в процессе отладки кода

Ссылка на комментарий

обновление от 01/03/2018

 

в процессе переписывания утилиты Symbolfix с языка Перл на MASM32,

увидел возможность улучшения функции проверки триады и устранил один баг,

который мог проявится, в случае если файл MSG окажется пустой, то есть 0 длины,

поэтому внёс необходимые изменения и обновил версии обеих утилит

Ссылка на комментарий

Обновление от 07/03/2018 версия обеих утилит 2.0.3

 

примечание:

если в свойствах ЕХЕ файла указана версия 1.0.0.0, не стоит обращать

на это внимание, просто не была изменена строка версии в файле ресурсов

 

OS Windows - Symbolfix и Nodefix полностью перенесены со скрипов Perl, на MASM32,

теперь обе утилиты небольшого размера и производительнее в работоспособности.

 

В данном обновлении, в обеих утилитах было кое-что переделано и добавлено,

в сторону улучшения проверки и оптимизации работы, так же устранены некоторые

недочёты, описание и исходный код, внутри архивов, для каждой утилиты.

 

К сожалению это последнее обновление на настоящий момент времени,

мне хотелось бы конечно сделать ещё некоторые добавления по функционалу,

к примеру проверку на то, что если символ стоит после точки, то он должен

быть заглавным и пр., но у меня в настоящий момент появились проблемы

и сколько займёт времени на их решение, я не могу сейчас ответить,

поэтому пока не знаю когда смогу продолжить.

Ссылка на комментарий

СПАСИБО Pyran за замеченную не доработку в утилитах под OS Windows,

если точнее, просто был не предусмотрен вариант того, что некоторые

текстовые редакторы могут не корректно закрывать файлы на сохранении.

На этот случай было добавлено небольшое правило и обновлён архив 08/03/2018

Ссылка на комментарий

Из-за не корректной работы API функции WriteFile под Windows 7

(выяснить причину у меня пока нет возможности) в утилитах написанных

на MASM32 (на платформах Windows XP и Windows 10 проблема не проявлялась),

добавлены версии написанные на Perl и скомпилированные под Win32,

архивы обновлены 18-03-2018

 

 

                       Проект закрыт

Ссылка на комментарий

Ссылки на утилиты восстановлены.

Fallout 2Путеводитель по модам | FAQ | Перевод модов | Путеводитель по RP

Nevada Band: Путеводитель по играм серииFAQ

Fallout Tactics: Путеводитель по модам | FAQ

База Данных: YD\YD\MF

Помогая другим, не забывай о себе =) 

Ссылка на комментарий

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...