SELECT * FROM user_data WHERE char_name='test' and login
return DB::select()
->from( "user_data" )
->where( "char_name", "=", $char_name)
->and_where( "login", ">", 0 )
Это неправильный запрос, он вернет всех, кто когда-либо заходил в игру вообщеC++:return DB::select() ->from( "user_data" ) ->where( "char_name", "=", $char_name) ->and_where( "login", ">", 0 )
Если я правильно понял вопрос - нужен не вывод онлайна вообще, а список персонажей, кто онлайн в данный момент. Я не знаю ни одного полноценного способа как это сделать, кроме этого способа с погрешностьюwebdes27, тсп пакетом получение с кэшеда, с раз в н минут обновлением данных и посылкой пакета на получение онлайна.
Вы меня правильно поняли! Думал можно через базу ибо не пойму как работать с пакетами через кешед по веб сокету и пояснить некому.)Если я правильно понял вопрос - нужен не вывод онлайна вообще, а список персонажей, кто онлайн в данный момент. Я не знаю ни одного полноценного способа как это сделать, кроме этого способа с погрешностью
Я sql не увиделmasone, с чего это вдруг С++? У меня нету класса db и функций select, where. Зачем мне слать 2 условия, если я могу в массиве передать, что необходимо в where. Была бы польза, а то вред...
Я sql не увидел
А это что?
Для удобства лучше всего написать пакетный менеджер который приблизительно как в жабе сделан со своими структурами и т.д. Далее просто устанавливаешь коннект и шлешь необходимые пакеты. Запилить коннект дело 5 минут.Думал можно через базу ибо не пойму как работать с пакетами через кешед по веб сокету и пояснить некому.
bool packet000_VersionPacket(CIOSocket* pSocket, const uint8_t* packet)
{
guard(__FUNCTIONW__);
int clientProtocolRevision = 0;
PacketUtils::Disassemble(packet, "d", &clientProtocolRevision);
if (clientProtocolRevision == -1)
{
return false;
}
CUserSocket* socket = static_cast<CUserSocket*>(pSocket);
if (clientProtocolRevision == -2)
{
socket->Send("cd", ServerToClientPacket_AdminSocket, 1);
if (socket->IsUserSocket())
{
socket->SetSomeDebugInfo(true);
}
return true;
}
if (clientProtocolRevision == -3)
{
wchar_t buffer[0x100] = {0};
DumpServerStats(buffer);
if (g_npcServer.GetSocketCount() <= 0)
{
socket->Send("cdddddS", ServerToClientPacket_AdminSocket, 2, CServerStatistic::s_maxUsers, CServerStatistic::s_usersConnected, CServerStatistic::s_usersPlaying, CServerStatistic::s_privateStores, buffer);
}
else
{
socket->Send("cdddddS", ServerToClientPacket_AdminSocket, 1, CServerStatistic::s_maxUsers, CServerStatistic::s_usersConnected, CServerStatistic::s_usersPlaying, CServerStatistic::s_privateStores, buffer);
}
return false;
}
//...
Бывает, я так же подумалБлин, сорри, статус онлайн персонажа, а не онлайн-статус персонажей...
Старый-престарый класс работы с CacheD, еще времен C4 от adriahu
Даже в нем есть пакет для получения статуса онлайна - смотри пакет CheckCharacter
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?