public override void Use(Player p, string message) { try { if (message == "") { Help(p); return; } if (message.IndexOf(' ') == -1) { if (File.Exists("extra/copy/" + message + ".copy")) { Player.SendMessage(p, "File: &f" + message + Server.DefaultColor + " already exists. Delete first"); return; } else { Player.SendMessage(p, "Storing: " + message); StreamWriter sW = new StreamWriter(File.Create("extra/copy/" + message + ".copy")); sW.WriteLine("Saved by: " + p.name + " at " + DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss ")); for (int k = 0; k < p.CopyBuffer.Count; k++) { sW.WriteLine(p.CopyBuffer[k].x + " " + p.CopyBuffer[k].y + " " + p.CopyBuffer[k].z + " " + p.CopyBuffer[k].type); } sW.Flush(); sW.Close(); sW = File.AppendText("extra/copy/index.copydb"); sW.WriteLine(message + " " + p.name); sW.Flush(); sW.Close(); } } else { if (message.Split(' ')[0] == "delete") { message = message.Split(' ')[1]; list.Clear(); foreach (string s in File.ReadAllLines("extra/copy/index.copydb")) { CopyOwner cO = new CopyOwner(); cO.file = s.Split(' ')[0]; cO.name = s.Split(' ')[1]; list.Add(cO); } CopyOwner result = list.Find( delegate(CopyOwner cO) { return cO.file == message; } ); if (p.group.Permission >= LevelPermission.Operator || result.name == p.name) { if (File.Exists("extra/copy/" + message + ".copy")) { try { if (File.Exists("extra/copyBackup/" + message + ".copy")) { File.Delete("extra/copyBackup/" + message + ".copy"); } File.Move("extra/copy/" + message + ".copy", "extra/copyBackup/" + message + ".copy"); } catch { } Player.SendMessage(p, "File &f" + message + Server.DefaultColor + " has been deleted."); list.Remove(result); File.Delete("extra/copy/index.copydb"); StreamWriter sW = new StreamWriter(File.Create("extra/copy/index.copydb")); foreach (CopyOwner cO in list) { sW.WriteLine(cO.file + " " + cO.name); } sW.Flush(); sW.Close(); } else { Player.SendMessage(p, "File does not exist."); } } else { Player.SendMessage(p, "You must be an operator or file owner to delete a save."); return; } } else { Help(p); return; } } } catch (Exception e) { Server.ErrorLog(e); } }
public override void Use(Player p, string message) { try { if (!File.Exists("extra/copy/index.copydb")) { Player.SendMessage(p, "No copy index found! Save something before trying to retrieve it!"); return; } if (message == "") { Help(p); return; } if (message.Split(' ')[0] == "info") { if (message.IndexOf(' ') != -1) { message = message.Split(' ')[1]; if (File.Exists("extra/copy/" + message + ".copy")) { StreamReader sR = new StreamReader(File.OpenRead("extra/copy/" + message + ".copy")); string infoline = sR.ReadLine(); sR.Close(); sR.Dispose(); Player.SendMessage(p, infoline); return; } } else { Help(p); return; } } if (message.Split(' ')[0] == "find") { message = message.Replace("find", ""); string storedcopies = ""; int maxCopies = 0; int findnum = 0; int currentnum = 0; bool isint = int.TryParse(message, out findnum); if (message == "") { goto retrieve; } if (!isint) { message = message.Trim(); list.Clear(); foreach (string s in File.ReadAllLines("extra/copy/index.copydb")) { CopyOwner cO = new CopyOwner(); cO.file = s.Split(' ')[0]; cO.name = s.Split(' ')[1]; list.Add(cO); } List<CopyOwner> results = new List<CopyOwner>(); for (int i = 0; i < list.Count; i++) { if (list[i].name.ToLower() == message.ToLower()) { storedcopies += ", " + list[i].file; } } if (storedcopies == "") { Player.SendMessage(p, "No saves found for player: " + message); } else { Player.SendMessage(p, "Saved copy files: "); Player.SendMessage(p, "&f " + storedcopies.Remove(0, 2)); } return; } // SEARCH BASED ON NAME STUFF ABOVE HERE if (isint) { maxCopies = findnum * 50; currentnum = maxCopies - 50; } retrieve: DirectoryInfo di = new DirectoryInfo("extra/copy/"); FileInfo[] fi = di.GetFiles("*.copy"); if (maxCopies == 0) { foreach (FileInfo file in fi) { storedcopies += ", " + file.Name.Replace(".copy", ""); } if (storedcopies != "") { Player.SendMessage(p, "Saved copy files: "); Player.SendMessage(p, "&f " + storedcopies.Remove(0, 2)); if (fi.Length > 50) { Player.SendMessage(p, "For a more structured list, use /retrieve find <1/2/3/...>"); } } else { Player.SendMessage(p, "There are no saved copies."); } } else { if (maxCopies > fi.Length) maxCopies = fi.Length; if (currentnum > fi.Length) { Player.SendMessage(p, "No saved copies beyond number " + fi.Length); return; } Player.SendMessage(p, "Saved copies (" + currentnum + " to " + maxCopies + "):"); for (int i = currentnum; i < maxCopies; i++) { storedcopies += ", " + fi[i].Name.Replace(".copy", ""); } if (storedcopies != "") { Player.SendMessage(p, "&f" + storedcopies.Remove(0, 2)); } else Player.SendMessage(p, "There are no saved copies."); } } else { if (message.IndexOf(' ') == -1) { message = message.Split(' ')[0]; if (File.Exists("extra/copy/" + message + ".copy")) { p.CopyBuffer.Clear(); bool readFirst = false; foreach (string s in File.ReadAllLines("extra/copy/" + message + ".copy")) { if (readFirst) { Player.CopyPos cP; cP.x = Convert.ToUInt16(s.Split(' ')[0]); cP.y = Convert.ToUInt16(s.Split(' ')[1]); cP.z = Convert.ToUInt16(s.Split(' ')[2]); cP.type = Convert.ToByte(s.Split(' ')[3]); p.CopyBuffer.Add(cP); } else readFirst = true; } Player.SendMessage(p, "&f" + message + Server.DefaultColor + " has been placed copybuffer. Paste away!"); } else { Player.SendMessage(p, "Could not find copy specified"); return; } } else { Help(p); return; } } } catch (Exception e) { Player.SendMessage(p, "An error occured"); Server.ErrorLog(e); } }
public override void Use(Player p, string message) { try { if (message == "") { Help(p); return; } if (message.IndexOf(' ') == -1) { if (File.Exists("extra/copy/" + message + ".copy")) { Player.SendMessage(p, "File: &f" + message + Server.DefaultColor + " already exists. Delete first"); return; } else { Player.SendMessage(p, "Storing: " + message); StreamWriter sW = new StreamWriter(File.Create("extra/copy/" + message + ".copy")); sW.WriteLine("Saved by: " + p.name + " at " + DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss ")); for (int k = 0; k < p.CopyBuffer.Count; k++) { sW.WriteLine(p.CopyBuffer[k].x + " " + p.CopyBuffer[k].y + " " + p.CopyBuffer[k].z + " " + p.CopyBuffer[k].type); } sW.Flush(); sW.Close(); sW = File.AppendText("extra/copy/index.copydb"); sW.WriteLine(message + " " + p.name); sW.Flush(); sW.Close(); } } else { if (message.Split(' ')[0] == "delete") { message = message.Split(' ')[1]; list.Clear(); foreach (string s in File.ReadAllLines("extra/copy/index.copydb")) { CopyOwner cO = new CopyOwner(); cO.file = s.Split(' ')[0]; cO.name = s.Split(' ')[1]; list.Add(cO); } CopyOwner result = list.Find( delegate(CopyOwner cO) { return(cO.file == message); } ); if (p.group.Permission >= LevelPermission.Operator || result.name == p.name) { if (File.Exists("extra/copy/" + message + ".copy")) { try { if (File.Exists("extra/copyBackup/" + message + ".copy")) { File.Delete("extra/copyBackup/" + message + ".copy"); } File.Move("extra/copy/" + message + ".copy", "extra/copyBackup/" + message + ".copy"); } catch { } Player.SendMessage(p, "File &f" + message + Server.DefaultColor + " has been deleted."); list.Remove(result); File.Delete("extra/copy/index.copydb"); StreamWriter sW = new StreamWriter(File.Create("extra/copy/index.copydb")); foreach (CopyOwner cO in list) { sW.WriteLine(cO.file + " " + cO.name); } sW.Flush(); sW.Close(); } else { Player.SendMessage(p, "File does not exist."); } } else { Player.SendMessage(p, "You must be an operator or file owner to delete a save."); return; } } else { Help(p); return; } } } catch (Exception e) { Server.ErrorLog(e); } }
public override void Use(Player p, string message) { try { if (!File.Exists("extra/copy/index.copydb")) { Player.SendMessage(p, "No copy index found! Save something before trying to retrieve it!"); return; } if (message == "") { Help(p); return; } if (message.Split(' ')[0] == "info") { if (message.IndexOf(' ') != -1) { message = message.Split(' ')[1]; if (File.Exists("extra/copy/" + message + ".copy")) { StreamReader sR = new StreamReader(File.OpenRead("extra/copy/" + message + ".copy")); string infoline = sR.ReadLine(); sR.Close(); sR.Dispose(); Player.SendMessage(p, infoline); return; } } else { Help(p); return; } } if (message.Split(' ')[0] == "find") { message = message.Replace("find", ""); string storedcopies = ""; int maxCopies = 0; int findnum = 0; int currentnum = 0; bool isint = int.TryParse(message, out findnum); if (message == "") { goto retrieve; } if (!isint) { message = message.Trim(); list.Clear(); foreach (string s in File.ReadAllLines("extra/copy/index.copydb")) { CopyOwner cO = new CopyOwner(); cO.file = s.Split(' ')[0]; cO.name = s.Split(' ')[1]; list.Add(cO); } List <CopyOwner> results = new List <CopyOwner>(); for (int i = 0; i < list.Count; i++) { if (list[i].name.ToLower() == message.ToLower()) { storedcopies += ", " + list[i].file; } } if (storedcopies == "") { Player.SendMessage(p, "No saves found for player: " + message); } else { Player.SendMessage(p, "Saved copy files: "); Player.SendMessage(p, "&f " + storedcopies.Remove(0, 2)); } return; } // SEARCH BASED ON NAME STUFF ABOVE HERE if (isint) { maxCopies = findnum * 50; currentnum = maxCopies - 50; } retrieve : DirectoryInfo di = new DirectoryInfo("extra/copy/"); FileInfo[] fi = di.GetFiles("*.copy"); if (maxCopies == 0) { foreach (FileInfo file in fi) { storedcopies += ", " + file.Name.Replace(".copy", ""); } if (storedcopies != "") { Player.SendMessage(p, "Saved copy files: "); Player.SendMessage(p, "&f " + storedcopies.Remove(0, 2)); if (fi.Length > 50) { Player.SendMessage(p, "For a more structured list, use /retrieve find <1/2/3/...>"); } } else { Player.SendMessage(p, "There are no saved copies."); } } else { if (maxCopies > fi.Length) { maxCopies = fi.Length; } if (currentnum > fi.Length) { Player.SendMessage(p, "No saved copies beyond number " + fi.Length); return; } Player.SendMessage(p, "Saved copies (" + currentnum + " to " + maxCopies + "):"); for (int i = currentnum; i < maxCopies; i++) { storedcopies += ", " + fi[i].Name.Replace(".copy", ""); } if (storedcopies != "") { Player.SendMessage(p, "&f" + storedcopies.Remove(0, 2)); } else { Player.SendMessage(p, "There are no saved copies."); } } } else { if (message.IndexOf(' ') == -1) { message = message.Split(' ')[0]; if (File.Exists("extra/copy/" + message + ".copy")) { p.CopyBuffer.Clear(); bool readFirst = false; foreach (string s in File.ReadAllLines("extra/copy/" + message + ".copy")) { if (readFirst) { Player.CopyPos cP; cP.x = Convert.ToUInt16(s.Split(' ')[0]); cP.y = Convert.ToUInt16(s.Split(' ')[1]); cP.z = Convert.ToUInt16(s.Split(' ')[2]); cP.type = Convert.ToByte(s.Split(' ')[3]); p.CopyBuffer.Add(cP); } else { readFirst = true; } } Player.SendMessage(p, "&f" + message + Server.DefaultColor + " has been placed copybuffer. Paste away!"); } else { Player.SendMessage(p, "Could not find copy specified"); return; } } else { Help(p); return; } } } catch (Exception e) { Player.SendMessage(p, "An error occured"); Server.ErrorLog(e); } }
public override void Use(Player p, string message) { if (p == null) { Player.SendMessage(p, "Impossible depuis la console ou l'irc"); return; } try { if (message == "") { Help(p); return; } if (message.IndexOf(' ') == -1) { if (File.Exists("extra/copy/" + message + ".copy")) { Player.SendMessage(p, "Le fichier &f" + message + Server.DefaultColor + " existe deja. Le supprimer avant."); return; } else { Player.SendMessage(p, "Storing: " + message); StreamWriter sW = new StreamWriter(File.Create("extra/copy/" + message + ".copy")); sW.WriteLine("Saved by: " + p.name + " at " + DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss ")); for (int k = 0; k < p.CopyBuffer.Count; k++) { sW.WriteLine(p.CopyBuffer[k].x + " " + p.CopyBuffer[k].y + " " + p.CopyBuffer[k].z + " " + p.CopyBuffer[k].type); } sW.Flush(); sW.Close(); sW = File.AppendText("extra/copy/index.copydb"); sW.WriteLine(message + " " + p.name); sW.Flush(); sW.Close(); } } else { if (message.Split(' ')[0] == "delete") { message = message.Split(' ')[1]; list.Clear(); foreach (string s in File.ReadAllLines("extra/copy/index.copydb")) { CopyOwner cO = new CopyOwner(); cO.file = s.Split(' ')[0]; cO.name = s.Split(' ')[1]; list.Add(cO); } CopyOwner result = list.Find( delegate(CopyOwner cO) { return(cO.file == message); } ); if (p.group.Permission >= LevelPermission.Operator || result.name == p.name) { if (File.Exists("extra/copy/" + message + ".copy")) { try { if (File.Exists("extra/copyBackup/" + message + ".copy")) { File.Delete("extra/copyBackup/" + message + ".copy"); } File.Move("extra/copy/" + message + ".copy", "extra/copyBackup/" + message + ".copy"); } catch { } Player.SendMessage(p, "File &f" + message + Server.DefaultColor + " has been deleted."); list.Remove(result); File.Delete("extra/copy/index.copydb"); StreamWriter sW = new StreamWriter(File.Create("extra/copy/index.copydb")); foreach (CopyOwner cO in list) { sW.WriteLine(cO.file + " " + cO.name); } sW.Flush(); sW.Close(); } else { Player.SendMessage(p, "Le fichier n'existe pas."); } } else { Player.SendMessage(p, "Vous devez etre op ou le proprietaire pour suprimer ce fichier."); return; } } else { Help(p); return; } } } catch (Exception e) { Server.ErrorLog(e); } }
public override void Use(Player p, string message) { if (p == null) { Player.SendMessage(p, "Impossible depuis la console ou l'irc"); return; } try { if (!File.Exists("extra/copy/index.copydb")) { Player.SendMessage(p, "Aucunes copie trouvee! Sauvegardez quelque chose avant d'essayer de le recuperer!"); return; } if (message == "") { Help(p); return; } if (message.Split(' ')[0] == "info") { if (message.IndexOf(' ') != -1) { message = message.Split(' ')[1]; if (File.Exists("extra/copy/" + message + ".copy")) { StreamReader sR = new StreamReader(File.OpenRead("extra/copy/" + message + ".copy")); string infoline = sR.ReadLine(); sR.Close(); sR.Dispose(); Player.SendMessage(p, infoline); return; } } else { Help(p); return; } } if (message.Split(' ')[0] == "find") { message = message.Replace("find", ""); string storedcopies = ""; int maxCopies = 0; int findnum = 0; int currentnum = 0; bool isint = int.TryParse(message, out findnum); if (message == "") { goto retrieve; } if (!isint) { message = message.Trim(); list.Clear(); foreach (string s in File.ReadAllLines("extra/copy/index.copydb")) { CopyOwner cO = new CopyOwner(); cO.file = s.Split(' ')[0]; cO.name = s.Split(' ')[1]; list.Add(cO); } List <CopyOwner> results = new List <CopyOwner>(); for (int i = 0; i < list.Count; i++) { if (list[i].name.ToLower() == message.ToLower()) { storedcopies += ", " + list[i].file; } } if (storedcopies == "") { Player.SendMessage(p, "Pas de copies sauvegardee pour : " + message); } else { Player.SendMessage(p, "Copies sauvegarde : "); Player.SendMessage(p, "&f " + storedcopies.Remove(0, 2)); } return; } // SEARCH BASED ON NAME STUFF ABOVE HERE if (isint) { maxCopies = findnum * 50; currentnum = maxCopies - 50; } retrieve : DirectoryInfo di = new DirectoryInfo("extra/copy/"); FileInfo[] fi = di.GetFiles("*.copy"); if (maxCopies == 0) { foreach (FileInfo file in fi) { storedcopies += ", " + file.Name.Replace(".copy", ""); } if (storedcopies != "") { Player.SendMessage(p, "Copies sauvegarde: "); Player.SendMessage(p, "&f " + storedcopies.Remove(0, 2)); if (fi.Length > 50) { Player.SendMessage(p, "Pour une liste plus structure, utilisez /retrieve find <1/2/3/...>"); } } else { Player.SendMessage(p, "Pas de copies sauvegardes."); } } else { if (maxCopies > fi.Length) { maxCopies = fi.Length; } if (currentnum > fi.Length) { Player.SendMessage(p, "Pas de copie sauvegarde pour le nombre " + fi.Length); return; } Player.SendMessage(p, "copies sauvegarde (" + currentnum + " sur " + maxCopies + "):"); for (int i = currentnum; i < maxCopies; i++) { storedcopies += ", " + fi[i].Name.Replace(".copy", ""); } if (storedcopies != "") { Player.SendMessage(p, "&f" + storedcopies.Remove(0, 2)); } else { Player.SendMessage(p, "Il n'y a pas de copie sauvegarde."); } } } else { if (message.IndexOf(' ') == -1) { message = message.Split(' ')[0]; if (File.Exists("extra/copy/" + message + ".copy")) { p.CopyBuffer.Clear(); bool readFirst = false; foreach (string s in File.ReadAllLines("extra/copy/" + message + ".copy")) { if (readFirst) { Player.CopyPos cP; cP.x = Convert.ToUInt16(s.Split(' ')[0]); cP.y = Convert.ToUInt16(s.Split(' ')[1]); cP.z = Convert.ToUInt16(s.Split(' ')[2]); cP.type = Convert.ToByte(s.Split(' ')[3]); p.CopyBuffer.Add(cP); } else { readFirst = true; } } Player.SendMessage(p, "&f" + message + Server.DefaultColor + " est place dans le buffer de copie. Collez le!"); } else { Player.SendMessage(p, "Impossible de trouver la copie"); return; } } else { Help(p); return; } } } catch (Exception e) { Player.SendMessage(p, "Erreur"); Server.ErrorLog(e); } }