Advertisement
Guest User

Untitled

a guest
Oct 20th, 2013
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 36.36 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Reflection;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Threading;
  7. using Terraria;
  8. using TerrariaApi.Server;
  9. using TShockAPI;
  10. using TShockAPI.DB;
  11. using System.ComponentModel;
  12.  
  13. namespace JailPrison
  14. {
  15. [ApiVersion(1, 14)]
  16. public class Jail : TerrariaPlugin
  17. {
  18. public static JPConfigFile JPConfig { get; set; }
  19. public Player[] Players { get; set; }
  20. internal static string JPConfigPath { get { return Path.Combine(TShock.SavePath, "jpconfig.json"); } }
  21.  
  22. public override string Name
  23. {
  24. get { return "Jail, Prison, AFK, Chest & Kill Rooms, Cmd Limits"; }
  25. }
  26. public override string Author
  27. {
  28. get { return "Created by DarkunderdoG"; }
  29. }
  30. public override string Description
  31. {
  32. get { return "Jail & Prison Plugin"; }
  33. }
  34. public override Version Version
  35. {
  36. get { return Assembly.GetExecutingAssembly().GetName().Version; }
  37. }
  38.  
  39. public override void Initialize()
  40. {
  41. ServerApi.Hooks.GameInitialize.Register(this, (args) => { OnInitialize(); });
  42. ServerApi.Hooks.GameUpdate.Register(this, (args) => { OnUpdate(); });
  43. ServerApi.Hooks.NetGreetPlayer.Register(this, OnGreetPlayer);
  44. ServerApi.Hooks.ServerLeave.Register(this, OnLeave);
  45. ServerApi.Hooks.ServerChat.Register(this, OnChat);
  46. }
  47.  
  48. protected override void Dispose(bool disposing)
  49. {
  50. if (disposing)
  51. {
  52. ServerApi.Hooks.GameInitialize.Deregister(this, (args) => { OnInitialize(); });
  53. ServerApi.Hooks.GameUpdate.Deregister(this, (args) => { OnUpdate(); });
  54. ServerApi.Hooks.NetGreetPlayer.Deregister(this, OnGreetPlayer);
  55. ServerApi.Hooks.ServerLeave.Deregister(this, OnLeave);
  56. ServerApi.Hooks.ServerChat.Deregister(this, OnChat);
  57. }
  58.  
  59. base.Dispose(disposing);
  60. }
  61.  
  62. public Jail(Main game)
  63. : base(game)
  64. {
  65. Order = 3;
  66. JPConfig = new JPConfigFile();
  67. Players = new Player[256];
  68. }
  69.  
  70. public void OnInitialize()
  71. {
  72. SetupConfig();
  73. if (JPConfig.jailmode)
  74. Commands.ChatCommands.Add(new Command("jailcomm", warpjail, JPConfig.jailcomm));
  75. if (JPConfig.prisonmode)
  76. {
  77. Commands.ChatCommands.Add(new Command("prison", imprison, "imprison"));
  78. Commands.ChatCommands.Add(new Command("prison", setfree, "setfree"));
  79. }
  80. Commands.ChatCommands.Add(new Command("cfg", jailreload, "jailreload"));
  81.  
  82. if (JPConfig.chestzones)
  83. Commands.ChatCommands.Add(new Command("chestroom", chests, "allowchests"));
  84. if (JPConfig.afkmode)
  85. {
  86. Commands.ChatCommands.Add(new Command("idlecomm", idlecomm, "afktime"));
  87. Commands.ChatCommands.Add(new Command("idlecomm", sendafk, "afk"));
  88. Commands.ChatCommands.Add(new Command("idlecomm", sendback, "back"));
  89. Commands.ChatCommands.Add(new Command("cfg", setidletime, "setidletime"));
  90. }
  91. if (JPConfig.cmdlimit)
  92. {
  93. Commands.ChatCommands.Add(new Command("cfg", setcmdtime, "setcmdtime"));
  94. Commands.ChatCommands.Add(new Command("killzone", killzone, "killzone"));
  95. }
  96. }
  97.  
  98. public void OnGreetPlayer(GreetPlayerEventArgs e)
  99. {
  100. Players[e.Who] = new Player(e.Who);
  101. }
  102.  
  103. public class Player
  104. {
  105. public int Index { get; set; }
  106. public TSPlayer TSPlayer { get { return TShock.Players[Index]; } }
  107. public bool prisonMode { get; set; }
  108. public bool rulesMode { get; set; }
  109. public bool prisonModeSpam { get; set; }
  110. public bool rulesModeSpam { get; set; }
  111. public bool chestMode { get; set; }
  112. public bool killMode { get; set; }
  113. public bool killModeSpam { get; set; }
  114. public bool chestModeSpam { get; set; }
  115. public int idle { get; set; }
  116. public int lasttileX { get; set; }
  117. public int lasttileY { get; set; }
  118. public int backtileX { get; set; }
  119. public int backtileY { get; set; }
  120. public int chestAmount { get; set; }
  121. public int itemAmount { get; set; }
  122. public int healAmount { get; set; }
  123. public Player(int index)
  124. {
  125. Index = index;
  126. prisonMode = false;
  127. rulesMode = true;
  128. prisonModeSpam = true;
  129. rulesModeSpam = true;
  130. lasttileX = TShock.Players[Index].TileX;
  131. lasttileY = TShock.Players[Index].TileY;
  132. backtileX = 0;
  133. backtileY = 0;
  134. chestMode = true;
  135. killMode = false;
  136. killModeSpam = true;
  137. chestModeSpam = true;
  138. idle = 0;
  139. chestAmount = 0;
  140. itemAmount = 0;
  141. healAmount = 0;
  142. }
  143. }
  144.  
  145. public static void SetupConfig()
  146. {
  147. try
  148. {
  149. if (File.Exists(JPConfigPath))
  150. {
  151. JPConfig = JPConfigFile.Read(JPConfigPath);
  152. // Add all the missing config properties in the json file
  153. }
  154. JPConfig.Write(JPConfigPath);
  155. }
  156. catch (Exception ex)
  157. {
  158. Console.ForegroundColor = ConsoleColor.Red;
  159. Console.WriteLine("Error in jail config file");
  160. Console.ForegroundColor = ConsoleColor.Gray;
  161. Log.Error("Jail Config Exception");
  162. Log.Error(ex.ToString());
  163. }
  164. }
  165.  
  166. private DateTime LastCheck = DateTime.UtcNow;
  167.  
  168. private void OnUpdate()
  169. {
  170. if ((DateTime.UtcNow - LastCheck).TotalSeconds >= 1)
  171. {
  172. LastCheck = DateTime.UtcNow;
  173. lock (Players)
  174. foreach (Player player in Players)
  175. {
  176. if (player != null && player.TSPlayer != null)
  177. {
  178. string currentregionlist = "";
  179. var currentregion = TShock.Regions.InAreaRegionName(player.TSPlayer.TileX, player.TSPlayer.TileY);
  180. if (currentregion.Count > 0)
  181. currentregionlist = string.Join(",", currentregion.ToArray());
  182. if (player.prisonMode && JPConfig.prisonmode)
  183. {
  184. if (!currentregionlist.Contains("prison"))
  185. {
  186. string warpName = "prison";
  187. var warp = TShock.Warps.FindWarp(warpName);
  188. if (warp.WarpPos != Vector2.Zero)
  189. {
  190. if (player.TSPlayer.Teleport((int)warp.WarpPos.X*16, (int)warp.WarpPos.Y*16 + 3))
  191. {
  192. if (player.prisonModeSpam)
  193. {
  194. player.TSPlayer.SendMessage("You are stuck in prison - An Admin or Mod Will Need To Let You Out...");
  195. player.prisonModeSpam = false;
  196. }
  197. }
  198. }
  199. }
  200. }
  201. if (player.rulesMode && !player.TSPlayer.Group.HasPermission("jail") && JPConfig.jailmode && !player.prisonMode)
  202. {
  203. if (!currentregionlist.Contains("jail"))
  204. {
  205.  
  206. string warpName = "jail";
  207. var warp = TShock.Warps.FindWarp(warpName);
  208. if (warp.WarpPos != Vector2.Zero)
  209. {
  210. if (player.TSPlayer.Teleport((int)warp.WarpPos.X*16, (int)(warp.WarpPos.Y+ 3)*16))
  211. {
  212. if (player.rulesModeSpam)
  213. {
  214. player.TSPlayer.SendMessage("You Cannot Get Out Of Jail Without Reading The Rules");
  215. player.rulesModeSpam = false;
  216. }
  217. }
  218. }
  219. }
  220. }
  221.  
  222. if (!player.chestMode && JPConfig.chestzones)
  223. {
  224. if (player.chestAmount > 0)
  225. player.chestAmount--;
  226. else
  227. {
  228. player.chestMode = true;
  229. player.chestModeSpam = true;
  230. player.TSPlayer.SendMessage("Your Allowed Time In The Chest Room Is Now Up!");
  231. player.chestAmount = 0;
  232. }
  233. }
  234. if (player.itemAmount > 0)
  235. player.itemAmount--;
  236.  
  237. if (player.healAmount > 0)
  238. player.healAmount--;
  239.  
  240. if (player.chestMode && !player.TSPlayer.Group.HasPermission("chests") && JPConfig.chestzones)
  241. {
  242. string region = currentregionlist;
  243. string prefix = player.TSPlayer.Group.Prefix;
  244. if (prefix == null || prefix == "")
  245. prefix = "nothing3252";
  246. if (region == "" || region == null)
  247. region = "nothing3132";
  248. else region = region.ToLower();
  249. if (region.Contains("chests"))
  250. {
  251. if (!region.Contains(player.TSPlayer.Name.ToLower()) && !region.Contains(player.TSPlayer.Group.Name.ToLower()) && !region.Contains(prefix.ToLower()))
  252. {
  253. if (player.TSPlayer.Teleport(Main.spawnTileX*16, Main.spawnTileY*16))
  254. {
  255. if (player.chestModeSpam)
  256. {
  257. player.TSPlayer.SendMessage("You Do Not Have Permission To Enter This Chest Room");
  258. player.chestModeSpam = false;
  259. }
  260. }
  261. }
  262. }
  263. }
  264.  
  265. if (!player.killMode && !player.TSPlayer.Group.HasPermission("killzone") && JPConfig.killzones)
  266. {
  267. string region = currentregionlist;
  268. string prefix = player.TSPlayer.Group.Prefix;
  269. if (prefix == null || prefix == "")
  270. prefix = "nothing3252";
  271. if (region == "" || region == null)
  272. region = "nothing3132";
  273. else region = region.ToLower();
  274. if (!region.Contains("kill"))
  275. player.killModeSpam = true;
  276. if (region.Contains("kill"))
  277. {
  278. if (!region.Contains(player.TSPlayer.Name.ToLower()) && !region.Contains(player.TSPlayer.Group.Name.ToLower()) && !region.Contains(prefix.ToLower()))
  279. {
  280. if (player.killModeSpam)
  281. {
  282. player.TSPlayer.SendMessage("You Entered The " + region + " ZonE");
  283. TShock.Utils.Broadcast(player.TSPlayer.Name + " Was Killed Because They Entered The " + region + " ZonE!");
  284. player.killModeSpam = false;
  285. }
  286. player.TSPlayer.DamagePlayer(10000);
  287. }
  288. }
  289. }
  290. if (player.lasttileX != 0 && player.lasttileY != 0 && !currentregionlist.Contains("afk") && JPConfig.afkmode)
  291. {
  292. if (player.TSPlayer.TileX == player.lasttileX && player.TSPlayer.TileY == player.lasttileY)
  293. {
  294. player.idle = player.idle + 1;
  295. }
  296. else
  297. player.idle = 1;
  298. player.lasttileX = player.TSPlayer.TileX;
  299. player.lasttileY = player.TSPlayer.TileY;
  300. if (player.idle > JPConfig.afktime && player.rulesMode && !player.TSPlayer.Group.HasPermission("jail") && JPConfig.jailmode)
  301. TShock.Utils.Kick(player.TSPlayer, "You Were Idle For Too Long!!!!!");
  302. else if (player.idle > JPConfig.afktime && !player.prisonMode)
  303. {
  304. var warp = TShock.Warps.FindWarp("afk");
  305. player.backtileX = player.TSPlayer.TileX;
  306. player.backtileY = player.TSPlayer.TileY;
  307. if (player.TSPlayer.Teleport((int)warp.WarpPos.X*16, (int)(warp.WarpPos.Y + 3)*16))
  308. {
  309. player.TSPlayer.SendMessage("You Have Been Warped To The AFK Zone. Use the /back command to go back!");
  310. TShock.Utils.Broadcast(player.TSPlayer.Name + " Is Away From His/Her Keyboard And Has Been Warped To The AFK Zone!");
  311. }
  312. }
  313. }
  314. }
  315. if (JPConfig.diemobmode)
  316. {
  317. for (int i = 0; i < Main.maxNPCs; i++)
  318. {
  319. var npcregion = TShock.Regions.InAreaRegionName(((int)Main.npc[i].position.X) / 16, ((int)Main.npc[i].position.Y) / 16);
  320. string npcregionlist = string.Join(",", npcregion.ToArray());
  321. if (Main.npc[i].active && !Main.npc[i].friendly && npcregion.Count > 0)
  322. {
  323. if (npcregionlist.Contains("diemob"))
  324. {
  325. Main.npc[i].netDefaults(0);
  326. TSPlayer.Server.StrikeNPC(i, 99999, 90f, 1);
  327. }
  328. }
  329. }
  330. }
  331. }
  332. }
  333. }
  334.  
  335. private void OnLeave(LeaveEventArgs e)
  336. {
  337. try
  338. {
  339. Players[e.Who] = null;
  340. }
  341. catch { }
  342. }
  343.  
  344. public void OnChat(ServerChatEventArgs e)
  345. {
  346. var msg = e.Buffer;
  347. var ply = e.Who;
  348. var text = e.Text;
  349. var jpPly = Players[e.Who];
  350.  
  351. string cmd = text.Split(' ')[0];
  352. var tsplr = TShock.Players[ply];
  353. string currentregionlist = "";
  354. var currentregion = TShock.Regions.InAreaRegionName(tsplr.TileX, tsplr.TileY);
  355. if (currentregion.Count > 0)
  356. currentregionlist = string.Join(",", currentregion.ToArray());
  357. if (cmd == "/warp")
  358. {
  359. if (text.Split(' ').Length > 1)
  360. {
  361. if (TShock.Warps.FindWarp(text.Split(' ')[1]).WarpPos != Vector2.Zero)
  362. {
  363. if (jpPly.rulesMode && !tsplr.Group.HasPermission("jail") && !currentregionlist.Contains("jail") && JPConfig.jailmode)
  364. {
  365. tsplr.SendMessage("You Can't Teleport Without Reading / Following The Rules!", Color.Red);
  366. e.Handled = true;
  367. return;
  368. }
  369. if (currentregionlist.Contains("jail") && !tsplr.Group.HasPermission("jail") && jpPly.rulesMode && JPConfig.jailmode)
  370. {
  371. tsplr.SendMessage("You Can't Exit Jail Without Reading / Following The Rules!", Color.Red);
  372. e.Handled = true;
  373. return;
  374. }
  375. if (jpPly.prisonMode && JPConfig.prisonmode)
  376. {
  377. tsplr.SendMessage("You are stuck in prison - An Admin or Mod Will Need To Let You Out...");
  378. e.Handled = true;
  379. return;
  380. }
  381. }
  382. else return;
  383. }
  384. return;
  385. }
  386.  
  387. else if (cmd == "/tp")
  388. {
  389. if (text.Split(' ').Length > 1)
  390. {
  391. if (jpPly.rulesMode && !tsplr.Group.HasPermission("jail") && !currentregionlist.Contains("jail") && JPConfig.jailmode)
  392. {
  393. tsplr.SendMessage("You Can't Teleport Without Reading / Following The Rules!", Color.Red);
  394. e.Handled = true;
  395. return;
  396. }
  397. if (currentregionlist.Contains("jail") && !tsplr.Group.HasPermission("jail") && jpPly.rulesMode && JPConfig.jailmode)
  398. {
  399. tsplr.SendMessage("You Can't Exit Jail Without Reading / Following The Rules!", Color.Red);
  400. e.Handled = true;
  401. return;
  402. }
  403. if (jpPly.prisonMode && JPConfig.prisonmode)
  404. {
  405. tsplr.SendMessage("You are stuck in prison - An Admin or Mod Will Need To Let You Out...");
  406. e.Handled = true;
  407. return;
  408. }
  409. }
  410. else return;
  411. }
  412. else if (cmd == "/home")
  413. {
  414. if (jpPly.rulesMode && !tsplr.Group.HasPermission("jail") && !currentregionlist.Contains("jail") && JPConfig.jailmode)
  415. {
  416. tsplr.SendMessage("You Can't Teleport Without Reading / Following The Rules!", Color.Red);
  417. e.Handled = true;
  418. return;
  419. }
  420. if (currentregionlist.Contains("jail") && !tsplr.Group.HasPermission("jail") && jpPly.rulesMode && JPConfig.jailmode)
  421. {
  422. tsplr.SendMessage("You Can't Exit Jail Without Reading / Following The Rules!", Color.Red);
  423. e.Handled = true;
  424. return;
  425. }
  426. if (jpPly.prisonMode && JPConfig.prisonmode)
  427. {
  428. tsplr.SendMessage("You are stuck in prison - An Admin or Mod Will Need To Let You Out...");
  429. e.Handled = true;
  430. return;
  431. }
  432. tsplr.Spawn();
  433. tsplr.SendMessage("Teleported to your spawnpoint.");
  434. e.Handled = true;
  435. return;
  436. }
  437.  
  438. else if (cmd == "/spawn")
  439. {
  440. if (jpPly.rulesMode && !tsplr.Group.HasPermission("jail") && !currentregionlist.Contains("jail") && JPConfig.jailmode)
  441. {
  442. tsplr.SendMessage("You Can't Teleport Without Reading / Following The Rules!", Color.Red);
  443. e.Handled = true;
  444. return;
  445. }
  446. if (currentregionlist.Contains("jail") && !tsplr.Group.HasPermission("jail") && jpPly.rulesMode && JPConfig.jailmode)
  447. {
  448. tsplr.SendMessage("You Can't Exit Jail Without Reading / Following The Rules!", Color.Red);
  449. e.Handled = true;
  450. return;
  451. }
  452. if (jpPly.prisonMode && JPConfig.prisonmode)
  453. {
  454. tsplr.SendMessage("You are stuck in prison - An Admin or Mod Will Need To Let You Out...");
  455. e.Handled = true;
  456. return;
  457. }
  458. else
  459. {
  460. if (tsplr.Teleport(Main.spawnTileX*16, Main.spawnTileY*16))
  461. tsplr.SendMessage("Teleported to the map's spawnpoint.");
  462. e.Handled = true;
  463. return;
  464. }
  465. }
  466. else if ((cmd == "/afk" || cmd == "/i" || cmd == "/give") && JPConfig.cmdlimit)
  467. {
  468. if (text.Split(' ').Length > 1)
  469. {
  470. if (!tsplr.Group.HasPermission("alwaysitem") && jpPly.itemAmount > 0)
  471. {
  472. tsplr.SendMessage("You Can Only Use An Item Command Every " + JPConfig.cmdtime + " Seconds You Have " + jpPly.itemAmount + " Seconds Left");
  473. e.Handled = true;
  474. return;
  475. }
  476. else if (!tsplr.Group.HasPermission("alwaysitem") && tsplr.Group.HasPermission("item"))
  477. jpPly.itemAmount = JPConfig.cmdtime;
  478. return;
  479. }
  480. return;
  481. }
  482.  
  483. else if (cmd == "/heal" && JPConfig.cmdlimit)
  484. {
  485. if (!tsplr.Group.HasPermission("alwaysheal") && jpPly.healAmount > 0)
  486. {
  487. tsplr.SendMessage("You Can Only Use The Heal Command Every " + JPConfig.cmdtime + " Seconds You Have " + jpPly.healAmount + " Seconds Left");
  488. e.Handled = true;
  489. return;
  490. }
  491. else if (!tsplr.Group.HasPermission("alwaysheal") && tsplr.Group.HasPermission("heal"))
  492. jpPly.healAmount = JPConfig.cmdtime;
  493. return;
  494. }
  495. else if (cmd == "/afktime" && JPConfig.afkmode)
  496. {
  497. return;
  498. }
  499. jpPly.idle = 1;
  500. }
  501.  
  502. private void warpjail(CommandArgs args)
  503. {
  504.  
  505. if (!args.Player.RealPlayer)
  506. {
  507. args.Player.SendMessage("You cannot use teleport commands!");
  508. return;
  509. }
  510.  
  511. var jpPly = Players[args.Player.Index];
  512.  
  513. if (jpPly.prisonMode)
  514. {
  515. args.Player.SendMessage("You are stuck in prison - An Admin or Mod Will Need To Let You Out...");
  516. return;
  517. }
  518. var currentregion = TShock.Regions.InAreaRegionName(args.Player.TileX, args.Player.TileY);
  519. if (currentregion.Count > 0)
  520. {
  521. string currentregionlist = string.Join(",", currentregion.ToArray());
  522. if (currentregionlist.Contains("jail"))
  523. args.Player.SendMessage("You May Now Exit The Jail!", Color.Pink);
  524. }
  525. jpPly.rulesMode = false;
  526. args.Player.SendMessage("Thanks For Reading The Rules!", Color.Pink);
  527. var foundplr = TShock.Utils.FindPlayer(args.Player.Name);
  528. if (JPConfig.groupname != "" && args.Player.Group.HasPermission("rulerank") && foundplr[0].IsLoggedIn)
  529. {
  530. var foundgrp = FindGroup(JPConfig.groupname);
  531. if (foundgrp.Count == 1)
  532. {
  533. var loggeduser = TShock.Users.GetUserByName(args.Player.UserAccountName);
  534. TShock.Users.SetUserGroup(loggeduser, foundgrp[0].Name);
  535. args.Player.Group = foundgrp[0];
  536. args.Player.SendMessage("Your Group Has Been Changed To " + foundgrp[0].Name, Color.Pink);
  537. return;
  538. }
  539. }
  540.  
  541. if (JPConfig.guestgroupname != "" && !foundplr[0].IsLoggedIn)
  542. {
  543. var foundguestgrp = FindGroup(JPConfig.guestgroupname);
  544. if (foundguestgrp.Count == 1)
  545. {
  546. args.Player.Group = foundguestgrp[0];
  547. args.Player.SendMessage("Your Group Has Temporarily Changed To " + foundguestgrp[0].Name, Color.HotPink);
  548. args.Player.SendMessage("Use /register & /login to create a permanent account - Once Complete Type /" + JPConfig.jailcomm + " Again.", Color.HotPink);
  549. }
  550. }
  551. }
  552.  
  553. private void imprison(CommandArgs args)
  554. {
  555.  
  556. if (args.Parameters.Count < 1)
  557. {
  558. args.Player.SendMessage("Invalid syntax! Proper syntax: /imprison [player]", Color.Red);
  559. return;
  560. }
  561.  
  562. var foundplr = TShock.Utils.FindPlayer(args.Parameters[0]);
  563. if (foundplr.Count == 0)
  564. {
  565. args.Player.SendMessage("Invalid player!", Color.Red);
  566. return;
  567. }
  568. else if (foundplr.Count > 1)
  569. {
  570. args.Player.SendMessage(string.Format("More than one ({0}) player matched!", args.Parameters.Count), Color.Red);
  571. return;
  572. }
  573. else if (foundplr[0].Group.HasPermission("prison"))
  574. {
  575. args.Player.SendMessage(string.Format("You Cannot Use This Command On This Player!", args.Parameters.Count), Color.Red);
  576. return;
  577. }
  578. var plr = foundplr[0];
  579. var jpPly = Players[plr.Index];
  580. if (jpPly.prisonMode)
  581. {
  582. args.Player.SendMessage("Player Is Already In Prison");
  583. return;
  584. }
  585. string warpName = "prison";
  586. var warp = TShock.Warps.FindWarp(warpName);
  587. if (warp.WarpPos != Vector2.Zero)
  588. {
  589. if (plr.Teleport((int)warp.WarpPos.X*16, (int)(warp.WarpPos.Y + 3)*16))
  590. {
  591. plr.SendMessage(string.Format("{0} Warped you to the Prison! You Cannot Get Out Until An Admin Releases You", args.Player.Name), Color.Yellow);
  592. args.Player.SendMessage(string.Format("You warped {0} to Prison!", plr.Name), Color.Yellow);
  593. jpPly.prisonMode = !jpPly.prisonMode;
  594. }
  595. }
  596. else
  597. {
  598. args.Player.SendMessage("Prison Warp Was Not Made! Make One!", Color.Red);
  599. }
  600. }
  601. private void setfree(CommandArgs args)
  602. {
  603. if (args.Parameters.Count < 1)
  604. {
  605. args.Player.SendMessage("Invalid syntax! Proper syntax: /setfree [player]", Color.Red);
  606. return;
  607. }
  608.  
  609. var foundplr = TShock.Utils.FindPlayer(args.Parameters[0]);
  610. if (foundplr.Count == 0)
  611. {
  612. args.Player.SendMessage("Invalid player!", Color.Red);
  613. return;
  614. }
  615. else if (foundplr.Count > 1)
  616. {
  617. args.Player.SendMessage(string.Format("More than one ({0}) player matched!", args.Parameters.Count), Color.Red);
  618. return;
  619. }
  620. else if (foundplr[0].Group.HasPermission("prison"))
  621. {
  622. args.Player.SendMessage(string.Format("You Cannot Use This Command On This Player!", args.Parameters.Count), Color.Red);
  623. return;
  624. }
  625. var plr = foundplr[0];
  626. var jpPly = Players[plr.Index];
  627. if (!jpPly.prisonMode)
  628. {
  629. args.Player.SendMessage("Player Is Already Free");
  630. return;
  631. }
  632. if (plr.Teleport(Main.spawnTileX*16, Main.spawnTileY*16))
  633. {
  634. plr.SendMessage(string.Format("{0} Warped You To Spawn From Prison! Now Behave!!!!!", args.Player.Name), Color.Green);
  635. args.Player.SendMessage(string.Format("You warped {0} to Spawn from Prison!", plr.Name), Color.Yellow);
  636. jpPly.prisonMode = !jpPly.prisonMode;
  637. jpPly.prisonModeSpam = true;
  638. }
  639. }
  640. private void jailreload(CommandArgs args)
  641. {
  642. SetupConfig();
  643. Log.Info("Jail Reload Initiated");
  644. args.Player.SendMessage("Jail Reload Initiated");
  645. }
  646.  
  647. private void chests(CommandArgs args)
  648. {
  649. if (args.Parameters.Count < 1 || args.Parameters.Count > 2)
  650. {
  651. args.Player.SendMessage("Invalid syntax! Proper syntax: /allowchests <player> [amountoftime]", Color.Red);
  652. return;
  653. }
  654.  
  655. var foundplr = TShock.Utils.FindPlayer(args.Parameters[0]);
  656. if (foundplr.Count == 0)
  657. {
  658. args.Player.SendMessage("Invalid player!", Color.Red);
  659. return;
  660. }
  661. else if (foundplr.Count > 1)
  662. {
  663. args.Player.SendMessage(string.Format("More than one ({0}) player matched!", args.Parameters.Count), Color.Red);
  664. return;
  665. }
  666. int chestamount2 = 0;
  667. args.Parameters.RemoveAt(0);
  668. var jpPly = Players[foundplr[0].Index];
  669. if (args.Parameters.Count > 0)
  670. {
  671. int.TryParse(args.Parameters[args.Parameters.Count - 1], out chestamount2);
  672. jpPly.chestAmount = chestamount2;
  673. }
  674.  
  675. if (jpPly.chestMode)
  676. {
  677. if (jpPly.chestAmount == 0)
  678. jpPly.chestAmount = 60;
  679. jpPly.chestMode = !jpPly.chestMode;
  680. foundplr[0].SendMessage("You Have Been Granted Access To The Chests By " + args.Player.Name + " For " + jpPly.chestAmount + " Seconds!");
  681. args.Player.SendMessage("You Have Granted Access For The Chests To " + foundplr[0].Name + " For " + jpPly.chestAmount + " Seconds!");
  682. return;
  683. }
  684. if (!jpPly.chestMode)
  685. {
  686. jpPly.chestMode = !jpPly.chestMode;
  687. foundplr[0].SendMessage("Your Access To The Chests Has Been Revoked By " + args.Player.Name);
  688. args.Player.SendMessage("You Have Revoked Access From The Chests From " + foundplr[0].Name);
  689. jpPly.chestModeSpam = true;
  690. return;
  691. }
  692. }
  693.  
  694. private void idlecomm(CommandArgs args)
  695. {
  696. var jpPly = Players[args.Player.Index];
  697. TShock.Players[args.Player.Index].SendMessage("You Have Been AFK For: " + jpPly.idle);
  698. }
  699.  
  700. private void sendafk(CommandArgs args)
  701. {
  702. var jpPly = Players[args.Player.Index];
  703. var warp = TShock.Warps.FindWarp("afk");
  704. jpPly.backtileX = TShock.Players[args.Player.Index].TileX;
  705. jpPly.backtileY = TShock.Players[args.Player.Index].TileY;
  706. if (args.Player.Teleport((int)warp.WarpPos.X*16, (int)warp.WarpPos.Y*16 + 3))
  707. {
  708. args.Player.SendMessage("You Have Been Warped To The AFK Zone. Use the /back command to go back!");
  709. TShock.Utils.Broadcast(args.Player.Name + " Is Away From His/Her Keyboard And Has Been Warped To The AFK Zone!");
  710. }
  711. }
  712.  
  713. private void sendback(CommandArgs args)
  714. {
  715. var jpPly = Players[args.Player.Index];
  716. if (jpPly.backtileX != 0)
  717. {
  718. if (args.Player.Teleport(jpPly.backtileX*16, jpPly.backtileY*16 + 3))
  719. {
  720. args.Player.SendMessage("You Have Been Warped Back To Where You Were");
  721. TShock.Utils.Broadcast(args.Player.Name + " Is Back From AFK! YAY!!!");
  722. jpPly.backtileX = 0;
  723. jpPly.backtileY = 0;
  724. }
  725. }
  726. else
  727. args.Player.SendMessage("Unable To Send You Back From AFK");
  728. }
  729.  
  730. private static void setidletime(CommandArgs args)
  731. {
  732. if (args.Parameters.Count < 1)
  733. {
  734. args.Player.SendMessage("Invalid syntax! Proper syntax: /setafktime <time>", Color.Red);
  735. return;
  736. }
  737. JPConfig.afktime = int.Parse(args.Parameters[0]);
  738. args.Player.SendMessage("Idle Time Set To: " + JPConfig.afktime);
  739. }
  740.  
  741. private static void setcmdtime(CommandArgs args)
  742. {
  743. if (args.Parameters.Count < 1)
  744. {
  745. args.Player.SendMessage("Invalid syntax! Proper syntax: /setJPConfig.cmdtime <time>", Color.Red);
  746. return;
  747. }
  748. JPConfig.cmdtime = int.Parse(args.Parameters[0]);
  749. args.Player.SendMessage("Command Time Set To: " + JPConfig.cmdtime);
  750. }
  751.  
  752. private void killzone(CommandArgs args)
  753. {
  754. if (args.Parameters.Count < 1)
  755. {
  756. args.Player.SendMessage("Invalid syntax! Proper syntax: /killzone <player>", Color.Red);
  757. return;
  758. }
  759.  
  760. var foundplr = TShock.Utils.FindPlayer(args.Parameters[0]);
  761. var jpPly = Players[foundplr[0].Index];
  762. if (foundplr.Count == 0)
  763. {
  764. args.Player.SendMessage("Invalid player!", Color.Red);
  765. return;
  766. }
  767. else if (foundplr.Count > 1)
  768. {
  769. args.Player.SendMessage(string.Format("More than one ({0}) player matched!", args.Parameters.Count), Color.Red);
  770. return;
  771. }
  772. if (!jpPly.killMode)
  773. {
  774. jpPly.killMode = !jpPly.killMode;
  775. foundplr[0].SendMessage("You Have Been Granted Access To Kill Zones From " + args.Player.Name);
  776. args.Player.SendMessage("You Have Granted Access To Kill Zones For " + foundplr[0].Name);
  777. return;
  778. }
  779. if (jpPly.killMode)
  780. {
  781. jpPly.killMode = !jpPly.killMode;
  782. foundplr[0].SendMessage("Your Access To The Kill Zones Has Been Revoked By " + args.Player.Name);
  783. args.Player.SendMessage("You Have Revoked Access From Kill Zones For " + foundplr[0].Name);
  784. return;
  785. }
  786. }
  787.  
  788. public static List<Group> FindGroup(string grp)
  789. {
  790. var found = new List<Group>();
  791. grp = grp.ToLower();
  792. foreach (Group group in TShock.Groups.groups)
  793. {
  794. if (group == null)
  795. continue;
  796.  
  797. string name = group.Name.ToLower();
  798. if (name.Equals(grp))
  799. return new List<Group> { group };
  800. if (name.Contains(grp))
  801. found.Add(group);
  802. }
  803. return found;
  804. }
  805. }
  806. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement