1 | using System;
|
---|
2 | using System.Collections.Generic;
|
---|
3 | using System.IO;
|
---|
4 | using UnityEngine;
|
---|
5 |
|
---|
6 | namespace CoppisAdditions.CustomCommands
|
---|
7 | {
|
---|
8 | public class UnlockAll : ConsoleCmdAbstract
|
---|
9 | {
|
---|
10 | public override string GetDescription ()
|
---|
11 | {
|
---|
12 | return "unlock all secure loots, chests and doors for the current player.";
|
---|
13 | }
|
---|
14 |
|
---|
15 | public override string GetHelp ()
|
---|
16 | {
|
---|
17 | return "Unlock all secure loots, chests and doors for the current player. After using this command you need to leave and reenter the game to take effect.";
|
---|
18 | }
|
---|
19 |
|
---|
20 | public override string[] GetCommands ()
|
---|
21 | {
|
---|
22 | return new string[] { "unlockall" };
|
---|
23 | }
|
---|
24 |
|
---|
25 | public override void Execute (List<string> _params, CommandSenderInfo _senderInfo)
|
---|
26 | {
|
---|
27 | try {
|
---|
28 | if (_senderInfo.RemoteClientInfo == null || _senderInfo.RemoteClientInfo.playerId == null || _senderInfo.RemoteClientInfo.playerId.Equals ("")) {
|
---|
29 | SdtdConsole.Instance.Output ("Unable to apply this command. You need be a player to execute it.");
|
---|
30 | return;
|
---|
31 | }
|
---|
32 | ClientInfo ci = ConsoleHelper.ParseParamIdOrName (_senderInfo.RemoteClientInfo.playerName);
|
---|
33 | ChunkClusterList chunklist = GameManager.Instance.World.ChunkClusters;
|
---|
34 | string SteamID = _senderInfo.RemoteClientInfo.playerId;
|
---|
35 | int lootsUnlocked = 0;
|
---|
36 | int doorsUnlocked = 0;
|
---|
37 | for (int i = 0; i < chunklist.Count; i++) {
|
---|
38 | ChunkCluster chunk = chunklist [i];
|
---|
39 | List<Chunk> clist = chunk.GetChunkArray ();
|
---|
40 | foreach (Chunk c in clist) {
|
---|
41 | DictionarySave<Vector3i, TileEntity> tiles = c.GetTileEntities ();
|
---|
42 | foreach (TileEntity tile in tiles.Values) {
|
---|
43 | TileEntityType type = tile.GetTileEntityType ();
|
---|
44 | try {
|
---|
45 | if (type.ToString ().Equals ("Campfile")) {
|
---|
46 | //TileEntityCampfire campfire = (TileEntityCampfire)tile;
|
---|
47 | //SdtdConsole.Instance.Output("campfire: " + );
|
---|
48 | } else if (type.ToString ().Equals ("Loot")) {
|
---|
49 | //TileEntityLootContainer loot = (TileEntityLootContainer) tile;
|
---|
50 |
|
---|
51 | } else if (type.ToString ().Equals ("Forge")) {
|
---|
52 | //TileEntityForge forge = (TileEntityForge) tile;
|
---|
53 | } else if (type.ToString ().Equals ("SecureLoot")) {
|
---|
54 | TileEntitySecureLootContainer secureLoot = (TileEntitySecureLootContainer)tile;
|
---|
55 | //SdtdConsole.Instance.Output("secure loot ower: " + secureLoot.GetOwner());
|
---|
56 | List<string> users = secureLoot.GetUsers ();
|
---|
57 | if (!users.Contains (SteamID)) {
|
---|
58 | users.Add (SteamID);
|
---|
59 | lootsUnlocked = lootsUnlocked + 1;
|
---|
60 | }
|
---|
61 | } else if (type.ToString ().Equals ("SecureDoor")) {
|
---|
62 | TileEntitySecureDoor secureDoor = (TileEntitySecureDoor)tile;
|
---|
63 | List<string> users = secureDoor.GetUsers ();
|
---|
64 | if (!users.Contains (SteamID)) {
|
---|
65 | users.Add (SteamID);
|
---|
66 | doorsUnlocked = doorsUnlocked + 1;
|
---|
67 | }
|
---|
68 | }
|
---|
69 | } catch (Exception) {
|
---|
70 |
|
---|
71 | }
|
---|
72 | }
|
---|
73 | }
|
---|
74 |
|
---|
75 |
|
---|
76 | if (ci != null) {
|
---|
77 | ci.SendPackage (new NetPackageChunkClusterInfo (chunk));
|
---|
78 | }
|
---|
79 | }
|
---|
80 | SdtdConsole.Instance.Output ("Secure Loots/Chest unlocked: " + lootsUnlocked);
|
---|
81 | SdtdConsole.Instance.Output ("Secure Doors unlocked: " + doorsUnlocked);
|
---|
82 | SdtdConsole.Instance.Output ("*Remember: you need to leave and enter again to apply this command on server`s map");
|
---|
83 | } catch (Exception e) {
|
---|
84 | Log.Out ("Error in UnlockAll.Run: " + e);
|
---|
85 | }
|
---|
86 |
|
---|
87 | }
|
---|
88 | }
|
---|
89 | }
|
---|