| 127 | } |
| 128 | |
| 129 | void CSE_Abstract::Spawn_Write(NET_Packet& tNetPacket, BOOL bLocal) |
| 130 | { |
| 131 | // generic |
| 132 | tNetPacket.w_begin(M_SPAWN); |
| 133 | tNetPacket.w_stringZ(s_name); |
| 134 | tNetPacket.w_stringZ(s_name_replace ? s_name_replace : ""); |
| 135 | tNetPacket.w_u8(s_gameid); |
| 136 | tNetPacket.w_u8(s_RP); |
| 137 | tNetPacket.w_vec3(o_Position); |
| 138 | tNetPacket.w_vec3(o_Angle); |
| 139 | tNetPacket.w_u16(RespawnTime); |
| 140 | tNetPacket.w_u16(ID); |
| 141 | tNetPacket.w_u16(ID_Parent); |
| 142 | tNetPacket.w_u16(ID_Phantom); |
| 143 | |
| 144 | s_flags.set(M_SPAWN_VERSION, TRUE); |
| 145 | if (bLocal) |
| 146 | tNetPacket.w_u16(u16(s_flags.flags | M_SPAWN_OBJECT_LOCAL)); |
| 147 | else |
| 148 | tNetPacket.w_u16(u16(s_flags.flags & ~(M_SPAWN_OBJECT_LOCAL | M_SPAWN_OBJECT_ASPLAYER))); |
| 149 | |
| 150 | tNetPacket.w_u16(SPAWN_VERSION); |
| 151 | |
| 152 | tNetPacket.w_u16(script_server_object_version()); |
| 153 | |
| 154 | // client object custom data serialization SAVE |
| 155 | u16 client_data_size = (u16)client_data.size(); //не может быть больше 256 байт |
| 156 | tNetPacket.w_u16(client_data_size); |
| 157 | // Msg ("SERVER:saving:save:%d bytes:%d:%s",client_data_size,ID,s_name_replace ? s_name_replace : ""); |
| 158 | if (client_data_size > 0) |
| 159 | { |
| 160 | tNetPacket.w(&*client_data.begin(), client_data_size); |
| 161 | } |
| 162 | |
| 163 | tNetPacket.w(&m_tSpawnID, sizeof(m_tSpawnID)); |
| 164 | // tNetPacket.w_float (m_spawn_probability); |
| 165 | // tNetPacket.w_u32 (m_spawn_flags.get()); |
| 166 | // tNetPacket.w_stringZ (m_spawn_control); |
| 167 | // tNetPacket.w_u32 (m_max_spawn_count); |
| 168 | // tNetPacket.w_u64 (m_min_spawn_interval); |
| 169 | // tNetPacket.w_u64 (m_max_spawn_interval); |
| 170 | |
| 171 | // write specific data |
| 172 | u32 position = tNetPacket.w_tell(); |
| 173 | tNetPacket.w_u16(0); |
| 174 | STATE_Write(tNetPacket); |
| 175 | u16 size = u16(tNetPacket.w_tell() - position); |
| 176 | R_ASSERT3((m_tClassID == CLSID_SPECTATOR) || (size > sizeof(size)), "object isn't successfully saved, get your backup :(", name_replace()); |
| 177 | tNetPacket.w_seek(position, &size, sizeof(u16)); |
| 178 | } |
| 179 | |
| 180 | BOOL CSE_Abstract::Spawn_Read(NET_Packet& tNetPacket) |
| 181 | { |
no test coverage detected