public static void Start() { if (File.Exists(Vars.whiteListFile)) { Vars.startTimer(); readWhitelist(); TimerPlus t = new TimerPlus(); t.AutoReset = true; t.Interval = Vars.refreshInterval; t.Elapsed += readWhitelistElapsed; t.Start(); } else { Vars.conLog.Error("Whitelist file was not found!"); } }
public static void loopRequestSaving() { TimerPlus t = new TimerPlus(); t.AutoReset = true; t.Interval = 5000; t.Elapsed += ((sender, e) => saveRequestsPer()); t.Start(); TimerPlus t1 = new TimerPlus(); t1.AutoReset = true; t1.Interval = 5000; t1.Elapsed += ((sender, e) => saveRequestsAll()); t1.Start(); }
public static void loopNudity() { TimerPlus t = new TimerPlus(); t.AutoReset = true; t.Interval = 1000; t.Elapsed += ((sender, e) => sendNudity()); t.Start(); }
public static void loopKitSaving() { TimerPlus t = new TimerPlus(); t.AutoReset = true; t.Interval = 5000; t.Elapsed += ((sender, e) => saveCooldowns()); t.Start(); }
public static void teleportRequest(PlayerClient senderClient, string[] args) { if (teleportRequestOn) { if (args.Count() > 1) { List<string> playerNameList = new List<string>(); int curIndex = 0; foreach (string s in args) { if (curIndex > 0) { playerNameList.Add(s); } curIndex++; } string playerName = string.Join(" ", playerNameList.ToArray()); PlayerClient[] possibleTargets = Array.FindAll(PlayerClient.All.ToArray(), (PlayerClient pc) => pc.userName.Contains(playerName)); if (possibleTargets.Count() == 0) Broadcast.broadcastTo(senderClient.netPlayer, "No player names equal or contain \"" + playerName + "\"."); else if (possibleTargets.Count() > 1) Broadcast.broadcastTo(senderClient.netPlayer, "Too many player names contain \"" + playerName + "\"."); else { PlayerClient targetClient = possibleTargets[0]; if (!teleportRequests[targetClient].ContainsKey(senderClient)) { TimerPlus t = new TimerPlus(); t.AutoReset = false; t.Interval = 30000; t.Elapsed += (sender, e) => requestTimeout(targetClient, senderClient); t.Start(); teleportRequests[targetClient].Add(senderClient, t); latestRequests[targetClient] = senderClient; Broadcast.broadcastTo(senderClient.netPlayer, "Teleport request sent to " + targetClient.userName + "."); Broadcast.broadcastTo(targetClient.netPlayer, senderClient.userName + " requested to teleport to you. Type /tpaccept <name> or /tpdeny <name>."); } else { Broadcast.broadcastTo(senderClient.netPlayer, "You already sent a teleport request to " + targetClient.userName + "."); } } } } else { Broadcast.broadcastTo(senderClient.netPlayer, "Teleport requesting is disabled."); } }
public static void teleport(PlayerClient senderClient, string[] args) { if (args.Count() > 1) { RustServerManagement serverManagement = RustServerManagement.Get(); List<string> playerNameList = new List<string>(); int quotedNames = 0; bool searchingQuotes = false; int curIndex = 0; foreach (string s in args) { if (curIndex > 0) { playerNameList.Add(s); if (s.StartsWith("\"") && !searchingQuotes) searchingQuotes = true; if (playerNameList.Count > 1 && searchingQuotes && s.EndsWith("\"")) { quotedNames++; } } curIndex++; } string playerName = string.Join(" ", playerNameList.ToArray()); if (args.Count() == 2 || quotedNames == 1) { if (playerName.StartsWith("\"") && playerName.EndsWith("\"")) { playerName = playerName.Substring(1, playerName.Length - 2); PlayerClient[] possibleTargets = Array.FindAll(AllPlayerClients.ToArray(), (PlayerClient pc) => pc.userName.Equals(playerName)); if (possibleTargets.Count() == 0) Broadcast.broadcastTo(senderClient.netPlayer, "No player names equal \"" + playerName + "\"."); else if (possibleTargets.Count() > 1) Broadcast.broadcastTo(senderClient.netPlayer, "Too many player names equal \"" + playerName + "\"."); else { PlayerClient targetClient = possibleTargets[0]; Character senderChar; Character.FindByUser(senderClient.userID, out senderChar); Character targetChar; Character.FindByUser(targetClient.userID, out targetChar); Vector3 destination = targetChar.transform.position; Vector3 oldDest = destination; oldDest.y += 1; if (Vector3.Distance(destination, senderChar.transform.position) > 375) destination.y += 8; serverManagement.TeleportPlayerToWorld(senderClient.netPlayer, destination); TimerPlus tp = new TimerPlus(); tp.AutoReset = false; tp.Interval = 500; tp.Elapsed += ((sender, e) => teleportToWorldElapsed(senderClient.netPlayer, oldDest)); tp.Start(); Broadcast.broadcastTo(senderClient.netPlayer, "Teleporting to " + targetClient.userName + "..."); } } else { PlayerClient[] possibleTargets = Array.FindAll(AllPlayerClients.ToArray(), (PlayerClient pc) => pc.userName.Contains(playerName)); if (possibleTargets.Count() == 0) Broadcast.broadcastTo(senderClient.netPlayer, "No player names equal or contain \"" + playerName + "\"."); else if (possibleTargets.Count() > 1) Broadcast.broadcastTo(senderClient.netPlayer, "Too many player names contain \"" + playerName + "\"."); else { PlayerClient targetClient = possibleTargets[0]; Character senderChar; Character.FindByUser(senderClient.userID, out senderChar); Character targetChar; Character.FindByUser(targetClient.userID, out targetChar); Vector3 destination = targetChar.transform.position; Vector3 oldDest = destination; oldDest.y += 1; if (Vector3.Distance(destination, senderChar.transform.position) > 375) destination.y += 8; serverManagement.TeleportPlayerToWorld(senderClient.netPlayer, destination); TimerPlus tp = new TimerPlus(); tp.AutoReset = false; tp.Interval = 500; tp.Elapsed += ((sender, e) => teleportToWorldElapsed(senderClient.netPlayer, oldDest)); tp.Start(); Broadcast.broadcastTo(senderClient.netPlayer, "Teleporting to " + targetClient.userName + "..."); } } } else { playerNameList.Clear(); curIndex = 0; int lastIndex = -1; if (args[1].Contains("\"")) { bool hadQuote = false; foreach (string s in args) { lastIndex++; if (s.StartsWith("\"")) hadQuote = true; if (hadQuote) { playerNameList.Add(s.Replace("\"", "")); } if (s.EndsWith("\"")) { hadQuote = false; break; } } } else { playerNameList.Add(args[1]); lastIndex = 1; } playerName = string.Join(" ", playerNameList.ToArray()); PlayerClient[] possibleTargets = Array.FindAll(AllPlayerClients.ToArray(), (PlayerClient pc) => pc.userName.Contains(playerName)); if (possibleTargets.Count() == 0) Broadcast.broadcastTo(senderClient.netPlayer, "No player names equal or contain \"" + playerName + "\"."); else if (possibleTargets.Count() > 1) Broadcast.broadcastTo(senderClient.netPlayer, "Too many player names contain \"" + playerName + "\"."); else { PlayerClient targetClient = possibleTargets[0]; playerNameList.Clear(); if (args[lastIndex + 1].Contains("\"")) { bool hadQuote = false; curIndex = 0; foreach (string s in args) { if (curIndex > lastIndex) { if (s.StartsWith("\"")) hadQuote = true; if (hadQuote) { playerNameList.Add(s.Replace("\"", "")); } if (s.EndsWith("\"")) { hadQuote = false; break; } } curIndex++; } } else { playerNameList.Add(args[lastIndex + 1]); } playerName = string.Join(" ", playerNameList.ToArray()); PlayerClient[] otherTargets = Array.FindAll(AllPlayerClients.ToArray(), (PlayerClient pc) => pc.userName.Contains(playerName)); if (otherTargets.Count() == 0) Broadcast.broadcastTo(senderClient.netPlayer, "No player names equal or contain \"" + playerName + "\"."); else if (otherTargets.Count() > 1) Broadcast.broadcastTo(senderClient.netPlayer, "Too many player names contain \"" + playerName + "\"."); else { PlayerClient targetClient2 = otherTargets[0]; Character targetChar; Character.FindByUser(targetClient.userID, out targetChar); Character targetChar2; Character.FindByUser(targetClient2.userID, out targetChar2); Vector3 destination = targetChar2.transform.position; Vector3 oldDest = destination; oldDest.y += 1; if (Vector3.Distance(destination, targetChar.transform.position) > 375) destination.y += 8; serverManagement.TeleportPlayerToWorld(targetClient.netPlayer, destination); TimerPlus tp = new TimerPlus(); tp.AutoReset = false; tp.Interval = 500; tp.Elapsed += ((sender, e) => teleportToWorldElapsed(targetClient.netPlayer, oldDest)); tp.Start(); Broadcast.broadcastTo(senderClient.netPlayer, "Teleporting \"" + targetClient.userName + "\" to \"" + targetClient2.userName + "\"..."); } } } } }
public static void readRequestData() { List<string> cooldownFileData = File.ReadAllLines(requestCooldownsFile).ToList(); foreach (string s in cooldownFileData) { string UID = s.Split('=')[0]; string requestsString = s.Split('=')[1]; foreach (string s2 in requestsString.Split(';')) { string otherUID = s2.Split(':')[0]; string cooldown = s2.Split(':')[1]; TimerPlus t = new TimerPlus(); t.AutoReset = false; t.Interval = Convert.ToInt32(cooldown); t.Elapsed += (sender, e) => unblockRequests(otherUID, UID); t.Start(); if (!blockedRequestsPer.ContainsKey(UID)) blockedRequestsPer.Add(UID, new Dictionary<string, TimerPlus>()); blockedRequestsPer[UID].Add(otherUID, t); } } }
public static void readCooldownData() { try { List<string> cooldownFileData = File.ReadAllLines(cooldownsFile).ToList(); foreach (string s in cooldownFileData) { string UID = s.Split('=')[0]; string kitsString = s.Split('=')[1]; foreach (string s2 in kitsString.Split(';')) { string kitName = s2.Split(':')[0].ToLower(); string cooldown = s2.Split(':')[1]; if (!cooldown.Contains("-")) { TimerPlus t = new TimerPlus(); t.AutoReset = false; t.Interval = Convert.ToInt32(cooldown); t.Elapsed += (sender, e) => restoreKit(sender, e, kitName, UID); t.Start(); if (!playerCooldowns.ContainsKey(UID)) { playerCooldowns.Add(UID, new Dictionary<TimerPlus, string>() { { t, kitName } }); } else { if (!playerCooldowns[UID].ContainsValue(kitName)) playerCooldowns[UID].Add(t, kitName); } } } } } catch (Exception ex) { conLog.Error("RCDD: " + ex.ToString()); } }
public static void updateRequestAllData(string UID, int cooldown, TimerPlus t) { List<string> cooldownFileData = File.ReadAllLines(requestCooldownsAllFile).ToList(); List<string> UIDs = new List<string>(); foreach (string str in cooldownFileData) { UIDs.Add(str.Split('=')[0]); } if (UIDs.Contains(UID)) { int indexOfUID = Array.FindIndex(cooldownFileData.ToArray(), (string s) => s.StartsWith(UID)); cooldownFileData[indexOfUID] = UID + "=" + cooldown; } else { cooldownFileData.Add(UID + "=" + cooldown); } using (StreamWriter sw = new StreamWriter(requestCooldownsAllFile, false)) { foreach (string s in cooldownFileData) { sw.WriteLine(s); } } }
public static void updateCooldownData(string UID, string kitName, string cooldown, TimerPlus t) { try { List<string> cooldownFileData = File.ReadAllLines(cooldownsFile).ToList(); List<string> UIDs = new List<string>(); foreach (string str in cooldownFileData) { UIDs.Add(str.Split('=')[0]); } if (UIDs.Contains(UID)) // If I have any kits currenty cooling down { string fullString = ""; string currentKits = Array.Find(cooldownFileData.ToArray(), (string s) => s.StartsWith(UID)).Split('=')[1]; if (currentKits.Contains(kitName)) // If the kit I am updating is currently cooling down, update the cooldown { List<string> allKits = currentKits.Split(';').ToList(); int index = Array.FindIndex(allKits.ToArray(), (string s) => s.StartsWith(kitName)); if (t.TimeLeft > 0) allKits[index] = kitName + ":" + t.TimeLeft; else allKits.RemoveAt(index); if (allKits.Count > 0) fullString = UID + "=" + string.Join(";", allKits.ToArray()); } else { fullString = UID + "=" + currentKits; fullString += ";" + kitName + ":" + cooldown; } int indexOfUID = Array.FindIndex(cooldownFileData.ToArray(), (string s) => s.StartsWith(UID)); if (fullString.Length > 0) cooldownFileData[indexOfUID] = fullString; else cooldownFileData.RemoveAt(indexOfUID); } else { cooldownFileData.Add(UID + "=" + kitName + ":" + cooldown); } using (StreamWriter sw = new StreamWriter(cooldownsFile, false)) { foreach (string s in cooldownFileData) { sw.WriteLine(s); } } } catch (Exception ex) { conLog.Error("UCDD: " + ex.ToString()); } }
public static void teleportRequest(PlayerClient senderClient, string[] args) { if (teleportRequestOn) { bool b = true; if (denyRequestWarzone && inWarZone.ContainsKey(senderClient)) b = false; if (b) { if (args.Count() > 1) { List<string> playerNameList = new List<string>(); int curIndex = 0; foreach (string s in args) { if (curIndex > 0) { playerNameList.Add(s); } curIndex++; } string playerName = string.Join(" ", playerNameList.ToArray()); if (playerName.StartsWith("\"") && playerName.EndsWith("\"")) { playerName = playerName.Substring(1, playerName.Length - 2); PlayerClient[] possibleTargets = Array.FindAll(AllPlayerClients.ToArray(), (PlayerClient pc) => pc.userName.Equals(playerName)); if (possibleTargets.Count() == 0) Broadcast.broadcastTo(senderClient.netPlayer, "No player names equal \"" + playerName + "\"."); else if (possibleTargets.Count() > 1) Broadcast.broadcastTo(senderClient.netPlayer, "Too many player names equal \"" + playerName + "\"."); else { PlayerClient targetClient = possibleTargets[0]; if (requestCooldownType == 1 && blockedRequestsPer[senderClient.userID.ToString()].ContainsKey(targetClient.userID.ToString())) { double timeLeft = Math.Round((blockedRequestsPer[senderClient.userID.ToString()][targetClient.userID.ToString()].TimeLeft / 1000)); if (timeLeft > 0) { Broadcast.broadcastTo(senderClient.netPlayer, "You cannot teleport to that player for " + timeLeft + " second(s)."); return; } } if (requestCooldownType == 2 && blockedRequestsAll.ContainsKey(senderClient.userID.ToString())) { double timeLeft = Math.Round((blockedRequestsAll[senderClient.userID.ToString()].TimeLeft / 1000)); if (timeLeft > 0) { Broadcast.broadcastTo(senderClient.netPlayer, "You cannot teleport to anyone for " + timeLeft + " second(s)."); return; } } if (!teleportRequests[targetClient].ContainsKey(senderClient)) { TimerPlus t = new TimerPlus(); t.AutoReset = false; t.Interval = 30000; t.Elapsed += (sender, e) => requestTimeout(targetClient, senderClient); t.Start(); teleportRequests[targetClient].Add(senderClient, t); latestRequests[targetClient] = senderClient; Broadcast.broadcastTo(senderClient.netPlayer, "Teleport request sent to " + targetClient.userName + "."); Broadcast.broadcastTo(targetClient.netPlayer, senderClient.userName + " requested to teleport to you. Type /tpaccept <name> or /tpdeny <name>."); } else { Broadcast.broadcastTo(senderClient.netPlayer, "You already sent a teleport request to " + targetClient.userName + "."); } } } else { PlayerClient[] possibleTargets = Array.FindAll(AllPlayerClients.ToArray(), (PlayerClient pc) => pc.userName.Contains(playerName)); if (possibleTargets.Count() == 0) Broadcast.broadcastTo(senderClient.netPlayer, "No player names equal or contain \"" + playerName + "\"."); else if (possibleTargets.Count() > 1) Broadcast.broadcastTo(senderClient.netPlayer, "Too many player names contain \"" + playerName + "\"."); else { PlayerClient targetClient = possibleTargets[0]; if (requestCooldownType == 1 && blockedRequestsPer[senderClient.userID.ToString()].ContainsKey(targetClient.userID.ToString())) { double timeLeft = Math.Round((blockedRequestsPer[senderClient.userID.ToString()][targetClient.userID.ToString()].TimeLeft / 1000)); if (timeLeft > 0) { Broadcast.broadcastTo(senderClient.netPlayer, "You cannot teleport to that player for " + timeLeft + " second(s)."); return; } } if (requestCooldownType == 2 && blockedRequestsAll.ContainsKey(senderClient.userID.ToString())) { double timeLeft = Math.Round((blockedRequestsAll[senderClient.userID.ToString()].TimeLeft / 1000)); if (timeLeft > 0) { Broadcast.broadcastTo(senderClient.netPlayer, "You cannot teleport to anyone for " + timeLeft + " second(s)."); return; } } if (!teleportRequests[targetClient].ContainsKey(senderClient)) { TimerPlus t = new TimerPlus(); t.AutoReset = false; t.Interval = 30000; t.Elapsed += (sender, e) => requestTimeout(targetClient, senderClient); t.Start(); teleportRequests[targetClient].Add(senderClient, t); latestRequests[targetClient] = senderClient; Broadcast.broadcastTo(senderClient.netPlayer, "Teleport request sent to " + targetClient.userName + "."); Broadcast.broadcastTo(targetClient.netPlayer, senderClient.userName + " requested to teleport to you. Type /tpaccept <name> or /tpdeny <name>."); } else { Broadcast.broadcastTo(senderClient.netPlayer, "You already sent a teleport request to " + targetClient.userName + "."); } } } } } else { Broadcast.broadcastTo(senderClient.netPlayer, "You cannot teleport while in a war zone!"); } } else { Broadcast.broadcastTo(senderClient.netPlayer, "Teleport requesting is disabled on this server."); } }
public static void teleporting(PlayerClient targetClient, PlayerClient senderClient) { Character targetChar; Character.FindByUser(targetClient.userID, out targetChar); Vector3 oldPos = targetChar.transform.position; bool b = true; int timeElapsed = 0; RustServerManagement serverManagement = RustServerManagement.Get(); while (b) { if (wasHit.Contains(targetClient)) { teleportRequests[senderClient][targetClient].Close(); teleportRequests[senderClient].Remove(targetClient); latestRequests[senderClient] = null; isTeleporting.Remove(targetClient); isAccepting.Remove(senderClient); wasHit.Remove(targetClient); Broadcast.broadcastTo(senderClient.netPlayer, "Teleport request from " + targetClient.userName + " was interrupted due to damage."); Broadcast.broadcastTo(targetClient.netPlayer, "Teleport request to " + senderClient.userName + " was interrupted due to damage."); b = false; break; } if (wasHit.Contains(senderClient)) { teleportRequests[senderClient][targetClient].Close(); teleportRequests[senderClient].Remove(targetClient); latestRequests[senderClient] = null; isTeleporting.Remove(targetClient); isAccepting.Remove(senderClient); wasHit.Remove(senderClient); Broadcast.broadcastTo(senderClient.netPlayer, "Teleport request from " + targetClient.userName + " was interrupted due to damage."); Broadcast.broadcastTo(targetClient.netPlayer, "Teleport request to " + senderClient.userName + " was interrupted due to damage."); b = false; break; } if (timeElapsed >= requestDelay) { Character senderChar; Character.FindByUser(senderClient.userID, out senderChar); Vector3 destinationPos = senderChar.transform.position; Vector3 oldDest = destinationPos; oldDest.y += 1; if (Vector3.Distance(destinationPos, oldPos) > 375) destinationPos.y += 8; serverManagement.TeleportPlayerToWorld(targetClient.netPlayer, destinationPos); TimerPlus tp = new TimerPlus(); tp.AutoReset = false; tp.Interval = 500; tp.Elapsed += ((sender, e) => teleportToWorldElapsed(targetClient.netPlayer, oldDest)); tp.Start(); teleportRequests[senderClient][targetClient].Close(); teleportRequests[senderClient].Remove(targetClient); latestRequests[senderClient] = null; isTeleporting.Remove(targetClient); isAccepting.Remove(senderClient); b = false; break; } Vector3 newPos = targetChar.transform.position; if (Vector3.Distance(oldPos, newPos) > 3) { Broadcast.broadcastTo(senderClient.netPlayer, targetClient.userName + " moved. Teleportation cancelled."); Broadcast.broadcastTo(targetClient.netPlayer, "Teleportation cancelled."); teleportRequests[senderClient][targetClient].Close(); teleportRequests[senderClient].Remove(targetClient); latestRequests[senderClient] = null; isTeleporting.Remove(targetClient); isAccepting.Remove(senderClient); b = false; break; } Thread.Sleep(1000); timeElapsed++; } }
public static void teleportHere(PlayerClient senderClient, string[] args) { if (args.Count() > 1) { RustServerManagement serverManagement = RustServerManagement.Get(); if (args.Count() == 2) { List<string> playerNameList = new List<string>(); int curIndex = 0; foreach (string s in args) { if (curIndex > 0) playerNameList.Add(s); curIndex++; } string playerName = string.Join(" ", playerNameList.ToArray()); if (playerName.StartsWith("\"") && playerName.EndsWith("\"")) { playerName = playerName.Substring(1, playerName.Length - 2); PlayerClient[] possibleTargets = Array.FindAll(AllPlayerClients.ToArray(), (PlayerClient pc) => pc.userName.Equals(playerName)); if (possibleTargets.Count() == 0) Broadcast.broadcastTo(senderClient.netPlayer, "No player names equal \"" + playerName + "\"."); else if (possibleTargets.Count() > 1) Broadcast.broadcastTo(senderClient.netPlayer, "Too many player names equal \"" + playerName + "\"."); else { PlayerClient targetClient = possibleTargets[0]; Character senderChar; Character.FindByUser(senderClient.userID, out senderChar); Character targetChar; Character.FindByUser(targetClient.userID, out targetChar); Vector3 destination = senderChar.transform.position; Vector3 oldDest = destination; oldDest.y += 1; if (Vector3.Distance(destination, targetChar.transform.position) > 375) destination.y += 8; serverManagement.TeleportPlayerToWorld(targetClient.netPlayer, destination); TimerPlus tp = new TimerPlus(); tp.AutoReset = false; tp.Interval = 500; tp.Elapsed += ((sender, e) => teleportToWorldElapsed(targetClient.netPlayer, oldDest)); tp.Start(); Broadcast.broadcastTo(senderClient.netPlayer, "Teleporting " + targetClient.userName + " here..."); } } else { PlayerClient[] possibleTargets = Array.FindAll(AllPlayerClients.ToArray(), (PlayerClient pc) => pc.userName.Contains(playerName)); if (possibleTargets.Count() == 0) Broadcast.broadcastTo(senderClient.netPlayer, "No player names equal or contain \"" + playerName + "\"."); else if (possibleTargets.Count() > 1) Broadcast.broadcastTo(senderClient.netPlayer, "Too many player names contain \"" + playerName + "\"."); else { PlayerClient targetClient = possibleTargets[0]; Character senderChar; Character.FindByUser(senderClient.userID, out senderChar); Character targetChar; Character.FindByUser(targetClient.userID, out targetChar); Vector3 destination = senderChar.transform.position; Vector3 oldDest = destination; oldDest.y += 1; if (Vector3.Distance(destination, targetChar.transform.position) > 375) destination.y += 8; serverManagement.TeleportPlayerToWorld(targetClient.netPlayer, destination); TimerPlus tp = new TimerPlus(); tp.AutoReset = false; tp.Interval = 500; tp.Elapsed += ((sender, e) => teleportToWorldElapsed(targetClient.netPlayer, oldDest)); tp.Start(); Broadcast.broadcastTo(senderClient.netPlayer, "Teleporting " + targetClient.userName + " here..."); } } } } }
public static void teleportAccept(PlayerClient senderClient, string[] args) { if (args.Count() > 1) { List<string> playerNameList = new List<string>(); int curIndex = 0; foreach (string s in args) { if (curIndex > 0) { playerNameList.Add(s); } curIndex++; } string playerName = string.Join(" ", playerNameList.ToArray()); if (playerName.StartsWith("\"") && playerName.EndsWith("\"")) { playerName = playerName.Substring(1, playerName.Length - 2); PlayerClient[] possibleTargets = Array.FindAll(AllPlayerClients.ToArray(), (PlayerClient pc) => pc.userName.Equals(playerName)); if (possibleTargets.Count() == 0) Broadcast.broadcastTo(senderClient.netPlayer, "No player names equal \"" + playerName + "\"."); else if (possibleTargets.Count() > 1) Broadcast.broadcastTo(senderClient.netPlayer, "Too many player names equal \"" + playerName + "\"."); else { PlayerClient targetClient = possibleTargets[0]; if (teleportRequests[senderClient].ContainsKey(targetClient)) { Broadcast.broadcastTo(senderClient.netPlayer, "Teleporting " + targetClient.userName + " in " + requestDelay + " seconds..."); Broadcast.broadcastTo(targetClient.netPlayer, "Teleporting to " + senderClient.userName + " in " + requestDelay + " seconds. Do not move..."); Thread t = new Thread(() => teleporting(targetClient, senderClient)); t.Start(); isTeleporting.Add(targetClient); isAccepting.Add(senderClient); if (requestCooldownType == 1 && !blockedRequestsPer[targetClient.userID.ToString()].ContainsKey(senderClient.userID.ToString())) { TimerPlus t1 = new TimerPlus(); t1.AutoReset = false; t1.Interval = requestCooldown; t1.Elapsed += (sender, e) => unblockRequests(senderClient.userID.ToString(), targetClient.userID.ToString()); t1.Start(); blockedRequestsPer[targetClient.userID.ToString()].Add(senderClient.userID.ToString(), t1); } if (requestCooldownType == 2 && !blockedRequestsAll.ContainsKey(targetClient.userID.ToString())) { TimerPlus t1 = new TimerPlus(); t1.AutoReset = false; t1.Interval = requestCooldown; t1.Elapsed += (sender, e) => unblockRequests(senderClient.userID.ToString(), targetClient.userID.ToString()); t1.Start(); blockedRequestsAll.Add(targetClient.userID.ToString(), t1); } } else { Broadcast.broadcastTo(senderClient.netPlayer, "You do not have a teleport request from " + targetClient.userName + "."); } } } else { PlayerClient[] possibleTargets = Array.FindAll(AllPlayerClients.ToArray(), (PlayerClient pc) => pc.userName.Contains(playerName)); if (possibleTargets.Count() == 0) Broadcast.broadcastTo(senderClient.netPlayer, "No player names equal or contain \"" + playerName + "\"."); else if (possibleTargets.Count() > 1) Broadcast.broadcastTo(senderClient.netPlayer, "Too many player names contain \"" + playerName + "\"."); else { PlayerClient targetClient = possibleTargets[0]; if (teleportRequests[senderClient].ContainsKey(targetClient)) { Broadcast.broadcastTo(senderClient.netPlayer, "Teleporting " + targetClient.userName + " in " + requestDelay + " seconds..."); Broadcast.broadcastTo(targetClient.netPlayer, "Teleporting to " + senderClient.userName + " in " + requestDelay + " seconds. Do not move..."); Thread t = new Thread(() => teleporting(targetClient, senderClient)); t.Start(); isTeleporting.Add(targetClient); isAccepting.Add(senderClient); if (requestCooldownType == 1 && !blockedRequestsPer[targetClient.userID.ToString()].ContainsKey(senderClient.userID.ToString())) { TimerPlus t1 = new TimerPlus(); t1.AutoReset = false; t1.Interval = requestCooldown; t1.Elapsed += (sender, e) => unblockRequests(senderClient.userID.ToString(), targetClient.userID.ToString()); t1.Start(); blockedRequestsPer[targetClient.userID.ToString()].Add(senderClient.userID.ToString(), t1); } if (requestCooldownType == 2 && !blockedRequestsAll.ContainsKey(targetClient.userID.ToString())) { TimerPlus t1 = new TimerPlus(); t1.AutoReset = false; t1.Interval = requestCooldown; t1.Elapsed += (sender, e) => unblockRequests(senderClient.userID.ToString(), targetClient.userID.ToString()); t1.Start(); blockedRequestsAll.Add(targetClient.userID.ToString(), t1); } } else { Broadcast.broadcastTo(senderClient.netPlayer, "You do not have a teleport request from " + targetClient.userName + "."); } } } } else { if (latestRequests[senderClient] != null) { PlayerClient targetClient = latestRequests[senderClient]; Broadcast.broadcastTo(senderClient.netPlayer, "Teleporting " + targetClient.userName + " in " + requestDelay + " seconds..."); Broadcast.broadcastTo(targetClient.netPlayer, "Teleporting to " + senderClient.userName + " in " + requestDelay + " seconds. Do not move..."); Thread t = new Thread(() => teleporting(targetClient, senderClient)); t.Start(); isTeleporting.Add(targetClient); if (requestCooldownType == 1 && !blockedRequestsPer[targetClient.userID.ToString()].ContainsKey(senderClient.userID.ToString())) { TimerPlus t1 = new TimerPlus(); t1.AutoReset = false; t1.Interval = requestCooldown; t1.Elapsed += (sender, e) => unblockRequests(senderClient.userID.ToString(), targetClient.userID.ToString()); t1.Start(); blockedRequestsPer[targetClient.userID.ToString()].Add(senderClient.userID.ToString(), t1); } if (requestCooldownType == 2 && !blockedRequestsAll.ContainsKey(targetClient.userID.ToString())) { TimerPlus t1 = new TimerPlus(); t1.AutoReset = false; t1.Interval = requestCooldown; t1.Elapsed += (sender, e) => unblockRequests(senderClient.userID.ToString(), targetClient.userID.ToString()); t1.Start(); blockedRequestsAll.Add(targetClient.userID.ToString(), t1); } } else Broadcast.broadcastTo(senderClient.netPlayer, "You have no teleport requests to accept!"); } }
public static void mute(PlayerClient senderClient, string[] args, bool mode) { if (args.Count() > 1) { int time; if (mode && int.TryParse(args.Last().Remove(args.Last().Length - 1), out time) && (args.Last().EndsWith("s") || args.Last().EndsWith("m") || args.Last().EndsWith("h"))) { string timeString = args.Last().Remove(args.Last().Length - 1); string timeMode = args.Last().Substring(args.Last().Length - 1, 1); time *= 1000; if (timeMode == "s") timeMode = " second(s)."; if (timeMode == "m") { timeMode = " minute(s)."; time *= 60; } if (timeMode == "h") { timeMode = " hour(s)."; time *= 3600; } List<string> playerNameList = new List<string>(); int curIndex = 0; foreach (string s in args) { if (curIndex > 0 && curIndex < args.Count() - 1) playerNameList.Add(s); curIndex++; } string playerName = string.Join(" ", playerNameList.ToArray()); if (playerName.StartsWith("\"") && playerName.EndsWith("\"")) { playerName = playerName.Substring(1, playerName.Length - 2); PlayerClient[] possibleTargets = Array.FindAll(AllPlayerClients.ToArray(), (PlayerClient pc) => pc.userName.Equals(playerName)); if (possibleTargets.Count() == 0) Broadcast.broadcastTo(senderClient.netPlayer, "No player names equal \"" + playerName + "\"."); else if (possibleTargets.Count() > 1) Broadcast.broadcastTo(senderClient.netPlayer, "Too many player names equal \"" + playerName + "\"."); else { PlayerClient targetClient = possibleTargets[0]; if (!mutedUsers.Contains(targetClient.userID.ToString())) { Broadcast.broadcastAll("Player \"" + targetClient.userName + "\" has been muted on global chat for " + timeString + timeMode); mutedUsers.Add(targetClient.userID.ToString()); TimerPlus tp = new TimerPlus(); tp.AutoReset = false; tp.Interval = time; tp.Elapsed += (sender, e) => unmuteElapsed(sender, e, targetClient.userID.ToString()); tp.Start(); muteTimes.Add(targetClient.userID.ToString(), tp); } else { Broadcast.broadcastTo(senderClient.netPlayer, targetClient.userName + " is already muted for " + timeString + timeMode); } } } else { PlayerClient[] possibleTargets = Array.FindAll(AllPlayerClients.ToArray(), (PlayerClient pc) => pc.userName.Contains(playerName)); if (possibleTargets.Count() == 0) Broadcast.broadcastTo(senderClient.netPlayer, "No player names equal or contain \"" + playerName + "\"."); else if (possibleTargets.Count() > 1) Broadcast.broadcastTo(senderClient.netPlayer, "Too many player names contain \"" + playerName + "\"."); else { PlayerClient targetClient = possibleTargets[0]; if (!mutedUsers.Contains(targetClient.userID.ToString())) { Broadcast.broadcastAll("Player \"" + targetClient.userName + "\" has been muted on global chat for " + timeString + timeMode); mutedUsers.Add(targetClient.userID.ToString()); TimerPlus tp = new TimerPlus(); tp.AutoReset = false; tp.Interval = time; tp.Elapsed += (sender, e) => unmuteElapsed(sender, e, targetClient.userID.ToString()); tp.Start(); muteTimes.Add(targetClient.userID.ToString(), tp); } else { Broadcast.broadcastTo(senderClient.netPlayer, targetClient.userName + " is already muted for " + timeString + timeMode); } } } } else { List<string> playerNameList = new List<string>(); int curIndex = 0; foreach (string s in args) { if (curIndex > 0) playerNameList.Add(s); curIndex++; } string playerName = string.Join(" ", playerNameList.ToArray()); if (playerName.StartsWith("\"") && playerName.EndsWith("\"")) { playerName = playerName.Substring(1, playerName.Length - 2); PlayerClient[] possibleTargets = Array.FindAll(AllPlayerClients.ToArray(), (PlayerClient pc) => pc.userName.Equals(playerName)); if (possibleTargets.Count() == 0) Broadcast.broadcastTo(senderClient.netPlayer, "No player names equal \"" + playerName + "\"."); else if (possibleTargets.Count() > 1) Broadcast.broadcastTo(senderClient.netPlayer, "Too many player names equal \"" + playerName + "\"."); else { PlayerClient targetClient = possibleTargets[0]; if (mode) { if (!mutedUsers.Contains(targetClient.userID.ToString())) { Broadcast.broadcastAll("Player \"" + targetClient.userName + "\" has been muted on global chat."); mutedUsers.Add(targetClient.userID.ToString()); } else { Broadcast.broadcastTo(senderClient.netPlayer, targetClient.userName + " is already muted."); } } else { if (mutedUsers.Contains(targetClient.userID.ToString())) { Broadcast.broadcastAll("Player \"" + targetClient.userName + "\" has been unmuted on global chat."); mutedUsers.Remove(targetClient.userID.ToString()); } else { Broadcast.broadcastTo(senderClient.netPlayer, targetClient.userName + " is not muted."); } } } } else { PlayerClient[] possibleTargets = Array.FindAll(AllPlayerClients.ToArray(), (PlayerClient pc) => pc.userName.Contains(playerName)); if (possibleTargets.Count() == 0) Broadcast.broadcastTo(senderClient.netPlayer, "No player names equal or contain \"" + playerName + "\"."); else if (possibleTargets.Count() > 1) Broadcast.broadcastTo(senderClient.netPlayer, "Too many player names contain \"" + playerName + "\"."); else { PlayerClient targetClient = possibleTargets[0]; if (mode) { if (!mutedUsers.Contains(targetClient.userID.ToString())) { Broadcast.broadcastAll("Player \"" + targetClient.userName + "\" has been muted on global chat."); mutedUsers.Add(targetClient.userID.ToString()); } else { Broadcast.broadcastTo(senderClient.netPlayer, targetClient.userName + " is already muted."); } } else { if (mutedUsers.Contains(targetClient.userID.ToString())) { Broadcast.broadcastAll("Player \"" + targetClient.userName + "\" has been unmuted on global chat."); mutedUsers.Remove(targetClient.userID.ToString()); } else { Broadcast.broadcastTo(senderClient.netPlayer, targetClient.userName + " is not muted."); } } } } } } }
public static void onceMOTD() { foreach (KeyValuePair<string, Dictionary<string, List<string>>> kv in onceMOTDList) { TimerPlus t = new TimerPlus(); t.AutoReset = false; t.Interval = Convert.ToInt32(kv.Value.ElementAt(0).Key); t.Elapsed += ((sender, e) => onceMOTDElapsed(kv.Key)); t.Start(); } }
public static void updateRequestData(string UID, string otherUID, int cooldown, TimerPlus t) { List<string> cooldownFileData = File.ReadAllLines(requestCooldownsFile).ToList(); List<string> UIDs = new List<string>(); foreach (string str in cooldownFileData) { UIDs.Add(str.Split('=')[0]); } if (UIDs.Contains(UID)) { string fullString = ""; string currentRequests = Array.Find(cooldownFileData.ToArray(), (string s) => s.StartsWith(UID)).Split('=')[1]; if (currentRequests.Contains(otherUID)) { List<string> allRequests = currentRequests.Split(';').ToList(); int index = Array.FindIndex(allRequests.ToArray(), (string s) => s.StartsWith(otherUID)); allRequests[index] = otherUID + ":" + t.TimeLeft; fullString = UID + "=" + string.Join(";", allRequests.ToArray()); } else { fullString = UID + "=" + currentRequests; fullString += ";" + otherUID + ":" + cooldown; } int indexOfUID = Array.FindIndex(cooldownFileData.ToArray(), (string s) => s.StartsWith(UID)); cooldownFileData[indexOfUID] = fullString; } else { cooldownFileData.Add(UID + "=" + otherUID + ":" + cooldown); } using (StreamWriter sw = new StreamWriter(requestCooldownsFile, false)) { foreach (string s in cooldownFileData) { sw.WriteLine(s); } } }
public static void readRequestAllData() { List<string> cooldownFileData = File.ReadAllLines(requestCooldownsAllFile).ToList(); foreach (string s in cooldownFileData) { string UID = s.Split('=')[0]; string cooldown = s.Split('=')[1]; TimerPlus t = new TimerPlus(); t.AutoReset = false; t.Interval = Convert.ToInt32(cooldown); t.Elapsed += (sender, e) => unblockRequests("", UID); t.Start(); if (!blockedRequestsAll.ContainsKey(UID)) blockedRequestsAll.Add(UID, t); } }
public static void warping(PlayerClient senderClient, Vector3 destination) { bool b = true; int timeElapsed = 0; RustServerManagement serverManagement = RustServerManagement.Get(); Character senderChar; Character.FindByUser(senderClient.userID, out senderChar); Vector3 oldPos = senderChar.transform.position; while (b) { if (wasHit.Contains(senderClient)) { isTeleporting.Remove(senderClient); wasHit.Remove(senderClient); Broadcast.broadcastTo(senderClient.netPlayer, "Warp was interrupted due to damage."); b = false; break; } if (timeElapsed >= warpDelay) { Vector3 oldDest = destination; oldDest.y += 1; if (Vector3.Distance(oldPos, destination) > 375) destination.y += 8; serverManagement.TeleportPlayerToWorld(senderClient.netPlayer, destination); TimerPlus tp = new TimerPlus(); tp.AutoReset = false; tp.Interval = 500; tp.Elapsed += ((sender, e) => teleportToWorldElapsed(senderClient.netPlayer, oldDest)); tp.Start(); isTeleporting.Remove(senderClient); b = false; break; } Vector3 newPos = senderChar.transform.position; if (Vector3.Distance(oldPos, newPos) > 3) { Broadcast.broadcastTo(senderClient.netPlayer, "You moved. Warp cancelled."); isTeleporting.Remove(senderClient); b = false; break; } Thread.Sleep(1000); timeElapsed++; } }
public static void startTimer() { TimerPlus timer = new TimerPlus(); timer.AutoReset = true; timer.Interval = refreshInterval; timer.Elapsed += ((sender, e) => grabGroupMembers()); timer.Start(); }
public static void giveKit(PlayerClient senderClient, string[] args, string message) { try { if (args.Count() > 1) { string kitName = args[1]; string kitNameToLower = kitName.ToLower(); Dictionary<string, int> kitItems = new Dictionary<string,int>(); if (kits.Keys.Contains(kitNameToLower)) // If kit exists { if (kitsForRanks.Keys.Contains(findRank(senderClient.userID.ToString()))) // If kit exist for my rank { if (kitsForRanks[findRank(senderClient.userID.ToString())].Contains(kitNameToLower)) // If the kit I requested is permitted for my rank { bool b = true; if (playerCooldowns.Keys.Contains(senderClient.userID.ToString())) { if (playerCooldowns[senderClient.userID.ToString()].Values.Contains(kitNameToLower)) { foreach (KeyValuePair<TimerPlus, string> kv in playerCooldowns[senderClient.userID.ToString()]) { if (kv.Value == kitNameToLower) { if (Math.Round((kv.Key.TimeLeft / 1000)) > 0) b = false; } } } } if (b) // If I am not on cool down for this kit { kitItems = kits[kitNameToLower]; Broadcast.noticeTo(senderClient.netPlayer, "☻", "You were given the " + kitName + " kit."); if (kitCooldowns.Keys.Contains(kitNameToLower)) // If a cooldown is set for this kit, set my cool down { TimerPlus t = new TimerPlus(); t.AutoReset = false; t.Interval = kitCooldowns[kitNameToLower]; t.Elapsed += (sender, e) => restoreKit(sender, e, kitNameToLower, senderClient.userID.ToString()); t.Start(); if (!playerCooldowns.Keys.Contains(senderClient.userID.ToString())) playerCooldowns.Add(senderClient.userID.ToString(), new Dictionary<TimerPlus, string>() { { t, kitNameToLower } }); else playerCooldowns[senderClient.userID.ToString()].Add(t, kitNameToLower); } } else // If I am on cool down { foreach (KeyValuePair<TimerPlus, string> kv in playerCooldowns[senderClient.userID.ToString()]) { if (kv.Value == kitNameToLower) { // Return how long I have to wait double timeLeft = Math.Round((kv.Key.TimeLeft / 1000)); Broadcast.noticeTo(senderClient.netPlayer, "✯", "You must wait " + (timeLeft > 999999999 ? "forever" : timeLeft.ToString() + " seconds") + " before using this."); } } } } else // If I am not allowed to use this kit { if (kitsForUIDs.ContainsKey(senderClient.userID.ToString())) { if (kitsForUIDs[senderClient.userID.ToString()].Contains(kitNameToLower)) { bool b = true; if (playerCooldowns.Keys.Contains(senderClient.userID.ToString())) { if (playerCooldowns[senderClient.userID.ToString()].Values.Contains(kitNameToLower)) b = false; } if (b) // If I am not on cool down for this kit { kitItems = kits[kitNameToLower]; Broadcast.noticeTo(senderClient.netPlayer, "☻", "You were given the " + kitName + " kit."); if (kitCooldowns.Keys.Contains(kitNameToLower)) // If a cooldown is set for this kit, set my cool down { TimerPlus t = new TimerPlus(); t.AutoReset = false; t.Interval = kitCooldowns[kitNameToLower]; t.Elapsed += (sender, e) => restoreKit(sender, e, kitNameToLower, senderClient.userID.ToString()); t.Start(); if (!playerCooldowns.Keys.Contains(senderClient.userID.ToString())) playerCooldowns.Add(senderClient.userID.ToString(), new Dictionary<TimerPlus, string>() { { t, kitNameToLower } }); else playerCooldowns[senderClient.userID.ToString()].Add(t, kitNameToLower); } } else // If I am on cool down { foreach (KeyValuePair<TimerPlus, string> kv in playerCooldowns[senderClient.userID.ToString()]) { if (kv.Value == kitNameToLower) { // Return how long I have to wait double timeLeft = Math.Round((kv.Key.TimeLeft / 1000)); Broadcast.noticeTo(senderClient.netPlayer, "✯", "You must wait " + (timeLeft > 999999999 ? "forever" : timeLeft.ToString() + " seconds") + " before using this."); } } } } else { Broadcast.noticeTo(senderClient.netPlayer, ":(", "You do not have permission to do this."); } } else { Broadcast.noticeTo(senderClient.netPlayer, ":(", "You do not have permission to do this."); } } } else // If I do not have any kits assigned to my rank { if (unassignedKits.Contains(kitNameToLower)) // If the kit is actually unassigned to a rank { bool b = true; if (playerCooldowns.Keys.Contains(senderClient.userID.ToString())) { if (playerCooldowns[senderClient.userID.ToString()].Values.Contains(kitNameToLower)) b = false; } if (b) // If I am not on cool down for this kit { kitItems = kits[kitNameToLower]; Broadcast.noticeTo(senderClient.netPlayer, "☻", "You were given the " + kitName + " kit."); if (kitCooldowns.Keys.Contains(kitNameToLower)) // If a cooldown is set for this kit, set my cool down { TimerPlus t = new TimerPlus(); t.AutoReset = false; t.Interval = kitCooldowns[kitNameToLower]; t.Elapsed += (sender, e) => restoreKit(sender, e, kitNameToLower, senderClient.userID.ToString()); t.Start(); if (!playerCooldowns.Keys.Contains(senderClient.userID.ToString())) playerCooldowns.Add(senderClient.userID.ToString(), new Dictionary<TimerPlus, string>() { { t, kitNameToLower } }); else playerCooldowns[senderClient.userID.ToString()].Add(t, kitNameToLower); } } else // If I am on cool down { foreach (KeyValuePair<TimerPlus, string> kv in playerCooldowns[senderClient.userID.ToString()]) { if (kv.Value == kitNameToLower) { // Return how long I have to wait double timeLeft = Math.Round((kv.Key.TimeLeft / 1000)); Broadcast.noticeTo(senderClient.netPlayer, "✯", "You must wait " + (timeLeft > 999999999 ? "forever" : timeLeft.ToString() + " seconds") + " before using this."); } } } } else // If the kit is truly assigned to rank, just not mine { if (kitsForUIDs.ContainsKey(senderClient.userID.ToString())) { if (kitsForUIDs[senderClient.userID.ToString()].Contains(kitNameToLower)) { bool b = true; if (playerCooldowns.Keys.Contains(senderClient.userID.ToString())) { if (playerCooldowns[senderClient.userID.ToString()].Values.Contains(kitNameToLower)) b = false; } if (b) // If I am not on cool down for this kit { kitItems = kits[kitNameToLower]; Broadcast.noticeTo(senderClient.netPlayer, "☻", "You were given the " + kitName + " kit."); if (kitCooldowns.Keys.Contains(kitNameToLower)) // If a cooldown is set for this kit, set my cool down { TimerPlus t = new TimerPlus(); t.AutoReset = false; t.Interval = kitCooldowns[kitNameToLower]; t.Elapsed += (sender, e) => restoreKit(sender, e, kitNameToLower, senderClient.userID.ToString()); t.Start(); if (!playerCooldowns.Keys.Contains(senderClient.userID.ToString())) playerCooldowns.Add(senderClient.userID.ToString(), new Dictionary<TimerPlus, string>() { { t, kitNameToLower } }); else playerCooldowns[senderClient.userID.ToString()].Add(t, kitNameToLower); } } else // If I am on cool down { foreach (KeyValuePair<TimerPlus, string> kv in playerCooldowns[senderClient.userID.ToString()]) { if (kv.Value == kitNameToLower) { // Return how long I have to wait double timeLeft = Math.Round((kv.Key.TimeLeft / 1000)); Broadcast.noticeTo(senderClient.netPlayer, "✯", "You must wait " + (timeLeft > 999999999 ? "forever" : timeLeft.ToString() + " seconds") + " before using this."); } } } } else { Broadcast.noticeTo(senderClient.netPlayer, ":(", "You do not have permission to do this."); } } else { Broadcast.noticeTo(senderClient.netPlayer, ":(", "You do not have permission to do this."); } } } } List<string> parameters; foreach (KeyValuePair<string, int> kv in kitItems) { parameters = new List<string>() { { "/i" }, { "\"" + kv.Key + "\"" }, { kv.Value.ToString() } }; createItem(senderClient, senderClient, parameters.ToArray(), string.Join(" ", parameters.ToArray()), false); } } } catch (Exception ex) { Broadcast.broadcastTo(senderClient.netPlayer, ex.ToString()); } }
public static void loopItems() { TimerPlus t = new TimerPlus(); t.AutoReset = true; t.Interval = 5000; t.Elapsed += ((sender, e) => checkItems()); t.Start(); }
public static void cycleMOTD() { TimerPlus t = new TimerPlus(); t.AutoReset = true; t.Interval = cycleInterval; t.Elapsed += cycleMOTDElapsed; t.Start(); }