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

Многоязычность НЦП?


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

Задумал сделать многоязычных НЦП(точнее русский/английский).

Хочу, что бы НЦП могли при определенном параметре на русском общаться или на английском.

как понимаю в скрипте(каждого диалога) необходимо добавить проверку на какой то параметр и в случае его выполнения 1 ветка(на русском языке), а иначе 2 ветка диалога(на английском).

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

Как вариант можно добавить проверку на наличие какого то предмета у игрока(русско-английский словарь *смеется*).

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

После создании персонажа спрашивать который язык его


OnPCLoginEvent:
if(firstlogin){
mes "Choose your language";
mes "Выбери свой язык";
set lang, select("English:Русский");
set firstlogin, 1;
close;
}

После этого переменную lang и проверяй, чтобы узнать какой язык у игрока.

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

После создании персонажа спрашивать который язык его


OnPCLoginEvent:
if(firstlogin){
mes "Choose your language";
mes "Выбери свой язык";
set lang, select("English:Русский");
set firstlogin, 1;
close;
}

После этого переменную lang и проверяй, чтобы узнать какой язык у игрока.

Хороший вариант, но если в последствии игрок захочет сменить, то без квеста или админа ни как, но с меня в любом случае +1

Только не могу понять, где это прописать(в скриптах,конфигах)?

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

После создании персонажа спрашивать который язык его


OnPCLoginEvent:
if(firstlogin){
mes "Choose your language";
mes "Выбери свой язык";
set lang, select("English:Русский");
set firstlogin, 1;
close;
}

После этого переменную lang и проверяй, чтобы узнать какой язык у игрока.

Как я понимаю в mysql так, же требуется в таблице login создать дополнительный столбец для данной переменной?
Ссылка на комментарий
Поделиться на другие сайты

Это кусок скрипта. Можешь поставить нпц, который по аналогии позволит сменить язык.

