예제 #1
0
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);
}
예제 #2
0
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());
    
}