Skip to content

Commit

Permalink
add bulletHitEffect()
Browse files Browse the repository at this point in the history
  • Loading branch information
voron00 committed Oct 24, 2017
1 parent 1b38e9d commit 76cdc78
Show file tree
Hide file tree
Showing 4 changed files with 283 additions and 0 deletions.
257 changes: 257 additions & 0 deletions functions.hpp
Expand Up @@ -421,6 +421,236 @@ typedef struct scr_method_s
int developer;
} scr_method_t;

typedef enum
{
EV_NONE = 0,
EV_FOOTSTEP_RUN_DEFAULT,
EV_FOOTSTEP_RUN_BARK,
EV_FOOTSTEP_RUN_BRICK,
EV_FOOTSTEP_RUN_CARPET,
EV_FOOTSTEP_RUN_CLOTH,
EV_FOOTSTEP_RUN_CONCRETE,
EV_FOOTSTEP_RUN_DIRT,
EV_FOOTSTEP_RUN_FLESH,
EV_FOOTSTEP_RUN_FOLIAGE,
EV_FOOTSTEP_RUN_GLASS,
EV_FOOTSTEP_RUN_GRASS,
EV_FOOTSTEP_RUN_GRAVEL,
EV_FOOTSTEP_RUN_ICE,
EV_FOOTSTEP_RUN_METAL,
EV_FOOTSTEP_RUN_MUD,
EV_FOOTSTEP_RUN_PAPER,
EV_FOOTSTEP_RUN_PLASTER,
EV_FOOTSTEP_RUN_ROCK,
EV_FOOTSTEP_RUN_SAND,
EV_FOOTSTEP_RUN_SNOW,
EV_FOOTSTEP_RUN_WATER,
EV_FOOTSTEP_RUN_WOOD,
EV_FOOTSTEP_RUN_ASPHALT,
EV_FOOTSTEP_WALK_DEFAULT,
EV_FOOTSTEP_WALK_BARK,
EV_FOOTSTEP_WALK_BRICK,
EV_FOOTSTEP_WALK_CARPET,
EV_FOOTSTEP_WALK_CLOTH,
EV_FOOTSTEP_WALK_CONCRETE,
EV_FOOTSTEP_WALK_DIRT,
EV_FOOTSTEP_WALK_FLESH,
EV_FOOTSTEP_WALK_FOLIAGE,
EV_FOOTSTEP_WALK_GLASS,
EV_FOOTSTEP_WALK_GRASS,
EV_FOOTSTEP_WALK_GRAVEL,
EV_FOOTSTEP_WALK_ICE,
EV_FOOTSTEP_WALK_METAL,
EV_FOOTSTEP_WALK_MUD,
EV_FOOTSTEP_WALK_PAPER,
EV_FOOTSTEP_WALK_PLASTER,
EV_FOOTSTEP_WALK_ROCK,
EV_FOOTSTEP_WALK_SAND,
EV_FOOTSTEP_WALK_SNOW,
EV_FOOTSTEP_WALK_WATER,
EV_FOOTSTEP_WALK_WOOD,
EV_FOOTSTEP_WALK_ASPHALT,
EV_FOOTSTEP_PRONE_DEFAULT,
EV_FOOTSTEP_PRONE_BARK,
EV_FOOTSTEP_PRONE_BRICK,
EV_FOOTSTEP_PRONE_CARPET,
EV_FOOTSTEP_PRONE_CLOTH,
EV_FOOTSTEP_PRONE_CONCRETE,
EV_FOOTSTEP_PRONE_DIRT,
EV_FOOTSTEP_PRONE_FLESH,
EV_FOOTSTEP_PRONE_FOLIAGE,
EV_FOOTSTEP_PRONE_GLASS,
EV_FOOTSTEP_PRONE_GRASS,
EV_FOOTSTEP_PRONE_GRAVEL,
EV_FOOTSTEP_PRONE_ICE,
EV_FOOTSTEP_PRONE_METAL,
EV_FOOTSTEP_PRONE_MUD,
EV_FOOTSTEP_PRONE_PAPER,
EV_FOOTSTEP_PRONE_PLASTER,
EV_FOOTSTEP_PRONE_ROCK,
EV_FOOTSTEP_PRONE_SAND,
EV_FOOTSTEP_PRONE_SNOW,
EV_FOOTSTEP_PRONE_WATER,
EV_FOOTSTEP_PRONE_WOOD,
EV_FOOTSTEP_PRONE_ASPHALT,
EV_JUMP_DEFAULT,
EV_JUMP_BARK,
EV_JUMP_BRICK,
EV_JUMP_CARPET,
EV_JUMP_CLOTH,
EV_JUMP_CONCRETE,
EV_JUMP_DIRT,
EV_JUMP_FLESH,
EV_JUMP_FOLIAGE,
EV_JUMP_GLASS,
EV_JUMP_GRASS,
EV_JUMP_GRAVEL,
EV_JUMP_ICE,
EV_JUMP_METAL,
EV_JUMP_MUD,
EV_JUMP_PAPER,
EV_JUMP_PLASTER,
EV_JUMP_ROCK,
EV_JUMP_SAND,
EV_JUMP_SNOW,
EV_JUMP_WATER,
EV_JUMP_WOOD,
EV_JUMP_ASPHALT,
EV_LANDING_DEFAULT,
EV_LANDING_BARK,
EV_LANDING_BRICK,
EV_LANDING_CARPET,
EV_LANDING_CLOTH,
EV_LANDING_CONCRETE,
EV_LANDING_DIRT,
EV_LANDING_FLESH,
EV_LANDING_FOLIAGE,
EV_LANDING_GLASS,
EV_LANDING_GRASS,
EV_LANDING_GRAVEL,
EV_LANDING_ICE,
EV_LANDING_METAL,
EV_LANDING_MUD,
EV_LANDING_PAPER,
EV_LANDING_PLASTER,
EV_LANDING_ROCK,
EV_LANDING_SAND,
EV_LANDING_SNOW,
EV_LANDING_WATER,
EV_LANDING_WOOD,
EV_LANDING_ASPHALT,
EV_LANDING_PAIN_DEFAULT,
EV_LANDING_PAIN_BARK,
EV_LANDING_PAIN_BRICK,
EV_LANDING_PAIN_CARPET,
EV_LANDING_PAIN_CLOTH,
EV_LANDING_PAIN_CONCRETE,
EV_LANDING_PAIN_DIRT,
EV_LANDING_PAIN_FLESH,
EV_LANDING_PAIN_FOLIAGE,
EV_LANDING_PAIN_GLASS,
EV_LANDING_PAIN_GRASS,
EV_LANDING_PAIN_GRAVEL,
EV_LANDING_PAIN_ICE,
EV_LANDING_PAIN_METAL,
EV_LANDING_PAIN_MUD,
EV_LANDING_PAIN_PAPER,
EV_LANDING_PAIN_PLASTER,
EV_LANDING_PAIN_ROCK,
EV_LANDING_PAIN_SAND,
EV_LANDING_PAIN_SNOW,
EV_LANDING_PAIN_WATER,
EV_LANDING_PAIN_WOOD,
EV_LANDING_PAIN_ASPHALT,
EV_FOLIAGE_SOUND,
EV_STANCE_FORCE_STAND,
EV_STANCE_FORCE_CROUCH,
EV_STANCE_FORCE_PRONE,
EV_STEP_VIEW,
EV_ITEM_PICKUP,
EV_AMMO_PICKUP,
EV_NOAMMO,
EV_EMPTYCLIP,
EV_EMPTY_OFFHAND,
EV_RESET_ADS,
EV_RELOAD,
EV_RELOAD_FROM_EMPTY,
EV_RELOAD_START,
EV_RELOAD_END,
EV_RAISE_WEAPON,
EV_PUTAWAY_WEAPON,
EV_WEAPON_ALT,
EV_PULLBACK_WEAPON,
EV_FIRE_WEAPON,
EV_FIRE_WEAPONB,
EV_FIRE_WEAPON_LASTSHOT,
EV_RECHAMBER_WEAPON,
EV_EJECT_BRASS,
EV_MELEE_SWIPE,
EV_FIRE_MELEE,
EV_PREP_OFFHAND,
EV_USE_OFFHAND,
EV_SWITCH_OFFHAND,
EV_BINOCULAR_ENTER,
EV_BINOCULAR_EXIT,
EV_BINOCULAR_FIRE,
EV_BINOCULAR_RELEASE,
EV_BINOCULAR_DROP,
EV_MELEE_HIT,
EV_MELEE_MISS,
EV_FIRE_WEAPON_MG42,
EV_FIRE_QUADBARREL_1,
EV_FIRE_QUADBARREL_2,
EV_BULLET_TRACER,
EV_SOUND_ALIAS,
EV_SOUND_ALIAS_AS_MASTER,
EV_BULLET_HIT_SMALL,
EV_BULLET_HIT_LARGE,
EV_SHOTGUN_HIT,
EV_BULLET_HIT_AP,
EV_BULLET_HIT_CLIENT_SMALL,
EV_BULLET_HIT_CLIENT_LARGE,
EV_GRENADE_BOUNCE,
EV_GRENADE_EXPLODE,
EV_ROCKET_EXPLODE,
EV_ROCKET_EXPLODE_NOMARKS,
EV_CUSTOM_EXPLODE,
EV_CUSTOM_EXPLODE_NOMARKS,
EV_BULLET,
EV_PLAY_FX,
EV_PLAY_FX_ON_TAG,
EV_EARTHQUAKE,
EV_GRENADE_SUICIDE,
EV_OBITUARY
} entity_event_t;

