Advertisement
Spectrewiz

SmarterFingers

Apr 30th, 2012
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.92 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Reflection;
  6. using System.ComponentModel;
  7. using Terraria;
  8. using TShockAPI;
  9. using Hooks;
  10.  
  11. namespace Butterfingers
  12. {
  13.     [APIVersion(1, 11)]
  14.     public class Butterfingers : TerrariaPlugin
  15.     {
  16.         Random rnd = new Random();
  17.         public static List<Player> Players = new List<Player>();
  18.  
  19.         public override Version Version
  20.         {
  21.             get { return new Version(0, 9, 0); }
  22.         }
  23.  
  24.         public override string Name
  25.         {
  26.             get { return "SmarterFingers"; }
  27.         }
  28.  
  29.         public override string Author
  30.         {
  31.             get { return "Based on Erik's Butterfingers by Spectrewiz"; }
  32.         }
  33.  
  34.         public override string Description
  35.         {
  36.             get { return ""; }
  37.         }
  38.  
  39.         public Butterfingers(Main game)
  40.             : base(game)
  41.         {
  42.             Order = -1;
  43.         }
  44.  
  45.         public override void Initialize()
  46.         {
  47.             GameHooks.Update += OnUpdate;
  48.             NetHooks.GreetPlayer += OnGreetPlayer;
  49.             ServerHooks.Chat += OnChat;
  50.         }
  51.  
  52.         protected override void Dispose(bool disposing)
  53.         {
  54.             if (disposing)
  55.             {
  56.                 GameHooks.Update -= OnUpdate;
  57.                 NetHooks.GreetPlayer -= OnGreetPlayer;
  58.                 ServerHooks.Chat -= OnChat;
  59.             }
  60.  
  61.             base.Dispose(disposing);
  62.         }
  63.  
  64.         private void OnUpdate()
  65.         {
  66.             Load();
  67.         }
  68.  
  69.         public static string randomString(params string[] args)
  70.         {
  71.             Random rnd = new Random();
  72.             return args[rnd.Next(args.Length + 1)];
  73.         }
  74.  
  75.         public static void Load()
  76.         {
  77.             Commands.ChatCommands.Add(new Command("smartize", Smartize, "smartize"));
  78.         }
  79.  
  80.         public void OnGreetPlayer(int ply, HandledEventArgs e)
  81.         {
  82.             lock (Players)
  83.                 Players.Add(new Player(ply));
  84.         }
  85.  
  86.         public class Player
  87.         {
  88.             public int Index { get; set; }
  89.             public TSPlayer TSPlayer { get { return TShock.Players[Index]; } }
  90.             public bool smartized { get; set; }
  91.             public Player(int index)
  92.             {
  93.                 Index = index;
  94.                 smartized = false;
  95.             }
  96.         }
  97.  
  98.         private static int GetPlayerIndex(int ply)
  99.         {
  100.             lock (Players)
  101.             {
  102.                 int index = -1;
  103.                 for (int i = 0; i < Players.Count; i++)
  104.                 {
  105.                     if (Players[i].Index == ply)
  106.                         index = i;
  107.                 }
  108.                 return index;
  109.             }
  110.         }
  111.  
  112.         public static TSPlayer GetTSPlayerByIndex(int index)
  113.         {
  114.             foreach (TSPlayer player in TShock.Players)
  115.             {
  116.                 if (player != null && player.Index == index)
  117.                     return player;
  118.             }
  119.             return null;
  120.         }
  121.  
  122.         public static void Smartize(CommandArgs args)
  123.         {
  124.             if (args.Parameters.Count < 1)
  125.             {
  126.                 args.Player.SendMessage("Invalid syntax! Syntax: /smartize <player>", Color.Red);
  127.                 return;
  128.             }
  129.             var foundplr = TShock.Utils.FindPlayer(args.Parameters[0]);
  130.             if (foundplr.Count == 0)
  131.             {
  132.                 args.Player.SendMessage("Invalid player!", Color.Red);
  133.                 return;
  134.             }
  135.             else if (foundplr.Count > 1)
  136.             {
  137.                 args.Player.SendMessage(string.Format("More than one ({0}) player matched!", args.Parameters.Count), Color.Red);
  138.                 return;
  139.             }
  140.             var plr = foundplr[0];
  141.             if (Players[GetPlayerIndex(plr.Index)].smartized)
  142.             {
  143.                 Players[GetPlayerIndex(plr.Index)].smartized = false;
  144.                 args.Player.SendMessage("Player is no longer smart (uh oh).", 30, 144, 255);
  145.                 return;
  146.             }
  147.             else
  148.             {
  149.                 Players[GetPlayerIndex(plr.Index)].smartized = true;
  150.                 args.Player.SendMessage("Smartized " + plr.Name + "!", 30, 144, 255);
  151.                 return;
  152.             }
  153.         }
  154.  
  155.         public string finder(string originalText, string replacementText)
  156.         {
  157.             string text2 = replacementText;
  158.             try
  159.             {
  160.                 foreach (char var in originalText)
  161.                 {
  162.                     if (var == ',')
  163.                         text2 = replacementText + ',';
  164.                     else if (var == '.')
  165.                         text2 = replacementText + '.';
  166.                     else if (var == '?')
  167.                         text2 = replacementText + '?';
  168.                     else if (var == '!')
  169.                         text2 = replacementText + '!';
  170.                 }
  171.             }
  172.             catch (Exception e) { Log.Error(e.Message); }
  173.             return text2;
  174.         }
  175.  
  176.         public void OnChat(messageBuffer msg, int ply, string text, HandledEventArgs e)
  177.         {
  178.             char[] text2 = text.ToCharArray();
  179.             if (text2[0] == '/')
  180.             {
  181.                 return;
  182.             }
  183.             TSPlayer player = GetTSPlayerByIndex(ply);
  184.  
  185.             if (Players[GetPlayerIndex(ply)].smartized)
  186.             {
  187.                 string[] words = text.ToLower().Split(' ');
  188.                 for (int i = 0; i < words.Length; i++)
  189.                 {
  190.                     if (finder(words[i], "hullo") == words[i] || finder(words[i], "ello") == words[i] || finder(words[i], "hallo") == words[i] || finder(words[i], "halo") == words[i] || finder(words[i], "hai") == words[i])
  191.                     {
  192.                         words[i] = finder(words[i], randomString("hi", "greetings", "hello"));
  193.                     }
  194.  
  195.                     if (finder(words[i], "ur") == words[i] || finder(words[i], "yur") == words[i] || finder(words[i], "yer") == words[i] || finder(words[i], "er") == words[i] || finder(words[i], "u") == words[i] || finder(words[i], "you'r") == words[i])
  196.                     {
  197.                         if (words.Length - 1 > i && (words[i + 1] == "are" || words[i + 1] == "r"))
  198.                         {
  199.                             words[i] = finder(words[i], "your");
  200.                         }
  201.                         else
  202.                         {
  203.                             words[i] = finder(words[i], "you");
  204.                         }
  205.                     }
  206.  
  207.                     if (finder(words[i], "em") == words[i])
  208.                         words[i] = finder(words[i], "am");
  209.  
  210.                     if (finder(words[i], "y") == words[i] || finder(words[i], "wy") == words[i] || finder(words[i], "wai") == words[i])
  211.                         words[i] = finder(words[i], "why");
  212.  
  213.                     if (finder(words[i], "putter") == words[i] || finder(words[i], "pooter") == words[i] || finder(words[i], "comp") == words[i] || finder(words[i], "comptooter") == words[i] || finder(words[i], "macintosh") == words[i])
  214.                         words[i] = finder(words[i], "computer");
  215.  
  216.                     if (finder(words[i], "hw") == words[i])
  217.                     {
  218.                         if (words.Length - 1 > i && (words[i + 1] == "?" || words[i + 1] == "are" || words[i + 1] == "can" || words[i + 1] == "r"))
  219.                             words[i] = finder(words[i], "how");
  220.                         else
  221.                             words[i] = finder(words[i], "homework");
  222.                     }
  223.  
  224.                     if (finder(words[i], "r") == words[i])
  225.                         words[i] = finder(words[i], "are");
  226.  
  227.                     if (finder(words[i], "teh") == words[i] || finder(words[i], "tuh") == words[i] || finder(words[i], "duh") == words[i] || finder(words[i], "d") == words[i] || finder(words[i], "de") == words[i])
  228.                         words[i] = finder(words[i], "the");
  229.  
  230.                     if (finder(words[i], "donot") == words[i] || finder(words[i], "dont") == words[i] || finder(words[i], "dnt") == words[i])
  231.                         words[i] = finder(words[i], "don't");
  232.  
  233.                     if (finder(words[i], "do") == words[i])
  234.                         if (words.Length - 1 > i && words[i + 1] == "not")
  235.                         {
  236.                             words[i + 1] = "";
  237.                             words[i] = finder(words[i], "don't");
  238.                         }
  239.  
  240.                     if (finder(words[i], "yea") == words[i] || finder(words[i], "yep") == words[i] || finder(words[i], "yeh") == words[i] || finder(words[i], "yuh") == words[i] || finder(words[i], "yah") == words[i] || finder(words[i], "ya") == words[i])
  241.                         words[i] = finder(words[i], "yes");
  242.  
  243.                     if (finder(words[i], "wut") == words[i] || finder(words[i], "whut") == words[i] || finder(words[i], "wat") == words[i] || finder(words[i], "wt") == words[i])
  244.                         words[i] = finder(words[i], "what");
  245.                     if (finder(words[i], "wuts") == words[i] || finder(words[i], "whuts") == words[i] || finder(words[i], "wats") == words[i] || finder(words[i], "wts") == words[i])
  246.                         words[i] = finder(words[i], "what's");
  247.  
  248.                     if (finder(words[i], "dis") == words[i])
  249.                         words[i] = finder(words[i], "this");
  250.  
  251.                     if (finder(words[i], "meh") == words[i])
  252.                         words[i] = finder(words[i], "me");
  253.                 }
  254.                 string textR = string.Join(" ", words);
  255.                 TShock.Utils.Broadcast(
  256.                     string.Format(TShock.Config.ChatFormat, player.Group.Name, player.Group.Prefix, player.Name, player.Group.Suffix, textR),
  257.                     player.Group.R, player.Group.G, player.Group.B);
  258.                 e.Handled = true;
  259.                 return;
  260.             }
  261.         }
  262.     }
  263. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement