Перейти к содержанию

Дайджесты за январь-февраль

Обновления гайдов и аддонов

Январь Февраль

Мониторинг серверов и редактор аддонов

Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.

Мониторинг серверов Редактор аддонов

Подсказки из игры на вашем сайте

Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.

Подробнее

Апдейтер аддонов

Представляем вам программу для автообновления аддонов и делимся подробностями.

Подробнее Скачать

New GetGameLocalization()


Setras

Рекомендуемые сообщения

Многие разработчики, переводящие свои аддоны на другие языки и встраивающие в них определение локализации игрового клиента наверняка до сих пор используют старый метод:

-- AO game Localization detection by SLA. Version 2011-02-10.
function GetGameLocalization()
local B = cartographer.GetMapBlocks()
local T = { rus="\203\232\227\224", eng="Holy Land", ger="Heiliges Land",
fra="Terre Sacr\233e", br="Terra Sagrada", jpn="\131\74\131\106\131\65" }
for b in B do for l,t in T do
if userMods.FromWString( cartographer.GetMapBlockInfo(B [b] ).name ) == t
then return l end; end; end; return "eng"
end

Который с помощью изучения названия карт возвращает нам одно из заранее заданных значений(rus, eng, ger, fra, br, jpn).

Однако существует способ более простого и гарантированного(старый метод переставал работать на гипате из-за перемещения блоков карт относительно друг друга, когда он полагался на положение карты в массиве) получения игровой локализации (настолько насколько понятие "гарантированного" допустимо в аллодах :) ) найденный Ciuine:

function GetGameLocalization()
 local LocOption = options.GetOptionsByCustomType("interface_option_localization")
 if LocOption then for i, v in LocOption do
 for j, x in options.GetOptionInfo(v) do if j == "values" then
 for k, y in x do for l, z in y do if l == "name" then
 return userMods.FromWString(z)
 end end end end end end end
end

Или менее гарантированный (т.к. может перестать работать если в блок опций "локализации" добавят новый параметр перед языком локализации) но по сути своей аналогичный:

function GetGameLocalization()
local InterfaceOptionInfo = options.GetOptionInfo(options.GetOptionsByCustomType("interface_option_localization")[0])
return userMods.FromWString(InterfaceOptionInfo.values[interfaceOptionInfo.baseIndex].name)
end

Ссылка на комментарий
Поделиться на другие сайты

круто! мож там еще версия клиента хранится?

Версия клиента получается либо так (нам недоступно, как понимаете) :

protectedCommon.GetGameVersion()
protectedCommon.GetGameBuildInfo()

Либо с помощью извращений (Вам уж это прекрасно известно).

А функция GetOptionByCustomType() принимает следущие аргументы:

"autonavigation_enabled"
"interface_option_simplified_move"
"detailed_item_compare"
"inverted_item_compare"
"show_player_name"
"emote_icons_show"
"chat_bubbles_show"
"chat_bubbles_opacity"

, итд... то есть те, которые вы указываете в настройках интерфейса.

P.S. Setras, спасиб за инфу!

Ссылка на комментарий
Поделиться на другие сайты

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...

Важная информация

Пользуясь сайтом, вы принимаете Условия использования