Игры «Снежки» и «Анаграммы»

Здесь обсуждаются еще нереализованные дополнения.
Fallout
Сообщения: 19
Зарегистрирован: 13:35, 07.11.2010
Откуда: Белорусь>Гомель

Игры «Снежки» и «Анаграммы»

Сообщение Fallout »

Добрый день, хотел спросить, когда появятся боты для 5-ой версии это: "Снежки" и "Анаграммы" ?
Чужой(популярный) чат: 4local.ru
Местонахождение(Страна): Беларусь
Местонахождение(Область и Город): Гомельская область/ г.Гомель
Веб страница: http://4local.ru/
Присоединяйтесь.
Народа в commfort'e: 4831. Из них из инета: 470
Аватара пользователя
инопланетянен
Сообщения: 445
Зарегистрирован: 11:37, 14.10.2009
Откуда: Комсомольск-на-Амуре

Re: Обратите внимание !

Сообщение инопланетянен »

Fallout писал(а):Добрый день, хотел спросить, когда появятся боты для 5-ой версии это: "Снежки" и "Анаграммы" ?

Это всё можно подключить от 4-ой версии через плагин Bots-Plugin от @serg@. Анаграммы мне не нужны а снежки отлично работают в викторине от скифа.
.:*~*:._.:*~*:._.:*~*:._.:*~*:
г. Комсомольск-на-Амуре
сервер: shestoi.sytes.net
.:*~*:._.:*~*:._.:*~*:._.:*~*:
Chip
Сообщения: 184
Зарегистрирован: 17:31, 19.10.2010
Контактная информация:

Re: Обратите внимание !

Сообщение Chip »

Подключать всё равно не удобно! Лучше бы сделали для сервера,такую программу которая присоединяла бы ботов от 4.хх версии...
@serg@
Сообщения: 702
Зарегистрирован: 14:50, 20.07.2009

Re: Игры «Снежки» и «Анаграммы»

Сообщение @serg@ »

Fallout писал(а):Добрый день, хотел спросить, когда появятся боты для 5-ой версии это: "Снежки" и "Анаграммы" ?
Для пятой версии это реалиовать вообще не реально, так как пятёрка не держит ботов. Это либо с нуля писать в виде плагина, или через плагин-мост, такой как Bots-Plugin.
Chip писал(а):Подключать всё равно не удобно! Лучше бы сделали для сервера,такую программу которая присоединяла бы ботов от 4.хх версии...
Ты сам себе противоречишь, сначала говоришь что мост это не удобно, потом просишь сделать этот мост. Bots-Plugin пока реализован только для клиента, когда его допишу он отличаться почти не будет, только появятся поля для ввода имени пользователя и пароля. В любом случае для моста есть 1 важный недостаток, каналы и пользователи с символами Unicode ботом не воспримутся, т.к. протокол ботов по умолчанию не держит таковых.
Аватара пользователя
supermet
Сообщения: 245
Зарегистрирован: 02:35, 19.07.2009

Re: Игры «Снежки» и «Анаграммы»

Сообщение supermet »

@serg@ писал(а): В любом случае для моста есть 1 важный недостаток, каналы и пользователи с символами Unicode ботом не воспримутся, т.к. протокол ботов по умолчанию не держит таковых.
Ничто не помешает воспользоваться функциями Windows API для преобразования строки в юникод и обратно

Код: Выделить всё

int MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar);
// и
int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar);
@serg@
Сообщения: 702
Зарегистрирован: 14:50, 20.07.2009

Re: Игры «Снежки» и «Анаграммы»

Сообщение @serg@ »

supermet писал(а):Ничто не помешает воспользоваться функциями Windows API для преобразования строки в юникод и обратно

Код: Выделить всё

int MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar);
// и
int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar);
Если не сложно подскажи как они работают, даже если ник пользователя содержит коды из одного диапозона кодировки ты переконвертишь в Windows-строку, и бот воспримет ка-то это, но в какой кодировке он ответит тебе, это ты откуда узнаешь? Из чего конвертировать будешь?
Аватара пользователя
supermet
Сообщения: 245
Зарегистрирован: 02:35, 19.07.2009

Re: Игры «Снежки» и «Анаграммы»

Сообщение supermet »

