Dragokas
Добрая душа
- Сообщения
- 229
- Реакции
- 213
8. Продвинутые техники:
Управление твёрдостью объектов (solid):
Объектно-ориентированное API
Методмапы (MethodMaps)
Структуры (Enum Structs)
Нативы и форварды (Natives and Forwards)
- Создание нативов - Вкратце, это функция, которую создаёт ваш плагин, чтобы другие плагины имени возможность нею воспользоваться.
- Создание форвардов - Вкратце, это событие, которое создаёт ваш плагин, чтобы оповещать другие плагины, когда что-то происходит.
Препроцессорные директивы компилятора
- Ссылка на русском - Информацию можно почерпнуть отсюда.
Лучи трассировки
- ToDo (планируется).
Пропы (Prop_Data, Prop_Send) - описание различных свойств сущностей
- ToDo (планируется).
- Различия между m_vecOrigin [оффсет] и m_vecAbsOrigin [координаты] от Bacardi
Коллизии
- ToDo.
- Collision groups
- Physics Entities on Server & Client - Valve Developer Community
- CollisionHook - AlliedModders (показывает кто и с кем столкнулся, в отличие от SDKHook_ShouldCollide, которая не дает такую инфу)
C-подобный:
SetEntProp(ent, Prop_Send, "m_CollisionGroup", COLLISION_GROUP_PLAYER);
Управление твёрдостью объектов (solid):
C-подобный:
stock void SetEntitySolid(int entity, bool doSolid)
{
#define FSOLID_NOT_SOLID 0x0004
#define SOLID_NONE 0
#define SOLID_VPHYSICS 6
int m_nSolidType = GetEntProp(entity, Prop_Data, "m_nSolidType", 1);
int m_usSolidFlags = GetEntProp(entity, Prop_Data, "m_usSolidFlags", 2);
if (doSolid) {
if (m_nSolidType == 0)
SetEntProp(entity, Prop_Send, "m_nSolidType", SOLID_VPHYSICS, 1);
if (m_usSolidFlags & FSOLID_NOT_SOLID)
SetEntProp(entity, Prop_Send, "m_usSolidFlags", m_usSolidFlags & ~FSOLID_NOT_SOLID, 2);
}
else {
if (m_nSolidType != 0)
SetEntProp(entity, Prop_Send, "m_nSolidType", SOLID_NONE, 1);
if (m_usSolidFlags & FSOLID_NOT_SOLID == 0)
SetEntProp(entity, Prop_Send, "m_usSolidFlags", m_usSolidFlags | FSOLID_NOT_SOLID, 2);
}
}
Навигация
- ToDo.
- Navigation Meshes
- Navigation Mesh Commands
- Работа с навигационной сеткой (на русском)
VTables - Используются для вызовов SDKCall, Detour (перехвата функций) и патчей памяти.
GameData сигнатуры - Используются для SDKCall вызовов, перехватов внутренних функций игровых библиотек (Detours) и патчей памяти.
- Структура GameData файлов (SDKTools wiki)
- Сканирование сигнатур (AlliedMods wiki)
- Больше инфы (AlliedMods wiki)
- Сообщение, где я описал процесс поиска сигнатуры
- YouTube - Руководство по поиску сигнатур SourceMod от Scag.
Патч (модификация) памяти
- Работа с памятью в SourcePawn на англ. (Русский перевод)
- Memory Extended [INC/WINAPI/Внедрение DLL через SourcePawn] от Rostu
- Memory Extended форк от Dragokas (развитие проекта)
- Source Scramble от nosoop
- SM-Memory от Scag
- SM Reverse Engineering - Руководство по созданию сигнатур | Видео-версия от Scag
- Hooking without extension от BHaType
Чтение памяти в консоль
- Gamedata Offset Tester (оригинал от SilverShot) (форк от Dragokas)
- Gamedata Sig Tester от SilverShot
SDKCall вызовы
- Вызов функций - Вы можете вызывать внутри-игровые функции, чтобы создавать уникальные вещи.
Хуки SDKHook (Расширение теперь является частью SourceMod):
- Расширение SDKHooks - Множество полезных функций и форвардов, например хук OnTakeDamage (получение урона), PreThink сущности (вызывается в момент "обдумывания" физических и др. процессов сущности) и форварды OnEntityCreated/Destroyed (вызываются перед созданием/уничтожением сущности) и т.д.
- Обновлённый список и прототипы колбеков всегда доступны в инклуд файле.
Перехват или "обход" функций (Detouring)
- Расширение DHooks - Создаёт сторонние хуки игровых функций для их блокировки, чтения или изменения. Также полезен для создания новых событий и форвардов.
VScript
Последнее редактирование: