-
Автор темы
- #1
Доброго времени суток! 2й день пытаюсь бороться с созданием external скинченджера. Смотрел примеры с англоязычного форума, и здесь, но ничего не подходит, и не рабоает. Вот мой код, который отвечает исключительно за скинченджер (решил начать с базы, зашел в игру, купил AWP, пытаюсь на него применить скин Dlore). Код ломается с ошибкой "Failed to retrieve weapon list entry"
Вот код:
Буду признателен, если дадите правильное направление, или покажите работающий пример.
Запанее спасибо!
Все оффсеты обновлены, прочий функционал в чите работает
Вот код:
SkinChanger:
using System;
using System.Windows.Forms;
namespace Esoteriq
{
public class SkinchangerController
{
private readonly Driver driver;
private readonly IntPtr clientBase;
public SkinchangerController(Driver driver, IntPtr clientBase)
{
this.driver = driver;
this.clientBase = clientBase;
}
public void ChangeSkin()
{
try
{
IntPtr localPlayer = driver.ReadMemory<IntPtr>(IntPtr.Add(clientBase, Offsets.dwLocalPlayerPawn));
if (localPlayer == IntPtr.Zero)
{
MessageBox.Show("Local player not found.", "Skinchanger", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
int weaponHandle = driver.ReadMemory<int>(IntPtr.Add(localPlayer, SkinChangerOffsets.m_hMyWeapons));
if (weaponHandle == 0)
{
MessageBox.Show("No weapon handle found.", "Skinchanger", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
IntPtr dwEntityList = driver.ReadMemory<IntPtr>(IntPtr.Add(clientBase, Offsets.dwEntityList));
if (dwEntityList == IntPtr.Zero)
{
MessageBox.Show("Entity list not found.", "Skinchanger", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
int index = (weaponHandle & 0x7FFF) >> 9;
IntPtr weaponListEntry = driver.ReadMemory<IntPtr>(IntPtr.Add(dwEntityList, (0x8 * index) + 16));
if (weaponListEntry == IntPtr.Zero)
{
MessageBox.Show("Failed to retrieve weapon list entry.", "Skinchanger", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
float fallbackWear = 0.0f;
int fallbackPaintKit = 344;
int fallbackSeed = 1;
int fallbackStatTrak = 1337;
driver.WriteMemory<float>(IntPtr.Add(weaponListEntry, SkinChangerOffsets.m_flFallbackWear), fallbackWear);
driver.WriteMemory<int>(IntPtr.Add(weaponListEntry, SkinChangerOffsets.m_nFallbackPaintKit), fallbackPaintKit);
driver.WriteMemory<int>(IntPtr.Add(weaponListEntry, SkinChangerOffsets.m_nFallbackSeed), fallbackSeed);
driver.WriteMemory<int>(IntPtr.Add(weaponListEntry, SkinChangerOffsets.m_nFallbackStatTrak), fallbackStatTrak);
driver.WriteMemory<int>(IntPtr.Add(weaponListEntry, SkinChangerOffsets.m_iItemIDHigh), -1);
MessageBox.Show(
$"Skin changed successfully!",
"Skinchanger", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show("Skin change failed: " + ex.Message, "Skinchanger", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
Запанее спасибо!
Все оффсеты обновлены, прочий функционал в чите работает