【问题标题】:C# VAMemory read float returns 0C# VAMemory 读取浮点数返回 0
【发布时间】:2020-03-07 00:26:16
【问题描述】:

我一直在尝试为游戏制作培训师,作为视觉工作室中的一种学习项目,但我完全陷入困境。

我想要做的是读取游戏中的 Y 位置值,并在点击 btnConnect 按钮时将返回的浮点值放入文本框中,以便显示玩家的 Y 位置,但无论我尝试什么,我总是得到“ 0" 回到 valPosY 文本框中,而不是我在作弊引擎中看到的 "2992.065918"。

代码:

private void btnConnect_Click(object sender, EventArgs e)
    {
        btnConnect.Enabled = false;

        Process[] processes = Process.GetProcessesByName("QUBE-Win64-Shipping");

        if (processes.Length > 0)
        {
            btnConnect.Text = "Connected!";
            Process GameProcess = processes[0];

            VAMemory vam = new VAMemory("QUBE-Win64-Shipping");

            IntPtr Base = GameProcess.MainModule.BaseAddress + 0x0290B008;
            Base = IntPtr.Add((IntPtr)vam.ReadInt32(Base), 0x58);
            Base = IntPtr.Add((IntPtr)vam.ReadInt32(Base), 0x340);
            Base = IntPtr.Add((IntPtr)vam.ReadInt32(Base), 0x18);
            Base = IntPtr.Add((IntPtr)vam.ReadInt32(Base), 0x100);
            Base = IntPtr.Add((IntPtr)vam.ReadInt32(Base), 0x198);
            float valY = vam.ReadFloat(Base);

            valPosY.Text = valY.ToString();
        }
        else
        {
            btnConnect.Enabled = true;
            MessageBox.Show("Could not find a process named 'QUBE-Win64-Shipping'!", "Error Finding Process", MessageBoxButtons.OK);
        }
    }

如果我关闭游戏,if 语句没有通过,这意味着它应该得到我需要的正确进程。

This is the pointer i got with Cheat Engine.

我也没有收到任何错误或警告消息。
如果需要更多信息,请告诉我,任何帮助将不胜感激!

【问题讨论】:

    标签: c# memory


    【解决方案1】:

    经过几个小时的挠头后,我意识到我确实很笨,不得不将每个 ReadInt32(Base) 更改为 ReadInt64(Base)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-26
      • 1970-01-01
      • 2013-10-15
      相关资源
      最近更新 更多