/// <summary>
        /// </summary>
        /// <param name="followTargetMessage">
        /// </param>
        /// <param name="client">
        /// </param>
        protected override void Read(FollowTargetMessage followTargetMessage, IZoneClient client)
        {
            // REFACT can we use the base class methods here ??

            // var followTargetMessage = (FollowTargetMessage)message.Body;

            var announce = new FollowTargetMessage {
                Identity = client.Controller.Character.Identity, Unknown = 0
            };
            var followinfo = followTargetMessage.Info as FollowTargetInfo;

            if (followinfo != null)
            {
                announce.Info = new FollowTargetInfo()
                {
                    MoveType = 0,
                    Target   = followinfo.Target,
                    Dummy    = 0x40,
                    Dummy1   = 0x20000000
                };
            }

            client.Controller.Character.Playfield.Publish(new IMSendAOtomationMessageToPlayfield {
                Body = announce
            });
        }
Пример #2
0
        /// <summary>
        /// Sends chat server info to client
        /// </summary>
        /// <param name="client">
        /// Client that gets the info
        /// </param>
        public static void Send(IZoneClient client)
        {
            /* get chat settings from config */
            string    chatServerIp = string.Empty;
            IPAddress tempIp;

            if (IPAddress.TryParse(ConfigReadWrite.Instance.CurrentConfig.ChatIP, out tempIp))
            {
                chatServerIp = ConfigReadWrite.Instance.CurrentConfig.ChatIP;
            }
            else
            {
                IPHostEntry chatHost = Dns.GetHostEntry(ConfigReadWrite.Instance.CurrentConfig.ChatIP);
                foreach (IPAddress ip in chatHost.AddressList)
                {
                    if (ip.AddressFamily == AddressFamily.InterNetwork)
                    {
                        chatServerIp = ip.ToString();
                        break;
                    }
                }
            }

            int chatPort = Convert.ToInt32(ConfigReadWrite.Instance.CurrentConfig.ChatPort);

            var chatServerInfoMessage = new ChatServerInfoMessage {
                HostName = chatServerIp, Port = chatPort
            };

            client.SendCompressed(chatServerInfoMessage);
        }
Пример #3
0
        /// <summary>
        /// </summary>
        /// <param name="pooledIn">
        /// </param>
        /// <param name="identity">
        /// </param>
        /// <param name="zoneClient">
        /// </param>
        public Character(Pool pooledIn, Identity identity, IZoneClient zoneClient)
            : base(pooledIn, identity)
        {
            this.DoNotDoTimers = true;
            this.Client        = zoneClient;
            this.ActiveNanos   = new List <IActiveNano>();

            this.UploadedNanos = new List <IUploadedNanos>();

            this.BaseInventory = new PlayerInventory(this);

            this.SocialTab = new Dictionary <int, int>
            {
                { 0, 0 },
                { 1, 0 },
                { 2, 0 },
                { 3, 0 },
                { 4, 0 },
                { 38, 0 },
                { 1004, 0 },
                { 1005, 0 },
                { 64, 0 },
                { 32, 0 },
                { 1006, 0 },
                { 1007, 0 }
            };

            this.Read();

            this.meshLayer.AddMesh(0, this.Stats[StatIds.headmesh].Value, 0, 4);
            this.socialMeshLayer.AddMesh(0, this.Stats[StatIds.headmesh].Value, 0, 4);

            this.DoNotDoTimers = false;
        }
Пример #4
0
        /// <summary>
        /// </summary>
        /// <param name="client">
        /// </param>
        /// <param name="stat">
        /// </param>
        /// <param name="value">
        /// </param>
        /// <param name="announce">
        /// </param>
        public static void Send(IZoneClient client, int stat, uint value, bool announce)
        {
            var statMessage = new StatMessage
            {
                Identity = client.Character.Identity,
                Stats    =
                    new[]
                {
                    new GameTuple <CharacterStat, uint>
                    {
                        Value1 =
                            (CharacterStat)stat,
                        Value2 = value
                    }
                }
            };
            var statM = new Message {
                Body = statMessage
            };

            if (!client.Character.DoNotDoTimers)
            {
                client.Character.Playfield.Publish(
                    new IMSendAOtomationMessageToClient {
                    client = client, message = statM
                });
            }

            /* announce to playfield? */
            if (announce)
            {
                client.Character.Playfield.AnnounceOthers(statMessage, client.Character.Identity);
            }
        }
Пример #5
0
        /// <summary>
        /// </summary>
        /// <param name="client">
        /// </param>
        /// <param name="forced">
        /// </param>
        protected override void OnClientDisconnected(IClient client, bool forced)
        {
            IZoneClient cl = (IZoneClient)client;

            cl.Character.BaseInventory.Write();
            base.OnClientDisconnected(client, forced);
        }
        /// <summary>
        /// </summary>
        /// <param name="client">
        /// </param>
        /// <param name="desiredQuality">
        /// </param>
        /// <param name="ts">
        /// </param>
        /// <param name="sourceItem">
        /// </param>
        /// <param name="targetItem">
        /// </param>
        /// <returns>
        /// </returns>
        private static bool WindowBuild(
            IZoneClient client,
            int desiredQuality,
            TradeSkillEntry ts,
            Item sourceItem,
            Item targetItem)
        {
            if (!((ts.MinTargetQL >= targetItem.Quality) || (ts.MinTargetQL == 0)))
            {
                return(false);
            }

            if (!ts.ValidateRange(sourceItem.Quality, targetItem.Quality))
            {
                return(false);
            }

            foreach (TradeSkillSkill tss in ts.Skills)
            {
                if (client.Controller.Character.Stats[tss.StatId].Value
                    < Convert.ToInt32(tss.Percent / 100M * targetItem.Quality))
                {
                    return(false);
                }
            }

            return(true);
        }
Пример #7
0
        /// <summary>
        /// Set own stat (no announce)
        /// </summary>
        /// <param name="client">
        /// Affected client
        /// </param>
        /// <param name="stat">
        /// Stat
        /// </param>
        /// <param name="value">
        /// Value
        /// </param>
        /// <param name="announce">
        /// Let others on same playfield know?
        /// </param>
        /// <returns>
        /// The <see cref="uint"/>.
        /// </returns>
        public static uint Set(IZoneClient client, int stat, uint value, bool announce)
        {
            var oldValue = (uint)client.Character.Stats[stat].Value;

            Send(client, stat, value, announce);
            return(oldValue);
        }
Пример #8
0
 /// <summary>
 /// </summary>
 /// <param name="client">
 /// </param>
 /// <param name="body">
 /// </param>
 public void Send(IZoneClient client, MessageBody body)
 {
     this.Publish(new IMSendAOtomationMessageBodyToClient()
     {
         client = client, Body = body
     });
 }
Пример #9
0
        /// <summary>
        /// Sends chat server info to client
        /// </summary>
        /// <param name="client">
        /// Client that gets the info
        /// </param>
        public static void Send(IZoneClient client)
        {
            /* get chat settings from config */
            string chatServerIp = string.Empty;
            IPAddress tempIp;
            if (IPAddress.TryParse(ConfigReadWrite.Instance.CurrentConfig.ChatIP, out tempIp))
            {
                chatServerIp = ConfigReadWrite.Instance.CurrentConfig.ChatIP;
            }
            else
            {
                IPHostEntry chatHost = Dns.GetHostEntry(ConfigReadWrite.Instance.CurrentConfig.ChatIP);
                foreach (IPAddress ip in chatHost.AddressList)
                {
                    if (ip.AddressFamily == AddressFamily.InterNetwork)
                    {
                        chatServerIp = ip.ToString();
                        break;
                    }
                }
            }

            int chatPort = Convert.ToInt32(ConfigReadWrite.Instance.CurrentConfig.ChatPort);

            var chatServerInfoMessage = new ChatServerInfoMessage { HostName = chatServerIp, Port = chatPort };
            client.SendCompressed(chatServerInfoMessage);
        }
