void game_cl_GameState::net_import_GameTime (NET_Packet& P) { //time u64 GameTime; P.r_u64 (GameTime); float TimeFactor; P.r_float (TimeFactor); Level().SetGameTimeFactor (GameTime,TimeFactor); u64 GameEnvironmentTime; P.r_u64 (GameEnvironmentTime); float EnvironmentTimeFactor; P.r_float (EnvironmentTimeFactor); u64 OldTime = Level().GetEnvironmentGameTime(); Level().SetEnvironmentGameTimeFactor (GameEnvironmentTime,EnvironmentTimeFactor); if (OldTime > GameEnvironmentTime) GamePersistent().Environment().Invalidate(); }
void SPHBonesData::net_Load(NET_Packet &P) { bones.clear (); bones_mask =P.r_u64(); root_bone =P.r_u16(); Fvector _mn, _mx; P.r_vec3 (_mn); P.r_vec3 (_mx); set_min_max (_mn, _mx); u16 bones_number =P.r_u16();//bones number /**/ for(int i=0;i<bones_number;i++) { SPHNetState S; S.net_Load(P,get_min(),get_max()); bones.push_back(S); } }
void CPHSkeleton::LoadNetState(NET_Packet& P) { CPhysicsShellHolder* obj=PPhysicsShellHolder(); IKinematics* K=smart_cast<IKinematics*>(obj->Visual()); P.r_u8 (m_flags.flags); if(K) { K->LL_SetBonesVisible(P.r_u64()); K->LL_SetBoneRoot(P.r_u16()); } u16 bones_number=P.r_u16(); for(u16 i=0;i<bones_number;i++) { SPHNetState state; state.net_Load(P); obj->PHGetSyncItem(i)->set_State(state); } }
void xrServer::OnBuildVersionRespond ( IClient* CL, NET_Packet& P ) { u16 Type; P.r_begin( Type ); u64 _our = FS.auth_get(); u64 _him = P.r_u64(); #ifdef DEBUG Msg("_our = %d", _our); Msg("_him = %d", _him); #endif // DEBUG if ( _our != _him ) { SendConnectResult( CL, 0, 0, "Data verification failed. Cheater? [3]" ); } else { bool bAccessUser = false; string512 res_check; if ( !CL->flags.bLocal ) { bAccessUser = Check_ServerAccess( CL, res_check ); } if( CL->flags.bLocal || bAccessUser ) { Check_BuildVersion_Success( CL ); } else { Msg( res_check ); strcat_s( res_check, "Invalid login/password. Client \"" ); strcat_s( res_check, CL->name.c_str() ); strcat_s( res_check, "\" disconnected." ); SendConnectResult( CL, 0, 2, res_check ); } } };
BOOL CSE_Abstract::Spawn_Read (NET_Packet &tNetPacket) { u16 dummy16; // generic tNetPacket.r_begin (dummy16); R_ASSERT (M_SPAWN==dummy16); tNetPacket.r_stringZ (s_name ); string256 temp; tNetPacket.r_stringZ (temp); set_name_replace (temp); tNetPacket.r_u8 (s_gameid ); tNetPacket.r_u8 (s_RP ); tNetPacket.r_vec3 (o_Position ); tNetPacket.r_vec3 (o_Angle ); tNetPacket.r_u16 (RespawnTime ); tNetPacket.r_u16 (ID ); tNetPacket.r_u16 (ID_Parent ); tNetPacket.r_u16 (ID_Phantom ); tNetPacket.r_u16 (s_flags.flags ); // dangerous!!!!!!!!! if (s_flags.is(M_SPAWN_VERSION)) tNetPacket.r_u16 (m_wVersion); if (0==m_wVersion) { tNetPacket.r_pos -= sizeof(u16); m_wVersion = 0; return FALSE; } if (m_wVersion > 69) m_script_version = tNetPacket.r_u16(); // read specific data //client object custom data serialization LOAD if (m_wVersion > 70) { u16 client_data_size = (m_wVersion > 93) ? tNetPacket.r_u16() : tNetPacket.r_u8(); //не может быть больше 256 байт if (client_data_size > 0) { // Msg ("SERVER:loading:load:%d bytes:%d:%s",client_data_size,ID,s_name_replace ? s_name_replace : ""); client_data.resize (client_data_size); tNetPacket.r (&*client_data.begin(),client_data_size); } else client_data.clear (); } else client_data.clear (); if (m_wVersion > 79) tNetPacket.r (&m_tSpawnID, sizeof(m_tSpawnID)); if (m_wVersion < 112) { if (m_wVersion > 82) tNetPacket.r_float ();//m_spawn_probability); if (m_wVersion > 83) { tNetPacket.r_u32 ();//m_spawn_flags.assign(tNetPacket.r_u32()); xr_string temp; tNetPacket.r_stringZ (temp);//tNetPacket.r_stringZ(m_spawn_control); tNetPacket.r_u32 ();//m_max_spawn_count); // this stuff we do not need even in case of uncomment tNetPacket.r_u32 ();//m_spawn_count); tNetPacket.r_u64 ();//m_last_spawn_time); } if (m_wVersion > 84) { tNetPacket.r_u64 ();//m_min_spawn_interval); tNetPacket.r_u64 ();//m_max_spawn_interval); } } u16 size; tNetPacket.r_u16 (size); // size R_ASSERT3 ((m_tClassID == CLSID_SPECTATOR) || (size > sizeof(size)),"cannot read object, which is not successfully saved :(",name_replace()); STATE_Read (tNetPacket,size); return TRUE; }