Сообщение от
TheMallard
Она есть во всех более менее новых GF, лол:
PHP код:
new name[MAX_PLAYER_NAME + 1];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
return name;
Так вот. Обращаюсь к ТС, если у тебя существует подобная функция в моде, то тебе необходимо от неё избавиться, ибо она совершенна непрактична, к тому же здесь возвращается строка.
Советую сделать получение игрового имени уже при подключении, а потом уже получать его с помощью макроса GetName( playerid ).
PHP код:
// В начало мода
#define GetName(%0) PLAYER[%0][NAME]
// В соответствующий каллбэк
public OnPlayerConnect( playerid )
{
GetPlayerName( playerid, PLAYER[ playerid ][ NAME ], sizeof PLAYER[ playerid ][ NAME ] );
return 1;
}
Все переменные и структуры заменить конечно на свои.
И финальный код, будет выглядеть вот так:
PHP код:
#include <mxDate> // Как вариант решение Вашей проблемы, но за его работу я не ручаюсь.
public check_banlist( playerid )
{
new
rows,
fields,
str[ 400 ];
cache_get_data( rows, fields );
if( !rows ) // Если строка не найдена, то возвращаем 0.
return 0;
new
unbandate = cache_get_field_content_int( 0, "unbandate" );
if( unbandate > gettime() )
{
new
ip[ 16 ],
whobanned[ MAX_PLAYER_NAME ],
bandate = cache_get_field_content_int( 0, "bandate" ),
reason[ 32 ];
cache_get_field_content( 0, "whobanned", whobanned );
cache_get_field_content( 0, "reason", reason );
cache_get_field_content( 0, "ip", ip );
f(str,"{F5DEB3}%s\n\
IP: %s\n\
Заблокировал: %s\n\
Дата блокировки: %s\n\
Заблокирован на: %d\n\
Причина: %s\n\n\
Дата разблокировки:\n",
GetName( playerid ),
ip,
whobanned,
date( "hh:ii:ss dd/mm/yy", unbandate ),
date( "hh:ii:ss dd/mm/yy", bandate ),
reason
);
ShowPlayerDialog( playerid, D_NULL, 0, "{33CCFF}Аккаунт заблокирован.", str, "Закрыть", "" );
return SKick( playerid, 28183 );
}
else
{
// Здесь выполняется запрос на удаление блокировки, если та истекла.
f(query,"DELETE FROM bans WHERE name = '%s'", GetName(playerid));
mysql_tquery( dbHandle, query, "", "" );
SendClientMessage( playerid, -1, "Срок Вашей блокировки истёк, пожалуйста не нарушайте правила сервера!");
}
return 1;
}