Пример #10
0
 /// <summary>
 /// </summary>
 /// <param name="client">
 /// </param>
 /// <param name="message">
 /// </param>
 public void Send(IZoneClient client, Message message)
 {
     this.Publish(new IMSendAOtomationMessageToClient()
     {
         client = client, message = message
     });
 }
Пример #11
0
 /// <summary>
 /// </summary>
 /// <param name="client">
 /// </param>
 /// <param name="messages">
 /// </param>
 /// <returns>
 /// </returns>
 public static IMSendAOtomationMessageBodiesToClient CreateIM(IZoneClient client, MessageBody[] messages)
 {
     return(new IMSendAOtomationMessageBodiesToClient()
     {
         Bodies = messages, client = client
     });
 }
Пример #12
0
        /// <summary>
        /// </summary>
        /// <param name="client">
        /// </param>
        /// <param name="list">
        /// </param>
        /// <param name="statId">
        /// </param>
        private static void AddStat3232(IZoneClient client, IList <GameTuple <int, uint> > list, int statId)
        {
            var tuple = new GameTuple <int, uint> {
                Value1 = statId, Value2 = client.Character.Stats[statId].BaseValue
            };

            list.Add(tuple);
        }
        /// <summary>
        /// </summary>
        /// <param name="message">
        /// </param>
        /// <param name="client">
        /// </param>
        protected override void Read(KnuBotTradeMessage message, IZoneClient client)
        {
            // Remove the item from the inventory
            client.Controller.Character.BaseInventory.Pages[(int)message.Container.Type].Remove(
                message.Container.Instance);

            // client.Character.Knubot.
        }
        /// <summary>
        /// </summary>
        /// <param name="client">
        /// </param>
        /// <returns>
        /// </returns>
        public static PlayfieldAnarchyFMessage Create(IZoneClient client)
        {
            var message = new PlayfieldAnarchyFMessage
            {
                Identity =
                    new Identity
                {
                    Type     = IdentityType.Playfield2,
                    Instance =
                        client.Character.Playfield.Identity
                        .Instance
                },
                CharacterCoordinates =
                    new Vector3
                {
                    X = client.Character.Coordinates.x,
                    Y = client.Character.Coordinates.y,
                    Z = client.Character.Coordinates.z,
                },
                PlayfieldId1 =
                    new Identity
                {
                    Type     = IdentityType.Playfield1,
                    Instance =
                        client.Character.Playfield.Identity
                        .Instance
                },
                PlayfieldId2 =
                    new Identity
                {
                    Type     = IdentityType.Playfield2,
                    Instance =
                        client.Character.Playfield.Identity
                        .Instance
                },
                PlayfieldX =
                    Playfields.GetPlayfieldX(
                        client.Character.Playfield.Identity.Instance),
                PlayfieldZ =
                    Playfields.GetPlayfieldZ(
                        client.Character.Playfield.Identity.Instance)
            };

            // TODO: Add the VendorHandler again

            /* var vendorcount = VendorHandler.GetNumberofVendorsinPlayfield(client.Character.PlayField);
             * if (vendorcount > 0)
             * {
             *  var firstVendorId = VendorHandler.GetFirstVendor(client.Character.PlayField);
             *  message.PlayfieldVendorInfo = new PlayfieldVendorInfo
             *                                    {
             *                                        VendorCount = vendorcount,
             *                                        FirstVendorId = firstVendorId
             *                                    };
             * }
             */
            return(message);
        }
        /// <summary>
        /// </summary>
        /// <param name="client">
        /// </param>
        /// <returns>
        /// </returns>
        public static PlayfieldAnarchyFMessage Create(IZoneClient client)
        {
            var message = new PlayfieldAnarchyFMessage
                          {
                              Identity =
                                  new Identity
                                  {
                                      Type = IdentityType.Playfield2,
                                      Instance =
                                          client.Character.Playfield.Identity
                                          .Instance
                                  },
                              CharacterCoordinates =
                                  new Vector3
                                  {
                                      X = client.Character.Coordinates.x,
                                      Y = client.Character.Coordinates.y,
                                      Z = client.Character.Coordinates.z,
                                  },
                              PlayfieldId1 =
                                  new Identity
                                  {
                                      Type = IdentityType.Playfield1,
                                      Instance =
                                          client.Character.Playfield.Identity
                                          .Instance
                                  },
                              PlayfieldId2 =
                                  new Identity
                                  {
                                      Type = IdentityType.Playfield2,
                                      Instance =
                                          client.Character.Playfield.Identity
                                          .Instance
                                  },
                              PlayfieldX =
                                  Playfields.GetPlayfieldX(
                                      client.Character.Playfield.Identity.Instance),
                              PlayfieldZ =
                                  Playfields.GetPlayfieldZ(
                                      client.Character.Playfield.Identity.Instance)
                          };

            // TODO: Add the VendorHandler again
            /* var vendorcount = VendorHandler.GetNumberofVendorsinPlayfield(client.Character.PlayField);
            if (vendorcount > 0)
            {
                var firstVendorId = VendorHandler.GetFirstVendor(client.Character.PlayField);
                message.PlayfieldVendorInfo = new PlayfieldVendorInfo
                                                  {
                                                      VendorCount = vendorcount,
                                                      FirstVendorId = firstVendorId
                                                  };
            }
            */
            return message;
        }
 /// <summary>
 /// </summary>
 /// <param name="message">
 /// </param>
 /// <param name="client">
 /// </param>
 protected override void Read(LookAtMessage message, IZoneClient client)
 {
     if (client.Controller.LookAt(message.Target))
     {
         if (message.ReturnInfo != 1)
         {
             CharacterInfoPacketMessageHandler.Default.Send(client.Controller.Character, message.Target);
         }
     }
 }
Пример #17
0
        /// <summary>
        /// </summary>
        /// <param name="client">
        /// </param>
        /// <param name="page">
        /// </param>
        /// <param name="slotNumber">
        /// </param>
        public static void Send(IZoneClient client, IInventoryPage page, int slotNumber)
        {
            switch (slotNumber)
            {
            case 6:
                var action167Message = new CharacterActionMessage()
                {
                    Identity =
                        client.Controller.Character.Identity,
                    Action =
                        CharacterActionType
                        .ChangeAnimationAndStance,
                };
                client.Controller.Character.Playfield.Announce(action167Message);

                var equipMessage = new CharacterActionMessage()
                {
                    Identity   = client.Controller.Character.Identity,
                    Action     = CharacterActionType.Equip,
                    Target     = page.Identity,
                    Parameter1 = 0,
                    Parameter2 = 6,
                };
                client.Controller.Character.Send(equipMessage);
                break;

            default:
                IItem item = page[slotNumber];
                var   templateActionMessage = new TemplateActionMessage()
                {
                    Identity =
                        client.Controller.Character.Identity,
                    ItemHighId = item.HighID,
                    ItemLowId  = item.LowID,
                    Quality    = item.Quality,
                    Unknown1   = 1,
                    Unknown2   =
                        page is SocialArmorInventoryPage
                                                            ? 7
                                                            : 6,
                    Placement =
                        new Identity()
                    {
                        Type =
                            page.Identity
                            .Type,
                        Instance =
                            slotNumber
                    },
                    Unknown = 0,
                };
                client.Controller.Character.Send(templateActionMessage);
                break;
            }
        }
