romegames 1
romegames
Krutzo 1
Krutzo
shrpnl 1
shrpnl
Best Studio 1
Best Studio
D 1
delimuratt
Aliyldrim 1
Aliyldrim
Mt2Hizmet 1
Mt2Hizmet
noisiv 1
noisiv
Manwe Work 1
Manwe Work
melankolıa18 1
melankolıa18
Agora Metin2 1
Agora Metin2
Cannn6161 1
Cannn6161
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Metin2 Hile İstek c# oto tuş hakkında destek

  • Konuyu başlatan Konuyu başlatan xMysterious
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 8
  • Görüntüleme Görüntüleme 666

xMysterious

Live together, die alone...
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye
TM Üye
Üye
Katılım
13 Ara 2019
Konular
32
Mesajlar
345
Çözüm
2
Online süresi
7d 12h
Reaksiyon Skoru
103
Altın Konu
0
TM Yaşı
6 Yıl 5 Ay 24 Gün
Başarım Puanı
119
Yaş
27
MmoLira
2,441
DevLira
21
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

Merhaba arkadaşlar bir desteğe ihtiyacım var c# da DINPUT.DLL ile oto toplama yapmayı çözmeyi düşüyorum c# uygulamamı x64 olarak derliyorum lakin oto toplama için tuş ataması yapamıyorum.
DINPUT8.dll+30218 Oyun ekrana tıkladığımda değer 4 Bytes da 1 oluyor ekrandan cıkınca 0 oluyor (Belkide yanlış adresdeyimdir.)
DINPUT8.dll+30281 ise " tuşuna ait olduğunu düşünüyorum (Belkide yanlıştır dicem " ya basınca değer 128 oluyor (4Bytes))
DINPUT8.dll+30283 ise Z tuşuna ait olduğunu düşündüğüm (değer olarak 32768 veriyor)

Böyle bir örneklendirme öğrendim

public class DInputHelper
{
[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool WriteProcessMemory(
IntPtr hProcess,
IntPtr lpBaseAddress,
ref int lpBuffer,
int dwSize,
out IntPtr lpNumberOfBytesWritten);

private Process _process;
private IntPtr _addrZ;
private IntPtr _addrQuote;

public DInputHelper(string processName, int offsetQuote, int offsetZ)
{
_process = Process.GetProcessesByName(processName).FirstOrDefault();
if (_process == null)
throw new Exception("Process bulunamadı!");

var module = _process.Modules
.Cast<ProcessModule>()
.FirstOrDefault(m => m.ModuleName.ToLower() == "dinput8.dll");

if (module == null)
throw new Exception("Oyunda DINPUT8.dll bulunamadı!");

IntPtr baseAddress = module.BaseAddress;

// Offsetler
_addrQuote = IntPtr.Add(baseAddress, offsetQuote); // " tuşu
_addrZ = IntPtr.Add(baseAddress, offsetZ); // Z tuşu
}

private void PressKey(IntPtr addr)
{
if (addr == IntPtr.Zero) return;

int value = 32768; // Engine de gördüğün değer
WriteProcessMemory(_process.Handle, addr, ref value, 4, out _);
Thread.Sleep(30);
value = 0; // Key
WriteProcessMemory(_process.Handle, addr, ref value, 4, out _);
}

public void PressQuote() => PressKey(_addrQuote);

public void PressZ() => PressKey(_addrZ);

public void PressBoth()
{
PressQuote();
Thread.Sleep(30);
PressZ();
}
}



Ve mobdun ölümünden sonra tuş ataması için

private void Farm()
{
Logger.Log("FarmBot başlatıldı.");
bool isStopping = false;

DInputHelper dinput = null;
try
{
// Güncel offsetler: " = 0x30281, Z = 0x30283
dinput = new DInputHelper("Origins", 0x30281, 0x30283);
}
catch (Exception ex)
{
Logger.LogError(ex, "DInputHelper başlatılırken hata oluştu.");
}

... Sonrasında
_lastTargetVid = 0;

if (dinput != null)
{
try
{
for (int i = 0; i < 3; i++)
{
dinput.PressBoth();
Thread.Sleep(50);
}
}
catch (Exception exKey)
{
Logger.LogError(exKey, "Tuşlara basılırken hata oluştu.");
}
}
}




Desteklerinizi bekliyorum iyi formlar arkadaşlar, bunu öğretebilecek vasa mantğınıda çok sevinirim iyi geceler.
 
Adresin yanlış muhtemelen sağa sola gidip öyle dene
 
ilk olarak kullandığın dinput adresi yanlış dinput adresleri her pvp sunucuda aynıdır bunları sana birazdan atacağım ikinci olarak x64 uygulamadan x86 uygulamaya _process.Modules kullanarak x86 uygulamanın modüllerine erişemezsin CreateToolhelp32Snapshot TH32CS_SNAPMODULE32 kullanarak DINPUT8.dll modülbasesini alabilirsin bunu yaptıktan sonra mesajboxda kontrol ettir doğru modül adresi çektiğinden emin olduktan sonra aşağıdaki vericeğim kodları inceliyebilirsin elimde c# kodlar yok fakat mantığı anlamana yardımcı olacaktır
[CODE title="oto toplama"]state.processInfo.dinput8Base = GetModuleBase("DINPUT8.dll", state.processInfo.processId);
if (state.processInfo.dinput8Base != 0) {
state.processInfo.dinputz = state.processInfo.dinput8Base + 0x30280;
state.processInfo.bypassBackground = state.processInfo.dinput8Base + 0x30234;
state.processInfo.dinputctrl = state.processInfo.dinput8Base + 0x30274;
state.processInfo.dinputg = state.processInfo.dinput8Base + 0x3027a;
state.processInfo.dinput1 = state.processInfo.dinput8Base + 0x3025a;
state.processInfo.dinput2 = state.processInfo.dinput8Base + 0x3025a;
state.processInfo.dinput3 = state.processInfo.dinput8Base + 0x3025c;
state.processInfo.dinput4 = state.processInfo.dinput8Base + 0x3025c;
state.processInfo.dinputf1 = state.processInfo.dinput8Base + 0x30292;
state.processInfo.dinputf2 = state.processInfo.dinput8Base + 0x30294;
state.processInfo.dinputf3 = state.processInfo.dinput8Base + 0x30294;
state.processInfo.dinputf4 = state.processInfo.dinput8Base + 0x30296;
state.processInfo.dinputspace = state.processInfo.dinput8Base + 0x30290;
}

void OtoToplamaVoid(UIState& state) {
if (!state.processInfo.processHandle || state.processInfo.dinputz == 0) return;
try {
WriteInt(state.processInfo.dinputz, 32768, state.processInfo.processHandle);
std::this_thread::sleep_for(std::chrono::milliseconds(200));
WriteInt(state.processInfo.dinputz, 0, state.processInfo.processHandle);
} catch (...) {}
}

bool WriteInt(uintptr_t address, int value, HANDLE hProcess) {
if (!hProcess) return false;
return WriteProcessMemory(hProcess, reinterpret_cast<LPVOID>(address), &value, sizeof(int), nullptr);
}[/CODE]
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst