Sign in to follow this  
Followers 0
F1re

Проблема с /alogin

Рекомендованные сообщения



17 posts in this topic

Любой игрок вводит /alogin, вводит свой пароль от аккаунта и получает админку 6 лвл.

Если даже так, я указал игроку 3 лвл админки он при /alogin получает 6 лвл.

Share this post


Link to post
Share on other sites
CMD:alogin(playerid, params[])
{
    if(GetPVarInt(playerid, "check_adm") > gettime()) return 1;
    else if(AdminLogged[playerid]) return SendClientMessage(playerid, COLOR_GREY, "Вы уже авторизовались как администратор!");
 	new string[128];
	format(string, sizeof(string), "SELECT * FROM "T_ADMIN" WHERE `name` = '%s'", GetName(playerid));
	mysql_tquery(dbHandle, string, "adm", "is", playerid, GetName(playerid));
 	SetPVarInt(playerid, "check_adm", gettime()+5);
 	return 1;
}

 

Share this post


Link to post
Share on other sites

@Timur_Top выкладывайте паблик adm под спойлером. Также, скиньте любую админскую команду (также под спойлером), например команду кика игрока. 

Share this post


Link to post
Share on other sites
Спойлер

public adm(playerid, name[]) {     new rows, fields;     cache_get_data(rows, fields);     if(!rows)     {         if(PI[playerid][pAdmin] > ADM_NONE) PI[playerid][pAdmin] = ADM_NONE;         return 1;     }     new Password[16];     cache_get_field_content(0, "password", Password, dbHandle);     if(!strcmp(Password, "qwerty", true))     {         SetPVarInt(playerid, "adm", 1);         ShowPlayerDialog(playerid, D_adm, DIALOG_STYLE_PASSWORD, "{ffcc00}Регистрация администратора", "{FFFFFF}Введите пароль, который будет от панели администратора\n\n{63BD4E}Примечание:\n\t- Пароль должен состоять из латинских букв и цифр\n\t- Размер пароля от 6 до 15 символов", "Принять", "Отмена");     }     else     {         SetPVarInt(playerid, "adm", 0);         ShowPlayerDialog(playerid, D_adm, DIALOG_STYLE_PASSWORD, "{ffcc00}Доступ администратора", "{FFFFFF}Введите Ваш пароль от панели администратора\nЕсли вы забыли ваш пароль,то обратись в руководителю.", "Принять", "Отмена");     }     return 1; }

Спойлер

CMD:kick(playerid, params[])
{
    if(PI[playerid][pAdmin] < ADM_SUPER_MODER) return SendClientMessage(playerid, COLOR_WHITE, "Êîìàíäà íå îáíàðóæåíà! Èñïîëüçóéòå {FFCC00}/menu {FFFFFF}äëÿ ïðîñìîòðà êîìàíä");
    else if(AdminLogged[playerid] == false) return SendClientMessage(playerid, COLOR_GREY, YouAreNotLoggedInAsAdmin);
    else if(sscanf(params, "uS()[32]", params[0], params[1])) return SendClientMessage(playerid, VAGOS_COLOR, "• [ Ïîäñêàçêà ] {ffffff}Ââåäèòå: /kick [id èãðîêà] [ïðè÷èíà]");
    else if(!IsPlayerConnected(params[0]) || params[0] == INVALID_PLAYER_ID || params[0] == playerid) return SendClientMessage(playerid, COLOR_GREY, PlayerIsNotOnline);
       else if(PlayerLogged[params[0]] == false) return SendClientMessage(playerid, COLOR_GREY, PlayerIsNotAuthorized);
    else if(PI[playerid][pAdmin] <= PI[params[0]][pAdmin]) return AttemptRemoveAdmin(playerid);
    else if(IsIpFound(params[1]) || CheckString(params[1])) return AdminAntisliv(playerid, params[1]);
    new string[128];
    if(strlen(params[1])) format(string, sizeof(string), "Àäìèíèñòðàòîð %s êèêíóë èãðîêà %s. Ïðè÷èíà: %s", GetName(playerid), GetName(params[0]), params[1]);
    else format(string, sizeof(string), "Àäìèíèñòðàòîð %s êèêíóë èãðîêà %s.", GetName(playerid), GetName(params[0]));
    SendAdminMessageToAll(COLOR_RED, string, params[0]);
    SendLog("Kick",string);
    Kick(params[0]);
    return 1;
}
 

 

 

