А что мешает использовать это:
http://pro-pawn.ru/showthread.php?8542-BlockIpAddress
Вид для печати
А что мешает использовать это:
http://pro-pawn.ru/showthread.php?8542-BlockIpAddress
- - - Добавлено - - -PHP код:
/**
* MySQL plugin R39-2
*/
#if defined mysql_included
#endinput
#endif
#define mysql_included
/**
* Common error codes
*
* Client: http://dev.mysql.com/doc/refman/5.1/en/error-messages-client.html
* Server: http://dev.mysql.com/doc/refman/5.1/en/error-messages-server.html
*/
#define ER_DBACCESS_DENIED_ERROR 1044
#define ER_ACCESS_DENIED_ERROR 1045
#define ER_UNKNOWN_TABLE 1109
#define ER_SYNTAX_ERROR 1149
#define CR_SERVER_GONE_ERROR 2006
#define CR_SERVER_LOST 2013
#define CR_COMMAND_OUT_OF_SYNC 2014
#define CR_SERVER_LOST_EXTENDED 2055
enum E_LOGLEVEL
{
LOG_NONE = 0,
LOG_ERROR = 1,
LOG_WARNING = 2,
LOG_DEBUG = 4,
LOG_ALL = LOG_ERROR | LOG_WARNING | LOG_DEBUG
};
enum E_LOGTYPE
{
LOG_TYPE_TEXT = 1,
LOG_TYPE_HTML = 2
};
enum ORM_Error
{
ERROR_OK,
ERROR_NO_DATA
};
enum E_VAR_DATATYPE
{
DATATYPE_INT,
DATATYPE_FLOAT,
DATATYPE_STRING
};
enum E_MYSQL_OPTION
{
DUPLICATE_CONNECTIONS,
LOG_TRUNCATE_DATA
};
enum E_EXECTIME_UNIT
{
UNIT_MILLISECONDS,
UNIT_MICROSECONDS
};
#define mysql_real_escape_string mysql_escape_string
#define cache_num_fields cache_get_field_count
#define cache_num_rows cache_get_row_count
#define mysql_function_query(%0,%1,%2,%3,"%4"%5) mysql_tquery(%0,%1,%3,#%4%5)
#define mysql_reload(%0) mysql_tquery(%0,"FLUSH PRIVILEGES")
#define mysql_debug(%0) (%0?mysql_log(LOG_ALL):mysql_log())
#define ismysqlnull(%0) (strcmp(%0,"NULL",false)==0)
// ORM functions
native ORM:orm_create(const table[], connectionHandle = 1);
native orm_destroy(ORM:id);
native ORM_Error:orm_errno(ORM:id);
native orm_apply_cache(ORM:id, row);
native orm_select(ORM:id, callback[] = "", format[] = "", {Float, _}:...);
/*
native orm_select_inline(ORM:id, callback:Callback, format[], {Float,_}:...); //y_inline
*/
native orm_update(ORM:id);
native orm_insert(ORM:id, callback[] = "", format[] = "", {Float, _}:...);
/*
native orm_insert_inline(ORM:id, callback:Callback, format[], {Float,_}:...); //y_inline
*/
native orm_delete(ORM:id, bool:clearvars=true);
native orm_load(ORM:id, callback[] = "", format[] = "", {Float, _}:...) = orm_select;
native orm_save(ORM:id, callback[] = "", format[] = "", {Float, _}:...);
native orm_addvar_int(ORM:id, &var, varname[]);
native orm_addvar_float(ORM:id, &Float:var, varname[]);
native orm_addvar_string(ORM:id, var[], var_maxlen, varname[]);
native orm_delvar(ORM:id, varname[]);
native orm_setkey(ORM:id, varname[]);
// MySQL functions
native mysql_log(E_LOGLEVEL:loglevel = LOG_ERROR | LOG_WARNING, E_LOGTYPE:logtype = LOG_TYPE_TEXT);
native mysql_connect(const host[], const user[], const database[], const password[], port = 3306, bool:autoreconnect = true, pool_size = 2);
native mysql_close(connectionHandle = 1);
native mysql_reconnect(connectionHandle = 1);
native mysql_unprocessed_queries(connectionHandle = 1);
native mysql_current_handle();
native mysql_option(E_MYSQL_OPTION:type, value);
native mysql_errno(connectionHandle = 1);
native mysql_escape_string(const source[], destination[], connectionHandle = 1, max_len = sizeof(destination));
native mysql_format(connectionHandle, output[], len, format[], {Float,_}:...);
native mysql_pquery(connectionHandle, query[], callback[] = "", format[] = "", {Float,_}:...);
/*
native mysql_pquery_inline(connHandle, query[], callback:Callback, format[], {Float,_}:...); //y_inline
*/
native mysql_tquery(connectionHandle, query[], callback[] = "", format[] = "", {Float,_}:...);
/*
native mysql_tquery_inline(connHandle, query[], callback:Callback, format[], {Float,_}:...); //y_inline
*/
native Cache:mysql_query(conhandle, query[], bool:use_cache = true);
native mysql_stat(destination[], connectionHandle = 1, max_len = sizeof(destination));
native mysql_get_charset(destination[], connectionHandle = 1, max_len = sizeof(destination));
native mysql_set_charset(charset[], connectionHandle = 1);
// Cache functions
native cache_get_data(&num_rows, &num_fields, connectionHandle = 1);
native cache_get_row_count(connectionHandle = 1);
native cache_get_field_count(connectionHandle = 1);
native cache_get_field_name(field_index, destination[], connectionHandle = 1, max_len = sizeof(destination));
native cache_get_row(row, field_idx, destination[], connectionHandle = 1, max_len = sizeof(destination));
native cache_get_row_int(row, field_idx, connectionHandle = 1);
native Float:cache_get_row_float(row, field_idx, connectionHandle = 1);
native cache_get_field_content(row, const field_name[], destination[], connectionHandle = 1, max_len = sizeof(destination));
native cache_get_field_content_int(row, const field_name[], connectionHandle = 1);
native Float:cache_get_field_content_float(row, const field_name[], connectionHandle = 1);
native Cache:cache_save(connectionHandle = 1);
native cache_delete(Cache:cache_id, connectionHandle = 1);
native cache_set_active(Cache:cache_id, connectionHandle = 1);
native cache_is_valid(Cache:cache_id, connectionHandle = 1);
native cache_affected_rows(connectionHandle = 1);
native cache_insert_id(connectionHandle = 1);
native cache_warning_count(connectionHandle = 1);
native cache_get_query_exec_time(E_EXECTIME_UNIT:unit = UNIT_MICROSECONDS);
native cache_get_query_string(destination[], max_len = sizeof(destination));
// Forward declarations
forward OnQueryError(errorid, error[], callback[], query[], connectionHandle);
#if defined MYSQL_USE_YINLINE || defined E_CALLBACK_DATA
#if !defined E_CALLBACK_DATA
#include <YSI\y_inline>
#endif
static g_MySQL_InlineData[1000][E_CALLBACK_DATA];
static g_MySQL_VarArray[32][YSI_MAX_STRING];
static g_MySQL_AddressArray[32];
stock MySQL_Internal_SaveInline(callback:CB)
{
static bool:g_MySQL_LazyInit = true;
if(g_MySQL_LazyInit == true)
{
//set g_MySQL_InlineData empty
for(new i=0; i < sizeof(g_MySQL_InlineData); ++i)
for(new E_CALLBACK_DATA:e = E_CALLBACK_DATA:0; e < E_CALLBACK_DATA; ++e)
g_MySQL_InlineData[i][e] = 0;
g_MySQL_LazyInit = false;
}
for(new i=0; i < sizeof(g_MySQL_InlineData); ++i)
if(_:g_MySQL_InlineData[i][E_CALLBACK_DATA_POINTER] == 0)
if (Callback_Get(CB, g_MySQL_InlineData[i]))
return i;
return -1;
}
#define mysql_pquery_inline(%0,%1,%2,"%3"%4) \
mysql_pquery(%0,%1,"FJ37DH3JG_MYSQL_INTERNAL","d"#%3,MySQL_Internal_SaveInline(%2)%4)
#define mysql_tquery_inline(%0,%1,%2,"%3"%4) \
mysql_tquery(%0,%1,"FJ37DH3JG_MYSQL_INTERNAL","d"#%3,MySQL_Internal_SaveInline(%2)%4)
#define orm_select_inline(%0,%1,"%2"%3) \
orm_select(%0,"FJ37DH3JG_MYSQL_INTERNAL","d"#%2,MySQL_Internal_SaveInline(%1)%3)
#define orm_insert_inline(%0,%1,"%2"%3) \
orm_insert(%0,"FJ37DH3JG_MYSQL_INTERNAL","d"#%2,MySQL_Internal_SaveInline(%1)%3)
forward FJ37DH3JG_MYSQL_INTERNAL(...);
public FJ37DH3JG_MYSQL_INTERNAL(...)
{
new InlineDataIndex = getarg(0);
if(InlineDataIndex < 0)
return 0;
for(new i=0; i < numargs()-1; ++i)
{
for(new l=0; l < YSI_MAX_STRING; ++l)
{
new TmpVal = getarg(i+1, l);
if(l == 0 || g_MySQL_VarArray[i][l-1] < 256)
g_MySQL_VarArray[i][l] = TmpVal;
else
break;
}
g_MySQL_AddressArray[i] = AMX_GetRelativeAddress(g_MySQL_VarArray[i][0]);
}
Callback_Array(g_MySQL_InlineData[InlineDataIndex], g_MySQL_AddressArray);
Callback_Release(g_MySQL_InlineData[InlineDataIndex]);
for(new E_CALLBACK_DATA:e = E_CALLBACK_DATA:0; e < E_CALLBACK_DATA; ++e)
g_MySQL_InlineData[InlineDataIndex][e] = 0;
for(new i=0; i < numargs()-1; ++i)
{
g_MySQL_AddressArray[i] = 0;
for(new l=0, lmax=strlen(g_MySQL_VarArray[i]); l < lmax; ++l)
g_MySQL_VarArray[i][l] = 0;
}
return 1;
}
#endif
- - - Добавлено - - -PHP код:
/**
* MySQL plugin R39-2
*/
#if defined mysql_included
#endinput
#endif
#define mysql_included
/**
* Common error codes
*
* Client: http://dev.mysql.com/doc/refman/5.1/en/error-messages-client.html
* Server: http://dev.mysql.com/doc/refman/5.1/en/error-messages-server.html
*/
#define ER_DBACCESS_DENIED_ERROR 1044
#define ER_ACCESS_DENIED_ERROR 1045
#define ER_UNKNOWN_TABLE 1109
#define ER_SYNTAX_ERROR 1149
#define CR_SERVER_GONE_ERROR 2006
#define CR_SERVER_LOST 2013
#define CR_COMMAND_OUT_OF_SYNC 2014
#define CR_SERVER_LOST_EXTENDED 2055
enum E_LOGLEVEL
{
LOG_NONE = 0,
LOG_ERROR = 1,
LOG_WARNING = 2,
LOG_DEBUG = 4,
LOG_ALL = LOG_ERROR | LOG_WARNING | LOG_DEBUG
};
enum E_LOGTYPE
{
LOG_TYPE_TEXT = 1,
LOG_TYPE_HTML = 2
};
enum ORM_Error
{
ERROR_OK,
ERROR_NO_DATA
};
enum E_VAR_DATATYPE
{
DATATYPE_INT,
DATATYPE_FLOAT,
DATATYPE_STRING
};
enum E_MYSQL_OPTION
{
DUPLICATE_CONNECTIONS,
LOG_TRUNCATE_DATA
};
enum E_EXECTIME_UNIT
{
UNIT_MILLISECONDS,
UNIT_MICROSECONDS
};
#define mysql_real_escape_string mysql_escape_string
#define cache_num_fields cache_get_field_count
#define cache_num_rows cache_get_row_count
#define mysql_function_query(%0,%1,%2,%3,"%4"%5) mysql_tquery(%0,%1,%3,#%4%5)
#define mysql_reload(%0) mysql_tquery(%0,"FLUSH PRIVILEGES")
#define mysql_debug(%0) (%0?mysql_log(LOG_ALL):mysql_log())
#define ismysqlnull(%0) (strcmp(%0,"NULL",false)==0)
// ORM functions
native ORM:orm_create(const table[], connectionHandle = 1);
native orm_destroy(ORM:id);
native ORM_Error:orm_errno(ORM:id);
native orm_apply_cache(ORM:id, row);
native orm_select(ORM:id, callback[] = "", format[] = "", {Float, _}:...);
/*
native orm_select_inline(ORM:id, callback:Callback, format[], {Float,_}:...); //y_inline
*/
native orm_update(ORM:id);
native orm_insert(ORM:id, callback[] = "", format[] = "", {Float, _}:...);
/*
native orm_insert_inline(ORM:id, callback:Callback, format[], {Float,_}:...); //y_inline
*/
native orm_delete(ORM:id, bool:clearvars=true);
native orm_load(ORM:id, callback[] = "", format[] = "", {Float, _}:...) = orm_select;
native orm_save(ORM:id, callback[] = "", format[] = "", {Float, _}:...);
native orm_addvar_int(ORM:id, &var, varname[]);
native orm_addvar_float(ORM:id, &Float:var, varname[]);
native orm_addvar_string(ORM:id, var[], var_maxlen, varname[]);
native orm_delvar(ORM:id, varname[]);
native orm_setkey(ORM:id, varname[]);
// MySQL functions
native mysql_log(E_LOGLEVEL:loglevel = LOG_ERROR | LOG_WARNING, E_LOGTYPE:logtype = LOG_TYPE_TEXT);
native mysql_connect(const host[], const user[], const database[], const password[], port = 3306, bool:autoreconnect = true, pool_size = 2);
native mysql_close(connectionHandle = 1);
native mysql_reconnect(connectionHandle = 1);
native mysql_unprocessed_queries(connectionHandle = 1);
native mysql_current_handle();
native mysql_option(E_MYSQL_OPTION:type, value);
native mysql_errno(connectionHandle = 1);
native mysql_escape_string(const source[], destination[], connectionHandle = 1, max_len = sizeof(destination));
native mysql_format(connectionHandle, output[], len, format[], {Float,_}:...);
native mysql_pquery(connectionHandle, query[], callback[] = "", format[] = "", {Float,_}:...);
/*
native mysql_pquery_inline(connHandle, query[], callback:Callback, format[], {Float,_}:...); //y_inline
*/
native mysql_tquery(connectionHandle, query[], callback[] = "", format[] = "", {Float,_}:...);
/*
native mysql_tquery_inline(connHandle, query[], callback:Callback, format[], {Float,_}:...); //y_inline
*/
native Cache:mysql_query(conhandle, query[], bool:use_cache = true);
native mysql_stat(destination[], connectionHandle = 1, max_len = sizeof(destination));
native mysql_get_charset(destination[], connectionHandle = 1, max_len = sizeof(destination));
native mysql_set_charset(charset[], connectionHandle = 1);
// Cache functions
native cache_get_data(&num_rows, &num_fields, connectionHandle = 1);
native cache_get_row_count(connectionHandle = 1);
native cache_get_field_count(connectionHandle = 1);
native cache_get_field_name(field_index, destination[], connectionHandle = 1, max_len = sizeof(destination));
native cache_get_row(row, field_idx, destination[], connectionHandle = 1, max_len = sizeof(destination));
native cache_get_row_int(row, field_idx, connectionHandle = 1);
native Float:cache_get_row_float(row, field_idx, connectionHandle = 1);
native cache_get_field_content(row, const field_name[], destination[], connectionHandle = 1, max_len = sizeof(destination));
native cache_get_field_content_int(row, const field_name[], connectionHandle = 1);
native Float:cache_get_field_content_float(row, const field_name[], connectionHandle = 1);
native Cache:cache_save(connectionHandle = 1);
native cache_delete(Cache:cache_id, connectionHandle = 1);
native cache_set_active(Cache:cache_id, connectionHandle = 1);
native cache_is_valid(Cache:cache_id, connectionHandle = 1);
native cache_affected_rows(connectionHandle = 1);
native cache_insert_id(connectionHandle = 1);
native cache_warning_count(connectionHandle = 1);
native cache_get_query_exec_time(E_EXECTIME_UNIT:unit = UNIT_MICROSECONDS);
native cache_get_query_string(destination[], max_len = sizeof(destination));
// Forward declarations
forward OnQueryError(errorid, error[], callback[], query[], connectionHandle);
#if defined MYSQL_USE_YINLINE || defined E_CALLBACK_DATA
#if !defined E_CALLBACK_DATA
#include <YSI\y_inline>
#endif
static g_MySQL_InlineData[1000][E_CALLBACK_DATA];
static g_MySQL_VarArray[32][YSI_MAX_STRING];
static g_MySQL_AddressArray[32];
stock MySQL_Internal_SaveInline(callback:CB)
{
static bool:g_MySQL_LazyInit = true;
if(g_MySQL_LazyInit == true)
{
//set g_MySQL_InlineData empty
for(new i=0; i < sizeof(g_MySQL_InlineData); ++i)
for(new E_CALLBACK_DATA:e = E_CALLBACK_DATA:0; e < E_CALLBACK_DATA; ++e)
g_MySQL_InlineData[i][e] = 0;
g_MySQL_LazyInit = false;
}
for(new i=0; i < sizeof(g_MySQL_InlineData); ++i)
if(_:g_MySQL_InlineData[i][E_CALLBACK_DATA_POINTER] == 0)
if (Callback_Get(CB, g_MySQL_InlineData[i]))
return i;
return -1;
}
#define mysql_pquery_inline(%0,%1,%2,"%3"%4) \
mysql_pquery(%0,%1,"FJ37DH3JG_MYSQL_INTERNAL","d"#%3,MySQL_Internal_SaveInline(%2)%4)
#define mysql_tquery_inline(%0,%1,%2,"%3"%4) \
mysql_tquery(%0,%1,"FJ37DH3JG_MYSQL_INTERNAL","d"#%3,MySQL_Internal_SaveInline(%2)%4)
#define orm_select_inline(%0,%1,"%2"%3) \
orm_select(%0,"FJ37DH3JG_MYSQL_INTERNAL","d"#%2,MySQL_Internal_SaveInline(%1)%3)
#define orm_insert_inline(%0,%1,"%2"%3) \
orm_insert(%0,"FJ37DH3JG_MYSQL_INTERNAL","d"#%2,MySQL_Internal_SaveInline(%1)%3)
forward FJ37DH3JG_MYSQL_INTERNAL(...);
public FJ37DH3JG_MYSQL_INTERNAL(...)
{
new InlineDataIndex = getarg(0);
if(InlineDataIndex < 0)
return 0;
for(new i=0; i < numargs()-1; ++i)
{
for(new l=0; l < YSI_MAX_STRING; ++l)
{
new TmpVal = getarg(i+1, l);
if(l == 0 || g_MySQL_VarArray[i][l-1] < 256)
g_MySQL_VarArray[i][l] = TmpVal;
else
break;
}
g_MySQL_AddressArray[i] = AMX_GetRelativeAddress(g_MySQL_VarArray[i][0]);
}
Callback_Array(g_MySQL_InlineData[InlineDataIndex], g_MySQL_AddressArray);
Callback_Release(g_MySQL_InlineData[InlineDataIndex]);
for(new E_CALLBACK_DATA:e = E_CALLBACK_DATA:0; e < E_CALLBACK_DATA; ++e)
g_MySQL_InlineData[InlineDataIndex][e] = 0;
for(new i=0; i < numargs()-1; ++i)
{
g_MySQL_AddressArray[i] = 0;
for(new l=0, lmax=strlen(g_MySQL_VarArray[i]); l < lmax; ++l)
g_MySQL_VarArray[i][l] = 0;
}
return 1;
}
#endif
вставлял в один php тег не знаю почему 2 получилось
Странный какой-то у вас инклюд, я вам скажу... Ну ищите подобную функцию, ибо не знаю как вы собираетесь без неё загружать все строки одновременно
Вы так же говорили бы и при переходе с SendClientMessage на диалоговые окна, когда они только появились?
Тут задумка совершенно проста. Храним в базе данных IP и время блокировки этого самого IP. При старте сервера вызываем новую функцию блокировки пользователей "BlockIpAddress" и блокируем все IP из базы. При выключении сервера обновляем данные в БД исходя из того, сколько сервер проработал. И получаем точно такой же эффект, как если бы блокировали с помощью функции "Ban" (То есть на сервер даже не пускало бы и коннекта не происходило). В данном случае человеку нужен именно такой эффект и он его реализовал. В чём заключается извращение?
Да ну..
Это же BlueG его плагин и инклуд.
https://github.com/pBlueG/SA-MP-MySQL/releases
PHP код:
forward Block_Ip_Address();
public Block_Ip_Address()
{
new rows,fields, Ip_Address_Block[17];
new Ip_Address_Block_Time;
cache_get_data(rows, fields);
if(rows)
{
for(new r; r < rows; r++)
{
cache_get_field_content(r, "IP", Ip_Address_Block);
Ip_Address_Block_Time = cache_get_field_content_int(r, "Clock");
BlockIpAddress(Ip_Address_Block[16], Ip_Address_Block_Time);
}
}
}
Что только не пытался сделать...
Все нормально выводит но не блокирует IP при конекте.PHP код:
forward Block_Ip_Address_Cheeck();
public Block_Ip_Address_Cheeck()
{
new rows,fields, Ip_Address_Block[17];
new Ip_Address_Block_Time;
cache_get_data(rows, fields);
if(rows)
{
for(new r; r < rows; r++)
{
cache_get_field_content(r, "IP", Ip_Address_Block);
Ip_Address_Block_Time = cache_get_field_content_int(r, "Clock");
BlockIpAddress(Ip_Address_Block, Ip_Address_Block_Time);
printf("Паблик Block_Ip_Address_Cheeck загружон удачно\n IP: %s Clock: %d", Ip_Address_Block, Ip_Address_Block_Time);
}
}
}
- - - Добавлено - - -
Моя ошибка все работает
- - - Добавлено - - -
Сойдет ли данная форумула для записи в MySQL?
PHP код:
unbandate = gettime() + params[1]*86400;
gettime нужно в миллисекунды перевести, ибо BlockIpAddress время в миллисекундах хранит
http://rghost.ru/56748763 видно что уже 2 часа... Должно разбанить.
PHP код:
CMD:ban(playerid, params[])
{
new string[128], data[50], unbandate, year, month, day, BLOCK_IP_CHEECK[16], hour,minuite,second;
if(PlayerInfo[playerid][pLogged] == 0) return true;
if(PlayerInfo[playerid][pAdmin] < 3) return true;
if(sscanf(params, "uds[128]", params[0], params[1], params[2])) return SendClientMessage(playerid, COLOR_GRAD, "Используйте: /ban [id игрока] [Дней] [причина]");
if(params[1] > 30 || params[1] < 1) return SendClientMessage(playerid, COLOR_GRAD, "Время бана от 1 до 30 дней");
format(string, sizeof(string), "Администратор %s забанил игрока %s на %d дней. Причина: %s",PlayerInfo[playerid][pName],PlayerInfo[params[0]][pName],params[1],params[2]);
SendClientMessageToAll(COLOR_LIGHTRED, string);
getdate(year, month, day);
gettime(hour,minuite,second);
Converts(minuite);
Converts(second);
Converts(hour);
format(data, 50, "Время: %02d.%02d.%04d Дата: %02d:%02d", day, month, year, hour,minuite);
unbandate = gettime() + params[1]*86400;
GetPlayerIp(params[0],BLOCK_IP_CHEECK,sizeof(BLOCK_IP_CHEECK));
format(mysql_string, sizeof(mysql_string), "INSERT INTO `"TABLE_BANS"` (Name_Admin, Name_Player, Lvl_Admin, Ban_Data, Unban_Data, Ban_Reason) VALUES ('%s', '%s','%d', '%s', %d, '%s')", PlayerInfo[playerid][pName], PlayerInfo[params[0]][pName], PlayerInfo[playerid][pAdmin], data, unbandate, params[2]);
mysql_function_query(connect_to_mysql, mysql_string, false, "", "");
format(mysql_string, sizeof(mysql_string), "INSERT INTO `"TABLE_BLOCK_IP"` (Name,IP, Clock) VALUES ('%s', '%s', '%d')", PlayerInfo[params[0]][pName], BLOCK_IP_CHEECK, unbandate);
mysql_function_query(connect_to_mysql, mysql_string, false, "", "");
BlockIpAddress(BLOCK_IP_CHEECK, unbandate);
KickNew(params[0]);
return true;
}
PHP код:
forward Check_Ban_List(playerid);
public Check_Ban_List(playerid)
{
new rows, fields, ADMIN_ISSUING_BAN[24], NAME_PLAYER[24], Kolvo_Do_Rasbana, /*SUPERVISOR,*/ BAN_DATA[32], UNBAN_DATA, REASON_FOR_THE_BAN[50], MYSQL_STRING_CHECK_BAN_LIST[400], SQL_STRING_CHECK_BAN_LIST[400];
cache_get_data(rows, fields);
cache_get_field_content(0, "Name_Admin",ADMIN_ISSUING_BAN);
cache_get_field_content(0, "Name_Player",NAME_PLAYER);
//SUPERVISOR = cache_get_field_content_int(0, "Lvl_Admin");
cache_get_field_content(0, "Ban_Data",BAN_DATA);
UNBAN_DATA = cache_get_field_content_int(0, "Unban_Data");
cache_get_field_content(0, "Ban_Reason",REASON_FOR_THE_BAN);
UNBAN_DATA - BAN_DATA[32]; /*Пытался сделать сколько осталось до разбана но выходит ошибка..
error 032: array index out of bounds (variable "BAN_DATA") */
if(!rows)
{
if(gettime() >= UNBAN_DATA)
{
mysql_format(connect_to_mysql, MYSQL_STRING_CHECK_BAN_LIST, sizeof(MYSQL_STRING_CHECK_BAN_LIST), "DELETE FROM `"TABLE_BANS"` WHERE `Name_Player` = '%s'",PlayerInfo[playerid][pName]);
mysql_function_query(connect_to_mysql, MYSQL_STRING_CHECK_BAN_LIST, false, "","");
mysql_format(connect_to_mysql, SQL_STRING_CHECK_BAN_LIST, sizeof(SQL_STRING_CHECK_BAN_LIST), "DELETE FROM `"TABLE_BLOCK_IP"` WHERE `Name` = '%s'",PlayerInfo[playerid][pName]);
mysql_function_query(connect_to_mysql, SQL_STRING_CHECK_BAN_LIST, false, "","");
}
for(new i = 0; i != sizeof(GZInfo); i++)
{
GangZoneShowForPlayer(playerid,GZInfo[i][id],GZcolor(GZInfo[i][gFrak]));
}
for(new td = 0; td < 12; td++) PlayerTextDrawShow(playerid, gang[playerid][td]);
if(PlayerInfo[playerid][pInformer_Off_Onn] == 1)
{
for(new i = 0; i < sizeof(gang_td); i++) TextDrawShowForPlayer(playerid, gang_td[i]);
}
else if(PlayerInfo[playerid][pInformer_Off_Onn] == 0)
{
for(new win_dalglish = 0; win_dalglish < sizeof(gang_td); win_dalglish++) TextDrawHideForPlayer(playerid, gang_td[win_dalglish]);
}
if(Capture_On_Off == 1)
{
GangZoneFlashForPlayer(playerid,IsCapture,GZcolor(ID_GANG_ON_CAPTURE[0]));
}
return true;
}
else if(rows)
{
new str[400];
format(str, sizeof(str), "{FF6347}Аккаунт: %s\nДата блокировки: %s\nАдминистратор: %s\nПричина: %s\n\nДата разблокировки: %s",PlayerInfo[playerid][pName],BAN_DATA,ADMIN_ISSUING_BAN,REASON_FOR_THE_BAN, date("%dd/%mm/%yyyy в %hh:%ii",UNBAN_DATA));
ShowPlayerDialog(playerid,91,0,"Аккаунт заблокирован:",str,"Закрыть","");
KickNew(playerid);
}
return true;
}