void ObjectController::_handleFindFriendDBReply(uint64 retCode,string friendName) { PlayerObject* player = dynamic_cast<PlayerObject*>(mObject); friendName.convert(BSTRType_Unicode16); if(retCode == 0) { gMessageLib->sendSystemMessage(player,L"","cmnty","friend_location_failed_noname","","",L"",0,"","",friendName.getUnicode16()); return; } PlayerObject* searchObject = dynamic_cast<PlayerObject*>(gWorldManager->getObjectById(retCode)); if(!searchObject) { gMessageLib->sendSystemMessage(player,L"","cmnty","friend_location_failed","","",L"",0,"","",friendName.getUnicode16()); return; } //are we on our targets friendlist??? if(!searchObject->checkFriendList(player->getFirstName().getCrc())) { gMessageLib->sendSystemMessage(player,L"","cmnty","friend_location_failed","","",L"",0,"","",friendName.getUnicode16()); return; } Datapad* thePad = dynamic_cast<Datapad*>(searchObject->getEquipManager()->getEquippedObject(CreatureEquipSlot_Datapad)); if(thePad && thePad->getCapacity()) { //the datapad automatically checks for waypoint caspacity and gives the relevant error messages thePad->requestNewWaypoint(searchObject->getFirstName().getAnsi(),searchObject->mPosition,static_cast<uint16>(gWorldManager->getZoneId()),Waypoint_blue); } }
void ObjectController::_handlefindfriend(uint64 targetId,Message* message,ObjectControllerCmdProperties* cmdProperties) { PlayerObject* playerObject = dynamic_cast<PlayerObject*>(mObject); string friendName; int8 sql[1024],end[16],*sqlPointer; message->getStringUnicode16(friendName); if(!friendName.getLength()) { gMessageLib->sendSystemMessage(playerObject,L"","ui_cmnty","friend_location_failed_usage","","",L"",0,"","",L""); return; } if(playerObject->isConnected()) { // query the chat server gMessageFactory->StartMessage(); gMessageFactory->addUint32(opNotifyChatFindFriend); gMessageFactory->addString(friendName); Message* message = gMessageFactory->EndMessage(); playerObject->getClient()->SendChannelA(message,playerObject->getAccountId(),CR_Chat,2); } return; string unicodeName = friendName; friendName.convert(BSTRType_ANSI); // check if he's our friend if(!playerObject->checkFriendList(friendName.getCrc())) { gMessageLib->sendSystemMessage(playerObject,L"","cmnty","friend_not_found","","",L"",0,"","",unicodeName.getUnicode16()); return; } // pull the db query ObjControllerAsyncContainer* asyncContainer = new(mDBAsyncContainerPool.malloc()) ObjControllerAsyncContainer(OCQuery_FindFriend); asyncContainer->mString = friendName.getAnsi(); sprintf(sql,"SELECT id from swganh.characters where firstname like '"); sprintf(end,"'"); sqlPointer = sql + strlen(sql); sqlPointer += mDatabase->Escape_String(sqlPointer,friendName.getAnsi(),friendName.getLength()); strcat(sql,end); mDatabase->ExecuteSqlAsync(this,asyncContainer,sql); }
void ObjectController::_handleRemoveFriend(uint64 targetId,Message* message,ObjectControllerCmdProperties* cmdProperties) { PlayerObject* player = dynamic_cast<PlayerObject*>(mObject); if(player->getContactListUpdatePending()) return; else player->setContactListUpdatePending(true); string friendName; int8 sql[1024],end[16],*sqlPointer; message->getStringUnicode16(friendName); friendName.convert(BSTRType_ANSI); if(!friendName.getLength()) { player->setContactListUpdatePending(false); return; } if(player->isConnected()) gMessageLib->sendHeartBeat(player->getClient()); friendName.toLower(); if(!player->checkFriendList(friendName.getCrc())) { player->setContactListUpdatePending(false); return; } ObjControllerAsyncContainer* asyncContainer = new(mDBAsyncContainerPool.malloc()) ObjControllerAsyncContainer(OCQuery_RemoveFriend); asyncContainer->mString = friendName.getAnsi(); sprintf(sql,"SELECT sf_removeFriend(%"PRIu64",'",player->getId()); sprintf(end,"')"); sqlPointer = sql + strlen(sql); sqlPointer += mDatabase->Escape_String(sqlPointer,friendName.getAnsi(),friendName.getLength()); strcat(sql,end); mDatabase->ExecuteSqlAsync(this,asyncContainer,sql); }
void ObjectController::_handleAddFriend(uint64 targetId,Message* message,ObjectControllerCmdProperties* cmdProperties) { PlayerObject* player = dynamic_cast<PlayerObject*>(mObject); if(player->getContactListUpdatePending()) return; else player->setContactListUpdatePending(true); string friendName; int8 sql[1024],end[16],*sqlPointer; message->getStringUnicode16(friendName); friendName.convert(BSTRType_ANSI); if(!friendName.getLength()) { player->setContactListUpdatePending(false); return; } if(player->isConnected()) gMessageLib->sendHeartBeat(player->getClient()); friendName.toLower(); // check if he's already our friend if(player->checkFriendList(friendName.getCrc())) { friendName.convert(BSTRType_Unicode16); gMessageLib->sendSystemMessage(player,L"","cmnty","friend_duplicate","","",L"",0,"","",friendName.getUnicode16()); player->setContactListUpdatePending(false); return; } // or ignored if(player->checkIgnoreList(friendName.getCrc())) { friendName.convert(BSTRType_Unicode16); gMessageLib->sendSystemMessage(player,L"","cmnty","friend_fail_is_ignored","","",L"",0,"","",friendName.getUnicode16()); player->setContactListUpdatePending(false); return; } // check our own name string firstName = player->getFirstName().getAnsi(); firstName.toLower(); if(strcmp(firstName.getAnsi(),friendName.getAnsi()) == 0) { player->setContactListUpdatePending(false); return; } // pull the db query ObjControllerAsyncContainer* asyncContainer = new(mDBAsyncContainerPool.malloc()) ObjControllerAsyncContainer(OCQuery_AddFriend); asyncContainer->mString = friendName.getAnsi(); sprintf(sql,"SELECT sf_addFriend(%"PRIu64",'",player->getId()); sprintf(end,"')"); sqlPointer = sql + strlen(sql); sqlPointer += mDatabase->Escape_String(sqlPointer,friendName.getAnsi(),friendName.getLength()); strcat(sql,end); mDatabase->ExecuteSqlAsync(this,asyncContainer,sql); }