Ejemplo n.º 1
0
        public static PlayerInfoReadResult GetPlayerInfo()
        {
            var result = new PlayerInfoReadResult();

            if (!Scanner.Instance.Locations.ContainsKey("CHARMAP"))
            {
                return(result);
            }
            if (!Scanner.Instance.Locations.ContainsKey("PLAYERINFO"))
            {
                return(result);
            }

            PlayerInfoMap = Scanner.Instance.Locations["PLAYERINFO"];

            if (PlayerInfoMap.ToInt64() <= 6496)
            {
                return(result);
            }

            try
            {
                var enmityEntries = new List <EnmityEntry>();

                if (Scanner.Instance.Locations.ContainsKey("AGROMAP") && Scanner.Instance.Locations.ContainsKey("AGRO_COUNT"))
                {
                    var enmityCount     = MemoryHandler.Instance.GetInt16(Scanner.Instance.Locations["AGRO_COUNT"]);
                    var enmityStructure = (IntPtr)Scanner.Instance.Locations["AGROMAP"];

                    if (enmityCount > 0 && enmityCount < 32 && enmityStructure.ToInt64() > 0)
                    {
                        for (uint i = 0; i < enmityCount; i++)
                        {
                            var address     = new IntPtr(enmityStructure.ToInt64() + i * 72);
                            var enmityEntry = new EnmityEntry
                            {
                                ID     = (uint)MemoryHandler.Instance.GetPlatformInt(address, MemoryHandler.Instance.Structures.EnmityEntry.ID),
                                Name   = MemoryHandler.Instance.GetString(address + MemoryHandler.Instance.Structures.EnmityEntry.Name),
                                Enmity = MemoryHandler.Instance.GetUInt32(address + MemoryHandler.Instance.Structures.EnmityEntry.Enmity)
                            };
                            if (enmityEntry.ID > 0)
                            {
                                enmityEntries.Add(enmityEntry);
                            }
                        }
                    }
                }

                var source = MemoryHandler.Instance.GetByteArray(PlayerInfoMap, 0x256);

                try
                {
                    result.PlayerEntity = PlayerEntityHelper.ResolvePlayerFromBytes(source);
                    result.PlayerEntity.EnmityEntries = enmityEntries;
                }
                catch (Exception ex)
                {
                    MemoryHandler.Instance.RaiseException(Logger, ex, true);
                }
            }
            catch (Exception ex)
            {
                MemoryHandler.Instance.RaiseException(Logger, ex, true);
            }

            return(result);
        }
Ejemplo n.º 2
0
        public static PlayerInfoReadResult GetPlayerInfo()
        {
            var result = new PlayerInfoReadResult();

            if (!CanGetPlayerInfo() || !MemoryHandler.Instance.IsAttached)
            {
                return(result);
            }

            var PlayerInfoMap = (IntPtr)Scanner.Instance.Locations[Signatures.PlayerInformationKey];

            if (PlayerInfoMap.ToInt64() <= 6496)
            {
                return(result);
            }

            try
            {
                var agroEntries = new List <EnmityEntry>();

                if (CanGetAgroEntities())
                {
                    var agroCount     = MemoryHandler.Instance.GetInt16(Scanner.Instance.Locations[Signatures.AgroCountKey]);
                    var agroStructure = (IntPtr)Scanner.Instance.Locations[Signatures.AgroMapKey];

                    if (agroCount > 0 && agroCount < 32 && agroStructure.ToInt64() > 0)
                    {
                        for (uint i = 0; i < agroCount; i++)
                        {
                            var address   = new IntPtr(agroStructure.ToInt64() + i * 72);
                            var agroEntry = new EnmityEntry
                            {
                                ID     = (uint)MemoryHandler.Instance.GetPlatformInt(address, MemoryHandler.Instance.Structures.EnmityEntry.ID),
                                Name   = MemoryHandler.Instance.GetString(address + MemoryHandler.Instance.Structures.EnmityEntry.Name),
                                Enmity = MemoryHandler.Instance.GetUInt32(address + MemoryHandler.Instance.Structures.EnmityEntry.Enmity)
                            };
                            if (agroEntry.ID > 0)
                            {
                                agroEntries.Add(agroEntry);
                            }
                        }
                    }
                }

                var source = MemoryHandler.Instance.GetByteArray(PlayerInfoMap, 0x256);

                try
                {
                    result.PlayerEntity = PlayerEntityHelper.ResolvePlayerFromBytes(source);
                    result.PlayerEntity.EnmityEntries = agroEntries;
                }
                catch (Exception ex)
                {
                    MemoryHandler.Instance.RaiseException(Logger, ex, true);
                }
            }
            catch (Exception ex)
            {
                MemoryHandler.Instance.RaiseException(Logger, ex, true);
            }

            return(result);
        }