Share this post


Link to post
Share on other sites

Свою команду /alogin замените этой, и диалог d_adm скиньте еще.

CMD:alogin(playerid, params[])
{
	if(PI[playerid][pAdmin] < 1) return true; 
    if(GetPVarInt(playerid, "check_adm") > gettime()) return 1;
    else if(AdminLogged[playerid]) return SendClientMessage(playerid, COLOR_GREY, "Вы уже авторизовались как администратор!");
 	new string[128];
	format(string, sizeof(string), "SELECT * FROM "T_ADMIN" WHERE `name` = '%s'", GetName(playerid));
	mysql_tquery(dbHandle, string, "adm", "is", playerid, GetName(playerid));
 	SetPVarInt(playerid, "check_adm", gettime()+5);
 	return 1;
}

 

Share this post


Link to post
Share on other sites

@stibs можно на английском написать ? найти не могу

Share this post


Link to post
Share on other sites
Спойлер

 


case D_adm:
        {
            if(!response) return 1;
            new string[144];
            switch(GetPVarInt(playerid,"adm"))
            {
                case 1:
                {
                    if(!strlen(inputtext)|| !strcmp(inputtext, "qwerty", true) || strlen(inputtext) < 6 || strlen(inputtext) > 16 || strfind(inputtext, "=", true) != -1)
                        return ShowPlayerDialog(playerid, D_adm, DIALOG_STYLE_PASSWORD, "{ffcc00}Регистрация администратора", "{FFFFFF}Введите пароль, который будет от панели администратора\n\n{63BD4E}Примечание:\n\t- Пароль должен состоять из латинских букв и цифр\n\t- Размер пароля от 6 до 15 символов", "Принять", "Отмена");
                    SetPVarString(playerid, "inputtext", inputtext);
                    format(string, sizeof(string), "SELECT * FROM "T_ADMIN" WHERE `name` = '%s'", GetName(playerid));
                    mysql_tquery(dbHandle, string, "admReg", "is", playerid, GetName(playerid));
                }
                case 0:
                {
                    if(!strlen(inputtext)) return ShowPlayerDialog(playerid, D_adm, DIALOG_STYLE_PASSWORD, "{ffcc00}Доступ администратора", "{FFFFFF}Введите Ваш пароль от панели администратора\nЕсли вы забыли ваш пароль,то обратись в руководителю.", "Принять", "Отмена");
                    mysql_format(dbHandle, string, sizeof(string), "SELECT * FROM "T_ADMIN" WHERE `name` = '%s' AND `password` = '%e'", GetName(playerid), inputtext);
                    mysql_tquery(dbHandle, string, "admAuth", "is", playerid, inputtext);
                }
            }
            return 1;
         }
    }
    return 1;
}

 

 

Share this post