typedef enum
{
TRACE_HITTYPE_NONE = 0x0,
TRACE_HITTYPE_ENTITY = 0x1,
TRACE_HITTYPE_DYNENT_MODEL = 0x2,
TRACE_HITTYPE_DYNENT_BRUSH = 0x3,
TRACE_HITTYPE_GLASS = 0x4
} TraceHitType;

typedef struct trace_s
{
float fraction;
vec3_t normal;
int surfaceFlags;
int contents;
const char *material;
TraceHitType hitType;
u_int16_t hitId;
u_int16_t modelIndex;
u_int16_t partName;
u_int16_t partGroup;
byte allsolid;
byte startsolid;
byte walkable;
byte padding;
} trace_t;

typedef xfunction_t (*Scr_GetFunction_t)(const char** v_function, int* v_developer);
#if COD_VERSION == COD2_1_0
static const Scr_GetFunction_t Scr_GetFunction = (Scr_GetFunction_t)0x08115824;
Expand Down Expand Up @@ -943,4 +1173,31 @@ static const Scr_AddArray_t Scr_AddArray = (Scr_AddArray_t)0x08085298;
static const Scr_AddArray_t Scr_AddArray = (Scr_AddArray_t)0x08085364;
#endif

typedef int (*G_TempEntity_t)(vec3_t origin, int event);
#if COD_VERSION == COD2_1_0
static const G_TempEntity_t G_TempEntity = (G_TempEntity_t)0x0811CB34;
#elif COD_VERSION == COD2_1_2
static const G_TempEntity_t G_TempEntity = (G_TempEntity_t)0x0811EE68;
#elif COD_VERSION == COD2_1_3
static const G_TempEntity_t G_TempEntity = (G_TempEntity_t)0x0811EFC4;
#endif

