コード例 #1
0
        public static TileEntity Instantiate(TileEntityType type)
        {
            switch (type)
            {
            case TileEntityType.Campfire:
                return(new TileEntityCampfire());

            case TileEntityType.Forge:
                return(new TileEntityForge());

            case TileEntityType.Loot:
                return(new TileEntityLootContainer());

            case TileEntityType.SecureDoor:
                return(new TileEntitySecureDoor());

            case TileEntityType.SecureLoot:
                return(new TileEntitySecureLootContainer());

            case TileEntityType.Sign:
                return(new TileEntitySign());

            case TileEntityType.Trader:
                return(new TileEntityTrader());

            case TileEntityType.VendingMachine:
                return(new TileEntityVendingMachine());

            case TileEntityType.Workstation:
                return(new TileEntityWorkstation());

            default:
                return(new TileEntity());
            }
        }
コード例 #2
0
ファイル: PatchTileEntity.cs プロジェクト: rdeaton/7d2d_mods
 static bool Prefix(ref TileEntity __result, TileEntityType type, Chunk _chunk)
 {
     if ((int)type == 0x17)
     {
         __result = new ImprovedTileEntitySecureLootContainer(_chunk);
         return(false);
     }
     return(true);
 }
コード例 #3
0
 static TileEntity Postfix(TileEntity __result, TileEntityType type, Chunk _chunk)
 {
     if (__result == null)
     {
         switch (type)
         {
         case global::TileEntityType.BlockTransformer:
             return(new global::TileEntityBlockTransformer(_chunk));
         }
     }
     return(__result);
 }
コード例 #4
0
ファイル: TileEntity.cs プロジェクト: MegaMax5000/MegaGame
        public TileEntity(GameBoard gb, string name, int maxHealth, TileEntityType tileEntityType)
        {
            this.name             = name;
            this.maxHealth        = maxHealth;
            this.gameBoard        = gb;
            this.uid              = System.Guid.NewGuid().ToString();
            this.MyTileEntityType = tileEntityType;

            // Update health every .5 seconds
            TimedActionManager.GetInstance().RegisterAction(
                () =>
            {
                DoTick();
            }
                , this, .5f);
        }
コード例 #5
0
        public static void ChestCheck()
        {
            LinkedList <Chunk> chunkArray = new LinkedList <Chunk>();
            DictionaryList <Vector3i, TileEntity> tiles = new DictionaryList <Vector3i, TileEntity>();
            ChunkClusterList chunklist = GameManager.Instance.World.ChunkClusters;

            for (int i = 0; i < chunklist.Count; i++)
            {
                ChunkCluster chunk = chunklist[i];
                chunkArray = chunk.GetChunkArray();
                foreach (Chunk _c in chunkArray)
                {
                    tiles = _c.GetTileEntities();
                    foreach (TileEntity tile in tiles.dict.Values)
                    {
                        TileEntityType type = tile.GetTileEntityType();
                        if (type.ToString().Equals("SecureLoot"))
                        {
                            TileEntitySecureLootContainer SecureLoot = (TileEntitySecureLootContainer)tile;
                            AdminToolsClientInfo          Admin      = GameManager.Instance.adminTools.GetAdminToolsClientInfo(SecureLoot.GetOwner());
                            if (Admin.PermissionLevel > Admin_Level)
                            {
                                ItemStack[] items      = SecureLoot.items;
                                int         slotNumber = 0;
                                foreach (ItemStack item in items)
                                {
                                    if (!item.IsEmpty())
                                    {
                                        ItemClass _itemClass = ItemClass.list[item.itemValue.type];
                                        string    _itemName  = _itemClass.GetItemName();
                                        if (dict.Contains(_itemName))
                                        {
                                            int       _count    = item.count;
                                            ItemStack itemStack = new ItemStack();
                                            SecureLoot.UpdateSlot(slotNumber, itemStack);
                                            Vector3i _chestPos = SecureLoot.localChunkPos;
                                            Log.Out(string.Format("[SERVERTOOLS] Removed {0} {1}, from a chest located at {2} {3} {4}", item.count, _itemName, _chestPos.x, _chestPos.y, _chestPos.z));
                                        }
                                    }
                                    slotNumber++;
                                }
                            }
                        }
                    }
                }
            }
        }
コード例 #6
0
        public override void Execute(List <string> _params, CommandSenderInfo _senderInfo)
        {
            try
            {
                if (_params.Count != 1)
                {
                    SingletonMonoBehaviour <SdtdConsole> .Instance.Output(string.Format("[SERVERTOOLS] Wrong number of arguments, expected 1, found '{0}'", _params.Count));

                    return;
                }
                if (!string.IsNullOrEmpty(_senderInfo.RemoteClientInfo.CrossplatformId.CombinedString))
                {
                    LinkedList <Chunk> chunkArray = new LinkedList <Chunk>();
                    DictionaryList <Vector3i, TileEntity> tiles = new DictionaryList <Vector3i, TileEntity>();
                    ChunkClusterList chunklist = GameManager.Instance.World.ChunkClusters;
                    for (int i = 0; i < chunklist.Count; i++)
                    {
                        ChunkCluster chunk = chunklist[i];
                        chunkArray = chunk.GetChunkArray();
                        foreach (Chunk _c in chunkArray)
                        {
                            tiles = _c.GetTileEntities();
                            foreach (TileEntity tile in tiles.dict.Values)
                            {
                                TileEntityType type = tile.GetTileEntityType();
                                if (type.ToString().Equals("SecureLoot"))
                                {
                                    TileEntitySecureLootContainer SecureLoot = (TileEntitySecureLootContainer)tile;
                                    if (!SecureLoot.IsUserAllowed(_senderInfo.RemoteClientInfo.CrossplatformId))
                                    {
                                        List <PlatformUserIdentifierAbs> _users = SecureLoot.GetUsers();
                                        _users.Add(_senderInfo.RemoteClientInfo.CrossplatformId);
                                        SecureLoot.SetModified();
                                    }
                                }
                            }
                        }
                    }
                }
                SingletonMonoBehaviour <SdtdConsole> .Instance.Output(string.Format("[SERVERTOOLS] Secure loot access set for '{0}' in all loaded areas. Unloaded areas have not changed", _senderInfo.RemoteClientInfo.CrossplatformId.CombinedString));
            }
            catch (Exception e)
            {
                Log.Out(string.Format("[SERVERTOOLS] Error in SecureLootAccessConsole.Execute: {0}", e.Message));
            }
        }
コード例 #7
0
 public override void Execute(List <string> _params, CommandSenderInfo _senderInfo)
 {
     try
     {
         if (_params.Count != 1)
         {
             SdtdConsole.Instance.Output(string.Format("[SERVERTOOLS] Wrong number of arguments, expected 1, found {0}", _params.Count));
             return;
         }
         if (!string.IsNullOrEmpty(_senderInfo.RemoteClientInfo.playerId))
         {
             LinkedList <Chunk> chunkArray = new LinkedList <Chunk>();
             DictionaryList <Vector3i, TileEntity> tiles = new DictionaryList <Vector3i, TileEntity>();
             ChunkClusterList chunklist = GameManager.Instance.World.ChunkClusters;
             for (int i = 0; i < chunklist.Count; i++)
             {
                 ChunkCluster chunk = chunklist[i];
                 chunkArray = chunk.GetChunkArray();
                 foreach (Chunk _c in chunkArray)
                 {
                     tiles = _c.GetTileEntities();
                     foreach (TileEntity tile in tiles.dict.Values)
                     {
                         TileEntityType type = tile.GetTileEntityType();
                         if (type.ToString().Equals("SecureDoor"))
                         {
                             TileEntitySecureDoor SecureDoor = (TileEntitySecureDoor)tile;
                             if (!SecureDoor.IsUserAllowed(_senderInfo.RemoteClientInfo.playerId))
                             {
                                 List <string> _users = SecureDoor.GetUsers();
                                 _users.Add(_senderInfo.RemoteClientInfo.playerId);
                                 SecureDoor.SetModified();
                             }
                         }
                     }
                 }
             }
         }
         SdtdConsole.Instance.Output(string.Format("[SERVERTOOLS] Door access set for {0}", _senderInfo.RemoteClientInfo.playerId));
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in SecureDoorAccess.Execute: {0}", e.Message));
     }
 }
コード例 #8
0
ファイル: Tile.cs プロジェクト: PixelMute/MysteryRogueLite
        public void SetEntityOnTile(TileEntity entity)
        {
            entityOnTile = entity;

            if (entityOnTile == null)
            {
                tileEntityType = TileEntityType.empty;
            }
            else if (entityOnTile is Wall)
            {
                tileEntityType = TileEntityType.wall;
            }
            else if (entityOnTile is EnemyBody && !(((EnemyBody)entityOnTile).AI is BossBrain))
            {
                tileEntityType = TileEntityType.enemy;
            }
            else if (entityOnTile is PlayerController)
            {
                tileEntityType = TileEntityType.player;
            }
            //else if (entityOnTile is Stairs)
            //tileEntityType = ((Stairs)entityOnTile).IsUp ? TileEntityType.stairsUp : TileEntityType.stairsDown;
        }
