Чет я не совсем догнал как сделать команду(on DC_CMD) /alogin. В идеале, я планировал сделать типа /alogin[пароль]. Я использую отдельно таблицу с аккаунтами администраторов (`admins`).
Вид для печати
Чет я не совсем догнал как сделать команду(on DC_CMD) /alogin. В идеале, я планировал сделать типа /alogin[пароль]. Я использую отдельно таблицу с аккаунтами администраторов (`admins`).
1) Создаешь переменную с паролем, можно глобальную можно в аккаунт.
2) Сделаем на примере глобальной:
3) После того как добавили эти две переменные, заходим в паблик OnPlayerConnect и добавляем:PHP код:
new password = 123123;//Наш пароль
new aLogin[MAX_PLAYERS];//Авторизован или нет
4) Далее создаем саму команду.PHP код:
aLogin[playerid] = 0; // Обнуляем
5) Во все администраторские команды добавляем проверку:PHP код:
CMD:alogin(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] == 0) return true;//Если не администратор, то команда не будет работать
if(aLogin[playerid] == 1) return SendClientMessage(playerid,-1,"Вы уже авторизованы как администратор");
if(sscanf(params, "i", params[0])) return SendClientMessage(playerid,-1,"/alogin [пароль]");
if(params[0] == password)
{
aLogin[playerid] = 1;
SendClientMessage(playerid,-1,"Вы авторизовались как администратор");
}
return true;
}
PHP код:
if(aLogin[playerid] != 1) return SendClientMessage(playerid,-1,"Вы не авторизованы как администратор");
bool + char однозначно лучше.
Ибо жрать меньше будет :)
А я-то думал, что уж все знают, что в pawn нет bool...
о боже .
!profit, что сложногоPHP код:
#define check_admin:: check_admin[playerid]=
new bool:check_admin[50]; // сколько макс админов
new pass_admin [50];// пароли
//когда выдаем админ права:
pass_admin[playerid]=0;
// регаем:
if(pass_admin[playerid]==0) pass_admin[playerid]=strval(inputtext),check_admin::true;
//в OnPlayerConnect :
check_admin::false;
//в авторизацию админа :
check_admin::true;
// проверка на админа:
if(check_admin::=false) return true;