Пример #18
0
        /// <summary>
        /// Gets the zones for the subscription.
        /// </summary>
        /// <seealso href="https://api.cloudflare.com/#zone-list-zones"/>
        public static Task <IEnumerable <Zone> > GetAllZonesAsync(
            this IZoneClient client,
            ZoneGetParameters parameters = null)
        {
            if (client == null)
            {
                throw new ArgumentNullException(nameof(client));
            }

            return(client.GetAllZonesAsync(CancellationToken.None, parameters));
        }
Пример #19
0
        /// <summary>
        /// </summary>
        /// <param name="client">
        /// </param>
        /// <param name="page">
        /// </param>
        /// <param name="slotNumber">
        /// </param>
        public static void Send(IZoneClient client, IInventoryPage page, int slotNumber)
        {
            switch (slotNumber)
            {
                case 6:
                    var action167Message = new CharacterActionMessage()
                                           {
                                               Identity =
                                                   client.Controller.Character.Identity,
                                               Action =
                                                   CharacterActionType
                                                   .ChangeAnimationAndStance,
                                           };
                    client.Controller.Character.Playfield.Announce(action167Message);

                    var equipMessage = new CharacterActionMessage()
                                       {
                                           Identity = client.Controller.Character.Identity,
                                           Action = CharacterActionType.Equip,
                                           Target = page.Identity,
                                           Parameter1 = 0,
                                           Parameter2 = 6,
                                       };
                    client.Controller.Character.Send(equipMessage);
                    break;
                default:
                    IItem item = page[slotNumber];
                    var templateActionMessage = new TemplateActionMessage()
                                                {
                                                    Identity =
                                                        client.Controller.Character.Identity,
                                                    ItemHighId = item.HighID,
                                                    ItemLowId = item.LowID,
                                                    Quality = item.Quality,
                                                    Unknown1 = 1,
                                                    Unknown2 =
                                                        page is SocialArmorInventoryPage
                                                            ? 7
                                                            : 6,
                                                    Placement =
                                                        new Identity()
                                                        {
                                                            Type =
                                                                page.Identity
                                                                .Type,
                                                            Instance =
                                                                slotNumber
                                                        },
                                                    Unknown = 0,
                                                };
                    client.Controller.Character.Send(templateActionMessage);
                    break;
            }
        }
Пример #20
0
 /// <summary>
 /// </summary>
 /// <param name="client">
 /// </param>
 /// <param name="MsgCategory">
 /// </param>
 /// <param name="MsgNum">
 /// </param>
 /// <returns>
 /// </returns>
 public static FeedbackMessage Create(IZoneClient client, int MsgCategory, int MsgNum)
 {
     return(new FeedbackMessage
     {
         Identity = client.Character.Identity,
         Unknown = 0x01,
         Unknown1 = 0x00000000,
         CategoryId = MsgCategory,
         MessageId = MsgNum
     });
 }
Пример #21
0
 /// <summary>
 /// </summary>
 /// <param name="client">
 /// </param>
 /// <param name="MsgCategory">
 /// </param>
 /// <param name="MsgNum">
 /// </param>
 /// <returns>
 /// </returns>
 public static FeedbackMessage Create(IZoneClient client, int MsgCategory, int MsgNum)
 {
     return new FeedbackMessage
            {
                Identity = client.Character.Identity,
                Unknown = 0x01,
                Unknown1 = 0x00000000,
                CategoryId = MsgCategory,
                MessageId = MsgNum
            };
 }
Пример #22
0
        /// <summary>
        /// Gets the zones for the subscription.
        /// </summary>
        /// <seealso href="https://api.cloudflare.com/#zone-list-zones"/>
        public static Task <CloudFlareResponse <IReadOnlyList <Zone> > > GetZonesAsync(
            this IZoneClient client,
            ZoneGetParameters parameters = null)
        {
            if (client == null)
            {
                throw new ArgumentNullException(nameof(client));
            }

            return(client.GetZonesAsync(CancellationToken.None, parameters));
        }
Пример #23
0
        /// <summary>
        /// </summary>
        /// <param name="client">
        /// </param>
        /// <returns>
        /// </returns>
        public static BankMessage Create(IZoneClient client)
        {
            BankMessage bank = new BankMessage()
            {
                Identity  = client.Character.Identity,
                BankSlots =
                    client.Character.BaseInventory.Pages[(int)IdentityType.Bank]
                    .ToInventoryArray()
            };

            return(bank);
        }
Пример #24
0
        /// <summary>
        /// </summary>
        /// <param name="self">
        /// </param>
        /// <param name="caller">
        /// </param>
        /// <param name="target">
        /// </param>
        /// <param name="arguments">
        /// </param>
        /// <returns>
        /// </returns>
        public override bool Execute(
            INamedEntity self,
            INamedEntity caller,
            IInstancedEntity target,
            MessagePackObject[] arguments)
        {
            IZoneClient client      = ((ICharacter)self).Client;
            BankMessage bankmessage = OpenBank.Create(client);

            client.Character.Send(bankmessage);
            return(true);
        }
Пример #25
0
        /// <summary>
        /// </summary>
        /// <param name="client">
        /// </param>
        /// <returns>
        /// </returns>
        public static BankMessage Create(IZoneClient client)
        {
            BankMessage bank = new BankMessage()
                               {
                                   Identity = client.Character.Identity,
                                   BankSlots =
                                       client.Character.BaseInventory.Pages[(int)IdentityType.Bank]
                                       .ToInventoryArray()
                               };

            return bank;
        }
Пример #26
0
 /// <summary>
 /// </summary>
 /// <param name="client">
 /// </param>
 /// <param name="item">
 /// </param>
 /// <returns>
 /// </returns>
 public static AddTemplateMessage Create(IZoneClient client, Item item)
 {
     return new AddTemplateMessage
            {
                Identity = client.Character.Identity,
                Unknown = 0x00,
                LowId = item.LowID,
                HighId = item.HighID,
                Quality = item.Quality,
                Count = item.MultipleCount
            };
 }
Пример #27
0
 /// <summary>
 /// </summary>
 /// <param name="client">
 /// </param>
 /// <param name="item">
 /// </param>
 /// <returns>
 /// </returns>
 public static AddTemplateMessage Create(IZoneClient client, Item item)
 {
     return(new AddTemplateMessage
     {
         Identity = client.Character.Identity,
         Unknown = 0x00,
         LowId = item.LowID,
         HighId = item.HighID,
         Quality = item.Quality,
         Count = item.MultipleCount
     });
 }
Пример #28
0
        /// <summary>
        /// </summary>
        /// <param name="client">
        /// </param>
        /// <param name="statsToUpdate">
        /// </param>
        public static void SendBulk(IZoneClient client, Dictionary <int, uint> statsToUpdate)
        {
            if (statsToUpdate.Count == 0)
            {
                return;
            }

            var toPlayfieldIds = new List <int>();

            foreach (KeyValuePair <int, uint> keyValuePair in statsToUpdate)
            {
                if (client.Controller.Character.Stats[keyValuePair.Key].AnnounceToPlayfield)
                {
                    toPlayfieldIds.Add(keyValuePair.Key);
                }
            }

            var toPlayfield = new List <GameTuple <CharacterStat, uint> >();
            var toClient    = new List <GameTuple <CharacterStat, uint> >();

            foreach (KeyValuePair <int, uint> keyValuePair in statsToUpdate)
            {
                var statValue = new GameTuple <CharacterStat, uint>
                {
                    Value1 = (CharacterStat)keyValuePair.Key,
                    Value2 = keyValuePair.Value
                };
                toClient.Add(statValue);

                if (toPlayfieldIds.Contains(keyValuePair.Key))
                {
                    toPlayfield.Add(statValue);
                }
            }

            var message = new StatMessage
            {
                Identity = client.Controller.Character.Identity,
                Stats    = toClient.ToArray()
            };

            client.SendCompressed(message);

            /* announce to playfield? */
            if (toPlayfieldIds.Count > 0)
            {
                message.Stats = toPlayfield.ToArray();
                client.Controller.Character.Playfield.AnnounceOthers(message, client.Controller.Character.Identity);
            }
        }
