Перейти к содержанию

ivan96222

Пользователи
  • Постов

    57
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Сообщения, опубликованные ivan96222

  1.  


    protected override void WndProc(ref Message m)
            {
                const int WM_NCLBUTTONDOWN = 0x00A1; //Из прошлой статьи я показывал как делать форму прозрачной при перемешение
                const int WM_MOUSEMOW = 0x00A0; // Тут объединённый код, так как второй раз WndProc использовать нельзя,
                if (m.Msg == WM_NCLBUTTONDOWN) //Но можно объединить.
                {
                    this.Opacity = 0.5;
                }
                if (m.Msg == WM_MOUSEMOW)
                {
                    this.Opacity = 1.0;
                }
                if (m.Msg == 0x0312)
                {
                    if (m.WParam.ToInt32() == 0)
                        if (timer2.Enabled)
                            timer2.Stop();
                        else
                            timer2.Start();
                }


                base.WndProc(ref m);
            }
  2. Всем привет сегодня расскажу как делать хуки на C#.

    Комментировал код  из-за всех сил вроде понятно всё получилось.

    На что следующую статью написать уже не знаю.  8-)

     

    using System;using System.Windows.Forms;//Подключим пространство имён.using System.Runtime.InteropServices;namespace WindowsFormsApplication2{    public partial class Form1 : Form    {        //Тут объявим WinApi        [DllImport("user32.dll")]        private static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk);        [DllImport("user32.dll")]        private static extern bool UnregisterHotKey(IntPtr hWnd, int id);        public Form1()        {            InitializeComponent();            //В инициализации компонентов объявим наши горячие клавиши и их айдишники.            //Где 0, 0 это то есть ID=0            //Где 2,0 это то есть ID= 2            RegisterHotKey(this.Handle, 0, 0, (int)Keys.D1);            //Если надо две горячих клавиши можно сделать так и ID Клавиши будет конечно равен 1 тут легко догадаться.            RegisterHotKey(this.Handle, 1, (int)ModiferKeys.Control, (int)Keys.D2);            RegisterHotKey(this.Handle, 2, 0, (int)Keys.D3);        }        //Теперь сделаем обработку наших нажатых клавиш        protected override void WndProc(ref Message m)        {            if (m.Msg == 0x0312)            {                //if (m.WParam.ToInt32() == 0) это значит что функция обрабатывается при нажатие клавиши 1 и id который равен 0                if (m.WParam.ToInt32() == 0)                    MessageBox.Show("Click 1");        //if (m.WParam.ToInt32() == 1) это значит что функция обрабатывается при нажатие клавишей ctrl + 2 иid который равен 1                    if (m.WParam.ToInt32() == 1)                    MessageBox.Show("Click 2");                if (m.WParam.ToInt32() == 2)         //if (m.WParam.ToInt32() == 2) это значит что функция обрабатывается при нажатие клавиши 3 2 id который равен 2                    MessageBox.Show("Click 3");            }            base.WndProc(ref m);        }        private void Form1_FormClosing(object sender, FormClosingEventArgs e)        {            //Здесь мы пишем снятие регистрации клавиш, вдруг они заняты другой программой.            UnregisterHotKey(this.Handle, 0);            UnregisterHotKey(this.Handle, 1);            UnregisterHotKey(this.Handle, 2);        }        //[Flags] public enum ModiferKeys : uint нужен только когда вы используете две и более горячих клавиш.        //Для хоткеея равным  нажатием одной клавиши это можно не прописывать.        [Flags]        public enum ModiferKeys : uint        {            Alt = 1,            Control = 2,            Shift = 4,            Win = 8        }    }}
    • Плюс 1
  3. Всем привет сегодня я расскажу как сделать форму прозрачной когда вы её перемещаете, так же как сделать что бы форму можно было перетаскивать за любой её участок.
    1== чтобы сделать форму прозрачной при перемешение надо вставить следующей код  где хотите.

    protected override void WndProc(ref Message m)
            {
                const int WM_NCLBUTTONDOWN = 0x00A1;
                const int WM_MOUSEMOW = 0x00A0;
                if (m.Msg == WM_NCLBUTTONDOWN)
                {
                    this.Opacity = 0.5;
                }
                if(m.Msg == WM_MOUSEMOW)
                {
                    this.Opacity = 1.0;
                }
                base.WndProc(ref m);
            }

     

    2== Для того чтобы перетаскивать форму, за любой её участок кроме компонентов формы надо использовать WinAPI, но не пугайтесь ничего сложного нету ^_^ 

    Вставляем после 

    public partial class Form1 : Form

        {
    следующий код
    [DllImport("user32.dll", CharSet = CharSet.Auto)]
            static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
     
            [DllImportAttribute("user32.dll")]
            public static extern bool ReleaseCapture();

     

    Ну и в событие Form1_MouseDown пишем

    private void Form1_MouseDown(object sender, MouseEventArgs e)

            {
                if (e.Button == MouseButtons.Left)
                {
                    ReleaseCapture();
                    SendMessage(this.Handle, 0xA1, 0x2, 0);
                    
                }  

     

           3== Теперь делаем картинку на плавный запуск запуск :rolleyes: 
    Вы не поверите, но в Form1 мы ничего даже писать не будем для этого ^_^ 
    Создаём Form2, это будет наша картинка. В FormBolderStyle - Ставим None. Далее заходим в Program.cs и убираем это: 
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(newForm1());
    и вставляем это:
     
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Form2 first = new Form2();
    DateTime end = DateTime.Now + TimeSpan.FromSeconds(5);
    first.Show();
    while (end > DateTime.Now)
    {
    Application.DoEvents();
    }
    first.Close();
    first.Dispose();
    Application.Run(new Form1());

     

     

    Теперь наступило время сделать нашу картинку, сделали? Теперь загружаем её на форму: BackGroundImage, затем на импорт и окей и

    BackGroundImageLayot ставим Stretch это что бы картинка автоматически применяла размер формы так сказать без возни ^_^ . Выставляем Прозрачность Form2 на 0: Opacity - 0. Теперь добавляем на форму Form2 Таймер, ставим интервал 10. Теперь в событии таймера пишем:

     

    this.Opacity += .03;
     
    if (this.Opacity == 1)
    {
    timer1.Stop();
    }
    и после
    InitializeComponent();
    Пишем 
    timer1.Start();
    //Вот и всё ^_^ 

     

     
    Спасибо за прочтение 8-) 
    • Плюс 2
  4. Нашел адрес нужный он красным цветом и при смене значения, значение сразу становится прежним. Адрес тот это точно отсеивал не известным значением до 1 адреса.  И если заморозить и поставить 1 то значение колеблется и в игре иногда становится полная полоса и сразу на прежнюю меняет.

  5. Не совсем понял тебя, то есть нашёл адрес азота - замораживаешь значение и всё равно уменьшается?

    Может не тот адрес нашёл! Да и зачем изменяешь значение на FLOAT<_<

    Указатель вроде тот. Когда азот полный значение 1, а когда пустой почти 0. В игре так же чуть чуть остается и не тратится.

  6. Если не получается использовать ASM инструкции в С#, C++:unsure:

    Попробуй такой вариант.....если ты создаёшь трейнер на С#, C++:closeyes:

    Создай АА скрипт как я тебе говорил выше.....далее переведи АА скрипт в НЕХ код и попробуй в вписать в С#, C++^_^

    Правда придётся много по печатать.  :-P

    А насчёт видео, я никогда не делал этого. Вопрос как это сделать и какую программу надо? А то очень интересно!  :rolleyes:

    Видел на ютубе видео инъекция кода игры, завтра гляну как скачается пока я сплю, потом если всё получится на форум напишу код исходный.

    И еще вопрос я нашел значение азота в Nfs hot pursuit 2010, но его изменяю как float 1 и ничего не выходит, даже заморозить. Как быть в таком случае?

  7. Ты вообще читал первый вариант из этого поста?

    Запусти СЕ, запусти игру, подключи СЕ к игре, и нажми в СЕ на кнопку "Добавить адрес", и вставь в поле "Адрес" это: "nfsc.exe"+0077F210, затем нажми ОК, и в таблице смотри, какой адрес тебе показывает, этот адрес и используй в трейнере, как базовый.

    Читал, но не понял сути.

    Спасибо огромное получилось!)

  8. При втором варианте? В одинарные кавычки попробуй заключить. Если не поможет - первый способ 100% гарантия

    int myGame_Address = Addr.ToDec("\"\nfsc.exe\"+0077F210"); вот это бьёт исключение а если использовать только "0077F210" то адрес не найдется это я уже понял. И везде где смотрел видео по трейнерам везде пишут указатели типа 0077F210.

  9. Ну правильно, адрес у тебя nfsc.exe+0077F210, а ты пишешь только 0077F210 :)

    У тебя тут два варианта:

    1. Добавь новый адрес в таблицу, указав в качестве адреса: "nfsc.exe"+0077F210, и полученный адрес (см. в таблицу) пиши в код трейнера (вместо 0077F210)

    2. Либо в коде трейнера пиши не 0077F210, а "nfsc.exe"+0077F210

    а так исключение выбивает...

  10.  

    ааа вы не так поняли я указал,  0077F210 и мне ошибку дает... Это не правильный адрес как я понял. А трйнер я написал, азот даже бесконечный тестил на динамическом адресе.

  11.  

    Вот он найденный уже. 90103203.p.500.500.0.jpg

    всё бы ничего, указываю так  

    int myGame_Address = Addr.ToDec("0077F210"); // Статичный адрес указателя
    int[] myGame_Offsets = { 0xF0, 0x4, 0x0, 0xD4, 0x80 }; // Офсеты, смещение пишем в виде 0х--
    Я не знаю где найти адрес нужный в этих свойствах.
  12. Зачем тебе нужны указатель(и)! Лучше используй инструкцию кода игры и не мучайся.  ;)

     

     

    ххм в принципе красивый скрипт,  Ты на каком яп кодишь? Знаешь как в с# использовать инструкции игр?

    А указатели нужны что бы указывать на адрес. Я уже написал трейнер всё работает с динамическими адресами, но после запуска адреса меняются, поэтому интересно как найти указатели. Я дохожу до 3-го смешения и тупик, дальше не могу ничего, хотя и 5 вроде как. Может всё таки снимешь видео? Буду благодарен 8-)

  13. Покажи код,что не работает, указатель не тот? в СЕ проверял?

    код такой 

    int myGame_Address = Addr.ToDec("0077F210"); // Статичный адрес указателя
    int[] myGame_Offsets = { 0xF0, 0x4, 0x0, 0xD4, 0x80 }; // Офсеты, смещение пишем в виде 0х--
    вот сохранение таблицы при перезапуске игры всё работает.
    <Address>"nfsc.exe"+0077F210</Address>
          <Offsets>
            <Offset>80</Offset>
            <Offset>D4</Offset>
            <Offset>0</Offset>
            <Offset>4</Offset>
            <Offset>F0</Offset>
          </Offsets>

    Да указатель не тот. Я не понял откуда его взять. Ведь как написал не работает.

    Вот ссылка таблица сохраненная игра NFS Carbon, но можно открыть текстовым редактором и смотреть смешение и адрес.

    А про видео у меня интернет тихий... + Мало кто кодит читы на C#

  14. Спасибо что сказал про N20 соперников. И я уже не спрашиваю как найти, я нашел указатели они работают после перезапуска игры.

    так объявил nt myGame_Address = Addr.ToDec("0077F210"); // Статичный адрес указателя

    int[] myGame_Offsets = { 0xF0, 0x4, 0x0, 0xD4, 0x80 }; // Офсеты, смещение пишем в виде 0х--
    но через трейнер азот не замараживает и и про азот с этим указателем он работает со вссеми машинами.  Вот ссылка
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.