Advertisement
Guest User

New admin commands

a guest
Sep 2nd, 2014
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 28.72 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using UnityEngine;
  6. using System.Reflection;
  7. using System.Timers;
  8. using Ini;
  9. using CommandHandler;
  10.  
  11. namespace Admin_Commands
  12. {
  13.  
  14.     public class AdminCommands : MonoBehaviour
  15.     {
  16.         #region TOP: global variables are initialised here
  17.  
  18.         int updater3 = 0;        
  19.         public string lastUsedCommand = "none";
  20.  
  21.         public Timer itemsTimer;
  22.         public Timer announceTimer;
  23.  
  24.         public int announceIndex = 0;
  25.         public int itemsResetIntervalInSeconds = 2700;
  26.         public int announceIntervalInSeconds = 600;
  27.         public String[] AnnounceMessages;
  28.  
  29.         public List<String> WhitelistedSteamIDs = new List<string>();
  30.         public bool usingWhitelist = false;
  31.  
  32.         public bool usingGUI = true;
  33.         public bool usePlayerHomes = false;
  34.  
  35.         public String bigAssStringWithBannedPlayerNamesAndSteamIDs = "";   //empty until player issues /unban command
  36.  
  37.         Dictionary<String, Vector3> playerHomes =  new Dictionary<String, Vector3>();        
  38.         BetterNetworkUser userToBeBanned;
  39.        
  40.         #endregion
  41.  
  42.         public void Start()
  43.         {
  44.             ReadConfigs();  //Read all the announcements, whitelist, player homes, ...
  45.  
  46.             CommandList.add(new Command(Online,"online"));
  47.             CommandList.add(new Command(Time, "time"));
  48.             CommandList.add(new Command(SetHome, "sethome"));
  49.             CommandList.add(new Command(Home, "home"));
  50.             CommandList.add(new Command(6, Announce, "repeat", "announce", "ann"));
  51.             CommandList.add(new Command(Ban, "ban"));
  52.             CommandList.add(new Command(ReasonForBan, "reason", "r"));
  53.             CommandList.add(new Command(ResetItems, "resetitems"));
  54.             CommandList.add(new Command(RepairVehicles, "repairvehicles"));
  55.             CommandList.add(new Command(RefuelVehicles, "refuelvehicles"));
  56.             CommandList.add(new Command(SirensOn, "sirens"));
  57.             CommandList.add(new Command(SirensOff, "sirensoff"));
  58.             CommandList.add(new Command(ResetZombies, "resetzombies"));
  59.             CommandList.add(new Command(Killzombies, "killzombies"));
  60.             CommandList.add(new Command(ReloadBans, "reloadbans"));
  61.             CommandList.add(new Command(SetItemsDelay, "setitemsdelay"));
  62.             CommandList.add(new Command(SetAnnounceDelay, "setannouncedelay"));
  63.             CommandList.add(new Command(EnableWhitelist, "enablewhitelist"));
  64.             CommandList.add(new Command(DisableWhitelist, "disablewhitelist"));
  65.             CommandList.add(new Command(Whitelist, "whitelist"));   //used for both /whitelist add & /whitelist remove
  66.             CommandList.add(new Command(UnBan, "unban"));
  67.             CommandList.add(new Command(TeleportToPlayer, "tp"));
  68.             CommandList.add(new Command(TeleportToMe, "tptome"));
  69.             CommandList.add(new Command(TeleportToCoords, "tpto"));
  70.             CommandList.add(new Command(TeleportAll, "tpall"));
  71.             CommandList.add(new Command(Kill, "kill"));
  72.             CommandList.add(new Command(Heal, "heal"));
  73.             CommandList.add(new Command(Promote, "promote"));
  74.             CommandList.add(new Command(ShowAdminCommands, "commands"));
  75.             CommandList.add(new Command(TeleportCar, "car"));
  76.             CommandList.add(new Command(SpawnItem, "i"));
  77.             CommandList.add(new Command(SpawnKit, "kit"));            
  78.            
  79.         }
  80.  
  81.  
  82.                                            
  83.         //Methods for each command :)
  84.  
  85.         private void Online(CommandArgs args)
  86.         {
  87.             Reference.Tell(args.sender.player, "There are " + UserList.NetworkUsers.Count + " players online.");
  88.         }
  89.  
  90.         private void Time(CommandArgs args)
  91.         {
  92.             NetworkChat.sendAlert("Time: " + Sun.getTime());
  93.         }
  94.  
  95.         private void SetHome(CommandArgs args)
  96.         {
  97.             if (usePlayerHomes)
  98.             {
  99.                 Vector3 location = NetworkUserList.getModelFromPlayer(args.sender.player).transform.position;
  100.                 setHome(args.sender.steamid, location);
  101.                 Reference.Tell(args.sender.player, "Home set.");
  102.             }
  103.         }
  104.  
  105.         private void Home(CommandArgs args)
  106.         {
  107.             if (usePlayerHomes)
  108.             {
  109.                 home(args.sender);
  110.                 Reference.Tell(args.sender.player, "Teleported home. Don't move for 5 seconds if you don't wanna get kicked");
  111.             }
  112.         }
  113.  
  114.         private void Announce(CommandArgs args)
  115.         {
  116.             //Make all the parameters into 1 big string
  117.             string concat = args.ParametersAsString;
  118.             NetworkChat.sendAlert(concat);            
  119.         }
  120.  
  121.         private void Ban(CommandArgs args)
  122.         {
  123.             String playerNameToBeBanned = args.ParametersAsString;
  124.             String tempBanName;
  125.  
  126.             if (playerNameToBeBanned.Length < 2)
  127.             {
  128.                 userToBeBanned = UserList.users[Convert.ToInt32(playerNameToBeBanned)];
  129.                 tempBanName = userToBeBanned.name;
  130.                 Reference.Tell(args.sender.player, "Reason for banning " + tempBanName + " ?  /reason <reason> to ban");
  131.             }
  132.             else
  133.             {
  134.                 userToBeBanned = UserList.getUserFromName(playerNameToBeBanned);
  135.                 tempBanName = userToBeBanned.name;
  136.                 Reference.Tell(args.sender.player, "Reason for banning " + tempBanName + " ?  /reason <reason> to ban");
  137.             }
  138.         }
  139.  
  140.         private void ReasonForBan(CommandArgs args)
  141.         {
  142.             String reason = args.ParametersAsString;
  143.             if (args.Parameters.Count > 0)
  144.                 Ban(userToBeBanned, reason);
  145.         }
  146.  
  147.  
  148.         private void ResetItems(CommandArgs args)
  149.         {
  150.             SpawnItems.reset();
  151.             NetworkChat.sendAlert(args.sender.name + " has respawned all items");
  152.         }
  153.  
  154.         private void RepairVehicles(CommandArgs args)
  155.         {
  156.             Vehicle[] vehicles = UnityEngine.Object.FindObjectsOfType(typeof(Vehicle)) as Vehicle[];
  157.             foreach (Vehicle vehicle in vehicles)
  158.             {
  159.                 vehicle.networkView.RPC("tellExploded", RPCMode.All, new object[] { false });
  160.                 vehicle.networkView.RPC("tellWrecked", RPCMode.All, new object[] { false });
  161.                 vehicle.heal(1000);
  162.             }
  163.             NetworkChat.sendAlert(args.sender.name + " has repaired " + vehicles.Length + " vehicles");
  164.         }
  165.  
  166.         private void RefuelVehicles(CommandArgs args)
  167.         {
  168.             Vehicle[] vehicles = UnityEngine.Object.FindObjectsOfType(typeof(Vehicle)) as Vehicle[];
  169.             foreach (Vehicle vehicle in vehicles)
  170.             {
  171.                 vehicle.fill(1000);
  172.             }
  173.             NetworkChat.sendAlert(args.sender.name + " has refueled " + vehicles.Length + " vehicles");
  174.         }
  175.  
  176.         private void SirensOn(CommandArgs args)
  177.         {
  178.             Vehicle[] vehicles = UnityEngine.Object.FindObjectsOfType(typeof(Vehicle)) as Vehicle[];
  179.             foreach (Vehicle vehicle in vehicles)
  180.             {
  181.                 vehicle.networkView.RPC("tellSirens", RPCMode.All, new object[] { true });
  182.             }
  183.         }
  184.  
  185.         private void SirensOff(CommandArgs args)
  186.         {
  187.             Vehicle[] vehicles = UnityEngine.Object.FindObjectsOfType(typeof(Vehicle)) as Vehicle[];
  188.             foreach (Vehicle vehicle in vehicles)
  189.             {
  190.                 vehicle.networkView.RPC("tellSirens", RPCMode.All, new object[] { false });
  191.             }
  192.         }
  193.  
  194.         private void ResetZombies(CommandArgs args)
  195.         {
  196.             SpawnAnimals.reset();
  197.             NetworkChat.sendAlert(args.sender.name + " has respawned all zombies");
  198.         }
  199.  
  200.         private void Killzombies(CommandArgs args)
  201.         {
  202.             Zombie[] Zombies = UnityEngine.Object.FindObjectsOfType(typeof(Zombie)) as Zombie[];
  203.             foreach (Zombie Zombie in Zombies)
  204.             {
  205.                 Zombie.damage(500);
  206.             }
  207.             NetworkChat.sendAlert(args.sender.name + " has killed " + Zombies.Length + " zombies");
  208.         }
  209.  
  210.  
  211.         private void ReloadBans(CommandArgs args)
  212.         {
  213.             NetworkBans.load();
  214.         }
  215.  
  216.         private void SetItemsDelay(CommandArgs args)
  217.         {
  218.             String seconds = args.Parameters[0];
  219.             setItemResetIntervalInSeconds(Convert.ToInt32(seconds));
  220.         }
  221.  
  222.         private void SetAnnounceDelay(CommandArgs args)
  223.         {
  224.             String seconds = args.Parameters[0];
  225.             setAnnounceIntervalInSeconds(Convert.ToInt32(seconds));
  226.         }
  227.  
  228.         private void EnableWhitelist(CommandArgs args)
  229.         {
  230.             usingWhitelist = true;
  231.             NetworkChat.sendAlert("Whitelist enabled.");
  232.         }
  233.  
  234.         private void DisableWhitelist(CommandArgs args)
  235.         {
  236.             usingWhitelist = false;
  237.             NetworkChat.sendAlert("Whitelist disabled.");
  238.         }
  239.  
  240.         private void Whitelist(CommandArgs args)
  241.         {
  242.             if (args.Parameters[0].Equals("add"))
  243.             {
  244.                 args.Parameters.RemoveAt(0);
  245.  
  246.                 String name = args.ParametersAsString;
  247.                 String steamid = UserList.getUserFromName(name).steamid;
  248.  
  249.                 System.IO.StreamWriter file = new StreamWriter("Unturned_Data/Managed/mods/AdminCommands/UnturnedWhitelist.txt", true);
  250.                 file.WriteLine("");
  251.                 file.WriteLine(steamid);
  252.                 file.Close();
  253.                 WhitelistedSteamIDs.Add(steamid);
  254.             }
  255.             else if (args.Parameters[0].Equals("remove") || args.Parameters[0].Equals("del") || args.Parameters[0].Equals("rem"))
  256.             {
  257.                 args.Parameters.RemoveAt(0);
  258.  
  259.                 String name = args.ParametersAsString;
  260.                 String steamid = UserList.getUserFromName(name).steamid;
  261.  
  262.                 WhitelistedSteamIDs.Remove(steamid);
  263.  
  264.                 File.Delete("Unturned_Data/Managed/mods/AdminCommands/UnturnedWhitelist.txt");
  265.                 System.IO.StreamWriter file = new StreamWriter("Unturned_Data/Managed/mods/AdminCommands/UnturnedWhitelist.txt", true);
  266.                 for (int i = 0; i < WhitelistedSteamIDs.Count; i++)
  267.                 {
  268.                     file.WriteLine(WhitelistedSteamIDs[i]);
  269.                 }
  270.                 file.Close();                
  271.             }
  272.         }
  273.        
  274.         private void UnBan(CommandArgs args)
  275.         {
  276.             String name = args.ParametersAsString;
  277.             unban(name);
  278.         }
  279.  
  280.  
  281.         private void TeleportToPlayer(CommandArgs args)
  282.         {
  283.             String name = args.ParametersAsString;
  284.             BetterNetworkUser UserToTeleportTo;
  285.  
  286.             if (name.Length < 2)
  287.             {
  288.                 UserToTeleportTo = UserList.users[Convert.ToInt32(name)];
  289.             }
  290.             else
  291.             {
  292.                 UserToTeleportTo = UserList.getUserFromName(name);
  293.             }
  294.             args.sender.model.transform.position = UserToTeleportTo.model.transform.position;
  295.             args.sender.model.GetComponent<Life>().networkView.RPC("tellStatePosition", RPCMode.All, new object[] { UserToTeleportTo.model.transform.position, UserToTeleportTo.model.transform.rotation });
  296.         }
  297.  
  298.         private void TeleportToMe(CommandArgs args)
  299.         {
  300.             String name = args.ParametersAsString;
  301.             BetterNetworkUser UserToTeleportToMe;
  302.  
  303.             if (name.Length < 2)
  304.             {
  305.                 UserToTeleportToMe = UserList.users[Convert.ToInt32(name)];
  306.             }
  307.             else
  308.             {
  309.                 UserToTeleportToMe = UserList.getUserFromName(name);
  310.             }
  311.             UserToTeleportToMe.model.transform.position = args.sender.model.transform.position;
  312.             UserToTeleportToMe.model.GetComponent<Life>().networkView.RPC("tellStatePosition", RPCMode.All, new object[] { args.sender.model.transform.position, args.sender.model.transform.rotation });
  313.         }
  314.  
  315.         private void TeleportToCoords(CommandArgs args)
  316.         {
  317.             Quaternion rotation = args.sender.model.transform.rotation;
  318.             float x = float.Parse(args.Parameters[0]);
  319.             float y = float.Parse(args.Parameters[1]);
  320.             float z = float.Parse(args.Parameters[2]);
  321.             args.sender.model.GetComponent<Life>().networkView.RPC("tellStatePosition", RPCMode.All, new object[] { new Vector3(x, y, z), rotation });
  322.         }
  323.  
  324.         private void TeleportAll(CommandArgs args)
  325.         {
  326.             Vector3 location = args.sender.model.transform.position;
  327.             Quaternion rotation = args.sender.model.transform.rotation;
  328.  
  329.             foreach (BetterNetworkUser user in UserList.users)
  330.             {
  331.                 user.model.transform.position = location;
  332.                 user.model.GetComponent<Life>().networkView.RPC("tellStatePosition", RPCMode.All, new object[] { location, rotation });
  333.             }
  334.         }
  335.  
  336.         private void Kill(CommandArgs args)
  337.         {
  338.             String naam = args.ParametersAsString;
  339.             UserList.getUserFromName(naam).model.GetComponent<Life>().damage(500, "You died of retardedness");
  340.         }
  341.  
  342.         private void Heal(CommandArgs args)
  343.         {
  344.             if (args.Parameters.Count == 0)
  345.                 args.sender.model.GetComponent<Life>().heal(100, true, true);
  346.             else
  347.             {
  348.                 String naam = args.ParametersAsString;
  349.                 UserList.getUserFromName(naam).model.GetComponent<Life>().heal(100, true, true);
  350.             }
  351.         }
  352.  
  353.         private void Promote(CommandArgs args)
  354.         {
  355.             String naam = args.ParametersAsString;
  356.             BetterNetworkUser user = UserList.getUserFromName(naam);
  357.  
  358.             UserList.promote(user.steamid);
  359.  
  360.             Reference.Tell(args.sender.player, naam + " has been promoted to level " + UserList.getPermission(user.steamid));
  361.             Reference.Tell(user.player, "You have been promoted to level " + UserList.getPermission(user.steamid));
  362.         }
  363.        
  364.         private void ShowAdminCommands(CommandArgs args)
  365.         {
  366.             String string1 = " /ban, /kick, /repeat, /reason, /resetitems, /repairvehicles, /refuelvehicles";
  367.             String string2 = " /resetzombies, /killzombies, /kill, /setitemsdelay, /enablewhitelist";
  368.             String string3 = " /disablewhitelist, /whitelist add & remove, /unban, /reloadCommands, ";
  369.             String string4 = " /tptome <playername>, /promote, /online, /heal, /tp, /tpto <x> <y> <z>";
  370.             String string5 = " /i <itemid> <amount>, /car, /kit /sethome, /home  (if enabled)";
  371.  
  372.             Reference.Tell(args.sender.player, string1);
  373.             Reference.Tell(args.sender.player, string2);
  374.             Reference.Tell(args.sender.player, string3);
  375.             Reference.Tell(args.sender.player, string4);
  376.             Reference.Tell(args.sender.player, string5);
  377.         }
  378.  
  379.         private void TeleportCar(CommandArgs args)
  380.         {
  381.             Vector3 location = args.sender.model.transform.position;
  382.             Quaternion rotation = args.sender.model.transform.rotation;
  383.  
  384.             Vehicle[] mapVehicles = UnityEngine.Object.FindObjectsOfType(typeof(Vehicle)) as Vehicle[];
  385.  
  386.             int random = UnityEngine.Random.Range(0, mapVehicles.Length);
  387.             Vehicle randomVehicle = mapVehicles[random];
  388.  
  389.             Vector3 newPos = new Vector3(location[0] + 5, location[1] + 50, location[2]);
  390.  
  391.             randomVehicle.updatePosition(newPos, rotation);
  392.             randomVehicle.transform.position = newPos;
  393.         }
  394.  
  395.         private void SpawnItem(CommandArgs args)
  396.         {
  397.             int itemid = Convert.ToInt32(args.Parameters[0]);
  398.             int amount = 1;
  399.             if (args.Parameters.Count == 2)
  400.             {
  401.                 amount = Convert.ToInt32(args.Parameters[1]);
  402.             }
  403.  
  404.             Vector3 location = args.sender.model.transform.position;
  405.  
  406.             for (int i = 0; i < amount; i++)
  407.                 SpawnItems.spawnItem(itemid, 1, location);
  408.  
  409.         }
  410.  
  411.         private void SpawnKit(CommandArgs args)
  412.         {
  413.             int[] itemids = new int[] { 0x7d4, 0x1b60, 0x2ee0, 0x232c, 0x2711, 0x2afb, 0x465e, 0x465e, 0x465e, 0x465e, 0x465e, 0x465e, 0x465e, 0xfb1, 0x1399, 11, 0x32c8, 0x32c8, 0x36c6, 0x36c6, 0x1f4f, 0x1f4d, 0xbba };
  414.             Vector3 location = args.sender.model.transform.position;
  415.  
  416.             foreach (int itemid in itemids)
  417.                 SpawnItems.spawnItem(itemid, 1, location);
  418.  
  419.         }
  420.  
  421.  
  422.  
  423.         // HELPER METHODS :D
  424.  
  425.         #region Helper Methods:  Used by the main command methods to handle some stuff...
  426.  
  427.         private void Ban(BetterNetworkUser userToBeBanned, string reason)
  428.         {
  429.             NetworkTools.ban(userToBeBanned.player, userToBeBanned.name, userToBeBanned.steamid, reason);
  430.         }
  431.  
  432.         public void announcesTimeElapsed(object sender, ElapsedEventArgs e)
  433.         {
  434.             announceNext();
  435.         }
  436.  
  437.  
  438.         private void announceNext()
  439.         {
  440.             for (int i = announceIndex; i < AnnounceMessages.Length; i++)
  441.             {
  442.                 string message = AnnounceMessages[i];
  443.                 if (message.Equals(":"))
  444.                 {
  445.                     announceIndex = i + 1;
  446.                     return;
  447.                 }
  448.                 else
  449.                 {
  450.                     NetworkChat.sendAlert(message);
  451.                 }
  452.             }
  453.             announceIndex = 0;
  454.         }
  455.  
  456.         public void setAnnounceIntervalInSeconds(int seconds)
  457.         {
  458.             announceIntervalInSeconds = seconds;
  459.             announceTimer.Stop();
  460.             announceTimer.Interval = seconds * 1000;
  461.             announceTimer.Start();
  462.         }
  463.  
  464.         private void itemsTimeElapsed(object sender, ElapsedEventArgs e)
  465.         {
  466.             resetItems();
  467.         }
  468.  
  469.         public void setItemResetIntervalInSeconds(int seconds)
  470.         {
  471.             itemsResetIntervalInSeconds = seconds;
  472.             itemsTimer.Stop();
  473.             itemsTimer.Interval = seconds * 1000;
  474.             itemsTimer.Start();
  475.         }
  476.  
  477.         public void resetItems()
  478.         {
  479.             SpawnItems.reset();
  480.         }
  481.  
  482.  
  483.  
  484.         private static System.Random random = new System.Random((int)DateTime.Now.Ticks);//thanks to McAden
  485.         private string RandomString(int size)
  486.         {
  487.             StringBuilder builder = new StringBuilder();
  488.             char ch;
  489.             for (int i = 0; i < size; i++)
  490.             {
  491.                 ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
  492.                 builder.Append(ch);
  493.             }
  494.  
  495.             return builder.ToString();
  496.         }
  497.  
  498.  
  499.        
  500.         private void Log(string p)
  501.         {
  502.             System.IO.StreamWriter file = new StreamWriter("Unturned_Data/Managed/mods/AdminCommands_Log.txt", true);
  503.             file.WriteLine(p);
  504.  
  505.             file.Close();
  506.         }
  507.        
  508.  
  509.         private void kickNonWhitelistedPlayers()
  510.         {
  511.             if (usingWhitelist && updater3 <= 1)
  512.             {
  513.                 foreach (BetterNetworkUser user in UserList.users)
  514.                 {
  515.                     if (!WhitelistedSteamIDs.Contains(user.steamid))
  516.                     {
  517.                         KICK(user.name, "You are not whitelisted on this server!");
  518.                     }
  519.                 }
  520.                 this.updater3 = 100;
  521.             }
  522.         }
  523.  
  524.         public void loadBans()
  525.         {
  526.             bigAssStringWithBannedPlayerNamesAndSteamIDs = PlayerPrefs.GetString("bans");
  527.         }
  528.  
  529.  
  530.         public void saveBans()
  531.         {
  532.             PlayerPrefs.SetString("bans", bigAssStringWithBannedPlayerNamesAndSteamIDs);
  533.         }
  534.  
  535.         public void unban(String name)
  536.         {
  537.             loadBans();
  538.             string bannedppl = bigAssStringWithBannedPlayerNamesAndSteamIDs;
  539.  
  540.             if (bannedppl.Contains(name))
  541.             {
  542.                 int startIndex = bannedppl.IndexOf(name);
  543.                 int length = name.Length + 1 + 17 + 2;
  544.  
  545.                 String temp1 = bannedppl.Substring(0, startIndex);
  546.                 String temp2 = bannedppl.Substring(startIndex + length);
  547.                 bannedppl = temp1 + temp2;
  548.             }
  549.  
  550.             bigAssStringWithBannedPlayerNamesAndSteamIDs = bannedppl;
  551.             saveBans();
  552.             NetworkBans.load();
  553.         }
  554.  
  555.  
  556.  
  557.         void KICK(String name, String reason)
  558.         {
  559.             Player[] players = GameObject.FindObjectsOfType<Player>();
  560.             foreach (Player p in players)
  561.             {
  562.                 if (p.name.Equals(name))
  563.                 {
  564.                     NetworkPlayer np = p.networkView.owner;
  565.                     NetworkTools.kick(np, reason);
  566.                     return;
  567.                 }
  568.             }
  569.         }
  570.  
  571.  
  572.  
  573.         private void setHome(string steamID, Vector3 location)
  574.         {
  575.             if (playerHomes.ContainsKey(steamID))
  576.             {
  577.                 string[] lines = System.IO.File.ReadAllLines(@"Unturned_Data/Managed/mods/AdminCommands/PlayerHomes.txt");
  578.                 File.Delete("Unturned_Data/Managed/mods/AdminCommands/PlayerHomes.txt");
  579.  
  580.                 System.IO.StreamWriter file = new StreamWriter("Unturned_Data/Managed/mods/AdminCommands/PlayerHomes.txt", true);
  581.  
  582.  
  583.                 for (int i = 0; i < lines.Length; i++)
  584.                 {
  585.                     if (!lines[i].StartsWith(steamID))
  586.                     {
  587.                         file.WriteLine(lines[i]);
  588.                     }
  589.  
  590.                 }
  591.                 file.Close();
  592.             }
  593.             System.IO.StreamWriter file2 = new StreamWriter("Unturned_Data/Managed/mods/AdminCommands/PlayerHomes.txt", true);
  594.             file2.WriteLine(steamID + ":" + location.x + "," + location.y + "," + location.z);
  595.             file2.Close();
  596.             playerHomes[steamID] = location;
  597.         }
  598.  
  599.         private void home(BetterNetworkUser user)
  600.         {
  601.             user.model.GetComponent<Life>().networkView.RPC("tellStatePosition", RPCMode.All, new object[] { playerHomes[user.steamid], user.model.transform.rotation });
  602.         }
  603.  
  604.         #endregion
  605.  
  606.  
  607.         public void Update()
  608.         {
  609.             kickNonWhitelistedPlayers();
  610.         }
  611.      
  612.  
  613.  
  614.         public void OnGUI()
  615.         {
  616.             if (usingGUI)
  617.             {
  618.                 GUI.BeginGroup(new Rect(50, 100, 600, 70));
  619.                 GUI.Box(new Rect(0, 0, 530, 400), "Admin Commands v2 running! Last command used: " + lastUsedCommand);
  620.                 GUI.EndGroup();
  621.             }
  622.  
  623.         }
  624.  
  625.         #region Readconfig: Reads in all the configs at the start
  626.  
  627.         private void ReadConfigs()
  628.         {
  629.             Directory.CreateDirectory("Unturned_Data/Managed/mods/AdminCommands");
  630.  
  631.  
  632.             if (!File.Exists("Unturned_Data/Managed/mods/AdminCommands/config.ini"))  //create config file
  633.             {
  634.                 IniFile tempIni = new IniFile("Unturned_Data/Managed/mods/AdminCommands/config.ini");
  635.  
  636.                 tempIni.IniWriteValue("Config", "Using Whitelist", "false");
  637.                 tempIni.IniWriteValue("Config", "Using Player Homes", "false");
  638.                 tempIni.IniWriteValue("Config", "Show gui", "true");
  639.                 tempIni.IniWriteValue("Security", "Using_console", "true");
  640.                 tempIni.IniWriteValue("Security", "Console_password", RandomString(8));
  641.                 tempIni.IniWriteValue("Security", "Require_command_confirmation", "false");
  642.  
  643.                 tempIni.IniWriteValue("Timers", "Time between item respawns in seconds", "2700");
  644.                 tempIni.IniWriteValue("Timers", "Time between announces in seconds", "600");
  645.             }
  646.  
  647.             IniFile ini = new IniFile("Unturned_Data/Managed/mods/AdminCommands/config.ini");
  648.  
  649.             //things that need to be added to existing files
  650.             if (ini.IniReadValue("Security", "Using_console").Equals(""))
  651.             {
  652.                 ini.IniWriteValue("Security", "Using_console", "true");
  653.             }
  654.             if (ini.IniReadValue("Security", "Console_password").Equals(""))
  655.             {
  656.                 ini.IniWriteValue("Security", "Console_password", RandomString(8));
  657.             }
  658.             if (ini.IniReadValue("Security", "Require_command_confirmation").Equals(""))
  659.             {
  660.                 ini.IniWriteValue("Security", "Require_command_confirmation", "false");
  661.             }
  662.  
  663.  
  664.             usingWhitelist = Boolean.Parse(ini.IniReadValue("Config", "Using Whitelist"));
  665.             usingGUI = Boolean.Parse(ini.IniReadValue("Config", "Show gui"));
  666.             usePlayerHomes = Boolean.Parse(ini.IniReadValue("Config", "Using Player Homes"));
  667.  
  668.  
  669.             itemsResetIntervalInSeconds = Int32.Parse(ini.IniReadValue("Timers", "Time between item respawns in seconds"));
  670.             announceIntervalInSeconds = Int32.Parse(ini.IniReadValue("Timers", "Time between announces in seconds"));
  671.  
  672.  
  673.            
  674.             //WHITELIST
  675.             if (!File.Exists("Unturned_Data/Managed/mods/AdminCommands/UnturnedWhitelist.txt"))  //create a template for whitelist
  676.             {
  677.                 System.IO.StreamWriter file = new StreamWriter("Unturned_Data/Managed/mods/AdminCommands/UnturnedWhitelist.txt", true);
  678.                 file.WriteLine("Nessin");
  679.                 file.WriteLine("Some other player");
  680.                 file.Close();
  681.             }
  682.  
  683.             string[] whitelistedLines = System.IO.File.ReadAllLines(@"Unturned_Data/Managed/mods/AdminCommands/UnturnedWhitelist.txt");
  684.  
  685.             for (int i = 0; i < whitelistedLines.Length; i++)
  686.             {
  687.                 if (whitelistedLines[i].Length > 10)
  688.                 {
  689.                     WhitelistedSteamIDs.Add(whitelistedLines[i]);
  690.                 }
  691.             }
  692.  
  693.             //PLAYER HOMES
  694.             if (!File.Exists("Unturned_Data/Managed/mods/AdminCommands/playerHomes.txt"))  //create a template for playerHomes
  695.             {
  696.                 System.IO.StreamWriter file = new StreamWriter("Unturned_Data/Managed/mods/AdminCommands/playerHomes.txt", true);
  697.                 file.WriteLine("");
  698.                 file.Close();
  699.             }
  700.  
  701.  
  702.             string[] tempHomes = System.IO.File.ReadAllLines(@"Unturned_Data/Managed/mods/AdminCommands/playerHomes.txt");
  703.             for (int i = 0; i < tempHomes.Length; i++)
  704.             {
  705.                 if (tempHomes[i].Length > 5)
  706.                 {
  707.                     String id = tempHomes[i].Split(':')[0];
  708.                     String location = tempHomes[i].Split(':')[1];
  709.  
  710.                     String x = location.Split(',')[0];
  711.                     String y = location.Split(',')[1];
  712.                     String z = location.Split(',')[2];
  713.  
  714.                     Vector3 loc = new Vector3(Convert.ToSingle(x), Convert.ToSingle(y), Convert.ToSingle(z));
  715.  
  716.                     playerHomes[id] = loc;
  717.                 }
  718.  
  719.             }
  720.  
  721.             //ANNOUNCEMENTS
  722.             if (!File.Exists("Unturned_Data/Managed/mods/AdminCommands/UnturnedAnnounces.txt"))  //create a template for announcements
  723.             {
  724.                 System.IO.StreamWriter file = new StreamWriter("Unturned_Data/Managed/mods/AdminCommands/UnturnedAnnounces.txt", true);
  725.                 file.WriteLine("This line will be announced 10 minutes after injecting (or whatever you change the interval to)");
  726.                 file.WriteLine("This line will be announced at the same time");
  727.                 file.WriteLine(":");
  728.                 file.WriteLine("This line will be announced 20 minutes after injecting  (2x interval)");
  729.                 file.WriteLine(":");
  730.                 file.WriteLine(":");
  731.                 file.WriteLine("This line will be announced 40 minutes after injecting  (4x interval)");
  732.                 file.WriteLine("And so forth.. then it will go back to the 1st line      (4x interval)");
  733.                 file.Close();
  734.             }
  735.             string[] announces = System.IO.File.ReadAllLines(@"Unturned_Data/Managed/mods/AdminCommands/UnturnedAnnounces.txt");
  736.             AnnounceMessages = new String[announces.Length];
  737.             for (int i = 0; i < announces.Length; i++)
  738.             {
  739.                 AnnounceMessages[i] = announces[i];
  740.             }
  741.  
  742.  
  743.             itemsTimer = new Timer(itemsResetIntervalInSeconds * 1000);
  744.             itemsTimer.Elapsed += new ElapsedEventHandler(this.itemsTimeElapsed);
  745.             itemsTimer.Enabled = true;
  746.  
  747.             announceTimer = new Timer(announceIntervalInSeconds * 1000);
  748.             announceTimer.Elapsed += new ElapsedEventHandler(this.announcesTimeElapsed);
  749.             announceTimer.Enabled = true;
  750.  
  751.         }
  752.  
  753.         #endregion
  754.  
  755.     }
  756.  
  757. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement