Ejemplo n.º 1
0
        public override void Execute(SetGoldCommandPacket goldPacket, ClientSession session)
        {
            var data = new StatData
            {
                ActionType = UpdateStatActionType.UpdateGold,
                Character  = new Character {
                    Name = goldPacket.Name ?? session.Character.Name
                },
                Data = goldPacket.Gold
            };

            var receiver = _connectedAccountHttpClient.GetCharacter(null, goldPacket.Name ?? session.Character.Name);

            if (receiver.Item2 == null) //TODO: Handle 404 in WebApi
            {
                session.SendPacket(new InfoPacket
                {
                    Message = Language.Instance.GetMessageFromKey(LanguageKey.CANT_FIND_CHARACTER,
                                                                  session.Account.Language)
                });
                return;
            }

            _statHttpClient.ChangeStat(data, receiver.Item1);

            session.SendPacket(session.Character.GenerateGold());
        }
Ejemplo n.º 2
0
        public override void Execute(SetReputationPacket setReputationPacket, ClientSession session)
        {
            if ((setReputationPacket.Name == session.Character.Name) || string.IsNullOrEmpty(setReputationPacket.Name))
            {
                session.Character.SetReputation(setReputationPacket.Reputation);
                return;
            }

            var data = new StatData
            {
                ActionType = UpdateStatActionType.UpdateReputation,
                Character  = new Character {
                    Name = setReputationPacket.Name
                },
                Data = setReputationPacket.Reputation
            };

            var receiver = _connectedAccountHttpClient.GetCharacter(null, setReputationPacket.Name);

            if (receiver.Item2 == null) //TODO: Handle 404 in WebApi
            {
                session.SendPacket(new InfoPacket
                {
                    Message = Language.Instance.GetMessageFromKey(LanguageKey.CANT_FIND_CHARACTER,
                                                                  session.Account.Language)
                });
                return;
            }

            _statHttpClient.ChangeStat(data, receiver.Item1);
        }
        public override void Execute(SetHeroLevelCommandPacket levelPacket, ClientSession session)
        {
            if (string.IsNullOrEmpty(levelPacket.Name) || (levelPacket.Name == session.Character.Name))
            {
                session.Character.SetHeroLevel(levelPacket.Level);
                return;
            }

            var data = new StatData
            {
                ActionType = UpdateStatActionType.UpdateHeroLevel,
                Character  = new Character {
                    Name = levelPacket.Name
                },
                Data = levelPacket.Level
            };

            var channels = _channelHttpClient.GetChannels()
                           ?.Where(c => c.Type == ServerType.WorldServer);

            ConnectedAccount    receiver = null;
            ServerConfiguration config   = null;

            foreach (var channel in channels ?? new List <ChannelInfo>())
            {
                var accounts =
                    _connectedAccountHttpClient.GetConnectedAccount(channel);

                var target = accounts.FirstOrDefault(s => s.ConnectedCharacter.Name == levelPacket.Name);

                if (target != null)
                {
                    receiver = target;
                    config   = channel.WebApi;
                }
            }

            if (receiver == null) //TODO: Handle 404 in WebApi
            {
                session.SendPacket(new InfoPacket
                {
                    Message = Language.Instance.GetMessageFromKey(LanguageKey.CANT_FIND_CHARACTER,
                                                                  session.Account.Language)
                });
                return;
            }

            _statHttpClient.ChangeStat(data, config);
        }