Перейти к содержимому


Фотография

Как перевести плагины в L4D2

перевод плагинов l4d2

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 Ren89

Ren89

    Пользователь

  • Пользователь
  • PipPipPip
  • 291 сообщений

Отправлено 11 Май 2017 - 13:18

Перевод плагинов, или изменение цвета и оформления сообщений, которые плагины пишут игрокам - это самая первая причина, по которой лезут в плагины.

Но именно перевод плагинов (нормальный перевод, с поддержкой translations-файла), для юных пионеров остается каким-то волшебством.

И не важно, что уже есть огромное количество переведенных плагинов в которых можно посмотреть как это делается.

 

 

1. в первую очередь нужно загрузить файл с переводом

в плагин, в часть где public OnPluginStart() добавляем LoadTranslations("YourFile.phrases");

например:

public OnPluginStart()
{
    LoadTranslations("AutoDifficulty.phrases");
}

*можно чтоб там загружалось сразу несколько файлов

LoadTranslations("YourFile_1.phrases");

LoadTranslations("YourFile_2.phrases"); и т.д.

 

 

2. можно добавить цвет в PrintToChatAll и PrintToChat сообщения

\x01 - белый, \x03 - светло-зеленый, \x04 - оранжевый, \x05 - темно-зеленый

предварительно скачав Colors include (а то не скомпилируется) и добавив в начало плагина #include <colors>, можно сделать еще больше цветов:

CPrintToChatAll и CPrintToChat с новыми цветами {red} - красный и {blue} - синий

*в одном сообщении CPrintToChatAll или CPrintToChat можно использовать только 1 цвет из \x03{red}{blue}

 

 

3. можно перевести сообщения

Для редактирования файла с переводом нужно использовать программу notepad++ (обычным блокнотом нельзя), сохранять нужно в кодировке UTF-8 без BOM

вот пример перевода сообщения: 

CPrintToChatAll("\x01[SM] {red}%N \x01включил \x04%d \x01уровень сложности.", client, i_LevelDiff);

меняем на

CPrintToChatAll("%t", "diff_on", client, i_LevelDiff);

и в файл с переводом добавляем:

"diff_on"
{
    "#format"    "{1:N},{2:d}"
    "en"        "\x01[SM] {red}{1} \x01enabled \x04{2} \x01difficulty level."
    "ru"        "\x01[SM] {red}{1} \x01включил \x04{2} \x01уровень сложности."
}

таким же способом можно перевести PrintHintTextToAllPrintHintText и PrintCenterTextно уже без цвета - там же нет цвета

 

AddMenuItemSetPanelTitleDrawPanelItem и DrawPanelItem нужно переводить через Format

вот пример перевода:

SetPanelTitle(menu, "Hello, %N!", client);

меняем на

decl String:sText[64];
Format(sText, 64, "%t", "Hello", client);
SetPanelTitle(menu, sText);

и в файле с переводом должно быть

"Hello"
{
    "#format"    "{1:N}"
    "en"        "Hello, {1}!"
    "ru"        "Привет, {1}!"
}

часто бывает что AddMenuItemSetPanelTitleDrawPanelItem и DrawPanelItem путает выбор языка

если такая проблема есть, замените %t на %T и добавьте клиента:

сразу после "Hello" должен быть индекс клиента для которого эта панелька создается

decl String:sText[64];
Format(sText, 64, "%T", "Hello", client, client);
SetPanelTitle(menu, sText);

это делается только чтобы взять выбор языка напрямую с клиента и на файле с переводом не отразится

т.е. как было

"Hello"
{
    "#format"    "{1:N}"
    "en"        "Hello, {1}!"
    "ru"        "Привет, {1}!"
}

так и останется

 

это небольшой туториал в первую очередь для юных пионеров и должен быть им понятен

если я что то скомкано объяснил или не точно, то нужно поправить

также можно тут писать если у вас возникли трудности с переводом плагина - мир не без добрых людей и кто нибудь обязательно поможет


Сообщение отредактировал Ren89: 11 Май 2017 - 20:15

  • Lider99 это нравится

#2 Bastet

Bastet

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 742 сообщений

Отправлено 11 Май 2017 - 13:22

Тема смотрится как огрызок. Я имею в виду в этом разделе. Не поленитесь скопипастить или оформить её.



#3 Ren89

Ren89

    Пользователь

  • Пользователь
  • PipPipPip
  • 291 сообщений

Отправлено 11 Май 2017 - 13:32

нет смысла в 2х одинаковых темах

если тема актуальна и полезна, то можно её закрепить и закрыть

*я имею в виду л4д2


хотя не, лучше наоборот - в л4д1 народу меньше



#4 dr_lex

dr_lex

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 053 сообщений

Отправлено 11 Май 2017 - 18:26

нет смысла в 2х одинаковых темах

если тема актуальна и полезна, то можно её закрепить и закрыть

*я имею в виду л4д2


хотя не, лучше наоборот - в л4д1 народу меньше

Я лично отказался от Colors include так как есть проблема с цветами. А именно с синим и красным.

По мне лучше Smlib он работает лучше. И больше цветов.



#5 AlexMy

AlexMy

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 029 сообщений

Отправлено 11 Май 2017 - 19:57

Обязательно укажи какой пользоваться программой и какая кодировка должна быть в плагине и файле перевода.


Обязательно укажи какой пользоваться программой и какая кодировка должна быть в плагине и файле перевода.

И укажи последствия если нарушили кодировку.



#6 Ren89

Ren89

    Пользователь

  • Пользователь
  • PipPipPip
  • 291 сообщений

Отправлено 11 Май 2017 - 20:09



Я лично отказался от Colors include так как есть проблема с цветами. А именно с синим и красным.

По мне лучше Smlib он работает лучше. И больше цветов.

 

Я не использовал SMLIB, так что ничего не могу сказать.

Для меня и Colors хорошо работает, никаких проблем с синим и красным цветом не было.

А то что в 1 сообщении нельзя использовать одновременно 2 разных цвета из этих: светло-зеленый, синий, красный

то это не проблема а так функция добавления новых цветов реализована.

Единственное что могу сказать про недостатки Colors, заметил что там есть очень маленькая задержка.

Объясню подробнее:

допустим вы заменяете say и say_team, чтобы добавить теги админам и вип-игрокам (это сообщения которые пишут игроки в чат, если кто не понял)

и делаете это через CPrintToChatAll и CPrintToChat 

и игрок пишет в чат какую нибудь команду, например !lerps

после этого в чате сначала будет лерпы, а потом уже написанная команда:

Ren89, lerp 100.0

(Выживший) Ren89: !lerps

т.е. нарушен порядок действий, неприятно, но не критично

получается PrintToChatAll и PrintToChat срабатывают быстрее чем CPrintToChatAll и CPrintToChat

во всех плагинах можно  PrintToChatAll и PrintToChat заменить на CPrintToChatAll и CPrintToChat

 

Мы с тобой говорили про SMLIB, и ты сказал что там в 1 сообщении можно использовать светло-зеленый цвет одновременно с красным или синим

если так можно, то это огромный плюс - в l4d небольшое разнообразие цветов...


Сообщение отредактировал Ren89: 11 Май 2017 - 20:24



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных