Jump to content
Korean Random

Программа для замены типа рейтинга в файлах конфигурации


beliy26rus

Recommended Posts

Программа для замены типа рейтинга в файлах конфигурации XVM

 

post-17703-0-31232200-1410547444_thumb.jpg

 

Для замены типа рейтинга необходимо выбрать папку с конфигурацией 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 by beliy26rus
  • Upvote 6
Link to comment
Short link
Share on other sites

к сожалению пока криво, точнее очень криво.

1) Не обрабатывает расширенное форматирование макросов. Например {{xwn8%2s|--}} превращает в {{eff%2s|--}}

2) Не следит, что заменяемая строка вообще является макросом. Это может быть названием текстового поля, комментарием, названием подстановки, подсекцией colors, макросом {{teff}}... Всё это скрипт поменяет и может поломать конфиг

3) Не меняет опцию "xwnInCompany"

4) Зачем сделан выбор строго заданных названий файлов? Что делать, если они у пользователя другие? Однофайловые конфиги люди юзают, в миникарте стату тоже сайчас можно, просто файлы по-другому называть могут

5) При чем тут картинка диапазона качества? У пользователя границы цветов, сами цвета и их количество могут быть другими.

 

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

Edited by seriych
Link to comment
Short link
Share on other sites

к сожалению пока криво, точнее очень криво.

1) Не обрабатывает расширенное форматирование макросов. Например {{xwn8%2s|--}} превращает в {{eff%2s|--}}

2) Не следит, что заменяемая строка вообще является макросом. Это может быть названием текстового поля, комментарием, названием подстановки, подсекцией colors, макросом {{teff}}... Всё это скрипт поменяет и может поломать конфиг

3) Не меняет опцию "xwnInCompany"

4) Зачем сделан выбор строго заданных названий файлов? Что делать, если они у пользователя другие? Однофайловые конфиги люди юзают, в миникарте стату тоже сайчас можно, просто файлы по-другому называть могут

5) При чем тут картинка диапазона качества? У пользователя границы цветов, сами цвета и их количество могут быть другими.

 

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

Если вы не против, буду использовать ваши  скрипты. За расширенное форматирование  совсем забыл, конфиг, который себе настраивал у меня уже больше полугода, таких фич там еще не было.

Link to comment
Short link
Share on other sites

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

Абсолютно не против, они в открытом доступе и их можно использовать как угодно. Скрипт достаточно взять один, любой из представленных. Отличаются они только одним параметром: если рейтинг не передан в качестве аргумента, то используется прописанный внутри по умолчанию. Так вот этот прописанный внутри везде свой, а остальной код абсолютно идентичен. А так как рейтинг можно передавать скрипту в виде первого аргумента при вызове, то можно юзать один скрипт.

В 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 файлы.

post-8781-0-83085700-1410508009_thumb.png
Edited by seriych
Link to comment
Short link
Share on other sites

Абсолютно не против, они в открытом доступе и их можно использовать как угодно. Скрипт достаточно взять один, любой из представленных. Отличаются они только одним параметром: если рейтинг не передан в качестве аргумента, то используется прописанный внутри по умолчанию. Так вот этот прописанный внутри везде свой, а остальной код абсолютно идентичен. А так как рейтинг можно передавать скрипту в виде первого аргумента при вызове, то можно юзать один скрипт.

В 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 файлы.

 

Понял, спасибо. постараюсь сегодня переделать

Link to comment
Short link
Share on other sites

Внес правки.

Если в пути пробелы, не работает (надо в кавычках пути передавать).

Также желательно сделать предположительное определение пути к конфигу и определение языка системы (хотя бы два языка интерфейса сделать: русский и английский).

Я делаю это так:

"путь к конфигу"

	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 by seriych
Link to comment
Short link
Share on other sites

Если в пути пробелы, не работает (надо в кавычках пути передавать).

Также желательно сделать предположительное определение пути к конфигу и определение языка системы (хотя бы два языка интерфейса сделать: русский и английский).

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

  • Upvote 1
Link to comment
Short link
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...