diff --git a/gsc.cpp b/gsc.cpp index 5188296..2690d05 100644 --- a/gsc.cpp +++ b/gsc.cpp @@ -376,6 +376,7 @@ Scr_Method scriptMethods[] = { {"resetNextReliableTime" , gsc_player_resetNextReliableTime, 0}, {"setg_speed" , gsc_player_setg_speed , 0}, {"setg_gravity" , gsc_player_setg_gravity , 0}, + {"setweaponfiremeleedelay", gsc_player_setweaponfiremeleedelay, 0}, #if COD_VERSION < COD4_1_7 {"setmovespeedscale" , gsc_player_setmovespeedscale , 0}, {"ismantling" , gsc_player_ismantling , 0}, diff --git a/gsc_player.cpp b/gsc_player.cpp index 5ed2562..1c07dc2 100644 --- a/gsc_player.cpp +++ b/gsc_player.cpp @@ -687,6 +687,26 @@ void hook_player_g_speed(int client) { calc_client_speed(client); } +void gsc_player_setweaponfiremeleedelay(int id) { + int delay; + if ( ! stackGetParams("i", &delay)) { + printf("scriptengine> ERROR: gsc_player_setweaponfiremeleedelay(): param \"delay\"[1] has to be an int!\n"); + stackPushUndefined(); + return; + } + + if(delay < 0) { + printf("scriptengine> ERROR: gsc_player_setweaponfiremeleedelay(): param \"delay\"[1] must be equal or above zero!\n"); + stackPushUndefined(); + return; + } + + int state = PLAYERSTATE(id); + int* weapondelay = (int *)(state + 0x34); + *weapondelay = delay; + *(int *)(state + 216) = 11; +} + // entity functions (could be in own file, but atm not many pure entity functions) void gsc_entity_setalive(int id) { // as in isAlive? diff --git a/gsc_player.hpp b/gsc_player.hpp index 1b66c00..84c276e 100644 --- a/gsc_player.hpp +++ b/gsc_player.hpp @@ -57,6 +57,7 @@ void hook_player_g_speed(int client); void gsc_player_setmovespeedscale(int id); void gsc_player_setg_speed(int id); void gsc_player_setg_gravity(int id); +void gsc_player_setweaponfiremeleedelay(int id); // entity functions void gsc_entity_setalive(int id);