Create a camera Class in 4_World like this:
```
class LBSpectatorCamera extends Camera
static LBSpectatorCamera currentCamera;
private float m_SendUpdateAcc = 0.0;
void LBSpectatorCamera()
{
SetEventMask( EntityEvent.FRAME );
currentCamera = this;
Print("Created LBSpectatorCamera");
}
override void EOnFrame( IEntity other, float timeSlice )
{
super.EOnFrame(other, timeSlice);
if (!IsActive())
Delete();
if (m_SendUpdateAcc > 0.5)
{
vector position = GetPosition();
GetGame().UpdateSpectatorPosition(position);
m_SendUpdateAcc = 0;
Print("Sending Position Update: " + position);
}
m_SendUpdateAcc = m_SendUpdateAcc + timeSlice;
}
}
```
And also mod the PlayerBase class like this
```
modded class PlayerBase {
void NotifySpectateFinished() {
GetGame().SelectPlayer(GetIdentity(), this);
GetGame().RPCSingleParam(null, LBmaster_RPCs.SPECTATE_END, new Param1<bool>(true), true, GetIdentity());
}
void NotifySpectateStart(PlayerBase target) {
PlayerIdentity identity = GetIdentity();
vector pos = target.GetPosition();
GetGame().SelectPlayer(identity, null);
GetGame().SelectSpectator(identity, "LBSpectatorCamera", pos);
GetGame().UpdateSpectatorPosition(pos);
GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(SendDelayedNotifySpectateStart, 200, false, target, identity);
}
void SendDelayedNotifySpectateStart(PlayerBase target, PlayerIdentity identity) {
GetGame().UpdateSpectatorPosition(target.GetPosition());
GetGame().RPCSingleParam(target, LBmaster_RPCs.SPECTATE_START, new Param1<bool>(true), true, identity);
}
}
```
Then call the `NotifySpectateStart` method from the Server and the Camera will be created there for the player and it also works, but none of the objects around it will spawn and the `LBmaster_RPCs.SPECTATE_START` will not work, because the Target PlayerBase object has not been created. Also stopping work fine with `NotifySpectateFinished`. The Camera returns back to the original position and I can move around again