Exemplo n.º 1
0
        public void GetServerState(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            string[] serverList = package.Substring(2).Split('|');
            Server   server     = user.Accounts.FirstOrDefault(c => c.TcpId == tcpId).Server;
            bool     firstTime  = true;

            foreach (string sv in serverList)
            {
                string[] separator = sv.Split(';');

                int         id          = int.Parse(separator[0]);
                ServerState serverState = (ServerState)byte.Parse(separator[1]);

                if (id == server.Id)
                {
                    server.State = serverState;
                    manager.ReplaceOneAsync(c => c.Id == user.Id, user);
                    hub.DispatchToClient(new LogMessage(LogType.GAME_INFORMATION, $"Le serveur {server.Name} est {server.State}", tcpId), tcpId).Wait();

                    if (serverState != ServerState.ONLINE)
                    {
                        firstTime = false;
                    }
                }
            }

            if (!firstTime && server.State == ServerState.ONLINE)
            {
                hub.SendPackage("Ax", tcpId);
            }
        }
Exemplo n.º 2
0
        public void RegenTimerHandler(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            var characterGame = Storage.Instance.GetCharacter(user.Accounts.Find(c => c.TcpId == tcpId).CurrentCharacter.Key);

            characterGame.RegenTime = Convert.ToInt32(package.Substring(3));
            hub.DispatchToClient(new LogMessage(LogType.SYSTEM_INFORMATION, $"Votre personnage récupère 1 pdv chaque {characterGame.RegenTime / 1000} secondes", tcpId), tcpId).Wait();
        }
