private void CheckNpcOwnerId(NpcInfo info) { if (null == info) { return; } if (info.OwnerId > 0) { Room room = GetRoom(); if (null != room && null != room.GetActiveScene()) { int new_owner_id = 0; bool is_online = false; foreach (User v in room.RoomUsers) { if (null != v.Info && v.UserControlState != (int)UserControlState.UserDropped && v.UserControlState != (int)UserControlState.Remove) { new_owner_id = v.Info.GetId(); if (new_owner_id == info.OwnerId) { is_online = true; break; } } } if (!is_online) { info.OwnerId = new_owner_id; Msg_RC_SyncNpcOwnerId builder = DataSyncUtility.BuildSyncNpcOwnerIdMessage(info); NotifyAreaUser(info, builder, false); } } } }