-
Цитата:
Сообщение от
Alanchick
Чем плох мой вариант?
Тем, что Вы изобретаете велосипед? Вот как выглядит реализация с вызовом OnPlayerText
PHP код:
CMD:byplayer(playerid, params[])
{
if(GetPVarInt(playerid, "Logged") == 0 || PlayerInfo[playerid][pAdmin] <= 4) return true; // Проверка на админ-уровень (с 5 админ-уровня)
new player, text[145];
if(sscanf(params, "ds[144]", player, text)) return SendClientMessage(playerid, -1, "Введите: /byplayer [id игрока] [текст]"); // Если игрок не ввел какое либо значение
if(GetPVarInt(player, "Logged") == 0) return SendClientMessage(playerid, -1, "Игрок не авторизован!"); // Если игрок, id которого ввели, не авторизован
if(playerid == player) return SendClientMessage(playerid, -1, "Вы не можете указать свой ID!"); // Если игрок указал свой ID
if(PlayerInfo[player][pAdmin] > 0) return SendClientMessage(playerid, -1, "Вы не можете что то сказать от имени администраторa!"); // Если указанный игрок - администратор
OnPlayerText(player, text);
return true;
}
И никакого массива для форматирования строки, и никакого форматирования строки... Ещё есть вопросы о том, почему Ваш вариант хуже?
P.S. И зачем Вы навязываете нам какие-то свои макросы? Зачем мне ваш SCM? Вам трудно было изменить 3 SCM на нормальную функцию? Этот макрос никакой ценности не несёт, а значит он тут ни к чему.
Так же, как уже писали выше, Вы пытаетесь записать текст в обычную переменную (это я о переменной "text")
Плюс ко всему, Вы записываете ID игрока в переменную "player", а уже потом используете какой-то "id".
В общем, идея на тройку (бессмысленно, да и придумали её до Вас), а реализация на двойку
UPD: Ещё вот эта проверка очень забавная. Что Вы тут проверяете? И как? О_о
PHP код:
if(PlayerInfo[playerid][pName] == PlayerInfo[player][pName]) return SendClientMessage(playerid, -1, "Вы не можете указать свой ID!"); // Если игрок указал свой ID
Да и имя "player" для переменной не самое лучшее, ибо его легко спутать с "playerid". Сами же потом будете свои глазки напрягать для поиска нужного отрезка кода...
Да и если Вы решили возвращать "bool", то извольте делать это до конца. А то в одном месте у Вас "true", а в другом - "1". Как сказал один очень умный человек: "любой компилятор C++ уже отругал бы тебя". В Вашем случае он бы Вас давно высек кнутом
+, опять же, зачем Вы навязываете нам свой ненужный код? Что за pVar "Logged"? Может у меня уже по-своему реализована проверка на онлайн, а Вы мне свою пихаете... Неправильно это, сударь