• Ну и что вы думаете? Мы взяли и создали свой собственный чат, с блекджеком и шлюхами, теперь все легенды в одном месте: даже те 1000 человек, которых мы забанили в старом чате 🫡 Будем публиковать там очень интересные подробности нового дизайна форума, oh yeah

    Вступай и становись легендой, пока это не стало поздно: жмякай на меня, ток не сильно(

Вопрос External Skinchanger - не могу получить Weapon List Entity

Начинающий
Статус
Оффлайн
Регистрация
6 Апр 2025
Сообщения
3
Реакции[?]
0
Поинты[?]
0
Доброго времени суток! 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);
            }
        }
    }
}
Буду признателен, если дадите правильное направление, или покажите работающий пример.
Запанее спасибо!
Все оффсеты обновлены, прочий функционал в чите работает
 
Начинающий
Статус
Оффлайн
Регистрация
17 Фев 2025
Сообщения
57
Реакции[?]
3
Поинты[?]
3K
Обнови оффсеты, и блять пойми что нахуй экстернал это онли реад, а ты блять ПИШЕШЬ нахуй в память это уже интернал блядб
И да LocalPlayer это LocalPlayerPawn, а не controller
 
Начинающий
Статус
Оффлайн
Регистрация
6 Апр 2025
Сообщения
3
Реакции[?]
0
Поинты[?]
0
Обнови оффсеты, и блять пойми что нахуй экстернал это онли реад, а ты блять ПИШЕШЬ нахуй в память это уже интернал блядб
И да LocalPlayer это LocalPlayerPawn, а не controller
Как я написал в посте, оффсеты обновлены. localPlayer - это просто название переменной, если посмотреть, то она обращается к
IntPtr.Add(clientBase, Offsets.dwLocalPlayerPawn)
 
Забаненный
Статус
Оффлайн
Регистрация
2 Сен 2023
Сообщения
75
Реакции[?]
5
Поинты[?]
5K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
1. C_BasePlayerPawn->CPlayer_WeaponServices->m_hMyWeapons
2. m_hMyWeapons это CUtlVector оружий, тебе нужно перебирать их все
Если тебе нужно изменить оружие которое в руке, тогда юзай m_hActiveWeapon
 
Начинающий
Статус
Оффлайн
Регистрация
6 Апр 2025
Сообщения
3
Реакции[?]
0
Поинты[?]
0
1. C_BasePlayerPawn->CPlayer_WeaponServices->m_hMyWeapons
2. m_hMyWeapons это CUtlVector оружий, тебе нужно перебирать их все
Если тебе нужно изменить оружие которое в руке, тогда юзай m_hActiveWeapon
Спасибо! Это даст толчок
Если есть пример реализации, то буду безумно благодарен
 
Сверху Снизу