void CPhantom::net_Import (NET_Packet& P) { // import R_ASSERT (Remote()); u8 flags; float health; P.r_float (health); SetfHealth (health); float fDummy; u32 dwDummy; P.r_float (fDummy); P.r_u32 (dwDummy); P.r_u32 (dwDummy); P.r_u32 (dwDummy); P.r_u8 (flags); float yaw, pitch, bank = 0, roll = 0; P.r_float /*r_angle8*/ (yaw); P.r_float /*r_angle8*/ (yaw); P.r_float /*r_angle8*/ (pitch); P.r_float /*r_angle8*/ (roll); id_Team = P.r_u8(); id_Squad = P.r_u8(); id_Group = P.r_u8(); XFORM().setHPB (yaw,pitch,bank); }
void CInventoryItem::net_Import (NET_Packet& P) { P.r_float (m_fCondition) ; net_update_IItem N ; N.dwTimeStamp=P.r_u32 ( ); u16 NumItems = 0; NumItems=P.r_u16 ( ); if (CSE_ALifeInventoryItem::FLAG_NO_POSITION != NumItems) N.State.position=P.r_vec3 (); if (!NumItems || (CSE_ALifeInventoryItem::FLAG_NO_POSITION == NumItems)) return; position_Import (P,N) ; net_updateData *p = NetSync() ; if ( !p->NET_IItem.empty() && (p->NET_IItem.back().dwTimeStamp>=N.dwTimeStamp)) return; if (!p->NET_IItem.empty()){ m_flags.set (FInInterpolate, TRUE); // m_bInterpolate = true; } Level().AddObject_To_Objects4CrPr (m_object); object().CrPr_SetActivated (false); object().CrPr_SetActivationStep (0); p->NET_IItem.push_back (N); while (p->NET_IItem.size() > 2) { p->NET_IItem.pop_front (); }; };
void CCustomMonster::net_Import(NET_Packet& P) { R_ASSERT (Remote()); net_update N; u8 flags; float health; P.r_float (health); SetfHealth (health); P.r_u32 (N.dwTimeStamp); P.r_u8 (flags); P.r_vec3 (N.p_pos); P.r_float /*r_angle8*/ (N.o_model); P.r_float /*r_angle8*/ (N.o_torso.yaw); P.r_float /*r_angle8*/ (N.o_torso.pitch); P.r_float /*r_angle8*/ (N.o_torso.roll ); id_Team = P.r_u8(); id_Squad = P.r_u8(); id_Group = P.r_u8(); if (NET.empty() || (NET.back().dwTimeStamp<N.dwTimeStamp)) { NET.push_back (N); NET_WasInterpolating = TRUE; } setVisible (TRUE); setEnabled (TRUE); }
void CSE_SmartCover::STATE_Read (NET_Packet &tNetPacket, u16 size) { inherited1::STATE_Read (tNetPacket, size); cform_read (tNetPacket); tNetPacket.r_stringZ (m_description); m_hold_position_time = tNetPacket.r_float(); if (m_wVersion >= 120) { m_enter_min_enemy_distance = tNetPacket.r_float(); m_exit_min_enemy_distance = tNetPacket.r_float(); } if (m_wVersion >= 122) m_is_combat_cover = tNetPacket.r_u8(); if (m_wVersion >= 128) m_can_fire = tNetPacket.r_u8(); }
void CSE_ALifeInventoryItem::STATE_Read (NET_Packet &tNetPacket, u16 size) { u16 m_wVersion = base()->m_wVersion; if (m_wVersion > 52) tNetPacket.r_float (m_fCondition); State.position = base()->o_Position; }
void CAI_Stalker::net_Import (NET_Packet& P) { R_ASSERT (Remote()); net_update N; u8 flags; P.r_float (); set_money ( P.r_u32(), false ); float health; P.r_float (health); SetfHealth (health); // fEntityHealth = health; P.r_u32 (N.dwTimeStamp); P.r_u8 (flags); P.r_vec3 (N.p_pos); P.r_float /*r_angle8*/ (N.o_model); P.r_float /*r_angle8*/ (N.o_torso.yaw); P.r_float /*r_angle8*/ (N.o_torso.pitch); P.r_float /*r_angle8*/ (N.o_torso.roll ); id_Team = P.r_u8(); id_Squad = P.r_u8(); id_Group = P.r_u8(); GameGraph::_GRAPH_ID graph_vertex_id = movement().game_dest_vertex_id(); P.r (&graph_vertex_id, sizeof(GameGraph::_GRAPH_ID)); graph_vertex_id = ai_location().game_vertex_id(); P.r (&graph_vertex_id, sizeof(GameGraph::_GRAPH_ID)); if (NET.empty() || (NET.back().dwTimeStamp<N.dwTimeStamp)) { NET.push_back (N); NET_WasInterpolating = TRUE; } P.r_float (); P.r_float (); P.r_stringZ (m_sStartDialog); setVisible (TRUE); setEnabled (TRUE); }
void CAI_Trader::net_Import (NET_Packet& P) { R_ASSERT (Remote()); float fDummy; P.r_float (fDummy); set_money ( P.r_u32(), false ); setVisible (TRUE); setEnabled (TRUE); }
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 CSE_ALifeInventoryItem::STATE_Read (NET_Packet &tNetPacket, u16 size) { u16 m_wVersion = base()->m_wVersion; if (m_wVersion > 52) tNetPacket.r_float (m_fCondition); if (m_wVersion > 123) { load_data (m_upgrades, tNetPacket); } State.position = base()->o_Position; }
void SHit::Read_Packet_Cont (NET_Packet Packet) { Packet.r_u16 (whoID); Packet.r_u16 (weaponID); Packet.r_dir (dir); Packet.r_float (power); Packet.r_u16 (boneID); Packet.r_vec3 (p_in_bone_space); Packet.r_float (impulse); aim_bullet = Packet.r_u16()!=0; hit_type = (ALife::EHitType)Packet.r_u16(); //hit type if (hit_type == ALife::eHitTypeFireWound) { Packet.r_float (ap); } if (PACKET_TYPE == GE_HIT_STATISTIC) { Packet.r_u32(BulletID); Packet.r_u32(SenderID); } }
void CBaseMonster::net_Import(NET_Packet& P) { R_ASSERT (Remote()); net_update N; u8 flags; float health; P.r_float (health); SetfHealth (health); P.r_u32 (N.dwTimeStamp); P.r_u8 (flags); P.r_vec3 (N.p_pos); P.r_float /*r_angle8*/ (N.o_model); P.r_float /*r_angle8*/ (N.o_torso.yaw); P.r_float /*r_angle8*/ (N.o_torso.pitch); P.r_float /*r_angle8*/ (N.o_torso.roll ); id_Team = P.r_u8(); id_Squad = P.r_u8(); id_Group = P.r_u8(); GameGraph::_GRAPH_ID l_game_vertex_id = ai_location().game_vertex_id(); P.r (&l_game_vertex_id, sizeof(l_game_vertex_id)); P.r (&l_game_vertex_id, sizeof(l_game_vertex_id)); if (NET.empty() || (NET.back().dwTimeStamp<N.dwTimeStamp)) { NET.push_back (N); NET_WasInterpolating = TRUE; } // P.r (&m_fGoingSpeed, sizeof(m_fGoingSpeed)); // P.r (&m_fGoingSpeed, sizeof(m_fGoingSpeed)); float f1 = 0; if (ai().game_graph().valid_vertex_id(l_game_vertex_id)) { f1 = Position().distance_to (ai().game_graph().vertex(l_game_vertex_id)->level_point()); P.r (&f1, sizeof(f1)); f1 = Position().distance_to (ai().game_graph().vertex(l_game_vertex_id)->level_point()); P.r (&f1, sizeof(f1)); } else { P.r (&f1, sizeof(f1)); P.r (&f1, sizeof(f1)); } setVisible (TRUE); setEnabled (TRUE); }
void CAI_Rat::net_Import(NET_Packet& P) { R_ASSERT (Remote()); net_update N; u8 flags; float health; P.r_float (health); SetfHealth (health); P.r_u32 (N.dwTimeStamp); P.r_u8 (flags); P.r_vec3 (N.p_pos); P.r_angle8 (N.o_model); P.r_angle8 (N.o_torso.yaw); P.r_angle8 (N.o_torso.pitch); P.r_angle8 (N.o_torso.roll ); id_Team = P.r_u8(); id_Squad = P.r_u8(); id_Group = P.r_u8(); GameGraph::_GRAPH_ID t; P.r (&t, sizeof(t)); P.r (&t, sizeof(t)); ai_location().game_vertex (t); if (NET.empty() || (NET.back().dwTimeStamp<N.dwTimeStamp)) { NET.push_back (N); NET_WasInterpolating = TRUE; } setVisible (TRUE); setEnabled (TRUE); CEatableItem::net_Import(P); }
void CPhysicObject::net_Import_PH_Params(NET_Packet& P, net_update_PItem& N, mask_num_items& num_items) { //N.State.force.set (0.f,0.f,0.f); //N.State.torque.set (0.f,0.f,0.f); //UI().Font().pFontStat->OutSet(100.0f,100.0f); P.r_vec3 (N.State.force); //Msg("Import N.State.force.y:%4.6f",N.State.force.y); P.r_vec3 (N.State.torque); P.r_vec3 (N.State.position); //Msg("Import N.State.position.y:%4.6f",N.State.position.y); P.r_float(N.State.quaternion.x); P.r_float(N.State.quaternion.y); P.r_float(N.State.quaternion.z); P.r_float(N.State.quaternion.w); N.State.enabled = num_items.mask & CSE_ALifeObjectPhysic::inventory_item_state_enabled; //UI().Font().pFontStat->OutNext("Import N.State.enabled:%i",int(N.State.enabled)); if (!(num_items.mask & CSE_ALifeObjectPhysic::inventory_item_angular_null)) { N.State.angular_vel.x = P.r_float(); N.State.angular_vel.y = P.r_float(); N.State.angular_vel.z = P.r_float(); } else N.State.angular_vel.set (0.f,0.f,0.f); if (!(num_items.mask & CSE_ALifeObjectPhysic::inventory_item_linear_null)) { N.State.linear_vel.x = P.r_float(); N.State.linear_vel.y = P.r_float(); N.State.linear_vel.z = P.r_float(); } else N.State.linear_vel.set (0.f,0.f,0.f); //Msg("Import N.State.linear_vel.y:%4.6f",N.State.linear_vel.y); N.State.previous_position = N.State.position; N.State.previous_quaternion = N.State.quaternion; }
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; }
void CSE_ALifeInventoryItem::UPDATE_Read (NET_Packet &tNetPacket) { tNetPacket.r_u8 (m_u8NumItems); if (!m_u8NumItems) { //Msg("* Object [%d] has no sync items", this->cast_abstract()->ID); return; } mask_num_items num_items; num_items.common = m_u8NumItems; m_u8NumItems = num_items.num_items; R_ASSERT2 ( m_u8NumItems < (u8(1) << 5), make_string("%d",m_u8NumItems) ); /*if (check(num_items.mask,animated)) { tNetPacket.r_float(m_blend_timeCurrent); anim_use=true; } else { anim_use=false; }*/ { tNetPacket.r_vec3 (State.force); tNetPacket.r_vec3 (State.torque); tNetPacket.r_vec3 (State.position); base()->o_Position.set (State.position); //this is very important because many functions use this o_Position.. tNetPacket.r_float (State.quaternion.x); tNetPacket.r_float (State.quaternion.y); tNetPacket.r_float (State.quaternion.z); tNetPacket.r_float (State.quaternion.w); State.enabled = check(num_items.mask,inventory_item_state_enabled); if (!check(num_items.mask,inventory_item_angular_null)) { tNetPacket.r_float (State.angular_vel.x); tNetPacket.r_float (State.angular_vel.y); tNetPacket.r_float (State.angular_vel.z); } else State.angular_vel.set (0.f,0.f,0.f); if (!check(num_items.mask,inventory_item_linear_null)) { tNetPacket.r_float (State.linear_vel.x); tNetPacket.r_float (State.linear_vel.y); tNetPacket.r_float (State.linear_vel.z); } else State.linear_vel.set (0.f,0.f,0.f); /*if (check(num_items.mask,animated)) { anim_use=true; }*/ } prev_freezed = freezed; if (tNetPacket.r_eof()) // in case spawn + update { freezed = false; return; } if (tNetPacket.r_u8()) { freezed = false; } else { if (!freezed) #ifdef XRGAME_EXPORTS m_freeze_time = Device.dwTimeGlobal; #else m_freeze_time = 0; #endif freezed = true; } };