Wake of Gods Forum | Форум Во Имя Богов

Full Version: Плагины. Обсуждение
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
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
Berserker, я тебе уже скинул в txt файле.
К следующему разу я займусь json'ами.
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@ и т.д.
(17.09.2020 17:52)Berserker Wrote: [ -> ]igrik, я подожду постоянно решения, ибо нет ничего временного.
Обсуждали, что это же временная мера 96

Готово. Отправил по той же ссылке.

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",
    },
  }
}
igrik, спасибо. Это не только решает одну проблему, но и позволяет гибко настраивать локализации и отображение вообще.
Berserker, да, я это и имел ввиду 132 но не привык пока к этим json'ам, всё оперирую старыми подходами
igrik, спасибо!
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? Rolleyes
(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? Rolleyes
Да, немного подождать.
Сегодня произошло еще одно обновление плагина: теперь все строки берутся из wnd.json файла, а файл wogndlg.txt больше не нужен.
Yes Great! Thank you igrik! ERA is getting better and better!
В русской версии Героев 3 от GOG появилось полезное нововведение.
В crtraits.txt добавлено поле "Plural2", куда вписаны имена монстров во множественном числе в родительном падеже:

Image: 530d6d370125.png

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

Image: 269c088dad7e.png

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

Копейщики: группа (10-19)

Гарпии: орда (50-99)

Привидения: легионы (1000+)
wessonsm, проще со всеми языками не заморачиваться. А так в локализациях пишут свою функцию определения множественной формы (их три для русского) от конкретного числа объектов и предоставляют по три версии перевода. Всё усложняется существенно. Потому чаще выгодно писать «что-то: сколько-то» и не усложнять всем жизнь.
Ясно, спасибо.
(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, без перекомпиляции оригинального кода - сторонними методами, просто не могло быть реализовано.
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
Reference URL's