public void GetDbInfoTest()
        {
            var expected = new DbInfo();

            expected.Name    = db1;
            expected.Version = "1.0.0";
            expected.CRS     = CRS.WGS84;

            var url     = String.Join("/", new string[] { urlPrefix, db1 });
            var handler = new MockHttpHandler(url, "GET", (req, res, param) =>
            {
                var result     = new RestResult();
                result.Success = true;
                result.Data    = JsonConvert.SerializeObject(expected);

                return(JsonConvert.SerializeObject(result));
            });

            mockServer.AddRequestHandler(handler);

            try
            {
                var db     = new MapDB(db1);
                var actual = db.GetDbInfo();
                Assert.AreEqual <DbInfo>(expected, actual);
            }
            catch
            {
                Assert.Fail();
            }
        }
Esempio n. 2
0
        public LobbyMainWin()
        {
            InitializeComponent();

            server           = new SocketWrapper();
            server.OnAccept += new SocketWrapper.dlgAccept(server_OnAccept);
            server.OnClose  += new SocketWrapper.dlgClose(server_OnClose);
            server.OnRead   += new SocketWrapper.dlgRead(PacketProcessor);

            Logger l = new Logger(tLog);

            //listClients.ItemsSource = clients;

            MapDB.Load("Data\\MapList.bin");
            DigimonDB.Load("Data\\DigimonList.bin");

            Opt = Settings.Deserialize();

            Console.WriteLine("This server is configured to route players to the game server at {0}:{1}",
                              Opt.GameServer.Host, Opt.GameServer.Port);
            if (Opt.LobbyServer.AutoStart)
            {
                server.Listen(new ServerInfo(Opt.LobbyServer.Port, Opt.LobbyServer.IP));
                sbInfo1.Content = "Starting Lobby Server...";
            }
        }
