Beispiel #1
0
        internal void RPCSendConsoleMessage(string message, NetworkMessageInfo info)
        {
            if (string.IsNullOrEmpty(message))
            {
                return;
            }
            if (message.Length > 1 && message[0] == '/')
            {
                string command = GadgetConsole.ParseArgs(message.Substring(1))[0];
                if (GadgetConsole.IsCommandExecuteBlacklisted(command))
                {
                    GadgetConsole.Print($"{GadgetNetwork.GetNameByNetworkPlayer(info.sender) ?? GadgetCoreAPI.GetPlayerName()} attempted to force you to execute the blacklisted command: {message}", null, GadgetConsole.MessageSeverity.WARN);
                    return;
                }
            }
            bool isOperator = GadgetConsole.IsOperator(GadgetCoreAPI.GetPlayerName());

            if (isOperator)
            {
                if (message.Length > 1 && message[0] == '/')
                {
                    GadgetConsole.Print($"{GadgetNetwork.GetNameByNetworkPlayer(info.sender) ?? GadgetCoreAPI.GetPlayerName()} forced you to execute the command: {message}");
                }
                else
                {
                    GadgetConsole.Print($"{GadgetNetwork.GetNameByNetworkPlayer(info.sender) ?? GadgetCoreAPI.GetPlayerName()} forced you to say: {message}");
                }
            }
            GadgetConsole.SendConsoleMessage(message, GadgetCoreAPI.GetPlayerName(), isOperator, true);
        }
Beispiel #2
0
 /// <summary>
 /// Lists all NetworkViews, their IDs, and their names in the console.
 /// </summary>
 public static void ListNetworkViews()
 {
     foreach (NetworkView view in UnityEngine.Object.FindObjectsOfType <NetworkView>().OrderBy(x => x.viewID.ToString()))
     {
         GadgetConsole.Print($"NetworkView ID: ({view.viewID}), Name: ({view.name})", "ListNetworkViews");
     }
 }
Beispiel #3
0
 internal void RPCSetOp(string name, bool op)
 {
     if (op)
     {
         if (!GadgetConsole.operators.Contains(name))
         {
             GadgetConsole.operators.Add(name);
             if (name == GadgetCoreAPI.GetPlayerName())
             {
                 GadgetConsole.Print("You are now an operator!", null, GadgetConsole.MessageSeverity.INFO);
             }
         }
     }
     else
     {
         if (GadgetConsole.operators.Contains(name))
         {
             GadgetConsole.operators.Remove(name);
             if (name == GadgetCoreAPI.GetPlayerName())
             {
                 GadgetConsole.Print("You are no longer an operator!", null, GadgetConsole.MessageSeverity.WARN);
             }
         }
     }
 }
Beispiel #4
0
        internal void RPCBroadcastConsoleMessage(int index, string text, string sender, int severity, float sendTime)
        {
            int messageIndex = GadgetConsole.Print(text, sender, (GadgetConsole.MessageSeverity)severity);

            GadgetConsole.GetMessage(messageIndex).SendTime = sendTime;
            broadcastMessageIndices[index] = messageIndex;
        }
Beispiel #5
0
        public static void Prefix(GameScript __instance, NetworkPlayer pl)
        {
            string name = GadgetNetwork.GetNameByNetworkPlayer(pl);

            if (!string.IsNullOrEmpty(name))
            {
                GadgetConsole.Print($"{name} has left the game.");
            }
        }
Beispiel #6
0
 /// <summary>
 /// Logs an error as a line of text into the log file.
 /// </summary>
 public void LogError(object text, bool includeConsole = true)
 {
     if (includeConsole)
     {
         GadgetConsole.Print(text?.ToString() ?? "null", LoggerName, GadgetConsole.MessageSeverity.ERROR);
     }
     foreach (string line in (text?.ToString() ?? "null").Replace('\r', '\n').Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries))
     {
         streamWriter.WriteLine("[" + DateTime.Now + "]" + (!string.IsNullOrEmpty(LoggerName) ? "[" + LoggerName + "]" : "") + "[Error] " + line);
     }
 }