Пример #29
0
        /// <summary>
        /// </summary>
        /// <param name="client">
        /// </param>
        /// <param name="item">
        /// </param>
        public static void Send(IZoneClient client, Item item)
        {
            var message = new AddTemplateMessage
                              {
                                  Identity = client.Character.Identity,
                                  Unknown = 0x00,
                                  LowId = item.LowID,
                                  HighId = item.HighID,
                                  Quality = item.Quality,
                                  Count = item.MultipleCount
                              };

            client.SendCompressed(message);
        }
Пример #30
0
        /// <summary>
        /// </summary>
        /// <param name="client">
        /// </param>
        /// <param name="item">
        /// </param>
        public static void Send(IZoneClient client, Item item)
        {
            var message = new AddTemplateMessage
            {
                Identity = client.Character.Identity,
                Unknown  = 0x00,
                LowId    = item.LowID,
                HighId   = item.HighID,
                Quality  = item.Quality,
                Count    = item.MultipleCount
            };

            client.SendCompressed(message);
        }
Пример #31
0
        /// <summary>
        /// </summary>
        /// <param name="identity">
        /// </param>
        /// <param name="client">
        /// </param>
        public Character(Identity identity, IZoneClient client)
        {
            this.identity        = identity;
            this.BaseInventory   = new UnitInventory(this.identity.Instance);
            this.pets            = new List <Pet>();
            this.client          = client;
            this.Textures        = new List <AOTextures>();
            this.uploadedNanos   = new List <AOUploadedNanos>();
            this.meshLayer       = new MeshLayers();
            this.socialMeshLayer = new MeshLayers();
            this.SocialTab       = new Dictionary <int, int>();

            // TODO: Load names here?
        }
        /// <summary>
        /// </summary>
        /// <param name="client">
        /// </param>
        /// <param name="list">
        /// </param>
        /// <param name="statId">
        /// </param>
        private static void AddStat88(IZoneClient client, IList <GameTuple <byte, byte> > list, int statId)
        {
            if (statId > 255)
            {
                Console.WriteLine("AddStat88 statId(" + statId + ") > 255");
            }

            var tuple = new GameTuple <byte, byte>
            {
                Value1 = (byte)statId,
                Value2 = (byte)client.Controller.Character.Stats[statId].BaseValue
            };

            list.Add(tuple);
        }
Пример #33
0
        /// <summary>
        /// Gets the zones for the subscription.
        /// </summary>
        /// <seealso href="https://api.cloudflare.com/#zone-zone-details"/>
        public static Task <Zone> GetZoneAsync(
            this IZoneClient client,
            IdentifierTag zoneId,
            CloudFlareAuth auth = null)
        {
            if (zoneId == null)
            {
                throw new ArgumentNullException(nameof(zoneId));
            }
            if (client == null)
            {
                throw new ArgumentNullException(nameof(client));
            }

            return(client.GetZoneAsync(zoneId, CancellationToken.None, auth));
        }
Пример #34
0
        /// <summary>
        /// </summary>
        /// <param name="message">
        /// </param>
        /// <param name="client">
        /// </param>
        protected override void Read(ZoneLoginMessage message, IZoneClient client)
        {
            ZoneClient       zc = (ZoneClient)client;
            PlayerController pc = new PlayerController(zc);

            zc.Controller = pc;

            zc.CreateCharacter(message.CharacterId);
            zc.SendInitiateCompressionMessage(new InitiateCompressionMessage());

            client.Controller.Character.Playfield = zc.Playfield;

            ClientConnected tmpClientConnected = new ClientConnected();

            tmpClientConnected.Read(message.CharacterId, zc);
        }
Пример #35
0
 /// <summary>
 /// </summary>
 /// <param name="client">
 /// </param>
 /// <param name="item">
 /// </param>
 /// <param name="container">
 /// </param>
 /// <param name="placement">
 /// </param>
 /// <returns>
 /// </returns>
 public static TemplateActionMessage Create(IZoneClient client, Item item, int container, int placement)
 {
     return(new TemplateActionMessage()
     {
         Identity = client.Character.Identity,
         ItemHighId = item.HighID,
         ItemLowId = item.LowID,
         Quality = item.Quality,
         Placement =
             new Identity()
         {
             Type = (IdentityType)container,
             Instance = placement
         },
         Unknown1 = 1,
         Unknown2 = 3
     });
 }
        /// <summary>
        /// </summary>
        /// <param name="client">
        /// </param>
        /// <param name="container">
        /// </param>
        /// <param name="placement">
        /// </param>
        public static void TradeSkillTargetChanged(IZoneClient client, int container, int placement)
        {
            if ((container != 0) && (placement != 0))
            {
                client.Controller.Character.TradeSkillTarget = new TradeSkillInfo(0, container, placement);

                Item item = client.Controller.Character.BaseInventory.GetItemInContainer(container, placement);
                TradeSkillPacket.SendTarget(
                    client.Controller.Character,
                    TradeSkill.Instance.TargetProcessesCount(item.HighID));

                TradeSkillChanged(client);
            }
            else
            {
                client.Controller.Character.TradeSkillTarget = null;
            }
        }
Пример #37
0
 /// <summary>
 /// </summary>
 /// <param name="client">
 /// </param>
 /// <param name="item">
 /// </param>
 /// <param name="container">
 /// </param>
 /// <param name="placement">
 /// </param>
 /// <returns>
 /// </returns>
 public static TemplateActionMessage Create(IZoneClient client, Item item, int container, int placement)
 {
     return new TemplateActionMessage()
            {
                Identity = client.Character.Identity,
                ItemHighId = item.HighID,
                ItemLowId = item.LowID,
                Quality = item.Quality,
                Placement =
                    new Identity()
                    {
                        Type = (IdentityType)container,
                        Instance = placement
                    },
                Unknown1 = 1,
                Unknown2 = 3
            };
 }
Пример #38
0
        /// <summary>
        /// </summary>
        /// <param name="client">
        /// </param>
        /// <param name="stat">
        /// </param>
        /// <param name="value">
        /// </param>
        /// <param name="announce">
        /// </param>
        public static void SendDirect(IZoneClient client, int stat, uint value, bool announce)
        {
            var statMessage = new StatMessage
            {
                Identity = client.Character.Identity,
                Stats    =
                    new[]
                {
                    new GameTuple <CharacterStat, uint>
                    {
                        Value1 =
                            (CharacterStat)stat,
                        Value2 = value
                    }
                }
            };

            client.SendCompressed(statMessage);
        }
