Current time: 09.12.2021, 09:35 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Плагины. Обсуждение
» Plugins. Discussion & Questions
Author Message
igrik Offline
Administrators

Posts: 2630
Post: #136

Berserker, я тебе уже скинул в txt файле.
К следующему разу я займусь json'ами.


game bug fixes extended.dll || My Plugins
17.09.2020 17:26
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 15556
Post: #137

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
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2630
Post: #138

(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",
    },
  }
}


game bug fixes extended.dll || My Plugins
17.09.2020 18:42
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 15556
Post: #139

igrik, спасибо. Это не только решает одну проблему, но и позволяет гибко настраивать локализации и отображение вообще.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
17.09.2020 21:35
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5179
Post: #140

Berserker, да, я это и имел ввиду 132 но не привык пока к этим json'ам, всё оперирую старыми подходами
igrik, спасибо!
18.09.2020 03:43
Visit this user's website Find all posts by this user Quote this message in a reply
Archer30 Offline
Moderators

Posts: 732
Post: #141

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
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2630
Post: #142

(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 больше не нужен.


game bug fixes extended.dll || My Plugins
18.09.2020 12:21
Visit this user's website Find all posts by this user Quote this message in a reply
Archer30 Offline
Moderators

Posts: 732
Post: #143

Yes Great! Thank you igrik! ERA is getting better and better!
18.09.2020 13:12
Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 637
Post: #144

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

Image: 530d6d370125.png

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

Image: 269c088dad7e.png

Судя по всему, к exe игры был применен некий патч или плагин.
С HD-модом эта фича пока не работает, так как HD-мод использует свой exe.
Вот у меня и возник вопрос, сложно ли такое реализовать для Эры?
18.09.2020 21:24
Find all posts by this user Quote this message in a reply
Raistlin Away
Moderators

Posts: 1041
Post: #145

wessonsm, можно даже без патчей, просто в триггерах MM и CM нужно подменять значение при определенных условиях. Надо создать массив с названиями и брать значение в соответствии с индексом. Ну а чтобы не создавать этот массив вручную, можно написать мини-программку, которая циклом переберет значения в файле и создаст скрипт, где они будут записаны как массив. Можно еще кстати в ert запихать, но это по вкусуAb


Создал новый глобальный мод: WoG Ultra Edition
18.09.2020 21:56
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 3568
Post: #146

wessonsm, я бы не стал. Допустим, знаем точное количество.
21 - под каждый падеж/род/число писать? Не забываем про все остальные текстовики и моды, которые используют имена существ.
Хотя задумка и интересная - врать не буду.


Image: widget.png?style=banner2

Новейший Heroes 3 Launcher
18.09.2020 22:01
Visit this user's website Find all posts by this user Quote this message in a reply
SergOz Offline

Posts: 1054
Post: #147

Можно просто поменять информационную строку. Например:

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

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

Привидения: легионы (1000+)


Карта-мод "Война на Холсте"
18.09.2020 23:16
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 15556
Post: #148

wessonsm, проще со всеми языками не заморачиваться. А так в локализациях пишут свою функцию определения множественной формы (их три для русского) от конкретного числа объектов и предоставляют по три версии перевода. Всё усложняется существенно. Потому чаще выгодно писать «что-то: сколько-то» и не усложнять всем жизнь.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
18.09.2020 23:31
Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 637
Post: #149

Ясно, спасибо.
19.09.2020 01:34
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2630
Post: #150

(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
19.09.2020 04:01
Visit this user's website Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2021 MyBB Group