| 491 | } |
| 492 | |
| 493 | void CPlayer::FakeSnap() |
| 494 | { |
| 495 | m_SentSnaps++; |
| 496 | if(GetClientVersion() >= VERSION_DDNET_OLD) |
| 497 | return; |
| 498 | |
| 499 | if(Server()->IsSixup(m_ClientId)) |
| 500 | return; |
| 501 | |
| 502 | int FakeId = VANILLA_MAX_CLIENTS - 1; |
| 503 | |
| 504 | CNetObj_ClientInfo *pClientInfo = Server()->SnapNewItem<CNetObj_ClientInfo>(FakeId); |
| 505 | |
| 506 | if(!pClientInfo) |
| 507 | return; |
| 508 | |
| 509 | StrToInts(pClientInfo->m_aName, std::size(pClientInfo->m_aName), " "); |
| 510 | StrToInts(pClientInfo->m_aClan, std::size(pClientInfo->m_aClan), ""); |
| 511 | StrToInts(pClientInfo->m_aSkin, std::size(pClientInfo->m_aSkin), "default"); |
| 512 | |
| 513 | if(m_Paused != PAUSE_PAUSED) |
| 514 | return; |
| 515 | |
| 516 | CNetObj_PlayerInfo *pPlayerInfo = Server()->SnapNewItem<CNetObj_PlayerInfo>(FakeId); |
| 517 | if(!pPlayerInfo) |
| 518 | return; |
| 519 | |
| 520 | pPlayerInfo->m_Latency = m_Latency.m_Min; |
| 521 | pPlayerInfo->m_Local = 1; |
| 522 | pPlayerInfo->m_ClientId = FakeId; |
| 523 | pPlayerInfo->m_Score = FinishTime::NOT_FINISHED_TIMESCORE; |
| 524 | pPlayerInfo->m_Team = TEAM_SPECTATORS; |
| 525 | |
| 526 | CNetObj_SpectatorInfo *pSpectatorInfo = Server()->SnapNewItem<CNetObj_SpectatorInfo>(FakeId); |
| 527 | if(!pSpectatorInfo) |
| 528 | return; |
| 529 | |
| 530 | pSpectatorInfo->m_SpectatorId = m_SpectatorId; |
| 531 | pSpectatorInfo->m_X = m_ViewPos.x; |
| 532 | pSpectatorInfo->m_Y = m_ViewPos.y; |
| 533 | } |
| 534 | |
| 535 | void CPlayer::OnDisconnect() |
| 536 | { |