Игры «Снежки» и «Анаграммы»
Игры «Снежки» и «Анаграммы»
Добрый день, хотел спросить, когда появятся боты для 5-ой версии это: "Снежки" и "Анаграммы" ?
Чужой(популярный) чат: 4local.ru
Местонахождение(Страна): Беларусь
Местонахождение(Область и Город): Гомельская область/ г.Гомель
Веб страница: http://4local.ru/
Присоединяйтесь.
Народа в commfort'e: 4831. Из них из инета: 470
Местонахождение(Страна): Беларусь
Местонахождение(Область и Город): Гомельская область/ г.Гомель
Веб страница: http://4local.ru/
Присоединяйтесь.
Народа в commfort'e: 4831. Из них из инета: 470
- инопланетянен
- Сообщения: 445
- Зарегистрирован: 11:37, 14.10.2009
- Откуда: Комсомольск-на-Амуре
Re: Обратите внимание !
Fallout писал(а):Добрый день, хотел спросить, когда появятся боты для 5-ой версии это: "Снежки" и "Анаграммы" ?
Это всё можно подключить от 4-ой версии через плагин Bots-Plugin от @serg@. Анаграммы мне не нужны а снежки отлично работают в викторине от скифа.
.:*~*:._.:*~*:._.:*~*:._.:*~*:
г. Комсомольск-на-Амуре
сервер: shestoi.sytes.net
.:*~*:._.:*~*:._.:*~*:._.:*~*:
г. Комсомольск-на-Амуре
сервер: shestoi.sytes.net
.:*~*:._.:*~*:._.:*~*:._.:*~*:
Re: Обратите внимание !
Подключать всё равно не удобно! Лучше бы сделали для сервера,такую программу которая присоединяла бы ботов от 4.хх версии...
Re: Игры «Снежки» и «Анаграммы»
Для пятой версии это реалиовать вообще не реально, так как пятёрка не держит ботов. Это либо с нуля писать в виде плагина, или через плагин-мост, такой как Bots-Plugin.Fallout писал(а):Добрый день, хотел спросить, когда появятся боты для 5-ой версии это: "Снежки" и "Анаграммы" ?
Ты сам себе противоречишь, сначала говоришь что мост это не удобно, потом просишь сделать этот мост. Bots-Plugin пока реализован только для клиента, когда его допишу он отличаться почти не будет, только появятся поля для ввода имени пользователя и пароля. В любом случае для моста есть 1 важный недостаток, каналы и пользователи с символами Unicode ботом не воспримутся, т.к. протокол ботов по умолчанию не держит таковых.Chip писал(а):Подключать всё равно не удобно! Лучше бы сделали для сервера,такую программу которая присоединяла бы ботов от 4.хх версии...
Re: Игры «Снежки» и «Анаграммы»
Ничто не помешает воспользоваться функциями Windows API для преобразования строки в юникод и обратно@serg@ писал(а): В любом случае для моста есть 1 важный недостаток, каналы и пользователи с символами Unicode ботом не воспримутся, т.к. протокол ботов по умолчанию не держит таковых.
Код: Выделить всё
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);
Re: Игры «Снежки» и «Анаграммы»
Если не сложно подскажи как они работают, даже если ник пользователя содержит коды из одного диапозона кодировки ты переконвертишь в Windows-строку, и бот воспримет ка-то это, но в какой кодировке он ответит тебе, это ты откуда узнаешь? Из чего конвертировать будешь?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);
Re: Игры «Снежки» и «Анаграммы»
Вот пример конвертирования (C++). Если пишешь в Delphi, переделать не сложно.@serg@ писал(а):Если не сложно подскажи как они работают, даже если ник пользователя содержит коды из одного диапозона кодировки ты переконвертишь в Windows-строку, и бот воспримет ка-то это, но в какой кодировке он ответит тебе, это ты откуда узнаешь? Из чего конвертировать будешь?
Код: Выделить всё
//Из обычной строки в юникод 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();
А в 4 - обычные строки (CP_ACP)
Re: Игры «Снежки» и «Анаграммы»
Как я понял @serg@ имеет ввиду потерю информации при конвертировании из utf16 в ansi с невозможностью восстановить эту информацию при обратном перекодировании.supermet писал(а):Вот пример конвертирования (C++). Если пишешь в Delphi, переделать не сложно.
Выкрутится тут можно передавая юникодовские символы в виде кода с управляющим символом в начале.
Причем управляющий символ должен быть выбран таким образом чтобы он не мог содержатся в никнеймах.
(С похожим я сталкивался при написании Irc2ComGate)
Допустим - ® юникодовский символ
Тогда от плагина к боту имя Ю®чик должно передаваться как то так : Ю\00AEчик
где \ управляющий символ,а 00АЕ - шестнадцатеричный код символа ®
ну а в обратную сторону строку надо нормализовывать в обратном порядке.
Тогда потери информации быть не должно.
Re: Игры «Снежки» и «Анаграммы»
Да именно это я и имел ввиду, вначале я хотел в своём плагине реализовать передачу юникод-символа как двух ansi, но тут массу проблем может возникнуть, к примеру такие ANSI символы как 00,10,13 и ещё некоторые надо будет заменять на некие другие. Но и тут незадача, в четвёртой версии были вроде как запрещённые символы, которые при этом могли программисты в ботах использовать для своих целей, если произойдёт такое наложение, то бот откажется работать. После долгих размышлений я пошел по следующему пути, решился воспользоваться стандартным приведением типов к ansi в с++ builder 2010. Как я понял это приведение типов просто отбрасывает младший байт а учитывает только старший, что тоже является конвертацией с потерями.-=SJ=- писал(а):Как я понял @serg@ имеет ввиду потерю информации при конвертировании из utf16 в ansi с невозможностью восстановить эту информацию при обратном перекодировании.