| igrik   
   Posts: 2821
 
 |  | 
	| 17.09.2020 17:26 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 | 
			| 
 
				igrik, я подожду постоянно решения, ибо нет ничего временного. 
Вот функция tr с исправленным багом:
 
Code:
 /*** Returns translation for given complex key ('xxx.yyy.zzz') with substituted parameters.
 * Pass vector of (parameter name, parameter value) pairs to substitute named parameters.
 * Example: Mod\Lang\*.json file: { "eqs": { "greeting": "Hello, @name@" } }
 * Example: ShowMessage(tr("eqs.greeting", { "name", "igrik" }).c_str());
 *
 * @param  key    Key to get translation for.
 * @param  params Vector of (parameter name, parameter value pairs).
 * @return        Translation string.
 */
 std::string tr (const char *key, const std::vector<std::string> params = {}) {
 const int MAX_PARAMS = 64;
 const char* _params[MAX_PARAMS];
 int numParams = params.size() <= MAX_PARAMS ? params.size() : MAX_PARAMS;
 
 for (int i = 0; i < numParams; i++) {
 _params[i] = params[i].c_str();
 }
 
 char* buf = _tr(key, _params, numParams - 1);
 std::string result = buf;
 MemFree(buf);
 
 return result;
 }
 
Можно её, конечно, порезать до:
 
Code:
 std::string tr (const char *key) {char* buf = _tr(key, NULL, -1);
 std::string result = buf;
 MemFree(buf);
 
 return result;
 }
 
Не будет возможности передать параметр вида @name@, @age@ и т.д.
			 
 Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
 Поддержать проект
 
 |  | 
	| 17.09.2020 17:52 |  | 
	
		| igrik   
   Posts: 2821
 
 | 
			| 
 
				 (17.09.2020 17:52)Berserker Wrote:  igrik, я подожду постоянно решения, ибо нет ничего временного. 
Обсуждали, что это же временная мера   Готово. Отправил по той же ссылке. 
wnd.json
 
Code:
 {"wnd": {
 "fonts": {
 "big_font": "bigfont2.fnt",
 "med_font": "medfont2.fnt",
 "small_font": "smalfont.fnt"
 },
 "dlg_wog_options": {
 "intro_font": "bigfont2.fnt",
 "bttn_name": "{WoG Options}",
 },
 "dlg_crexpo": {
 "line0": "STACK EXPERIENCE DETAILS",
 "line1": "Creature Type:",
 "line2": "Experience Rank:",
 "line3": "Experience Points:",
 "line4": "Experience Points to Next Rank:",
 "line5": "Maximum Experience per Battle:",
 "line6": "Number of Creatures in stack:",
 "line7": "Max new recruits without losing Rank:",
 "line8": "Experience Multiplier:",
 "line9": "Upgrade Multiplier:",
 "line10": "Experience after Rank 10:",
 "line11": "Maximum New Recruits to remain at Rank 10:",
 },
 "dlg_commander": {
 "bttn_open_hint": "Open Commander screen",
 "bttn_exit_hint": "Exit Commander screen",
 "bttn_lvlup_hint": "Click to increase selected skill.",
 "bttn_dismiss_rmc": "Click to dismiss this Commander.",
 },
 "combat": {
 "finish_question": "Finish with Quick Combat?",
 "show_killed": ", kills: %s",
 },
 }
 }
 
 game bug fixes extended.dll  ||  My Plugins  ||  My GitHub
 |  | 
	| 17.09.2020 18:42 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 |  | 
	| 17.09.2020 21:35 |  | 
	
		| Bes   
   Posts: 5453
 
 | 
			| 
 
				Berserker, да, я это и имел ввиду    но не привык пока к этим json'ам, всё оперирую старыми подходами
igrik , спасибо!
			 |  | 
	| 18.09.2020 03:43 |  | 
	
		| Archer30   
   
   Posts: 1192
 
 |  | 
	| 18.09.2020 08:10 |  | 
	
		| igrik   
   Posts: 2821
 
 | 
			| 
 
				 (18.09.2020 08:10)Archer30 Wrote:  I just have one stupid question - Has the WoG Naitve Dialogs Plugin with json support been updated yet? Or should I wait?  
Да, немного подождать.  
Сегодня произошло еще одно обновление плагина: теперь все строки берутся из wnd.json  файла, а файл wogndlg.txt  больше не нужен.
			 
 game bug fixes extended.dll  ||  My Plugins  ||  My GitHub
 |  | 
	| 18.09.2020 12:21 |  | 
	
		| Archer30   
   
   Posts: 1192
 
 |  | 
	| 18.09.2020 13:12 |  | 
	
		| Guru105   
 Posts: 835
 
 | 
			| 
 
				В русской версии Героев 3 от GOG появилось полезное нововведение. 
В crtraits.txt добавлено поле "Plural2", куда вписаны имена монстров во множественном числе в родительном падеже:
   
И описание существ на карте теперь переводятся корректно, то есть "орда копейщиков", а не "орда Копейщики", как было раньше:
   
Судя по всему, к exe игры был применен некий патч или плагин. 
С HD-модом эта фича пока не работает, так как HD-мод использует свой exe. 
Вот у меня и возник вопрос, сложно ли такое реализовать для Эры?
			 |  | 
	| 18.09.2020 21:24 |  | 
	
		| SergOz   
   Posts: 1359
 
 | 
			| 
 
				Можно просто поменять информационную строку. Например:
 Копейщики:  группа (10-19)
 
 Гарпии:   орда (50-99)
 
 Привидения:  легионы (1000+)
 
 Карта-мод "Война на Холсте"
 |  | 
	| 18.09.2020 23:16 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 |  | 
	| 18.09.2020 23:31 |  | 
	
		| Guru105   
 Posts: 835
 
 |  | 
	| 19.09.2020 01:34 |  | 
	
		| igrik   
   Posts: 2821
 
 | 
			| 
 
				 (18.09.2020 21:24)wessonsm Wrote:  Судя по всему, к exe игры был применен некий патч или плагин.С HD-модом эта фича пока не работает, так как HD-мод использует свой exe.
 Вот у меня и возник вопрос, сложно ли такое реализовать для Эры?
 
Нет, нельзя. 
Сама по себе, оригинальная структура монстра не имеет места для третьего поля с названиями.
 
Code:
 _int_ town;_int_ level;
 _char_* sound_name;
 _char_* def_name;
 _int_ flags;
 
 
 _char_* name_single;
 _char_* name_plural;
 _char_* specification_description;
 
 
 _int_ cost_wood;
 _int_ cost_mercury;
 _int_ cost_ore;
 _int_ cost_sulfur;
 _int_ cost_crystal;
 _int_ cost_jems;
 _int_ cost_gold;
 _int_ fight_value;
 _int_ AI_value;
 _int_ growth;
 _int_ horde_growth;
 _int_ hit_points;
 _int_ speed;
 _int_ attack;
 _int_ defence;
 _int_ damage_min;
 _int_ damage_max;
 _int_ shots;
 _int_ spells_count;
 _int_ advmap_low;
 _int_ advmap_high;
 
Поэтому, то что если что-то и хотели в русской версии Героев 3 от GOG, без перекомпиляции оригинального кода - сторонними методами, просто не могло быть реализовано.
			 
 game bug fixes extended.dll  ||  My Plugins  ||  My GitHub
 |  | 
	| 19.09.2020 04:01 |  |