Через Crashdetect тестировали код?
Вид для печати
Через Crashdetect тестировали код?
Да не чего не показало !
И лучше замени стринг для чата новым. Не желательно чтобы стринг для чата использовался в других функциях.PHP код:
if(Mobile[playerid] != INVALID_PLAYER_ID)
{
new idx,tmp[64];
tmp = strcharsplit(text, idx);
format(stringer, sizeof(stringer), "[Телефон] %s: %s", PlayerInfo[playerid][pNames], text);
ProxDetector(20.0, playerid, stringer,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);
return false;
}
Этот совет пробовали?
Если да, то попробуйте следующий код
Я думаю, что в tmp записывается строка длиннее 64 символов и из-за этого происходит ошибка. И этот код поможет роверить мои догадкиPHP код:
if(Tel[playerid] == 1)
{
SendClientMessage(playerid, 0xFF0000FF, "Сработало первое условие (1)");
new idx,tmp[64];
SendClientMessage(playerid, 0xFF0000FF, "Сработало первое условие (2)");
tmp = strcharsplit(text, idx);
SendClientMessage(playerid, 0xFF0000FF, "Сработало первое условие (3)");
format(stringer, sizeof(stringer), "[Телефон] %s: %s", PlayerInfo[playerid][pNames], text);
SendClientMessage(playerid, 0xFF0000FF, "Сработало первое условие (4)");
ProxDetector(20.0, playerid, stringer,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);
SendClientMessage(playerid, 0xFF0000FF, "Сработало первое условие (5)");
return false;
}
return false погоды не сделает. Код сработает и мод дальше начнёт проверять условия, пока не дойдёт до return false в самом конце колбэка. Тут дело в ошибке, которая вызвана переполнением памяти. Срабатывает ошибка и в колбэк возвращается значение, не равное 0 (скорее даже вообще ничего не возвращается). Потому и отправляется сообщение без ID и прочего
- - - Добавлено - - -
В этом случае ничего плохого не случится. Сначала в массив запишется ник игрока, потом данные из массива попадут в format и format перезапишет ник на строку. А вот в этом кодеPHP код:
new string[36];
GetPlayerName(playerid, string, MAX_PLAYER_NAME);
format(string, sizeof(string), "Ваш ник - %s", string);
SendClientMessage(playerid, -1, string);
Уже случится ошибка, ибо в массиве будет хранится строка "Ваш ник - *ник*", когда очередь дойдёт до второго format. И в случае, который показан у автора, погоды новый массив не сделает. Максимум, что будет - потеряются данные для какой-то другой функции. Но подобного бага с чатом вызвать один массив не могPHP код:
new string[23+3+MAX_PLAYER_NAME];
GetPlayerName(playerid, string, MAX_PLAYER_NAME);
format(string, sizeof(string), "Ваш ник - %s", string);
SendClientMessage(playerid, -1, string);
format(string, sizeof(string), "Ник игрока с ID %d - %s", playerid, string);
SendClientMessageToAll(-1, string);
Ну так что мне именно сделать?