Beispiel #7
0
        /// <summary>
        /// Logs a line of text to both the in-game console, as well as the log file.
        /// </summary>
        public void LogConsole(object text, GadgetConsole.MessageSeverity severity = GadgetConsole.MessageSeverity.INFO)
        {
            switch (severity)
            {
            case GadgetConsole.MessageSeverity.WARN:
                LogWarning(text);
                break;

            case GadgetConsole.MessageSeverity.ERROR:
                LogError(text);
                break;

            default:
                GadgetConsole.Print(text?.ToString() ?? "null", LoggerName, severity);
                Log(text);
                break;
            }
        }
Beispiel #8
0
 internal void RPCBroadcastConsoleMessage(string text, string sender, int severity, float sendTime)
 {
     GadgetConsole.GetMessage(GadgetConsole.Print(text, sender, (GadgetConsole.MessageSeverity)severity)).SendTime = sendTime;
 }
Beispiel #9
0
        public static void Prefix(PlayerScript __instance, ref string n)
        {
            PlayerScript existingPlayer = null;
            bool         isSelf         = n == Menuu.curName;

            if (isSelf)
            {
                existingPlayer = GadgetCoreAPI.GetPlayerByName(n);
                if (existingPlayer != null && existingPlayer != __instance)
                {
                    existingPlayer.GetComponent <NetworkView>().RPC("SetName", RPCMode.AllBuffered, new object[]
                    {
                        n + "-1"
                    });
                    foreach (KeyValuePair <string, PlayerScript> entry in GadgetCoreAPI.playersByName.Where(x => x.Value == existingPlayer).ToList())
                    {
                        GadgetCoreAPI.playersByName.Remove(entry.Key);
                        GadgetNetwork.NetworkPlayersByName.Remove(entry.Key);
                        GadgetNetwork.NamesByNetworkPlayer.Remove(entry.Value.GetComponent <NetworkView>().owner);
                    }
                    if (InstanceTracker.PlayerScript == __instance)
                    {
                        GadgetCoreAPI.playerName = n + "-1";
                    }
                    GadgetCoreAPI.playersByName[n + "-1"]        = existingPlayer;
                    GadgetNetwork.NetworkPlayersByName[n + "-1"] = existingPlayer.GetComponent <NetworkView>().owner;
                    GadgetNetwork.NamesByNetworkPlayer[existingPlayer.GetComponent <NetworkView>().owner] = n + "-1";
                }
            }
            else
            {
                bool wasOp = false;
                foreach (KeyValuePair <string, PlayerScript> entry in GadgetCoreAPI.playersByName.Where(x => x.Value == __instance).ToList())
                {
                    if (GadgetConsole.operators.Contains(entry.Key))
                    {
                        GadgetConsole.operators.Remove(entry.Key);
                        wasOp = true;
                    }
                }
                if (wasOp)
                {
                    GadgetConsole.operators.Add(n);
                }
            }
            if (existingPlayer == null)
            {
                existingPlayer = GadgetCoreAPI.GetPlayerByName(n + "-1");
            }
            if (existingPlayer != null && existingPlayer != __instance)
            {
                int num = 2;
                while (GadgetCoreAPI.GetPlayerByName(n + "-" + num) != null)
                {
                    num++;
                }
                n = n + "-" + num;
            }
            else
            {
                existingPlayer = __instance;
            }
            foreach (KeyValuePair <string, PlayerScript> entry in GadgetCoreAPI.playersByName.Where(x => x.Value == __instance).ToList())
            {
                GadgetCoreAPI.playersByName.Remove(entry.Key);
                GadgetNetwork.NetworkPlayersByName.Remove(entry.Key);
                GadgetNetwork.NamesByNetworkPlayer.Remove(entry.Value.GetComponent <NetworkView>().owner);
            }
            if (InstanceTracker.PlayerScript == __instance)
            {
                GadgetCoreAPI.playerName = n;
            }
            GadgetCoreAPI.playersByName[n]        = __instance;
            GadgetNetwork.NetworkPlayersByName[n] = existingPlayer.GetComponent <NetworkView>().owner;
            GadgetNetwork.NamesByNetworkPlayer[existingPlayer.GetComponent <NetworkView>().owner] = n;
            if (__instance.GetComponent <NetworkView>().owner == RPCHooks.Singleton.GetComponent <NetworkView>().owner)
            {
                GadgetNetwork.ServerPlayerName = n;
            }
            if (!isSelf)
            {
                GadgetConsole.Print($"{n} has joined the game.");
            }
        }