Guest User

Untitled

a guest
Jun 2nd, 2017
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 40.36 KB | None | 0 0
  1. using System;
  2. using System.Globalization;
  3. using wServer.realm.entities;
  4. using System.IO;
  5. using wServer.realm.setpieces;
  6. using wServer.networking;
  7. using System.Text;
  8. using wServer.networking.svrPackets;
  9. using db;
  10. using System.Linq;
  11. using System.Threading.Tasks;
  12. using wServer.realm.worlds;
  13.  
  14. namespace wServer.realm.commands
  15. {
  16. internal class EffectCommand : Command
  17. {
  18. public EffectCommand() : base("eff", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  19. {
  20. }
  21.  
  22. protected override bool Process(Player player, string args)
  23. {
  24. ConditionEffectIndex effect;
  25. if (!Enum.TryParse(args, true, out effect))
  26. {
  27. player.SendError("Invalid effect!");
  28. return false;
  29. }
  30.  
  31. if ((player.ConditionEffects & (ConditionEffects)(1 << (int)effect)) != 0)
  32. {
  33. player.ApplyConditionEffect(new ConditionEffect()
  34. {
  35. Effect = effect,
  36. DurationMS = 0
  37. });
  38. }
  39. else
  40. {
  41. player.ApplyConditionEffect(new ConditionEffect()
  42. {
  43. Effect = effect,
  44. DurationMS = -1
  45. });
  46. }
  47. return true;
  48. }
  49. }
  50.  
  51.  
  52. internal class SpawnCommand : Command
  53. {
  54. public SpawnCommand() : base("spawn", new Ranks[] { Ranks.User, Ranks.Spriter, Ranks.Developer, Ranks.DeveloperManager, Ranks.Moderator, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  55. {
  56. }
  57.  
  58. public string[] NonDonorSpawns = new string[] { "XP", "Vault" };
  59.  
  60. protected override bool Process(Player player, string args)
  61. {
  62. if ((Ranks)player.Client.Account.Rank == Ranks.DeveloperManager || (Ranks)player.Client.Account.Rank == Ranks.Admin || (Ranks)player.Client.Account.Rank == Ranks.HeadModerator || (Ranks)player.Client.Account.Rank == Ranks.HeadAdmin || (Ranks)player.Client.Account.Rank == Ranks.ServerHead || player.Client.Account.DonatorRank >= 5) {
  63. int index = args.IndexOf(' ');
  64. int num;
  65. string name = args;
  66.  
  67. if (args.IndexOf(' ') > 0 && int.TryParse(args.Substring(0, args.IndexOf(' ')), out num)) //multi
  68. name = args.Substring(index + 1);
  69. else
  70. num = 1;
  71.  
  72. ushort objType;
  73. player.Manager.GameData.IdToObjectType.TryGetValue(name, out objType);
  74.  
  75. for (int i = 0; i < num; i++)
  76. {
  77. var entity = Entity.Resolve(player.Manager, objType);
  78. entity.Move(player.X, player.Y);
  79. player.Owner.EnterWorld(entity);
  80. }
  81. var dir = @"logs";
  82. if (!Directory.Exists(dir))
  83. {
  84. Directory.CreateDirectory(dir);
  85. }
  86. using (var writer = new StreamWriter(@"logs\SpawnLog.log", true))
  87. {
  88. writer.WriteLine($"{player.Name} spawned {num} {name} in {player.Owner.Name}");
  89. }
  90. return true;
  91. } else if (player.Client.Account.DonatorRank >= 4)
  92. {
  93. if (player.lastSpawnTime > 0)
  94. {
  95. player.SendError($"You must wait {(int)((player.lastSpawnTime) / 1000)} seconds.");
  96. return false;
  97. }
  98. int index = args.IndexOf(' ');
  99. int num;
  100. string name = args;
  101.  
  102. if (args.IndexOf(' ') > 0 && int.TryParse(args.Substring(0, args.IndexOf(' ')), out num)) //multi
  103. name = args.Substring(index + 1);
  104. else
  105. num = 1;
  106.  
  107. ushort objType;
  108. player.Manager.GameData.IdToObjectType.TryGetValue(name, out objType);
  109.  
  110. if (!(player.Owner is SpawnArea) && !(player.Owner is Vault))
  111. {
  112. player.SendError("You must be in the Spawn Area or your Vault to spawn.");
  113. return false;
  114. }
  115.  
  116. foreach (var i in NonDonorSpawns)
  117. if (name.Contains(i))
  118. {
  119. player.SendError("Only Admin's can spawn this.");
  120. return false;
  121. }
  122.  
  123. if (num > 5)
  124. {
  125. player.SendError("Cannot spawn more than 5 at once.");
  126. return false;
  127. }
  128.  
  129. for (int i = 0; i < num; i++)
  130. {
  131. var entity = Entity.Resolve(player.Manager, objType);
  132. entity.Move(player.X, player.Y);
  133. player.Owner.EnterWorld(entity);
  134. }
  135.  
  136. player.lastSpawnTime = 15000;
  137.  
  138. var dir = @"logs";
  139. if (!Directory.Exists(dir))
  140. {
  141. Directory.CreateDirectory(dir);
  142. }
  143. using (var writer = new StreamWriter(@"logs\DonatorSpawnLog.log", true))
  144. {
  145. writer.WriteLine($"{player.Name} spawned {num} {name} in {player.Owner.Name}");
  146. }
  147. return true;
  148. }
  149. return false;
  150. }
  151. }
  152.  
  153. internal class GiveCommand : Command
  154. {
  155. public GiveCommand() : base("give", new Ranks[] { Ranks.User, Ranks.Spriter, Ranks.Developer, Ranks.DeveloperManager, Ranks.Moderator, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  156. {
  157. }
  158.  
  159. protected override bool Process(Player player, string args)
  160. {
  161. if ((Ranks)player.Client.Account.Rank == Ranks.DeveloperManager || (Ranks)player.Client.Account.Rank == Ranks.Admin || (Ranks)player.Client.Account.Rank == Ranks.HeadModerator || (Ranks)player.Client.Account.Rank == Ranks.HeadAdmin || (Ranks)player.Client.Account.Rank == Ranks.ServerHead)
  162. {
  163. var item = args;
  164. var data = "";
  165. if (args.IndexOf("{", StringComparison.Ordinal) >= 0 && args.EndsWith("}"))
  166. {
  167. item = args.Remove(args.IndexOf("{", StringComparison.Ordinal)).TrimEnd();
  168. data = args.Substring(args.IndexOf("{", StringComparison.Ordinal));
  169. }
  170. ushort objType;
  171. if (!player.Manager.GameData.IdToObjectType.TryGetValue(item, out objType))
  172. {
  173. player.SendError("Unknown item type!");
  174. return false;
  175. }
  176. for (var i = 4; i < player.Inventory.Length; i++)
  177. if (player.Inventory[i] == null)
  178. {
  179. player.Inventory[i] = player.Manager.GameData.Items[objType];
  180. if (data != "")
  181. player.Inventory.Data[i] = ItemData.CreateData(data);
  182.  
  183. var dir = @"logs";
  184. if (!Directory.Exists(dir))
  185. {
  186. Directory.CreateDirectory(dir);
  187. }
  188. using (var writer = new StreamWriter(@"logs\GiveLog.log", true))
  189. {
  190. writer.WriteLine($"{player.Name} gave using /give, themselves 1 {item}");
  191. }
  192. return true;
  193. }
  194. player.SendError("Not enough space in inventory!");
  195. return false;
  196. } else if (player.Client.Account.DonatorRank >= 2)
  197. {
  198. if (player.Credits < 1)
  199. {
  200. player.SendError("You require 1 gold.");
  201. return false;
  202. }
  203. var item = args;
  204. var data = "";
  205. if (args.IndexOf("{", StringComparison.Ordinal) >= 0 && args.EndsWith("}"))
  206. {
  207. item = args.Remove(args.IndexOf("{", StringComparison.Ordinal)).TrimEnd();
  208. data = args.Substring(args.IndexOf("{", StringComparison.Ordinal));
  209. }
  210. ushort objType;
  211. if (!player.Manager.GameData.IdToObjectType.TryGetValue(item, out objType))
  212. {
  213. player.SendError("Unknown item!");
  214. return false;
  215. }
  216.  
  217. var itemType = player.Manager.GameData.Items[objType];
  218.  
  219. if (itemType.AdminOnly)
  220. {
  221. player.SendError("You cannot purchase admin items!");
  222. return false;
  223. }
  224.  
  225. for (int i = 4; i < player.Inventory.Length; i++)
  226. if (player.Inventory[i] == null)
  227. {
  228. player.Inventory[i] = itemType;
  229.  
  230. player.Manager.Data.AddDatabaseOperation(db =>
  231. {
  232. player.Credits = db.UpdateCredit(player.Client.Account, -1);
  233. player.UpdateCount++;
  234. });
  235.  
  236. player.SendInfo("Success!");
  237.  
  238. var dir = @"logs";
  239. if (!Directory.Exists(dir))
  240. {
  241. Directory.CreateDirectory(dir);
  242. }
  243. using (var writer = new StreamWriter(@"logs\DonatorGiveLog.log", true))
  244. {
  245. writer.WriteLine($"{player.Name} bought using /give, themselves 1 {item}");
  246. }
  247.  
  248. return true;
  249. }
  250. player.SendError("Not enough space!");
  251. return false;
  252. }
  253. return false;
  254. }
  255. }
  256.  
  257. internal class TeleportPositionCommand : Command
  258. {
  259. public TeleportPositionCommand() : base("tppos", new Ranks[] { Ranks.Spriter, Ranks.Developer, Ranks.DeveloperManager, Ranks.Moderator, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  260. {
  261. }
  262.  
  263. protected override bool Process(Player player, string args)
  264. {
  265. var coordinates = args.Split(' ');
  266. if (coordinates.Length != 2)
  267. {
  268. player.SendError("Invalid coordinates!");
  269. return false;
  270. }
  271.  
  272. int x, y;
  273. if (!int.TryParse(coordinates[0], out x) || !int.TryParse(coordinates[1], out y))
  274. {
  275. player.SendError("Invalid coordinates!");
  276. return false;
  277. }
  278.  
  279. player.Move(x + 0.5f, y + 0.5f);
  280. player.SetNewbiePeriod();
  281. player.Owner.BroadcastPacket(new GotoPacket()
  282. {
  283. ObjectId = player.Id,
  284. Position = new Position()
  285. {
  286. X = player.X,
  287. Y = player.Y
  288. }
  289. }, null);
  290. return true;
  291. }
  292. }
  293.  
  294. internal class SetpieceCommand : Command
  295. {
  296. public SetpieceCommand() : base("setpiece", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  297. {
  298. }
  299.  
  300. protected override bool Process(Player player, string args)
  301. {
  302. var piece = (ISetPiece)Activator.CreateInstance(Type.GetType("wServer.realm.setpieces." + args, true, true));
  303. piece.RenderSetPiece(player.Owner, new IntPoint((int)player.X + 1, (int)player.Y + 1));
  304. return true;
  305. }
  306. }
  307.  
  308. internal class SaveCommand : Command
  309. {
  310. public SaveCommand() : base("save", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  311. {
  312. }
  313.  
  314. protected override bool Process(Player player, string args)
  315. {
  316. foreach (var i in player.Manager.Clients.Values)
  317. {
  318. if (i != null)
  319. if (i.Player != null)
  320. {
  321. i.Player.UpdateCount++;
  322. i.Save();
  323. }
  324. }
  325. player.SendInfo("All players saved.");
  326. return true;
  327. }
  328. }
  329.  
  330. internal class EnemiesCommand : Command
  331. {
  332. public EnemiesCommand() : base("enemies", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead, Ranks.Developer })
  333. {
  334. }
  335.  
  336. protected override bool Process(Player player, string args)
  337. {
  338. var sb = new StringBuilder("Enemies: \r\n");
  339. foreach (var i in player.Owner.Enemies.Values)
  340. {
  341. sb.AppendLine(i.Name);
  342. }
  343.  
  344. player.SendInfo(sb.ToString());
  345. return true;
  346. }
  347. }
  348.  
  349. internal class OnlineCommand : Command
  350. {
  351. public OnlineCommand() : base("online", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead, Ranks.User, Ranks.Moderator, Ranks.Developer, Ranks.Spriter })
  352. {
  353. }
  354.  
  355. protected override bool Process(Player player, string args)
  356. {
  357. var sb = new StringBuilder("Users online: \r\n");
  358. foreach (var i in player.Manager.Clients.Values)
  359. {
  360. if (i.Player != null)
  361. sb.AppendFormat("{0}#{1}\r\n", i.Account.Name, i.Player.Owner.Name);
  362. }
  363.  
  364. player.SendInfo(sb.ToString());
  365. return true;
  366. }
  367. }
  368.  
  369. internal class Test2Command : Command
  370. {
  371. public Test2Command() : base("monitorworlds", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead, Ranks.User, Ranks.Moderator, Ranks.Developer, Ranks.Spriter })
  372. {
  373. }
  374.  
  375. protected override bool Process(Player player, string args)
  376. {
  377. var sb = new StringBuilder("Worlds: \r\n");
  378. foreach (var i in player.Manager.Worlds.Where(_ => _.Key != 0))
  379. {
  380. if (i.Value != null)
  381. sb.AppendFormat("{0}\r\n", i.Value.Name);
  382. }
  383. player.SendInfo(sb.ToString());
  384. return true;
  385. }
  386. }
  387.  
  388. internal class TestCommandSlender : Command
  389. {
  390. public TestCommandSlender() : base("monitor", new Ranks[] { Ranks.User, Ranks.Spriter, Ranks.Developer, Ranks.DeveloperManager, Ranks.Moderator, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  391. {
  392. }
  393.  
  394. protected override bool Process(Player player, string args)
  395. {
  396. var worldCount = player.Manager.Worlds.Where(_ => _.Key != 0).Count();
  397. player.SendInfo("There is : " + player.Manager.Clients.Count + " clients");
  398. player.SendInfo("There is : " + worldCount + " worlds");
  399.  
  400. var players = 0;
  401. var statics = 0;
  402. var pets = 0;
  403. var projectiles = 0;
  404. var enemies = 0;
  405. var nullPlayers = 0;
  406. var nullStatics = 0;
  407. var nullPets = 0;
  408. var nullProjectiles = 0;
  409. var nullEnemies = 0;
  410.  
  411. foreach (var i in player.Manager.Worlds.Where(_ => _.Key != 0))
  412. {
  413. foreach (var p in i.Value.Players.Values)
  414. {
  415. if (p.Owner == null)
  416. nullPlayers++;
  417. }
  418. foreach (var p in i.Value.Enemies.Values)
  419. {
  420. if (p.Owner == null)
  421. nullEnemies++;
  422. }
  423. foreach (var p in i.Value.StaticObjects.Values)
  424. {
  425. if (p.Owner == null)
  426. nullStatics++;
  427. }
  428. foreach (var p in i.Value.Pets.Values)
  429. {
  430. if (p.Owner == null)
  431. nullPets++;
  432. }
  433. foreach (var p in i.Value.Projectiles.Values)
  434. {
  435. if (p.Owner == null)
  436. nullProjectiles++;
  437. }
  438.  
  439. players += i.Value.Players.Count;
  440. statics += i.Value.StaticObjects.Count;
  441. pets += i.Value.Pets.Count;
  442. projectiles += i.Value.Projectiles.Count;
  443. enemies = i.Value.Enemies.Count;
  444. }
  445. player.SendInfo("There is : " + players + " players in total and there are: " + nullPlayers + " null players");
  446. player.SendInfo("There is : " + statics + " statics in total and there are: " + nullStatics + " null players");
  447. player.SendInfo("There is : " + pets + " pets in total and there are: " + nullPets + " null pets");
  448. player.SendInfo("There is : " + projectiles + " projectiles in total and there are: " + nullProjectiles + " null projectiles");
  449. player.SendInfo("There is : " + enemies + " enemies in total and there are: " + nullEnemies + " null enemies");
  450. return true;
  451. }
  452. }
  453.  
  454. internal class PlayersCommand : Command
  455. {
  456. public PlayersCommand() : base("players", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead, Ranks.User, Ranks.Moderator, Ranks.Developer, Ranks.Spriter })
  457. {
  458. }
  459.  
  460. protected override bool Process(Player player, string args)
  461. {
  462. var usrCount = 0;
  463. foreach (var i in player.Owner.Manager.Clients.Values)
  464. {
  465. if (i.Player != null)
  466. usrCount++;
  467. }
  468.  
  469. player.SendInfo("Players online: " + usrCount);
  470. return true;
  471. }
  472. }
  473.  
  474. internal class KillallCommand : Command
  475. {
  476. public KillallCommand() : base("killall", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  477. {
  478. }
  479.  
  480. protected override bool Process(Player player, string args)
  481. {
  482. var count = 0;
  483. Task.Factory.StartNew(() =>
  484. {
  485. foreach (var i in player.Owner.Enemies.Values)
  486. {
  487. var desc = i.ObjectDesc;
  488. if (desc != null && desc.ObjectId != null && desc.ObjectId.ContainsIgnoreCase(args))
  489. {
  490. i.Death();
  491. count++;
  492. }
  493. }
  494. player.SendInfo(string.Format("{0} enemy killed!", count));
  495. });
  496. return true;
  497. }
  498. }
  499.  
  500. internal class KickCommand : Command
  501. {
  502. public KickCommand() : base("kick", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead, Ranks.Moderator })
  503. {
  504. }
  505.  
  506. protected override bool Process(Player player, string args)
  507. {
  508. foreach (var i in player.Manager.Clients.Values)
  509. if (i.Account.Name.EqualsIgnoreCase(args))
  510. {
  511. i.Save();
  512. i.Disconnect();
  513. player.SendInfo("Player disconnected!");
  514. var dir = @"logs";
  515. if (!Directory.Exists(dir))
  516. {
  517. Directory.CreateDirectory(dir);
  518. }
  519. using (var writer = new StreamWriter(@"logs\KickLog.log", true))
  520. {
  521. writer.WriteLine($"{player.Name} kicked {args}");
  522. }
  523. return true;
  524. }
  525. player.SendError(string.Format("Player '{0}' could not be found!", args));
  526. return true;
  527. }
  528. }
  529.  
  530. internal class AnnounceCommand : Command
  531. {
  532. public AnnounceCommand() : base("announce", new Ranks[] { Ranks.Moderator, Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  533. {
  534. }
  535.  
  536. protected override bool Process(Player player, string args)
  537. {
  538. if ((Ranks)player.Client.Account.Rank == Ranks.Moderator)
  539. if (player.Name != "Trollmyster")
  540. return false;
  541. foreach (var client in player.Manager.Clients.Values)
  542. if(client.Player != null)
  543. client.Player.SendText("*D4*@Announcement", "<" + player.Name + "> " + args);
  544. var dir = @"logs";
  545. if (!Directory.Exists(dir))
  546. {
  547. Directory.CreateDirectory(dir);
  548. }
  549. using (var writer = new StreamWriter(@"logs\AnnounceLogs.log", true))
  550. {
  551. writer.WriteLine($"{player.Name} announced '{args}'");
  552. }
  553. return true;
  554. }
  555. }
  556.  
  557. internal class BDZone : Command
  558. {
  559. public BDZone() : base("bdzone", new Ranks[] { Ranks.User, Ranks.Spriter, Ranks.Developer, Ranks.DeveloperManager, Ranks.Moderator, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  560. {
  561. }
  562.  
  563. protected override bool Process(Player player, string args)
  564. {
  565. if (player.Client.Account.Rank > 0)
  566. player.Client.Reconnect(new ReconnectPacket
  567. {
  568. Host = "",
  569. Port = 2050,
  570. GameId = World.BDZONE_ID,
  571. Name = "Base Donator Zone",
  572. Key = Empty<byte>.Array,
  573. });
  574. else if (player.Client.Account.DonatorRank > 0)
  575. player.Client.Reconnect(new ReconnectPacket
  576. {
  577. Host = "",
  578. Port = 2050,
  579. GameId = World.BDZONE_ID,
  580. Name = "Base Donator Zone",
  581. Key = Empty<byte>.Array,
  582. });
  583. else
  584. player.SendError("You are not a donator.");
  585. return true;
  586. }
  587. }
  588.  
  589. internal class SummonCommand : Command
  590. {
  591. public SummonCommand() : base("summon", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  592. {
  593. }
  594.  
  595. protected override bool Process(Player player, string args)
  596. {
  597. foreach (var j in player.Manager.Worlds.Where(_ => _.Key != 0))
  598. foreach (var i in j.Value.Players.Values)
  599. if (i.Name.EqualsIgnoreCase(args))
  600. {
  601. if (i.Owner.Id != player.Owner.Id)
  602. {
  603. i.Client.Reconnect(new ReconnectPacket
  604. {
  605. Host = "",
  606. Port = 2050,
  607. GameId = player.Owner.Id,
  608. Name = player.Owner.Name,
  609. Key = Empty<byte>.Array,
  610. });
  611. }
  612. player.SendInfo("Player summoned!");
  613. var dir = @"logs";
  614. if (!Directory.Exists(dir))
  615. {
  616. Directory.CreateDirectory(dir);
  617. }
  618. using (var writer = new StreamWriter(@"logs\SummonLogs.log", true))
  619. {
  620. writer.WriteLine($"{player.Name} summoned {i.Name} to {player.Owner.Name}");
  621. }
  622. return true;
  623. }
  624. player.SendError(string.Format("Player '{0}' could not be found!", args));
  625. return false;
  626. }
  627. }
  628.  
  629. internal class VisitCommand : Command
  630. {
  631. public VisitCommand() : base("visit", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  632. {
  633. }
  634.  
  635. protected override bool Process(Player player, string args)
  636. {
  637. foreach (var i in player.Manager.Worlds.Where(_ => _.Key != 0))
  638. foreach (var j in i.Value.Players.Values)
  639. if (j.Name.EqualsIgnoreCase(args))
  640. {
  641. player.Client.Reconnect(new ReconnectPacket
  642. {
  643. Host = "",
  644. Port = 2050,
  645. GameId = j.Owner.Id,
  646. Name = j.Owner.Name,
  647. Key = Empty<byte>.Array,
  648. });
  649. player.SendInfo("Connecting to world!");
  650. var dir = @"logs";
  651. if (!Directory.Exists(dir))
  652. {
  653. Directory.CreateDirectory(dir);
  654. }
  655. using (var writer = new StreamWriter(@"logs\VisitLogs.log", true))
  656. {
  657. writer.WriteLine($"{player.Name} visited {j.Name} in {j.Owner.Name}");
  658. }
  659. return true;
  660. }
  661. player.SendError(string.Format("Player '{0}' could not be found!", args));
  662. return false;
  663. }
  664. }
  665.  
  666.  
  667. internal class VanishCommand : Command
  668. {
  669. public VanishCommand() : base("vanish", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  670. {
  671. }
  672.  
  673. protected override bool Process(Player player, string args)
  674. {
  675. if (!player.isNotVisible)
  676. {
  677. player.isNotVisible = true;
  678. player.Owner.PlayersCollision.Remove(player);
  679. if (player.Pet != null)
  680. player.Owner.LeaveWorld(player.Pet);
  681. player.SendInfo("You're now hidden from all players!");
  682. return true;
  683. }
  684. player.isNotVisible = false;
  685.  
  686. player.SendInfo("You're now visible to all players!");
  687. return true;
  688. }
  689. }
  690.  
  691. internal class DevChatCommand : Command //todo need to think abt this 1 alittle
  692. {
  693. public DevChatCommand() : base("dchat", new Ranks[] { Ranks.Developer, Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  694. {
  695. }
  696.  
  697. protected override bool Process(Player player, string args)
  698. {
  699. foreach (Client client in player.Manager.Clients.Values)
  700. if (client.Account.Rank > 3)
  701. client.Player.SendText("@[DEV] - " + player.Name + "", args);
  702. return true;
  703. }
  704. }
  705.  
  706. internal class StatCommand : Command
  707. {
  708. public StatCommand() : base("stat", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  709. {
  710. }
  711.  
  712. protected override bool Process(Player player, string args)
  713. {
  714. int index = args.IndexOf(' ');
  715. int num;
  716. string stat = args;
  717.  
  718. if (args.IndexOf(' ') > 0 && int.TryParse(args.Substring(index), out num))
  719. stat = args.Substring(0, args.IndexOf(' '));
  720. else
  721. num = 1;
  722.  
  723. switch (stat)
  724. {
  725. case "hp":
  726. player.Stats[0] = num;
  727. break;
  728. case "mp":
  729. player.Stats[1] = num;
  730. break;
  731. case "att":
  732. player.Stats[2] = num;
  733. break;
  734. case "def":
  735. player.Stats[3] = num;
  736. break;
  737. case "spd":
  738. player.Stats[4] = num;
  739. break;
  740. case "vit":
  741. player.Stats[5] = num;
  742. break;
  743. case "wis":
  744. player.Stats[6] = num;
  745. break;
  746. case "dex":
  747. player.Stats[7] = num;
  748. break;
  749. case "all":
  750. player.Stats[2] = num;
  751. player.Stats[3] = num;
  752. player.Stats[4] = num;
  753. player.Stats[5] = num;
  754. player.Stats[6] = num;
  755. player.Stats[7] = num;
  756. break;
  757. default:
  758. player.SendHelp("Usage: /stats <stat name> <amount>");
  759. break;
  760. }
  761. player.SendInfo("Successfully updated " + stat);
  762. return true;
  763. }
  764. }
  765.  
  766. internal class UpdateCommand : Command
  767. {
  768. public UpdateCommand() : base("update", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  769. {
  770. }
  771.  
  772. protected override bool Process(Player player, string args)
  773. {
  774. foreach (var i in player.Owner.Players.Values)
  775. i.UpdateCount++;
  776. return true;
  777. }
  778. }
  779.  
  780. //internal class IPBanCommand : Command
  781. //{
  782. // public IPBanCommand() : base("ipban", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  783. // {
  784. // }
  785.  
  786. // protected override bool Process(Player player, string args)
  787. // {
  788. // try
  789. // {
  790. // string playerName = args;
  791. // string playerIp = "";
  792. // player.Manager.Data.AddDatabaseOperation(db => {
  793. // var cmd = db.CreateQuery();
  794. // cmd.CommandText = "SELECT lastip FROM accounts WHERE UPPER(name) = UPPER(@name) LIMIT 1";
  795. // cmd.Parameters.AddWithValue("@name", playerName);
  796. // playerIp = (String)cmd.ExecuteScalar();
  797.  
  798. // if (playerIp != "")
  799. // db.IpBan(playerIp);
  800. // });
  801. // player.SendInfo("IP successfully banned: " + playerIp);
  802. // }
  803. // catch
  804. // {
  805. // player.SendError("Cannot IP Ban!");
  806. // return false;
  807. // }
  808. // return true;
  809. // }
  810. //}
  811.  
  812. //internal class UnIPBanCommand : Command
  813. //{
  814. // public UnIPBanCommand() : base("unipban", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  815. // {
  816. // }
  817.  
  818. // protected override bool Process(Player player, string args)
  819. // {
  820. // string playerIp = "";
  821. // string playerName = args;
  822. // try
  823. // {
  824. // player.Manager.Data.AddDatabaseOperation(db =>
  825. // {
  826. // var cmd = db.CreateQuery();
  827. // cmd.CommandText = "SELECT lastip FROM accounts WHERE UPPER(name) LIKE UPPER(@name) LIMIT 1";
  828. // cmd.Parameters.AddWithValue("@name", playerName);
  829. // playerIp = (String)cmd.ExecuteScalar();
  830.  
  831. // if (playerIp != "")
  832. // db.UnIpBan(playerIp);
  833. // });
  834. // player.SendInfo("User was successfully UnIPBanned");
  835. // }
  836. // catch
  837. // {
  838. // player.SendError("Cannot UnIP Ban!");
  839. // return false;
  840. // }
  841. // return true;
  842. // }
  843. //}
  844.  
  845. internal class BanCommand : Command
  846. {
  847. public BanCommand() : base("ban", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead, Ranks.Moderator })
  848. {
  849. }
  850.  
  851. protected override bool Process(Player player, string args)
  852. {
  853. var name = args;
  854.  
  855. if (name == "") return false;
  856. using (var db = new Database(Program.Settings.GetValue("conn")))
  857. {
  858. var cmd = db.CreateQuery();
  859.  
  860. cmd.CommandText = "UPDATE accounts SET banned=1 WHERE name=@name LIMIT 1";
  861. cmd.Parameters.AddWithValue("@name", name);
  862.  
  863. if (cmd.ExecuteNonQuery() <= 0) return false;
  864. player.SendInfo("User was successfully banned");
  865. foreach (var i in player.Manager.Clients.Values.Where(i => i.Account.Name.EqualsIgnoreCase(name)))
  866. i.Disconnect();
  867. };
  868. var dir = @"logs";
  869. if (!Directory.Exists(dir))
  870. {
  871. Directory.CreateDirectory(dir);
  872. }
  873. using (var writer = new StreamWriter(@"logs\BanLog.log", true))
  874. {
  875. writer.WriteLine($"{player.Name} banned {name}");
  876. }
  877. return true;
  878. }
  879. }
  880. internal class UnBanCommand : Command
  881. {
  882. public UnBanCommand() : base("unban", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead, Ranks.Moderator })
  883. {
  884. }
  885.  
  886. protected override bool Process(Player player, string args)
  887. {
  888. var name = args;
  889.  
  890. if (name == "") return false;
  891. using (var db = new Database(Program.Settings.GetValue("conn")))
  892. {
  893. var cmd = db.CreateQuery();
  894.  
  895. cmd.CommandText = "UPDATE accounts SET banned=0 WHERE name=@name LIMIT 1";
  896. cmd.Parameters.AddWithValue("@name", name);
  897.  
  898. if (cmd.ExecuteNonQuery() <= 0)
  899. return false;
  900. player.SendInfo("User was successfully unbanned");
  901. };
  902. var dir = @"logs";
  903. if (!Directory.Exists(dir))
  904. {
  905. Directory.CreateDirectory(dir);
  906. }
  907. using (var writer = new StreamWriter(@"logs\UnbanLogs.log", true))
  908. {
  909. writer.WriteLine($"{player.Name} unbanned {name}");
  910. }
  911. return true;
  912. }
  913. }
  914.  
  915. internal class MuteCommand : Command
  916. {
  917. public MuteCommand() : base("mute", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead, Ranks.Moderator })
  918. {
  919. }
  920.  
  921. protected override bool Process(Player player, string args)
  922. {
  923. var name = args;
  924.  
  925. if (name == "") return false;
  926. using (var db = new Database(Program.Settings.GetValue("conn")))
  927. {
  928. var cmd = db.CreateQuery();
  929.  
  930. cmd.CommandText = "UPDATE accounts SET muted=1 WHERE name=@name LIMIT 1";
  931. cmd.Parameters.AddWithValue("@name", name);
  932.  
  933. if (cmd.ExecuteNonQuery() <= 0) return false;
  934. player.SendInfo("User was successfully muted");
  935. foreach (var i in player.Owner.Players)
  936. {
  937. var x = db.GetAccount(i.Value.AccountId);
  938. var usr = i.Value;
  939.  
  940. usr.Client.Account.Muted = x.Muted;
  941.  
  942. usr.UpdateCount++;
  943. }
  944. };
  945. var dir = @"logs";
  946. if (!Directory.Exists(dir))
  947. {
  948. Directory.CreateDirectory(dir);
  949. }
  950. using (var writer = new StreamWriter(@"logs\MuteLogs.log", true))
  951. {
  952. writer.WriteLine($"{player.Name} muted {name}");
  953. }
  954. return true;
  955. }
  956. }
  957. internal class UnMuteCommand : Command
  958. {
  959. public UnMuteCommand() : base("unmute", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead, Ranks.Moderator })
  960. {
  961. }
  962.  
  963. protected override bool Process(Player player, string args)
  964. {
  965. var name = args;
  966.  
  967. if (name == "") return false;
  968. using (var db = new Database(Program.Settings.GetValue("conn")))
  969. {
  970. var cmd = db.CreateQuery();
  971.  
  972. cmd.CommandText = "UPDATE accounts SET muted=0 WHERE name=@name LIMIT 1";
  973. cmd.Parameters.AddWithValue("@name", name);
  974.  
  975. if (cmd.ExecuteNonQuery() <= 0) return false;
  976. player.SendInfo("User was successfully unmuted");
  977. foreach (var i in player.Owner.Players)
  978. {
  979. var x = db.GetAccount(i.Value.AccountId);
  980. var usr = i.Value;
  981.  
  982. usr.Client.Account.Muted = x.Muted;
  983.  
  984. usr.UpdateCount++;
  985. }
  986. };
  987. var dir = @"logs";
  988. if (!Directory.Exists(dir))
  989. {
  990. Directory.CreateDirectory(dir);
  991. }
  992. using (var writer = new StreamWriter(@"logs\UnmuteLogs.log", true))
  993. {
  994. writer.WriteLine($"{player.Name} unmuted {name}");
  995. }
  996. return true;
  997. }
  998. }
  999.  
  1000. internal class AdminBuffCommand : Command
  1001. {
  1002. public AdminBuffCommand() : base("abuff", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  1003. {
  1004. }
  1005.  
  1006. protected override bool Process(Player player, string args)
  1007. {
  1008. var index = Convert.ToInt32(args);
  1009. var data = new ItemData
  1010. {
  1011. NamePrefix = "Admin",
  1012. NameColor = 0xFF1297,
  1013. DmgPercentage = 1000,
  1014. Soulbound = true
  1015. };
  1016. if (player.Inventory.Data[index] == null)
  1017. player.Inventory.Data[index] = data;
  1018. else
  1019. {
  1020. player.Inventory.Data[index].NamePrefix = data.NamePrefix;
  1021. player.Inventory.Data[index].NameColor = data.NameColor;
  1022. player.Inventory.Data[index].DmgPercentage = data.DmgPercentage;
  1023. player.Inventory.Data[index].Soulbound = data.Soulbound;
  1024. }
  1025. return true;
  1026. }
  1027. }
  1028.  
  1029. internal class StrangifyCommand : Command
  1030. {
  1031. public StrangifyCommand() : base("strangify", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  1032. {
  1033. }
  1034.  
  1035. protected override bool Process(Player player, string args)
  1036. {
  1037. var index = Convert.ToInt32(args);
  1038. player.SendInfo("Stranged");
  1039. var data = new ItemData
  1040. {
  1041. NamePrefix = "Strange",
  1042. NameColor = 0xFF5A28,
  1043. Strange = true
  1044. };
  1045. if (player.Inventory.Data[index] == null)
  1046. player.Inventory.Data[index] = data;
  1047. else
  1048. {
  1049. player.Inventory.Data[index].NamePrefix = data.NamePrefix;
  1050. player.Inventory.Data[index].NameColor = data.NameColor;
  1051. player.Inventory.Data[index].Strange = data.Strange;
  1052. }
  1053. return true;
  1054. }
  1055. }
  1056.  
  1057. internal class SkinEffectCommand : Command
  1058. {
  1059. public SkinEffectCommand() : base("skineff", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  1060. {
  1061. }
  1062.  
  1063. protected override bool Process(Player player, string args)
  1064. {
  1065. player.XmlEffect = args;
  1066. return true;
  1067. }
  1068. }
  1069.  
  1070. internal class RevealCommand : Command
  1071. {
  1072. public RevealCommand() : base("reveal", new Ranks[] { Ranks.DeveloperManager, Ranks.Admin, Ranks.HeadModerator, Ranks.HeadAdmin, Ranks.ServerHead })
  1073. {
  1074. }
  1075.  
  1076. protected override bool Process(Player player, string args)
  1077. {
  1078. player.Reveal = !player.Reveal;
  1079. player.SendInfo("Reveal: " + player.Reveal.ToString());
  1080. return true;
  1081. }
  1082. }
  1083. }
Add Comment
Please, Sign In to add comment