Exemplo n.º 3
0
 public void GetServerWorldRemastered(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
 {
     user.Accounts.FirstOrDefault(c => c.TcpId == tcpId).GameTicket = package.Split(';')[1];
     manager.ReplaceOneAsync(c => c.Id == user.Id, user);
     hub.Clients.Caller.SendAsync("NewConnection", package.Split(';')[0].Substring(3), 443, true, tcpId, user.Accounts.FirstOrDefault(c => c.TcpId == tcpId).isScan);
     hub.DispatchToClient(new LogMessage(LogType.SYSTEM_INFORMATION, $"Redirection vers le world ", tcpId), tcpId).Wait();
 }
Exemplo n.º 4
0
 public void GetServerWorld(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
 {
     user.Accounts.FirstOrDefault(c => c.TcpId == tcpId).GameTicket = package.Substring(14);
     manager.ReplaceOneAsync(c => c.Id == user.Id, user);
     hub.Clients.Caller.SendAsync("NewConnection", Hash.DecryptIp(package.Substring(3, 8)), Hash.DecryptPort(package.Substring(11, 3).ToCharArray()), true, tcpId, user.Accounts.FirstOrDefault(c => c.TcpId == tcpId).isScan);
     hub.DispatchToClient(new LogMessage(LogType.SYSTEM_INFORMATION, $"Redirection vers le world {Hash.DecryptIp(package.Substring(3, 8))} {Hash.DecryptPort(package.Substring(11, 3).ToCharArray())}", tcpId), tcpId).Wait();
 }
Exemplo n.º 5
0
 public void GetSecretQuestion(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
 {
     if (user.Accounts.FirstOrDefault(c => c.TcpId == tcpId).Server.State == ServerState.ONLINE)
     {
         hub.SendPackage("Ax", tcpId, true);
     }
 }
Exemplo n.º 6
0
        public void CharacterRegenHandler(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            int regen         = Convert.ToInt32(package.Substring(3));
            var characterGame = Storage.Instance.GetCharacter(user.Accounts.Find(c => c.TcpId == tcpId).CurrentCharacter.Key);

            characterGame.Characteristic.VitalityActual += regen;
            hub.DispatchToClient(new LogMessage(LogType.SYSTEM_INFORMATION, $"Vous avez récupéré {regen} points de vie", tcpId), tcpId).Wait();
        }
 public void EntityInventoryHandler(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
 {
     //Guid inventoryId = user.Accounts.Find(c => c.TcpId == tcpId).CurrentCharacter.Fk_Inventory;
     //var inventory = Database.Inventories.Find(i => i.Key == inventoryId).First();
     //string[] datas = package.Substring(2).Split('|');
     //TODO
     //Database.Inventories.ReplaceOneAsync(i => i.Key == inventoryId, inventory);
 }
Exemplo n.º 8
0
        public void JobXpHandler(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            Guid jobsId   = user.Accounts.Find(c => c.TcpId == tcpId).CurrentCharacter.Fk_Jobs;
            var  jobsBook = Database.Jobs.Find(i => i.Key == jobsId).First();

            jobsBook.Jobs.DeserializeJobsXp(package.Substring(3));
            Database.Jobs.ReplaceOneAsync(i => i.Key == jobsId, jobsBook);
        }
        public void ItemAddHandler(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            Guid inventoryId = user.Accounts.Find(c => c.TcpId == tcpId).CurrentCharacter.Fk_Inventory;
            var  inventory   = Database.Inventories.Find(i => i.Key == inventoryId).First();

            inventory.Items.DeserializeItems(package.Substring(4));
            Database.Inventories.ReplaceOneAsync(i => i.Key == inventoryId, inventory);
            hub.DispatchToClient(new InventoryMessage(tcpId), tcpId).Wait();
        }
Exemplo n.º 10
0
        public void StatsHandler(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            var characterGame = Storage.Instance.GetCharacter(user.Accounts.Find(c => c.TcpId == tcpId).CurrentCharacter.Key);

            characterGame.DeserializeCharacter(package);
            var inventory = Database.Inventories.Find(i => i.Key == characterGame.Fk_Inventory).First();

            hub.DispatchToClient(new CharacteristicMessage(characterGame.Characteristic, inventory.Kamas, characterGame.AvailableCharactericsPts, tcpId), tcpId).Wait();
        }
Exemplo n.º 11
0
        public void SpellUpdateSuccess(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            var characterGame = Storage.Instance.GetCharacter(user.Accounts.Find(c => c.TcpId == tcpId).CurrentCharacter.Key);
            var split         = package.Substring(3).Split('~');
            var pair          = new KeyValuePair <int, byte>(Convert.ToInt32(split[0]), Convert.ToByte(split[1]));

            characterGame.Fk_Spells[characterGame.Fk_Spells.FindIndex(spell => spell.Key == pair.Key)] = pair;
            // TODO send hub spell msg
        }
Exemplo n.º 12
0
 public void GetLoginQueue(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
 {
     string[] queueData = package.Substring(2).Split('|');
     hub.DispatchToClient(new LogMessage(LogType.GAME_INFORMATION, "[File d'attente] Position " + queueData[0] + "/" + queueData[1], tcpId), tcpId).Wait();
     if (int.Parse(queueData[0]) > 100)
     {
         hub.SendPackage("Af", tcpId);
     }
 }
Exemplo n.º 13
0
        public void JobLevelUpHandler(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            Guid jobsId   = user.Accounts.Find(c => c.TcpId == tcpId).CurrentCharacter.Fk_Jobs;
            var  datas    = package.Substring(2).Split('|');
            var  jobsBook = Database.Jobs.Find(i => i.Key == jobsId).First();

            jobsBook.Jobs.Find(x => x.Id == (JobIdEnum)Convert.ToInt32(datas[0])).Level = Convert.ToInt32(datas[1]);
            Database.Jobs.ReplaceOneAsync(i => i.Key == jobsId, jobsBook);
        }
        public void GetListCharacters(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            var account = user.Accounts.Find(c => c.TcpId == tcpId);

            hub.SendPackage("Agfr", tcpId);
            hub.SendPackage($"Ai{account.ClientId}", tcpId);
            hub.SendPackage("AL", tcpId);
            hub.SendPackage("Af", tcpId);
        }
Exemplo n.º 15
0
        public void InventoryWeightHandler(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            Guid inventoryId = user.Accounts.Find(c => c.TcpId == tcpId).CurrentCharacter.Fk_Inventory;
            var  inventory   = Database.Inventories.Find(i => i.Key == inventoryId).First();

            string[] pods = package.Substring(2).Split('|');
            inventory.ActualPods = short.Parse(pods[0]);
            inventory.MaxPods    = short.Parse(pods[1]);
            Database.Inventories.ReplaceOneAsync(i => i.Key == inventoryId, inventory);
        }
Exemplo n.º 16
0
        public void ItemRemoveHandler(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            Guid inventoryId = user.Accounts.Find(c => c.TcpId == tcpId).CurrentCharacter.Fk_Inventory;
            var  inventory   = Database.Inventories.Find(i => i.Key == inventoryId).First();

            string[] data = package.Substring(2).Split(';');
            inventory.Items.RemoveAt(inventory.Items.FindIndex(it => it.InventoryId == Convert.ToInt32(package.Substring(2))));
            Database.Inventories.ReplaceOneAsync(i => i.Key == inventoryId, inventory);
            hub.DispatchToClient(new InventoryMessage(tcpId), tcpId).Wait();
        }
Exemplo n.º 17
0
        public async Task EntityActionHandler(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            var characterGame = Storage.Instance.GetCharacter(user.Accounts.Find(c => c.TcpId == tcpId).CurrentCharacter.Key);
            var cliId         = user.CliConnectionId;
            var apiKey        = user.ApiKey;

            string[] splittedData = package.Substring(2).Split(';');
            int      actionId     = int.Parse(splittedData[1]);

            if (actionId > 0)
            {
                int entityId = int.Parse(splittedData[2]);
                switch (actionId)
                {
                case 1:     // Entity Move on map
                    int startCell = Hash.GetCellNum(splittedData[3].Substring(1, 2));
                    int cellId    = Hash.GetCellNum(splittedData[3].Substring(splittedData[3].Length - 2));
                    if (entityId == characterGame.Key)
                    {
                        var gttMovementType = splittedData[0];
                        var path            = PathFinder.Instance.GetPath(characterGame.Map, characterGame.CellId, cellId, true);
                        var timeNeed        = PathFinderUtils.Instance.GetDeplacementTime(characterGame.Map, path);
                        List <IHubClientAction> pathAction = new List <IHubClientAction>();
                        pathAction.Add(new HubNodeAction(path, (newCell) =>
                        {
                            characterGame.CellId = newCell;
                            characterGame.Map.Entities[entityId].CellId = newCell;
                        }, new HubClientAction(new MapMessage(characterGame.Map, tcpId)
                                               )));
                        talkService.AddTask(tcpId, cliId, apiKey.Key.ToString(), pathAction, 0);
                        List <IHubClientAction> TaskRequest = new List <IHubClientAction>();
                        TaskRequest.Add(new HubPackageAction($"GKK{gttMovementType}"));
                        talkService.AddTask(tcpId, cliId, apiKey.Key.ToString(), TaskRequest, timeNeed);
                    }
                    else
                    {
                        var path = PathFinder.Instance.GetPath(characterGame.Map, startCell, cellId, true);
                        List <IHubClientAction> TaskRequest = new List <IHubClientAction>();
                        TaskRequest.Add(new HubNodeAction(path, (newCell) =>
                        {
                            if (characterGame.Map.Entities.ContainsKey(entityId))
                            {
                                characterGame.Map.Entities[entityId].CellId = newCell;
                            }
                        }, new HubClientAction(new MapMessage(characterGame.Map, tcpId))));
                        talkService.AddTask(tcpId, cliId, apiKey.Key.ToString(), TaskRequest, 0);
                        //characterGame.Map.Entities[entityId].CellId = cellId;
                        //hub.DispatchToClient(new MapMessage(characterGame.Map, tcpId), tcpId);
                    }
                    break;
                }
            }
        }
Exemplo n.º 18
0
        public void ItemUpdateHandler(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            Guid inventoryId = user.Accounts.Find(c => c.TcpId == tcpId).CurrentCharacter.Fk_Inventory;
            var  inventory   = Database.Inventories.Find(i => i.Key == inventoryId).First();

            string[] data = package.Substring(3).Split(';');
            Item     item = new Item();

            item.DeserializeItem(data[0]);
            inventory.Items[inventory.Items.FindIndex(it => it.InventoryId == item.InventoryId)] = item;
            Database.Inventories.ReplaceOneAsync(i => i.Key == inventoryId, inventory);
            hub.DispatchToClient(new InventoryMessage(tcpId), tcpId).Wait();
        }
        public void SelectCharacter(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            var currentAccount = user.Accounts.FirstOrDefault(c => c.TcpId == tcpId);

            string[]         splittedData = package.Substring(3).Split('|');
            int              count        = 2;
            bool             found        = false;
            List <Character> characters   = new List <Character>();

            hub.CallCheck(tcpId).Wait();

            DeepTalk.IsScans.TryGetValue(tcpId, out bool isScan);

            while (count < splittedData.Length && !found)
            {
                string[] _loc11_       = splittedData[count].Split(';');
                int      id            = int.Parse(_loc11_[0]);
                string   characterName = _loc11_[1];
                byte     Level         = byte.Parse(_loc11_[2]);
                short    model         = short.Parse(_loc11_[3]);

                if (isScan)
                {
                    characters.Add(new Character()
                    {
                        BreedId = model, Key = id, Name = characterName, Level = Level
                    });
                }

                if (!isScan && currentAccount != null)
                {
                    if (characterName.ToLower().Equals(currentAccount.CurrentCharacter.Name.ToLower()))
                    {
                        hub.SendPackage($"AS{id}", tcpId, true);
                        hub.SendPackage($"Af", tcpId);
                        hub.DispatchToClient(new LogMessage(LogType.SYSTEM_INFORMATION, $"Selection du personnage {characterName}", tcpId), tcpId).Wait();
                        Debug.WriteLine("Add character " + currentAccount.CurrentCharacter.Key + " to memory");
                        Storage.Instance.AddCharacter(currentAccount.CurrentCharacter);
                        found = true;
                    }
                }
                count++;
            }
            if (isScan)
            {
                user.Accounts.FirstOrDefault(c => c.TcpId == tcpId).Characters = characters;
                manager.ReplaceOneAsync(c => c.Id == user.Id, user).Wait();
                hub.DispatchToClient(new CharactersMessage(characters, tcpId), tcpId).Wait();
                hub.DisconnectCli(tcpId, true).Wait();
            }
        }
Exemplo n.º 20
0
        public async static Task Receive(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> Manager, DeepTalkService talkService)
        {
            ReceiverData method = methods.Find(m => package.StartsWith(m.HandlerName));

            if (method != null)
            {
                //if (method.Information.ReturnType.GetMethod(nameof(Task.GetAwaiter)) != null)
                //    await (Task)method.Information.Invoke(method.Instance, new object[5] { hub, package, user, tcpId, Manager });
                //else
                method.Information.Invoke(method.Instance, new object[6] {
                    hub, package, user, tcpId, Manager, talkService
                });
            }
        }
Exemplo n.º 21
0
        public void ExchangeItemsListHandler(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            var characterGame = Storage.Instance.GetCharacter(user.Accounts.Find(c => c.TcpId == tcpId).CurrentCharacter.Key);
            var inventory     = Database.Inventories.Find(i => i.Key == characterGame.Fk_Inventory).First();

            if (characterGame.State == CharacterStateEnum.BANKING)
            {
                inventory.Bank.DeserializeItems(package.Substring(3));
                if (package.Contains(";G"))
                {
                    inventory.BankKamas = Convert.ToInt32(package.Split(';').First(x => x.StartsWith("G")).Replace("G", ""));
                }
            }
            Database.Inventories.ReplaceOneAsync(i => i.Key == characterGame.Fk_Inventory, inventory);
        }
Exemplo n.º 22
0
        public void ItemQuantityUpdateHandler(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            Guid inventoryId = user.Accounts.Find(c => c.TcpId == tcpId).CurrentCharacter.Fk_Inventory;
            var  inventory   = Database.Inventories.Find(i => i.Key == inventoryId).First();

            string[] data = package.Substring(2).Split('|');
            Item     item = inventory.Items.Find(it => it.InventoryId == Convert.ToInt32(data[0]));

            if (item != null)
            {
                item.Quantity = Convert.ToInt32(data[1]);
            }
            Database.Inventories.ReplaceOneAsync(i => i.Key == inventoryId, inventory);
            hub.DispatchToClient(new InventoryMessage(tcpId), tcpId).Wait();
        }
Exemplo n.º 23
0
        public void GroupInvitationHandler(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            var characterGame = Storage.Instance.GetCharacter(user.Accounts.Find(c => c.TcpId == tcpId).CurrentCharacter.Key);

            hub.DispatchToClient(new LogMessage(LogType.SYSTEM_INFORMATION, package.Substring(3).Split('|')[0].ToLower() + " t'invite à rejoindre son groupe.", tcpId), tcpId).Wait();
            if (characterGame.HasGroup && package.Substring(3).Split('|')[0].ToLower() == characterGame.Group.Leader.Name.ToLower())
            {
                hub.SendPackage("PA", tcpId);
                hub.DispatchToClient(new LogMessage(LogType.SYSTEM_INFORMATION, "Invitation acceptée.", tcpId), tcpId).Wait();
            }
            else
            {
                hub.SendPackage("PR", tcpId);
                hub.DispatchToClient(new LogMessage(LogType.SYSTEM_INFORMATION, "Invitation refusée.", tcpId), tcpId).Wait();
            }
        }
Exemplo n.º 24
0
        public void ExchangeCreateHandler(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            var characterGame = Storage.Instance.GetCharacter(user.Accounts.Find(c => c.TcpId == tcpId).CurrentCharacter.Key);

            string[] datas        = package.Substring(3).Split('|');
            var      exchangeType = (ExchangeTypeEnum)Convert.ToInt32(datas[0]);

            if (exchangeType == ExchangeTypeEnum.EXCHANGE_STORAGE)
            {
                characterGame.State = CharacterStateEnum.BANKING;
            }
            else if (exchangeType == ExchangeTypeEnum.EXCHANGE_PLAYER)
            {
                characterGame.State = CharacterStateEnum.TRADING;
            }
        }
Exemplo n.º 25
0
        public void GetWelcomeKeyAsync(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            var account = user.Accounts.FirstOrDefault(c => c.TcpId == tcpId);

            if (account.CurrentCharacter != null)
            {
                account.CurrentCharacter.State = CharacterStateEnum.CONNECTING;
            }
            account.WelcomeKey = package.Substring(2);
            manager.ReplaceOneAsync(c => c.Id == user.Id, user);

            hub.DispatchToClient(new LogMessage(LogType.GAME_INFORMATION, "Connexion au serveur d'auth", tcpId), tcpId).Wait();

            hub.SendPackage("1.31.3", tcpId);

            hub.SendPackage($"{account.AccountName}\n{Hash.EncryptPassword(account.Password, account.WelcomeKey)}", tcpId);
            hub.SendPackage($"Af", tcpId);
        }
Exemplo n.º 26
0
        public void PlayerEmoteHandler(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            var characterGame = Storage.Instance.GetCharacter(user.Accounts.Find(c => c.TcpId == tcpId).CurrentCharacter.Key);

            var split = package.Substring(3).Split('|');
            int playerId = Convert.ToInt32(split[0]), emoteId = Convert.ToInt32(split[1]);

            if (characterGame.Key != playerId)
            {
                return;
            }
            if (emoteId == 1 && characterGame.State != CharacterStateEnum.HEALING)
            {
                characterGame.State = CharacterStateEnum.HEALING;
            }
            else if (emoteId == 0 && characterGame.State == CharacterStateEnum.HEALING)
            {
                characterGame.State = CharacterStateEnum.IDLE;
            }
        }
Exemplo n.º 27
0
        public void AccountTempBannedError(DeepTalk hub, string package, UserDB account, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            string[]      banInformations = package.Substring(3).Split('|');
            int           days = int.Parse(banInformations[0].Substring(1)), hours = int.Parse(banInformations[1]), minutes = int.Parse(banInformations[2]);
            StringBuilder banInformationsMessage = new StringBuilder().Append("Votre compte sera invalide pendant ");

            if (days > 0)
            {
                banInformationsMessage.Append(days + " jour(s)");
            }
            if (hours > 0)
            {
                banInformationsMessage.Append(hours + " heures");
            }
            if (minutes > 0)
            {
                banInformationsMessage.Append(minutes + " minutes");
            }

            hub.DispatchToClient(new LogMessage(LogType.SYSTEM_ERROR, banInformationsMessage.ToString(), tcpId), tcpId).Wait();
        }
Exemplo n.º 28
0
        public void EntityPopOrMoveHandler(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            var characterGame = Storage.Instance.GetCharacter(user.Accounts.Find(c => c.TcpId == tcpId).CurrentCharacter.Key);

            foreach (var playerSplit in package.Substring(3).Split('|'))
            {
                if (playerSplit.Length != 0)
                {
                    if (playerSplit.StartsWith('+'))
                    {
                        Debug.WriteLine(playerSplit.Substring(1));
                        var entity = EntityFactory.Instance.CreateEntity(characterGame.Map.MapId, playerSplit.Substring(1));
                        if (entity != null)
                        {
                            Debug.WriteLine($"Entity {entity.Id} pop or move on cell {entity.CellId}; curr character {entity.Id == characterGame.Key}");
                            if (characterGame.Map.Entities.ContainsKey(entity.Id))
                            {
                                characterGame.Map.Entities[entity.Id].CellId = entity.CellId;
                            }
                            else
                            {
                                characterGame.Map.Entities[entity.Id] = entity;
                            }
                            if (entity.Id == characterGame.Key)
                            {
                                entity.Type          = EntityTypeEnum.TYPE_OWNERCHARACTER;
                                characterGame.CellId = entity.CellId;
                            }

                            hub.DispatchToClient(new MapMessage(characterGame.Map, tcpId), tcpId);
                        }
                    }
                    else if (playerSplit.StartsWith('-'))
                    {
                        characterGame.Map.Entities.Remove(Convert.ToInt32(playerSplit.Substring(1)));
                        hub.DispatchToClient(new MapMessage(characterGame.Map, tcpId), tcpId);
                    }
                }
            }
        }
Exemplo n.º 29
0
 public void ChannelUpdateHandler(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
 {
     /*
      * var characterGame = Storage.Instance.Characters[user.Accounts.Find(c => c.TcpId == tcpId).CurrentCharacter.Key];
      * if (package.Substring(2).StartsWith("+"))
      * {
      *  foreach (var chan in package.Substring(3).ToCharArray())
      *  {
      *      if (!characterGame.Channels.Contains(chan))
      *          characterGame.Channels += chan;
      *  }
      * }
      * else
      * {
      *  foreach (var chan in package.Substring(3).ToCharArray())
      *  {
      *      if (!characterGame.Channels.Contains(chan))
      *          characterGame.Channels.Replace(chan.ToString(), "");
      *  }
      * }
      * manager.ReplaceOneAsync(c => c.Id == user.Id, user);*/
 }
Exemplo n.º 30
0
        public void ItemMoveHandler(DeepTalk hub, string package, UserDB user, string tcpId, IMongoCollection <UserDB> manager, DeepTalkService talkService)
        {
            Guid inventoryId = user.Accounts.Find(c => c.TcpId == tcpId).CurrentCharacter.Fk_Inventory;
            var  inventory   = Database.Inventories.Find(i => i.Key == inventoryId).First();

            string[] data = package.Substring(2).Split('|');
            Item     item = inventory.Items.Find(it => it.InventoryId == Convert.ToInt32(data[0]));

            if (item != null)
            {
                if (String.IsNullOrEmpty(data[1]))
                {
                    item.Position = ItemSlotEnum.SLOT_INVENTORY;
                }
                else
                {
                    item.Position = (ItemSlotEnum)Convert.ToInt32(data[1]);
                }
            }
            Database.Inventories.ReplaceOneAsync(i => i.Key == inventoryId, inventory);
            hub.DispatchToClient(new InventoryMessage(tcpId), tcpId).Wait();
        }