 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
Выбор Языка
| |
| SeWeR | Дата: Суббота, 01.11.2008, 14:50 | Сообщение # 1 |
|
Мастер джэдай
Группа:
I'm V.I.P.
Сообщений: 3069
Награды: 66
Город: Киев
Замечания: 20%
Статус: 
| Вообщем возникла идея.Вообще узнать возможно ли так сделать и как? Вообщем есть мод Русский,перевел на Английский.Теперь чтоб народ мог заходить и выбирать язык.Тоесть игрок конектиться,регистрируется и потом выскакивает окошко - Выбор Языка. Игрок выбирает Язык и потом уже ему все что есть на моде писало токо по английски.Тоесть все сообщения и т.д. Как так сделать?И вообще реально ли?
|
| |
|
|
| ATOM57 | Дата: Суббота, 01.11.2008, 18:20 | Сообщение # 2 |
|
[:|||||||:]
Группа:
Продвинутые
Сообщений: 1242
Награды: 5
Город: Москва
Репутация: 73
Замечания: 40%
Статус: 
| $t1m, стант серв держишь? Ага, иностранцев много... Меня тоже интересует эта проблема!
Nice Maps for sa-mp! Уроки по картостроению в MTA:Race, скачать карты
Мой новый проект - [PIXELCARS RU]
Премьера NDRIFT2
|
| |
|
|
| DarkByte | Дата: Суббота, 01.11.2008, 18:49 | Сообщение # 3 |
|
Долгожитель
Группа:
Продвинутые
Сообщений: 1577
Награды: 7
Город: Челябинск
Репутация: 182
Замечания: 0%
Статус: 
| Ну для начала прийдётся вынести все сообщения в отдельный массив, например: Code new LngRU[3] = { "превед", "кросафчеги", "америкоские" } И глобальную переменную, отвечающую за текущий язык игроков: Code new Lang[MAX_PLAYERS]; Теперь напишем свои фукнции SendClientMessage и SendClientMessageToAll: Code public SendClientMessageLng(playerid,color,msgid) { switch Lang[playerid] { case 0: SendClientMessage(playerid,color,LngRU[msgid]); } }
public SendClientMessageToAllLng(playerid,color,msgid) { for (new i=0; i<MAX_PLAYERS; i++) if (IsPlayerConnected(i)) SendClientMessageLng(playerid,color,msgid) } Ну и теперь вернёмся к нашему массиву, в который мы занесли все сообщения из мода, теперь нужно в самом моде заменить эти сообщения... Например была фукнция SendClientMessage(playerid,COLOR_RED,"превед"), а должна стать SendClientMessageLng(playerid,COLOR_RED,0), т.е. добавили Lng и заменили текст, на его порядковый номер в массиве. Теперь можно добавлять ещё один язык, это делается очень просто, добавляем новый массив, например LngEN и туда пишем теже сообщения, только уже на английском и после строки case 0: SendClientMessage(playerid,color,LngRU[msgid]); пишем строку case 1: SendClientMessage(playerid,color,LngEN[msgid]); Вот и почти готово, осталось только сделать выбор языка, ну это уже сами делайте, скажу лишь только то, что Lang[playerid]=0 - это русский язык, Lang[playerid]=1 - это английский (в моём примере) P.S. мб где то код не верный, ибо давно не кодил в павно 
MusicSig vkontakte - расширение функционала ВКонтакте для Google Chrome
Сообщение отредактировал DarkByte - Суббота, 01.11.2008, 18:51 |
| |
|
|
| KaZaNOVa | Дата: Суббота, 01.11.2008, 18:54 | Сообщение # 4 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 219
Награды: 1
Город: Ульяновск
Репутация: 51
Замечания: 0%
Статус: 
| $t1m, держы, специально убил 5 минут на это дело Code #define ENG 0 #define RUS 1 new Language[MAX_PLAYERS]; new Menu: VuborLang;
public OnGameModeInit(){
VuborLang = CreateMenu("Language", 1, 50.0, 180.0, 200.0, 200.0); if (IsValidMenu(VuborLang)){ AddMenuItem(VuborLang, 0, "RUSSIAN"); AddMenuItem(VuborLang, 0, "ENGLISH"); } return true; }
public OnPlayerConnect(playerid){ ShowMenuForPlayer(VuborLang, playerid); TogglePlayerControllable(playerid, false); return true; }
public OnPlayerSelectedMenuRow(playerid, row) { new Menu:current; current = GetPlayerMenu(playerid); if(current == VuborLang){ switch(row){ case 0:{ SendClientMessage(playerid,0xFFFF44FF,"You choose english languge"); Language[playerid] = ENG; TogglePlayerControllable(playerid, true); } case 1:{ SendClientMessage(playerid,0xFFFF44FF,"Вы выбрали русский язык"); Language[playerid] = RUS; TogglePlayerControllable(playerid, true); } } } return true; } И в любом случае где нужно вывести сообщение, например в команде: Code public OnPlayerCommandText(playerid, cmdtext[]){ if(strcmp(cmdtext, "/help", true) == 0) { if(Language[playerid] == RUS) SendClientMessage(playerid,0xFFFF44FF,"Русское сообщение"); if(Language[playerid] == ENG) SendClientMessage(playerid,0xFFFF44FF,"English message"); return true; } return false; } или посредством switch, case: Code public OnPlayerCommandText(playerid, cmdtext[]){ if(strcmp(cmdtext, "/help", true) == 0) { switch(Language[playerid]){ case RUS:{ SendClientMessage(playerid,0xFFFF44FF,"Русское сообщение");} case ENG:{ SendClientMessage(playerid,0xFFFF44FF,"English message"); } } return true; } return false; } Language[playerid] == RUS - русский текст Language[playerid] == ENG - английский текст
Not we bad speak - you bad understand... ©KaZaNOVa У каждого девелопера свои петухи в голове ©OKStyle™
Сообщение отредактировал KaZaNOVa - Суббота, 01.11.2008, 19:19 |
| |
|
|
| theAlone | Дата: Суббота, 01.11.2008, 18:58 | Сообщение # 5 |
|
Долгожитель
Группа:
Пользователи
Сообщений: 1380
Награды: 1
Город: Москва
Репутация: 92
Замечания: 0%
Статус: 
| Code public OnPlayerCommandText(playerid, cmdtext[]){ if(strcmp(cmdtext, "/help", true) == 0) { if(Language[playerid] == RUS) SendClientMessage(playerid,0xFFFF44FF,"Русское сообщение"); if(Language[playerid] == ENG) SendClientMessage(playerid,0xFFFF44FF,"English message"); return true; } return false; } надо Code public OnPlayerCommandText(playerid, cmdtext[]){ if(strcmp(cmdtext, "/help", true) == 0) { if(Language[playerid] == RUS) SendClientMessage(playerid,0xFFFF44FF,"Русское сообщение"); else if(Language[playerid] == ENG) SendClientMessage(playerid,0xFFFF44FF,"English message"); return true; } return false; } А лучше вообще swith
|
| |
|
|
| KaZaNOVa | Дата: Суббота, 01.11.2008, 19:02 | Сообщение # 6 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 219
Награды: 1
Город: Ульяновск
Репутация: 51
Замечания: 0%
Статус: 
| [SFD]EvilRiaz, разница в том что ты написал? что Code if(123) Kick(playerid); if(321) Kick(playerid); что Code if(123) Kick(playerid); else if(321) Kick(playerid); Абсолютно идентичная работа скрипта, т.е. на работе эта else никак не сказывается
Not we bad speak - you bad understand... ©KaZaNOVa У каждого девелопера свои петухи в голове ©OKStyle™
|
| |
|
|
| ATOM57 | Дата: Суббота, 01.11.2008, 20:04 | Сообщение # 7 |
|
[:|||||||:]
Группа:
Продвинутые
Сообщений: 1242
Награды: 5
Город: Москва
Репутация: 73
Замечания: 40%
Статус: 
| KaZaNOVa, спасибо огромнейшее!!! Quote (KaZaNOVa) И в любом случае где нужно вывести сообщение, например в команде: Только вот как мне сделать это в этой команде Code if(strcmp(cmdtext,"/bigfoot",true)==0){ new rand=random(sizeof(bigfoot));// SetPlayerPos(playerid,bigfoot[rand][0],bigfoot[rand][1],bigfoot[rand][2]); new atom[256],riaz[24]; GetPlayerName(playerid,riaz,24); format(atom,256," (/BIGFOOT)%s телепортировался на Арену для бигфутов",riaz); SendClientMessageToAll(COLOR_ORANGE,atom); SetPlayerTime(playerid,15,00); ResetPlayerWeapons(playerid); return 1;}
Nice Maps for sa-mp! Уроки по картостроению в MTA:Race, скачать карты
Мой новый проект - [PIXELCARS RU]
Премьера NDRIFT2
|
| |
|
|
| DarkByte | Дата: Суббота, 01.11.2008, 20:13 | Сообщение # 8 |
|
Долгожитель
Группа:
Продвинутые
Сообщений: 1577
Награды: 7
Город: Челябинск
Репутация: 182
Замечания: 0%
Статус: 
| Quote (ATOM57) Только вот как мне сделать это в этой команде Мне моё решение кажется более оптимальным, т.к. все проверки на язык вынесены в отдельную фукцию и после одного преобразования кода, добавление нового языка займёт только время на перевод фраз Quote (KaZaNOVa) Абсолютно идентичная работа скрипта, т.е. на работе эта else никак не сказывается Если проверок будет много и они будут не элементарными, то это сильно скажется на производительности скрипта, вобщем else может неплохо оптимизировать скрипт в подобной ситуации
MusicSig vkontakte - расширение функционала ВКонтакте для Google Chrome
Сообщение отредактировал DarkByte - Суббота, 01.11.2008, 20:17 |
| |
|
|
| ATOM57 | Дата: Суббота, 01.11.2008, 20:16 | Сообщение # 9 |
|
[:|||||||:]
Группа:
Продвинутые
Сообщений: 1242
Награды: 5
Город: Москва
Репутация: 73
Замечания: 40%
Статус: 
| DarkByte, У тебя думать надо!
Nice Maps for sa-mp! Уроки по картостроению в MTA:Race, скачать карты
Мой новый проект - [PIXELCARS RU]
Премьера NDRIFT2
|
| |
|
|
| theAlone | Дата: Суббота, 01.11.2008, 21:07 | Сообщение # 10 |
|
Долгожитель
Группа:
Пользователи
Сообщений: 1380
Награды: 1
Город: Москва
Репутация: 92
Замечания: 0%
Статус: 
| Beta Include (не тестил ) Функции: ML_OnGameModeInit() ML_OnPlayerConnect(playerid) ML_OnPlayerSelectedMenuRow(playerid, row) ML_OnPlayerExitedMenu(playerid) - все обязательные функции, куда вставлять думаю объяснять не стоит. SendMultiMessage(playerid,COLOR,tmp[],tmp2[]) - отправить мульти сообщение игроку. Где playerid - id игрока COLOR - цвет tmp - русское сообщение tmp2 - Ангийское сообщение SendMultiMessageToAll(COLOR,tmp[],tmp2[]) - отправить мульти сообщение игроку. Где COLOR - цвет tmp - русское сообщение tmp2 - Ангийское сообщение
|
| |
|
|
| KaZaNOVa | Дата: Суббота, 01.11.2008, 21:48 | Сообщение # 11 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 219
Награды: 1
Город: Ульяновск
Репутация: 51
Замечания: 0%
Статус: 
| DarkByte, но у меня всего 2 проверки если бы было 30 языков то само собой нужно было использовать if, else ifДобавлено (01.11.2008, 21:48) --------------------------------------------- [SFD]EvilRiaz, спс что добавил в разработчики Code //MultiLang Include by KaZaNOVa & [SFD]evilRiaz [самп-русьт точко ком]
Not we bad speak - you bad understand... ©KaZaNOVa У каждого девелопера свои петухи в голове ©OKStyle™
|
| |
|
|
| SeWeR | Дата: Воскресенье, 02.11.2008, 00:13 | Сообщение # 12 |
|
Мастер джэдай
Группа:
I'm V.I.P.
Сообщений: 3069
Награды: 66
Город: Киев
Замечания: 20%
Статус: 
| KaZaNOVa, я тебе очень благодарен!Но у меня первый раз скоко ошибок выскакивает: Code C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(437) : error 029: invalid expression, assumed zero C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(437) : error 004: function "OnGameModeExit" is not implemented C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(441) : error 029: invalid expression, assumed zero C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(441) : error 004: function "OnPlayerRequestClass" is not implemented C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(443) : error 017: undefined symbol "playerid" C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(444) : error 017: undefined symbol "playerid" C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(445) : error 017: undefined symbol "playerid" C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(449) : warning 225: unreachable code C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(449) : error 029: invalid expression, assumed zero C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(449) : error 004: function "OnPlayerRequestSpawn" is not implemented C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(454) : warning 225: unreachable code C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(454) : error 029: invalid expression, assumed zero C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(454) : error 004: function "OnPlayerConnect" is not implemented C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(457) : error 017: undefined symbol "playerid" C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(458) : error 017: undefined symbol "playerid" C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(460) : error 017: undefined symbol "playerid" C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(461) : error 017: undefined symbol "playerid" C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(462) : error 017: undefined symbol "playerid" C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(464) : error 017: undefined symbol "playerid" C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(471) : warning 225: unreachable code C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(471) : error 029: invalid expression, assumed zero C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(471) : error 004: function "OnPlayerDisconnect" is not implemented C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(474) : error 017: undefined symbol "playerid" C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(481) : warning 225: unreachable code C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(481) : error 029: invalid expression, assumed zero C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(481) : error 004: function "OnPlayerSpawn" is not implemented C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(483) : error 017: undefined symbol "playerid" C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(484) : error 017: undefined symbol "playerid" C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(485) : error 017: undefined symbol "playerid" C:\Documents and Settings\Admin\Рабочий стол\StuntGM.pwn(486) : error 017: undefined symbol "playerid" Я в ах*е...ппц)Вроде все прально вписал... Помогите,плиз!
|
| |
|
|
| Eakwarp | Дата: Воскресенье, 02.11.2008, 00:32 | Сообщение # 13 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 4874
Награды: 179
Город: Москва
Репутация: 2543
Замечания: 60%
Статус: 
| как не крути а по таблицам быстрее)
More than 4 years of development, more than 250,000 lines of source code, more than a hundred units and more than 3400 revisions. Valakas Roleplay - choose your role.
Valakas Roleplay on Twitter
Платные консультации, разработка, в ICQ. Дорого.
|
| |
|
|
| b0vver | Дата: Воскресенье, 02.11.2008, 02:00 | Сообщение # 14 |
|
Мастер джэдай
Группа:
I'm V.I.P.
Сообщений: 2327
Награды: 36
Город: .
Замечания: 0%
Статус: 
| $t1m, *_* ну ты криворукий) следуй постам DarkByta
Off.line
|
| |
|
|
| ATOM57 | Дата: Воскресенье, 02.11.2008, 12:45 | Сообщение # 15 |
|
[:|||||||:]
Группа:
Продвинутые
Сообщений: 1242
Награды: 5
Город: Москва
Репутация: 73
Замечания: 40%
Статус: 
| блин, так чё делать то?!Quote (ATOM57) Только вот как мне сделать это в этой команде Code if(strcmp(cmdtext,"/bigfoot",true)==0){ new rand=random(sizeof(bigfoot));// SetPlayerPos(playerid,bigfoot[rand][0],bigfoot[rand][1],bigfoot[rand][2]); new atom[256],riaz[24]; GetPlayerName(playerid,riaz,24); format(atom,256," (/BIGFOOT)%s телепортировался на Арену для бигфутов",riaz); SendClientMessageToAll(COLOR_ORANGE,atom); SetPlayerTime(playerid,15,00); ResetPlayerWeapons(playerid); return 1;} Добавлено (02.11.2008, 12:45) --------------------------------------------- По KazanoFFskomu методу 
Nice Maps for sa-mp! Уроки по картостроению в MTA:Race, скачать карты
Мой новый проект - [PIXELCARS RU]
Премьера NDRIFT2
Сообщение отредактировал ATOM57 - Воскресенье, 02.11.2008, 11:23 |
| |
|
|
|
 |
|
 | |
| |
|