Продвинутые техники

Dragokas

Добрая душа
Сообщения
229
Реакции
213
8. Продвинутые техники:
Объектно-ориентированное API

Методмапы (MethodMaps)
Структуры (Enum Structs)
Нативы и форварды (Natives and Forwards)
  • Создание нативов - Вкратце, это функция, которую создаёт ваш плагин, чтобы другие плагины имени возможность нею воспользоваться.
  • Создание форвардов - Вкратце, это событие, которое создаёт ваш плагин, чтобы оповещать другие плагины, когда что-то происходит.
Препроцессорные директивы компилятора

Лучи трассировки
  • ToDo (планируется).

Пропы (Prop_Data, Prop_Send) - описание различных свойств сущностей

Коллизии
Установка группы коллизии:
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);
    }
}

Навигация

VTables - Используются для вызовов SDKCall, Detour (перехвата функций) и патчей памяти.​
GameData сигнатуры - Используются для SDKCall вызовов, перехватов внутренних функций игровых библиотек (Detours) и патчей памяти.​
Патч (модификация) памяти
Чтение памяти в консоль
SDKCall вызовы
  • Вызов функций - Вы можете вызывать внутри-игровые функции, чтобы создавать уникальные вещи.
Хуки SDKHook (Расширение теперь является частью SourceMod):​
  • Расширение SDKHooks - Множество полезных функций и форвардов, например хук OnTakeDamage (получение урона), PreThink сущности (вызывается в момент "обдумывания" физических и др. процессов сущности) и форварды OnEntityCreated/Destroyed (вызываются перед созданием/уничтожением сущности) и т.д.
  • Обновлённый список и прототипы колбеков всегда доступны в инклуд файле.
Перехват или "обход" функций (Detouring)
  • Расширение DHooks - Создаёт сторонние хуки игровых функций для их блокировки, чтения или изменения. Также полезен для создания новых событий и форвардов.
VScript
 
Последнее редактирование:

Dragokas

Добрая душа
Сообщения
229
Реакции
213
Техническая документация по Left 4 Dead (pdf).
 

Вложения

  • ai_systems_of_l4d_mike_booth.pdf
    4 МБ · Просмотры: 24
  • gdc2010_vlachos_l4d2wounds.pdf
    4.3 МБ · Просмотры: 4
  • GDC10_ShaderTechniquesL4D2.pdf
    10.3 МБ · Просмотры: 5
Сверху Снизу