Thank you for help me. I'll try this at night ~hmm ...
#include "common/hercules.h"#include <stdio.h>#include <string.h>#include <stdlib.h>#include "map/pc.h"#include "common/HPMDataCheck.h"HPExport struct hplugin_info pinfo = { "deadnodisguise", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated)};int pc_disguise_pre( struct map_session_data *sd, int class_ ) { // disable player from disguise if ( pc_isdead(sd) ) hookStop(); return 0;}int pc_dead_pre( struct map_session_data *sd, struct block_list *src ) { // undisguise when player die if ( sd->disguise != -1 ) pc->disguise(sd, -1); return 0;}HPExport void plugin_init (void) { addHookPre( "pc->disguise", pc_disguise_pre ); addHookPre( "pc->dead", pc_dead_pre );}sry that I no longer writing source, only plugins
EDIT: sry there are 2 checks
How can check this?OnPCDieEvent can only undisguise player when died, but still allow GMs to @disguise when died
that's why I did a plugin
just test again, it actually works
maybe your hercules still use the old plugin format that still needs GET_SYMBOL stuff
On pc_dead, add a null check.hmm ...
#include "common/hercules.h"#include <stdio.h>#include <string.h>#include <stdlib.h>#include "map/pc.h"#include "common/HPMDataCheck.h"HPExport struct hplugin_info pinfo = { "deadnodisguise", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated)};int pc_disguise_pre( struct map_session_data *sd, int class_ ) { // disable player from disguise if ( pc_isdead(sd) ) hookStop(); return 0;}int pc_dead_pre( struct map_session_data *sd, struct block_list *src ) { // undisguise when player die if ( sd->disguise != -1 ) pc->disguise(sd, -1); return 0;}HPExport void plugin_init (void) { addHookPre( "pc->disguise", pc_disguise_pre ); addHookPre( "pc->dead", pc_dead_pre );}sry that I no longer writing source, only pluginsEDIT: sry there are 2 checks
example ? o.oOn pc_dead, add a null check.
#include "common/hercules.h"#include <stdio.h>#include <string.h>#include <stdlib.h>#include "map/pc.h"#include "common/nullpo.h"#include "common/HPMDataCheck.h"HPExport struct hplugin_info pinfo = { "deadnodisguise", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.2", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated)};int pc_disguise_pre( struct map_session_data *sd, int class_ ) { // disable player from disguise nullpo_retr( 0, sd ); if ( pc_isdead(sd) ) hookStop(); return 0;}int pc_dead_pre( struct map_session_data *sd, struct block_list *src ) { // undisguise when player die nullpo_retr( 0, sd ); if ( sd->disguise != -1 ) pc->disguise(sd, -1); return 0;}HPExport void plugin_init (void) { addHookPre( "pc->disguise", pc_disguise_pre ); addHookPre( "pc->dead", pc_dead_pre );}
We use essential cookies to make this site work, and optional cookies to enhance your experience.