@serg@ писал(а):Если не сложно подскажи как они работают, даже если ник пользователя содержит коды из одного диапозона кодировки ты переконвертишь в Windows-строку, и бот воспримет ка-то это, но в какой кодировке он ответит тебе, это ты откуда узнаешь? Из чего конвертировать будешь?
Вот пример конвертирования (C++). Если пишешь в Delphi, переделать не сложно.

Код: Выделить всё

//Из обычной строки в юникод UTF-16 
std::wstring strtows(const std::string str, UINT codePage)
{
   std::wstring ws;
   int n = MultiByteToWideChar(codePage, 0, str.c_str(), str.size()+1, /*dst*/NULL, 0);
   if(n)
   {
      ws.resize(n-1);
      if(MultiByteToWideChar(codePage, 0, str.c_str(), str.size()+1, /*dst*/&ws[0], n) == 0)
         ws.clear();
   }
   return ws;
}
//Из юникод UTF-16 в обычную строку
std::string wstostr(const std::wstring ws, UINT codePage)
{
   std::string str;
   int n = WideCharToMultiByte(codePage, 0, ws.c_str(), ws.size()+1, /*dst*/NULL, 0, /*defchr*/0, NULL);
   if(n)
   {
      str.resize(n-1);
      if(WideCharToMultiByte(codePage, 0, ws.c_str(), ws.size()+1, /*dst*/&str[0], n, /*defchr*/0, NULL) == 0)
         str.clear();
   }
   return str;
}
// Из обычной строки в одной кодировке в строку в другой кодировке
std::string chcp(const std::string str, UINT codePageSrc, UINT codePageDst)
{
   return wstostr(strtows(str, codePageSrc), codePageDst);
}
//  Пример
std::string strAcpSrc = "строка";
std::string strUtf = chcp(strAcpSrc, CP_ACP, CP_UTF8);
std::string strAcp = chcp(strUtf, CP_UTF8, CP_ACP);
std::cout << ((strAcpSrc == strAcp) ? "success" : "error");
std::cin.get();
В 5-й версии коммфорта бот всегда принимает и отправляет строки в UTF-16
А в 4 - обычные строки (CP_ACP)
Аватара пользователя
-=SJ=-
Сообщения: 246
Зарегистрирован: 02:21, 06.04.2007

Re: Игры «Снежки» и «Анаграммы»

Сообщение -=SJ=- »

supermet писал(а):Вот пример конвертирования (C++). Если пишешь в Delphi, переделать не сложно.
Как я понял @serg@ имеет ввиду потерю информации при конвертировании из utf16 в ansi с невозможностью восстановить эту информацию при обратном перекодировании.
Выкрутится тут можно передавая юникодовские символы в виде кода с управляющим символом в начале.
Причем управляющий символ должен быть выбран таким образом чтобы он не мог содержатся в никнеймах.
(С похожим я сталкивался при написании Irc2ComGate)
Допустим - ® юникодовский символ
Тогда от плагина к боту имя Ю®чик должно передаваться как то так : Ю\00AEчик
где \ управляющий символ,а 00АЕ - шестнадцатеричный код символа ®
ну а в обратную сторону строку надо нормализовывать в обратном порядке.
Тогда потери информации быть не должно.
@serg@
Сообщения: 702
Зарегистрирован: 14:50, 20.07.2009

Re: Игры «Снежки» и «Анаграммы»

Сообщение @serg@ »

-=SJ=- писал(а):Как я понял @serg@ имеет ввиду потерю информации при конвертировании из utf16 в ansi с невозможностью восстановить эту информацию при обратном перекодировании.
Да именно это я и имел ввиду, вначале я хотел в своём плагине реализовать передачу юникод-символа как двух ansi, но тут массу проблем может возникнуть, к примеру такие ANSI символы как 00,10,13 и ещё некоторые надо будет заменять на некие другие. Но и тут незадача, в четвёртой версии были вроде как запрещённые символы, которые при этом могли программисты в ботах использовать для своих целей, если произойдёт такое наложение, то бот откажется работать. После долгих размышлений я пошел по следующему пути, решился воспользоваться стандартным приведением типов к ansi в с++ builder 2010. Как я понял это приведение типов просто отбрасывает младший байт а учитывает только старший, что тоже является конвертацией с потерями.
Ответить