コード例 #9
0
 public static void CheckBox(ClientInfo _cInfo, string _price)
 {
     try
     {
         EntityPlayer player = PersistentOperations.GetEntityPlayer(_cInfo.entityId);
         if (player != null)
         {
             if (int.TryParse(_price, out int auctionPrice))
             {
                 if (auctionPrice > 0)
                 {
                     if (PersistentContainer.Instance.Players[_cInfo.CrossplatformId.CombinedString].Auction == null)
                     {
                         Dictionary <int, ItemDataSerializable> auctionItems = new Dictionary <int, ItemDataSerializable>();
                         PersistentContainer.Instance.Players[_cInfo.CrossplatformId.CombinedString].Auction = auctionItems;
                         PersistentContainer.DataChange = true;
                     }
                     else if (PersistentContainer.Instance.Players[_cInfo.CrossplatformId.CombinedString].Auction.Count < Total_Items)
                     {
                         List <Chunk> chunks = new List <Chunk>();
                         DictionaryList <Vector3i, TileEntity> tiles = new DictionaryList <Vector3i, TileEntity>();
                         Vector3 _position = player.position;
                         Chunk   chunk     = (Chunk)GameManager.Instance.World.GetChunkFromWorldPos((int)_position.x - 5, (int)_position.y, (int)_position.z);
                         if (chunk != null && !chunks.Contains(chunk))
                         {
                             chunks.Add(chunk);
                         }
                         chunk = (Chunk)GameManager.Instance.World.GetChunkFromWorldPos((int)_position.x + 5, (int)_position.y, (int)_position.z);
                         if (chunk != null && !chunks.Contains(chunk))
                         {
                             chunks.Add(chunk);
                         }
                         chunk = (Chunk)GameManager.Instance.World.GetChunkFromWorldPos((int)_position.x, (int)_position.y, (int)_position.z - 5);
                         if (chunk != null && !chunks.Contains(chunk))
                         {
                             chunks.Add(chunk);
                         }
                         chunk = (Chunk)GameManager.Instance.World.GetChunkFromWorldPos((int)_position.x + 5, (int)_position.y, (int)_position.z + 5);
                         if (chunk != null && !chunks.Contains(chunk))
                         {
                             chunks.Add(chunk);
                         }
                         for (int i = 0; i < chunks.Count; i++)
                         {
                             tiles = chunks[i].GetTileEntities();
                             foreach (TileEntity tile in tiles.dict.Values)
                             {
                                 TileEntityType type = tile.GetTileEntityType();
                                 if (type.ToString().Equals("SecureLoot"))
                                 {
                                     TileEntitySecureLootContainer SecureLoot = (TileEntitySecureLootContainer)tile;
                                     Vector3i vec3i = SecureLoot.ToWorldPos();
                                     if ((vec3i.x - player.position.x) * (vec3i.x - player.position.x) + (vec3i.z - player.position.z) * (vec3i.z - player.position.z) <= 3 * 3)
                                     {
                                         if (vec3i.y >= (int)player.position.y - 3 && vec3i.y <= (int)player.position.y + 3)
                                         {
                                             if (SecureLoot.IsUserAllowed(_cInfo.InternalId) && !SecureLoot.IsUserAccessing())
                                             {
                                                 ItemStack[] items = SecureLoot.items;
                                                 ItemStack   item  = items[0];
                                                 if (item != null && !item.IsEmpty())
                                                 {
                                                     if (item.itemValue.Modifications.Length > 0)
                                                     {
                                                         for (int j = 0; j < item.itemValue.Modifications.Length; j++)
                                                         {
                                                             if (!item.itemValue.Modifications[j].IsEmpty())
                                                             {
                                                                 Phrases.Dict.TryGetValue("Auction18", out string phrase);
                                                                 ChatHook.ChatMessage(_cInfo, Config.Chat_Response_Color + phrase + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
                                                                 return;
                                                             }
                                                         }
                                                     }
                                                     if (item.itemValue.CosmeticMods.Length > 0)
                                                     {
                                                         for (int j = 0; j < item.itemValue.CosmeticMods.Length; j++)
                                                         {
                                                             if (!item.itemValue.CosmeticMods[j].IsEmpty())
                                                             {
                                                                 Phrases.Dict.TryGetValue("Auction18", out string _phrase);
                                                                 ChatHook.ChatMessage(_cInfo, Config.Chat_Response_Color + _phrase + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
                                                                 return;
                                                             }
                                                         }
                                                     }
                                                     int id = GenerateAuctionId();
                                                     if (id > 0)
                                                     {
                                                         AuctionItems.Add(id, _cInfo.CrossplatformId.CombinedString);
                                                         items[0] = ItemStack.Empty.Clone();
                                                         ItemDataSerializable serializedItemStack = new ItemDataSerializable();
                                                         {
                                                             serializedItemStack.name     = item.itemValue.ItemClass.GetItemName();
                                                             serializedItemStack.count    = item.count;
                                                             serializedItemStack.useTimes = item.itemValue.UseTimes;
                                                             serializedItemStack.quality  = item.itemValue.Quality;
                                                             serializedItemStack.seed     = item.itemValue.Seed;
                                                             if (item.itemValue.Modifications.Length > 0)
                                                             {
                                                                 serializedItemStack.modSlots = item.itemValue.Modifications.Length;
                                                             }
                                                             else
                                                             {
                                                                 serializedItemStack.modSlots = 0;
                                                             }
                                                             if (item.itemValue.CosmeticMods.Length > 0)
                                                             {
                                                                 serializedItemStack.cosmeticSlots = item.itemValue.CosmeticMods.Length;
                                                             }
                                                             else
                                                             {
                                                                 serializedItemStack.cosmeticSlots = 0;
                                                             }
                                                         }
                                                         if (PersistentContainer.Instance.Players[_cInfo.CrossplatformId.CombinedString].Auction != null && PersistentContainer.Instance.Players[_cInfo.CrossplatformId.CombinedString].Auction.Count > 0)
                                                         {
                                                             PersistentContainer.Instance.Players[_cInfo.CrossplatformId.CombinedString].Auction.Add(id, serializedItemStack);
                                                         }
                                                         else
                                                         {
                                                             Dictionary <int, ItemDataSerializable> auctionItems = new Dictionary <int, ItemDataSerializable>
                                                             {
                                                                 { id, serializedItemStack }
                                                             };
                                                             PersistentContainer.Instance.Players[_cInfo.CrossplatformId.CombinedString].Auction = auctionItems;
                                                         }
                                                         if (PersistentContainer.Instance.AuctionPrices != null && PersistentContainer.Instance.AuctionPrices.Count > 0)
                                                         {
                                                             PersistentContainer.Instance.AuctionPrices.Add(id, auctionPrice);
                                                         }
                                                         else
                                                         {
                                                             Dictionary <int, int> _auctionPrices = new Dictionary <int, int>
                                                             {
                                                                 { id, auctionPrice }
                                                             };
                                                             PersistentContainer.Instance.AuctionPrices = _auctionPrices;
                                                         }
                                                         tile.SetModified();
                                                         PersistentContainer.DataChange = true;
                                                         if (item.itemValue.HasQuality)
                                                         {
                                                             using (StreamWriter sw = new StreamWriter(Filepath, true, Encoding.UTF8))
                                                             {
                                                                 sw.WriteLine(string.Format("{0}: '{1}' '{2}' named '{3}' has added '{4}' '{5}', '{6}' quality, '{7}' percent durability for '{8}' '{9}'", DateTime.Now, _cInfo.PlatformId.CombinedString, _cInfo.CrossplatformId.CombinedString, _cInfo.playerName, item.count, item.itemValue.ItemClass.GetItemName(), item.itemValue.Quality, item.itemValue.UseTimes / item.itemValue.MaxUseTimes * 100, _price, Wallet.Currency_Name));
                                                                 sw.WriteLine();
                                                                 sw.Flush();
                                                                 sw.Close();
                                                             }
                                                         }
                                                         else
                                                         {
                                                             using (StreamWriter sw = new StreamWriter(Filepath, true, Encoding.UTF8))
                                                             {
                                                                 sw.WriteLine(string.Format("{0}: '{1}' '{2}' named '{3}' has added '{4}' '{5}' for '{6}' '{7}'", DateTime.Now, _cInfo.PlatformId.CombinedString, _cInfo.CrossplatformId.CombinedString, _cInfo.playerName, item.count, item.itemValue.ItemClass.GetItemName(), _price, Wallet.Currency_Name));
                                                                 sw.WriteLine();
                                                                 sw.Flush();
                                                                 sw.Close();
                                                             }
                                                         }
                                                         Phrases.Dict.TryGetValue("Auction1", out string phrase);
                                                         phrase = phrase.Replace("{Name}", item.itemValue.ItemClass.GetLocalizedItemName() ?? item.itemValue.ItemClass.GetItemName());
                                                         phrase = phrase.Replace("{Value}", id.ToString());
                                                         ChatHook.ChatMessage(_cInfo, Config.Chat_Response_Color + phrase + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
                                                         return;
                                                     }
                                                     else
                                                     {
                                                         Phrases.Dict.TryGetValue("Auction16", out string _phrase);
                                                         ChatHook.ChatMessage(_cInfo, Config.Chat_Response_Color + _phrase + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                     else
                     {
                         Phrases.Dict.TryGetValue("Auction2", out string phrase);
                         phrase = phrase.Replace("{Command_Prefix1}", ChatHook.Chat_Command_Prefix1);
                         phrase = phrase.Replace("{Command_auction_cancel}", Command_auction_cancel);
                         ChatHook.ChatMessage(_cInfo, Config.Chat_Response_Color + phrase + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
                     }
                 }
                 else
                 {
                     Phrases.Dict.TryGetValue("Auction3", out string phrase);
                     ChatHook.ChatMessage(_cInfo, Config.Chat_Response_Color + phrase + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
                 }
             }
             else
             {
                 Phrases.Dict.TryGetValue("Auction4", out string phrase);
                 ChatHook.ChatMessage(_cInfo, Config.Chat_Response_Color + phrase + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in Auction.CheckBox: {0}", e.Message));
     }
 }
コード例 #10
0
 public MoveableAIEntity(GameBoard gb, string name, int maxHealth, TileEntityType t) : base(gb, name, maxHealth, t)
 {
 }
コード例 #11
0
 public static void CheckBox(ClientInfo _cInfo, string _price)
 {
     try
     {
         if (GameManager.Instance.World.Players.dict.ContainsKey(_cInfo.entityId))
         {
             EntityPlayer _player = GameManager.Instance.World.Players.dict[_cInfo.entityId];
             if (_player != null)
             {
                 if (int.TryParse(_price, out int _auctionPrice))
                 {
                     if (_auctionPrice > 0)
                     {
                         if (PersistentContainer.Instance.Players[_cInfo.playerId].Auction == null)
                         {
                             Dictionary <int, ItemDataSerializable> _auctionItems = new Dictionary <int, ItemDataSerializable>();
                             PersistentContainer.Instance.Players[_cInfo.playerId].Auction = _auctionItems;
                             PersistentContainer.Instance.Save();
                         }
                         else if (PersistentContainer.Instance.Players[_cInfo.playerId].Auction.Count < Total_Items)
                         {
                             LinkedList <Chunk> _chunkArray = new LinkedList <Chunk>();
                             DictionaryList <Vector3i, TileEntity> _tiles = new DictionaryList <Vector3i, TileEntity>();
                             ChunkClusterList _chunklist = GameManager.Instance.World.ChunkClusters;
                             for (int i = 0; i < _chunklist.Count; i++)
                             {
                                 ChunkCluster _chunk = _chunklist[i];
                                 _chunkArray = _chunk.GetChunkArray();
                                 foreach (Chunk _c in _chunkArray)
                                 {
                                     _tiles = _c.GetTileEntities();
                                     foreach (TileEntity _tile in _tiles.dict.Values)
                                     {
                                         TileEntityType _type = _tile.GetTileEntityType();
                                         if (_type.ToString().Equals("SecureLoot"))
                                         {
                                             TileEntitySecureLootContainer SecureLoot = (TileEntitySecureLootContainer)_tile;
                                             Vector3i vec3i = SecureLoot.ToWorldPos();
                                             if ((vec3i.x - _player.position.x) * (vec3i.x - _player.position.x) + (vec3i.z - _player.position.z) * (vec3i.z - _player.position.z) <= 3 * 3)
                                             {
                                                 if (vec3i.y >= (int)_player.position.y - 3 && vec3i.y <= (int)_player.position.y + 3)
                                                 {
                                                     if (SecureLoot.IsUserAllowed(_cInfo.playerId) && !SecureLoot.IsUserAccessing())
                                                     {
                                                         ItemStack[] items = SecureLoot.items;
                                                         ItemStack   _item = items[0];
                                                         if (_item != null && !_item.IsEmpty())
                                                         {
                                                             int _id = GenerateAuctionId();
                                                             if (_id > 0)
                                                             {
                                                                 AuctionItems.Add(_id, _cInfo.playerId);
                                                                 items[0] = ItemStack.Empty.Clone();
                                                                 if (PersistentContainer.Instance.Players[_cInfo.playerId].Auction != null && PersistentContainer.Instance.Players[_cInfo.playerId].Auction.Count > 0)
                                                                 {
                                                                     ItemDataSerializable _serializedItemStack = new ItemDataSerializable();
                                                                     {
                                                                         _serializedItemStack.name     = _item.itemValue.ItemClass.GetItemName();
                                                                         _serializedItemStack.count    = _item.count;
                                                                         _serializedItemStack.useTimes = _item.itemValue.UseTimes;
                                                                         _serializedItemStack.quality  = _item.itemValue.Quality;
                                                                     }
                                                                     PersistentContainer.Instance.Players[_cInfo.playerId].Auction.Add(_id, _serializedItemStack);
                                                                 }
                                                                 else
                                                                 {
                                                                     ItemDataSerializable _serializedItemStack = new ItemDataSerializable();
                                                                     {
                                                                         _serializedItemStack.name     = _item.itemValue.ItemClass.GetItemName();
                                                                         _serializedItemStack.count    = _item.count;
                                                                         _serializedItemStack.useTimes = _item.itemValue.UseTimes;
                                                                         _serializedItemStack.quality  = _item.itemValue.Quality;
                                                                     }
                                                                     Dictionary <int, ItemDataSerializable> _auctionItems = new Dictionary <int, ItemDataSerializable>();
                                                                     _auctionItems.Add(_id, _serializedItemStack);
                                                                     PersistentContainer.Instance.Players[_cInfo.playerId].Auction = _auctionItems;
                                                                 }
                                                                 if (PersistentContainer.Instance.AuctionPrices != null && PersistentContainer.Instance.AuctionPrices.Count > 0)
                                                                 {
                                                                     PersistentContainer.Instance.AuctionPrices.Add(_id, _auctionPrice);
                                                                 }
                                                                 else
                                                                 {
                                                                     Dictionary <int, int> _auctionPrices = new Dictionary <int, int>();
                                                                     _auctionPrices.Add(_id, _auctionPrice);
                                                                     PersistentContainer.Instance.AuctionPrices = _auctionPrices;
                                                                 }
                                                                 PersistentContainer.Instance.Save();
                                                                 using (StreamWriter sw = new StreamWriter(filepath, true))
                                                                 {
                                                                     sw.WriteLine(string.Format("{0}: {1} {2} has added {3} {4}, {5} quality, {6} percent durability for {7} {8}.", DateTime.Now, _cInfo.playerId, _cInfo.playerName, _item.count, _item.itemValue.ItemClass.GetItemName(), _item.itemValue.Quality, _item.itemValue.UseTimes / _item.itemValue.MaxUseTimes * 100, _price, Wallet.Coin_Name));
                                                                     sw.WriteLine();
                                                                     sw.Flush();
                                                                     sw.Close();
                                                                 }
                                                                 string _message = "Your auction item {Name} has been removed from the secure loot and added to the auction.";
                                                                 _message = _message.Replace("{Name}", _item.itemValue.ItemClass.GetLocalizedItemName() ?? _item.itemValue.ItemClass.GetItemName());
                                                                 ChatHook.ChatMessage(_cInfo, LoadConfig.Chat_Response_Color + _message + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                                                                 _tile.SetModified();
                                                                 return;
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                         else
                         {
                             string _message = "You have the max auction items already listed. Wait for one to sell or cancel it with {CommandPrivate}{Command72} #.";
                             _message = _message.Replace("{CommandPrivate}", ChatHook.Command_Private);
                             _message = _message.Replace("{Command72}", Command72);
                             ChatHook.ChatMessage(_cInfo, LoadConfig.Chat_Response_Color + _message + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                         }
                     }
                     else
                     {
                         ChatHook.ChatMessage(_cInfo, LoadConfig.Chat_Response_Color + "You need to input a price greater than zero. This is not a transfer system.[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                     }
                 }
                 else
                 {
                     ChatHook.ChatMessage(_cInfo, LoadConfig.Chat_Response_Color + "Your sell price must be an integer and greater than zero.[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                 }
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in AuctionBox.CheckBox: {0}", e.Message));
     }
 }
コード例 #12
0
    /**
     * Returns a list of all tile entities within a set of world coordinates.
     * You could use this in order to find out whether nearby tile entities are of a certain type, for example.
     */

    public static Dictionary <Vector3i, TileEntity> GetTileEntitiesInCoordinatesWithType(World _world, List <Vector3i> coordinates, TileEntityType type = TileEntityType.None)
    {
        List <Chunk> chunks = GetChunksFromCoordinates(_world, coordinates);
        Dictionary <Vector3i, TileEntity> tileEntities = new Dictionary <Vector3i, TileEntity>();

        foreach (Chunk chunk in chunks)
        {
            Dictionary <Vector3i, TileEntity> tileEntitiesInChunk = chunk.GetTileEntities().dict;

            if (tileEntitiesInChunk.Count == 0)
            {
                return(tileEntitiesInChunk);
            }

            foreach (KeyValuePair <Vector3i, TileEntity> entry in tileEntitiesInChunk)
            {
                if (!coordinates.Contains(entry.Value.ToWorldPos()))
                {
                    continue;
                }

                if (type == TileEntityType.None)
                {
                    tileEntities.Add(entry.Value.ToWorldPos(), entry.Value);
                    continue;
                }

                if (entry.Value.GetTileEntityType() == type)
                {
                    tileEntities.Add(entry.Value.ToWorldPos(), entry.Value);
                }
            }
        }
        return(tileEntities);
    }
コード例 #13
0
        public static void ChestToBankDeposit(ClientInfo _cInfo, string _amount)
        {
            ItemValue _itemValue = ItemClass.GetItem(Ingame_Coin, false);

            if (CoinCheck(_cInfo, _itemValue))
            {
                int _value;
                if (int.TryParse(_amount, out _value))
                {
                    _itemValue = new ItemValue(ItemClass.GetItem(Ingame_Coin).type, 1, 1, false, null, 1);
                    int _currencyToRemove      = _value;
                    int _currencyRemoved       = 0;
                    ChunkClusterList chunklist = GameManager.Instance.World.ChunkClusters;
                    for (int i = 0; i < chunklist.Count; i++)
                    {
                        if (_currencyToRemove > 0)
                        {
                            ChunkCluster chunk = chunklist[i];
                            chunkArray = chunk.GetChunkArray();
                            foreach (Chunk _c in chunkArray)
                            {
                                tiles = _c.GetTileEntities();
                                foreach (TileEntity tile in tiles.dict.Values)
                                {
                                    TileEntityType type = tile.GetTileEntityType();
                                    if (type.ToString().Equals("SecureLoot"))
                                    {
                                        TileEntitySecureLootContainer SecureLoot = (TileEntitySecureLootContainer)tile;
                                        if (SecureLoot.IsUserAllowed(_cInfo.playerId) && !SecureLoot.IsUserAccessing())
                                        {
                                            Vector3i     vec3i   = SecureLoot.ToWorldPos();
                                            EntityPlayer _player = GameManager.Instance.World.Players.dict[_cInfo.entityId];
                                            if ((vec3i.x - _player.position.x) * (vec3i.x - _player.position.x) + (vec3i.z - _player.position.z) * (vec3i.z - _player.position.z) <= 2.5 * 2.5)
                                            {
                                                ItemStack[] _items = SecureLoot.items;
                                                for (int j = 0; j < _items.Length; j++)
                                                {
                                                    if (_currencyToRemove > 0)
                                                    {
                                                        if (!_items[j].IsEmpty() && _items[j].itemValue.GetItemOrBlockId() == _itemValue.GetItemOrBlockId())
                                                        {
                                                            if (_items[j].count <= _currencyToRemove)
                                                            {
                                                                int _newCount  = _currencyToRemove - _items[j].count;
                                                                int _newCount2 = _currencyRemoved + _items[j].count;
                                                                _currencyToRemove = _newCount;
                                                                _currencyRemoved  = _newCount2;
                                                                _items[j]         = ItemStack.Empty.Clone();
                                                            }
                                                            else
                                                            {
                                                                int _newCount      = _currencyRemoved + _currencyToRemove;
                                                                int _newStackCount = _items[j].count - _currencyToRemove;
                                                                _currencyToRemove = 0;
                                                                _currencyRemoved  = _newCount;
                                                                _items[j]         = new ItemStack(_itemValue, _newStackCount);
                                                                break;
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    if (_currencyRemoved > 0)
                    {
                        if (Deposit_Fee_Percent > 0)
                        {
                            int _depositFeePercent = Deposit_Fee_Percent / 100;
                            int _depositFee        = (int)_currencyRemoved * _depositFeePercent;
                            int _adjustedDeposit   = _currencyRemoved - _depositFee;
                            AddCoinsToBank(_cInfo.playerId, _adjustedDeposit);
                            string _message = " deposited {Value} {Name} from the secure loot to your bank account. " + " {Percent}" + "% fee was applied.";
                            _message = _message.Replace("{Value}", _value.ToString());
                            _message = _message.Replace("{Name}", Ingame_Coin);
                            _message = _message.Replace("{Percent}", Deposit_Fee_Percent.ToString());
                            ChatHook.ChatMessage(_cInfo, LoadConfig.Chat_Response_Color + _message + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                            using (StreamWriter sw = new StreamWriter(filepath, true))
                            {
                                sw.WriteLine(string.Format("{0}: {1} has added {2} to their bank account from a secure loot.", DateTime.Now, _cInfo.playerName, _currencyRemoved));
                                sw.WriteLine();
                                sw.Flush();
                                sw.Close();
                            }
                            using (StreamWriter sw = new StreamWriter(filepath, true))
                            {
                                sw.WriteLine(string.Format("{0}: {1} has added {2} to their bank account from a secure loot.", DateTime.Now, _cInfo.playerName, _adjustedDeposit));
                                sw.WriteLine();
                                sw.Flush();
                                sw.Close();
                            }
                        }
                        else
                        {
                            AddCoinsToBank(_cInfo.playerId, _currencyRemoved);
                            string _message = "Removed {Total} {Name} and deposited it to your bank. ";
                            _message = _message.Replace("{Total}", _currencyRemoved.ToString());
                            _message = _message.Replace("{Name}", Ingame_Coin);
                            ChatHook.ChatMessage(_cInfo, LoadConfig.Chat_Response_Color + _message + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                            using (StreamWriter sw = new StreamWriter(filepath, true))
                            {
                                sw.WriteLine(string.Format("{0}: {1} has added {2} to their bank account from a secure loot.", DateTime.Now, _cInfo.playerName, _currencyRemoved));
                                sw.WriteLine();
                                sw.Flush();
                                sw.Close();
                            }
                        }
                    }
                    else
                    {
                        string _message = "Could not find any {Name} in a near by secure loot.";
                        _message = _message.Replace("{Name}", Ingame_Coin);
                        ChatHook.ChatMessage(_cInfo, LoadConfig.Chat_Response_Color + _message + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                    }
                }
                else
                {
                    ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + LoadConfig.Chat_Response_Color + " you input an invalid integer. Type " + ChatHook.Command_Private + Command95 + " #.[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                }
            }
        }
コード例 #14
0
 public static void CheckBox(ClientInfo _cInfo, string _price)
 {
     try
     {
         if (AuctionItems.ContainsKey(_cInfo.entityId))
         {
             string _message = " you have auction item # {Value} in the auction already. Wait for it to sell or cancel it with {CommandPrivate}{Command72}.";
             _message = _message.Replace("{Value}", _cInfo.entityId.ToString());
             _message = _message.Replace("{CommandPrivate}", ChatHook.Command_Private);
             _message = _message.Replace("{Command72}", Command72);
             ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + LoadConfig.Chat_Response_Color + _message + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
         }
         else
         {
             int _p;
             if (int.TryParse(_price, out _p))
             {
                 if (_p > 0)
                 {
                     LinkedList <Chunk> chunkArray = new LinkedList <Chunk>();
                     DictionaryList <Vector3i, TileEntity> tiles = new DictionaryList <Vector3i, TileEntity>();
                     ChunkClusterList chunklist = GameManager.Instance.World.ChunkClusters;
                     for (int i = 0; i < chunklist.Count; i++)
                     {
                         ChunkCluster chunk = chunklist[i];
                         chunkArray = chunk.GetChunkArray();
                         foreach (Chunk _c in chunkArray)
                         {
                             tiles = _c.GetTileEntities();
                             foreach (TileEntity tile in tiles.dict.Values)
                             {
                                 TileEntityType type = tile.GetTileEntityType();
                                 if (type.ToString().Equals("SecureLoot"))
                                 {
                                     EntityPlayer _player = GameManager.Instance.World.Players.dict[_cInfo.entityId];
                                     TileEntitySecureLootContainer SecureLoot = (TileEntitySecureLootContainer)tile;
                                     Vector3i vec3i = SecureLoot.ToWorldPos();
                                     if ((vec3i.x - _player.position.x) * (vec3i.x - _player.position.x) + (vec3i.z - _player.position.z) * (vec3i.z - _player.position.z) <= 2.5f * 2.5f)
                                     {
                                         if (SecureLoot.IsUserAllowed(_cInfo.playerId) && !SecureLoot.IsUserAccessing())
                                         {
                                             ItemStack[] items = SecureLoot.items;
                                             ItemStack   _item = items[0];
                                             if (_item != null && !_item.IsEmpty())
                                             {
                                                 ItemClass _itemClass = ItemClass.list[_item.itemValue.type];
                                                 string    _itemName  = _item.itemValue.ItemClass.GetItemName();
                                                 SecureLoot.UpdateSlot(0, ItemStack.Empty.Clone());
                                                 AuctionItems.Add(_cInfo.entityId, _cInfo.playerId);
                                                 PersistentContainer.Instance.Players[_cInfo.playerId].AuctionId          = _cInfo.entityId;
                                                 PersistentContainer.Instance.Players[_cInfo.playerId].AuctionItemName    = _itemName;
                                                 PersistentContainer.Instance.Players[_cInfo.playerId].AuctionItemCount   = _item.count;
                                                 PersistentContainer.Instance.Players[_cInfo.playerId].AuctionItemQuality = _item.itemValue.Quality;
                                                 PersistentContainer.Instance.Players[_cInfo.playerId].AuctionItemPrice   = _p;
                                                 PersistentContainer.Instance.Players[_cInfo.playerId].AuctionCancelTime  = DateTime.Now;
                                                 PersistentContainer.Instance.Save();
                                                 string _message = " your auction item {Name} has been removed from the secure loot and added to the auction.";
                                                 _message = _message.Replace("{Name}", _itemName);
                                                 ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + LoadConfig.Chat_Response_Color + _message + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                                                 Log.Out(string.Format("{0} has added {1} {2}, {3} quality to the auction for {4} {5}.", _cInfo.playerName, _item.count, _itemName, _item.itemValue.Quality, _price, Wallet.Coin_Name));
                                                 using (StreamWriter sw = new StreamWriter(filepath, true))
                                                 {
                                                     sw.WriteLine(string.Format("{0}: {1} has added {2} {3}, {4} quality to the auction for {5} {6}.", DateTime.Now, _cInfo.playerName, _item.count, _itemName, _item.itemValue.Quality, _price, Wallet.Coin_Name));
                                                     sw.WriteLine();
                                                     sw.Flush();
                                                     sw.Close();
                                                 }
                                                 return;
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                     ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + LoadConfig.Chat_Response_Color + " no item was found in the first slot of the secure chest near you." + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                 }
                 else
                 {
                     ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + LoadConfig.Chat_Response_Color + " you need to input a price greater than zero. This is not a transfer system.[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                 }
             }
             else
             {
                 ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + LoadConfig.Chat_Response_Color + " your sell price must be an integer and greater than zero.[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in AuctionBox.CheckBox: {0}.", e));
     }
 }
コード例 #15
0
ファイル: Bank.cs プロジェクト: Tsaukpaetra/7dtd-ServerTools
 public static void ChestToBankDeposit(ClientInfo _cInfo, string _amount)
 {
     try
     {
         if (GameManager.Instance.World.Players.dict.ContainsKey(_cInfo.entityId))
         {
             EntityPlayer _player = GameManager.Instance.World.Players.dict[_cInfo.entityId];
             if (_player != null)
             {
                 ItemValue _itemValue = new ItemValue(ItemClass.GetItem(Ingame_Coin).type, 1, 1, false, null, 1);
                 if (_itemValue != null)
                 {
                     int _coinId = _itemValue.GetItemOrBlockId();
                     if (int.TryParse(_amount, out int _value))
                     {
                         if (_value > 0)
                         {
                             int _currencyToRemove          = _value;
                             int _currencyRemoved           = 0;
                             LinkedList <Chunk> _chunkArray = new LinkedList <Chunk>();
                             DictionaryList <Vector3i, TileEntity> _tiles = new DictionaryList <Vector3i, TileEntity>();
                             ChunkClusterList _chunklist = GameManager.Instance.World.ChunkClusters;
                             for (int i = 0; i < _chunklist.Count; i++)
                             {
                                 ChunkCluster _chunkCluster = _chunklist[i];
                                 _chunkArray = _chunkCluster.GetChunkArray();
                                 foreach (Chunk _chunk in _chunkArray)
                                 {
                                     _tiles = _chunk.GetTileEntities();
                                     foreach (TileEntity _tile in _tiles.dict.Values)
                                     {
                                         TileEntityType type = _tile.GetTileEntityType();
                                         if (type.ToString().Equals("SecureLoot"))
                                         {
                                             TileEntitySecureLootContainer SecureLoot = (TileEntitySecureLootContainer)_tile;
                                             if (SecureLoot.IsUserAllowed(_cInfo.playerId) && !SecureLoot.IsUserAccessing())
                                             {
                                                 Vector3i vec3i = SecureLoot.ToWorldPos();
                                                 if ((vec3i.x - _player.position.x) * (vec3i.x - _player.position.x) + (vec3i.z - _player.position.z) * (vec3i.z - _player.position.z) <= 3 * 3)
                                                 {
                                                     if (vec3i.y >= (int)_player.position.y - 3 && vec3i.y <= (int)_player.position.y + 3)
                                                     {
                                                         ItemStack[] _items = SecureLoot.items;
                                                         if (_items != null && _items.Length > 0)
                                                         {
                                                             for (int j = 0; j < _items.Length; j++)
                                                             {
                                                                 if (_currencyToRemove > 0)
                                                                 {
                                                                     if (!_items[j].IsEmpty() && _items[j].itemValue.GetItemOrBlockId() == _coinId)
                                                                     {
                                                                         if (_items[j].count <= _currencyToRemove)
                                                                         {
                                                                             int _newCount  = _currencyToRemove - _items[j].count;
                                                                             int _newCount2 = _currencyRemoved + _items[j].count;
                                                                             _currencyToRemove = _newCount;
                                                                             _currencyRemoved  = _newCount2;
                                                                             _items[j]         = ItemStack.Empty.Clone();
                                                                         }
                                                                         else
                                                                         {
                                                                             int _newCount      = _currencyRemoved + _currencyToRemove;
                                                                             int _newStackCount = _items[j].count - _currencyToRemove;
                                                                             _currencyToRemove = 0;
                                                                             _currencyRemoved  = _newCount;
                                                                             _items[j]         = new ItemStack(_itemValue, _newStackCount);
                                                                         }
                                                                         _tile.SetModified();
                                                                     }
                                                                 }
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                             if (_currencyRemoved > 0)
                             {
                                 if (Deposit_Fee_Percent > 0)
                                 {
                                     float _fee             = _currencyRemoved * ((float)Deposit_Fee_Percent / 100);
                                     int   _adjustedDeposit = _currencyRemoved - (int)_fee;
                                     AddCoinsToBank(_cInfo.playerId, _adjustedDeposit);
                                     using (StreamWriter sw = new StreamWriter(filepath, true, Encoding.UTF8))
                                     {
                                         sw.WriteLine(string.Format("{0}: {1} {2} has added {3} to their bank account from a secure loot.", DateTime.Now, _cInfo.playerId, _cInfo.playerName, _adjustedDeposit));
                                         sw.WriteLine();
                                         sw.Flush();
                                         sw.Close();
                                     }
                                     Phrases.Dict.TryGetValue(643, out string _phrase643);
                                     _phrase643 = _phrase643.Replace("{Value}", _adjustedDeposit.ToString());
                                     _phrase643 = _phrase643.Replace("{CoinName}", Ingame_Coin);
                                     _phrase643 = _phrase643.Replace("{Percent}", Deposit_Fee_Percent.ToString());
                                     ChatHook.ChatMessage(_cInfo, Config.Chat_Response_Color + _phrase643 + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
                                 }
                                 else
                                 {
                                     AddCoinsToBank(_cInfo.playerId, _currencyRemoved);
                                     using (StreamWriter sw = new StreamWriter(filepath, true, Encoding.UTF8))
                                     {
                                         sw.WriteLine(string.Format("{0}: {1} {2} has added {3} to their bank account from a secure loot.", DateTime.Now, _cInfo.playerId, _cInfo.playerName, _currencyRemoved));
                                         sw.WriteLine();
                                         sw.Flush();
                                         sw.Close();
                                     }
                                     Phrases.Dict.TryGetValue(644, out string _phrase644);
                                     _phrase644 = _phrase644.Replace("{Value}", _currencyRemoved.ToString());
                                     _phrase644 = _phrase644.Replace("{CoinName}", Ingame_Coin);
                                     ChatHook.ChatMessage(_cInfo, Config.Chat_Response_Color + _phrase644 + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
                                 }
                             }
                             else
                             {
                                 Phrases.Dict.TryGetValue(645, out string _phrase645);
                                 _phrase645 = _phrase645.Replace("{CoinName}", Ingame_Coin);
                                 ChatHook.ChatMessage(_cInfo, Config.Chat_Response_Color + _phrase645 + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
                             }
                         }
                         else
                         {
                             Phrases.Dict.TryGetValue(646, out string _phrase646);
                             _phrase646 = _phrase646.Replace("{CommandPrivate}", ChatHook.Chat_Command_Prefix1);
                             _phrase646 = _phrase646.Replace("{Command95}", Command95);
                             ChatHook.ChatMessage(_cInfo, Config.Chat_Response_Color + _phrase646 + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
                         }
                     }
                     else
                     {
                         Phrases.Dict.TryGetValue(646, out string _phrase646);
                         _phrase646 = _phrase646.Replace("{CommandPrivate}", ChatHook.Chat_Command_Prefix1);
                         _phrase646 = _phrase646.Replace("{Command95}", Command95);
                         ChatHook.ChatMessage(_cInfo, Config.Chat_Response_Color + _phrase646 + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
                     }
                 }
                 else
                 {
                     Phrases.Dict.TryGetValue(647, out string _phrase647);
                     ChatHook.ChatMessage(_cInfo, Config.Chat_Response_Color + _phrase647 + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
                     Log.Out(string.Format("[SERVERTOOLS] Bank operation failed. Unable to find item {0}. Check the default game currency from your items.xml", Ingame_Coin));
                 }
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in Bank.ChestToBankDeposit: {0}", e.Message));
     }
 }
コード例 #16
0
        public static void CheckBox(ClientInfo _cInfo, string _price)
        {
            int _p;

            if (int.TryParse(_price, out _p))
            {
                if (_p > 0)
                {
                    if (!AuctionItems.ContainsKey(_cInfo.entityId))
                    {
                        ChunkClusterList chunklist = GameManager.Instance.World.ChunkClusters;
                        for (int i = 0; i < chunklist.Count; i++)
                        {
                            ChunkCluster chunk = chunklist[i];
                            chunkArray = chunk.GetChunkArray();
                            for (int j = 0; j < chunkArray.Count; j++)
                            {
                                Chunk _c = chunkArray[j];
                                tiles = _c.GetTileEntities();
                                foreach (TileEntity tile in tiles.dict.Values)
                                {
                                    TileEntityType type = tile.GetTileEntityType();
                                    if (type.ToString().Equals("SecureLoot"))
                                    {
                                        EntityPlayer _player = GameManager.Instance.World.Players.dict[_cInfo.entityId];
                                        TileEntitySecureLootContainer SecureLoot = (TileEntitySecureLootContainer)tile;
                                        Vector3i vec3i = SecureLoot.ToWorldPos();
                                        if ((vec3i.x - _player.position.x) * (vec3i.x - _player.position.x) + (vec3i.z - _player.position.z) * (vec3i.z - _player.position.z) <= 1.5 * 1.5)
                                        {
                                            int _playerCount = ConnectionManager.Instance.ClientCount();
                                            if (_playerCount > 1)
                                            {
                                                List <ClientInfo> _cInfoList = ConnectionManager.Instance.GetClients();
                                                for (int k = 0; k < _cInfoList.Count; k++)
                                                {
                                                    ClientInfo _cInfo2 = _cInfoList[k];
                                                    if (_cInfo != _cInfo2)
                                                    {
                                                        EntityPlayer _player2 = GameManager.Instance.World.Players.dict[_cInfo2.entityId];
                                                        if ((vec3i.x - _player2.position.x) * (vec3i.x - _player2.position.x) + (vec3i.z - _player2.position.z) * (vec3i.z - _player2.position.z) <= 8 * 8)
                                                        {
                                                            _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("{0}{1} you are too close to another player to use auction. Tell them to back off and get their own moldy sandwich.[-]", Config.Chat_Response_Color, _cInfo.playerName), Config.Server_Response_Name, false, "ServerTools", false));
                                                            return;
                                                        }
                                                    }
                                                }
                                            }
                                            List <string> boxUsers = SecureLoot.GetUsers();
                                            if (!boxUsers.Contains(_cInfo.playerId) && !SecureLoot.GetOwner().Equals(_cInfo.playerId))
                                            {
                                                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("{0}{1} the local secure loot is not owned by you or a friend. You can only auction an item through a secure loot you own.[-]", Config.Chat_Response_Color, _cInfo.playerName), Config.Server_Response_Name, false, "ServerTools", false));
                                                return;
                                            }
                                            ItemStack[] items      = SecureLoot.items;
                                            int         count      = 0;
                                            int         slotNumber = 0;
                                            foreach (ItemStack item in items)
                                            {
                                                if (!item.IsEmpty())
                                                {
                                                    if (count < 1)
                                                    {
                                                        ItemClass _itemClass   = ItemClass.list[item.itemValue.type];
                                                        string    _itemName    = _itemClass.GetItemName();
                                                        string[]  _auctionItem = { item.count.ToString(), _itemName, item.itemValue.Quality.ToString(), _price };
                                                        SecureLoot.UpdateSlot(slotNumber, ItemStack.Empty);
                                                        AuctionItems.Add(_cInfo.entityId, _auctionItem);
                                                        PersistentContainer.Instance.Players[_cInfo.playerId, true].CancelTime  = DateTime.Now;
                                                        PersistentContainer.Instance.Players[_cInfo.playerId, true].AuctionData = _cInfo.entityId;
                                                        PersistentContainer.Instance.Players[_cInfo.playerId, true].AuctionItem = _auctionItem;
                                                        PersistentContainer.Instance.Save();
                                                        _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("{0}{1} your auction item {2} has been removed from the secure loot and added to the auction.[-]", Config.Chat_Response_Color, _cInfo.playerName, _itemName), Config.Server_Response_Name, false, "ServerTools", false));
                                                        using (StreamWriter sw = new StreamWriter(filepath, true))
                                                        {
                                                            sw.WriteLine(string.Format("{0}: {1} has added {2} {3}, {4} quality to the auction for {5} {6}. Entry # {7}", DateTime.Now, _cInfo.playerName, item.count, _itemName, item.itemValue.Quality, _price, Wallet.Coin_Name, _cInfo.entityId));
                                                            sw.WriteLine();
                                                            sw.Flush();
                                                            sw.Close();
                                                        }
                                                        count++;
                                                    }
                                                }
                                                slotNumber++;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        if (!AuctionItems.ContainsKey(_cInfo.entityId))
                        {
                            _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("{0}{1} auction sell failed. No items were found in a secure chest you own near by.[-]", Config.Chat_Response_Color, _cInfo.playerName), Config.Server_Response_Name, false, "ServerTools", false));
                            _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("{0}{1} place an item in a chest and stand very close to it, then use /auction sell #.[-]", Config.Chat_Response_Color, _cInfo.playerName), Config.Server_Response_Name, false, "ServerTools", false));
                        }
                    }
                    else
                    {
                        _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("{0}{1} you have auction item # {2} in the auction already. Wait for it to sell or cancel it with /auction cancel.[-]", Config.Chat_Response_Color, _cInfo.playerName, _cInfo.entityId), Config.Server_Response_Name, false, "ServerTools", false));
                    }
                }
                else
                {
                    _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("{0}{1} you need to input a price greater than zero. This is not a transfer system.[-]", Config.Chat_Response_Color, _cInfo.playerName), Config.Server_Response_Name, false, "ServerTools", false));
                }
            }
            else
            {
                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("{0}{1} your sell price must be an integer and greater than zero.[-]", Config.Chat_Response_Color, _cInfo.playerName), Config.Server_Response_Name, false, "ServerTools", false));
            }
        }
コード例 #17
0
 public static void CheckBox(ClientInfo _cInfo, string _price)
 {
     try
     {
         if (GameManager.Instance.World.Players.dict.ContainsKey(_cInfo.entityId))
         {
             EntityPlayer _player = GameManager.Instance.World.Players.dict[_cInfo.entityId];
             if (_player != null)
             {
                 if (int.TryParse(_price, out int _auctionPrice))
                 {
                     if (_auctionPrice > 0)
                     {
                         if (PersistentContainer.Instance.Players[_cInfo.playerId].Auction == null)
                         {
                             Dictionary <int, ItemDataSerializable> _auctionItems = new Dictionary <int, ItemDataSerializable>();
                             PersistentContainer.Instance.Players[_cInfo.playerId].Auction = _auctionItems;
                             PersistentContainer.DataChange = true;
                         }
                         else if (PersistentContainer.Instance.Players[_cInfo.playerId].Auction.Count < Total_Items)
                         {
                             LinkedList <Chunk> _chunkArray = new LinkedList <Chunk>();
                             DictionaryList <Vector3i, TileEntity> _tiles = new DictionaryList <Vector3i, TileEntity>();
                             ChunkClusterList _chunklist = GameManager.Instance.World.ChunkClusters;
                             for (int i = 0; i < _chunklist.Count; i++)
                             {
                                 ChunkCluster _chunk = _chunklist[i];
                                 _chunkArray = _chunk.GetChunkArray();
                                 foreach (Chunk _c in _chunkArray)
                                 {
                                     _tiles = _c.GetTileEntities();
                                     foreach (TileEntity _tile in _tiles.dict.Values)
                                     {
                                         TileEntityType _type = _tile.GetTileEntityType();
                                         if (_type.ToString().Equals("SecureLoot"))
                                         {
                                             TileEntitySecureLootContainer SecureLoot = (TileEntitySecureLootContainer)_tile;
                                             Vector3i vec3i = SecureLoot.ToWorldPos();
                                             if ((vec3i.x - _player.position.x) * (vec3i.x - _player.position.x) + (vec3i.z - _player.position.z) * (vec3i.z - _player.position.z) <= 3 * 3)
                                             {
                                                 if (vec3i.y >= (int)_player.position.y - 3 && vec3i.y <= (int)_player.position.y + 3)
                                                 {
                                                     if (SecureLoot.IsUserAllowed(_cInfo.playerId) && !SecureLoot.IsUserAccessing())
                                                     {
                                                         ItemStack[] items = SecureLoot.items;
                                                         ItemStack   _item = items[0];
                                                         if (_item != null && !_item.IsEmpty())
                                                         {
                                                             int _id = GenerateAuctionId();
                                                             if (_id > 0)
                                                             {
                                                                 AuctionItems.Add(_id, _cInfo.playerId);
                                                                 items[0] = ItemStack.Empty.Clone();
                                                                 if (PersistentContainer.Instance.Players[_cInfo.playerId].Auction != null && PersistentContainer.Instance.Players[_cInfo.playerId].Auction.Count > 0)
                                                                 {
                                                                     ItemDataSerializable _serializedItemStack = new ItemDataSerializable();
                                                                     {
                                                                         _serializedItemStack.name     = _item.itemValue.ItemClass.GetItemName();
                                                                         _serializedItemStack.count    = _item.count;
                                                                         _serializedItemStack.useTimes = _item.itemValue.UseTimes;
                                                                         _serializedItemStack.quality  = _item.itemValue.Quality;
                                                                     }
                                                                     PersistentContainer.Instance.Players[_cInfo.playerId].Auction.Add(_id, _serializedItemStack);
                                                                 }
                                                                 else
                                                                 {
                                                                     ItemDataSerializable _serializedItemStack = new ItemDataSerializable();
                                                                     {
                                                                         _serializedItemStack.name     = _item.itemValue.ItemClass.GetItemName();
                                                                         _serializedItemStack.count    = _item.count;
                                                                         _serializedItemStack.useTimes = _item.itemValue.UseTimes;
                                                                         _serializedItemStack.quality  = _item.itemValue.Quality;
                                                                     }
                                                                     Dictionary <int, ItemDataSerializable> _auctionItems = new Dictionary <int, ItemDataSerializable>
                                                                     {
                                                                         { _id, _serializedItemStack }
                                                                     };
                                                                     PersistentContainer.Instance.Players[_cInfo.playerId].Auction = _auctionItems;
                                                                 }
                                                                 if (PersistentContainer.Instance.AuctionPrices != null && PersistentContainer.Instance.AuctionPrices.Count > 0)
                                                                 {
                                                                     PersistentContainer.Instance.AuctionPrices.Add(_id, _auctionPrice);
                                                                 }
                                                                 else
                                                                 {
                                                                     Dictionary <int, int> _auctionPrices = new Dictionary <int, int>
                                                                     {
                                                                         { _id, _auctionPrice }
                                                                     };
                                                                     PersistentContainer.Instance.AuctionPrices = _auctionPrices;
                                                                 }
                                                                 _tile.SetModified();
                                                                 PersistentContainer.DataChange = true;
                                                                 using (StreamWriter sw = new StreamWriter(filepath, true, Encoding.UTF8))
                                                                 {
                                                                     sw.WriteLine(string.Format("{0}: {1} {2} has added {3} {4}, {5} quality, {6} percent durability for {7} {8}.", DateTime.Now, _cInfo.playerId, _cInfo.playerName, _item.count, _item.itemValue.ItemClass.GetItemName(), _item.itemValue.Quality, _item.itemValue.UseTimes / _item.itemValue.MaxUseTimes * 100, _price, Wallet.Coin_Name));
                                                                     sw.WriteLine();
                                                                     sw.Flush();
                                                                     sw.Close();
                                                                 }
                                                                 Phrases.Dict.TryGetValue(621, out string _phrase621);
                                                                 _phrase621 = _phrase621.Replace("{Name}", _item.itemValue.ItemClass.GetLocalizedItemName() ?? _item.itemValue.ItemClass.GetItemName());
                                                                 ChatHook.ChatMessage(_cInfo, Config.Chat_Response_Color + _phrase621 + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
                                                                 return;
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                         else
                         {
                             Phrases.Dict.TryGetValue(622, out string _phrase622);
                             _phrase622 = _phrase622.Replace("{CommandPrivate}", ChatHook.Chat_Command_Prefix1);
                             _phrase622 = _phrase622.Replace("{Command72}", Command72);
                             ChatHook.ChatMessage(_cInfo, Config.Chat_Response_Color + _phrase622 + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
                         }
                     }
                     else
                     {
                         Phrases.Dict.TryGetValue(623, out string _phrase623);
                         ChatHook.ChatMessage(_cInfo, Config.Chat_Response_Color + _phrase623 + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
                     }
                 }
                 else
                 {
                     Phrases.Dict.TryGetValue(624, out string _phrase624);
                     ChatHook.ChatMessage(_cInfo, Config.Chat_Response_Color + _phrase624 + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
                 }
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in AuctionBox.CheckBox: {0}", e.Message));
     }
 }
コード例 #18
0
        public static void Deposit(ClientInfo _cInfo, string _amount)
        {
            bool Found = false;
            int  _coinAmount;

            if (int.TryParse(_amount, out _coinAmount))
            {
                ChunkClusterList chunklist = GameManager.Instance.World.ChunkClusters;
                for (int i = 0; i < chunklist.Count; i++)
                {
                    ChunkCluster chunk = chunklist[i];
                    chunkArray = chunk.GetChunkArray();
                    foreach (Chunk _c in chunkArray)
                    {
                        tiles = _c.GetTileEntities();
                        foreach (TileEntity tile in tiles.dict.Values)
                        {
                            if (!Found)
                            {
                                TileEntityType type = tile.GetTileEntityType();
                                if (type.ToString().Equals("SecureLoot"))
                                {
                                    TileEntitySecureLootContainer SecureLoot = (TileEntitySecureLootContainer)tile;
                                    if (SecureLoot.IsUserAllowed(_cInfo.playerId))
                                    {
                                        Vector3i     vec3i   = SecureLoot.ToWorldPos();
                                        EntityPlayer _player = GameManager.Instance.World.Players.dict[_cInfo.entityId];
                                        if ((vec3i.x - _player.position.x) * (vec3i.x - _player.position.x) + (vec3i.z - _player.position.z) * (vec3i.z - _player.position.z) <= 1.5 * 1.5)
                                        {
                                            int _playerCount = ConnectionManager.Instance.ClientCount();
                                            if (_playerCount > 1)
                                            {
                                                List <ClientInfo> _cInfoList = ConnectionManager.Instance.Clients.List.ToList();
                                                for (int k = 0; k < _cInfoList.Count; k++)
                                                {
                                                    ClientInfo _cInfo2 = _cInfoList[k];
                                                    if (_cInfo != _cInfo2)
                                                    {
                                                        EntityPlayer _player2 = GameManager.Instance.World.Players.dict[_cInfo2.entityId];
                                                        if ((vec3i.x - _player2.position.x) * (vec3i.x - _player2.position.x) + (vec3i.z - _player2.position.z) * (vec3i.z - _player2.position.z) <= 8 * 8)
                                                        {
                                                            ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + " you are too close to another player to deposit from your chest in to the bank.[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                                                            return;
                                                        }
                                                    }
                                                }
                                            }
                                            ItemStack[] items      = SecureLoot.items;
                                            int         slotNumber = 0;
                                            foreach (ItemStack item in items)
                                            {
                                                if (!item.IsEmpty())
                                                {
                                                    ItemClass _itemClass = ItemClass.list[item.itemValue.type];
                                                    string    _itemName  = _itemClass.GetItemName();
                                                    if (_itemName == Ingame_Coin)
                                                    {
                                                        if (item.count >= _coinAmount)
                                                        {
                                                            string    _sql    = string.Format("SELECT bank FROM Players WHERE steamid = '{0}'", _cInfo.playerId);
                                                            DataTable _result = SQL.TQuery(_sql);
                                                            int       _bank;
                                                            int.TryParse(_result.Rows[0].ItemArray.GetValue(0).ToString(), out _bank);
                                                            _result.Dispose();
                                                            int    _percent  = Deposit_Fee / 100;
                                                            double _fee      = _coinAmount * _percent;
                                                            int    _newCoin  = _coinAmount - (int)_fee;
                                                            double _newLimit = Limit + (Limit * _percent);
                                                            if (_bank + _coinAmount <= (int)_newLimit)
                                                            {
                                                                Found = true;
                                                                int       _newCount  = item.count - _coinAmount;
                                                                ItemValue _itemValue = ItemClass.GetItem(Ingame_Coin, false);
                                                                if (_itemValue.type == ItemValue.None.type)
                                                                {
                                                                    ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + " the bank coin is not setup correctly, contact the server Admin.[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                                                                    Log.Out(string.Format("[SERVERTOOLS] Unable to find item {0}", Ingame_Coin));
                                                                    return;
                                                                }
                                                                else
                                                                {
                                                                    _itemValue = new ItemValue(ItemClass.GetItem(Ingame_Coin).type, 1, 1, false);
                                                                }
                                                                ItemStack itemStack = new ItemStack(_itemValue, _newCount);
                                                                SecureLoot.UpdateSlot(slotNumber, itemStack);
                                                                _sql = string.Format("UPDATE Players SET bank = {0} WHERE steamid = '{1}'", _bank + _newCoin, _cInfo.playerId);
                                                                SQL.FastQuery(_sql);
                                                                using (StreamWriter sw = new StreamWriter(filepath, true))
                                                                {
                                                                    sw.WriteLine(string.Format("{0}: {1} has added {2} to their bank account.", DateTime.Now, _cInfo.playerName, _newCoin));
                                                                    sw.WriteLine();
                                                                    sw.Flush();
                                                                    sw.Close();
                                                                }
                                                                string _message = " deposited {Value} in to your bank minus the transfer fee of {Percent} percent.";
                                                                _message = _message.Replace("{Value}", _coinAmount.ToString());
                                                                _message = _message.Replace("{Percent}", Deposit_Fee.ToString());
                                                                ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + LoadConfig.Chat_Response_Color + _message + "[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                                                                return;
                                                            }
                                                            else
                                                            {
                                                                string _message = " your bank can not hold this much. The bank can hold {Limit} total. You currently have {Value}.";
                                                                _message = _message.Replace("{Limit}", Limit.ToString());
                                                                _message = _message.Replace("{Value}", _bank.ToString());
                                                                ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + LoadConfig.Chat_Response_Color + _message + "[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                                                            }
                                                        }
                                                        else
                                                        {
                                                            string _message = " there is not enough {Name} in the secure loot to deposit this value.";
                                                            _message = _message.Replace("{Name}", Ingame_Coin);
                                                            ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + LoadConfig.Chat_Response_Color + _message + "[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                                                        }
                                                    }
                                                }
                                                slotNumber++;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            else
            {
                ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + ", you input an invalid integer. Type " + ChatHook.Command_Private + Command95 + " #.[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
            }
            if (Found)
            {
                string _message = "there is not enough {Value} in the secure loot to deposit this value.";
                _message = _message.Replace("{Name}", Ingame_Coin);
                ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + _message + "[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
            }
            else
            {
                ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + ", you do not have enough in the secure loot to deposit that much into your bank.[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
            }
        }
コード例 #19
0
        public static void Deposit(ClientInfo _cInfo, string _amount)
        {
            bool Found = false;
            int  _coinAmount;

            if (int.TryParse(_amount, out _coinAmount))
            {
                ChunkClusterList chunklist = GameManager.Instance.World.ChunkClusters;
                for (int i = 0; i < chunklist.Count; i++)
                {
                    ChunkCluster chunk = chunklist[i];
                    chunkArray = chunk.GetChunkArray();
                    for (int j = 0; j < chunkArray.Count; j++)
                    {
                        Chunk _c = chunkArray[j];
                        tiles = _c.GetTileEntities();
                        foreach (TileEntity tile in tiles.dict.Values)
                        {
                            TileEntityType type = tile.GetTileEntityType();
                            if (type.ToString().Equals("SecureLoot"))
                            {
                                EntityPlayer _player = GameManager.Instance.World.Players.dict[_cInfo.entityId];
                                TileEntitySecureLootContainer SecureLoot = (TileEntitySecureLootContainer)tile;
                                Vector3i vec3i = SecureLoot.ToWorldPos();
                                if ((vec3i.x - _player.position.x) * (vec3i.x - _player.position.x) + (vec3i.z - _player.position.z) * (vec3i.z - _player.position.z) <= 1.5 * 1.5)
                                {
                                    int _playerCount = ConnectionManager.Instance.ClientCount();
                                    if (_playerCount > 1)
                                    {
                                        List <ClientInfo> _cInfoList = ConnectionManager.Instance.GetClients();
                                        for (int k = 0; k < _cInfoList.Count; k++)
                                        {
                                            ClientInfo _cInfo2 = _cInfoList[k];
                                            if (_cInfo != _cInfo2)
                                            {
                                                EntityPlayer _player2 = GameManager.Instance.World.Players.dict[_cInfo2.entityId];
                                                if ((vec3i.x - _player2.position.x) * (vec3i.x - _player2.position.x) + (vec3i.z - _player2.position.z) * (vec3i.z - _player2.position.z) <= 8 * 8)
                                                {
                                                    _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("{0}{1} you are too close to another player to use auction. Tell them to back off and get their own moldy sandwich.[-]", Config.Chat_Response_Color, _cInfo.playerName), Config.Server_Response_Name, false, "ServerTools", false));
                                                    return;
                                                }
                                            }
                                        }
                                    }
                                    List <string> boxUsers = SecureLoot.GetUsers();
                                    if (!boxUsers.Contains(_cInfo.playerId) && !SecureLoot.GetOwner().Equals(_cInfo.playerId))
                                    {
                                        _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("{0}{1} the local secure loot is not owned by you. You can only deposit to the bank through a secure loot you own.[-]", Config.Chat_Response_Color, _cInfo.playerName), Config.Server_Response_Name, false, "ServerTools", false));
                                        return;
                                    }
                                    ItemStack[] items      = SecureLoot.items;
                                    int         slotNumber = 0;
                                    foreach (ItemStack item in items)
                                    {
                                        if (!item.IsEmpty())
                                        {
                                            ItemClass _itemClass = ItemClass.list[item.itemValue.type];
                                            string    _itemName  = _itemClass.GetItemName();
                                            if (_itemName == Ingame_Coin)
                                            {
                                                if (item.count >= _coinAmount)
                                                {
                                                    Found = true;
                                                    int       _newCount  = item.count - _coinAmount;
                                                    ItemValue _itemValue = ItemClass.GetItem(Ingame_Coin, true);
                                                    if (_itemValue.type == ItemValue.None.type)
                                                    {
                                                        Log.Out(string.Format("[SERVERTOOLS] Unable to find item {0}", Ingame_Coin));
                                                        return;
                                                    }
                                                    else
                                                    {
                                                        _itemValue = new ItemValue(ItemClass.GetItem(Ingame_Coin).type, 1, 1, true);
                                                    }
                                                    ItemStack itemStack = new ItemStack(_itemValue, _newCount);
                                                    SecureLoot.UpdateSlot(slotNumber, itemStack);
                                                    int    _oldBank = PersistentContainer.Instance.Players[_cInfo.playerId, true].Bank;
                                                    double _percent = _coinAmount * 0.05;
                                                    int    _newCoin = _coinAmount - (int)_percent;
                                                    PersistentContainer.Instance.Players[_cInfo.playerId, true].Bank = _oldBank + _newCoin;
                                                    PersistentContainer.Instance.Save();
                                                    using (StreamWriter sw = new StreamWriter(filepath, true))
                                                    {
                                                        sw.WriteLine(string.Format("{0}: {1} has added {2} to their bank account.", DateTime.Now, _cInfo.playerName, _newCoin));
                                                        sw.WriteLine();
                                                        sw.Flush();
                                                        sw.Close();
                                                    }
                                                    continue;
                                                }
                                                else
                                                {
                                                    _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("{0}{1} there is not enough {2} in the secure loot to deposit this value.[-]", Config.Chat_Response_Color, _cInfo.playerName, Ingame_Coin), Config.Server_Response_Name, false, "ServerTools", false));
                                                }
                                            }
                                        }
                                        slotNumber++;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            else
            {
                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("{0}{1} you input an invalid integer. Type /deposit #.[-]", Config.Chat_Response_Color, _cInfo.playerName), Config.Server_Response_Name, false, "ServerTools", false));
            }
            if (Found)
            {
                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("{0}{1} deposited {2} into your bank account from the secure loot. 5% fee was applied.[-]", Config.Chat_Response_Color, _cInfo.playerName, Ingame_Coin), Config.Server_Response_Name, false, "ServerTools", false));
            }
            else
            {
                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("{0}{1} you don't have enough in the secure loot to deposit that much into your bank.[-]", Config.Chat_Response_Color, _cInfo.playerName), Config.Server_Response_Name, false, "ServerTools", false));
            }
        }
コード例 #20
0
        /// <summary>
        /// Generates object from unzipped chunk data. Do not use with the MemoryStreams held in region object.
        /// </summary>
        /// <param name="data">Unzipped chunk data in form of a memory stream.</param>
        public void Read(MemoryStream data)
        {
            BinaryReader reader = new BinaryReader(data);

            xm = reader.ReadInt32();
            mm = reader.ReadInt32();
            rm = reader.ReadInt32();

            savedInWorldTicks = reader.ReadUInt64();

            for (int i = 0; i < 64; ++i)
            {
                bool flag = reader.ReadBoolean();

                if (flag)
                {
                    cbl[i] = new ChunkBlockLayer();
                    cbl[i].Read(reader);
                }
            }

            cbc = new ChunkBlockChannel();
            cbc.Read(reader);

            reader.Read(im, 0, 256);
            reader.Read(terrainHeight, 0, 256);
            reader.Read(biomeId, 0, 256);
            reader.Read(biomeIntensity, 0, 1536);

            dominantBiome           = reader.ReadByte();
            areaMasterDominantBiome = reader.ReadByte();

            int chunkCustomDataCount = (int)reader.ReadUInt16();

            for (int j = 0; j < chunkCustomDataCount; ++j)
            {
                ChunkCustomData chunkCustomData = new ChunkCustomData();
                chunkCustomData.Read(reader);
                chunkCustomDataDictionary[chunkCustomData.key] = chunkCustomData;
            }

            reader.Read(pr, 0, 256);
            reader.Read(jr, 0, 256);
            reader.Read(fr, 0, 256);

            cm.Read(reader);
            vm.Read(reader);
            gm.Read(reader);
            km.Read(reader);

            needsLightCalculation = reader.ReadBoolean();

            int entityCount = reader.ReadInt32();

            for (int k = 0; k < entityCount; ++k)
            {
                EntityCreationData entityCreationData = new EntityCreationData();
                entityCreationData.Read(reader);
                entityCreationDataList.Add(entityCreationData);
            }

            int tileEntityCount = reader.ReadInt32();

            for (int l = 0; l < tileEntityCount; ++l)
            {
                TileEntityType type       = (TileEntityType)reader.ReadInt32();
                TileEntity     tileEntity = TileEntity.Instantiate(type);
                tileEntity.Read(reader);

                tileEntityDictionary[tileEntity.localChunkPosition] = tileEntity;
            }

            int entitySpawnerCount = (int)reader.ReadUInt16();

            entitySpawnerSaveVersion = (uint)reader.ReadByte();

            for (int m = 0; m < entitySpawnerCount; ++m)
            {
                EntitySpawner entitySpawner = new EntitySpawner();
                entitySpawner.Read(reader);
                entitySpawnerList.Add(entitySpawner);
            }

            bool flag2 = reader.ReadBoolean();

            if (flag2)
            {
                ur = new ushort[16];
                for (int n = 0; n < 16; ++n)
                {
                    ur[n] = reader.ReadUInt16();
                }
            }
        }
コード例 #21
0
        public static void CheckBox(ClientInfo _cInfo, string _price)
        {
            string    _sql    = string.Format("SELECT auctionid, steamid FROM Auction WHERE steamid = '{0}'", _cInfo.playerId);
            DataTable _result = SQL.TQuery(_sql);

            if (_result.Rows.Count > 0)
            {
                int _auctionid;
                int.TryParse(_result.Rows[0].ItemArray.GetValue(0).ToString(), out _auctionid);
                string _message = "you have auction item # {Value} in the auction already. Wait for it to sell or cancel it with /auction cancel.";
                _message = _message.Replace("{Value}", _auctionid.ToString());
                ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + _message + "[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
            }
            else
            {
                int _p;
                if (int.TryParse(_price, out _p))
                {
                    if (_p > 0)
                    {
                        ChunkClusterList chunklist = GameManager.Instance.World.ChunkClusters;
                        for (int i = 0; i < chunklist.Count; i++)
                        {
                            ChunkCluster chunk = chunklist[i];
                            chunkArray = chunk.GetChunkArray();
                            foreach (Chunk _c in chunkArray)
                            {
                                tiles = _c.GetTileEntities();
                                foreach (TileEntity tile in tiles.dict.Values)
                                {
                                    TileEntityType type = tile.GetTileEntityType();
                                    if (type.ToString().Equals("SecureLoot"))
                                    {
                                        EntityPlayer _player = GameManager.Instance.World.Players.dict[_cInfo.entityId];
                                        TileEntitySecureLootContainer SecureLoot = (TileEntitySecureLootContainer)tile;
                                        Vector3i vec3i = SecureLoot.ToWorldPos();
                                        if ((vec3i.x - _player.position.x) * (vec3i.x - _player.position.x) + (vec3i.z - _player.position.z) * (vec3i.z - _player.position.z) <= 1.5 * 1.5)
                                        {
                                            int _playerCount = ConnectionManager.Instance.ClientCount();
                                            if (_playerCount > 1)
                                            {
                                                List <ClientInfo> _cInfoList = ConnectionManager.Instance.Clients.List.ToList();
                                                for (int k = 0; k < _cInfoList.Count; k++)
                                                {
                                                    ClientInfo _cInfo2 = _cInfoList[k];
                                                    if (_cInfo != _cInfo2)
                                                    {
                                                        EntityPlayer _player2 = GameManager.Instance.World.Players.dict[_cInfo2.entityId];
                                                        if ((vec3i.x - _player2.position.x) * (vec3i.x - _player2.position.x) + (vec3i.z - _player2.position.z) * (vec3i.z - _player2.position.z) <= 8 * 8)
                                                        {
                                                            ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + ", you are too close to another player to use auction. Tell them to back off and get their own moldy sandwich.[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                                                            return;
                                                        }
                                                    }
                                                }
                                            }
                                            List <string> boxUsers = SecureLoot.GetUsers();
                                            if (!boxUsers.Contains(_cInfo.playerId) && !SecureLoot.GetOwner().Equals(_cInfo.playerId))
                                            {
                                                ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + ", the local secure loot is not owned by you or a friend. You can only auction an item through a secure loot you own.[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                                                return;
                                            }
                                            ItemStack[] items      = SecureLoot.items;
                                            int         count      = 0;
                                            int         slotNumber = 0;
                                            foreach (ItemStack item in items)
                                            {
                                                if (!item.IsEmpty())
                                                {
                                                    if (count < 1)
                                                    {
                                                        ItemClass _itemClass = ItemClass.list[item.itemValue.type];
                                                        string    _itemName  = _itemClass.GetItemName();
                                                        SecureLoot.UpdateSlot(slotNumber, ItemStack.Empty);
                                                        _sql = string.Format("INSERT INTO Auction (steamid, itemName, itemCount, itemQuality, itemPrice, cancelTime, sellDate) VALUES ('{0}', '{1}', {2}, {3}, {4}, '{5}', '{6}')", _cInfo.playerId, _itemName, item.count, item.itemValue.Quality, _price, DateTime.Now, DateTime.Now);
                                                        SQL.FastQuery(_sql);
                                                        string _message = "your auction item {Name} has been removed from the secure loot and added to the auction.";
                                                        _message = _message.Replace("{Name}", _itemName);
                                                        ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + _message + "[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                                                        using (StreamWriter sw = new StreamWriter(filepath, true))
                                                        {
                                                            sw.WriteLine(string.Format("{0}: {1} has added {2} {3}, {4} quality to the auction for {5} {6}.", DateTime.Now, _cInfo.playerName, item.count, _itemName, item.itemValue.Quality, _price, Wallet.Coin_Name));
                                                            sw.WriteLine();
                                                            sw.Flush();
                                                            sw.Close();
                                                        }
                                                        count++;
                                                    }
                                                }
                                                slotNumber++;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + ", you need to input a price greater than zero. This is not a transfer system.[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                    }
                }
                else
                {
                    ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + ", your sell price must be an integer and greater than zero.[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                }
            }
            _result.Dispose();
        }
コード例 #22
0
 public static void ChestToBankDeposit(ClientInfo _cInfo, string _amount)
 {
     if (GameManager.Instance.World.Players.dict.ContainsKey(_cInfo.entityId))
     {
         EntityPlayer _player = GameManager.Instance.World.Players.dict[_cInfo.entityId];
         if (_player != null)
         {
             ItemValue _itemValue = new ItemValue(ItemClass.GetItem(Ingame_Coin).type, 1, 1, false, null, 1);
             if (_itemValue != null)
             {
                 int _coinId = _itemValue.GetItemOrBlockId();
                 if (int.TryParse(_amount, out int _value))
                 {
                     if (_value > 0)
                     {
                         int _currencyToRemove          = _value;
                         int _currencyRemoved           = 0;
                         LinkedList <Chunk> _chunkArray = new LinkedList <Chunk>();
                         DictionaryList <Vector3i, TileEntity> _tiles = new DictionaryList <Vector3i, TileEntity>();
                         ChunkClusterList _chunklist = GameManager.Instance.World.ChunkClusters;
                         for (int i = 0; i < _chunklist.Count; i++)
                         {
                             ChunkCluster _chunk = _chunklist[i];
                             _chunkArray = _chunk.GetChunkArray();
                             foreach (Chunk _c in _chunkArray)
                             {
                                 _tiles = _c.GetTileEntities();
                                 foreach (TileEntity _tile in _tiles.dict.Values)
                                 {
                                     TileEntityType type = _tile.GetTileEntityType();
                                     if (type.ToString().Equals("SecureLoot"))
                                     {
                                         TileEntitySecureLootContainer SecureLoot = (TileEntitySecureLootContainer)_tile;
                                         if (SecureLoot.IsUserAllowed(_cInfo.playerId) && !SecureLoot.IsUserAccessing())
                                         {
                                             Vector3i vec3i = SecureLoot.ToWorldPos();
                                             if ((vec3i.x - _player.position.x) * (vec3i.x - _player.position.x) + (vec3i.z - _player.position.z) * (vec3i.z - _player.position.z) <= 3 * 3)
                                             {
                                                 if (vec3i.y >= (int)_player.position.y - 3 && vec3i.y <= (int)_player.position.y + 3)
                                                 {
                                                     ItemStack[] _items = SecureLoot.items;
                                                     if (_items != null && _items.Length > 0)
                                                     {
                                                         for (int j = 0; j < _items.Length; j++)
                                                         {
                                                             if (_currencyToRemove > 0)
                                                             {
                                                                 if (!_items[j].IsEmpty() && _items[j].itemValue.GetItemOrBlockId() == _coinId)
                                                                 {
                                                                     if (_items[j].count <= _currencyToRemove)
                                                                     {
                                                                         int _newCount  = _currencyToRemove - _items[j].count;
                                                                         int _newCount2 = _currencyRemoved + _items[j].count;
                                                                         _currencyToRemove = _newCount;
                                                                         _currencyRemoved  = _newCount2;
                                                                         _items[j]         = ItemStack.Empty.Clone();
                                                                     }
                                                                     else
                                                                     {
                                                                         int _newCount      = _currencyRemoved + _currencyToRemove;
                                                                         int _newStackCount = _items[j].count - _currencyToRemove;
                                                                         _currencyToRemove = 0;
                                                                         _currencyRemoved  = _newCount;
                                                                         _items[j]         = new ItemStack(_itemValue, _newStackCount);
                                                                     }
                                                                     _tile.SetModified();
                                                                 }
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                         if (_currencyRemoved > 0)
                         {
                             if (Deposit_Fee_Percent > 0)
                             {
                                 float _fee             = _currencyRemoved * ((float)Deposit_Fee_Percent / 100);
                                 int   _adjustedDeposit = _currencyRemoved - (int)_fee;
                                 AddCoinsToBank(_cInfo.playerId, _adjustedDeposit);
                                 string _message = "Deposited {Value} {Name} from the secure loot to your bank account. " + "{Percent}" + "% deposit fee was applied.";
                                 _message = _message.Replace("{Value}", _adjustedDeposit.ToString());
                                 _message = _message.Replace("{Name}", Ingame_Coin);
                                 _message = _message.Replace("{Percent}", Deposit_Fee_Percent.ToString());
                                 ChatHook.ChatMessage(_cInfo, LoadConfig.Chat_Response_Color + _message + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                                 using (StreamWriter sw = new StreamWriter(filepath, true))
                                 {
                                     sw.WriteLine(string.Format("{0}: {1} {2} has added {3} to their bank account from a secure loot.", DateTime.Now, _cInfo.playerId, _cInfo.playerName, _adjustedDeposit));
                                     sw.WriteLine();
                                     sw.Flush();
                                     sw.Close();
                                 }
                             }
                             else
                             {
                                 AddCoinsToBank(_cInfo.playerId, _currencyRemoved);
                                 string _message = "Deposited {Value} {Name} from the secure loot to your bank account.";
                                 _message = _message.Replace("{Value}", _currencyRemoved.ToString());
                                 _message = _message.Replace("{Name}", Ingame_Coin);
                                 ChatHook.ChatMessage(_cInfo, LoadConfig.Chat_Response_Color + _message + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                                 using (StreamWriter sw = new StreamWriter(filepath, true))
                                 {
                                     sw.WriteLine(string.Format("{0}: {1} {2} has added {3} to their bank account from a secure loot.", DateTime.Now, _cInfo.playerId, _cInfo.playerName, _currencyRemoved));
                                     sw.WriteLine();
                                     sw.Flush();
                                     sw.Close();
                                 }
                             }
                         }
                         else
                         {
                             string _message = "Could not find any {CoinName} in a near by secure loot.";
                             _message = _message.Replace("{CoinName}", Ingame_Coin);
                             ChatHook.ChatMessage(_cInfo, LoadConfig.Chat_Response_Color + _message + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                         }
                     }
                     else
                     {
                         ChatHook.ChatMessage(_cInfo, LoadConfig.Chat_Response_Color + "You input an invalid integer. Type " + ChatHook.Command_Private + Command95 + " #[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                     }
                 }
                 else
                 {
                     ChatHook.ChatMessage(_cInfo, LoadConfig.Chat_Response_Color + "You input an invalid integer. Type " + ChatHook.Command_Private + Command95 + " #[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                 }
             }
             else
             {
                 ChatHook.ChatMessage(_cInfo, LoadConfig.Chat_Response_Color + "The bank coin is not setup correctly, contact the server Admin.[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                 Log.Out(string.Format("[SERVERTOOLS] Bank operation failed. Unable to find item {0}. Check the default game currency from your items.xml", Ingame_Coin));
             }
         }
     }
 }