17.09.2020, 17:26
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
17.09.2020, 17:52
igrik, я подожду постоянно решения, ибо нет ничего временного.
Вот функция tr с исправленным багом:
Можно её, конечно, порезать до:
Не будет возможности передать параметр вида @name@, @age@ и т.д.
Вот функция 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@ и т.д.
17.09.2020, 18:42
(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",
},
}
}
17.09.2020, 21:35
igrik, спасибо. Это не только решает одну проблему, но и позволяет гибко настраивать локализации и отображение вообще.
18.09.2020, 03:43
Berserker, да, я это и имел ввиду
но не привык пока к этим json'ам, всё оперирую старыми подходами
igrik, спасибо!

igrik, спасибо!
18.09.2020, 08:10
Thanks everyone for helping with the font issue here!
I just have one stupid question - Has the WoG Naitve Dialogs Plugin with json support been updated yet? Or should I wait?
I just have one stupid question - Has the WoG Naitve Dialogs Plugin with json support been updated yet? Or should I wait?

18.09.2020, 12:21
(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 больше не нужен.
18.09.2020, 13:12

18.09.2020, 21:24
В русской версии Героев 3 от GOG появилось полезное нововведение.
В crtraits.txt добавлено поле "Plural2", куда вписаны имена монстров во множественном числе в родительном падеже:

И описание существ на карте теперь переводятся корректно, то есть "орда копейщиков", а не "орда Копейщики", как было раньше:

Судя по всему, к exe игры был применен некий патч или плагин.
С HD-модом эта фича пока не работает, так как HD-мод использует свой exe.
Вот у меня и возник вопрос, сложно ли такое реализовать для Эры?
В crtraits.txt добавлено поле "Plural2", куда вписаны имена монстров во множественном числе в родительном падеже:

И описание существ на карте теперь переводятся корректно, то есть "орда копейщиков", а не "орда Копейщики", как было раньше:

Судя по всему, к exe игры был применен некий патч или плагин.
С HD-модом эта фича пока не работает, так как HD-мод использует свой exe.
Вот у меня и возник вопрос, сложно ли такое реализовать для Эры?
18.09.2020, 21:56
wessonsm, можно даже без патчей, просто в триггерах MM и CM нужно подменять значение при определенных условиях. Надо создать массив с названиями и брать значение в соответствии с индексом. Ну а чтобы не создавать этот массив вручную, можно написать мини-программку, которая циклом переберет значения в файле и создаст скрипт, где они будут записаны как массив. Можно еще кстати в ert запихать, но это по вкусу

18.09.2020, 22:01
wessonsm, я бы не стал. Допустим, знаем точное количество.
21 - под каждый падеж/род/число писать? Не забываем про все остальные текстовики и моды, которые используют имена существ.
Хотя задумка и интересная - врать не буду.
21 - под каждый падеж/род/число писать? Не забываем про все остальные текстовики и моды, которые используют имена существ.
Хотя задумка и интересная - врать не буду.
18.09.2020, 23:16
Можно просто поменять информационную строку. Например:
Копейщики: группа (10-19)
Гарпии: орда (50-99)
Привидения: легионы (1000+)
Копейщики: группа (10-19)
Гарпии: орда (50-99)
Привидения: легионы (1000+)
18.09.2020, 23:31
wessonsm, проще со всеми языками не заморачиваться. А так в локализациях пишут свою функцию определения множественной формы (их три для русского) от конкретного числа объектов и предоставляют по три версии перевода. Всё усложняется существенно. Потому чаще выгодно писать «что-то: сколько-то» и не усложнять всем жизнь.
19.09.2020, 01:34
Ясно, спасибо.
19.09.2020, 04:01
(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, без перекомпиляции оригинального кода - сторонними методами, просто не могло быть реализовано.