ReGameDll вопросы к профессионалам

Сообщения
1,041
Реакции
206
Предупреждения
1
Помог
6 раз(а)
Здравствуйте, решил уйти в глубь и поковырять исходники regamedll для полноценного понимания.
Пока что слишком далеко не захожу, но уже есть вопросы.
C++:
// These are caps bits to indicate what an object's capabilities (currently used for save/restore and level transitions)
#define FCAP_CUSTOMSAVE         0x00000001
#define FCAP_ACROSS_TRANSITION  0x00000002 // Should transfer between transitions
#define FCAP_MUST_SPAWN         0x00000004 // Spawn after restore
#define FCAP_DONT_SAVE          0x80000000 // Don't save this
#define FCAP_IMPULSE_USE        0x00000008 // Can be used by the player
#define FCAP_CONTINUOUS_USE     0x00000010 // Can be used by the player
#define FCAP_ONOFF_USE          0x00000020 // Can be used by the player
#define FCAP_DIRECTIONAL_USE    0x00000040 // Player sends +/- 1 when using (currently only tracktrains)
#define FCAP_MASTER             0x00000080 // Can be used to "master" other entities (like multisource)
#define FCAP_MUST_RESET         0x00000100 // Should reset on the new round
#define FCAP_MUST_RELEASE       0x00000200 // Should release on the new round

// UNDONE: This will ignore transition volumes (trigger_transition), but not the PVS!!!
#define FCAP_FORCE_TRANSITION   0x00000080 // ALWAYS goes across transitions

// for Classify
#define CLASS_NONE              0
#define CLASS_MACHINE           1
#define CLASS_PLAYER            2
#define CLASS_HUMAN_PASSIVE     3
#define CLASS_HUMAN_MILITARY    4
#define CLASS_ALIEN_MILITARY    5
#define CLASS_ALIEN_PASSIVE     6
#define CLASS_ALIEN_MONSTER     7
#define CLASS_ALIEN_PREY        8
#define CLASS_ALIEN_PREDATOR    9
#define CLASS_INSECT            10
#define CLASS_PLAYER_ALLY       11
#define CLASS_PLAYER_BIOWEAPON  12 // hornets and snarks.launched by players
#define CLASS_ALIEN_BIOWEAPON   13 // hornets and snarks.launched by the alien menace
#define CLASS_VEHICLE           14
#define CLASS_BARNACLE          99 // special because no one pays attention to it, and it eats a wide cross-section of creatures.

#define SF_NORESPAWN            (1<<30) // set this bit on guns and stuff that should never respawn.

#define DMG_GENERIC             0       // generic damage was done
#define DMG_CRUSH               (1<<0)  // crushed by falling or moving object
#define DMG_BULLET              (1<<1)  // shot // УРОН ОТ ПУЛЬ
#define DMG_SLASH               (1<<2)  // cut, clawed, stabbed // УРОН ОТ НОЖА?
#define DMG_BURN                (1<<3)  // heat burned // УРОН ОТ ОГНЯ
#define DMG_FREEZE              (1<<4)  // frozen // УРОН ОТ ЗАМОРОЗКИ?!
#define DMG_FALL                (1<<5)  // fell too far
#define DMG_BLAST               (1<<6)  // explosive blast damage // БЛАСТ? ЭТО ЧТО BIG FUCKING GUN??
#define DMG_CLUB                (1<<7)  // crowbar, punch, headbutt
#define DMG_SHOCK               (1<<8)  // electric shock
#define DMG_SONIC               (1<<9)  // sound pulse shockwave
#define DMG_ENERGYBEAM          (1<<10) // laser or other high energy beam
#define DMG_NEVERGIB            (1<<12) // with this bit OR'd in, no damage type will be able to gib victims upon death
#define DMG_ALWAYSGIB           (1<<13) // with this bit OR'd in, any damage type can be made to gib victims upon death // ТРУП НАНОСИТ УРОН???
#define DMG_DROWN               (1<<14) // Drowning

// time-based damage
#define DMG_TIMEBASED           (~(0x3FFF)) // mask for time-based damage

#define DMG_PARALYZE            (1<<15) // slows affected creature down
#define DMG_NERVEGAS            (1<<16) // nerve toxins, very bad
#define DMG_POISON              (1<<17) // blood poisioning // ОТРАВЛЕНИЕ?!
#define DMG_RADIATION           (1<<18) // radiation exposure // РАДИАЦИЯ?!
#define DMG_DROWNRECOVER        (1<<19) // drowning recovery
#define DMG_ACID                (1<<20) // toxic chemicals or acid burns
#define DMG_SLOWBURN            (1<<21) // in an oven
#define DMG_SLOWFREEZE          (1<<22) // in a subzero freezer
#define DMG_MORTAR              (1<<23) // Hit by air raid (done to distinguish grenade from mortar)
#define DMG_EXPLOSION           (1<<24) // Вроде как это урон от взрыва

// These are the damage types that are allowed to gib corpses
#define DMG_GIB_CORPSE         (DMG_CRUSH | DMG_FALL | DMG_BLAST | DMG_SONIC | DMG_CLUB) // МОЖНО РАЗОРВАТЬ ТРУП ОТ ВЗРЫВА??

