[Aportes] Calculadora de NPC semi-automatica

Pastore16

Club Atlético Huracán
Crean lo siguiente:
• 3 Labels (lblExp, lblNivel, lblNpc)
• 1 combobox
• 1 button
• 1 clase (class1.cs)

dentro de la clase ponen esto
Código:
        private const int PROCESS_ALL_ACCESS = 0x1F0FFF;
        [DllImport("kernel32")]
        private static extern int OpenProcess(int AccessType, int InheritHandle, int ProcessId);

        [DllImport("kernel32", EntryPoint = "ReadProcessMemory")]
        private static extern int ReadProcessMemoryInteger(int Handle, int Address, ref int Value, int Size, ref int BytesRead);
        [DllImport("kernel32")]
        private static extern int CloseHandle(int Handle);


        public static int ReadInteger(string EXENAME, int Address)
        {
            int Value = 0;
            checked
            {
                try
                {
                    Process[] Proc = Process.GetProcessesByName(EXENAME);
                    if (Proc.Length != 0)
                    {
                        int Bytes = 0;
                        int Handle = OpenProcess(PROCESS_ALL_ACCESS, 0, Proc[0].Id);
                        if (Handle != 0)
                        {
                            ReadProcessMemoryInteger(Handle, Address, ref Value, 4, ref Bytes);
                            CloseHandle(Handle);
                        }
                    }
                }
                catch
                { }
            }
            return Value;
        }

les dejo el código completo
Código:
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        int expAct ;
        int expMax ;
        int nivel ;
        int resta;

        int[] vEXPnpc = new int[3] {2765, 10550, 8500};
        string[] vNPC = new string[3] {"Ogro", "Araña", "Asesino"};
        int i;

        public Form1()
        {
            InitializeComponent();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
           
            expAct = Class1.ReadInteger("Tierras del Norte x64", 0x50B270);
            expMax = Class1.ReadInteger("Tierras del Norte x64", 0x50B26C);
            nivel = Class1.ReadInteger("Tierras del Norte x64", 0x50B260);

           
            lblNivel.Text = Convert.ToString(Convert.ToInt32(nivel));
            lblExp.Text = Convert.ToString(Convert.ToInt32(expAct)) + "/" + Convert.ToString(Convert.ToString(expMax));

        }


        private void button1_Click(object sender, EventArgs e)
        {
            calculo();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            for (i = 0; i < 3; i++)
            {
                comboBox1.Items.Add(vNPC[i]);
            }
        }

        public void calculo()
        {
            string NPC;

            NPC = comboBox1.Text;
            resta = expMax - expAct;
            switch (NPC)
            {
                case "Ogro":
                    lblNpc.Text = Convert.ToString(resta / vEXPnpc[0]);
                    break;
                case "Araña":
                    lblNpc.Text = Convert.ToString(resta / vEXPnpc[1]);
                    break;
                case "Serpiente":
                    lblNpc.Text = Convert.ToString(resta / vEXPnpc[2]);
                    break;
            }
        }
    }
}
 

Dr. GoDKeR

El Rey y el As
Miembro del equipo
Administrador
Developer
Moderador de RRPP
Moderador de AO
Moderador de Tecnología
Moderador de Entretenimiento
Moderador de Diseño
Especialista de RRPP
Especialista de Entretenimiento
Especialista de Tecnología
Especialista de Argentum
Especialista de Diseño
Esto, probablemente, te va a dejar de andar cada vez que se vuelva a compilar el cliente del ao, ya que es probable que esas variables no vayan a tener el mismo address :p.

Igual esta genial la idea de buscarlo automáticamente.
 

CUICUI

Inmortal Lvl 8
Esto, probablemente, te va a dejar de andar cada vez que se vuelva a compilar el cliente del ao, ya que es probable que esas variables no vayan a tener el mismo address :p.

Igual esta genial la idea de buscarlo automáticamente.

Quedaría usar un MagicPattern o como se llame
 
Arriba