コード例 #1
0
 public CGameEffect(IntPtr addr)
 {
     addr = WinAPIBindings.FindDMAAddy(addr, new int[] { 0x04 });
     //addr += 4;
     this.Version    = WinAPIBindings.ReadString(addr, 8);
     this.EffectId   = (Effect)WinAPIBindings.ReadUInt32(addr + 0x08);
     this.Res        = WinAPIBindings.ReadString(addr + 0x28, 8);
     this.SourceRes  = WinAPIBindings.ReadString(addr + 0x8C, 8);
     this.ScriptName = WinAPIBindings.ReadString(addr + 0xA0, 32);
 }
コード例 #2
0
        public BGEntity(ResourceManager resourceManager, IntPtr entityIdPtr)
        {
            this.resourceManager = resourceManager;
            this.Loaded          = false;
            // 1020 bytes CGameAIBase
            this.Id      = WinAPIBindings.ReadInt32(entityIdPtr);
            entityIdPtr += 0x4;
            this.Type    = WinAPIBindings.ReadByte(WinAPIBindings.FindDMAAddy(entityIdPtr, new int[] { 0x004 }));
            if (Type != 49)
            {
                return;
            }
            this.X = WinAPIBindings.ReadInt32(WinAPIBindings.FindDMAAddy(entityIdPtr, new int[] { 0x008 }));
            this.Y = WinAPIBindings.ReadInt32(WinAPIBindings.FindDMAAddy(entityIdPtr, new int[] { 0x00C }));
            if (X < 0 || Y < 0)
            {
                return;
            }
            IntPtr cGameAreaPtr = WinAPIBindings.FindDMAAddy(entityIdPtr, new int[] { 0x14 });

            this.RealId              = WinAPIBindings.ReadInt32(WinAPIBindings.FindDMAAddy(entityIdPtr, new int[] { 0x34 }));
            this.AreaName            = WinAPIBindings.ReadString(WinAPIBindings.FindDMAAddy(cGameAreaPtr, new int[] { 0x0 }), 8);
            this.AreaRef             = WinAPIBindings.ReadString(WinAPIBindings.FindDMAAddy(cGameAreaPtr, new int[] { 0x1E4 }), 8);
            this.MousePosX           = WinAPIBindings.ReadInt32(WinAPIBindings.FindDMAAddy(cGameAreaPtr, new int[] { 0x22C }));
            this.MousePosY           = WinAPIBindings.ReadInt32(WinAPIBindings.FindDMAAddy(cGameAreaPtr, new int[] { 0x22C + 4 }));
            this.MousePosX1          = WinAPIBindings.ReadInt32(WinAPIBindings.FindDMAAddy(cGameAreaPtr, new int[] { 0xA84 }));
            this.MousePosY1          = WinAPIBindings.ReadInt32(WinAPIBindings.FindDMAAddy(cGameAreaPtr, new int[] { 0xA84 + 4 }));
            this.Name2               = WinAPIBindings.ReadString(WinAPIBindings.FindDMAAddy(entityIdPtr, new int[] { 0x28A8, 0 }), 64);
            this.Name1               = WinAPIBindings.ReadString(WinAPIBindings.FindDMAAddy(entityIdPtr, new int[] { 0x364 }), 8);
            this.CreResourceFilename = WinAPIBindings.ReadString(WinAPIBindings.FindDMAAddy(entityIdPtr, new int[] { 0x3FC }), 8).Trim('*') + ".CRE";
            this.CurrentHP           = WinAPIBindings.ReadByte(WinAPIBindings.FindDMAAddy(entityIdPtr, new int[] { 0x438 }));
            //this.DerivedStats                = new CDerivedStats(WinAPIBindings.FindDMAAddy(entityIdPtr, new int[] { 0xB30 }));
            //this.DerivedStatsTemp            = new CDerivedStats(entityIdPtr + 0x1454 );
            this.DerivedStatsTemp = new CDerivedStats(WinAPIBindings.FindDMAAddy(entityIdPtr, new int[] { 0x1454 }));

            //this.DerivedStatsBonus = new CDerivedStats(WinAPIBindings.FindDMAAddy(entityIdPtr, new int[] { 0x1D78 }));
            if (Type == 49)
            {
                this.Reader = resourceManager.GetCREReader(CreResourceFilename.ToUpper());
                if (Reader == null)
                {
                    this.Reader = resourceManager.GetCREReader(CreResourceFilename.ToUpper());
                }
            }
            this.Loaded = true;
        }