Автор: MiRoTVoReZ: Дата: 06.15.2008
Остановка сервера через N минут.
Обратный отсчёт отображается через анонс (kami).
./src/map/atcommand.c
ищем в начале:
char atcommand_symbol = '@'; // first char of the commands
char* msg_table[MAX_MSG]; // Server messages (0-499 reserved for GM commands, 500-999 reserved for others)
int stop_timer = 0;
int stop_tick_sec = 0;
} else {
map[sd->bl.m].flag.allowks = 1;
sprintf(atcmd_output, "[ Map K.S Protection Inactive ]");
}
clif_displaymessage(fd, atcmd_output);
return 0;
}
/*==========================================
* @stop - by Antex
*------------------------------------------*/
int atcommand_stop_sub(){
struct map_session_data* pl_sd;
struct s_mapiterator* iter;
char buff[100];
unsigned long color=0xD1ED12;
unsigned long color2=0xE84B24;
stop_tick_sec--;
if(stop_tick_sec%60 == 0){
sprintf(buff, "Отключение сервера через %d мин.", stop_tick_sec/60);
intif_announce(buff, strlen(buff) + 1, color, 0);
}
if(stop_tick_sec<30){
sprintf(buff, "Отключение сервера через %d сек.", stop_tick_sec);
intif_announce(buff, strlen(buff) + 1, color2, 0);
}
if(stop_tick_sec <= 0){
iter = mapit_getallusers();
for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) )
clif_GM_kick(NULL, pl_sd);
mapit_free(iter);
flush_fifos();
runflag = 0;
}
return 0;
}
/*==========================================
* @stop - by Antex
*------------------------------------------*/
int atcommand_stop(const int fd, struct map_session_data* sd, const char* command, const char* message)
{
int min = 0;
int duration = 1000;
//unsigned long color=0xD1ED12;
nullpo_retr(-1, sd);
sscanf(message, "%d", &min);
if(min>0){
stop_tick_sec = min*60+1;
stop_timer = add_timer_interval(gettick() + duration, atcommand_stop_sub, 0, 0, duration);
}
return 0;
}
{ "points", 60, atcommand_cash },
{ "barricade", 60, atcommand_barricade },
{ "killbarricade", 60, atcommand_barricade_destroy },
{ "stop", 0, atcommand_stop },
Автор: : Дата: 01.01.1970