Пример #39
0
 /// <summary>
 /// </summary>
 /// <param name="client">
 /// </param>
 /// <param name="page">
 /// </param>
 /// <param name="slotNumber">
 /// </param>
 public static void Send(IZoneClient client, IInventoryPage page, int slotNumber)
 {
     switch (slotNumber)
     {
         case 6:
             var action97Message = new CharacterActionMessage()
                                   {
                                       Identity = client.Controller.Character.Identity,
                                       Action = CharacterActionType.Unknown3,
                                       Parameter2 = 6
                                   };
             client.Controller.Character.Send(action97Message);
             break;
         default:
             IItem item = page[slotNumber];
             var templateActionMessage = new TemplateActionMessage()
                                         {
                                             Identity =
                                                 client.Controller.Character.Identity,
                                             ItemHighId = item.HighID,
                                             ItemLowId = item.LowID,
                                             Quality = item.Quality,
                                             Unknown1 = 1,
                                             Unknown2 = 7,
                                             Placement =
                                                 new Identity()
                                                 {
                                                     Type =
                                                         page.Identity
                                                         .Type,
                                                     Instance =
                                                         slotNumber
                                                 },
                                             Unknown = 0,
                                         };
             client.Controller.Character.Send(templateActionMessage);
             break;
     }
 }
Пример #40
0
 /// <summary>
 /// </summary>
 /// <param name="client">
 /// </param>
 /// <param name="stat">
 /// </param>
 /// <param name="value">
 /// </param>
 /// <param name="announce">
 /// </param>
 public static void Send(IZoneClient client, int stat, int value, bool announce)
 {
     Send(client, stat, (UInt32)value, announce);
 }
Пример #41
0
 /// <summary>
 /// Set own stat (no announce)
 /// </summary>
 /// <param name="client">
 /// Affected client
 /// </param>
 /// <param name="stat">
 /// Stat
 /// </param>
 /// <param name="value">
 /// Value
 /// </param>
 /// <param name="announce">
 /// Let others on same playfield know?
 /// </param>
 /// <returns>
 /// The <see cref="uint"/>.
 /// </returns>
 public static uint Set(IZoneClient client, int stat, uint value, bool announce)
 {
     var oldValue = (uint)client.Character.Stats[stat].Value;
     Send(client, stat, value, announce);
     return oldValue;
 }
Пример #42
0
 /// <summary>
 /// </summary>
 /// <param name="client">
 /// </param>
 /// <param name="stat">
 /// </param>
 /// <param name="value">
 /// </param>
 /// <param name="announce">
 /// </param>
 public static void SendDirect(IZoneClient client, int stat, uint value, bool announce)
 {
     var statMessage = new StatMessage
                       {
                           Identity = client.Character.Identity,
                           Stats =
                               new[]
                               {
                                   new GameTuple<CharacterStat, uint>
                                   {
                                       Value1 =
                                           (CharacterStat)stat,
                                       Value2 = value
                                   }
                               }
                       };
     client.SendCompressed(statMessage);
 }
Пример #43
0
 /// <summary>
 /// </summary>
 /// <param name="client">
 /// </param>
 /// <param name="item">
 /// </param>
 /// <param name="container">
 /// </param>
 /// <param name="placement">
 /// </param>
 public static void Send(IZoneClient client, Item item, int container, int placement)
 {
     client.Character.Send(Create(client, item, container, placement));
 }
