diff --git a/server/gameserver/bornpoint.cc b/server/gameserver/bornpoint.cc index 2a2fe96f..1aa568d4 100644 --- a/server/gameserver/bornpoint.cc +++ b/server/gameserver/bornpoint.cc @@ -19,6 +19,15 @@ Position BornPoint::RandPoint(Room* room) const glm::vec3 dir = GlmHelper::UP; GlmHelper::RotateY(dir, glm::radians((float)(rand() % 360))); pos.AddGlmVec3(dir * (float)a8::RandEx(10, 100)); +#ifdef MYDEBUG + a8::XPrintf("RandPoint wo_meta:%d pos:%d %d %d\n", + { + (long long)((char*)wo_meta.get()), + pos.GetX(), + pos.GetY(), + pos.GetZ() + }); +#endif } } else { pos.SetX(5120.000000000000); diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index 12d6244a..eb9c173d 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -2080,6 +2080,9 @@ void Human::PushJoinRoomMsg() void Human::ReJoin(long ip_saddr, int socket_handle, std::shared_ptr msg, std::shared_ptr p) { + if (!IsPlayer()) { + abort(); + } this->ip_saddr = ip_saddr; this->socket_handle = socket_handle; room->frame_event.AddEnterGame(GetWeakPtrRef()); @@ -2090,8 +2093,21 @@ void Human::ReJoin(long ip_saddr, int socket_handle, std::shared_ptr PushJoinRoomMsg(); RefreshView(); room->NotifyUiUpdate(); + PlayerMgr::Instance()->ReBindSocket(AsPlayer()); if (room->IsMobaModeRoom()) { - SendMobaTeamNotify(); + room->xtimer.SetIntervalEx + (SERVER_FRAME_RATE, + [this] (int event, const a8::Args* args) + { + if (a8::TIMER_EXEC_EVENT == event) { + if (!room->IsGameOver() && room->GetGasData().GetGasMode() == GasInactive) { + SendMobaTeamNotify(); + } else { + room->xtimer.DeleteCurrentTimer(); + } + } + }, + &xtimer_attacher); } } @@ -2436,7 +2452,8 @@ int Room::InitWithMobaBattle(long ip_saddr, int socket_handle, std::shared_ptrGetMemberNum() < MAX_TEAM_NUM) { @@ -2450,11 +2467,12 @@ int Room::InitWithMobaBattle(long ip_saddr, int socket_handle, std::shared_ptrborn_point->wo_meta = std::get<0>(GetMapMeta()->moba_born_points.at(side - 1)); hum->InitMobaRoad(); #ifdef MYDEBUG - a8::XPrintf("moba init uniid:%d team_id:%d side:%d\n", + a8::XPrintf("moba init uniid:%d team_id:%d side:%d wo_meta:%d\n", { hum->GetUniId(), hum->GetTeam()->GetTeamId(), - hum->side + hum->side, + hum->born_point->wo_meta.get() }); #endif return true; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 6422a678..f5a93af5 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -349,7 +349,7 @@ void Room::AddPlayer(Player* hum, std::shared_ptr init_born_point, bo acc_inactive_time_ += GetGasInactiveReaminTime() - 2; } } -#if 1 +#if 0 if (IsMobaModeRoom()) { //hum->side = a8::RandEx(1, 2); hum->side = 1; diff --git a/server/gameserver/roommgr.cc b/server/gameserver/roommgr.cc index 8554da19..e5bedbff 100644 --- a/server/gameserver/roommgr.cc +++ b/server/gameserver/roommgr.cc @@ -838,7 +838,7 @@ void RoomMgr::AdjustCMJoin(cs::CMJoin* msg) const mt::Map* map_meta = mt::Map::GetById(msg->mapid()); if (map_meta && map_meta->is_moba()) { msg->set_room_mode(kMobaMode); -#if 0 +#if 1 { auto data = a8::MutableXObject::CreateObject(); data->SetVal("zone_id", 1);