public static void teleport2owneditem(Arg arg) { BasePlayer basePlayer = ArgEx.Player(arg); BasePlayer playerOrSleeper = ArgEx.GetPlayerOrSleeper(arg, 0); ulong result; if (playerOrSleeper != null) { result = playerOrSleeper.userID; } else if (!ulong.TryParse(arg.GetString(0), out result)) { arg.ReplyWith("No player with that id found"); return; } string @string = arg.GetString(1); BaseEntity[] array = BaseEntity.Util.FindTargetsOwnedBy(result, @string); if (array.Length == 0) { arg.ReplyWith("No targets found"); return; } int num = UnityEngine.Random.Range(0, array.Length); arg.ReplyWith($"Teleporting to {array[num].ShortPrefabName} at {array[num].transform.position}"); basePlayer.Teleport(array[num].transform.position); }
public static void gesture_radius(Arg arg) { BasePlayer basePlayer = ArgEx.Player(arg); if (basePlayer == null || !basePlayer.IsAdmin) { return; } float @float = arg.GetFloat(0); List <string> list = Facepunch.Pool.GetList <string>(); for (int i = 0; i < 5; i++) { if (!string.IsNullOrEmpty(arg.GetString(i + 1))) { list.Add(arg.GetString(i + 1)); } } if (list.Count == 0) { arg.ReplyWith("No gestures provided. eg. player.gesture_radius 10f cabbagepatch raiseroof"); return; } List <BasePlayer> obj = Facepunch.Pool.GetList <BasePlayer>(); global::Vis.Entities(basePlayer.transform.position, @float, obj, 131072); foreach (BasePlayer item in obj) { GestureConfig toPlay = basePlayer.gestureList.StringToGesture(list[Random.Range(0, list.Count)]); item.Server_StartGesture(toPlay); } Facepunch.Pool.FreeList(ref obj); }
public static void giveto(Arg arg) { string text = "SERVER"; if (ArgEx.Player(arg) != null) { text = ArgEx.Player(arg).displayName; } BasePlayer basePlayer = BasePlayer.Find(arg.GetString(0)); if (basePlayer == null) { arg.ReplyWith("Couldn't find player!"); return; } Item item = ItemManager.CreateByPartialName(arg.GetString(1), 1, arg.GetULong(3, 0uL)); if (item == null) { arg.ReplyWith("Invalid Item!"); return; } item.amount = arg.GetInt(2, 1); item.OnVirginSpawn(); if (!basePlayer.inventory.GiveItem(item)) { item.Remove(); arg.ReplyWith("Couldn't give item (inventory full?)"); return; } basePlayer.Command("note.inv", item.info.itemid, item.amount); Debug.Log(" [ServerVar] giving " + basePlayer.displayName + " " + item.amount + " x " + item.info.displayName.english); Chat.Broadcast(text + " gave " + basePlayer.displayName + " " + item.amount + " x " + item.info.displayName.english, "SERVER", "#eee", 0uL); }
public static void setinfo(Arg args) { BasePlayer basePlayer = ArgEx.Player(args); if ((bool)basePlayer) { string @string = args.GetString(0, null); string string2 = args.GetString(1, null); if (@string != null && string2 != null) { basePlayer.SetInfo(@string, string2); } } }
public static void kick(Arg arg) { BasePlayer player = ArgEx.GetPlayer(arg, 0); if (!player || player.net == null || player.net.connection == null) { arg.ReplyWith("Player not found"); return; } string @string = arg.GetString(1, "no reason given"); arg.ReplyWith("Kicked: " + player.displayName); Chat.Broadcast("Kicking " + player.displayName + " (" + @string + ")", "SERVER", "#eee", 0uL); player.Kick("Kicked: " + arg.GetString(1, "No Reason Given")); }
public static void print_prefabs(Arg arg) { PrefabPoolCollection pool = GameManager.server.pool; if (pool.storage.Count == 0) { arg.ReplyWith("Prefab pool is empty."); return; } string @string = arg.GetString(0, string.Empty); TextTable textTable = new TextTable(); textTable.AddColumn("id"); textTable.AddColumn("name"); textTable.AddColumn("count"); foreach (KeyValuePair <uint, PrefabPool> item in pool.storage) { string text = item.Key.ToString(); string text2 = StringPool.Get(item.Key); string text3 = item.Value.Count.ToString(); if (string.IsNullOrEmpty(@string) || text2.Contains(@string, CompareOptions.IgnoreCase)) { textTable.AddRow(text, Path.GetFileNameWithoutExtension(text2), text3); } } arg.ReplyWith(textTable.ToString()); }
public static void cinematic_play(Arg arg) { if (!arg.HasArgs() || !arg.IsServerside) { return; } BasePlayer basePlayer = ArgEx.Player(arg); if (!(basePlayer == null)) { string strCommand = string.Empty; if (basePlayer.IsAdmin || basePlayer.IsDeveloper) { strCommand = arg.cmd.FullName + " " + arg.FullString + " " + basePlayer.UserIDString; } else if (Server.cinematic) { strCommand = arg.cmd.FullName + " " + arg.GetString(0) + " " + basePlayer.UserIDString; } if (Server.cinematic) { ConsoleNetwork.BroadcastToAllClients(strCommand); } else if (basePlayer.IsAdmin || basePlayer.IsDeveloper) { ConsoleNetwork.SendClientCommand(arg.Connection, strCommand); } } }
public static void spawnlootfrom(Arg args) { BasePlayer basePlayer = ArgEx.Player(args); string @string = args.GetString(0, string.Empty); int @int = args.GetInt(1, 1); Vector3 vector = args.GetVector3(1, basePlayer ? basePlayer.CenterPoint() : Vector3.zero); if (string.IsNullOrEmpty(@string)) { return; } BaseEntity baseEntity = GameManager.server.CreateEntity(@string, vector); if (baseEntity == null) { return; } baseEntity.Spawn(); basePlayer.ChatMessage("Contents of " + @string + " spawned " + @int + " times"); LootContainer component = baseEntity.GetComponent <LootContainer>(); if (component != null) { for (int i = 0; i < @int * component.maxDefinitionsToSpawn; i++) { component.lootDefinition.SpawnIntoContainer(basePlayer.inventory.containerMain); } } baseEntity.Kill(); }
public static void find_entity(Arg args) { string filter = args.GetString(0); TextTable entityTable = GetEntityTable((EntityInfo info) => string.IsNullOrEmpty(filter) || info.entity.PrefabName.Contains(filter)); args.ReplyWith(entityTable.ToString()); }
public static void deployLoadoutInRange(Arg arg) { BasePlayer basePlayer = ArgEx.Player(arg); if ((!basePlayer.IsAdmin && !basePlayer.IsDeveloper && !Server.cinematic) || basePlayer == null) { return; } string @string = arg.GetString(0); SavedLoadout so; if (!LoadLoadout(@string, out so)) { arg.ReplyWith("Can't find loadout: " + @string); return; } float @float = arg.GetFloat(1); List <BasePlayer> obj = Facepunch.Pool.GetList <BasePlayer>(); global::Vis.Entities(basePlayer.transform.position, @float, obj, 131072); int num = 0; foreach (BasePlayer item in obj) { if (!(item == basePlayer) && !item.isClient) { so.LoadItemsOnTo(item); num++; } } arg.ReplyWith($"Applied loadout {@string} to {num} players"); Facepunch.Pool.FreeList(ref obj); }
public static void add(Arg args) { string @string = args.GetString(0); float @float = args.GetFloat(1, 0.1f); Command command = Find(@string); float result; if (command == null) { args.ReplyWith("Convar not found: " + (@string ?? "<null>")); } else if (args.IsClientside && command.Replicated) { args.ReplyWith("Cannot set replicated convars from the client (use sv to do this)"); } else if (args.IsServerside && command.ServerAdmin && !args.IsAdmin) { args.ReplyWith("Permission denied"); } else if (!float.TryParse(command.String, out result)) { args.ReplyWith("Convar value cannot be parsed as a number"); } else { command.Set(result + @float); } }
public static void giveall(Arg arg) { Item item = null; string text = "SERVER"; if (ArgEx.Player(arg) != null) { text = ArgEx.Player(arg).displayName; } foreach (BasePlayer activePlayer in BasePlayer.activePlayerList) { item = ItemManager.CreateByPartialName(arg.GetString(0), 1, 0uL); if (item == null) { arg.ReplyWith("Invalid Item!"); return; } item.amount = arg.GetInt(1, 1); item.OnVirginSpawn(); if (!activePlayer.inventory.GiveItem(item)) { item.Remove(); arg.ReplyWith("Couldn't give item (inventory full?)"); continue; } activePlayer.Command("note.inv", item.info.itemid, item.amount); Debug.Log(" [ServerVar] giving " + activePlayer.displayName + " " + item.amount + " x " + item.info.displayName.english); } if (item != null) { Chat.Broadcast(text + " gave everyone " + item.amount + " x " + item.info.displayName.english, "SERVER", "#eee", 0uL); } }
public static void ban(Arg arg) { BasePlayer player = ArgEx.GetPlayer(arg, 0); if (!player || player.net == null || player.net.connection == null) { arg.ReplyWith("Player not found"); return; } ServerUsers.User user = ServerUsers.Get(player.userID); if (user != null && user.group == ServerUsers.UserGroup.Banned) { arg.ReplyWith($"User {player.userID} is already banned"); return; } string @string = arg.GetString(1, "No Reason Given"); long expiry; string durationSuffix; if (TryGetBanExpiry(arg, 2, out expiry, out durationSuffix)) { ServerUsers.Set(player.userID, ServerUsers.UserGroup.Banned, player.displayName, @string, expiry); string text = ""; if (player.IsConnected && player.net.connection.ownerid != 0L && player.net.connection.ownerid != player.net.connection.userid) { text += $" and also banned ownerid {player.net.connection.ownerid}"; ServerUsers.Set(player.net.connection.ownerid, ServerUsers.UserGroup.Banned, player.displayName, arg.GetString(1, $"Family share owner of {player.net.connection.userid}"), -1L); } ServerUsers.Save(); arg.ReplyWith($"Kickbanned User{durationSuffix}: {player.userID} - {player.displayName}{text}"); Chat.Broadcast("Kickbanning " + player.displayName + durationSuffix + " (" + @string + ")", "SERVER", "#eee", 0uL); Network.Net.sv.Kick(player.net.connection, "Banned" + durationSuffix + ": " + @string); } }
public static void print_assets(Arg arg) { if (AssetPool.storage.Count == 0) { arg.ReplyWith("Asset pool is empty."); return; } string @string = arg.GetString(0, string.Empty); TextTable textTable = new TextTable(); textTable.AddColumn("type"); textTable.AddColumn("allocated"); textTable.AddColumn("available"); foreach (KeyValuePair <Type, AssetPool.Pool> item in AssetPool.storage) { string text = item.Key.ToString(); string text2 = item.Value.allocated.ToString(); string text3 = item.Value.available.ToString(); if (string.IsNullOrEmpty(@string) || text.Contains(@string, CompareOptions.IgnoreCase)) { textTable.AddRow(text, text2, text3); } } arg.ReplyWith(textTable.ToString()); }
public static void load(Arg args) { if (!SingletonComponent <Climate> .Instance) { return; } string name = args.GetString(0); if (string.IsNullOrEmpty(name)) { args.ReplyWith("Weather preset name invalid."); return; } WeatherPreset weatherPreset = Array.Find(SingletonComponent <Climate> .Instance.WeatherPresets, (WeatherPreset x) => x.name.Contains(name, CompareOptions.IgnoreCase)); if (weatherPreset == null) { args.ReplyWith("Weather preset not found: " + name); return; } SingletonComponent <Climate> .Instance.WeatherOverrides.Set(weatherPreset); if (args.IsServerside) { ServerMgr.SendReplicatedVars("weather."); } }
public static void status(Arg arg) { string @string = arg.GetString(0); string text = string.Empty; if (@string.Length == 0) { text = text + "hostname: " + Server.hostname + "\n"; text = text + "version : " + 2306 + " secure (secure mode enabled, connected to Steam3)\n"; text = text + "map : " + Server.level + "\n"; text += $"players : {BasePlayer.activePlayerList.Count()} ({Server.maxplayers} max) ({SingletonComponent<ServerMgr>.Instance.connectionQueue.Queued} queued) ({SingletonComponent<ServerMgr>.Instance.connectionQueue.Joining} joining)\n\n"; } TextTable textTable = new TextTable(); textTable.AddColumn("id"); textTable.AddColumn("name"); textTable.AddColumn("ping"); textTable.AddColumn("connected"); textTable.AddColumn("addr"); textTable.AddColumn("owner"); textTable.AddColumn("violation"); textTable.AddColumn("kicks"); foreach (BasePlayer activePlayer in BasePlayer.activePlayerList) { try { if (!BaseEntityEx.IsValid(activePlayer)) { continue; } string userIDString = activePlayer.UserIDString; if (activePlayer.net.connection == null) { textTable.AddRow(userIDString, "NO CONNECTION"); continue; } string text2 = activePlayer.net.connection.ownerid.ToString(); string text3 = activePlayer.displayName.QuoteSafe(); string text4 = Network.Net.sv.GetAveragePing(activePlayer.net.connection).ToString(); string text5 = activePlayer.net.connection.ipaddress; string text6 = activePlayer.violationLevel.ToString("0.0"); string text7 = activePlayer.GetAntiHackKicks().ToString(); if (!arg.IsAdmin && !arg.IsRcon) { text5 = "xx.xxx.xx.xxx"; } string text8 = activePlayer.net.connection.GetSecondsConnected() + "s"; if (@string.Length <= 0 || text3.Contains(@string, CompareOptions.IgnoreCase) || userIDString.Contains(@string) || text2.Contains(@string) || text5.Contains(@string)) { textTable.AddRow(userIDString, text3, text4, text8, text5, (text2 == userIDString) ? string.Empty : text2, text6, text7); } } catch (Exception ex) { textTable.AddRow(activePlayer.UserIDString, ex.Message.QuoteSafe()); } } arg.ReplyWith(text + textTable.ToString()); }
public static void set(Arg arg) { string @string = arg.GetString(0); if (string.IsNullOrEmpty(@string)) { Debug.Log("Invalid gamemode"); } BaseGameMode baseGameMode = null; GameObjectRef gameObjectRef = null; GameModeManifest gameModeManifest = GameModeManifest.Get(); Debug.Log("total gamemodes : " + gameModeManifest.gameModePrefabs.Count); foreach (GameObjectRef gameModePrefab in gameModeManifest.gameModePrefabs) { BaseGameMode component = gameModePrefab.Get().GetComponent <BaseGameMode>(); if (component.shortname == @string) { baseGameMode = component; gameObjectRef = gameModePrefab; Debug.Log("Found :" + component.shortname + " prefab name is :" + component.PrefabName + ": rpath is " + gameModePrefab.resourcePath + ":"); break; } Debug.Log("search name " + @string + "searched against : " + component.shortname); } if (baseGameMode == null) { Debug.Log("Unknown gamemode : " + @string); return; } BaseGameMode activeGameMode = BaseGameMode.GetActiveGameMode(true); if ((bool)activeGameMode) { if (baseGameMode.shortname == activeGameMode.shortname) { Debug.Log("Same gamemode, resetting"); } if (activeGameMode.permanent) { Debug.LogError("This game mode is permanent, you must reset the server to switch game modes."); return; } activeGameMode.ShutdownGame(); activeGameMode.Kill(); BaseGameMode.SetActiveGameMode(null, true); } BaseEntity baseEntity = GameManager.server.CreateEntity(gameObjectRef.resourcePath, Vector3.zero, Quaternion.identity); if ((bool)baseEntity) { Debug.Log("Spawning new game mode : " + baseGameMode.shortname); baseEntity.Spawn(); } else { Debug.Log("Failed to create new game mode :" + baseGameMode.PrefabName); } }
public static void kickall(Arg arg) { BasePlayer[] array = BasePlayer.activePlayerList.ToArray(); for (int i = 0; i < array.Length; i++) { array[i].Kick("Kicked: " + arg.GetString(1, "No Reason Given")); } }
public static void teleportany(Arg args) { BasePlayer basePlayer = ArgEx.Player(args); if ((bool)basePlayer && basePlayer.IsAlive()) { basePlayer.Teleport(args.GetString(0), false); } }
public static void if_false(Arg args) { string @string = args.GetString(0); bool @bool = args.GetBool(1, true); if (!@bool) { ConsoleSystem.Run(Option.Client, @string, @bool); } }
public static IEnumerable <ChatEntry> search(Arg arg) { string search = arg.GetString(0, null); if (search == null) { return(Enumerable.Empty <ChatEntry>()); } return(History.Where((ChatEntry x) => x.Message.Length < 4096 && x.Message.Contains(search, CompareOptions.IgnoreCase))); }
public static void export(Arg args) { string @string = args.GetString(0, "none"); string text = Path.Combine(Application.persistentDataPath, @string + ".raw"); switch (@string) { case "splatmap": if ((bool)TerrainMeta.SplatMap) { RawWriter.Write(TerrainMeta.SplatMap.ToEnumerable(), text); } break; case "heightmap": if ((bool)TerrainMeta.HeightMap) { RawWriter.Write(TerrainMeta.HeightMap.ToEnumerable(), text); } break; case "biomemap": if ((bool)TerrainMeta.BiomeMap) { RawWriter.Write(TerrainMeta.BiomeMap.ToEnumerable(), text); } break; case "topologymap": if ((bool)TerrainMeta.TopologyMap) { RawWriter.Write(TerrainMeta.TopologyMap.ToEnumerable(), text); } break; case "alphamap": if ((bool)TerrainMeta.AlphaMap) { RawWriter.Write(TerrainMeta.AlphaMap.ToEnumerable(), text); } break; case "watermap": if ((bool)TerrainMeta.WaterMap) { RawWriter.Write(TerrainMeta.WaterMap.ToEnumerable(), text); } break; default: args.ReplyWith("Unknown export source: " + @string); return; } args.ReplyWith("Export written to " + text); }
public static void CMD(Arg arg) { string playerName = arg.argUser.user.Displayname; string message = arg.GetString(0, "text").Trim(); uLink.NetworkPlayer player = arg.argUser.networkPlayer; PlayerClient playerClient = Array.Find(Vars.AllPlayerClients.ToArray(), (PlayerClient pc) => pc.netPlayer == player); Character playerChar; Character.FindByUser(playerClient.userID, out playerChar); executeCMD(playerName, message, player, playerClient, playerChar); }
public static void stop(Arg arg) { if (!Network.Net.sv.IsConnected()) { arg.ReplyWith("There isn't a server running!"); } else { Network.Net.sv.Stop(arg.GetString(0, "Stopping Server")); } }
public static void ownerid(Arg arg) { ulong uInt = arg.GetUInt64(0, 0uL); string @string = arg.GetString(1, "unnamed"); string string2 = arg.GetString(2, "no reason"); if (uInt < 70000000000000000L) { arg.ReplyWith("This doesn't appear to be a 64bit steamid: " + uInt); return; } ServerUsers.User user = ServerUsers.Get(uInt); if (user != null && user.group == ServerUsers.UserGroup.Owner) { arg.ReplyWith("User " + uInt + " is already an Owner"); return; } ServerUsers.Set(uInt, ServerUsers.UserGroup.Owner, @string, string2, -1L); arg.ReplyWith("Added owner " + @string + ", steamid " + uInt); }
public static void banid(Arg arg) { ulong uInt = arg.GetUInt64(0, 0uL); string text = arg.GetString(1, "unnamed"); string @string = arg.GetString(2, "no reason"); if (uInt < 70000000000000000L) { arg.ReplyWith("This doesn't appear to be a 64bit steamid: " + uInt); return; } ServerUsers.User user = ServerUsers.Get(uInt); if (user != null && user.group == ServerUsers.UserGroup.Banned) { arg.ReplyWith("User " + uInt + " is already banned"); } else { long expiry; string durationSuffix; if (!TryGetBanExpiry(arg, 3, out expiry, out durationSuffix)) { return; } string text2 = ""; BasePlayer basePlayer = BasePlayer.FindByID(uInt); if (basePlayer != null && basePlayer.IsConnected) { text = basePlayer.displayName; if (basePlayer.IsConnected && basePlayer.net.connection.ownerid != 0L && basePlayer.net.connection.ownerid != basePlayer.net.connection.userid) { text2 += $" and also banned ownerid {basePlayer.net.connection.ownerid}"; ServerUsers.Set(basePlayer.net.connection.ownerid, ServerUsers.UserGroup.Banned, basePlayer.displayName, arg.GetString(1, $"Family share owner of {basePlayer.net.connection.userid}"), expiry); } Chat.Broadcast("Kickbanning " + basePlayer.displayName + durationSuffix + " (" + @string + ")", "SERVER", "#eee", 0uL); Network.Net.sv.Kick(basePlayer.net.connection, "Banned" + durationSuffix + ": " + @string); } ServerUsers.Set(uInt, ServerUsers.UserGroup.Banned, text, @string, expiry); arg.ReplyWith($"Banned User{durationSuffix}: {uInt} - \"{text}\" for \"{@string}\"{text2}"); } }
public static void breakitem(Arg arg) { string @string = arg.GetString(0); foreach (Item item in ArgEx.Player(arg).inventory.containerMain.itemList) { if (item.info.shortname.Contains(@string, CompareOptions.IgnoreCase) && item.hasCondition) { item.LoseCondition(item.condition * 2f); } } }
public static void saveloadout(Arg arg) { BasePlayer basePlayer = ArgEx.Player(arg); if (!(basePlayer == null) && (basePlayer.IsAdmin || basePlayer.IsDeveloper || Server.cinematic)) { string @string = arg.GetString(0); string contents = JsonConvert.SerializeObject(new SavedLoadout(basePlayer), Formatting.Indented); string loadoutPath = GetLoadoutPath(@string); File.WriteAllText(loadoutPath, contents); arg.ReplyWith("Saved loadout to " + loadoutPath); } }
public static void createskull(Arg arg) { string text = arg.GetString(0); BasePlayer basePlayer = ArgEx.Player(arg); if (string.IsNullOrEmpty(text)) { text = RandomUsernames.Get(Random.Range(0, 1000)); } Item item = ItemManager.Create(ItemManager.FindItemDefinition("skull.human"), 1, 0uL); item.name = HumanBodyResourceDispenser.CreateSkullName(text); basePlayer.inventory.GiveItem(item); }
public static void cheatreport(Arg arg) { BasePlayer basePlayer = ArgEx.Player(arg); if (!(basePlayer == null)) { ulong uInt = arg.GetUInt64(0, 0uL); string @string = arg.GetString(1); UnityEngine.Debug.LogWarning(string.Concat(basePlayer, " reported ", uInt, ": ", @string.ToPrintable(140))); if (EACServer.eacScout != null) { EACServer.eacScout.SendPlayerReport(uInt.ToString(), basePlayer.net.connection.userid.ToString(), PlayerReportCategory.PlayerReportCheating, @string); } } }
public static void CMD(Arg arg) { string playerName = arg.argUser.user.Displayname; string message = arg.GetString(0, "text").Trim(); uLink.NetworkPlayer player = arg.argUser.networkPlayer; PlayerClient playerClient = Array.Find(PlayerClient.All.ToArray(), (PlayerClient pc) => pc.netPlayer == player); Character playerChar; Character.FindByUser(playerClient.userID, out playerChar); string[] commandArgs = message.Split(' '); string command = commandArgs[0]; string sendMSG = ""; int curIndex = 0; foreach (string s in commandArgs) { if (curIndex > 1) { sendMSG += s + " "; } curIndex++; } if (Vars.totalCommands.Contains(command)) { if (Vars.enabledCommands[Vars.findRank(playerClient.userID.ToString())].Contains(command)) { if (commandArgs.Count() == 2 && commandArgs[0] + commandArgs[1] == "/whitelistcheck") Vars.whitelistCheck(playerClient); else { switch (command) { case "/remove": Vars.removerTool(playerClient, commandArgs); break; case "/f": Vars.handleFactions(playerClient, commandArgs); break; case "/r": Broadcast.reply(playerClient, commandArgs); break; case "/rules": Vars.showRules(playerClient); break; case "/players": Vars.showPlayers(playerClient); break; case "/kits": Vars.showKits(playerClient); break; case "/heal": Vars.healPlayer(player, playerName, commandArgs); break; case "/access": Vars.giveAccess(playerClient, commandArgs); break; case "/version": Broadcast.broadcastTo(player, "The server is running Rust Essentials v" + Vars.currentVersion + " for Rust v" + Vars.rustCurrentVer + "."); break; case "/save": Vars.save(playerClient); break; case "/saypop": Vars.saypop(commandArgs); break; case "/tppos": Vars.teleportPos(playerClient, commandArgs); break; case "/tpaccept": Vars.teleportAccept(playerClient, commandArgs); break; case "/tpdeny": Vars.teleportDeny(playerClient, commandArgs); break; case "/tpa": Vars.teleportRequest(playerClient, commandArgs); break; case "/tp": Vars.teleport(playerClient, commandArgs); break; case "/history": Vars.showHistory(playerClient, commandArgs); break; case "/unmute": Vars.mute(playerClient, commandArgs, false); break; case "/mute": Vars.mute(playerClient, commandArgs, true); break; case "/stop": Vars.stopServer(); break; case "/say": Vars.say(commandArgs); break; case "/chan": Vars.channels(playerClient, commandArgs); break; case "/kickall": Vars.kickAll(playerClient); break; case "/whitelist": Vars.whitelistPlayer(player, commandArgs); break; case "/reload": Vars.reloadFile(player, commandArgs); break; case "/unban": Vars.unbanPlayer(playerClient, commandArgs); break; case "/ban": Vars.banPlayer(playerClient, commandArgs); break; case "/kick": Vars.kickPlayer(playerClient, commandArgs, false); break; case "/timescale": Vars.setScale(playerClient, commandArgs); break; case "/time": Vars.setTime(playerClient, commandArgs); break; case "/join": Vars.fakeJoin(playerClient, commandArgs); break; case "/leave": Vars.fakeLeave(playerClient, commandArgs); break; case "/pos": Vars.getPlayerPos(playerClient); break; case "/i": Vars.createItem(playerClient, playerClient, commandArgs, message, true); break; case "/give": Vars.createItem(playerClient, commandArgs, message); break; case "/kit": Vars.giveKit(playerClient, commandArgs, message); break; case "/airdrop": Vars.airdrop(player, commandArgs); break; case "/share": Share.shareWith(playerClient, commandArgs); break; case "/unshare": Share.unshareWith(playerClient, commandArgs); break; case "/pm": Broadcast.sendPM(playerName, commandArgs); break; case "/online": Broadcast.sendPlayers(player); break; case "/uid": Vars.grabUID(playerClient, commandArgs); break; case "/god": Vars.godMode(player, playerName, commandArgs, true); break; case "/ungod": Vars.godMode(player, playerName, commandArgs, false); break; case "/fall": Vars.setFall(player, commandArgs); break; case "/kill": Vars.killTarget(player, commandArgs); break; case "/help": Broadcast.help(player, commandArgs); break; } } } else { Broadcast.noticeTo(player, ":(", "You do not have permission to do this."); } } else { if (Vars.unknownCommand) Broadcast.broadcastTo(player, "Unknown command \"" + command + "\"!"); } }
public static void say(Arg arg) { if (!enabled) return; string playerName = arg.argUser.user.Displayname; string UID = arg.argUser.user.Userid.ToString(); string message = arg.GetString(0, "text"); if (playerName != null && message.Length > 0) { if (message.StartsWith("/")) { Vars.conLog.Chat("<CMD> " + playerName + ": " + message); //Thread t = new Thread(() => Commands.CMD(arg)); //t.Start(); Commands.CMD(arg); } else { playerName = Vars.filterNames(playerName, UID); message = message.Replace("\"", "\\\"").Replace("[PM]", "").Replace("[PM to]", "").Replace("[PM from]", "").Replace("[PM From]", "").Replace("[PM To]", "").Replace("[F]", ""); if (!Vars.inDirect.Contains(UID) && !Vars.inGlobal.Contains(UID)) { Vars.inGlobal.Add(UID); } if (!Vars.inDirectV.Contains(UID) && !Vars.inGlobalV.Contains(UID)) { Vars.inDirectV.Add(UID); } if (Vars.inDirect.Contains(UID)) { if (Vars.directChat) { Thread t = new Thread(() => Vars.sendToSurrounding(arg.argUser.playerClient, message)); t.Start(); Vars.conLog.Chat("<D> " + playerName + ": " + message); } else { if (!Vars.mutedUsers.Contains(UID)) { Vars.inDirect.Remove(UID); Vars.inGlobal.Add(UID); Broadcast.broadcastTo(arg.argUser.networkPlayer, "Direct chat has been disabled! You are now talking in global chat."); ConsoleNetworker.Broadcast("chat.add \"" + (Vars.removeTag ? "" : "<G> ") + playerName + "\" \"" + message + "\""); Vars.conLog.Chat("<G> " + playerName + ": " + message); if (Vars.historyGlobal.Count > 50) Vars.historyGlobal.RemoveAt(0); Vars.historyGlobal.Add("* " + (Vars.removeTag ? "" : "<G> ") + playerName + "$:|:$" + message); } else { if (Vars.muteTimes.ContainsKey(UID)) { string secondsLeft = "You have been muted for " + Math.Round(Vars.muteTimes[UID].TimeLeft / 1000).ToString() + " seconds on global chat."; Broadcast.broadcastTo(arg.argUser.networkPlayer, secondsLeft); } else Broadcast.broadcastTo(arg.argUser.networkPlayer, "You have been muted on global chat."); } } } else if (Vars.inGlobal.Contains(UID)) { if (Vars.globalChat) { if (!Vars.mutedUsers.Contains(UID)) { ConsoleNetworker.Broadcast("chat.add \"" + (Vars.removeTag ? "" : "<G> ") + playerName + "\" \"" + message + "\""); Vars.conLog.Chat("<G> " + playerName + ": " + message); if (Vars.historyGlobal.Count > 50) Vars.historyGlobal.RemoveAt(0); Vars.historyGlobal.Add("* " + (Vars.removeTag ? "" : "<G> ") + playerName + "$:|:$" + message); } else { if (Vars.muteTimes.ContainsKey(UID)) { string secondsLeft = "You have been muted for " + Math.Round(Vars.muteTimes[UID].TimeLeft / 1000).ToString() + " seconds on global chat."; Broadcast.broadcastTo(arg.argUser.networkPlayer, secondsLeft); } else Broadcast.broadcastTo(arg.argUser.networkPlayer, "You have been muted on global chat."); } } else { Vars.inGlobal.Remove(UID); Vars.inDirect.Add(UID); Broadcast.broadcastTo(arg.argUser.networkPlayer, "Global chat has been disabled! You are now talking in direct chat."); Thread t = new Thread(() => Vars.sendToSurrounding(arg.argUser.playerClient, message)); t.Start(); Vars.conLog.Chat("<D> " + playerName + ": " + message); } } } } }
public static void say(Arg arg) { if (!enabled) return; string playerName = arg.argUser.user.Displayname; string clientName = arg.argUser.playerClient.userName; string UID = arg.argUser.user.Userid.ToString(); string message = arg.GetString(0, "text"); if (playerName != null && message.Length > 0) { if (message.StartsWith("/")) { Vars.conLog.Chat("<CMD> " + playerName + ": " + message); if (serverlog) { Debug.Log("[CHAT] <CMD> " + playerName + ": " + message); } //Thread t = new Thread(() => Commands.CMD(arg)); //t.Start(); Commands.CMD(arg); } else { playerName = Vars.filterNames(playerName, UID); message = message.Replace("\"", "\\\"").Replace("[PM]", "").Replace("[PM to]", "").Replace("[PM from]", "").Replace("[PM From]", "").Replace("[PM To]", "").Replace("[F]", ""); if (Vars.censorship) { List<string> splitMessage = new List<string>(message.Split(' ')); foreach (string s in splitMessage) { if (Vars.illegalWords.Contains(s.ToLower().Replace(".", "").Replace("!", "").Replace(",", "").Replace("?", "").Replace(";", ""))) { string curseWord = Array.Find(Vars.illegalWords.ToArray(), (string str) => str.Equals(s.ToLower().Replace(".", "").Replace("!", "").Replace(",", "").Replace("?", "").Replace(";", ""))); string asterisks = ""; for (int i = 0; i < s.Replace(".", "").Replace("!", "").Replace(",", "").Replace("?", "").Replace(";", "").Length; i++) { asterisks += "*"; } string theRest = s.Replace(curseWord, ""); string fullString = (s.StartsWith(theRest) ? theRest + asterisks : asterisks + theRest); splitMessage[splitMessage.IndexOf(s)] = fullString; } } message = string.Join(" ", splitMessage.ToArray()); } if (!Vars.inDirect.Contains(UID) && !Vars.inGlobal.Contains(UID) && !Vars.inFaction.Contains(UID)) { Vars.inGlobal.Add(UID); } if (!Vars.inDirectV.Contains(UID) && !Vars.inGlobalV.Contains(UID)) { Vars.inDirectV.Add(UID); } if (clientName.Length == 0) { Broadcast.broadcastTo(arg.argUser.networkPlayer, "You cannot chat while vanished!"); return; } if (Vars.inDirect.Contains(UID)) { if (Vars.directChat) { Thread t = new Thread(() => Vars.sendToSurrounding(arg.argUser.playerClient, message)); t.Start(); Vars.conLog.Chat("<D> " + playerName + ": " + message); if (serverlog) { Debug.Log("[CHAT] <D> " + playerName + ": " + message); } return; } else { Vars.inGlobal.Add(UID); Vars.inDirect.Remove(UID); if (!Vars.mutedUsers.Contains(UID)) { Broadcast.broadcastTo(arg.argUser.networkPlayer, "Direct chat has been disabled! You are now talking in global chat."); ConsoleNetworker.Broadcast("chat.add \"" + (Vars.removeTag ? "" : "<G> ") + playerName + "\" \"" + message + "\""); Vars.conLog.Chat("<G> " + playerName + ": " + message); if (serverlog) { Debug.Log("[CHAT] <G> " + playerName + ": " + message); } if (Vars.historyGlobal.Count > 50) Vars.historyGlobal.RemoveAt(0); Vars.historyGlobal.Add("* " + (Vars.removeTag ? "" : "<G> ") + playerName + "$:|:$" + message); return; } else { if (Vars.muteTimes.ContainsKey(UID)) { string secondsLeft = "You have been muted for " + Math.Round(Vars.muteTimes[UID].TimeLeft / 1000).ToString() + " seconds on global chat."; Broadcast.broadcastTo(arg.argUser.networkPlayer, secondsLeft); } else Broadcast.broadcastTo(arg.argUser.networkPlayer, "You have been muted on global chat."); return; } } } if (Vars.inGlobal.Contains(UID)) { if (Vars.globalChat) { if (!Vars.mutedUsers.Contains(UID)) { ConsoleNetworker.Broadcast("chat.add \"" + (Vars.removeTag ? "" : "<G> ") + playerName + "\" \"" + message + "\""); Vars.conLog.Chat("<G> " + playerName + ": " + message); if (serverlog) { Debug.Log("[CHAT] <G> " + playerName + ": " + message); } if (Vars.historyGlobal.Count > 50) Vars.historyGlobal.RemoveAt(0); Vars.historyGlobal.Add("* " + (Vars.removeTag ? "" : "<G> ") + playerName + "$:|:$" + message); return; } else { if (Vars.muteTimes.ContainsKey(UID)) { string secondsLeft = "You have been muted for " + Math.Round(Vars.muteTimes[UID].TimeLeft / 1000).ToString() + " seconds on global chat."; Broadcast.broadcastTo(arg.argUser.networkPlayer, secondsLeft); } else Broadcast.broadcastTo(arg.argUser.networkPlayer, "You have been muted on global chat."); return; } } else { Vars.inDirect.Add(UID); Vars.inGlobal.Remove(UID); Broadcast.broadcastTo(arg.argUser.networkPlayer, "Global chat has been disabled! You are now talking in direct chat."); Thread t = new Thread(() => Vars.sendToSurrounding(arg.argUser.playerClient, message)); t.Start(); Vars.conLog.Chat("<D> " + playerName + ": " + message); if (serverlog) { Debug.Log("[CHAT] <D> " + playerName + ": " + message); } return; } } if (Vars.inFaction.Contains(UID)) { KeyValuePair<string, Dictionary<string, string>>[] possibleFactions = Array.FindAll(Vars.factions.ToArray(), (KeyValuePair<string, Dictionary<string, string>> kv) => kv.Value.ContainsKey(arg.argUser.userID.ToString())); if (possibleFactions.Length > 0) { Vars.sendToFaction(arg.argUser.playerClient, message); Vars.conLog.Chat("<F [" + possibleFactions[0].Key + "]> " + playerName + ": " + message); if (serverlog) { Debug.Log("[CHAT] <F [" + possibleFactions[0].Key + "]> " + playerName + ": " + message); } if (Vars.historyFaction.Count > 50) Vars.historyFaction.RemoveAt(0); if (!Vars.historyFaction.Contains(possibleFactions[0].Key)) Vars.historyFaction.Add(possibleFactions[0].Key, new List<string>() { { "* <F> " + playerName + "$:|:$" + message } }); else ((List<string>)Vars.historyFaction[possibleFactions[0].Key]).Add("* <F> " + playerName + "$:|:$" + message); return; } else { if (Vars.globalChat) Vars.inGlobal.Add(UID); else Vars.inDirect.Add(UID); Vars.inFaction.Remove(UID); Broadcast.broadcastTo(arg.argUser.networkPlayer, "You are not in a faction! You are now talking in global chat."); if (!Vars.mutedUsers.Contains(UID)) { ConsoleNetworker.Broadcast("chat.add \"" + (Vars.removeTag ? "" : "<G> ") + playerName + "\" \"" + message + "\""); Vars.conLog.Chat("<G> " + playerName + ": " + message); if (serverlog) { Debug.Log("[CHAT] <G> " + playerName + ": " + message); } if (Vars.historyGlobal.Count > 50) Vars.historyGlobal.RemoveAt(0); Vars.historyGlobal.Add("* " + (Vars.removeTag ? "" : "<G> ") + playerName + "$:|:$" + message); } else { if (Vars.muteTimes.ContainsKey(UID)) { string secondsLeft = "You have been muted for " + Math.Round(Vars.muteTimes[UID].TimeLeft / 1000).ToString() + " seconds on global chat."; Broadcast.broadcastTo(arg.argUser.networkPlayer, secondsLeft); } else Broadcast.broadcastTo(arg.argUser.networkPlayer, "You have been muted on global chat."); } return; } } } } }