Пример #44
0
        /// <summary>
        /// </summary>
        /// <param name="client">
        /// </param>
        /// <returns>
        /// </returns>
        public static FullCharacterMessage Create(IZoneClient client)
        {
            var fullCharacterMessage = new FullCharacterMessage { Identity = client.Character.Identity, Unknown1 = 25 };

            /* part 1 of data */
            List<InventorySlot> inventory = new List<InventorySlot>();
            foreach (IInventoryPage ivp in client.Character.BaseInventory.Pages.Values)
            {
                foreach (KeyValuePair<int, IItem> kv in ivp.List())
                {
                    var temp = new InventorySlot
                               {
                                   Placement = kv.Key,
                                   Flags = (short)kv.Value.Flags,
                                   Count = (short)kv.Value.MultipleCount,
                                   Identity = kv.Value.Identity,
                                   ItemLowId = kv.Value.LowID,
                                   ItemHighId = kv.Value.HighID,
                                   Quality = kv.Value.Quality,
                                   Unknown = kv.Value.Nothing
                               };
                    inventory.Add(temp);
                }
            }

            fullCharacterMessage.InventorySlots = inventory.ToArray();

            /* part 2 of data */
            /* number of entries */
            fullCharacterMessage.UploadedNanoIds = client.Character.UploadedNanos.Select(n => n.NanoId).ToArray();

            /* part 3 of data */
            /* number of entries */
            fullCharacterMessage.Unknown2 = new object[0];

            /* No idea what these are */
            /* used to be skill locks + some unknown data */

            // TODO: Find out what following 6 ints are
            fullCharacterMessage.Unknown3 = 1;
            fullCharacterMessage.Unknown4 = 0;
            fullCharacterMessage.Unknown5 = 1;
            fullCharacterMessage.Unknown6 = 0;
            fullCharacterMessage.Unknown7 = 1;
            fullCharacterMessage.Unknown8 = 0;

            /* part 6 of data (1-st stats block) */

            /* Int32 stat number
               Int32 stat value */
            var stats1 = new List<GameTuple<int, uint>>();

            /* State */
            AddStat3232(client, stats1, 7);

            /* UnarmedTemplateInstance */
            AddStat3232(client, stats1, 418);

            /* Invaders Killed */
            AddStat3232(client, stats1, 615);

            /* KilledByInvaders */
            AddStat3232(client, stats1, 616);

            /* AccountFlags */
            AddStat3232(client, stats1, 660);

            /* VP */
            AddStat3232(client, stats1, 669);

            /* UnsavedXP */
            AddStat3232(client, stats1, 592);

            /* NanoFocusLevel */
            AddStat3232(client, stats1, 355);

            /* Specialization */
            AddStat3232(client, stats1, 182);

            /* ShadowBreedTemplate */
            AddStat3232(client, stats1, 579);

            /* ShadowBreed */
            AddStat3232(client, stats1, 532);

            /* LastPerkResetTime */
            AddStat3232(client, stats1, 577);

            /* SocialStatus */
            AddStat3232(client, stats1, 521);

            /* PlayerOptions */
            AddStat3232(client, stats1, 576);

            /* TempSaveTeamID */
            AddStat3232(client, stats1, 594);

            /* TempSavePlayfield */
            AddStat3232(client, stats1, 595);

            /* TempSaveX */
            AddStat3232(client, stats1, 596);

            /* TempSaveY */
            AddStat3232(client, stats1, 597);

            /* VisualFlags */
            AddStat3232(client, stats1, 673);

            /* PvPDuelKills */
            AddStat3232(client, stats1, 674);

            /* PvPDuelDeaths */
            AddStat3232(client, stats1, 675);

            /* PvPProfessionDuelKills */
            AddStat3232(client, stats1, 676);

            /* PvPProfessionDuelDeaths */
            AddStat3232(client, stats1, 677);

            /* PvPRankedSoloKills */
            AddStat3232(client, stats1, 678);

            /* PvPRankedSoloDeaths */
            AddStat3232(client, stats1, 679);

            /* PvPRankedTeamKills */
            AddStat3232(client, stats1, 680);

            /* PvPRankedTeamDeaths */
            AddStat3232(client, stats1, 681);

            /* PvPSoloScore */
            AddStat3232(client, stats1, 682);

            /* PvPTeamScore */
            AddStat3232(client, stats1, 683);

            /* PvPDuelScore */
            AddStat3232(client, stats1, 684);

            AddStat3232(client, stats1, 0x289);
            AddStat3232(client, stats1, 0x28a);

            /* SavedXP */
            AddStat3232(client, stats1, 334);

            /* Flags */
            AddStat3232(client, stats1, 0);

            /* Features */
            AddStat3232(client, stats1, 224);

            /* ApartmentsAllowed */
            AddStat3232(client, stats1, 582);

            /* ApartmentsOwned */
            AddStat3232(client, stats1, 583);

            /* MonsterScale */
            AddStat3232(client, stats1, 360);

            /* VisualProfession */
            AddStat3232(client, stats1, 368);

            /* NanoAC */
            AddStat3232(client, stats1, 168);

            AddStat3232(client, stats1, 214);
            AddStat3232(client, stats1, 221);

            /* LastConcretePlayfieldInstance */
            AddStat3232(client, stats1, 191);

            /* MapOptions */
            AddStat3232(client, stats1, 470);

            /* MapAreaPart1 */
            AddStat3232(client, stats1, 471);

            /* MapAreaPart2 */
            AddStat3232(client, stats1, 472);

            /* MapAreaPart3 */
            AddStat3232(client, stats1, 585);

            /* MapAreaPart4 */
            AddStat3232(client, stats1, 586);

            /* MissionBits1 */
            AddStat3232(client, stats1, 256);

            /* MissionBits2 */
            AddStat3232(client, stats1, 257);

            /* MissionBits3 */
            AddStat3232(client, stats1, 303);

            /* MissionBits4 */
            AddStat3232(client, stats1, 432);

            /* MissionBits5 */
            AddStat3232(client, stats1, 65);

            /* MissionBits6 */
            AddStat3232(client, stats1, 66);

            /* MissionBits7 */
            AddStat3232(client, stats1, 67);

            /* MissionBits8 */
            AddStat3232(client, stats1, 544);

            /* MissionBits9 */
            AddStat3232(client, stats1, 545);

            /* MissionBits10 */
            AddStat3232(client, stats1, 617);
            AddStat3232(client, stats1, 618);
            AddStat3232(client, stats1, 619);
            AddStat3232(client, stats1, 198);

            /* AutoAttackFlags */
            AddStat3232(client, stats1, 349);

            /* PersonalResearchLevel */
            AddStat3232(client, stats1, 263);

            /* GlobalResearchLevel */
            AddStat3232(client, stats1, 264);

            /* PersonalResearchGoal */
            AddStat3232(client, stats1, 265);

            /* GlobalResearchGoal */
            AddStat3232(client, stats1, 266);

            /* BattlestationSide */
            AddStat3232(client, stats1, 668);

            /* BattlestationRep */
            AddStat3232(client, stats1, 670);

            /* Members */
            AddStat3232(client, stats1, 300);

            fullCharacterMessage.Stats1 = stats1.ToArray();

            /* Int32 stat number
               Int32 stat value */
            var stats2 = new List<GameTuple<int, uint>>();

            /* VeteranPoints */
            AddStat3232(client, stats2, 68);

            /* MonthsPaid */
            AddStat3232(client, stats2, 69);

            /* PaidPoints */
            AddStat3232(client, stats2, 672);

            /* AutoAttackFlags */
            AddStat3232(client, stats2, 349);

            /* XPKillRange */
            AddStat3232(client, stats2, 275);

            /* InPlay */
            AddStat3232(client, stats2, 194);

            /* Health (current health)*/
            AddStat3232(client, stats2, 27);

            /* Life (max health)*/
            AddStat3232(client, stats2, 1);

            /* Psychic */
            AddStat3232(client, stats2, 21);

            /* Sense */
            AddStat3232(client, stats2, 20);

            /* Intelligence */
            AddStat3232(client, stats2, 19);

            /* Stamina */
            AddStat3232(client, stats2, 18);

            /* Agility */
            AddStat3232(client, stats2, 17);

            /* Strength */
            AddStat3232(client, stats2, 16);

            /* Attitude */
            AddStat3232(client, stats2, 63);

            /* Alignment (Clan Tokens) */
            AddStat3232(client, stats2, 62);

            /* Cash */
            AddStat3232(client, stats2, 61);

            /* Profession */
            AddStat3232(client, stats2, 60);

            /* AggDef */
            AddStat3232(client, stats2, 51);

            /* Icon */
            AddStat3232(client, stats2, 79);

            /* Mesh */
            AddStat3232(client, stats2, 12);

            /* RunSpeed */
            AddStat3232(client, stats2, 156);

            /* DeadTimer */
            AddStat3232(client, stats2, 34);

            /* Team */
            AddStat3232(client, stats2, 6);

            /* Breed */
            AddStat3232(client, stats2, 4);

            /* Sex */
            AddStat3232(client, stats2, 59);

            /* LastSaveXP */
            AddStat3232(client, stats2, 372);

            /* NextXP */
            AddStat3232(client, stats2, 350);

            /* LastXP */
            AddStat3232(client, stats2, 57);

            /* Level */
            AddStat3232(client, stats2, 54);

            /* XP */
            AddStat3232(client, stats2, 52);

            /* IP */
            AddStat3232(client, stats2, 53);

            /* CurrentMass */
            AddStat3232(client, stats2, 78);

            /* ItemType */
            AddStat3232(client, stats2, 72);

            /* PreviousHealth */
            AddStat3232(client, stats2, 11);

            /* CurrentState */
            AddStat3232(client, stats2, 423);

            /* Age */
            AddStat3232(client, stats2, 58);

            /* Side */
            AddStat3232(client, stats2, 33);

            /* WaitState */
            AddStat3232(client, stats2, 430);

            /* DriveWater */
            AddStat3232(client, stats2, 117);

            /* MeleeMultiple */
            AddStat3232(client, stats2, 101);

            /* LR_MultipleWeapon */
            AddStat3232(client, stats2, 134);

            /* LR_EnergyWeapon */
            AddStat3232(client, stats2, 133);

            /* RadiationAC */
            AddStat3232(client, stats2, 94);

            /* SenseImprovement */
            AddStat3232(client, stats2, 122);

            /* BowSpecialAttack */
            AddStat3232(client, stats2, 121);

            /* Burst */
            AddStat3232(client, stats2, 148);

            /* FullAuto */
            AddStat3232(client, stats2, 167);

            /* MapNavigation */
            AddStat3232(client, stats2, 140);

            /* DriveAir */
            AddStat3232(client, stats2, 139);

            /* DriveGround */
            AddStat3232(client, stats2, 166);

            /* BreakingEntry */
            AddStat3232(client, stats2, 165);

            /* Concealment */
            AddStat3232(client, stats2, 164);

            /* Chemistry */
            AddStat3232(client, stats2, 163);

            /* Psychology */
            AddStat3232(client, stats2, 162);

            /* ComputerLiteracy */
            AddStat3232(client, stats2, 161);

            /* NanoProgramming */
            AddStat3232(client, stats2, 160);

            /* Pharmaceuticals */
            AddStat3232(client, stats2, 159);

            /* WeaponSmithing */
            AddStat3232(client, stats2, 158);

            /* FieldQuantumPhysics */
            AddStat3232(client, stats2, 157);

            /* AttackSpeed */
            AddStat3232(client, stats2, 3);

            /* Evade */
            AddStat3232(client, stats2, 155);

            /* Dodge */
            AddStat3232(client, stats2, 154);

            /* Duck */
            AddStat3232(client, stats2, 153);

            /* BodyDevelopment */
            AddStat3232(client, stats2, 152);

            /* AimedShot */
            AddStat3232(client, stats2, 151);

            /* FlingShot */
            AddStat3232(client, stats2, 150);

            /* NanoProwessInitiative */
            AddStat3232(client, stats2, 149);

            /* FastAttack */
            AddStat3232(client, stats2, 147);

            /* SneakAttack */
            AddStat3232(client, stats2, 146);

            /* Parry */
            AddStat3232(client, stats2, 145);

            /* Dimach */
            AddStat3232(client, stats2, 144);

            /* Riposte */
            AddStat3232(client, stats2, 143);

            /* Brawl */
            AddStat3232(client, stats2, 142);

            /* Tutoring */
            AddStat3232(client, stats2, 141);

            /* Swim */
            AddStat3232(client, stats2, 138);

            /* Adventuring */
            AddStat3232(client, stats2, 137);

            /* Perception */
            AddStat3232(client, stats2, 136);

            /* DisarmTraps */
            AddStat3232(client, stats2, 135);

            /* NanoEnergyPool */
            AddStat3232(client, stats2, 132);

            /* MaterialLocation */
            AddStat3232(client, stats2, 131);

            /* MaterialCreation */
            AddStat3232(client, stats2, 130);

            /* PsychologicalModification */
            AddStat3232(client, stats2, 129);

            /* BiologicalMetamorphose */
            AddStat3232(client, stats2, 128);

            /* MaterialMetamorphose */
            AddStat3232(client, stats2, 127);

            /* ElectricalEngineering */
            AddStat3232(client, stats2, 126);

            /* MechanicalEngineering */
            AddStat3232(client, stats2, 125);

            /* Treatment */
            AddStat3232(client, stats2, 124);

            /* FirstAid */
            AddStat3232(client, stats2, 123);

            /* PhysicalProwessInitiative */
            AddStat3232(client, stats2, 120);

            /* DistanceWeaponInitiative */
            AddStat3232(client, stats2, 119);

            /* CloseCombatInitiative */
            AddStat3232(client, stats2, 118);

            /* AssaultRifle */
            AddStat3232(client, stats2, 116);

            /* Shotgun */
            AddStat3232(client, stats2, 115);

            /* SubMachineGun */
            AddStat3232(client, stats2, 114);

            /* Rifle */
            AddStat3232(client, stats2, 113);

            /* Pistol */
            AddStat3232(client, stats2, 112);

            /* Bow */
            AddStat3232(client, stats2, 111);

            /* ThrownGrapplingWeapons */
            AddStat3232(client, stats2, 110);

            /* Grenade */
            AddStat3232(client, stats2, 109);

            /* ThrowingKnife */
            AddStat3232(client, stats2, 108);

            /* 2HBluntWeapons */
            AddStat3232(client, stats2, 107);

            /* Piercing */
            AddStat3232(client, stats2, 106);

            /* 2HEdgedWeapons */
            AddStat3232(client, stats2, 105);

            /* MeleeEnergyWeapon */
            AddStat3232(client, stats2, 104);

            /* 1HEdgedWeapons */
            AddStat3232(client, stats2, 103);

            /* 1HBluntWeapons */
            AddStat3232(client, stats2, 102);

            /* MartialArts */
            AddStat3232(client, stats2, 100);

            /* Alignment (Clan Tokens) */
            AddStat3232(client, stats2, 62);

            /* MetaType (Omni Tokens) */
            AddStat3232(client, stats2, 75);

            /* TitleLevel */
            AddStat3232(client, stats2, 37);

            /* GmLevel */
            AddStat3232(client, stats2, 215);

            /* FireAC */
            AddStat3232(client, stats2, 97);

            /* PoisonAC */
            AddStat3232(client, stats2, 96);

            /* ColdAC */
            AddStat3232(client, stats2, 95);

            /* RadiationAC */
            AddStat3232(client, stats2, 94);

            /* ChemicalAC */
            AddStat3232(client, stats2, 93);

            /* EnergyAC */
            AddStat3232(client, stats2, 92);

            /* MeleeAC */
            AddStat3232(client, stats2, 91);

            /* ProjectileAC */
            AddStat3232(client, stats2, 90);

            /* RP */
            AddStat3232(client, stats2, 199);

            /* SpecialCondition */
            AddStat3232(client, stats2, 348);

            /* SK */
            AddStat3232(client, stats2, 573);

            /* Expansions */
            AddStat3232(client, stats2, 389);

            /* ClanRedeemed */
            AddStat3232(client, stats2, 572);

            /* ClanConserver */
            AddStat3232(client, stats2, 571);

            /* ClanDevoted */
            AddStat3232(client, stats2, 570);

            /* OTUnredeemed */
            AddStat3232(client, stats2, 569);

            /* OTOperator */
            AddStat3232(client, stats2, 568);

            /* OTFollowers */
            AddStat3232(client, stats2, 567);

            /* GOS */
            AddStat3232(client, stats2, 566);

            /* ClanVanguards */
            AddStat3232(client, stats2, 565);

            /* OTTrans */
            AddStat3232(client, stats2, 564);

            /* ClanGaia */
            AddStat3232(client, stats2, 563);

            /* OTMed*/
            AddStat3232(client, stats2, 562);

            /* ClanSentinels */
            AddStat3232(client, stats2, 561);

            /* OTArmedForces */
            AddStat3232(client, stats2, 560);

            /* SocialStatus */
            AddStat3232(client, stats2, 521);

            /* PlayerID */
            AddStat3232(client, stats2, 607);

            /* KilledByInvaders */
            AddStat3232(client, stats2, 616);

            /* InvadersKilled */
            AddStat3232(client, stats2, 615);

            /* AlienLevel */
            AddStat3232(client, stats2, 169);

            /* AlienNextXP */
            AddStat3232(client, stats2, 178);

            /* AlienXP */
            AddStat3232(client, stats2, 40);

            fullCharacterMessage.Stats2 = stats2.ToArray();

            /* Byte stat number
               Byte stat value */
            var stats3 = new List<GameTuple<byte, byte>>();

            /* InsurancePercentage */
            AddStat88(client, stats3, 236);

            /* ProfessionLevel */
            AddStat88(client, stats3, 10);

            /* PrevMovementMode */
            AddStat88(client, stats3, 174);

            /* CurrentMovementMode */
            AddStat88(client, stats3, 173);

            /* Fatness */
            AddStat88(client, stats3, 47);

            /* Race */
            AddStat88(client, stats3, 89);

            /* TeamSide */
            AddStat88(client, stats3, 213);

            /* BeltSlots */
            AddStat88(client, stats3, 45);

            fullCharacterMessage.Stats3 = stats3.ToArray();

            /* Byte stat number
               Int16 (short) stat value */
            var stats4 = new List<GameTuple<byte, short>>();

            /* AbsorbProjectileAC */
            AddStat816(client, stats4, 238);

            /* AbsorbMeleeAC */
            AddStat816(client, stats4, 239);

            /* AbsorbEnergyAC */
            AddStat816(client, stats4, 240);

            /* AbsorbChemicalAC */
            AddStat816(client, stats4, 241);

            /* AbsorbRadiationAC */
            AddStat816(client, stats4, 242);

            /* AbsorbColdAC */
            AddStat816(client, stats4, 243);

            /* AbsorbNanoAC */
            AddStat816(client, stats4, 246);

            /* AbsorbFireAC */
            AddStat816(client, stats4, 244);

            /* AbsorbPoisonAC */
            AddStat816(client, stats4, 245);

            /* TemporarySkillReduction */
            AddStat816(client, stats4, 247);

            /* InsuranceTime */
            AddStat816(client, stats4, 49);

            /* CurrentNano */
            AddStat816(client, stats4, 214);

            /* maxMaxNanoEnergyEnergy */
            AddStat816(client, stats4, 221);

            /* MaxNCU */
            AddStat816(client, stats4, 181);

            /* MapFlags */
            AddStat816(client, stats4, 9);

            /* ChangeSideCount */
            AddStat816(client, stats4, 237);

            fullCharacterMessage.Stats4 = stats4.ToArray();

            /* ? */
            fullCharacterMessage.Unknown9 = 0;

            /* ? */
            fullCharacterMessage.Unknown10 = 0;

            fullCharacterMessage.Unknown11 = new object[0];

            fullCharacterMessage.Unknown12 = new object[0];

            fullCharacterMessage.Unknown13 = new object[0];
            return fullCharacterMessage;
        }
