1
This commit is contained in:
parent
1bcc82aef3
commit
7de769b4b6
@ -453,6 +453,11 @@ void Guild::_CMGuildMemberList(f8::MsgHdr& hdr, const cs::CMGuildMemberList& msg
|
|||||||
GetMemberJob(member->account_id),
|
GetMemberJob(member->account_id),
|
||||||
*member,
|
*member,
|
||||||
*(p->mutable_base_data()));
|
*(p->mutable_base_data()));
|
||||||
|
TypeConvert::Convert(member->temp_custom_data, *p->mutable_temp_custom_data());
|
||||||
|
if (member->account_id == forward_msg->context().user_info().base_data().account_id()) {
|
||||||
|
member->online = 1;
|
||||||
|
member->last_update_time = App::Instance()->nowtime;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle,
|
GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle,
|
||||||
forward_msg->context(),
|
forward_msg->context(),
|
||||||
@ -728,6 +733,42 @@ std::set<std::string>* Guild::GetJobMembers(int job)
|
|||||||
return &job_hash_[job];
|
return &job_hash_[job];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Guild::UpdateMemberInfo(const cs::MFUserInfo& user_info)
|
||||||
|
{
|
||||||
|
GuildMember* member = GetMember(user_info.base_data().account_id());
|
||||||
|
if (member) {
|
||||||
|
member->nickname = user_info.base_data().nickname();
|
||||||
|
member->avatar_url = user_info.base_data().avatar_url();
|
||||||
|
member->sex = user_info.base_data().sex();
|
||||||
|
member->last_login_time = user_info.base_data().last_login_time();
|
||||||
|
member->user_value1 = user_info.base_data().user_value1();
|
||||||
|
member->user_value2 = user_info.base_data().user_value2();
|
||||||
|
member->user_value3 = user_info.base_data().user_value3();
|
||||||
|
member->data_version1 = user_info.base_data().base_data_version();
|
||||||
|
member->online = user_info.base_data()._online();
|
||||||
|
TypeConvert::Convert(user_info.temp_custom_data(), member->temp_custom_data);
|
||||||
|
member->last_update_time = App::Instance()->nowtime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Guild::UpdateMemberOnline(const std::string& account_id)
|
||||||
|
{
|
||||||
|
GuildMember* member = GetMember(account_id);
|
||||||
|
if (member) {
|
||||||
|
member->online = 1;
|
||||||
|
member->last_update_time = App::Instance()->nowtime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Guild::UpdateMemberOffline(const std::string& account_id)
|
||||||
|
{
|
||||||
|
GuildMember* member = GetMember(account_id);
|
||||||
|
if (member) {
|
||||||
|
member->online = 0;
|
||||||
|
member->last_update_time = App::Instance()->nowtime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int Guild::GetJobMemberNum(int job)
|
int Guild::GetJobMemberNum(int job)
|
||||||
{
|
{
|
||||||
std::set<std::string>* members = GetJobMembers(job);
|
std::set<std::string>* members = GetJobMembers(job);
|
||||||
|
@ -33,6 +33,9 @@ public:
|
|||||||
int GetMemberJob(const std::string& account_id);
|
int GetMemberJob(const std::string& account_id);
|
||||||
std::set<std::string>* GetJobMembers(int job);
|
std::set<std::string>* GetJobMembers(int job);
|
||||||
int GetJobMemberNum(int job);
|
int GetJobMemberNum(int job);
|
||||||
|
void UpdateMemberInfo(const cs::MFUserInfo& user_info);
|
||||||
|
void UpdateMemberOnline(const std::string& account_id);
|
||||||
|
void UpdateMemberOffline(const std::string& account_id);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool IsFull();
|
bool IsFull();
|
||||||
|
@ -105,12 +105,24 @@ void GuildMgr::_SS_IM_ForwardGuildSMMsg(f8::MsgHdr& hdr, const ss::SS_IM_Forward
|
|||||||
|
|
||||||
void GuildMgr::_SS_IM_RefeshGuildMemberInfo(f8::MsgHdr& hdr, const ss::SS_IM_RefeshGuildMemberInfo& msg)
|
void GuildMgr::_SS_IM_RefeshGuildMemberInfo(f8::MsgHdr& hdr, const ss::SS_IM_RefeshGuildMemberInfo& msg)
|
||||||
{
|
{
|
||||||
|
Guild* guild = GetGuild(msg.context().user_info().base_data().guild_id());
|
||||||
|
if (guild) {
|
||||||
|
guild->UpdateMemberInfo(msg.context().user_info());
|
||||||
|
} else {
|
||||||
|
if (msg.context().user_info().base_data().guild_id() != 0) {
|
||||||
|
LoadGuild(msg.context().user_info().base_data().guild_id());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuildMgr::_SS_IM_PushGuildUserOnlineState(f8::MsgHdr& hdr, const ss::SS_IM_PushGuildUserOnlineState& msg)
|
void GuildMgr::_SS_IM_PushGuildUserOnlineState(f8::MsgHdr& hdr, const ss::SS_IM_PushGuildUserOnlineState& msg)
|
||||||
{
|
{
|
||||||
|
Guild* guild = GetGuild(msg.guild_id());
|
||||||
|
if (guild) {
|
||||||
|
for (auto& account_id : msg.online_users()) {
|
||||||
|
guild->UpdateMemberOnline(account_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuildMgr::CreateAsyncTask(int socket_handle, long long guild_id, AsyncGuildTask* task)
|
void GuildMgr::CreateAsyncTask(int socket_handle, long long guild_id, AsyncGuildTask* task)
|
||||||
|
@ -60,6 +60,19 @@ void Player::Init()
|
|||||||
DBHelper::Instance()->ShuaOfflineUsers(this);
|
DBHelper::Instance()->ShuaOfflineUsers(this);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
SyncGuildMemberInfo();
|
||||||
|
a8::Timer::Instance()->AddRepeatTimerAndAttach
|
||||||
|
(
|
||||||
|
1000 * 2 + (rand() % 3000),
|
||||||
|
a8::XParams()
|
||||||
|
.SetSender(this),
|
||||||
|
[] (const a8::XParams& param)
|
||||||
|
{
|
||||||
|
Player* hum = (Player*)param.sender.GetUserData();
|
||||||
|
hum->SyncGuildMemberInfo();
|
||||||
|
},
|
||||||
|
&timer_attacher.timer_list_
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::UnInit()
|
void Player::UnInit()
|
||||||
@ -137,6 +150,7 @@ void Player::_CMUpdateUserInfo(f8::MsgHdr& hdr, const cs::CMUpdateUserInfo& msg)
|
|||||||
myself.base_data.user_value3 = msg.user_value3();
|
myself.base_data.user_value3 = msg.user_value3();
|
||||||
}
|
}
|
||||||
OnDataVersion1Change();
|
OnDataVersion1Change();
|
||||||
|
SyncGuildMemberInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::_CMUpdateTempCustomData(f8::MsgHdr& hdr, const cs::CMUpdateTempCustomData& msg)
|
void Player::_CMUpdateTempCustomData(f8::MsgHdr& hdr, const cs::CMUpdateTempCustomData& msg)
|
||||||
@ -151,6 +165,7 @@ void Player::_CMUpdateTempCustomData(f8::MsgHdr& hdr, const cs::CMUpdateTempCust
|
|||||||
myself.temp_custom_data.value2 = msg.temp_custom_data().value3();
|
myself.temp_custom_data.value2 = msg.temp_custom_data().value3();
|
||||||
}
|
}
|
||||||
OnTempCustomDataChange();
|
OnTempCustomDataChange();
|
||||||
|
SyncGuildMemberInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::_CMFriendList(f8::MsgHdr& hdr, const cs::CMFriendList& msg)
|
void Player::_CMFriendList(f8::MsgHdr& hdr, const cs::CMFriendList& msg)
|
||||||
@ -1331,7 +1346,6 @@ void Player::NotifyOnline()
|
|||||||
}
|
}
|
||||||
SendSSMsg(myself, msg);
|
SendSSMsg(myself, msg);
|
||||||
}
|
}
|
||||||
SyncGuildMemberInfo();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::NotifyOffline()
|
void Player::NotifyOffline()
|
||||||
|
@ -126,6 +126,7 @@ void TypeConvert::Convert(long long guild_id, int guild_job,
|
|||||||
base_data_pb.set_user_value1(member.user_value1);
|
base_data_pb.set_user_value1(member.user_value1);
|
||||||
base_data_pb.set_user_value2(member.user_value2);
|
base_data_pb.set_user_value2(member.user_value2);
|
||||||
base_data_pb.set_user_value3(member.user_value3);
|
base_data_pb.set_user_value3(member.user_value3);
|
||||||
|
base_data_pb.set__online(member.online);
|
||||||
base_data_pb.set_base_data_version(member.data_version1);
|
base_data_pb.set_base_data_version(member.data_version1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,4 +100,6 @@ struct GuildMember
|
|||||||
int data_version1 = 0;
|
int data_version1 = 0;
|
||||||
|
|
||||||
int online = 0;
|
int online = 0;
|
||||||
|
int last_update_time = 0;
|
||||||
|
UserTempCustomData temp_custom_data;
|
||||||
};
|
};
|
||||||
|
@ -361,12 +361,14 @@ message SS_IM_RefeshGuildMemberInfo
|
|||||||
|
|
||||||
message SS_GS_QueryGuildUserOnlineState
|
message SS_GS_QueryGuildUserOnlineState
|
||||||
{
|
{
|
||||||
optional MFIMMsgConext context = 1;
|
optional int64 seqid = 1;
|
||||||
|
optional int64 guild_id = 2;
|
||||||
repeated string account_ids = 3;
|
repeated string account_ids = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message SS_IM_PushGuildUserOnlineState
|
message SS_IM_PushGuildUserOnlineState
|
||||||
{
|
{
|
||||||
optional MFIMMsgConext context = 1;
|
optional int64 seqid = 1;
|
||||||
repeated string online_users = 2;
|
optional int64 guild_id = 2;
|
||||||
|
repeated string online_users = 3;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user