Link to post
Share on other sites
public admAuth(playerid, inputtext[])
{
    new rows, fields;     cache_get_data(rows, fields);     if(!rows)
    {
        SendClientMessage(playerid, COLOR_GREY, "Íåâåðíûé ïàðîëü");         SetPVarInt(playerid, "attempt_pass", GetPVarInt(playerid, "attempt_pass") + 1);         if(GetPVarInt(playerid, "attempt_pass") > 3)
        {
            DeletePVar(playerid, "attempt_pass");             SKick(playerid, 2112);
        }
    }
    else
    {
        new string[144], ipplayer[256];         AdminLogged[playerid] = true;         PI[playerid][pAdmin] = cache_get_row_int(0, 1, dbHandle);         AdminInfo[playerid][admGoto] = cache_get_row_int(0, 6, dbHandle);         AdminInfo[playerid][admGethere] = cache_get_row_int(0, 7, dbHandle);         AdminInfo[playerid][admSpectate] = cache_get_row_int(0, 8, dbHandle);         AdminInfo[playerid][admTimeMin] = cache_get_row_int(0, 9, dbHandle);         GetPlayerIp(playerid,ipplayer,sizeof(ipplayer));         static const Admin_Names[6][32] =
        {
            "Õåëïåð","Ìë. Àäìèíèñòðàòîð","Àäìèíèñòðàòîð","Çàì. ÃÀ","Ãë. Àäìèíèñòðàòîð","Ðóêîâîäèòåëü"
        }
        ;         if(PI[playerid][pSex] == 1) format(string, sizeof(string), "[A] %s %s[%i] àâòîðèçîâàëñÿ [IP: %s | R-IP %s]", Admin_Names[PI[playerid][pAdmin]-1], GetName(playerid), playerid,  PI[playerid][pLastIP],PI[playerid][pRegIP]);         else format(string, sizeof(string), "[A] %s %s[%i] àâòîðèçîâàëàñü [IP: %s | R-IP %s]", Admin_Names[PI[playerid][pAdmin]-1], GetName(playerid), playerid, ipplayer,PI[playerid][pIP]);         SendAdminMessage(0x99CCFFFF, string);         new day, month, year;           getdate(year, month, day);         mysql_format(dbHandle, string, 144, "UPDATE "T_ADMIN" SET `last_connect` = '%d.%d.%d' WHERE `name` = '%s' LIMIT 1", day, month, year, GetName(playerid));         mysql_tquery(dbHandle, string, "", "");
    }
    return 1;
}

 

Share this post


Link to post
Share on other sites

@Timur_Top еще раз скиньте AdmReg, скопируйте код из PAWN на русской раскладке, чтобы не было квакозябр. 

Share this post


Link to post
Share on other sites
Спойлер

public admReg(playerid, name[])
{
    new rows, fields;
    cache_get_data(rows, fields);
    if(!rows) return 1;
    new inputtext[16], string[144], ipplayer[256];
    GetPVarString(playerid, "inputtext", inputtext, sizeof(inputtext));
    mysql_format(dbHandle, string, sizeof(string), "UPDATE "T_ADMIN" SET `password` = '%s' WHERE `name` = '%s' LIMIT 1", inputtext, GetName(playerid));
    mysql_tquery(dbHandle, string, "", "");
    PI[playerid][pAdmin] = cache_get_row_int(0, 1, dbHandle);
    GetPlayerIp(playerid,ipplayer,sizeof(ipplayer));
    MysqlUpdatePlayerInt(playerid, "admin", PI[playerid][pAdmin]);
    static const Admin_Names[6][32] = {"Хелпер","Мл. Администратор","Администратор","Зам. ГА","Гл. Администратор","Руководитель"};
    if(PI[playerid][pSex] == 1) format(string, sizeof(string), "[A] %s %s[%i] авторизовался [IP: %s | R-IP %s]", Admin_Names[PI[playerid][pAdmin]-1], GetName(playerid), playerid, PI[playerid][pLastIP],PI[playerid][pRegIP]);
    else format(string, sizeof(string), "[A] %s %s[%i] авторизовалась [IP: %s | R-IP %s]", Admin_Names[PI[playerid][pAdmin]-1], GetName(playerid), playerid, ipplayer,PI[playerid][pIP]);
    SendAdminMessage(0x99CCFFFF, string);
    AdminLogged[playerid] = true;
    new day, month, year;
    getdate(year, month, day);
    mysql_format(dbHandle, string, sizeof(string), "UPDATE "T_ADMIN" SET `last_connect` = '%d.%d.%d' WHERE `name` = '%s' LIMIT 1", day, month, year, GetName(playerid));
    mysql_tquery(dbHandle, string, "", "");
    return 1;
}

 

 