Пример #45
0
        /// <summary>
        /// </summary>
        /// <param name="identity">
        /// </param>
        /// <param name="client">
        /// </param>
        public Character(Identity identity, IZoneClient client)
        {
            this.identity = identity;
            this.BaseInventory = new UnitInventory(this.identity.Instance);
            this.pets = new List<Pet>();
            this.client = client;
            this.Textures = new List<AOTextures>();
            this.uploadedNanos = new List<AOUploadedNanos>();
            this.meshLayer = new MeshLayers();
            this.socialMeshLayer = new MeshLayers();
            this.SocialTab = new Dictionary<int, int>();

            // TODO: Load names here?
        }
 /// <summary>
 /// </summary>
 /// <param name="character">
 /// </param>
 /// <param name="receiver">
 /// </param>
 public static void SendToOne(ICharacter character, IZoneClient receiver)
 {
     SimpleCharFullUpdateMessage message = ConstructMessage((Character)character);
     receiver.Controller.Character.Send(message);
 }
Пример #47
0
 /// <summary>
 /// Sends chat server info to client
 /// </summary>
 /// <param name="client">
 /// Client that gets the info
 /// </param>
 public static void Send(IZoneClient client)
 {
     client.Character.Send(Create());
 }
Пример #48
0
 /// <summary>
 /// </summary>
 /// <param name="client">
 /// </param>
 /// <param name="MsgCategory">
 /// </param>
 /// <param name="MsgNum">
 /// </param>
 /// <returns>
 /// </returns>
 public static bool Send(IZoneClient client, int MsgCategory, int MsgNum)
 {
     client.Character.Send(Create(client, MsgCategory, MsgNum));
     return true;
 }