typedef int (*DirToByte_t)(vec3_t dir);
#if COD_VERSION == COD2_1_0
static const DirToByte_t DirToByte = (DirToByte_t)0x080A1C2A;
#elif COD_VERSION == COD2_1_2
static const DirToByte_t DirToByte = (DirToByte_t)0x080A3E4A;
#elif COD_VERSION == COD2_1_3
static const DirToByte_t DirToByte = (DirToByte_t)0x080A3F8E;
#endif

typedef void (*G_LocationalTrace_t)(trace_t *results, const vec3_t start, const vec3_t end, int passEntityNum, int contentmask);
#if COD_VERSION == COD2_1_0
static const G_LocationalTrace_t G_LocationalTrace = (G_LocationalTrace_t)0x08108134;
#elif COD_VERSION == COD2_1_2
static const G_LocationalTrace_t G_LocationalTrace = (G_LocationalTrace_t)0x0810A470;
#elif COD_VERSION == COD2_1_3
static const G_LocationalTrace_t G_LocationalTrace = (G_LocationalTrace_t)0x0810A5CC;
#endif

#endif
1 change: 1 addition & 0 deletions gsc.cpp
Expand Up @@ -232,6 +232,7 @@ scr_function_t scriptFunctions[] =
{"sqrt", gsc_utils_sqrt, 0},
{"sqrtInv", gsc_utils_sqrtInv, 0},
{"getlasttestclientnumber", gsc_utils_getlasttestclientnumber, 0},
{"bullethiteffect", gsc_utils_bullethiteffect, 0},
#endif

#if COMPILE_WEAPONS == 1
Expand Down
24 changes: 24 additions & 0 deletions gsc_utils.cpp
Expand Up @@ -760,4 +760,28 @@ void gsc_utils_getlasttestclientnumber()
stackPushInt(*(int *)offset);
}

void gsc_utils_bullethiteffect()
{
vec3_t origin;
vec3_t normal;

if ( ! stackGetParams("vv", &origin, &normal))
{
stackError("gsc_utils_bullethiteffect() one or more arguments is undefined or has a wrong type");
stackPushUndefined();
return;
}

int entity = G_TempEntity(origin, EV_SHOTGUN_HIT);
*(int *)(entity + 160) = DirToByte(normal);

trace_t trace;

vec3_t end_origin = { origin[0] - (normal[0] * 10), origin[1] - (normal[1] * 10), origin[2] - (normal[2] * 10) };
G_LocationalTrace(&trace, origin, end_origin, 1023, 1);
*(int *)(entity + 136) = trace.surfaceFlags >> 20;

stackPushInt(1);
}

#endif
1 change: 1 addition & 0 deletions gsc_utils.hpp
Expand Up @@ -38,6 +38,7 @@ void gsc_get_configstring();
void gsc_set_configstring();
void gsc_make_localized_string();
void gsc_utils_getlasttestclientnumber();
void gsc_utils_bullethiteffect();
void gsc_utils_fopen();
void gsc_utils_fread();
void gsc_utils_fwrite();
Expand Down

0 comments on commit 76cdc78

Please sign in to comment.