Currently, I have to unvanish/revanish when I reconnect -- would be handy to have it restore your noclip state along with vanish state perhaps?
Tracking the state:
private List<ulong> _noclipOffline = new List<ulong>();On disconnect:
private void OnPlayerDisconnected(BasePlayer player, string reason)
{
if (!IsInvisible(player)) return;
if (player.IsFlying)
{
if (!_noclipOffline.Contains(player.userID))
_noclipOffline.Add(player.userID);
}
else
{
_noclipOffline.Remove(player.userID);
}
// ... rest of the method
}On Reconnect:
private void OnPlayerConnected(BasePlayer player)
{
if (_hiddenOffline.Contains(player.userID))
{
_hiddenOffline.Remove(player.userID);
if (HasPerm(player.UserIDString, PermAllow))
Disappear(player);
return;
}
if (_noclipOffline.Contains(player.userID))
{
_noclipOffline.Remove(player.userID);
if (HasPerm(player.UserIDString, PermAllow))
player.SendConsoleCommand("noclip");
return;
}
if (HasPerm(player.UserIDString, PermVanish))
{
Disappear(player);
}
}
Save/Load:
private void LoadData()
{
// ... rest of the method
try
{
_noclipOffline = _noclipOfflineData.ReadObject<List<ulong>>();
}
catch
{
_noclipOffline = new List<ulong>();
}
}
private void SaveData()
{
// ... rest of the method
_noclipOfflineData.WriteObject(_noclipOffline);
}