Slack64 Опубликовано 23 января, 2018 Автор Поделиться Опубликовано 23 января, 2018 Спасибо всем за советы и замечания, я пересмотрел алгоритмыпроверки на некоторые правила и в данный момент занялся переделкой,прошу подождать несколько дней. 2 Ссылка на комментарий
Slack64 Опубликовано 24 января, 2018 Автор Поделиться Опубликовано 24 января, 2018 Движок не опознает символ #-комментария я всегда знал что если стоит # то после неё можно писать всё что угоднои это не должно влиять на работу программы, но оказалось,что даже в строке которая без нодов и начинается сначала,если поставить скобку в любом месте, то error !?## { это строка комментария#получается что движок не понимает строк с комментариями, а просто тупоищет скобки и если не шаблон, то error, но тогда мне непонятно следующее,сделал такой вариант#{150}{}{Вы видите СЛОНА.}{150}{}{Вы видите Освальда.} в игре вывелась строка - Вы видите Освальда, а почему не СЛОНА если движку # по фигу,скобки ведь есть и всё по шаблону и правильно второй вариант{150}{}{Вы видите СЛОНА.}{150}{}{Вы видите Освальда.} опять вывелось - Вы видите Освальда, это как движок понял что Освальд не СЛОН,может это СЛОНА так зовут - Освальд,номер ведь одинаковый и Освальд идёт второй строкой вариант три{150}{}{Вы видите Освальда.}#{150}{}{Вы видите СЛОНА.} а вот здесь мы получаем сообщение - Вы видите СЛОНАполучается что если номер идентичен, то выводится вторая строкаи не важно что перед ней стоит # просто чудеса .... ) Ссылка на комментарий
Mr.Sталин Опубликовано 24 января, 2018 Поделиться Опубликовано 24 января, 2018 просто чудеса .... )Нет никаких чудес!В данном случае строка под номером 150 переопределяется последней найденной с таким же номером. Ссылка на комментарий
Mr.Sталин Опубликовано 24 января, 2018 Поделиться Опубликовано 24 января, 2018 Опишу тебе алгоритм проверки без regex, посредством forЧитаем файл в массив символов и с помощью for проходится по каждому символу массива.Если в массиве встретился символ '{', увеличиваем переменную OpenCurve, - указывая что нашли открывающую скобку.Далее в проходе по символам если встречается '}' уменьшаем OpenCurve, и увеличиваем CloseCurve - указывая что группа скоб закрылась.Но если в процессе проверки встречается опять '{' вместо требуемой '}' увеличиваем OpenCurve и уменьшаем OpenCurve.Тут цель этих переменных CloseCurve и OpenCurve, показать, что если в процессе прохода по символам их значение превысит число 1, то структура скоб в файле нарушена. Вот такой простеньких алгоритм проверки без громоздких регулярных выражений, который я применил в проверке. for (int offset = 0; offset < len; offset++) { // len - длина файла (количество символов) char ch = TextContent[offset]; //ch - здесь проверяемый символ из массива. if (ch == '{') { openCurve++; //увеличиваем if (closeCurve > 0) closeCurve--; // уменьшаем } else if (ch == '}') { closeCurve++; openCurve--; } // проверяем переменные if (closeCurve > 1) { errorOpenCurve = true; break; // ошибка выход } if (openCurve > 1) { errorCloseCurve = true; break; // ошибка выход }} Ссылка на комментарий
Slack64 Опубликовано 24 января, 2018 Автор Поделиться Опубликовано 24 января, 2018 Опишу тебе алгоритм проверки без regex, посредством forспасибо, посмотрю на вариант в цикле,но в принципе я разобрался с регексами и крышками, и потихоньку переделываю скрипт,со скобками за комментом уже всё сделал, теперь не важно где стоит # в начале,в середине, в конце, главное что если за ней будет скобка, выведется сообщение,проверяю в сроках# {{100}{}{} # {{100}{pc}{текст # {{100}{}{текст # {на присутствие, есть ли та, или другая /\{|\}/моя ошибка была том,что я изначально пошёл не правильным путём,потому что пропустил твоё замечание по работе движка,да ещё не понятно зачем наделал лишних правил,убрал лишнее и у меня уже скрипт сократился раза в три,теперь надо поправить проверку на основную триаду такой момент, Перл он сам по себе заточен для по стройной обработкии одно дело пробежать сразу по всей строке и переход на следующую,другое дело перебирать каждую строку в цикле, скорость выполнения уменьшится,понятно что на Си цикл будет быстрее обрабатываться, но я Си не знаюв регексах есть правило проверки на присутствие в строкеN-го кол-ва символов, то есть мы ведь знаем сколько должно бытьтех и других скобок в строке, но что-то у меня с этим вариантом не получилось 1 Ссылка на комментарий
Magus Опубликовано 24 января, 2018 Поделиться Опубликовано 24 января, 2018 я всегда знал что если стоит # то после неё можно писать всё что угоднои это не должно влиять на работу программы, но оказалось,что даже в строке которая без нодов и начинается сначала,если поставить скобку в любом месте, то error !?## { это строка комментария#получается что движок не понимает строк с комментариями, а просто тупоищет скобки и если не шаблон, то error, но тогда мне непонятно следующее,сделал такой вариант#{150}{}{Вы видите СЛОНА.}{150}{}{Вы видите Освальда.} в игре вывелась строка - Вы видите Освальда, а почему не СЛОНА если движку # по фигу,скобки ведь есть и всё по шаблону и правильно второй вариант{150}{}{Вы видите СЛОНА.}{150}{}{Вы видите Освальда.} опять вывелось - Вы видите Освальда, это как движок понял что Освальд не СЛОН,может это СЛОНА так зовут - Освальд,номер ведь одинаковый и Освальд идёт второй строкой вариант три{150}{}{Вы видите Освальда.}#{150}{}{Вы видите СЛОНА.} а вот здесь мы получаем сообщение - Вы видите СЛОНАполучается что если номер идентичен, то выводится вторая строкаи не важно что перед ней стоит # просто чудеса .... )По ссылке, что я дал, ровно это и написано, английским по белому. FO2tweaks: неограниченные напарники, запрет напарникам стрельбы очередями, улучшенные гранаты итп.Переводы: Fallout Fixt , Restoration Project , Dangerous Quest! Инструменты: расширение VScode с поддержкой скриптов Fallout.Информация: документация к sfall, вики по Fallout: Nevada, вики PlayItHardcore.Если есть вопросы, в личку не пишите, лучше пишите на форум. Ссылка на комментарий
Slack64 Опубликовано 24 января, 2018 Автор Поделиться Опубликовано 24 января, 2018 По ссылке, что я дал, ровно это и написано, английским по белому.да, спасибо, но я Вам ответил ранее что питона не знаю,поэтому не стал просматривать весь листинг, зачем так сразу - английским по белому,да и к тому же я англ. не знаюя вроде не писал что знаю как и могу это сделать на 100%, просто решил попробовать,но не обещал что всё получится,да и соревноваться в программировании не планировал,потому что у меня в этом вопросе знаний чуть больше 0 Ссылка на комментарий
Slack64 Опубликовано 25 января, 2018 Автор Поделиться Опубликовано 25 января, 2018 если у кого найдётся время, проверте пожалуйста, не пропустил ли я ещё что-тосписок вариантов скобок на ошибки по триаде {700}{}{верно}#{701}{}{ верно}#702{}{не верно}#{703{}{не верно}#{704}{{не верно}#{705}}{не верно}#{706 }{}{не верно#{ 707}{}{не верно}#{708}{}{{не верно}#{709}{}}{не верно}#{710}}{}{не верно}#{{711}{}{не верно}#{712}{{}{не верно}#{713}{}{не верно}}#{714}{}{не верно#{715}{}{не } верно}#{716}{}{не { верно}#{717}{17}{верно}#{718}{ok}{верно}#{719}19}{не верно}#{729}{20{не верно}#{721}{ 21}{не верно}#{722}{}{}#верно{723}{}{}{#не верно{724}{}{}}#не верно725}{}{}#не верно{726{}{}#не верно{727}}{}#не верно{728}{{}#не верно{729}{}}#не верно{730}{}{#не верно{731}{#не верно{732}}#не верно{733}#не верно на данный момент я уже сделал, что всё перечисленноебез проблем ловится одним коротким правилом по регексам 2 Ссылка на комментарий
Mr.Sталин Опубликовано 25 января, 2018 Поделиться Опубликовано 25 января, 2018 такой момент, Перл он сам по себе заточен для по стройной обработкии одно дело пробежать сразу по всей строке и переход на следующую,другое дело перебирать каждую строку в цикле, скорость выполнения уменьшится,не может быть чтобы перл не работал с массивом символов - видимо просто не совсем хорошо знаешь язык.на заметку регулярки во всех языках, это самый медленный способ для поиска, так что циклы по любому быстрее регексов. но в нашем случае это не критично и утилита работает быстро. Ссылка на комментарий
Slack64 Опубликовано 25 января, 2018 Автор Поделиться Опубликовано 25 января, 2018 не может быть чтобы перл не работал с массивом символов - видимо просто не совсем хорошо знаешь язык.на заметку регулярки во всех языках, это самый медленный способ для поиска, так что циклы по любому быстрее регексов. но в нашем случае это не критично и утилита работает быстро.так я уже несколько раз писал, что знаний и опыта мало,работает Перл и с массивом, и с хешем, rк примеру можно сделатьшаблон а затем сравнение по элементам, но это надо же делать )кстати, ты мне писал про \w+ так вот это не работает с русскими буквами,не важно в какой кодировке, я проверял, да и в доке об этом написано забыл спросить, а что насчёт пробела, к примеру { 100} или {100}{ 10}error или по фигу, и можно не проверять на такое насчёт быстроты, я на днях Squid 4.0.2 компилил,так он у меня на железке 2 CPU по 8 ядер, собирался 20 минут,интересно, а на одно-ядерном атоме кальмар наверно несколько часовбудет собираться, если вообще соберётся ) Ссылка на комментарий
Mr.Sталин Опубликовано 25 января, 2018 Поделиться Опубликовано 25 января, 2018 > забыл спросить, а что насчёт пробела, к примеру { 100} или {100}{ 10}Если в скобке с номером будет пробел начальный/конечный то будет вылет. Для остальных пофиг. 1 Ссылка на комментарий
Slack64 Опубликовано 25 января, 2018 Автор Поделиться Опубликовано 25 января, 2018 Спасибо, всё понял, у меня уже почти всё получилось, остался один вопросик,так как у тебя большой опыт по игре, подскажи какие символы используютсяв диалоговом тексте кроме этих, которые мне попадались в тексте,через пробел чтобы понятно было . , ! ? ' " [ ] - = ! : что нужно их этого, или могут все из этих присутствовать < > $ % ^ & * ( ) | \ / ; @ Ссылка на комментарий
Magus Опубликовано 25 января, 2018 Поделиться Опубликовано 25 января, 2018 Ссылку на вики я имел ввиду.Вообще, отдельный скрипт для проверки это неплохо, но, мне кажется, мало востребовано. Если бы в какой-то редактор встроено, это другое дело.В тексте могут присутствовать вообще любые символы. 1 FO2tweaks: неограниченные напарники, запрет напарникам стрельбы очередями, улучшенные гранаты итп.Переводы: Fallout Fixt , Restoration Project , Dangerous Quest! Инструменты: расширение VScode с поддержкой скриптов Fallout.Информация: документация к sfall, вики по Fallout: Nevada, вики PlayItHardcore.Если есть вопросы, в личку не пишите, лучше пишите на форум. Ссылка на комментарий
Slack64 Опубликовано 25 января, 2018 Автор Поделиться Опубликовано 25 января, 2018 Ссылку на вики я имел ввиду.Вообще, отдельный скрипт для проверки это неплохо, но, мне кажется, мало востребовано. Если бы в какой-то редактор встроено, это другое дело.В тексте могут присутствовать вообще любые символы.кроме скобок ))востребование, да, это надо было делать ещё когда только 1-й Фол вышел,но я тогда другим занимался, да и первые Фолы я сначала пропустил,начал играть с 3-го и только уже после Вегаса, вернулся и прошёл 1-2спасибо 1 Ссылка на комментарий
Slack64 Опубликовано 25 января, 2018 Автор Поделиться Опубликовано 25 января, 2018 вместо того большого кол-ва правил что я насочинял ранее, всё свелось к этомуи если бы \w дружила с русскими буквами, было бы ещё проще,я разделил текст и то что за ним на две части, поэтому $ конец строки,вторая часть отдельно проверяется, там только на скобки # проверка правильного формата триадыif (($string =~ /^\{\d+\}\{\}\{[A-Za-zА-Яа-я0-9\s\!\@\$\%\^\&\*\(\)\-\=\_\+\|\\\[\]\;\:\'\"\,\.\<\>\/\?…]+\}$/) || ($string =~ /^\{\d+\}\{[A-Za-zА-Яа-я0-9\s\!\@\$\%\^\&\*\(\)\-\=\_\+\|\\\[\]\;\:\'\"\,\.\<\>\/\?…]+\}\{[A-Za-zА-Яа-я0-9\s\!\@\$\%\^\&\*\(\)\-\=\_\+\|\\\[\]\;\:\'\"\,\.\<\>\/\?…]+\}$/) || ($string =~ /^\{\d+\}\{\}\{\})$/) {....} Ссылка на комментарий
Mr.Sталин Опубликовано 25 января, 2018 Поделиться Опубликовано 25 января, 2018 так как у тебя большой опыт по игре, подскажи какие символы используютсяНе совсем понял а зачем проверка на отдельные символы? > \w дружила с русскими буквамину тут точно проблема кодировки, ищет наверное в UTF8 а русс символы в файле в ANSI 1251 Ссылка на комментарий
Slack64 Опубликовано 25 января, 2018 Автор Поделиться Опубликовано 25 января, 2018 Не совсем понял а зачем проверка на отдельные символы? > \w дружила с русскими буквамину тут точно проблема кодировки, ищет наверное в UTF8 а русс символы в файле в ANSI 1251у меня локаль стоит UTF-8 и я пробовал текст в UTF-8 написать, не видит напрямую,попробую сделать use open qw( :encoding(CP1251) может сработаета в принципе и так уже свелось к 3-м строкам, правда навороченным ) да это не отдельная проверка, просто в строке могут присутствовать {623}{}{ ::: Статистика :::}{502}{}{[Уходит.]}{312}{}{Чужак должен уйти!}и т.д. Ссылка на комментарий
Mr.Sталин Опубликовано 25 января, 2018 Поделиться Опубликовано 25 января, 2018 Вообще, отдельный скрипт для проверки это неплохо, но, мне кажется, мало востребовано. Если бы в какой-то редактор встроено, это другое дело.А мне кажется так удобнее положил чекнул, другое дело если бы оно имело графический отчет какой-нибудь. Подобную проверку я встроил в sfallовский скриптовый редактор, но с другой концепцией и только на 1 файл, ибо что-то лень делать поддержку на все файлы в папке, может когда-нибудь потом, сейчас другие планы. да это не отдельная проверка, просто в строке могут присутствовать {623}{}{ ::: Статистика :::}{502}{}{[Уходит.]}{312}{}{Чужак должен уйти!}и т.д.И все равно не понял зачем их чекать?Я думаю вот эти символы точно никогда не будут использоваться^ \ @ - но смысл их чекать. Ссылка на комментарий
Slack64 Опубликовано 26 января, 2018 Автор Поделиться Опубликовано 26 января, 2018 А мне кажется так удобнее положил чекнул, другое дело если бы оно имело графический отчет какой-нибудь. Подобную проверку я встроил в sfallовский скриптовый редактор, но с другой концепцией и только на 1 файл, ибо что-то лень делать поддержку на все файлы в папке, может когда-нибудь потом, сейчас другие планы. И все равно не понял зачем их чекать?Я думаю вот эти символы точно никогда не будут использоваться^ \ @ - но смысл их чекать.если не чекать, то при всём хорошо, у меня мессаже что строка не коррект,я потом напишу что и как обрабатывается и на что про что ошибки выводит,мне ещё пару проблем надо решить если всё получится, то я затем GUI думаю добавить, тогда наверно можнобудет и не в файл, а в окно, но только наверно надо по очереди,а не все 500 сразу, чтобы до утра не пришлось окна закрывать ) крышку и обратную не видел, а вот собачка попадалась я теперь правильно сделал листинг, разделил процедурына подпрограмки, а то в том что было в один много повторный if, сам запутался Ссылка на комментарий
Slack64 Опубликовано 26 января, 2018 Автор Поделиться Опубликовано 26 января, 2018 Mr.Сталинработает \w если указать cp1251, но тогда не ловит служебные символы которыебыли набраны в utf8, так что лучше указать напрямую, или \xb8 \х92 ... на Перл в цикле который for, тоже можно регексы исп. и можно так же делатьвозврат на начало строки, чтобы проверять и на др. ошибкикроме скобок и фиксировать, а затем вывести сообщение что строка содержит 6 ошибокразличного характера - проверяйте )конечно если сделать шаблон элементов в массиве и сопоставлять символпри проверке на соответствие позиции, то этот вариант будет наверно быстрееи проще, мы ведь знаем сколько в строке должно быть скобок и их расположение,там где не их место - ошибка Ссылка на комментарий
Slack64 Опубликовано 27 января, 2018 Автор Поделиться Опубликовано 27 января, 2018 SymbolFix 0.1.27 архив обновлён 27/01/2018 фактически скрипт был переписан почти весь заново,примеры и пояснения по выводу сообщений в описании,в исходном скрипте добавлены комментарии Огромная благодарность талантливым людямMr. Сталин, Pyran, Foxx, Burn,за проявленную отзывчивость и оказанную помощьв процессе разработки этой маленькой утилиты. 2 Ссылка на комментарий
Slack64 Опубликовано 5 февраля, 2018 Автор Поделиться Опубликовано 5 февраля, 2018 NodeFix 0.2.0.5 архив обновлён 05/02/2018, описание и исходный листинг в архиве это новая версия утилиты для ОС Windows написана на MASM32 ))выполняет туже функцию что и прошлая версия, которая была написана на Perl,но теперь все сообщения выводятся на русском языке и в стандартном графическом окне,работает быстрее и размер исполняемого файла уменьшился до смешного для ОС Линукс скрипт написанный на Perl, остался прежний новая версия SymbolFix в проекте 2 Ссылка на комментарий
Mr.Sталин Опубликовано 5 февраля, 2018 Поделиться Опубликовано 5 февраля, 2018 Пролив Сталина... Ссылка на комментарий
Slack64 Опубликовано 5 февраля, 2018 Автор Поделиться Опубликовано 5 февраля, 2018 Графическое окно? - это же обычное черноеконсольное окно дос)я уж удивился на ассемблере да еще и с графическим окном - фантастика)не понял, что ты имел ввиду про консольное окно дос и про какую фантастику?ты новую утилиту NodeFix смотрел на чём написана и какое окно выводит? SymbolFix я пока ещё не переделывал, а в новой версии NodeFixсообщения выводятся в MessageBox, окно которого ведь не консольное,а стандартное Windows, поэтому я и написал графическое, только чтоbutton один, но могу и 3 вывести, если кому мало )диалогового окна не делал, для этой утилиты думаю что и не надо у меня проблема с выводом окна на Перл возникла из-за компилятора,не буду описывать причину, это долго и не нужно, поэтому я вернулсяк тому на чём писал в молодости, что мне больше понятно и нравится,но MASM32 это ведь не настоящий Ассемблер, посмотри исходник,там фактически всё на API функциях Ссылка на комментарий
Mr.Sталин Опубликовано 5 февраля, 2018 Поделиться Опубликовано 5 февраля, 2018 ты новую утилиту NodeFix смотрел на чём написана и какое окно выводит?SymbolFix я пока ещё не переделывал, а в новой версии NodeFixсообщения выводятся в MessageBox, окно которого ведь не консольное,А тогда прошу прощения перепутал утилиты) Ссылка на комментарий
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти