Question

Проблема такова, при входе на сервер пишет: "Вы вошли как администратор. Для авторизации, введите /alogin", при вводе /alogin ничего не происходит, после чего в БД строка admin сбрасывыется на 0. Кто может, подскажите.

CMD:alogin(playerid, params[])
{
    if(GetPVarInt(playerid, "alogin_timer") > gettime()) return SendClientMessage(playerid, COLOR_GREY, "Не флуди");
    else if(gAdminLogged[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, "@Alogin", "is", playerid, GetName(playerid));
        SetPVarInt(playerid, "alogin_timer", gettime()+3);
        return true;
}  

Вот что находится в @alogin:

@Alogin(playerid, name[]);
@Alogin(playerid, name[])
{
    new rows;
        cache_get_row_count(rows);
        if(!rows)
        {
                if(pInfo[playerid][pAdmin] > 0)
                {
                        pInfo[playerid][pAdmin] = 0;
                        MysqlUpdatePlayerInt(playerid, "admin", pInfo[playerid][pAdmin]);
                }
                return true;
        }  

 

Share this post


Link to post

3 answers to this question

  • 0

@#Nelson, так здесь нет загрузки уровня администратора (в public-функции). Покажите структуру таблицы в базе данных и укажите версию библиотеки MySQL.

Share this post


Link to post
  • 0
1 час назад, odosenok сказал:

@#Nelson, так здесь нет загрузки уровня администратора (в public-функции). Покажите структуру таблицы в базе данных и укажите версию библиотеки MySQL.

R41-4

Структура прикреплена, извиняюсь за изображения в неверном порядке, форум сам перемешивает

 

 

Спойлер

4.PNG

3.PNG

2.PNG

5.PNG

1.PNG

 

 

Заметка от DEST , создано

Скриншоты и изображения добавляйте под спойлер.

Share this post


Link to post
  • 0

@#Nelson,

 

Спойлер

@Alogin(playerid, name[]);
@Alogin(playerid, name[])
{
	if(cache_num_rows() == 0)
		return SendClientMessage(playerid, -1, "Произошла техническая ошибка (аккаунт в базе данных не найден") & 0;
	
	cache_get_value_name_int(0, "admin", pInfo[playerid][pAdmin]); // загружаем из базы данных уровень администратора
	
	if(pInfo[playerid][pAdmin] == 0) // если уровень администратора равен нулю
		return SendClientMessage(playerid, -1, "Вы не являетесь администратором") & 0;
	else
		gAdminLogged[playerid] = true;
	
	return 1;
}

 

 

Share this post


Link to post
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • zerolora
      By zerolora
      Всем привет, помогите пожалуйста разобраться. Что за беда с командой. Младшие ранги могут банить основателей на раз-два. Хотя в команде вроде как есть защита FD
       
      CMD:ban(playerid, params[]) {     if(PI[playerid][pAdmin] < 3) return SCM(playerid, COLOR_RED, NO_DOSTUP_TEXT);     if(!ADuty{playerid}) return callcmd::apanel(playerid);     static id, days, reason[30];     if(sscanf(params, "uds[30]", id, days, reason)) return SCM(playerid, COLOR_RED, !"Используй: /ban [id] [days 1-30] [Причина]");     if(id == INVALID_PLAYER_ID) return 0;     if(GetString(PN(id), ""FULL_FD"") && !GetString(PN(id), ""FULL_FD2"")) return SCM(playerid, COLOR_RED, "Нельзя забанить создателя");     if(strlen(reason) > 30) return SCM(playerid, COLOR_RED, !"Не больше 30 символов!");     if(IsAIP(reason)) return 1;     if(CheckIsADomen(playerid, reason)) return 1;     if(!(1 <= days <= 30)) return SCM(playerid, COLOR_RED, !"Используй: /ban [id] [days 1-30] [Причина]");     if(id == playerid) return SCM(playerid, COLOR_GREY, !"Вы не можете выдать наказание самому себе!");     ASCMToAllf(COLOR_LIGHTRED, "Администратор %s[%i] забанил игрока %s[%i] на %i дней. Причина: %s", PN(playerid), playerid, PN(id), id, days, reason);     AntiReAction(playerid);     SPDf(id, 0, DIALOG_STYLE_MSGBOX, !"", !"Закрыть", !"", !"Вы получили бан аккаунта, если вы не согласны с решением Администратора, то напишите жалобу на форум, приложив данный скриншот.\n{2D8E35}%s", ServerCFG[server_forum]);     UpdatePlayerDataInt(id, "Warns", 0);     BanName(PN(id), PN(playerid), days, reason);     PI[playerid][pReputation] += 5;     UpdatePlayerDataInt(playerid, "Reputation", PI[playerid][pReputation]);     //  aml(8, playerid, PN(id), reason, days);     str_1[0] = EOS, f(str_1, sizeof(str_1), "%s[%i] забанил игрока %s[%i] на %i дней. Причина: %s", PN(playerid), playerid, PN(id), id, days, reason);     SavePunish(0, str_1, id);     return J_Kick(id); }