Oxxy

@ipban, @unbanip

4 сообщения в этой теме

Создал себе репозиторий. Скидываю туда разный хлам. Переписал старые @ipban и @unbanip.

Пользуйтесь наздоровье.

а можно конкретней написать как поставить а не просто сылку на файлы...

Буть Бобр)

Изменено пользователем RelaX
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ап

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Открываешь ea/src/map/atcommand.c , ищешь эти строки:


#include "../custom/atcommand.inc"
/**
* Fills the reference of available commands in atcommand DBMap
**/

Перед ними вставляешь это:


/* @ipban by Griniy. */
/* Updated by Oxxy */
ACMD_FUNC(ipban)
{
struct map_session_data *pl_sd;
char *modif_p, *data, *last_ip;
int month, value = 0;
char ip[16];
nullpo_retr(-1, sd);

memset(atcmd_output, '\0', sizeof(atcmd_output));
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));

if(!message || !*message || sscanf(message, "%199s %99[^\n]", atcmd_output, atcmd_player_name) < 2) {
clif_displaymessage(fd, msg_txt(1600));
return -1;
}

atcmd_output[sizeof(atcmd_output)-1] = '\0';

modif_p = atcmd_output;
month = 0;
while (modif_p[0] != '\0') {
value = atoi(modif_p);
if(value == 0)
modif_p++;
else {
if(modif_p[0] == '-' || modif_p[0] == '+')
modif_p++;

while(modif_p[0] >= '0' && modif_p[0] <= '9') {
modif_p++;
if(modif_p[0] == 'm') {
month = value;
modif_p++;
} else if (modif_p[0] != '\0') {
modif_p++;
}
}
}
}

if(month == 0) {
clif_displaymessage(fd, msg_txt(1601));
return -1;
}

if(SQL_ERROR == Sql_Query(mmysql_handle, "SELECT `last_ip` From `login`, `char` WHERE login.account_id = char.account_id AND char.name = '%s'", atcmd_player_name ) )
Sql_ShowDebug(mmysql_handle);

if(Sql_NumRows(mmysql_handle) == 0) {
clif_displaymessage(fd, msg_txt(1602));
Sql_FreeResult(mmysql_handle);
return -1;
}

Sql_NextRow(mmysql_handle);

Sql_GetData(mmysql_handle, 0, &data, NULL); last_ip = data;
strcpy(ip, last_ip);
Sql_FreeResult(mmysql_handle);

if(Sql_NumRows(mmysql_handle) > 0) {
clif_displaymessage(fd, msg_txt(1603));
Sql_FreeResult(mmysql_handle);
return -1;
} else
Sql_FreeResult(mmysql_handle);

if(SQL_ERROR == Sql_Query(mmysql_handle, "INSERT INTO `ipbanlist` (`list`,`btime`,`rtime`,`reason`) VALUES ('%s', NOW() , NOW() + INTERVAL %d MONTH ,'AtCommand ban for user name : %s')", ip, month, atcmd_player_name))
Sql_ShowDebug(mmysql_handle);

if(map_nick2sd(atcmd_player_name))
clif_GM_kick(sd, map_nick2sd(atcmd_player_name));

return 0;
}

и это :


/* @unbaip by Griniy */
/* Updated by Oxxy */
ACMD_FUNC(unbanip)
{
char *data, *last_ip, ip[16], output[255];
nullpo_retr(-1, sd);
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
if (!message || !*message || (sscanf(message, "%23[^\n]", atcmd_player_name) < 1)) {
clif_displaymessage(fd, msg_txt(1604));
return -1;
}

if( SQL_ERROR == Sql_Query(mmysql_handle, "SELECT `last_ip` FROM `login`, `char` WHERE login.account_id = char.account_id AND char.name = '%s'",atcmd_player_name) ) {
Sql_ShowDebug(mmysql_handle);
Sql_FreeResult(mmysql_handle);
return -1;
}

if( Sql_NumRows(mmysql_handle) == 0 ) {
clif_displaymessage(fd, msg_txt(1602));
Sql_FreeResult(mmysql_handle);
return -1;
}

Sql_NextRow(mmysql_handle);
Sql_GetData(mmysql_handle, 0, &data, NULL); last_ip = data; strcpy(ip, last_ip);
if( SQL_ERROR == Sql_Query(mmysql_handle, "SELECT * FROM `ipbanlist` WHERE `list` = '%s'",ip) ) {
Sql_ShowDebug(mmysql_handle);
Sql_FreeResult(mmysql_handle);
return -1;
}
if( Sql_NumRows(mmysql_handle) == 0 ) {
clif_displaymessage(fd, msg_txt(1605));
Sql_FreeResult(mmysql_handle);
return -1;
}
if( SQL_ERROR == Sql_Query(mmysql_handle, "DELETE FROM `ipbanlist` WHERE `list` = '%s'",ip) ) {
Sql_ShowDebug(mmysql_handle);
Sql_FreeResult(mmysql_handle);
return -1;
}
sprintf(output, msg_txt(1606),atcmd_player_name);
clif_displaymessage(fd, output);
return 0;
}

Далее открываешь ea/src/map/map.c и ищешь эту строку:


#define MAP_MAX_MSG 1600

Меняешь на эту:


#define MAP_MAX_MSG 2000

Далее заходишь в ea/conf/map_msg_add.conf и добавляешь эти строки:


1600: Please, enter ban time and a player name (usage: @ipban <time> <name>).
1601: Invalid time for ban command.
1602: Unknown character name. Please check it and repeat.
1603: This characters is already banned by IP.
1604: Please, enter a player name to unban (usage: @unbanip <name>).
1605: No character with such name was found in Banlist.
1606: Character %s was succesfully unbanned.

После, компилируешь.

1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас