Амасинк |
Дата: Суббота, 05.09.2015, 18:29 | Сообщение # 1
|
Боец
Сообщений: 267
Статус: Offline
|
На днях нашел старый мод, решил продолжить его разработку. Примерно 2 года назад планировал открыть сервер Drift, где смогли бы играть как русско-говорящие игроки, так и англо-говорящие, но разработка прекратилась. В общем, не буду расписывать всякие речи, опишу всё кратко и ясно.
Показываю на примере диалога (можно так-же сделать и на SCM, особо много заморочек нету). Создаём define для языков (в начало мода):
Код #define LANG_RU 0 // Русский язык #define LANG_EN 1 // Английский язык
Создаём сток ShowLangDialog:
Код stock ShowLangDialog(playerid, id, style, up[], up2[], msg[], msg2[], ok[], ok2[], cancel[], cancel2[]) { if(PlayerInfo[playerid][Local] == LANG_EN) { ShowPlayerDialogEx(playerid, id, style, up2, msg2, ok2, cancel2); } else { ShowPlayerDialogEx(playerid, id, style, up, msg, ok, cancel); } return 1; }
Теперь разберём это: При заходе на сервере мы сделаем, чтобы у нас запрашивали язык. Если английский - LANG_EN, и из диалога будут выводится данные, которые записаны под (up2, msg2, ok2, cancel2), если русский, то под (up, msg, ok, cancel). Разберём под примером.
Код ShowLangDialog(playerid, 0000, DIALOG_STYLE_MSGBOX, "{ffffaa}О сервере", "{ffffaa}About", "{ffffff}Временно пусто", "{ffffff}Temporarily empty", "Ок", "Назад", "Ok", "Cancel");
Мы заполняем сам диалог по шаблону: Шапка на русском, Шапка на английском, Содержание на русском, содержание на английском. Далее идут 4 кнопки, которые чередуются как Русский, Англ, Русский, Англ.
Теперь мы сделаем выбор языка. Где и как - решать вам, я дам лишь наводку. Допустим мы авторизовались, заспавнились. Вызываем паблик ShowSelectLang.
Код public ShowSelectLang(playerid) { ShowPlayerDialogEx(playerid, 1, DIALOG_STYLE_MSGBOX, "{ffffaa}Название сервера", "{ffffff}Please, select your language", "Русский", "English"); return 1; }
Функция диалога (если Русский - Local = 0, Если English - Local = 1) Код if(dialogid == 1) { if(response) PlayerInfo[playerid][Local] = 0; else PlayerInfo[playerid][Local] = 1; SendMarkedMessage(playerid, "Хорошо! Ваш язык Русский ;)", "Ok! Your language is English ;)"); return 1; }
При дисконнекте обнуляем Local.
Код PlayerInfo[playerid][Local] = 0;
Кто чисто под копирку - функция SendMarkedMessage (служит примером вывода сообщений):
Код stock SendMarkedMessage(playerid, msg[], msg2[]) { new str[512]; if(PlayerInfo[playerid][Local] == LANG_EN) { format(str, 512, "Name: {ffffff}%s", msg2); } else { format(str, 512, "Name: {ffffff}%s", msg); } SendClientMessage(playerid, 0x77ff00aa, str); return 1; }
У кого нету ShowPlayerDialogEx:
Код stock ShowPlayerDialogEx(playerid, id, style, up[], msg[], ok[], cancel[]) { SetPVarInt(playerid, "dialog_id", id); ShowPlayerDialog(playerid, id, style, up, msg, ok, cancel); return 1; }
Возможно в коде есть ошибки в диалоге с выбором языка.
Помогаю новичкам в pawn
Сообщение отредактировал Амасинк - Воскресенье, 06.09.2015, 13:51 |
|
|
|
[CM]Kingster |
Дата: Суббота, 05.09.2015, 18:48 | Сообщение # 2
|
Боец
Сообщений: 245
Статус: Offline
|
Не плохо, только для готовых модов уже не очень пойдет, так как придется переписывать все диалоги ) Дал плюсик.
Пользователь Cheat - Master уже 400 дней.
Я в Контакте - vk.com/buddy_fly
|
|
|
|
Амасинк |
Дата: Суббота, 05.09.2015, 18:50 | Сообщение # 3
|
Боец
Сообщений: 267
Статус: Offline
|
[CM]Kingster, да, я щас сносил эти диалоги, около 2х часов потратил). А если писать каждый диалог, думаю пару дней потратят, так что это хорошо использовать во время написания мода с 0
Помогаю новичкам в pawn
|
|
|
|
Simon4ik228 |
Дата: Суббота, 19.09.2015, 12:44 | Сообщение # 4
|
Боец
Сообщений: 237
Статус: Offline
|
Не плохо, молодец
|
|
|
|
Амасинк |
Дата: Суббота, 24.10.2015, 22:25 | Сообщение # 5
|
Боец
Сообщений: 267
Статус: Offline
|
Подниму
Помогаю новичкам в pawn
|
|
|
|