//===== Hercules Plugin ====================================== //= @sleep atcommand //===== By: ================================================== //= AnnieRuru //===== Current Version: ===================================== //= 1.0 //===== Compatible With: ===================================== //= Hercules 2014-03-13 //===== Description: ========================================= //= sleeps the player and make it invulnerable from attacks //===== Topic ================================================ //= http://hercules.ws/board/topic/4875-sleep/ //===== Additional Comments: ================================= //= want to take a break and go to toilet ? here comes to the rescue ! //============================================================ #include #include #include #include "../map/pc.h" #include "../common/HPMi.h" #include "../common/HPMDataCheck.h" // should always be the last file included! (if you don't make it last, it'll intentionally break compile time) HPExport struct hplugin_info pinfo = { "sleep", // 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) }; ACMD(sleep) { if ( map->list[sd->bl.m].flag.pvp || map->list[sd->bl.m].flag.gvg || map->list[sd->bl.m].flag.gvg_castle || map->list[sd->bl.m].flag.battleground ) { clif->message( fd, "Cannot use this command in pvp/gvg/battleground maps." ); return false; } else if ( map->list[sd->bl.m].flag.nowarp && map->list[sd->bl.m].flag.nowarpto ) { clif->message( fd, "Cannot use this command in event maps." ); return false; } else if ( battle->bc->prevent_logout && ( DIFF_TICK( timer->gettick(), sd->canlog_tick ) < battle->bc->prevent_logout ) ) { clif->message( fd, "Cannot use this command while in combat." ); return false; } else if ( sd->sc.opt1 && sd->sc.opt1 != OPT1_SLEEP ) { clif->message( fd, "Cannot use this command during status ailment" ); return false; } else if ( !sd->sc.opt1 ) { status->change_start( NULL, &sd->bl, SC_TRICKDEAD, 10000, 1, 0, 0, 0, 1000, 0 ); sd->sc.opt1 = OPT1_SLEEP; clif->message( fd, "You have fallen asleep." ); } else { sd->sc.opt1 = 0; clif->emotion( &sd->bl, 45 ); status_change_end( &sd->bl, SC_TRICKDEAD, -1 ); clif->message( fd, "You have awake." ); } return true; } HPExport void plugin_init (void) { clif = GET_SYMBOL("clif"); map = GET_SYMBOL("map"); timer = GET_SYMBOL("timer"); status = GET_SYMBOL("status"); battle = GET_SYMBOL("battle"); addAtcommand("sleep",sleep); }