Esempio n. 3
0
        public void UpdateLayerFieldTest()
        {
            var oldName = "fieldName";

            var url     = String.Join("/", new string[] { urlPrefix1, layer1, "fields", oldName });
            var handler = new MockHttpHandler(url, "POST", (req, res, param) =>
            {
                var result     = new RestResult();
                result.Success = true;
                return(JsonConvert.SerializeObject(result));
            });

            mockServer.AddRequestHandler(handler);

            try
            {
                var db    = new MapDB(db1);
                var layer = new FeatureLayer(layer1, db);
                var field = new LayerField()
                {
                    FieldName = "newFieldName",
                    DataType  = "INT",
                    FieldSize = 64
                };
                layer.UpdateLayerField(oldName, field);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
Esempio n. 4
0
        public static MapDB DecompressMap(MapJson mapj)
        {
            MapDB map = new MapDB();

            map.Key            = mapj.MapId;
            map.AreaId         = mapj.AreaId;
            map.AreaName       = mapj.AreaName;
            map.GlobalAreaName = mapj.GlobalAreaName;
            map.Height         = mapj.Height;
            map.Width          = mapj.Width;
            map.Cells          = new MapCell[mapj.MapData.Length / 10];
            string cellsValues;

            for (int i = 0; i < mapj.MapData.Length; i += 10)
            {
                cellsValues       = mapj.MapData.Substring(i, 10);
                map.Cells[i / 10] = DecompressCell(mapj, cellsValues, Convert.ToInt16(i / 10));
            }
            map.TopCellsTeleport    = DecompressTeleportCells(map.Cells, MovementDirectionEnum.TOP);
            map.RightCellsTeleport  = DecompressTeleportCells(map.Cells, MovementDirectionEnum.RIGHT);
            map.BottomCellsTeleport = DecompressTeleportCells(map.Cells, MovementDirectionEnum.BOTTOM);
            map.LeftCellsTeleport   = DecompressTeleportCells(map.Cells, MovementDirectionEnum.LEFT);
            map.Coordinate          = mapj.Coordinate;
            return(map);
        }
Esempio n. 5
0
        public void UpdatePropertiesTest()
        {
            var url     = String.Join("/", new string[] { urlPrefix1, layer1, "data" });
            var handler = new MockHttpHandler(url, "POST", (req, res, param) =>
            {
                var result = new RestResult();
                var form   = req.GetFormData();
                if (form.ContainsKey("condition") && form.ContainsKey("data"))
                {
                    result.Success = true;
                }
                return(JsonConvert.SerializeObject(result));
            });

            mockServer.AddRequestHandler(handler);

            try
            {
                var db    = new MapDB(db1);
                var layer = new FeatureLayer(layer1, db);
                layer.UpdateProperties("", null);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
Esempio n. 6
0
        public void CountTest()
        {
            var expected = 3;

            var url     = String.Join("/", new string[] { urlPrefix1, layer1, "data" });
            var handler = new MockHttpHandler(url, "POST", (req, res, param) =>
            {
                var result     = new RestResult();
                result.Success = true;
                result.Data    = expected;
                return(JsonConvert.SerializeObject(result));
            });

            mockServer.AddRequestHandler(handler);

            try
            {
                var db     = new MapDB(db1);
                var layer  = new FeatureLayer(layer1, db);
                var actual = layer.Count(null);
                Assert.AreEqual(expected, actual);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
        /** public ActionResult createFolder(MapFolder parent)
         * {
         *   var id = User.Identity.GetUserId();
         *   ObjectId UserId = new ObjectId(id);
         *   MapFolder toadd = new MapFolder();
         *   toadd.Creator = UserId;
         * }**/


        public ActionResult MyFirstMapAndFolders()
        {
            try
            {
                var       id                = User.Identity.GetUserId();
                ObjectId  UserId            = new ObjectId(id);
                MapFolder superiorMapFolder = _mapFolderDataManager.GetSuperiorMapFolderOfUserOwned(UserId);
                if (superiorMapFolder == null)
                {
                    //  superiorMapFolder = createSuppFolderLocaly(OWNED_SUPIRIOR);
                    _mapFolderDataManager.AddFolder(superiorMapFolder);
                }
                var mapFolders = this._mapFolderDataManager.GetAllSubFolder(superiorMapFolder);

                //var mapFolders = this._mapFolderDataManager.GetFirstFoldersOfUser(UserId);
                var maps = this._mapFolderDataManager.GetAllMapsInFolder(superiorMapFolder);
                _mapDataManager    = new MapDB(new Settings());
                ViewBag.maps       = maps;
                ViewBag.currFolder = superiorMapFolder;
                return(PartialView("_MyFoldersView", mapFolders));
            }
            catch (Exception e)
            {
                string exp = e.ToString();
                //return RedirectToAction("Index", "Home");
                _mapDataManager = new MapDB(new Settings());
                ViewBag.maps    = _mapDataManager.GetAllMaps();
                return(PartialView("_MyFoldersView", new List <MapFolder>()));
            }
        }
Esempio n. 8
0
        public void RemoveAllTest()
        {
            var url     = String.Join("/", new string[] { urlPrefix1, layer1, "data" });
            var handler = new MockHttpHandler(url, "POST", (req, res, param) =>
            {
                var result = new RestResult();
                if (param["op"] == "removeAll")
                {
                    result.Success = true;
                }
                return(JsonConvert.SerializeObject(result));
            });

            mockServer.AddRequestHandler(handler);

            try
            {
                var db    = new MapDB(db1);
                var layer = new FeatureLayer(layer1, db);
                layer.Remove();
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
Esempio n. 9
0
        public void GetLayerFieldsTest()
        {
            var expected = new List <LayerField>()
            {
                new LayerField()
                {
                    FieldName = "fieldName",
                    DataType  = "BLOB",
                    FieldSize = 600
                }
            };

            var url     = String.Join("/", new string[] { urlPrefix1, layer1, "fields" });
            var handler = new MockHttpHandler(url, "GET", (req, res, param) =>
            {
                var result     = new RestResult();
                result.Success = true;
                result.Data    = JsonConvert.SerializeObject(expected);
                return(JsonConvert.SerializeObject(result));
            });

            mockServer.AddRequestHandler(handler);

            try
            {
                var db     = new MapDB(db1);
                var layer  = new FeatureLayer(layer1, db);
                var actual = layer.GetLayerFields();
                Assert.AreEqual <LayerField>(expected[0], actual[0]);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
Esempio n. 10
0
        public void Mapper_MapDB_To_Map()
        {
            //Arrange
            var mapDB = new MapDB()
            {
                Width             = 2,
                Height            = 2,
                CreateDate        = DateTime.Now,
                Name              = "Map",
                DefenceMultiplier = "1,0;1,0;1,0;1,0",
                JuiceMultiplier   = "1,0;1,0;1,0;1,0",
                GoldMultiplier    = "1,0;1,0;1,0;1,0",
                GummiesMultiplier = "1;1;1;1",
                GummiesNumber     = "1;2;3;4",
                GummiesType       = "0;1;2;0",
                Owner             = "1;0;3;2"
            };

            //Act
            var map = _mapper.Map <MapDB, Map>(mapDB);

            //Assert
            Assert.AreEqual("Map", map.Name);
            Assert.AreEqual(GummyType.Magical, map.Fields[2].GummiesType);
            Assert.AreEqual(FieldOwner.Blocked, map.Fields[2].Owner);
        }
        public void QueryTest()
        {
            var id       = "id";
            var point    = new Point(new GeographicPosition(30.0, 110.0));
            var feature  = new Feature(point);
            var features = new List <Feature>();

            features.Add(feature);
            var collection = new FeatureCollection(features);
            var expected   = new FeatureCollection[] { collection };

            var url     = String.Join("/", new string[] { urlPrefix, db1, "layers", id, "data" });
            var handler = new MockHttpHandler(url, "POST", (req, res, param) =>
            {
                var result     = new RestResult();
                result.Success = true;
                result.Count   = 1;
                result.Data    = JsonConvert.SerializeObject(expected);
                return(JsonConvert.SerializeObject(result));
            });

            mockServer.AddRequestHandler(handler);

            try
            {
                var db     = new MapDB(db1);
                var filter = new QueryFilter();
                var actual = db.Query(filter, 0, 10, new string[] { id });
                Assert.AreEqual(expected[0], actual[0]);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
Esempio n. 12
0
 public MapPermissionController()
 {
     this._mapManager   = new MapDB(new Settings());
     this._userService  = new UserDB(new Settings());
     this._groupManager = new GroupDB(new Settings());
     //_userManager = UserManager;
 }
Esempio n. 13
0
 public SearchController()
 {
     this._mapManager   = new MapDB(new Settings());
     this._userService  = new UserDB(new Settings());
     this._groupManager = new GroupDB(new Settings());
     _searchObj         = new Search();
     //UserManager = UserManager;
 }
        protected override void Seed(GummyBearsContext context)
        {
            var users = new List <UserDB>
            {
                new UserDB()
                {
                    Login = "******", Password = "******"
                },
                new UserDB()
                {
                    Login = "******", Password = "******"
                }
            };

            users.ForEach(u => context.Users.Add(u));

            var map = new MapDB()
            {
                Width             = 4,
                Height            = 4,
                CreateDate        = DateTime.Now,
                Name              = "Basic Map no. 1",
                DefenceMultiplier = "1,0;1,0;1,0;1,0;1,0;1,0;1,0;1,0;1,0;1,0;1,0;1,0;1,0;1,0;1,0;1,0",
                JuiceMultiplier   = "1,0;1,0;1,0;1,0;1,0;15,0;15,0;1,0;1,0;15,0;15,0;1,0;1,0;1,0;1,0;1,0",
                GoldMultiplier    = "1,0;1,0;1,0;1,0;1,0;15,0;15,0;1,0;1,0;15,0;15,0;1,0;1,0;1,0;1,0;1,0",
                GummiesMultiplier = "1;1;1;1;1;15;15;1;1;15;15;1;1;1;1;1",
                GummiesNumber     = "5;0;0;0;0;0;0;0;0;0;0;0;0;0;0;5",
                GummiesType       = "0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0",
                Owner             = "1;1;0;3;1;0;0;0;0;0;0;2;3;0;2;2"
            };

            context.Maps.Add(map);
            var map2 = new MapDB()
            {
                Width             = 3,
                Height            = 3,
                CreateDate        = DateTime.Now,
                Name              = "Basic Map no. 2",
                DefenceMultiplier = "1,0;1,0;1,0;1,0;1,0;1,0;1,0;1,0;1,0",
                JuiceMultiplier   = "1,0;1,0;1,0;1,0;1,0;1,0;1,0;1,0;1,0",
                GoldMultiplier    = "1,0;1,0;1,0;1,0;1,0;1,0;1,0;1,0;1,0",
                GummiesMultiplier = "1;1;1;1;1;1;1;1;1",
                GummiesNumber     = "1;0;0;0;0;0;0;0;1",
                GummiesType       = "0;0;0;0;0;0;0;0;0",
                Owner             = "1;0;0;0;0;0;0;0;2"
            };

            context.Maps.Add(map2);

            context.SaveChanges();
        }
Esempio n. 15
0
        public void AddFeatureListTest()
        {
            var point1   = new Point(new GeographicPosition(30.0, 110.0));
            var point2   = new Point(new GeographicPosition(30.0, 120.0));
            var expected = new List <Feature>()
            {
                new Feature(point1),
                new Feature(point2)
            };

            var url     = String.Join("/", new string[] { urlPrefix1, layer1, "data" });
            var handler = new MockHttpHandler(url, "POST", (req, res, param) =>
            {
                var result = new RestResult();

                var form = req.GetFormData();
                if (form.ContainsKey("data"))
                {
                    var data = form["data"];
                    try
                    {
                        var actual = JsonConvert.DeserializeObject <List <Feature> >(data);
                        if (expected.SequenceEqual(actual))
                        {
                            result.Success = true;
                        }
                    }
                    catch
                    {
                    }
                }

                return(JsonConvert.SerializeObject(result));
            });

            mockServer.AddRequestHandler(handler);

            try
            {
                var db    = new MapDB(db1);
                var layer = new FeatureLayer(layer1, db);
                layer.Add(expected);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
Esempio n. 16
0
        private MapFolder createSuppFolderLocaly(string whichSupp)
        {
            MapFolderDB _mapFolderDataManager = new MapFolderDB(new Settings());

            var      id     = User.Identity.GetUserId();
            ObjectId UserId = new ObjectId(id);

            MapPermissions mapPermissions = new MapPermissions();

            mapPermissions.Owner    = new KeyValuePair <ObjectId, MapPermissionType>(UserId, MapPermissionType.RW);
            mapPermissions.Users    = new Dictionary <ObjectId, MapPermissionType>();
            mapPermissions.Groups   = new Dictionary <ObjectId, MapPermissionType>();
            mapPermissions.AllUsers = MapPermissionType.NA;

            mapPermissions.Users.Add(UserId, MapPermissionType.RW);

            MapFolder suppFolder = new MapFolder();

            suppFolder.Name              = "suppFolder" + whichSupp;
            suppFolder.Creator           = UserId;
            suppFolder.CreationTime      = DateTime.Now;
            suppFolder.Description       = "Supirior Folder " + whichSupp;
            suppFolder.Followers         = new HashSet <ObjectId>();
            suppFolder.Permissions       = mapPermissions;
            suppFolder.idOfMapsInFolder  = new HashSet <ObjectId>();
            suppFolder.idOfSubFolders    = new HashSet <ObjectId>();
            suppFolder.ParentDierctory   = new ObjectId();
            suppFolder.FirstFolderOfUser = UserId;
            suppFolder.Model             = new BsonDocument {
                { "type", whichSupp }, { "path", "" }
            };
            List <Map> maps = null;

            if (whichSupp.Equals(SharedCodedData.OWNED_SUPIRIOR))
            {
                maps = new MapDB(new Settings()).GetMapsByCreatorId(UserId).ToList();
            }
            else
            {
                maps = new MapDB(new Settings()).GetSharedMapsById(UserId).ToList();
            }
            foreach (Map map in maps)
            {
                suppFolder.idOfMapsInFolder.Add(map.Id);
            }
            return(suppFolder);
        }
        public void GetAllLayersTest()
        {
            var id       = "id";
            var expected = new List <Layer>()
            {
                new Layer()
                {
                    Id     = id,
                    Type   = Layer.TYPE_DB_TABLE,
                    Name   = "name",
                    Source = "source",
                    Fields = new List <LayerField>()
                    {
                        new LayerField()
                        {
                            FieldName = "id",
                            DataType  = "UUID",
                            FieldSize = 64
                        }
                    }
                }
            };

            var url     = String.Join("/", new string[] { urlPrefix, db1, "layers" });
            var handler = new MockHttpHandler(url, "GET", (req, res, param) =>
            {
                var result     = new RestResult();
                result.Success = true;
                result.Data    = JsonConvert.SerializeObject(expected);

                return(JsonConvert.SerializeObject(result));
            });

            mockServer.AddRequestHandler(handler);

            try
            {
                var db     = new MapDB(db1);
                var actual = db.GetAllLayers();
                Assert.AreEqual <Layer>(expected[0], actual[0]);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
        public void UpdateLayerTest()
        {
            var oldId = "oldId";
            var newId = "newId";
            var layer = new Layer()
            {
                Id     = newId,
                Type   = Layer.TYPE_DB_TABLE,
                Name   = "name",
                Source = "source",
                Fields = new List <LayerField>()
                {
                    new LayerField()
                    {
                        FieldName = "id",
                        DataType  = "UUID",
                        FieldSize = 64
                    }
                }
            };

            var url     = String.Join("/", new string[] { urlPrefix, db1, "layers", oldId });
            var handler = new MockHttpHandler(url, "POST", (req, res, param) =>
            {
                var result     = new RestResult();
                result.Success = true;
                return(JsonConvert.SerializeObject(result));
            });

            mockServer.AddRequestHandler(handler);

            try
            {
                var db = new MapDB(db1);
                db.UpdateLayer(oldId, layer);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
Esempio n. 19
0
        public void GetFirstTest()
        {
            var point1   = new Point(new GeographicPosition(30.0, 110.0));
            var point2   = new Point(new GeographicPosition(30.0, 120.0));
            var feature1 = new Feature(point1);
            var feature2 = new Feature(point2);
            var features = new List <Feature>()
            {
                feature1,
                feature2
            };
            var collections = new List <FeatureCollection>()
            {
                new FeatureCollection(features)
            };

            var url     = String.Join("/", new string[] { urlPrefix1, layer1, "data" });
            var handler = new MockHttpHandler(url, "POST", (req, res, param) =>
            {
                var result     = new RestResult();
                result.Success = true;
                result.Data    = JsonConvert.SerializeObject(collections);
                return(JsonConvert.SerializeObject(result));
            });

            mockServer.AddRequestHandler(handler);

            try
            {
                var db     = new MapDB(db1);
                var layer  = new FeatureLayer(layer1, db);
                var actual = layer.GetFirst("");
                Assert.AreEqual <Feature>(feature1, actual);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
Esempio n. 20
0
        public Yggdrasil()
        {
            Opt = Settings.Deserialize();

            server           = new SocketWrapper();
            server.OnAccept += new SocketWrapper.dlgAccept(server_OnAccept);
            server.OnClose  += new SocketWrapper.dlgClose(server_OnClose);
            server.OnRead   += new SocketWrapper.dlgRead(server_OnRead);

            //TODO: Load mob/map/item/etc databases
            EvolutionDB.Load("Data\\DigimonEvolve.bin");
            MapDB.Load("Data\\MapList.bin");
            PortalDB.Load("Data\\MapPortal.bin");
            DigimonDB.Load("Data\\DigimonList.bin");
            ItemDB.Load("Data\\ItemList.bin");
            MonsterDB.Load("Data\\MonsterList.bin");
            TacticsDB.Load("Data\\Tactics.bin");

            World();

            Initialize();
        }
        public void InstallSuccessTest()
        {
            var url     = String.Join("/", new string[] { urlPrefix, db1 });
            var handler = new MockHttpHandler(url, "POST", (req, res, param) =>
            {
                var result     = new RestResult();
                result.Success = true;
                return(JsonConvert.SerializeObject(result));
            });

            mockServer.AddRequestHandler(handler);

            try
            {
                var db = new MapDB(db1);
                db.Install(null);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
Esempio n. 22
0
        private MapFolder createFolderLocaly(string folderName)
        {
            MapFolderDB _mapFolderDataManager = new MapFolderDB(new Settings());

            var      id     = User.Identity.GetUserId();
            ObjectId UserId = new ObjectId(id);

            MapPermissions mapPermissions = new MapPermissions();

            mapPermissions.Owner    = new KeyValuePair <ObjectId, MapPermissionType>(UserId, MapPermissionType.RW);
            mapPermissions.Users    = new Dictionary <ObjectId, MapPermissionType>();
            mapPermissions.Groups   = new Dictionary <ObjectId, MapPermissionType>();
            mapPermissions.AllUsers = MapPermissionType.NA;

            mapPermissions.Users.Add(UserId, MapPermissionType.RW);

            MapFolder suppFolder = new MapFolder();

            suppFolder.Name             = folderName;
            suppFolder.Creator          = UserId;
            suppFolder.CreationTime     = DateTime.Now;
            suppFolder.Description      = "shared folder for group" + folderName;
            suppFolder.Followers        = new HashSet <ObjectId>();
            suppFolder.Permissions      = mapPermissions;
            suppFolder.idOfMapsInFolder = new HashSet <ObjectId>();
            suppFolder.idOfSubFolders   = new HashSet <ObjectId>();

            // MapFolder supFolder = _mapFolderDataManager.GetSuperiorMapFolderOfUser
            suppFolder.ParentDierctory   = new ObjectId();
            suppFolder.FirstFolderOfUser = UserId;
            var maps = new MapDB(new Settings()).GetAllMaps();

            foreach (Map map in maps)
            {
                suppFolder.idOfMapsInFolder.Add(map.Id);
            }
            return(suppFolder);
        }
Esempio n. 23
0
        public void Command(Client client, string[] cmd)
        {
            if (client.AccessLevel <= 0)
            {
                return;
            }
            if (cmd.Length == 0)
            {
                return;
            }
            Character Tamer     = client.Tamer;
            GameMap   ActiveMap = null;

            if (Tamer != null && Tamer.Partner != null)
            {
                ActiveMap = Maps[client.Tamer.Location.Map];
            }
            switch (cmd[0])
            {
            case "inc":
            {
                client.Send(new ChatNormal(Tamer.DigimonHandle, string.Format("Incubator: Level {1} {0}", Tamer.Incubator, Tamer.IncubatorLevel)));
                break;
            }

            case "item":
            {
                int  fullId = int.Parse(cmd[1]);
                Item e      = new Item(0);
                e.ID = fullId;

                if (e.ItemData == null)
                {
                    client.Send(new ChatNormal(Tamer.DigimonHandle, string.Format("An item with the id {0} was not found.", fullId)));
                    return;
                }
                e.Unknown = (short)e.Max;
                e.Amount  = 1;
                if (cmd.Length == 3)
                {
                    int count = 1;
                    int.TryParse(cmd[2], out count);
                    count    = count > e.Max ? e.Max : count;
                    count    = count < 0 ? 1 : count;
                    e.Amount = count;
                }
                if (cmd.Length == 9)
                {
                    short[] shorts = new short[6];
                    for (int i = 3; i < cmd.Length; i++)
                    {
                        shorts[i - 3] = short.Parse(cmd[i]);
                    }
                    e.Unknown1 = shorts[0];
                    e.Unknown2 = shorts[1];
                    e.Unknown3 = shorts[2];
                    e.Unknown4 = shorts[3];
                    e.Unknown5 = shorts[4];
                    e.Unknown6 = shorts[5];
                }
                e.time_t = 0xFFFFFFFF;
                int slot = Tamer.Inventory.Add(e);
                if (slot != -1)
                {
                    client.Send(new CashWHItem(slot, e, ((e.Modifier ^ 1) / 2), e.Max));
                }
                break;
            }

            case "sk1":
            {
                Client Target = ActiveMap.Find(cmd[1]);
                if (Target == null)
                {
                    return;
                }
                short skill = 0; short.TryParse(cmd[2], out skill);
                client.Send(new UseSkill(Tamer.DigimonHandle, Target.Tamer.DigimonHandle, skill, 1, 9999));
                break;
            }

            case "hatch":
            {
                int fullId = 31001;
                int.TryParse(cmd[1], out fullId);
                Send(new BroadcastHatch(Tamer.Name, "I am a banana", fullId, 65000, 5));
                break;
            }

            case "sk2":
            {
                short skill = 0; short.TryParse(cmd[1], out skill);
                client.Send(new UseSkill(Tamer.DigimonHandle, Tamer.TamerHandle, skill, 1, 9999));
                break;
            }

            case "list":
            {
                client.Send(new BaseChat(ChatType.Normal, Tamer.DigimonHandle, "Players on this map:"));
                foreach (Client other in ActiveMap.Tamers)
                {
                    client.Send(new BaseChat(ChatType.Normal, Tamer.DigimonHandle, string.Format("{0} - {1}", other.Tamer, other.Tamer.Partner)));
                }
                break;
            }

            case "force":
            {
                foreach (Client other in ActiveMap.Tamers)
                {
                    ActiveMap.Spawn(other);
                }
                break;
            }

            case "spawn":
            {
                uint value = 0;
                uint.TryParse(cmd[1], out value);
                MDBDigimon Mob = MonsterDB.GetDigimon(value);
                if (Mob == null)
                {
                    client.Send(new BaseChat(ChatType.Normal, Tamer.DigimonHandle, string.Format("Mob {0} was not found.", value)));
                }
                uint    id   = GetModel((uint)(64 + (Mob.Models[0] * 128)) << 8);
                GameMap cMap = Maps[Tamer.Location.Map];
                cMap.Send(new SpawnObject(id, Tamer.Location.PosX, Tamer.Location.PosY));
                break;
            }

            case "rld":
            case "reload":
            {
                ActiveMap.Leave(client);
                client.Send(new MapChange(Opt.GameServer.IP.ToString(), Opt.GameServer.Port,
                                          Tamer.Location.Map, Tamer.Location.PosX, Tamer.Location.PosY, Tamer.Location.MapName));
                break;
            }

            case "save":
            {
                client.Send(new BaseChat(ChatType.Shout, "ADMIN", "Saving..."));
                SqlDB.SaveTamer(client);
                break;
            };

            case "ann":
            {
                Send(new BaseChat().Megaphone(Tamer.Name, string.Join(" ", cmd, 1, cmd.Length - 1), 402417));
                break;
            };

            case "map":
            {
                int     mapId = int.Parse(cmd[1]);
                int     X     = int.Parse(cmd[2]);
                int     Y     = int.Parse(cmd[3]);
                MapData Map   = MapDB.GetMap(mapId);
                Tamer.Location = new Position(mapId, X, Y);
                SqlDB.SaveTamerPosition(client);
                client.Send(new MapChange(Opt.GameServer.IP.ToString(), Opt.GameServer.Port, mapId, X, Y, Map.Name));
                break;
            };

            case "tele":
            {
                Position p = null;
                switch (cmd[1].ToLower())
                {
                case "dats":
                default:
                    p = new Position(1, 29877, 22184);
                    break;
                }
                if (p != null)
                {
                    SqlDB.SaveTamerPosition(client);

                    ActiveMap.Leave(client);
                    Tamer.Location = p;
                    client.Send(new MapChange(Opt.GameServer.IP.ToString(), Opt.GameServer.Port, p.Map, p.PosX, p.PosY, p.MapName));
                }
                break;
            }

            case "where":
            case "pos":
            case "loc":
            {
                client.Send(new ChatNormal(Tamer.DigimonHandle, string.Format("You are at {0}", Tamer.Location)));
                break;
            }

            case "merc":
            {
                int value = 0;
                if (!int.TryParse(cmd[1], out value))
                {
                    return;
                }

                DigimonData dData = DigimonDB.GetDigimon(value);
                if (dData == null)
                {
                    client.Send(new ChatNormal(Tamer.DigimonHandle, string.Format("Mercenary id {0} was not found.", value)));
                }
                else
                {
                    client.Send(new ChatNormal(Tamer.DigimonHandle, string.Format("Mercenary {1} Found: {0}", dData.DisplayName, value)));
                }
                break;
            }

            case "mk":
            {
                if (cmd.Length < 3)
                {
                    return;
                }
                int value = 0;
                if (!int.TryParse(cmd[2], out value))
                {
                    return;
                }

                DigimonData dData = DigimonDB.GetDigimon(value);
                if (dData == null)
                {
                    return;
                }
                uint digiId = SqlDB.CreateMercenary(client.Tamer.CharacterId, cmd[1], value, 5, 14000, 100);
                if (digiId == 0)
                {
                    client.Send(new ChatNormal(Tamer.DigimonHandle, "Failed to create mercenary."));
                    return;
                }
                else
                {
                    for (int i = 0; i < Tamer.ArchivedDigimon.Length; i++)
                    {
                        if (Tamer.ArchivedDigimon[i] != 0)
                        {
                            continue;
                        }
                        Tamer.ArchivedDigimon[i] = (uint)digiId;
                        break;
                    }
                    client.Send(new ChatNormal(Tamer.DigimonHandle, "Mercenary added to Digimon Archive."));
                }
                break;
            }

            case "self.setav":
            case "tamer.setav":
            {
                int value = 0;
                if (!int.TryParse(cmd[2], out value))
                {
                    return;
                }
                switch (cmd[1].ToLower())
                {
                case "level":
                case "lv":
                    Tamer.Level = value;
                    ActiveMap.Send(new UpdateLevel(Tamer.TamerHandle, (byte)value));
                    break;

                case "at":
                    Tamer.AT = value; break;

                case "de":
                    Tamer.DE = value; break;

                case "hp":
                    Tamer.MaxHP = value;
                    Tamer.HP    = value; break;

                case "ds":
                    Tamer.MaxDS = value;
                    Tamer.DS    = value; break;

                case "fatigue":
                    Tamer.Fatigue = value; break;

                case "ms":
                    Tamer.MS = (short)value; break;

                case "tamer":
                    Tamer.Model = (CharacterModel)value; break;

                case "archive":
                    Tamer.ArchiveSize = value; break;

                case "inv":
                    Tamer.InventorySize = value; break;

                case "storage":
                    Tamer.StorageSize = value; break;

                case "size":
                    ActiveMap.Send(new ChangeSize(Tamer.TamerHandle, value, 0));
                    break;

                case "bits":
                    Tamer.Money = value;
                    //client.Send(new UpdateMoney());
                    break;
                }
                client.Send(new UpdateStats(Tamer, Tamer.Partner));
                break;
            }

            case "mon.setav":
            case "digimon.setav":
            {
                if (cmd[1].ToLower() == "min")
                {
                    Tamer.Partner.Stats = new DigimonStats();
                    Tamer.Partner.Level = 1;
                    Tamer.Partner.EXP   = 0;
                    client.Send(new UpdateStats(Tamer, Tamer.Partner));
                    return;
                }
                else if (cmd[1].ToLower() == "max")
                {
                    Tamer.Partner.Stats.Max();
                    Tamer.Level = 99;
                    client.Send(new UpdateStats(Tamer, Tamer.Partner));
                    return;
                }
                else if (cmd[1].ToLower() == "default")
                {
                    DigimonData dData = DigimonDB.GetDigimon(Tamer.Partner.CurrentForm);
                    if (dData != null)
                    {
                        Tamer.Partner.Stats = dData.Default(Tamer, Tamer.Partner.Stats.Intimacy, Tamer.Partner.Size);
                        client.Send(new UpdateStats(Tamer, Tamer.Partner));
                    }
                }
                int value = 0;
                if (!int.TryParse(cmd[2], out value))
                {
                    return;
                }
                switch (cmd[1].ToLower())
                {
                case "lv":
                case "level":
                    Tamer.Partner.Level = value;
                    ActiveMap.Send(new UpdateLevel(Tamer.DigimonHandle, (byte)value));
                    break;

                case "exp":
                    Tamer.Partner.EXP = value;
                    break;

                case "hp":
                    Tamer.Partner.Stats.MaxHP = (short)value;
                    Tamer.Partner.Stats.HP    = (short)value;
                    break;

                case "ds":
                    Tamer.Partner.Stats.MaxDS = (short)value; Tamer.Partner.Stats.DS = (short)value; break;

                case "at":
                    Tamer.Partner.Stats.AT = (short)value; break;

                case "de":
                    Tamer.Partner.Stats.DE = (short)value; break;

                case "ev":
                    Tamer.Partner.Stats.EV = (short)value; break;

                case "ht":
                    Tamer.Partner.Stats.HT = (short)value; break;

                case "cr":
                    Tamer.Partner.Stats.CR = (short)value; break;

                case "as":
                    Tamer.Partner.Stats.AS = (short)value; break;

                case "ms":
                    Tamer.Partner.Stats.MS = (short)value; break;

                case "int":
                case "sync":
                case "intimacy":
                    Tamer.Partner.Stats.Intimacy = (short)value; break;

                case "type":
                    Tamer.Partner.Species     = value;
                    Tamer.Partner.CurrentForm = value;
                    break;

                case "name":
                    Tamer.Partner.Name = cmd[2]; break;

                case "size":
                    Tamer.Partner.Size = (short)value;
                    ActiveMap.Send(new ChangeSize(Tamer.DigimonHandle, value, 0));
                    break;

                case "scale":
                    Tamer.Partner.Scale = (byte)value; break;
                }
                client.Send(new UpdateStats(Tamer, Tamer.Partner));
                break;
            }
            }
        }
Esempio n. 24
0
 public MapController()
 {
     this._mapManager    = new MapDB(new Settings());
     this._groupManager  = new GroupDB(new Settings());
     this._folderManeger = new MapFolderDB(new Settings());
 }
Esempio n. 25
0
 public SearchMaps()
 {
     _mapManager = new MapDB(new Settings());
     _allMaps    = _mapManager.GetAllMaps();
 }
Esempio n. 26
0
        /// <summary>
        /// Process incoming packets
        /// </summary>
        /// <param name="client"></param>
        /// <param name="packet"></param>
        public void Process(Client client, PacketReader packet)
        {
            Character Tamer     = client.Tamer;
            Digimon   ActiveMon = null;
            GameMap   ActiveMap = null;

            if (Tamer != null && Tamer.Partner != null)
            {
                ActiveMon = Tamer.Partner;
                ActiveMap = Maps[client.Tamer.Location.Map];
            }

            //Console.WriteLine("Processing type {0}", packet.Type);
            switch (packet.Type)
            {
            case -1:
            {
                client.time_t = (uint)DateTime.Now.Subtract(new DateTime(1970, 1, 1)).TotalSeconds;
                client.Send(new Packets.PacketFFEF((int)client.time_t, (short)(client.handshake ^ 0x7e41)));
                break;
            }

            case 1001:
            {
                //Movement speed
                client.Send(new Packets.Game.UpdateMS(Tamer.TamerHandle, Tamer.DigimonHandle,
                                                      (short)Tamer.MS, Tamer.Partner.Stats.MS));

                //Event Item
                client.Send(new Packets.Game.RewardCountdown(8, new DateTime(1970, 1, 1, 0, 0, 10)));
                ActiveMap.Spawn(client);
                break;
            }

            case -3:
            {
                break;
            }

            case 1004:
            {
                //Move
                int   unknown1 = packet.ReadInt();
                short handle   = packet.ReadShort();
                int   X        = packet.ReadInt();
                int   Y        = packet.ReadInt();
                float dir      = packet.ReadFloat();

                if (handle == Tamer.TamerHandle)
                {
                    Tamer.Location.PosY = Y;
                    Tamer.Location.PosX = X;
                }
                else
                {
                    Tamer.Partner.Location.Map  = Tamer.Location.Map;
                    Tamer.Partner.Location.PosX = X;
                    Tamer.Partner.Location.PosY = Y;
                }

                Maps[Tamer.Location.Map].Send(new MovePlayer(Tamer));
                break;
            }

            case 1008:
            {
                //Chat Type Normal
                string text = packet.ReadString();
                if (text.StartsWith("!"))
                {
                    Command(client, text.Substring(1).Split(' '));
                }
                else
                {
                    if (ActiveMap == null)
                    {
                        client.Send(new ChatNormal(Tamer.TamerHandle, text));
                    }
                    else
                    {
                        ActiveMap.Send(new ChatNormal(Tamer.TamerHandle, text));
                    }
                }
                break;
            }

            case 1016:
            {
                short h1 = packet.ReadShort();
                short h2 = packet.ReadShort();
                if (h1 != Tamer.TamerHandle)
                {
                    SqlDB.SaveTamer(client);
                    ActiveMap.Send(new DespawnPlayer(Tamer.TamerHandle, Tamer.DigimonHandle));
                }
                //client.m_socket.Close();
                break;
            }

            case 1028:
            {
                //Shinka!
                short handle = packet.ReadShort();
                int   stage  = packet.ReadByte();

                Digimon mon = Tamer.Partner;

                EvolutionLine evolveLine = EvolutionDB.GetLine(mon.Species, mon.CurrentForm);

                stage = 1 + stage + evolveLine.iLevel;
                int  id      = mon.Species;
                bool devolve = false;
                if (evolveLine.Line.ContainsKey(stage))
                {
                    id = evolveLine.Line[stage];
                }
                else if (evolveLine.Line.ContainsKey(65537))
                {
                    id      = evolveLine.Line[65537];
                    devolve = true;
                }

                ActiveMap.Send(new Evolve(Tamer.DigimonHandle, Tamer.TamerHandle, id, (byte)(devolve ? 5 : 0)));
                mon.CurrentForm = id;
                mon.Model       = GetModel(mon.ProperModel(), mon.byteHandle);

                DigimonData dData = DigimonDB.GetDigimon(Tamer.Partner.CurrentForm);
                if (dData != null)
                {
                    Tamer.Partner.Stats = dData.Default(Tamer, Tamer.Partner.Stats.Intimacy, Tamer.Partner.Size);
                    client.Send(new UpdateStats(Tamer, Tamer.Partner));
                }
                //Send to nearby players
                break;
            }

            case 1036:
            {
                int       Slot = packet.ReadInt();
                int       NPC  = packet.ReadInt();
                TDBTactic egg  = TacticsDB.Get(Tamer.Inventory[Slot].BaseID);
                if (egg == null)
                {
                    egg = TacticsDB.Get(Tamer.Inventory[Slot].ItemId);
                }

                if (egg != null)
                {
                    Tamer.Incubator      = egg.ItemId;
                    Tamer.IncubatorLevel = 0;
                    Tamer.Inventory.Remove(Slot);
                }
                break;
            }

            case 1037:
            {
                //Data Input
                int       slot = packet.ReadInt();
                TDBTactic egg  = TacticsDB.Get(Tamer.Incubator);
                int       res  = Opt.GameServer.HatchRates.Hatch(Tamer.IncubatorLevel);
                if (Tamer.Incubator < 10000)
                {
                    res = 0;
                }
                if (res == 0)
                {
                    //Great Success
                    Tamer.IncubatorLevel++;
                    if (Tamer.IncubatorLevel < 3)
                    {
                        client.Send(new DataInputSuccess(Tamer.TamerHandle));
                    }
                    else
                    {
                        client.Send(new DataInputSuccess(Tamer.TamerHandle, (byte)Tamer.IncubatorLevel));
                    }
                }
                else if (res == 1)
                {
                    client.Send(new DataInputFailure(Tamer.TamerHandle, false));
                }
                else
                {
                    Tamer.IncubatorLevel = 0;
                    Tamer.Incubator      = 0;
                    client.Send(new DataInputFailure(Tamer.TamerHandle, true));
                }
                if (egg != null)
                {
                    Tamer.Inventory[slot].Amount -= egg.Data;
                }
                break;
            }

            case 1038:
            {
                //Hatch
                packet.ReadByte();
                string name = packet.ReadZString();
                int    NPC  = packet.ReadInt();
                if (Tamer.IncubatorLevel < 3)
                {
                    client.Close();
                }
                TDBTactic egg = TacticsDB.Get(Tamer.Incubator);
                if (egg != null)
                {
                    uint digiId = SqlDB.CreateMercenary(Tamer.CharacterId, name, egg.Species, Tamer.IncubatorLevel,
                                                        Opt.GameServer.SizeRanges.Size(Tamer.IncubatorLevel), 0);
                    if (digiId == 0)
                    {
                        return;
                    }
                    Digimon mon = SqlDB.GetDigimon(digiId);
                    for (int i = 0; i < Tamer.DigimonList.Length; i++)
                    {
                        if (Tamer.DigimonList[i] == null)
                        {
                            Tamer.DigimonList[i] = mon;
                            client.Send(new Hatch(mon, i));
                            break;
                        }
                    }
                    Send(new BroadcastHatch(Tamer.Name, name, egg.Species, mon.Size, Tamer.IncubatorLevel));
                    Tamer.IncubatorLevel = 0;
                    Tamer.Incubator      = 0;
                }
                break;
            }

            case 1039:
            {
                //Remove Egg.
                int NPC = packet.ReadInt();
                if (Tamer.IncubatorLevel == 0 && Tamer.Incubator != 0)
                {
                    Item e = new Item();
                    e.ID     = Tamer.Incubator;
                    e.Amount = 1;
                    Tamer.Inventory.Add(e);
                }
                break;
            }

            case 1041:
            {
                //Mercenary Switch
                byte    slot    = packet.ReadByte();
                Digimon target  = Tamer.DigimonList[slot];
                Digimon current = Tamer.DigimonList[0];

                client.Send(new UpdateStats(Tamer, target));
                ActiveMap.Send(new DigimonSwitch(Tamer.DigimonHandle, slot, current, target));

                Tamer.Partner = target;

                Tamer.DigimonList[slot] = current;
                Tamer.DigimonList[0]    = target;
                break;
            }

            case 1325:
            {
                //Riding Mode
                //TODO: Verify if rideable
                client.Send(new RidingMode(Tamer.TamerHandle, Tamer.DigimonHandle));
                client.Send(new UpdateMS(Tamer.TamerHandle, Tamer.DigimonHandle, Tamer.Partner.Stats.MS, 1, 1));
                break;
            }

            case 1326:
            {
                //Riding mode
                client.Send(new StopRideMode(Tamer.TamerHandle, Tamer.DigimonHandle));
                client.Send(new UpdateMS(Tamer.TamerHandle, Tamer.DigimonHandle, (short)Tamer.MS, Tamer.Partner.Stats.MS));
                break;
            }

            case 1703:
            {
                //Appears at the end of map switching
                client.Send(packet);
                break;
            }

            case 1706:
            {
                //Verify access code and send char data.
                uint u          = packet.ReadUInt();
                uint acctId     = packet.ReadUInt();
                int  accessCode = packet.ReadInt();

                SqlDB.LoadUser(client, acctId, accessCode);
                SqlDB.LoadTamer(client);

                if (client.Tamer == null)
                {
                    client.m_socket.Close();
                }

                lock (Clients) { Clients.Add(client); }

                MakeHandles(client.Tamer, (uint)client.time_t);

                Packet p = new Packets.Game.CharInfo(client.Tamer);
                //File.WriteAllBytes("W:\\My.packet", p.ToArray());
                //Console.WriteLine(Packet.Visualize(buffer));

                //byte[] buffer = File.ReadAllBytes("W:\\CharInfo.packet");
                client.Send(new Packets.Game.Packet1704());
                client.Send(p);

                Maps[client.Tamer.Location.Map].Enter(client);         //Enter GameMap
                break;
            }

            case 1709:
            {
                //Map Change
                int     portalId = packet.ReadInt();
                Portal  Portal   = PortalDB.GetPortal(portalId);
                MapData Map      = MapDB.GetMap(Portal.MapId);

                Maps[client.Tamer.Location.Map].Leave(client);
                Tamer.Location = new Position(Portal);

                SqlDB.SaveTamer(client);
                client.Send(new MapChange(Opt.GameServer.IP.ToString(), Opt.GameServer.Port, Portal, Map.Name));
                client.Send(new SendHandle(Tamer.TamerHandle));
                break;
            }

            case 2404:
            {
                //FriendList
                client.Send(new Packets.Game.FriendList());
                break;
            }

            case 3204:
            {
                Dictionary <int, Digimon> ArchivedDigimon = new Dictionary <int, Digimon>();
                for (int i = 0; i < Tamer.ArchivedDigimon.Length; i++)
                {
                    if (Tamer.ArchivedDigimon[i] == 0)
                    {
                        continue;
                    }
                    Digimon dMon = SqlDB.LoadDigimon(Tamer.ArchivedDigimon[i]);
                    dMon.Model = GetModel(dMon.ProperModel());
                    ArchivedDigimon.Add(i, dMon);
                }
                client.Send(new DigimonArchive(Tamer.ArchiveSize, 40, ArchivedDigimon));
                break;
            }

            case 3201:
            {
                int Slot        = packet.ReadInt();
                int ArchiveSlot = packet.ReadInt() - 1000;
                int uInt        = packet.ReadInt();

                if (Tamer.DigimonList[Slot] == null)
                {
                    //Archive to Digivice
                    Digimon archiveDigimon = SqlDB.LoadDigimon(Tamer.ArchivedDigimon[ArchiveSlot]);
                    archiveDigimon.Model = GetModel(archiveDigimon.ProperModel());
                    Tamer.ArchivedDigimon[ArchiveSlot] = 0;
                    Tamer.DigimonList[Slot]            = archiveDigimon;
                }
                else if (Tamer.ArchivedDigimon[ArchiveSlot] == 0)
                {
                    //Digivice to Archive
                    Digimon Mon1 = Tamer.DigimonList[Slot];
                    SqlDB.SaveDigimon(Mon1);

                    Tamer.ArchivedDigimon[ArchiveSlot] = Mon1.DigiId;
                    Tamer.DigimonList[Slot]            = null;
                }
                else
                {
                    //Swapping
                    Digimon Mon1 = Tamer.DigimonList[Slot];
                    SqlDB.SaveDigimon(Mon1);

                    Digimon Mon2 = SqlDB.LoadDigimon(Tamer.ArchivedDigimon[ArchiveSlot]);
                    Tamer.ArchivedDigimon[ArchiveSlot] = Mon1.DigiId;
                    Mon2.Model = GetModel(Mon2.ProperModel());
                    Tamer.DigimonList[Slot] = Mon2;
                }
                SqlDB.SaveTamer(client);
                client.Send(new StoreDigimon(Slot, ArchiveSlot + 1000, 0));
                break;
            }

            case 3904:
            {
                //Equip/unequip
                short Slot1 = packet.ReadShort();
                short Slot2 = packet.ReadShort();

                //If s1 is a slot in the inventory
                if (Slot1 < 63 && Slot2 < 63)
                {
                    //Both items are inventory slots
                    Item iSource = Tamer.Inventory[Slot1];
                    Item iDest   = Tamer.Inventory[Slot2];

                    if (iSource.ItemId == iDest.ItemId)
                    {
                        //Combine Stacks
                        iDest.Amount += iSource.Amount;
                        Tamer.Inventory.Remove(Slot1);
                    }
                    else
                    {
                        //Switch items
                        Item iTemp = iSource;
                        Tamer.Inventory[Slot1] = iDest;
                        Tamer.Inventory[Slot2] = iSource;
                    }
                    client.Send(packet.ToArray());
                }
                else if (Slot1 < 63 && Slot2 >= 1000)
                {
                    //Equipping an item
                    int iSlot = Tamer.Inventory.EquipSlot(Slot2);
                    if (iSlot == -1)
                    {
                        iSlot = 0;
                    }
                    Item e     = Tamer.Inventory[Slot1];
                    Item cur_e = Tamer.Equipment[iSlot];
                    if (cur_e.ItemId != 0)
                    {
                        Tamer.Inventory.Add(cur_e);
                    }
                    Tamer.Inventory.Remove(e);
                    Tamer.Equipment[iSlot] = e;
                    client.Send(packet.ToArray());
                    client.Send(new UpdateStats(Tamer, Tamer.Partner));
                    client.Send(new UpdateEquipment(Tamer.TamerHandle, (byte)iSlot, e));
                }
                else if (Slot1 >= 1000 && Slot2 < 63)
                {
                    //Unequip
                    int  eSlot = Tamer.Inventory.EquipSlot(Slot1);
                    Item e     = Tamer.Equipment[eSlot];
                    if (Tamer.Inventory.Count >= Tamer.InventorySize)
                    {
                        return;
                    }
                    Tamer.Inventory.Add(e);
                    Tamer.Equipment[eSlot] = new Item();
                    client.Send(packet.ToArray());
                    client.Send(new UpdateStats(Tamer, Tamer.Partner));
                    client.Send(new UpdateEquipment(Tamer.TamerHandle, (byte)eSlot));
                }
                break;
            }

            case 3907:
            {
                //Split
                short sItemToSplit   = packet.ReadShort();
                short sDestination   = packet.ReadShort();
                byte  sAmountToSplit = packet.ReadByte();

                Item iToSplit = Tamer.Inventory[sItemToSplit];
                if (Tamer.Inventory.Count > Tamer.InventorySize)
                {
                    return;                                                      //Don't have the stop this action packet T_T
                }
                Item iNew = new Item(0);
                iNew.ID          = iToSplit.ID;
                iNew.time_t      = iToSplit.time_t;
                iNew.Amount      = sAmountToSplit;
                iToSplit.Amount -= sAmountToSplit;
                if (iToSplit.Amount == 0)
                {
                    Tamer.Inventory.Remove(sItemToSplit);
                }

                Tamer.Inventory.Add(iNew);

                client.Send(packet);
                break;
            }

            case 3922:
            {
                //Scan DigiEgg
                int  NpcId = packet.ReadInt();
                byte uByte = packet.ReadByte();
                int  Slot  = packet.ReadInt();
                //Check for distance?
                break;
            }

            case 3923:
            {
                //Return DigiEgg
                int NpcId = packet.ReadInt();
                int Slot  = packet.ReadInt();
                //Check for NPC distance?
                int amount = Tamer.Inventory[Slot].BaseID;
                if (90101 <= amount && amount < 90108)
                {
                    if (amount == 90101)
                    {
                        amount = 25 * Tamer.Inventory[Slot].Amount;
                    }
                    else
                    {
                        amount = 100 + (50 * (amount - 90102));
                    }
                    Tamer.Money += amount * Math.Max(Tamer.Inventory[Slot].Amount, 1);
                    Tamer.Inventory.Remove(Slot);
                    client.Send(new ReturnEggs(amount, Tamer.Money, 0));
                }
                else
                {
                    client.Close();
                }
                break;
            }

            default:
            {
                Console.WriteLine("Unknown Packet Type {0}\n{1}", packet.Type, packet);
                break;
            }
            }
        }
Esempio n. 27
0
        public async Task <PathMinDisplayed> CreatePath(PathModel path)
        {
            int           mapId  = 0;
            List <string> zones  = new List <string>();
            string        userId = User.Claims.First(c => c.Type == "UserID").Value;
            var           user   = await _userManager.FindByIdAsync(userId);

            TrajetDB trajetDB = new TrajetDB()
            {
                Name               = path.Name,
                Type               = (TypePath)path.Type,
                GroupLevelMax      = path.GroupLevelMax,
                GroupLevelMin      = path.GroupLevelMin,
                CaptureItem        = path.CaptureItem,
                Fk_User            = new Guid(userId),
                MaxPod             = path.MaxPod,
                MonsterQuantityMin = path.MonsterQuantityMin,
                MonsterQuantityMax = path.MonsterQuantityMax,
                LeaderBank         = path.LeaderBank,
                IsCapture          = path.IsCapture,
                ListRessource      = path.ListRessource,
                Key = Guid.NewGuid()
            };

            foreach (var monstreLevel in path.MonsterLevel)
            {
                if (trajetDB.MonsterLevel == null)
                {
                    trajetDB.MonsterLevel = new List <SpecificMonsterLevel>();
                }

                trajetDB.MonsterLevel.Add(new SpecificMonsterLevel()
                {
                    MonsterId       = monstreLevel.MonsterId,
                    MonsterLevelMax = monstreLevel.MonsterLevelmax,
                    MonsterLevelMin = monstreLevel.MonsterLevelMin
                });
            }
            foreach (var monstreQuantity in path.MonsterQuantity)
            {
                if (trajetDB.MonsterQuantity == null)
                {
                    trajetDB.MonsterQuantity = new List <SpecificMonsterQuantity>();
                }
                trajetDB.MonsterQuantity.Add(new SpecificMonsterQuantity()
                {
                    MonsterId          = monstreQuantity.MonsterId,
                    MonsterQuantityMax = monstreQuantity.MonsterQuantityMax,
                    MontserQuantityMin = monstreQuantity.MonsterQuantityMin
                });
            }
            foreach (var monstreCapture in path.MonsterCapture)
            {
                if (trajetDB.MonsterCapture == null)
                {
                    trajetDB.MonsterCapture = new List <CaptureMonsterQuantity>();
                }
                trajetDB.MonsterCapture.Add(new CaptureMonsterQuantity()
                {
                    MonsterId       = monstreCapture.MonsterId,
                    MonsterQuantity = monstreCapture.MonsterQuantity
                });
            }
            /* actions du trajet */
            trajetDB.PathAction = new List <PathAction>();
            foreach (PathActionModel action in path.PathAction)
            {
                PathAction pathActionToCreate = new PathAction();
                if (!ListBank.Contains(action.MapPos))
                {
                    MapDB map = Database.Maps.Find(o => o.Coordinate == ("[" + action.MapPos.Replace(';', ',') + "]")).First();

                    mapId = map.Key;
                    if (!zones.Contains(map.AreaName))
                    {
                        zones.Add(map.AreaName);
                    }

                    pathActionToCreate.MapId = mapId;
                    foreach (MapActionModel item in action.Actions)
                    {
                        if (pathActionToCreate.Actions == null)
                        {
                            pathActionToCreate.Actions = new List <MapAction>();
                        }

                        if (item.FightAction != null)
                        {
                            FightAction fightActionToCreate = new FightAction()
                            {
                                Order   = item.Order,
                                IsAlone = item.FightAction.IsAlone
                            };
                            pathActionToCreate.Actions.Add(fightActionToCreate);
                        }
                        else if (item.GatherAction != null)
                        {
                            GatherAction GatherActionToCreate = new GatherAction()
                            {
                                Order = item.Order
                            };
                            pathActionToCreate.Actions.Add(GatherActionToCreate);
                        }
                        else if (item.InteractionAction != null)
                        {
                            InteractionAction InteractionActionToCreate = new InteractionAction()
                            {
                                Order = item.Order,
                                InteractiveIdObject   = item.InteractionAction.InteractiveidObject,
                                InteractiveIdResponse = item.InteractionAction.InteractiveIdResponse,
                                ToBackBank            = item.InteractionAction.ToBackBank,
                                ToGoBank = item.InteractionAction.ToGoBank
                            };
                            pathActionToCreate.Actions.Add(InteractionActionToCreate);
                        }
                        else if (item.moveAction != null)
                        {
                            MoveAction MoveActionToCreate = new MoveAction()
                            {
                                Order      = item.Order,
                                ToBackBank = item.moveAction.ToBackBank,
                                ToGoBank   = item.moveAction.ToGoBank,
                                CellId     = item.moveAction.Cellid
                            };
                            if (item.moveAction.Direction != null)
                            {
                                foreach (string direc in item.moveAction.Direction)
                                {
                                    if (MoveActionToCreate.Direction == null)
                                    {
                                        MoveActionToCreate.Direction = new List <MovementDirectionEnum>();
                                    }
                                    MoveActionToCreate.Direction.Add((MovementDirectionEnum)System.Enum.Parse(typeof(MovementDirectionEnum), direc.ToUpper()));
                                }
                            }
                            pathActionToCreate.Actions.Add(MoveActionToCreate);
                        }
                        else if (item.UseItemAction != null)
                        {
                            UseItemAction UseItemActionToCreate = new UseItemAction()
                            {
                                Order      = item.Order,
                                ItemId     = item.UseItemAction.ItemId,
                                ToBackBank = item.UseItemAction.ToBackBank,
                                ToGoBank   = item.UseItemAction.ToGoBank
                            };
                            pathActionToCreate.Actions.Add(UseItemActionToCreate);
                        }
                        else if (item.ZaapAction != null)
                        {
                            int zaapDestination = Database.Maps.Find(o => o.Coordinate == ("[" + action.MapPos.Replace(';', ',') + "]")).First().Key;

                            ZaapAction UseItemActionctionToCreate = new ZaapAction()
                            {
                                Order       = item.Order,
                                Destination = zaapDestination,
                                ZaapId      = item.ZaapAction.ZaapId,
                                ToBackBank  = item.ZaapAction.ToBackBank,
                                ToGoBank    = item.ZaapAction.ToGoBank
                            };
                            pathActionToCreate.Actions.Add(UseItemActionctionToCreate);
                        }
                        else if (item.ZaapiAction != null)
                        {
                            int        zaapiDestination           = Database.Maps.Find(o => o.Coordinate == ("[" + action.MapPos.Replace(';', ',') + "]")).First().Key;
                            ZaapAction UseItemActionctionToCreate = new ZaapAction()
                            {
                                Order       = item.Order,
                                Destination = zaapiDestination,
                                ZaapId      = item.ZaapiAction.ZaapiId,
                                ToBackBank  = item.ZaapiAction.ToBackBank,
                                ToGoBank    = item.ZaapiAction.ToGoBank
                            };
                            pathActionToCreate.Actions.Add(UseItemActionctionToCreate);
                        }
                    }
                    trajetDB.PathAction.Add(pathActionToCreate);
                }
                else
                {
                    foreach (MapActionModel item in action.Actions)
                    {
                        pathActionToCreate = new PathAction();
                        if (item.moveAction != null)
                        {
                            mapId = item.moveAction.MapId.Value;
                            pathActionToCreate.MapId = mapId;
                            MoveAction MoveActionToCreate = new MoveAction()
                            {
                                Order      = item.Order,
                                ToBackBank = item.moveAction.ToBackBank,
                                ToGoBank   = item.moveAction.ToGoBank,
                                CellId     = item.moveAction.Cellid,
                                MapId      = mapId
                            };
                            if (item.moveAction.Direction != null)
                            {
                                foreach (string direc in item.moveAction.Direction)
                                {
                                    if (MoveActionToCreate.Direction == null)
                                    {
                                        MoveActionToCreate.Direction = new List <MovementDirectionEnum>();
                                    }
                                    MoveActionToCreate.Direction.Add((MovementDirectionEnum)System.Enum.Parse(typeof(MovementDirectionEnum), direc.ToUpper()));
                                }
                            }

                            if (trajetDB.PathAction.Exists(o => o.MapId == mapId))
                            {
                                trajetDB.PathAction.Find(o => o.MapId == mapId).Actions.Add(MoveActionToCreate);
                            }
                            else
                            {
                                pathActionToCreate.Actions = new List <MapAction>();
                                pathActionToCreate.Actions.Add(MoveActionToCreate);
                                trajetDB.PathAction.Add(pathActionToCreate);
                            }
                        }
                        else if (item.BankAction != null)
                        {
                            mapId = item.BankAction.MapId.Value;
                            pathActionToCreate.MapId = mapId;
                            BankAction BankActionToCreate = new BankAction()
                            {
                                MapId = mapId,
                                Order = item.Order
                            };
                            if (trajetDB.PathAction.Exists(o => o.MapId == mapId))
                            {
                                trajetDB.PathAction.Find(o => o.MapId == mapId).Actions.Add(BankActionToCreate);
                            }
                            else
                            {
                                pathActionToCreate.Actions = new List <MapAction>();
                                pathActionToCreate.Actions.Add(BankActionToCreate);
                                trajetDB.PathAction.Add(pathActionToCreate);
                            }
                        }
                    }
                }
            }
            trajetDB.Zones = zones;
            PathMinDisplayed retourPath = new PathMinDisplayed()
            {
                IsCapture  = trajetDB.IsCapture,
                Key        = trajetDB.Key,
                Name       = trajetDB.Name,
                Type       = trajetDB.Type,
                UsedNumber = 0,
                Zones      = trajetDB.Zones
            };

            await Database.Paths.InsertOneAsync(trajetDB);

            return(retourPath);
        }