Share this post


Link to post
Share on other sites

@Timur_Top скиньте структуру таблицы "admins" (зайдите в эту таблицу и нажмите экспортировать, скачавшийся файл киньте сюда). 

Share this post


Link to post
Share on other sites

@stibs Способ экспорта: Быстрый , Обычный

И Формат SQL 

Какой способ выбрать?

 

Share this post


Link to post
Share on other sites

Замените свой паблик этим, и либо сами, либо с кем-то вызовите диалог регистрации нового администратора. После скиньте сюда логи. 

Спойлер

public admReg(playerid, name[])
{
    new rows, fields;
    cache_get_data(rows, fields);
    if(!rows) return 1;
    new inputtext[16], string[144], ipplayer[256];
    GetPVarString(playerid, "inputtext", inputtext, sizeof(inputtext));
	printf("%s(%d) - inputtext(id)", inputtext, playerid);
    mysql_format(dbHandle, string, sizeof(string), "UPDATE "T_ADMIN" SET `password` = '%s' WHERE `name` = '%s' LIMIT 1", inputtext, GetName(playerid));
    mysql_tquery(dbHandle, string, "", "");
    PI[playerid][pAdmin] = cache_get_row_int(0, 1, dbHandle);
	printf("%d(%d) - leveladm(playerid)", PI[playerid][pAdmin], playerid);
    GetPlayerIp(playerid,ipplayer,sizeof(ipplayer));
    MysqlUpdatePlayerInt(playerid, "admin", PI[playerid][pAdmin]);
    static const Admin_Names[6][32] = {"Хелпер","Мл. Администратор","Администратор","Зам. ГА","Гл. Администратор","Руководитель"};
    if(PI[playerid][pSex] == 1) format(string, sizeof(string), "[A] %s %s[%i] авторизовался [IP: %s | R-IP %s]", Admin_Names[PI[playerid][pAdmin]-1], GetName(playerid), playerid, PI[playerid][pLastIP],PI[playerid][pRegIP]);
    else format(string, sizeof(string), "[A] %s %s[%i] авторизовалась [IP: %s | R-IP %s]", Admin_Names[PI[playerid][pAdmin]-1], GetName(playerid), playerid, ipplayer,PI[playerid][pIP]);
    SendAdminMessage(0x99CCFFFF, string);
    AdminLogged[playerid] = true;
    new day, month, year;
    getdate(year, month, day);
    mysql_format(dbHandle, string, sizeof(string), "UPDATE "T_ADMIN" SET `last_connect` = '%d.%d.%d' WHERE `name` = '%s' LIMIT 1", day, month, year, GetName(playerid));
    mysql_tquery(dbHandle, string, "", "");
    return 1;
}

 

 

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Keynig
      By Keynig
      Все приветствую! Столкнулся с  такой проблемой .Захотелось сделать что бы на сервере было 2 логотипа, один был тогда когда игрок играет без модпака.А второй когда игрок подключает мод пак и у него пропадает стандартный логотип, и появляется 3д.
       
      ПОМОГИТЕ  ПОЖАЛУЙСТА. Желательно в кратчайшей срок.
      Заранее СПАСИБО!
    • Guest Nikitos
      By Guest Nikitos
      Привет всем. 
      Ребят помогите решить проблему с X2DAY. МОД Merlin Project.
      Я захожу на сервер. Включаю X2DAY Через кмд /serversettings 
      Работаю на любой работе, И зп не увеличивается так-же и exp не увеличивается.
      в чём проблема не могу понять.
    • rediska
      By rediska
      Мне нужно сделать диалоговое меню для команды /ahelp
      Вот код: