-
Постов
57 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные ivan96222
-
-
Тогда еще от меня вопрос, я C# тренеры делал тут приходится делать бесконечность через таймер, А штатным средством CE замораживает значение не так?
-
На какую кнопку можно заморозить выделенные адреса? Выделено 100 штук...
Оказалось надо жать на пробел.
-
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);
} -
Всем привет сегодня расскажу как делать хуки на C#.
Комментировал код из-за всех сил вроде понятно всё получилось.
На что следующую статью написать уже не знаю.
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
-
Можно ли в Delphi изменять оригинальную инструкцию?
// NullAlex: исправил в заголовке и в этом сообщение на правильное название IDE - Delphi
-
Можно в события написать не которые куски кода и будет короче код.
-
Всем привет сегодня я расскажу как сделать форму прозрачной когда вы её перемещаете, так же как сделать что бы форму можно было перетаскивать за любой её участок.
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== Теперь делаем картинку на плавный запуск запускВы не поверите, но в 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();//Вот и всёСпасибо за прочтение- 2
-
keng
А как проше привязать 4 функции что бы выполнялись по одному клику. А то писать всё в куче не то как то.
-
Странно как то ты ищешь адреса.
Да азот найти не проблема я пытался турбо найти, а его мало дают.
-
Нашел адрес нужный он красным цветом и при смене значения, значение сразу становится прежним. Адрес тот это точно отсеивал не известным значением до 1 адреса. И если заморозить и поставить 1 то значение колеблется и в игре иногда становится полная полоса и сразу на прежнюю меняет.
-
Хах искал от 0 до 1 float, а оказалось от 0 до 100 надо было нашел значение.
-
Не совсем понял тебя, то есть нашёл адрес азота - замораживаешь значение и всё равно уменьшается?
Может не тот адрес нашёл! Да и зачем изменяешь значение на FLOAT.
Указатель вроде тот. Когда азот полный значение 1, а когда пустой почти 0. В игре так же чуть чуть остается и не тратится.
-
Если не получается использовать ASM инструкции в С#, C++.
Попробуй такой вариант.....если ты создаёшь трейнер на С#, C++.
Создай АА скрипт как я тебе говорил выше.....далее переведи АА скрипт в НЕХ код и попробуй в вписать в С#, C++.
Правда придётся много по печатать.
А насчёт видео, я никогда не делал этого. Вопрос как это сделать и какую программу надо? А то очень интересно!
Видел на ютубе видео инъекция кода игры, завтра гляну как скачается пока я сплю, потом если всё получится на форум напишу код исходный.
И еще вопрос я нашел значение азота в Nfs hot pursuit 2010, но его изменяю как float 1 и ничего не выходит, даже заморозить. Как быть в таком случае?
-
Ты вообще читал первый вариант из этого поста?
Запусти СЕ, запусти игру, подключи СЕ к игре, и нажми в СЕ на кнопку "Добавить адрес", и вставь в поле "Адрес" это: "nfsc.exe"+0077F210, затем нажми ОК, и в таблице смотри, какой адрес тебе показывает, этот адрес и используй в трейнере, как базовый.
Читал, но не понял сути.
Спасибо огромное получилось!)
-
Поэтому я хочу найти вручную адрес что бы указатель был с адресом не типа nfs +. Но вручную найти не могу дальше 2 или 3-го указателя.
-
При втором варианте? В одинарные кавычки попробуй заключить. Если не поможет - первый способ 100% гарантия
int myGame_Address = Addr.ToDec("\"\nfsc.exe\"+0077F210"); вот это бьёт исключение а если использовать только "0077F210" то адрес не найдется это я уже понял. И везде где смотрел видео по трейнерам везде пишут указатели типа 0077F210.
-
Ну правильно, адрес у тебя nfsc.exe+0077F210, а ты пишешь только 0077F210
У тебя тут два варианта:
1. Добавь новый адрес в таблицу, указав в качестве адреса: "nfsc.exe"+0077F210, и полученный адрес (см. в таблицу) пиши в код трейнера (вместо 0077F210)
2. Либо в коде трейнера пиши не 0077F210, а "nfsc.exe"+0077F210
а так исключение выбивает...
-
ааа вы не так поняли я указал, 0077F210 и мне ошибку дает... Это не правильный адрес как я понял. А трйнер я написал, азот даже бесконечный тестил на динамическом адресе.
-
Вот он найденный уже.
всё бы ничего, указываю так
int myGame_Address = Addr.ToDec("0077F210"); // Статичный адрес указателяint[] myGame_Offsets = { 0xF0, 0x4, 0x0, 0xD4, 0x80 }; // Офсеты, смещение пишем в виде 0х--Я не знаю где найти адрес нужный в этих свойствах. -
Зачем тебе нужны указатель(и)! Лучше используй инструкцию кода игры и не мучайся.
ххм в принципе красивый скрипт, Ты на каком яп кодишь? Знаешь как в с# использовать инструкции игр?
А указатели нужны что бы указывать на адрес. Я уже написал трейнер всё работает с динамическими адресами, но после запуска адреса меняются, поэтому интересно как найти указатели. Я дохожу до 3-го смешения и тупик, дальше не могу ничего, хотя и 5 вроде как. Может всё таки снимешь видео? Буду благодарен
-
Покажи код,что не работает, указатель не тот? в СЕ проверял?
код такой
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#
-
Сними пожалуйста видео как ты в nfs статический указатель вручную ишешь. Я уже замучался пытаться.
-
Спасибо что сказал про N20 соперников. И я уже не спрашиваю как найти, я нашел указатели они работают после перезапуска игры.
так объявил nt myGame_Address = Addr.ToDec("0077F210"); // Статичный адрес указателя
int[] myGame_Offsets = { 0xF0, 0x4, 0x0, 0xD4, 0x80 }; // Офсеты, смещение пишем в виде 0х--но через трейнер азот не замараживает и и про азот с этим указателем он работает со вссеми машинами. Вот ссылка -
Да так и сделал, но указатель статический 5-уровневый со смешениями указал и не работает. Что может быть? Ведь когда я указывал адрес динамический и то работало.
На какую кнопку можно заморозить выделенные адреса?
in Cheat Engine
Опубликовано
я ответил сам себе