Пример #49
0
 /// <summary>
 /// </summary>
 /// <param name="client">
 /// </param>
 /// <param name="messages">
 /// </param>
 /// <returns>
 /// </returns>
 public static IMSendAOtomationMessageBodiesToClient CreateIM(IZoneClient client, MessageBody[] messages)
 {
     return new IMSendAOtomationMessageBodiesToClient() { Bodies = messages, client = client };
 }
 public PlayerController(IZoneClient client)
 {
     this.Client = client;
 }
 /// <summary>
 /// </summary>
 /// <param name="client">
 /// </param>
 /// <returns>
 /// </returns>
 public static SimpleCharFullUpdateMessage ConstructMessage(IZoneClient client)
 {
     return ConstructMessage((Character)client.Controller.Character);
 }
Пример #52
0
 /// <summary>
 /// </summary>
 /// <param name="client">
 /// </param>
 /// <param name="item">
 /// </param>
 public static void Send(IZoneClient client, Item item)
 {
     client.Character.Playfield.Send(client, Create(client, item));
 }
 /// <summary>
 /// </summary>
 /// <param name="client">
 /// </param>
 public static void SendToPlayfield(IZoneClient client)
 {
     SimpleCharFullUpdateMessage message = ConstructMessage(client);
     client.Controller.Character.Playfield.Announce(message);
 }
Пример #54
0
        /// <summary>
        /// </summary>
        /// <param name="client">
        /// </param>
        /// <param name="list">
        /// </param>
        /// <param name="statId">
        /// </param>
        private static void AddStat3232(IZoneClient client, IList<GameTuple<int, uint>> list, int statId)
        {
            var tuple = new GameTuple<int, uint> { Value1 = statId, Value2 = client.Character.Stats[statId].BaseValue };

            list.Add(tuple);
        }
Пример #55
0
 /// <summary>
 /// </summary>
 /// <param name="client">
 /// </param>
 public void Reconnect(IZoneClient client)
 {
     this.Controller.Client = client;
 }
 /// <summary>
 /// </summary>
 /// <param name="client">
 /// </param>
 public static void Send(IZoneClient client)
 {
     PlayfieldAnarchyFMessage message = Create(client);
     client.SendCompressed(message);
 }
Пример #57
0
 /// <summary>
 /// </summary>
 /// <param name="client">
 /// </param>
 public static void Send(IZoneClient client)
 {
     // TODO: Let this in for now, it needs to be removed when Character login is rewritten
     client.SendCompressed(Create(client));
 }
Пример #58
0
        /// <summary>
        /// </summary>
        /// <param name="client">
        /// </param>
        /// <param name="statsToUpdate">
        /// </param>
        public static void SendBulk(IZoneClient client, Dictionary<int, uint> statsToUpdate)
        {
            if (statsToUpdate.Count == 0)
            {
                return;
            }

            var toPlayfieldIds = new List<int>();
            foreach (KeyValuePair<int, uint> keyValuePair in statsToUpdate)
            {
                if (client.Character.Stats[keyValuePair.Key].AnnounceToPlayfield)
                {
                    toPlayfieldIds.Add(keyValuePair.Key);
                }
            }

            var toPlayfield = new List<GameTuple<CharacterStat, uint>>();
            var toClient = new List<GameTuple<CharacterStat, uint>>();

            foreach (KeyValuePair<int, uint> keyValuePair in statsToUpdate)
            {
                var statValue = new GameTuple<CharacterStat, uint>
                                {
                                    Value1 = (CharacterStat)keyValuePair.Key,
                                    Value2 = keyValuePair.Value
                                };
                toClient.Add(statValue);

                if (toPlayfieldIds.Contains(keyValuePair.Key))
                {
                    toPlayfield.Add(statValue);
                }
            }

            var message = new StatMessage { Identity = client.Character.Identity, Stats = toClient.ToArray() };

            client.SendCompressed(message);

            /* announce to playfield? */
            if (toPlayfieldIds.Count > 0)
            {
                message.Stats = toPlayfield.ToArray();
                client.Character.Playfield.AnnounceOthers(message, client.Character.Identity);
            }
        }
Пример #59
0
        /// <summary>
        /// </summary>
        /// <param name="client">
        /// </param>
        /// <param name="list">
        /// </param>
        /// <param name="statId">
        /// </param>
        private static void AddStat88(IZoneClient client, IList<GameTuple<byte, byte>> list, int statId)
        {
            if (statId > 255)
            {
                Console.WriteLine("AddStat88 statId(" + statId + ") > 255");
            }

            var tuple = new GameTuple<byte, byte>
                        {
                            Value1 = (byte)statId,
                            Value2 = (byte)client.Character.Stats[statId].BaseValue
                        };

            list.Add(tuple);
        }
Пример #60
0
        /// <summary>
        /// </summary>
        /// <param name="client">
        /// </param>
        /// <param name="stat">
        /// </param>
        /// <param name="value">
        /// </param>
        /// <param name="announce">
        /// </param>
        public static void Send(IZoneClient client, int stat, uint value, bool announce)
        {
            var statMessage = new StatMessage
                              {
                                  Identity = client.Character.Identity,
                                  Stats =
                                      new[]
                                      {
                                          new GameTuple<CharacterStat, uint>
                                          {
                                              Value1 =
                                                  (CharacterStat)stat,
                                              Value2 = value
                                          }
                                      }
                              };
            var statM = new Message { Body = statMessage };
            if (!client.Character.DoNotDoTimers)
            {
                client.Character.Playfield.Publish(
                    new IMSendAOtomationMessageToClient { client = client, message = statM });
            }

            /* announce to playfield? */
            if (announce)
            {
                client.Character.Playfield.AnnounceOthers(statMessage, client.Character.Identity);
            }
        }