bool MessageLib::sendBanList(PlayerStructure* structure, PlayerObject* playerObject) { if(!(playerObject->isConnected())) return(false); Message* newMessage; mMessageFactory->StartMessage(); mMessageFactory->addUint32(opSendPermissionList); mMessageFactory->addUint32(structure->getStrucureBanList().size() ); BString name; BStringVector vector = structure->getStrucureBanList(); BStringVector::iterator it = vector.begin(); while(it != vector.end()) { name = (*it); name.convert(BSTRType_Unicode16); mMessageFactory->addString(name); it++; } mMessageFactory->addUint32(0); // ??? //mMessageFactory->addUint16(0); // unknown name = "BAN"; name.convert(BSTRType_Unicode16); mMessageFactory->addString(name); mMessageFactory->addUint32(0); // ??? newMessage = mMessageFactory->EndMessage(); (playerObject->getClient())->SendChannelA(newMessage, playerObject->getAccountId(), CR_Client, 5); structure->resetStructureAdminList(); return(true); }
void CSRManager::_processSearchKnowledgeBaseMessage(Message *message, DispatchClient* client) { BString search; message->getStringUnicode16(search); search.convert(BSTRType_ANSI); BStringVector splitstring; search.split(splitstring, ' '); BStringVector::iterator iter = splitstring.begin(); BString sql = "%"; while (iter != splitstring.end()) { int8 cleanSearchString[4000]; mDatabase->Escape_String(cleanSearchString, (*iter).getAnsi(), (*iter).getLength()); sql << cleanSearchString; sql << "%"; ++iter; } CSRAsyncContainer* asynccontainer = new CSRAsyncContainer(CSRQuery_SearchKB); asynccontainer->mClient = client; mDatabase->ExecuteProcedureAsync(this, asynccontainer, "CALL sp_CSRKnowledgeBaseArticleFind ('%s');", sql.getAnsi()); }