// These are the damage types that have client hud art
#define DMG_SHOWNHUD           (DMG_POISON | DMG_ACID | DMG_FREEZE | DMG_SLOWFREEZE | DMG_DROWN | DMG_BURN | DMG_SLOWBURN | DMG_NERVEGAS | DMG_RADIATION | DMG_SHOCK)

// When calling KILLED(), a value that governs gib behavior is expected to be
// one of these three values
#define GIB_NORMAL             0 // Gib if entity was overkilled
#define GIB_NEVER              1 // Never gib, no matter how much death damage is done ( freezing, etc )
#define GIB_ALWAYS             2 // Always gib ( Houndeye Shock, Barnacle Bite )
#define GIB_HEALTH_VALUE      -30
Имеются следующие директивы в исходнике, пару штук уже давно знакомы, а большинство встретил впервые.
Кто может объяснить толково каждую или хотя объяснить примерно как работает каждая из них?

За что отвечают FCAP и CLASS, что за типы DMG?
18 Ноя 2022
C++:
enum decal_e
{
    DECAL_GUNSHOT1 = 0,
    DECAL_GUNSHOT2,
    DECAL_GUNSHOT3,
    DECAL_GUNSHOT4,
    DECAL_GUNSHOT5,
    DECAL_LAMBDA1,
    DECAL_LAMBDA2,
    DECAL_LAMBDA3,
    DECAL_LAMBDA4,
    DECAL_LAMBDA5,
    DECAL_LAMBDA6,
    DECAL_SCORCH1,
    DECAL_SCORCH2,
    DECAL_BLOOD1,
    DECAL_BLOOD2,
    DECAL_BLOOD3,
    DECAL_BLOOD4,
    DECAL_BLOOD5,
    DECAL_BLOOD6,
    DECAL_YBLOOD1,
    DECAL_YBLOOD2,
    DECAL_YBLOOD3,
    DECAL_YBLOOD4,
    DECAL_YBLOOD5,
    DECAL_YBLOOD6,
    DECAL_GLASSBREAK1,
    DECAL_GLASSBREAK2,
    DECAL_GLASSBREAK3,
    DECAL_BIGSHOT1, // что за биг шоты?
    DECAL_BIGSHOT2,
    DECAL_BIGSHOT3,
    DECAL_BIGSHOT4,
    DECAL_BIGSHOT5,
    DECAL_SPIT1,
    DECAL_SPIT2,
    DECAL_BPROOF1,      // Bulletproof glass decal
    DECAL_GARGSTOMP1,   // Gargantua stomp crack // Что за гаргантюа ??? 
    DECAL_SMALLSCORCH1, // Small scorch mark // Что за следы ожогов??
    DECAL_SMALLSCORCH2, // Small scorch mark
    DECAL_SMALLSCORCH3, // Small scorch mark
    DECAL_MOMMABIRTH,   // Big momma birth splatter // Чего какие еще больше мамины родовые брызги????? 
    DECAL_MOMMASPLAT,
    DECAL_END
};
My English Is Bad(
 

hajimura

Е777КХ05
Сообщения
290
Реакции
228
Помог
6 раз(а)
1. FCAP_ – директивы, обозначающие свойства юзабельных энтити. Например: FCAP_CONTINUOUS_USE задает энтити установку включаться-выключаться при длительном использовании +use
2. DMG_ – директивы, обозначающие типы наносимого timebased урона. Например: DMG_POISON – урон от яда, DMG_RADIATION – и так понятно, что радиация
3. CLASS_ задается внутри каждого класса энтити в регеймдлл индивидуально. Используется исключительно для определения класснейма энтити, грубо говоря, когда в коде идет работа с родительским классом CBaseEntity. В CBasePlayer задается CLASS_HUMAN, в CHostage – CLASS_HUMAN_PASSIVE и т.д.
 
Сообщения
1,041
Реакции
206
Предупреждения
1
Помог
6 раз(а)
hajimura, А если например создать объект и присвоить ей CLASS_HUMAN_PASSIVE то можно ведь сделать объект который будет бегать за тобой и стрелять?
 

hajimura

Е777КХ05
Сообщения
290
Реакции
228
Помог
6 раз(а)
BiZaJe, нет, немного не в ту сторону мысль развиваешь. Значение CLASS_HUMAN_PASSIVE присваивается классу CHostage, определяющий их, именно как заложников. Вот тебе код, где используется это значение: https://github.com/s1lentq/ReGameDL...148eb87659165/regamedll/dlls/player.cpp#L7810. Здесь функция отвечает за status bar, выводимая игроку при наведении на конкретную энтити
Код:
else if (pEntity->Classify() == CLASS_HUMAN_PASSIVE)
В данном случае условие проверяет, является ли энтити, на которую мы навели прицел, заложником
 
Сообщения
1,041
Реакции
206
Предупреждения
1
Помог
6 раз(а)
hajimura, А вообще возможно делать манипуляции CLASS на стороне amxx?
 
Сообщения
1,041
Реакции
206
Предупреждения
1
Помог
6 раз(а)
hajimura, Так это понял, а со свойствами FCAP?
Ведь это свойство объекта
 
Сообщения
1,041
Реакции
206
Предупреждения
1
Помог
6 раз(а)
fl0wer, Так можно или нет?)
Выше сказали, что нет
 
Сообщения
1,041
Реакции
206
Предупреждения
1
Помог
6 раз(а)
hajimura, Вот теперь картинка сложилась и предположения бегающего со стрельбой объекта были правильные
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу