Обновление словаря во время игры

Сообщения
106
Реакции
222
Помог
1 раз(а)
Приветствую
Решил попробовать частично реализовать поддержку мультимода для общих плагинов с помощью lang файлов.
При старте карты пробовал подгружать нужный ланг таким образом:
Код:
if(equal(g_sCurMod, "tf"))
register_dictionary("sw_mod_tf.txt")
else
register_dictionary("sw_mod_base.txt")
Ключи в обоих файлах одинаковые вида:
Код:
Файл sw_mod_base.txt
[ru]
ML_TEAM_CT = Army Rangers
ML_TEAM_TT = Opposing Force
ML_TEAM_FFA = Наёмник
ML_TEAM_CT_SHORT = AR
ML_TEAM_TT_SHORT = OF

Файл sw_mod_tf.txt
[ru]
ML_TEAM_CT = Interstellar Manufacturing Corporation
ML_TEAM_TT = Marauder Corps
ML_TEAM_FFA = Наёмник
ML_TEAM_CT_SHORT = IMC
ML_TEAM_TT_SHORT = MCOR
Видел я это так, что строки в ключах заменятся и будут актуальные названия под мод, но на выходе получается то, что строки остаются только из первого загруженного словаря и не обновляются даже если попробовать подгрузить другой словарь с этими ключами.

Узнал информацию, что возможно может помочь обновление того-же самого файла, реализовал это через замену названия таким образом:
Код:
if(equal(g_sCurMod, "tf"))
sFilePath="cstrike/addons/amxmodx/data/lang/sw_mod_tf.txt"
else
sFilePath="cstrike/addons/amxmodx/data/lang/sw_mod_base.txt"

rename_file(sFilePath, "cstrike/addons/amxmodx/data/lang/sw_active_lang.txt")

register_dictionary("sw_active_lang.txt")

rename_file("cstrike/addons/amxmodx/data/lang/sw_active_lang.txt", sFilePath)
Результат такой же. Вопрос: Возможно ли с помощью лангов реализовать подобное? Не очень хочется делать строковые переменные с названиями и заполнять их в зависимости от нужного мода. Вариант с разными ключами для разных модов так-же рассматривал, тоже не очень хочется.
 
Сообщения
775
Реакции
293
Помог
11 раз(а)
Droads, задумка интересная, а где ты подгружаешь словари?
 
Последнее редактирование модератором:
Сообщения
106
Реакции
222
Помог
1 раз(а)
maFFyoZZyk, Через пару секунд после инита, не думаю что это влияет
5 Июн 2021
Решение найдено, помог код который я изначально сделал:

Код:
if(equal(g_sCurMod, "tf"))
sFilePath="cstrike/addons/amxmodx/data/lang/sw_mod_tf.txt"
else
sFilePath="cstrike/addons/amxmodx/data/lang/sw_mod_base.txt"

rename_file(sFilePath, "cstrike/addons/amxmodx/data/lang/sw_active_lang.txt")

register_dictionary("sw_active_lang.txt")

rename_file("cstrike/addons/amxmodx/data/lang/sw_active_lang.txt", sFilePath)
Проблема была в том, что я закинул оба ланга на сервер одновременно, и видимо из-за одинакового таймштапа сервер считал их не обновленным одним и тем же, независимо от изменения названия

Ниже скриншот этих лангов перезалитых на хостинг в разное время

1622896460190.png

Проверка находится тут - alliedmodders/amxmodx

Спасибо fl0wer за подсказку!
 

Вложения

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу