conf/battle/misc.conf
// Set this to the amount of minutes afk chars will be kicked from the server.
afk_timeout: 0
src/custom/atcommand.inc
/*==========================================
* @afk
*------------------------------------------*/
ACMD_FUNC(afk) {
nullpo_retr(-1, sd);
if(sd->bl.m == map_mapname2mapid("prontera")) {
clif_displaymessage(fd, "@afk is not allowed on this map.");
return 0;
}
if( pc_isdead(sd) ) {
clif_displaymessage(fd, "Cannot @afk if you are dead.");
return -1;
}
if( map_getmapflag(sd->bl.m, MF_AUTOTRADE) == battle_config.autotrade_mapflag )
{
if( map_getmapflag(sd->bl.m, MF_PVP) || map_getmapflag(sd->bl.m, MF_GVG_CASTLE) ) {
clif_displaymessage(fd, "You may not use the @afk maps PVP or GVG.");
return -1;
}
sd->state.autotrade = 1;
sd->state.monster_ignore = 1;
pc_setsit(sd);
skill_sit(sd,1);
clif_sitting(&sd->bl);
clif_changelook(&sd->bl,LOOK_HEAD_TOP,471);
clif_specialeffect(&sd->bl, 234,AREA);
if( battle_config.afk_timeout )
{
int timeout = atoi(message);
status_change_start(NULL, &sd->bl, SC_AUTOTRADE, 10000,0,0,0,0, ((timeout > 0) ? min(timeout,battle_config.afk_timeout) : battle_config.afk_timeout)*60000,0);
}
clif_authfail_fd(fd, 15);
} else
clif_displaymessage(fd, "@afk is not allowed on this map.");
return 0;
}
src/custom/atcommand_def.inc
ACMD_DEF(afk),
src/custom/battle_config_init.inc
{ "afk_timeout", &battle_config.afk_timeout, 0, 0, INT_MAX, },
src/custom/battle_config_struct.inc
int afk_timeout;