Назад

@stop N (by Antex)

Автор: 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 },




by Antex


и не забываем про компил)

Автор: : Дата: 01.01.1970