public static bool DumpToFile(out string fileName)
        {
            string data;
            IDictionary <string, Func <string> > dumpables = DataDumper.GetDumpables();

            Func <KeyValuePair <string, Func <string> >, string> getKey = kv => {
                try { return(kv.Value()); }
                catch (Exception e) { return("ERROR: " + e.Message); }
            };

            lock (DataDumper.MyLock) {
                data = string.Join("\r\n", dumpables
                                   .ToDictionary(kv => kv.Key, getKey)
                                   .SafeSelect(kv => kv.Key + ":\r\n" + kv.Value)
                                   );
            }

            bool success = DataDumper.DumpToLocalFile(data, out fileName);

            if (success)
            {
                // Allow admins to dump on behalf of server, also
                if (Main.netMode == 1)
                {
                    if (ModHelpersMod.Instance.Config.DebugModeDumpAlsoServer || UserHelpers.HasBasicServerPrivilege(Main.LocalPlayer))
                    {
                        PacketProtocolRequestToServer.QuickRequest <DataDumpProtocol>(-1);
                    }
                }
            }

            return(success);
        }
        ////////////////

        public override void Action(CommandCaller caller, string input, string[] args)
        {
            if (Main.netMode == 2)
            {
                throw new HamstarException("No server.");
            }

            var mymod = (OnARailMod)this.mod;

            if (!mymod.Config.DebugModeEnableTrainRespawnCommand)
            {
                if (!UserHelpers.HasBasicServerPrivilege(caller.Player))
                {
                    caller.Reply("Train respawning disabled by config.", Color.Red);
                    return;
                }
                else
                {
                    Main.NewText("Priviledged player " + caller.Player.name + " respawns train.", Color.LightSteelBlue);
                }
            }

            int who = TrainEntity.FindMyTrain(caller.Player);

            if (who != -1)
            {
                CustomEntityManager.RemoveEntityByWho(who);
            }

            PacketProtocolRequestToServer.QuickRequest <TrainSpawnProtocol>();

            caller.Reply("Spawning train...", Color.LimeGreen);
        }
Beispiel #3
0
        public void OnCurrentClientEnterWorld(Player player)
        {
            var mymod = ModHelpersMod.Instance;

            if (!this.HasLoadedOldUID)
            {
                LogHelpers.Alert("No (old) UID for " + player.name + " (" + player.whoAmI + ") to send to server");
                this.HasLoadedOldUID = true;                    // Ugly failsafe; don't really know why data from ModPlayer.Load isn't available here
            }

            // Send
            PacketProtocolSendToServer.QuickSendToServer <PlayerOldIdProtocol>();
            PlayerDataProtocol.SyncToEveryone(this.PermaBuffsById, this.HasBuffIds, this.EquipSlotsToItemTypes);

            // Receive
            PacketProtocolRequestToServer.QuickRequest <ModSettingsProtocol>(-1);
            PacketProtocolRequestToServer.QuickRequest <WorldDataProtocol>(-1);
        }
Beispiel #4
0
 public static void QuickRequest()
 {
     PacketProtocolRequestToServer.QuickRequest <WorldDataProtocol>(-1);
 }
 public static void QuickRequest()
 {
     PacketProtocolRequestToServer.QuickRequestToServer <WormholesProtocol>(-1);
 }
 public static void QuickRequest()
 {
     PacketProtocolRequestToServer.QuickRequestToServer <AmbushesProtocol>(-1);
 }
 public static void QuickRequest()
 {
     PacketProtocolRequestToServer.QuickRequest <DataDumpProtocol>(-1);
 }
 private void OnConnectClient()
 {
     PacketProtocolRequestToServer.QuickRequest <ModSettingsProtocol>();
 }