Приветствую. Знаю, интересуюсь мелочами, но это необходимо. Существует на GUI такая функция, как Convert Externalized String (она так называется в самом интерфейсе, на коде же имеет название StringIdentity, что происходит от native'ки GetLocalizedString).
native GetLocalizedString takes string source returns string

function StringIdentity takes string theString returns string
    return GetLocalizedString(theString)
endfunction
Blizzard дает к ней такую подсказку, как "Use this to make sure the given string will be externalized in the map string file (war3map.wts)." Я так понимаю (да и по самим названиям видно), что это имеет связь с локализацией для карт, т.е. добавление им мультиязычной системы отображения строк. Это все происходит путем какой-то проверки идентичности... Вопрос: как это работает и что собой представляет? Верны ли мои догадки?

Принятый ответ

Как оказалось, ответ был проще. Покопался в файлах карты, нашел wts-файл. В нем все расписано по блоках, причем содержатся все строки, даже описания новых объектов.
Например
STRING 3
Войска: n000 (Dummy), Name (Название (unam))
{
Dummy
}
При локализации карты изменяется этот файл, так как из него берутся значения. Также дела обстоят и с той функцией. Она берет строку из определенного блока. Думаю, вопрос можно закрывать.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
16
8 лет назад
0
заставляет варкрафт вынести строку в wts файл, чтобы её могли редактировать при переводах карты
0
13
8 лет назад
Отредактирован Пушистый
0
DracoL1ch, а на каком моменте эта строка выносится в файл? Ведь если каждый раз запускать, то каждый раз одно и тоже будет... Разве что сам редактор вынесет ее туда.
0
7
8 лет назад
Отредактирован Ige
0
Возможно, если в карте несколько wts файлов, то с помощью этой функции можно вытащить строчку соответствующую версии варкрафта. Например, если в карте один wts для русской версии и один для всех остальных...
0
13
8 лет назад
Отредактирован Пушистый
0
Как оказалось, ответ был проще. Покопался в файлах карты, нашел wts-файл. В нем все расписано по блоках, причем содержатся все строки, даже описания новых объектов.
Например
STRING 3
Войска: n000 (Dummy), Name (Название (unam))
{
Dummy
}
При локализации карты изменяется этот файл, так как из него берутся значения. Также дела обстоят и с той функцией. Она берет строку из определенного блока. Думаю, вопрос можно закрывать.
Принятый ответ
0
26
8 лет назад
0
Ну, так тебе собственно и сказал лич
Функция заставляет вынести строку в wts файл карты
Что даёт возможность редактировать её (эту строку), для организации локализации карты
Т.е. можно отредактировать файлик, и вставить в копию карты
В итоге у тебя будут одинаковые карты с разными wts файлами
В одном будет написано "Level / Item / Hero / Damage / Mana", а в другом "Уровень / Предмет / Герой / Урон / Мана"
Если один игрок схостит "ру"-версию карты, то к нему смогут подключиться и владельцы "англ"-версии, и играть вместе. При этом те у кого "ру" будут видеть "Игрок такой убил игрока другой", а те у кого "англ" - то же самое но уже в англ.варианте ...
Кстати есть какая то прога простая для этого дела, она записывает проекты и хранит адреса, можно одновременно делать несколько версий перевода (ru/en/de/fr) и не теряться в нём... Например если переходить от одной версии карты к другой (как например дота и прочие...)
Чтобы оставить комментарий, пожалуйста, войдите на сайт.