Here is disablePickup()
Usage example:
PHP Code:
self disablePickup(true);
Also make sure to set disablePickup(bool) on player connect so it will reset properly.
Installation
Open gsc.cpp, CTRL + F and search for "resetNextReliableTime". Then add the following on a new line;
PHP Code:
{"disablepickup" , gsc_player_disable_pickup , 0},
Open gsc_player.hpp, CTRL + F and search for "void gsc_player_resetNextReliableTime(int id);". Then add the following on a new line;
PHP Code:
void gsc_player_disable_pickup(int id);
Open gsc_player.cpp, CTRL + F and search for "// entity functions". Then add the following on a new line;
PHP Code:
void gsc_player_disable_pickup(int id)
{
int disable;
if ( ! stackGetParams("i", &disable)) {
printf("scriptengine> ERROR: gsc_player_allow_pickup(): param \"disable\"[1] has to be an integer!\n");
stackPushUndefined();
return;
}
extern int disable_player_pickup[64];
if(disable)
disable_player_pickup[id] = (1);
else
disable_player_pickup[id] = (0);
}
Open libcod.cpp, CTRL + F and search for "int hook_RemoteCommandTime(void)". Then add the following function before "int hook_RemoteCommandTime(void)";
PHP Code:
int disable_player_pickup[64] = {0};
int clientaddress_to_num(int client);
cHook *hook_disable_pickup;
int disable_pickup(int a1, int a2, int a3)
{
int addrtype, ret = 0;
int clientnum = clientaddress_to_num(a2);
extern int playerinfo_base, playerinfo_size;
if(*(int*)(*(int*)playerinfo_base + clientnum * playerinfo_size) == 4 && !disable_player_pickup[clientnum])
{
hook_disable_pickup->unhook();
signed int (*sig)(int a1, int a2, int a3);
*(int *)&sig = hook_disable_pickup->from;
ret = sig(a1, a2, a3);
hook_disable_pickup->hook();
}
return ret;
}
Also while in libcod.cpp, add search and add the following new lines depending on your version;
1.0;
Search for "cracking_hook_call(0x080707C3, (int)Scr_GetCustomMethod);"
Add the following on a new line;
PHP Code:
hook_disable_pickup = new cHook(0x080DCC7A, (int)disable_pickup);
hook_disable_pickup->hook();
1.2;
Search for "cracking_hook_call(0x08070D3F, (int)Scr_GetCustomMethod);"
Add the following on a new line;
PHP Code:
hook_disable_pickup = new cHook(0x080DF25A, (int)disable_pickup);
hook_disable_pickup->hook();
1.3;
Search for "cracking_hook_call(0x08070E0B, (int)Scr_GetCustomMethod);"
Add the following on a new line;
PHP Code:
hook_disable_pickup = new cHook(0x080DF39E, (int)disable_pickup);
hook_disable_pickup->hook();
Compile your version and you are done.