В базу ничего не надо прописывать, это будет переменная, привязанная к персонажу (можно еще использовать #firstlogin и #lang, чтобы к аккаунту привязать) и автоматом в базу (таблица mapreg если память не изменяет) запишется и там храниться будет.

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

Это кусок скрипта. Можешь поставить нпц, который по аналогии позволит сменить язык.

В базу ничего не надо прописывать, это будет переменная, привязанная к персонажу (можно еще использовать #firstlogin и #lang, чтобы к аккаунту привязать) и автоматом в базу (таблица mapreg если память не изменяет) запишется и там храниться будет.

Спасибо!

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

В итоге реализовал следующим образом:

создал НПС у которого происходит смена языков в игре, где переменная lang в значении 1 - Английский язык, в значении 2 - русский.

prontera,146,35,6 script Учитель языков 109,{

mes "[Учитель языков]";

mes "Choose your language";

mes "Выбери свой язык";

next;

if(select("English:Русский")==2){

if(lang==2){ mes "Русский язык был изучен ранее!"; close; }

else {

set lang,2;

mes "Русский язык изучен!";

close;}

}

if(lang==1){ mes "English is already included!"; close; }

else {

set lang,1;

mes "English included!";

close;

}}

и у НПС которого хотим научить общаться на нескольких языках(в данном случае сотрудница кафры):

prontera,151,29,0 script Сотрудница Кафры::kaf_prontera2 115,{

cutin "kafra_03",2;

callfunc "F_KafSet";

if(lang==2){

mes "[Сотрудница Кафры южных ворот]";

mes "Приветствую Вас, от представительства Кафра в городе Пайон!";

mes "*мило улыбнулась*";

mes "Скажите, чеми я могу быть Вам полезна?";

callfunc "F_Kafra",5,0,0,40,800;

savepoint "prontera",150,33;

callfunc "F_KafEnd",0,1,"in the city of Prontera"; }

else {

mes "[Kafra Employee]";

mes "Welcome~!";

mes "The Kafra Services";

mes "are always on your side.";

mes "So how can I help you?";

callfunc "F_Kafra",5,0,0,40,800;

savepoint "prontera",150,33;

callfunc "F_KafEnd",0,1,"in the city of Prontera";

}

}

Есть над, чем работать, но в грубой форме уже ВКЛ.

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

Используй тег CODE


prontera,146,35,6 script Учитель языков 109,{
mes "[Учитель языков]";
mes "Choose your language";
mes "Выбери свой язык";
next;
if(select("English:Русский")==2){
if(lang==2){ mes "Русский язык был изучен ранее!"; close; }
else {
set lang,2;
mes "Русский язык изучен!";
close;}
}
if(lang==1){ mes "English is already included!"; close; }
else {
set lang,1;
mes "English included!";
close;
}}

Зачем проверки на уже изученный язык?


prontera,146,35,6 script Учитель языков 109,{
mes "[Учитель языков]";
mes "Choose your language";
mes "Выбери свой язык";
next;
set lang, select("English:Русский");
switch(lang){
case 1:
mes "English included!";
break;
case 2:
mes "Русский язык изучен!";
break;
}
close;
}

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

Используй #lang, чтобы люди не парились изменять язык на всех персонажах.

Можешь еще добавить что-то типа:


if(#lang == 1) mes "Сейчас выбран Английский язык";
else
mes "Сейчас выбран Русский язык";

В начале нпц.

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


prontera,146,35,6 script Учитель_языков 109,{
mes "[Учитель языков]";
if(#lang == 1){mes "Сейчас выбран Английский язык";} else{mes "Сейчас выбран Русский язык";}
mes "Select your desired language";
mes "Выбери желаемый язык";
next;
if(select("English:Русский")==2){
set #lang,2;
mes "Русский язык выключен!";
close;} else {
set #lang,1;
mes "English included!";
close;
}}

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


prontera,146,35,6 script Учитель_языков 109,{
mes "[Учитель языков]";
if(#lang == 0) mes "Select your desired language/Выберите желаемый язык";
else if(#lang == 1) mes "Сейчас выбран Английский язык";
else if(#lang == 2) mes "Сейчас выбран Русский язык";
next;
if(select("English:Русский")==2){
set #lang,2;
mes "Русский язык выключен!";
close;
}
set #lang,1;
mes "English included!";
close;
}

Так будет лучше

Изменено пользователем Kubix
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты


prontera,146,35,6 script Учитель_языков 109,{
mes "[Учитель языков]";
if(#lang == 0) mes "Select your desired language/Выберите желаемый язык";
else if(#lang == 1) mes "Сейчас выбран Английский язык";
else if(#lang == 2) mes "Сейчас выбран Русский язык";
next;
if(select("English:Русский")==2){
set #lang,2;
mes "Русский язык включен!";
close;
}
set #lang,1;
mes "English included!";
close;
}

Так будет лучше

Спасибо!

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

  • 8 месяцев спустя...

мистер кеник-) помогите со скриптом, вообщем цель такова, при первом заходе чтобы выводился скрипт языка мульти..но только при создании чара и при первом запуске, без какого либо нпц в городе... у вас скрипт первый даёт ошибки под рА 17ххх


OnPCLoginEvent:
if(firstlogin){
mes "Choose your language";
mes "Выбери свой язык";
set lang, select("English:Русский");
set firstlogin, 1;
close;
}

я попробовал сделать так



- script firstlogin -1,{

OnPCLoginEvent:
if(#language);

else if(#language == 1) mes "Мой язык - Русский";
else if(#language == 2) mes "My langeage - English";

if(select("Русский:English")==1){
set #language,1;
mes "Выбран русский язык!";
close;
}
set #language,2;
mes "English language selected!";
close;
}

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



- script firstlogin -1,{

OnPCLoginEvent:
if(firstlogin);

else if(#language == 1) mes "Мой язык - Русский";
else if(#language == 2) mes "My langeage - English";

if(select("Русский:English")==1){
set #language,1;
mes "Выбран русский язык!";
close;
}
set #language,2;
mes "English language selected!";
close;
}

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

Изменено пользователем ucell-uz
Ссылка на комментарий
Поделиться на другие сайты


- script firstlogin -1,{
end;

OnPCLoginEvent:
if(#language) end;

set #language, select("Русский:English");
mes (@menu == 1?"Выбран русский язык!":"English language selected!");
close;
}

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

огромное человеческое спасибо!)


- script firstlogin -1,{
end;

OnPCLoginEvent:
if(#language) end;

set #language, select("Русский:English");
mes (@menu == 1?"Выбран русский язык!":"English language selected!");
close;
}

это конечно отличный скрипт, но дело вот в чём при создании 2 или 3 персонажей скрипт реагирует на все слоты в создании, а как сделать чтоб он только привязывался к 1 персонажу? например я создал 2го перса и чтоб данное окошко всплывало ещё раз при создании другого персонажа?

Изменено пользователем ucell-uz
Ссылка на комментарий
Поделиться на другие сайты

огромное человеческое спасибо!)


- script firstlogin -1,{
end;

OnPCLoginEvent:
if(#language) end;

set #language, select("Русский:English");
mes (@menu == 1?"Выбран русский язык!":"English language selected!");
close;
}

это конечно отличный скрипт, но дело вот в чём при создании 2 или 3 персонажей скрипт реагирует на все слоты в создании, а как сделать чтоб он только привязывался к 1 персонажу? например я создал 2го перса и чтоб данное окошко всплывало ещё раз при создании другого персонажа?

Использовать переменную, привязанную не к аккаунту, а к персонажу. Первый класс, вторая четверть. Вместо #language возьмите language

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

огромное человеческое спасибо!)


- script firstlogin -1,{
end;

OnPCLoginEvent:
if(#language) end;

set #language, select("Русский:English");
mes (@menu == 1?"Выбран русский язык!":"English language selected!");
close;
}

это конечно отличный скрипт, но дело вот в чём при создании 2 или 3 персонажей скрипт реагирует на все слоты в создании, а как сделать чтоб он только привязывался к 1 персонажу? например я создал 2го перса и чтоб данное окошко всплывало ещё раз при создании другого персонажа?

Использовать переменную, привязанную не к аккаунту, а к персонажу. Первый класс, вторая четверть. Вместо #language возьмите language

ееех! спасибо всё норм запахало

тут возникает вопрос по мимо нпц-шников

разберём к примеру данный скрипт



prontera,120,88,4 script Сотрудница Кафры::kaf_prontera0 115,{

cutin "kafra_03",0;
callfunc "F_KafSet";
if(language == 1)
{
mes "[Сотрудница Кафры южных ворот]";
mes "Приветствую Вас, от представительства Кафра в городе Пайон!";
mes "*мило улыбнулась*";
mes "Скажите, чеми я могу быть Вам полезна?";
callfunc "F_Kafra",5,0,0,800,40;
savepoint "prontera",120,90;
callfunc "F_KafEnd",0,1,"in the city of Prontera";
}

else {
mes "[Kafra Employee]";
mes "Welcome~!";
mes "The Kafra Services";
mes "are always on your side.";
mes "So how can I help you?";
callfunc "F_Kafra",5,0,0,800,40;
savepoint "prontera",150,33;
callfunc "F_KafEnd",0,1,"in the city of Prontera";
}
}

а возможно ли такое что б были 2 папки с нпц типо /npc - это как дефаулт например и /npc_ru

чтоб при выборе языка скрипты прогружались с папки /npc_ru - я к чему так интересуюсь? если даже ты язык по умолчанию выбрал, имена нпц один фиг по русски остаются,

prontera,120,88,4 script Kafra Employee::kaf_prontera0 115,{ - /npc

prontera,120,88,4 script Сотрудница Кафры::kaf_prontera0 115,{ - /npc_ru

мб например в код нпц можно встроить что-то тип того if(language == 1 import: /npc_ru/kafras/kafra.txt) ??

данный метод будит удобен тем что все переведённые нпц с инглиша на руссишь можно будит за бэкапить

и например перейти в дальнейшем на новую ревизию без каких либо там изменений в нпц....

Изменено пользователем ucell-uz
Ссылка на комментарий
Поделиться на другие сайты

Обращу ваше внимание, что нпц загружаются в память сервера при запуске. И они загружаются независимо от того, какой язык выбран у какого из пользователей. Так же нет возможности выбирать, какого НПЦ отображать на экране - всем пользователям отображается один и тот же нпц. Вопрос довольно интересный, если честно - не помню, как с этим система локализации Геркулеса работает. Скорее всего так же не получится имена НПЦ локализовать.

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

×
×
  • Создать...
Яндекс.Метрика