Sersoftin
15.10.2014, 13:23
Некоторые поймут наверное. Возникла необходимость отрубить возможность использования команд до тех пор, пока игрок не авторизуется и это логично, как мне кажется. Я бы даже сказал, что необходимо
if (!AcInfo[playerid][ac_Logined]) return 0;
в OnPlayerCommandText не прокатывает. Скажите, что и куда тыкнуть, т.к. я нуб пока в этом деле.
Колбэки OnPlayerCommandReceived и OnPlayerCommandPerformed:
OnPlayerCommandReceived:
OnPlayerCommandReceived(playerid, cmdtext[])
Вызывается перед обработкой команды. В ней можно указать условия выполнения команды.
При этом с помощью return 1/0 можно разрешить/запретить выполнение команды.
Пример:
public OnPlayerCommandReceived(playerid, cmdtext[])
{
if(PlayerInfo[playerid][pMute] == 1) // если у игрока затычка (/mute)
{
SendClientMessage(playerid, -1, "Дождитесь окончания действия заглушки!");
return 0; // передать плагину, чтобы он не выполнял команду
}
return 1; // разрешить выполнение команды
}
OnPlayerCommandPerformed:
OnPlayerCommandPerformed(playerid, cmdtext[], success);
Вызывается после выполнения команды.
При этом если success = 1 - команда выполнилась успешно, success = 0 - с ошибкой, success = -1 - команда не найдена.
Таким образом можно самостоятельно сделать поддержку стандартных команд:
public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
if(success == -1) // если команда не найдена
{
return OnPlayerCommandText(playerid, cmdtext);
}
return 1; // разрешить выполнение команды
}
Либо можно сделать сообщение о несуществующей команде:
public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
if(success == -1) // если команда не найдена
{
return SendClientMessage(playerid, -1, "Несуществующая команда. Используйте /help, чтобы узнать список команд сервера.");
}
return 1;
}
...
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot