beliy26rus Posted September 11, 2014 Share Posted September 11, 2014 (edited) Программа для замены типа рейтинга в файлах конфигурации XVM Для замены типа рейтинга необходимо выбрать папку с конфигурацией XVM, выбрать тип рейтинга, который Вам необходим и нажать кнопку "Заменить". Для типов рейтинга, если необходимо, можно добавить секцию в файл Ratings.xml <Rating> <Designation>xwn8</Designation>//значение рейтинга <Description>рейтинг WN8 по шкале XVM (00-99, XX для лучших игроков)</Description>//описание </Rating> Автор скрипта по замене seriych. Оригинальная тема http://www.koreanrandom.com/forum/topic/15199-%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F-%D0%B8-%D0%BF%D0%BE%D0%BB%D1%83%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0-%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D0%B0-%D1%80%D0%B5%D0%B9/ *Для корректной работы необходим Microsoft .NET Framework 4 Исходники проект на WPF XvmChangeTypeRating.zip Edited September 13, 2014 by beliy26rus 6 @ Quote Link to comment Short link Share on other sites More sharing options...
TornadoCat Posted September 11, 2014 Share Posted September 11, 2014 Аналог скрипта товарища @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted September 11, 2014 Share Posted September 11, 2014 (edited) Аналог скрипта товарища В более понятной визуализации для обычного рядового пользователя. Автору +. Edited September 11, 2014 by Kotyarko_O @ Quote Link to comment Short link Share on other sites More sharing options...
TornadoCat Posted September 11, 2014 Share Posted September 11, 2014 Автору +. аналогично )Я заметил, просто высказал это ) @ Quote Link to comment Short link Share on other sites More sharing options...
seriych Posted September 11, 2014 Share Posted September 11, 2014 (edited) к сожалению пока криво, точнее очень криво. 1) Не обрабатывает расширенное форматирование макросов. Например {{xwn8%2s|--}} превращает в {{eff%2s|--}} 2) Не следит, что заменяемая строка вообще является макросом. Это может быть названием текстового поля, комментарием, названием подстановки, подсекцией colors, макросом {{teff}}... Всё это скрипт поменяет и может поломать конфиг 3) Не меняет опцию "xwnInCompany" 4) Зачем сделан выбор строго заданных названий файлов? Что делать, если они у пользователя другие? Однофайловые конфиги люди юзают, в миникарте стату тоже сайчас можно, просто файлы по-другому называть могут 5) При чем тут картинка диапазона качества? У пользователя границы цветов, сами цвета и их количество могут быть другими. Тогда уж было проще было сделать графическую оболочку к моему скрипту (его можно вызывать с параметрами в виде рейтинга папок и файлов). Ну или переписать его на C проблем не составляет, там вроде всё понятно в скрипте. Edited September 11, 2014 by seriych @ Quote Link to comment Short link Share on other sites More sharing options...
beliy26rus Posted September 12, 2014 Author Share Posted September 12, 2014 к сожалению пока криво, точнее очень криво. 1) Не обрабатывает расширенное форматирование макросов. Например {{xwn8%2s|--}} превращает в {{eff%2s|--}} 2) Не следит, что заменяемая строка вообще является макросом. Это может быть названием текстового поля, комментарием, названием подстановки, подсекцией colors, макросом {{teff}}... Всё это скрипт поменяет и может поломать конфиг 3) Не меняет опцию "xwnInCompany" 4) Зачем сделан выбор строго заданных названий файлов? Что делать, если они у пользователя другие? Однофайловые конфиги люди юзают, в миникарте стату тоже сайчас можно, просто файлы по-другому называть могут 5) При чем тут картинка диапазона качества? У пользователя границы цветов, сами цвета и их количество могут быть другими. Тогда уж было проще было сделать графическую оболочку к моему скрипту (его можно вызывать с параметрами в виде рейтинга папок и файлов). Ну или переписать его на C проблем не составляет, там вроде всё понятно в скрипте. Если вы не против, буду использовать ваши скрипты. За расширенное форматирование совсем забыл, конфиг, который себе настраивал у меня уже больше полугода, таких фич там еще не было. @ Quote Link to comment Short link Share on other sites More sharing options...
seriych Posted September 12, 2014 Share Posted September 12, 2014 (edited) Если вы не против, буду использовать ваши скриптыАбсолютно не против, они в открытом доступе и их можно использовать как угодно. Скрипт достаточно взять один, любой из представленных. Отличаются они только одним параметром: если рейтинг не передан в качестве аргумента, то используется прописанный внутри по умолчанию. Так вот этот прописанный внутри везде свой, а остальной код абсолютно идентичен. А так как рейтинг можно передавать скрипту в виде первого аргумента при вызове, то можно юзать один скрипт.В C++ Builder я вызываю так: AnsiString ratingS = RatingRadio->Items->Strings[RatingRadio->ItemIndex].LowerCase(); AnsiString params = AnsiString().sprintf("\"%s\" %s \"%s\"", dataDir+"change_macros.js", ratingS, configPath); ShellExecuteA(NULL, "open", "cscript.exe", params.c_str(), NULL, SW_HIDE); cscript.exe - встроенная виндовая прога, которая и обрабатывает .js файлы. Edited September 12, 2014 by seriych @ Quote Link to comment Short link Share on other sites More sharing options...
beliy26rus Posted September 12, 2014 Author Share Posted September 12, 2014 Абсолютно не против, они в открытом доступе и их можно использовать как угодно. Скрипт достаточно взять один, любой из представленных. Отличаются они только одним параметром: если рейтинг не передан в качестве аргумента, то используется прописанный внутри по умолчанию. Так вот этот прописанный внутри везде свой, а остальной код абсолютно идентичен. А так как рейтинг можно передавать скрипту в виде первого аргумента при вызове, то можно юзать один скрипт. В C++ Builder я вызываю так: AnsiString ratingS = RatingRadio->Items->Strings[RatingRadio->ItemIndex].LowerCase(); AnsiString params = AnsiString().sprintf("\"%s\" %s \"%s\"", dataDir+"change_macros.js", ratingS, configPath); ShellExecuteA(NULL, "open", "cscript.exe", params.c_str(), NULL, SW_HIDE); cscript.exe - встроенная виндовая прога, которая и обрабатывает .js файлы. rates.png Понял, спасибо. постараюсь сегодня переделать @ Quote Link to comment Short link Share on other sites More sharing options...
beliy26rus Posted September 12, 2014 Author Share Posted September 12, 2014 Внес правки. 2 @ Quote Link to comment Short link Share on other sites More sharing options...
seriych Posted September 12, 2014 Share Posted September 12, 2014 (edited) Внес правки.Если в пути пробелы, не работает (надо в кавычках пути передавать).Также желательно сделать предположительное определение пути к конфигу и определение языка системы (хотя бы два языка интерфейса сделать: русский и английский). Я делаю это так: "путь к конфигу" String path = ""; TRegistry *reg = new TRegistry(KEY_READ); // Определяем путь к конфигу через ассоциации reg->RootKey = HKEY_CLASSES_ROOT; reg->OpenKey(".wotreplay\\shell\\open\\command\\", 0); path = reg->ReadString(""); path = AnsiRightStr(path, path.Length()-1); path = AnsiLeftStr(path, path.Pos("\\WorldOfTanks.exe\"")); path = path + configFolder; return path; // Определяем путь к конфигу через инсталлятор AnsiString Wow64 = ""; if ((TOSVersion::ToString()).Pos("64-bit") > 0) Wow64 = "Wow6432Node\\"; reg->RootKey = HKEY_LOCAL_MACHINE; reg->OpenKey("SOFTWARE\\" + Wow64 + "Microsoft\\Windows\\CurrentVersion\\Uninstall\\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812}_is1\\", 0); path = reg->ReadString("InstallLocation"); path = path + configFolder; return path; // Определяем путь к конфигу через приложения reg->RootKey = HKEY_CLASSES_ROOT; reg->OpenKey("Applications\\WorldOfTanks.exe\\shell\\open\\command\\", 0); path = reg->ReadString(""); path = AnsiRightStr(path, path.Length()-1); path = AnsiLeftStr(path, path.Pos("\\WorldOfTanks.exe\"")); path = path + configFolder; return path; "язык системы" // Определяем язак системы reg->RootKey = HKEY_LOCAL_MACHINE; reg->OpenKey("SYSTEM\\CurrentControlSet\\Control\\Nls\\Language\\", 0); lang = reg->ReadString("Default"); if (lang=="0419" || lang=="0422" || lang=="0423" || lang=="043f") return "Rus"; else return "Eng"; Edited September 12, 2014 by seriych @ Quote Link to comment Short link Share on other sites More sharing options...
beliy26rus Posted September 12, 2014 Author Share Posted September 12, 2014 Если в пути пробелы, не работает (надо в кавычках пути передавать). Также желательно сделать предположительное определение пути к конфигу и определение языка системы (хотя бы два языка интерфейса сделать: русский и английский). Обновил, добавил локализацию, пока штатными методами,но так необходимо добавлять файлы ресурсов и компилить приложение, завтра наверное переделаю, чтобы файлы локализации, можно было в xml хранить. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.