Окей,а с рекурсией что делать?При включении инклуда сразу появляется,при выключении рекурсии нет.
Вид для печати
Да, кстати, очень актуально. Сам плагин CRP старый, и похоже автор не знал в то время про перехваты функций, и задефайнил самым обычным способом, из-за чего и возникают подобные ошибки.
Это во-первых, во-вторых там нет поддержки для PlayerTextDraw's, из-за того, что они появились в 0.3e в 2012 году, тогда как плагин сам 2011.
Решение, что сделал у себя:
1. Закомментируй строки
PHP код:
#define GameTextForAll GameTextForAllRus
#define GameTextForPlayer GameTextForPlayerRus
#define CreateMenu CreateMenuRus
#define AddMenuItem AddMenuItemRus
#define SetMenuColumnHeader SetMenuColumnHeaderRus
#define TextDrawCreate TextDrawCreateRus
#define TextDrawSetString TextDrawSetStringRus
#define CreatePlayerTextDraw CreatePlayerTextDrawRus
#define PlayerTextDrawSetString PlayerTextDrawSetStringRus
2.Сделать перехватички для всех нативных функий
Пример с GameTextForAll:
Точно таким же образом и для всех остальных функцийPHP код:
stock crp_GameTextForAll(string[], time, style)
{
CRP(string, buffer);
return GameTextForAll(buffer, time, style);
}
#if defined _ALS_GameTextForAll
#undef GameTextForAll
#else
#define _ALS_GameTextForAll
#endif
#define GameTextForAll crp_GameTextForAll
3. Добавить перехватчики для CreatePlayerTextDraw() и PlayerTextDrawSetString():
PHP код:
stock PlayerText:crp_CreatePlayerTextDraw(playerid, Float:x, Float:y, text[])
{
CRP(text, buffer);
return CreatePlayerTextDraw(playerid, x, y, buffer);
}
#if defined _ALS_CreatePlayerTextDraw
#undef CreatePlayerTextDraw
#else
#define _ALS_CreatePlayerTextDraw
#endif
#define CreatePlayerTextDraw crp_CreatePlayerTextDraw
// -------------------------------------------------------------------------------------*-
stock crp_PlayerTextDrawSetString(playerid, PlayerText:text, string[])
{
CRP(string, buffer);
return PlayerTextDrawSetString(playerid, text, buffer);
}
#if defined _ALS_PlayerTextDrawSetString
#undef PlayerTextDrawSetString
#else
#define _ALS_PlayerTextDrawSetString
#endif
#define PlayerTextDrawSetString crp_PlayerTextDrawSetString
Я спрашивал,почему возникает рекурсия из-за инклуда fixes!
Чем она мешает, вы что, все помешались на этой рекурсии?!
А ещё иногда такое бывает когда пластинку заедает и она начинает повторятся, тем самым сервер всё больше и больше нагружается, но это уже быдлокоды такое исполняют.