2017-02-12 12 views
0

私はゲームのためにメモリのチートをコードしようとしていますが、私はそれを作ることにしましたので、メニューを作成したいと思います。そして今、私のプログラムはフォームを開いて、同時にチートをしたいと思っています。今やチートはそれをしているか、そうでなければチートが働いていないので、フォームが開いています。 私はnoobのだならば、私は... C#でとても残念かなり新しいです:PC#オープンフォームと同時にfuctionを実行

おかげで、 IzzyMichiel

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Threading; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace ac_client_cheat 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
      Main(); 
     } 

     public static int Pbase = 0x00509B74; 
     public static int Health = 0xf8; 
     public static int mgammo = 0x150; 
     public static int fly = 0x44; 
     public void Main() 
     { 
      VAMemory vam = new VAMemory("ac_client"); 
      int localplayer = vam.ReadInt32((IntPtr)Pbase); 
      { 
       while (true) 
       { 
        int address = localplayer + fly; 
        float aimlock = vam.ReadFloat((IntPtr)address); 
        vam.WriteFloat((IntPtr)address, -5); 

        address = localplayer + Health; 
        vam.WriteInt32((IntPtr)address, 1337); 

        address = localplayer + mgammo; 
        vam.WriteInt32((IntPtr)address, +1337); 
       } 
      } 
     } 
    } 
} 
+0

をあなたはあなたがにShowDialog()を呼び出しているので、あなたのプログラムがブロックされているわけ –

+0

より明確に欲しいものを説明してください? –

+0

いいえ、私は、メモリのハックを行い、フォームを開くが、フォームが開いていない –

答えて

0

フォームを表示すると、次のように同時にあなたのチートループを実行することができます。

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    public static int Pbase = 0x00509B74; 
    public static int Health = 0xf8; 
    public static int mgammo = 0x150; 
    public static int fly = 0x44; 

    /// <summary>The main entry point for the application.</summary> 
    static void Main(string[] args) 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 

     var f = new Form1(); 
     f.Show(); 

     VAMemory vam = new VAMemory("ac_client"); 
     int localplayer = vam.ReadInt32((IntPtr)Pbase); 

     while (f.Visible) //loop while form is not closed 
     { 
      int address = localplayer + fly; 
      float aimlock = vam.ReadFloat((IntPtr)address); 
      vam.WriteFloat((IntPtr)address, -5); 

      address = localplayer + Health; 
      vam.WriteInt32((IntPtr)address, 1337); 

      address = localplayer + mgammo; 
      vam.WriteInt32((IntPtr)address, +1337); 

      Application.DoEvents(); //Yield control to the message loop 
     } 

    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     //... 
    } 
} 
+0

これをテストしましたか?あなたのフィードバックは何ですか? –

0

次の2つの操作を行うことができないので、Windowsは、アプリケーションはシングルスレッドとして開始形成をすぐに物事。

これを処理する典型的な方法は、ワーカースレッドを起動することです。 Task.Runを使用してください。

しかし、あなたのアプリケーションはとてもシンプルなので、代わりに Application.DoEventsを使用することができます。

DoEventsに電話すると、スレッドはフォームのメッセージループをチェックし、メニューのクリックや何かなどの保留中のイベントを処理します。保留中のイベントがなければ、メインループを再開させます。このスキームを使用すると、フォームとループを同じスレッドで実行することができます。

while (true) 
{ 
    int address = localplayer + fly; 
    float aimlock = vam.ReadFloat((IntPtr)address); 
    vam.WriteFloat((IntPtr)address, -5); 

    address = localplayer + Health; 
    vam.WriteInt32((IntPtr)address, 1337); 

    address = localplayer + mgammo; 
    vam.WriteInt32((IntPtr)address, +1337); 

    Application.DoEvents(); //Yield control to the message loop 
} 

また、Application.Runでメッセージループを開始していることを確認してください。詳細については、this answerを参照してください。これを行う方法が1つあります:

static class Program 
{ 
    /// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    [STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new Form1()); 
    } 
} 
+0

いいえ、物事は、私はメモリのハックを行い、フォームを開きたいですが、フォームが開いていないです –

+0

私は説明するために編集した私の答えを待つ。 –

+0

ああ、大丈夫です。わかりました。しかし、私はここで上記のように編集しましたが、何らかの理由でメニューが表示されていますが、今は何もしていないチートです。何故ですか?申し訳ありませんが多くの質問が、私はC#でかなり新しいです。私はC++から来ています。そして私はどこにチートを書く必要がありますか? program.csでは?またはForm1.cs? –

0

コードの問題は、コンストラクタが終了しないため、フォームを表示できないことです。

コンストラクタからMainへの呼び出しを削除し、代わりにTimerイベントハンドラに配置します。タイマーは繰り返しを処理するので、whileループも削除できます。

+0

すべての助けをありがとう!そして、あなたの時間と労力を本当に感謝しています!ありがとうございます。 –

関連する問題