Jump to content
Korean Random
Sign in to follow this  
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

Share this post


Link to post

Short link
Share on other sites

Аналог скрипта товарища

 В более понятной визуализации для обычного рядового пользователя.

Автору +.

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

 

 

Автору +.
 аналогично )

Я заметил, просто высказал это )

Share this post


Link to post

Short link
Share on other sites

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

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

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

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

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

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

 

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

Edited by seriych

Share this post


Link to post

Short link
Share on other sites

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

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

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

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

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

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

 

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

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

Share this post


Link to post

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

Share this post


Link to post

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

 

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

Share this post


Link to post

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

Share this post


Link to post

Short link
Share on other sites

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

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

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

  • Upvote 1

Share this post


Link to post

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.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...