Skip to content

Commit

Permalink
Added php's IsMantling function
Browse files Browse the repository at this point in the history
Added isOnLadder function
  • Loading branch information
M-itch committed Apr 6, 2015
1 parent c3578f4 commit 8a6b613
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 57 deletions.
8 changes: 5 additions & 3 deletions gsc.cpp 100755 → 100644
Expand Up @@ -266,8 +266,8 @@ Scr_Function scriptFunctions[] = {
{"setweaponmeleedamage" , gsc_utils_setweaponmeleedamage , 0},
{"getweaponfiretime" , gsc_utils_getweaponfiretime , 0},
{"setweaponfiretime" , gsc_utils_setweaponfiretime , 0},
{"getweaponmeleetime" , gsc_utils_getweaponmeleetime , 0},
{"setweaponmeleetime" , gsc_utils_setweaponmeleetime , 0},
{"getweaponmeleetime" , gsc_utils_getweaponmeleetime , 0},
{"setweaponmeleetime" , gsc_utils_setweaponmeleetime , 0},
{"getweaponhitlocmultiplier" , gsc_utils_getweaponhitlocmultiplier , 0},
{"setweaponhitlocmultiplier" , gsc_utils_setweaponhitlocmultiplier , 0},
{"getloadedweapons" , gsc_utils_getloadedweapons , 0},
Expand Down Expand Up @@ -343,8 +343,10 @@ Scr_Method scriptMethods[] = {
{"clientuserinfochanged" , gsc_player_clientuserinfochanged, 0},
{"resetNextReliableTime" , gsc_player_resetNextReliableTime, 0},
//{"setfiretimescale" , gsc_player_setfiretimescale , 0},
#if COD_VERSION < COD4_1_7
#if COD_VERSION < COD4_1_7
{"setmovespeedscale" , gsc_player_setmovespeedscale , 0},
{"ismantling" , gsc_player_ismantling , 0},
{"isonladder" , gsc_player_isonladder , 0},
#endif
#endif

Expand Down
42 changes: 26 additions & 16 deletions gsc_player.cpp 100755 → 100644
Expand Up @@ -547,8 +547,7 @@ void gsc_player_connectionlesspacket(int id) {
stackReturnInt(1);
}

void gsc_player_resetNextReliableTime(int id)
{
void gsc_player_resetNextReliableTime(int id) {
#if COD_VERSION == COD2_1_0
int offset = 134412;
#else
Expand All @@ -559,11 +558,28 @@ void gsc_player_resetNextReliableTime(int id)
stackPushInt(0);
}

void gsc_player_ismantling(int id) {
int flags = PLAYERSTATE(id) + 0xc;

if(*(int*)flags & 4) //oi m8 im mantling
stackPushInt(1);
else
stackPushInt(0);
}

void gsc_player_isonladder(int id) {
int flags = PLAYERSTATE(id) + 0xc;

if(*(int*)flags & 32)
stackPushInt(1);
else
stackPushInt(0);
}

float player_movespeedscale[64] = {1};
//float player_firetimescale[64] = {1};

long double hook_player_setmovespeed(int client, int a2)
{
long double hook_player_setmovespeed(int client, int a2) {
float speed = calc_player_speed(client, a2);
int id = clientaddress_to_num(*(int*)client);

Expand All @@ -573,8 +589,7 @@ long double hook_player_setmovespeed(int client, int a2)
return speed;
}

int hook_player_setfiretime(int state, int a2)
{
int hook_player_setfiretime(int state, int a2) {
typedef int (*update_playerweapon_t)(int a1, int a2);
update_playerweapon_t update_playerweapon = (update_playerweapon_t)0x080EF1AC;
int result = update_playerweapon(state, a2);
Expand All @@ -587,8 +602,7 @@ int hook_player_setfiretime(int state, int a2)
return result;
}

int hook_player_setfiretimeoffhand(int state)
{
int hook_player_setfiretimeoffhand(int state) {
typedef int (*update_playerweapon_t)(int a1);
int* timetillnextshot = (int *)(state + 0x34);
update_playerweapon_t update_playerweapon = (update_playerweapon_t)0x080EFB12;
Expand All @@ -600,16 +614,14 @@ int hook_player_setfiretimeoffhand(int state)
typedef int (*update_reloadweapon_t)(int a1);
update_reloadweapon_t update_reloadweapon = (update_reloadweapon_t)0x080ED8B4;

int hook_player_setreloadtime(int state)
{
int hook_player_setreloadtime(int state) {
int result = update_reloadweapon(state);
int* reloadtime = (int *)(state + 0x38);
printf("setreloadtime: %d\n", *reloadtime);
return result;
}

int hook_player_setreloadtime2(int state)
{
int hook_player_setreloadtime2(int state) {
int result = update_reloadweapon(state);
int* reloadtime = (int *)(state + 0x38);
printf("setreloadtime2: %d\n", *reloadtime);
Expand Down Expand Up @@ -686,8 +698,7 @@ void gsc_entity_setbounds(int id) {
stackReturnInt(1);
}

void gsc_free_slot()
{
void gsc_free_slot() {
int id = 0;
if(!stackGetParamInt(0, &id)) {
printf("Param 0 needs to be an int for free_slot\n");
Expand All @@ -699,8 +710,7 @@ void gsc_free_slot()
stackPushUndefined();
}

void gsc_kick_slot()
{
void gsc_kick_slot() {
int id;
char* msg;
char* reason;
Expand Down
2 changes: 2 additions & 0 deletions gsc_player.hpp 100755 → 100644
Expand Up @@ -50,6 +50,8 @@ void gsc_player_renameclient(int id);
void gsc_player_outofbandprint(int id);
void gsc_player_connectionlesspacket(int id);
void gsc_player_resetNextReliableTime(int id);
void gsc_player_ismantling(int id);
void gsc_player_isonladder(int id);
long double hook_player_setmovespeed(int client, int a2);
int hook_player_setfiretime(int state, int a2);
int hook_player_setfiretimeoffhand(int state);
Expand Down
72 changes: 34 additions & 38 deletions gsc_utils.cpp 100755 → 100644
Expand Up @@ -803,8 +803,7 @@ void gsc_dlclose() {

char* defaultweapon_mp = (char*)malloc(32);

void gsc_utils_free()
{
void gsc_utils_free() {
free(defaultweapon_mp);
}

Expand Down Expand Up @@ -860,8 +859,7 @@ int weaponCount() {
#endif
}

int getWeapon(int index)
{
int getWeapon(int index) {
typedef int (*get_weapon_t)(int index);
#if COD_VERSION == COD2_1_0
get_weapon_t get_weapon = (get_weapon_t)0x080E9270;
Expand All @@ -876,8 +874,7 @@ int getWeapon(int index)
return get_weapon(index);
}

bool isValidWeaponId(int id)
{
bool isValidWeaponId(int id) {
int weps = weaponCount();
if(id >= weps || id < 0 || weps == 0)
return false;
Expand All @@ -886,41 +883,41 @@ bool isValidWeaponId(int id)
}

void gsc_utils_getweaponoffsetint(char* funcname, int offset) {
int id;
if ( ! stackGetParams("i", &id)) {
printf("scriptengine> wrongs args for: %s(id)\n", funcname);
stackPushInt(0);
return;
}
int id;
if ( ! stackGetParams("i", &id)) {
printf("scriptengine> wrongs args for: %s(id)\n", funcname);
stackPushInt(0);
return;
}

if(!isValidWeaponId(id)) {
printf("scriptengine> index out of bounds: %s(id)\n", funcname);
stackPushInt(0);
return;
}
if(!isValidWeaponId(id)) {
printf("scriptengine> index out of bounds: %s(id)\n", funcname);
stackPushInt(0);
return;
}

int value = *(int*)(getWeapon(id) + offset);
stackPushInt(value);
int value = *(int*)(getWeapon(id) + offset);
stackPushInt(value);
}

void gsc_utils_setweaponoffsetint(char* funcname, int offset) {
int id;
int value;
if ( ! stackGetParams("ii", &id, &value)) {
printf("scriptengine> wrongs args for: %s(id, value)\n", funcname);
stackPushInt(0);
return;
}
int id;
int value;
if ( ! stackGetParams("ii", &id, &value)) {
printf("scriptengine> wrongs args for: %s(id, value)\n", funcname);
stackPushInt(0);
return;
}

if(!isValidWeaponId(id)) {
printf("scriptengine> index out of bounds: %s(id, value)\n", funcname);
stackPushInt(0);
return;
}
if(!isValidWeaponId(id)) {
printf("scriptengine> index out of bounds: %s(id, value)\n", funcname);
stackPushInt(0);
return;
}

int* index = (int*)(getWeapon(id) + offset);
*index = value;
stackPushInt(1);
int* index = (int*)(getWeapon(id) + offset);
*index = value;
stackPushInt(1);
}

void gsc_utils_getweaponmaxammo() {
Expand Down Expand Up @@ -952,19 +949,18 @@ void gsc_utils_setweaponfiretime() {
}

void gsc_utils_getweaponmeleetime() {
gsc_utils_getweaponoffsetint("getweaponmeleetime", 532);
gsc_utils_getweaponoffsetint("getweaponmeleetime", 532);
}

void gsc_utils_setweaponmeleetime() {
gsc_utils_setweaponoffsetint("setweaponmeleetime", 532);
gsc_utils_setweaponoffsetint("setweaponmeleetime", 532);
}

char* hitlocs[] = {"none", "helmet", "head", "neck", "torso_upper", "torso_lower", "right_arm_upper",
"right_arm_lower", "right_hand", "left_arm_upper", "left_arm_lower", "left_hand", "right_leg_upper",
"right_leg_lower", "right_foot", "left_leg_upper", "left_leg_lower", "left_foot", "gun"};

int getHitLocOffset(char* hitloc)
{
int getHitLocOffset(char* hitloc) {
int offset = 0; // none
for (int i=0;i<19;i++) { // prevent out of bound
if(strcmp(hitlocs[i], hitloc) == 0) {
Expand Down

0 comments on commit 8a6b613

Please sign in to comment.