protected override void UnloadData() { try { if(init) { init = false; ladders.Clear(); if(MyAPIGateway.Multiplayer.IsServer) { MyAPIGateway.Multiplayer.UnregisterMessageHandler(PACKET_LADDERDATA, ReceivedLadderDataPacket); if(playersOnLadder != null) { playersOnLadder.Clear(); playersOnLadder = null; } } if(!isDedicated) { MyAPIGateway.Utilities.MessageEntered -= MessageEntered; MyAPIGateway.Multiplayer.UnregisterMessageHandler(PACKET_STEP, ReceivedStepPacket); if(settings != null) { settings.Close(); settings = null; } SaveLearn(); } } } catch(Exception e) { Log.Error(e); } Log.Close(); }
public void Init() { init = true; isDedicated = MyAPIGateway.Multiplayer.IsServer && MyAPIGateway.Utilities.IsDedicated; Log.Init(); if(MyAPIGateway.Multiplayer.IsServer) { playersOnLadder = new Dictionary<ulong, PlayerOnLadder>(); MyAPIGateway.Multiplayer.RegisterMessageHandler(PACKET_LADDERDATA, ReceivedLadderDataPacket); } if(!isDedicated) { settings = new Settings(); string worldVariables; if(MyAPIGateway.Utilities.GetVariable("LadderMod", out worldVariables)) { grabOnLoad = worldVariables.Contains("grabonload"); } if(MyAPIGateway.Multiplayer.IsServer) settings.clientPrediction = false; // lazy fix for the sounds not playing for hosts xD MyAPIGateway.Utilities.MessageEntered += MessageEntered; MyAPIGateway.Multiplayer.RegisterMessageHandler(PACKET_STEP, ReceivedStepPacket); try { if(MyAPIGateway.Utilities.FileExistsInLocalStorage(LEARNFILE, typeof(LadderMod))) { var file = MyAPIGateway.Utilities.ReadFileInLocalStorage(LEARNFILE, typeof(LadderMod)); string line; while((line = file.ReadLine()) != null) { line = line.Trim(); if(line.StartsWith("//", StringComparison.Ordinal)) continue; switch(line) { case "move_climb": learned[0] = true; break; case "move_sprint": learned[1] = true; break; case "side_dismount": learned[2] = true; break; case "jump_dismount": learned[3] = true; break; case "crouch_dismount": learned[4] = true; break; } } loadedAllLearned = (learned[0] && learned[1] && learned[2] && learned[3] && learned[4]); file.Close(); } } catch(Exception e) { Log.Error(e); } } }