Назад

@stop

Автор: MaXi: Дата: 01.23.2011

Выкладываю @stop когда то давно нашол где то
Пишите @stop 1 - И сервер вырубится назначенное вам время(цывры тока минуты)

Скрипт старый кто поможет сделать под новые афины?

/*==========================================
* @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;
}

Автор: Jarek: Дата: 01.31.2011

Основной код

/*==========================================
* @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_broadcast2(buff, strlen(buff) + 1, color, 0x190, 12, 0, 0);
}
if(stop_tick_sec<30){
sprintf(buff, "Отключение сервера через %d сек.", stop_tick_sec);
intif_broadcast2(buff, strlen(buff) + 1, color2, 0x190, 12, 0, 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;
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;
}


Затем в начале файла после
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;


Ну и в AtCommandInfo добавляем
{ "stop",               0,0,	  atcommand_stop },


Есть один ворнинг, исправить не удалось, но команда мап-сервер отрубает.

P.S.: потестите еще, у меня екзешник старый intif_broadcast2 не отображает

Автор: Renegade: Дата: 01.31.2011

а зачем это надо?