21:51
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: AXE, Weddew  
Выбор Языка
SeWeRДата: Суббота, 01.11.2008, 14:50 | Сообщение # 1
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 3069
Награды: 66
Город: Киев
Замечания: 20%
Статус:
Вообщем возникла идея.Вообще узнать возможно ли так сделать и как? crazy Вообщем есть мод Русский,перевел на Английский.Теперь чтоб народ мог заходить и выбирать язык.Тоесть игрок конектиться,регистрируется и потом выскакивает окошко - Выбор Языка.
Игрок выбирает Язык и потом уже ему все что есть на моде писало токо по английски.Тоесть все сообщения и т.д. crazy Как так сделать?И вообще реально ли? wall





ATOM57Дата: Суббота, 01.11.2008, 18:20 | Сообщение # 2
[:|||||||:]
Группа: Продвинутые
Сообщений: 1242
Награды: 5
Город: Москва
Репутация: 73
Замечания: 40%
Статус:
$t1m, стант серв держишь? lol Ага, иностранцев много...

Меня тоже интересует эта проблема!


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. мб где то код не верный, ибо давно не кодил в павно crazy


MusicSig vkontakte - расширение функционала ВКонтакте для Google Chrome

Сообщение отредактировал DarkByte - Суббота, 01.11.2008, 18:51
KaZaNOVaДата: Суббота, 01.11.2008, 18:54 | Сообщение # 4
Уверенный в себе
Группа: Продвинутые
Сообщений: 219
Награды: 1
Город: Ульяновск
Репутация: 51
Замечания: 0%
Статус:
$t1m, держы, специально убил 5 минут на это дело wink

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, lol У тебя думать надо! fun


Nice Maps for sa-mp! Уроки по картостроению в MTA:Race, скачать карты

Мой новый проект - [PIXELCARS RU]


Премьера NDRIFT2
theAloneДата: Суббота, 01.11.2008, 21:07 | Сообщение # 10
Долгожитель
Группа: Пользователи
Сообщений: 1380
Награды: 1
Город: Москва
Репутация: 92
Замечания: 0%
Статус:
Beta Include (не тестил crazy )

Функции:
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 - Ангийское сообщение

Прикрепления: multilang.inc (2.0 Kb)
KaZaNOVaДата: Суббота, 01.11.2008, 21:48 | Сообщение # 11
Уверенный в себе
Группа: Продвинутые
Сообщений: 219
Награды: 1
Город: Ульяновск
Репутация: 51
Замечания: 0%
Статус:
DarkByte, но у меня всего 2 проверки wink если бы было 30 языков то само собой нужно было использовать if, else if

Добавлено (01.11.2008, 21:48)
---------------------------------------------
[SFD]EvilRiaz, спс что добавил в разработчики wink

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"

sorry Я в ах*е...ппц)Вроде все прально вписал... suicide2 Помогите,плиз! sorry





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%
Статус:
sad блин, так чё делать то?!
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 методу crazy


Nice Maps for sa-mp! Уроки по картостроению в MTA:Race, скачать карты

Мой новый проект - [PIXELCARS RU]


Премьера NDRIFT2


Сообщение отредактировал ATOM57 - Воскресенье, 02.11.2008, 11:23
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua