inputtext

Orlov

Новичок
Автор темы
10
1
Всем привет, хочу сделать сравнение строки в моде, но не получается, из-за того, что чтобы я не вводил в диалог, это преобразовывается в 49.

Вот код:
C++:
case 2936:
        {
            if(response)
            {
                if(!strlen(inputtext))
                {
                    SPD(playerid,2936,DIALOG_STYLE_INPUT,"Админ авторизация","{FFFFFF}Введите Ваш пароль от админ панели в поле ниже","Войти","Отмена");
                    return SendClientMessage(playerid, COLOR_RED, "[Ошибка] {FFFFFF}Вы не ввели пароль");
                }
                if(strcmp(PlayerInfo[playerid][admPass], inputtext, false, 6) == 0)
                {
                    PAdmLog{playerid} = 1;
                    new notific[66];
                    new sendername[MAX_PLAYER_NAME];
                    GetPlayerName(playerid, sendername, sizeof(sendername));
                    format(notific, sizeof(notific), "[A] %s авторизовался в админ панеле", sendername);
                    ABroadCast(COLOR_LIGHTBLUE,notific,1);
                }
                else
                {
                    printf("Проверяю %d с %d", inputtext, PlayerInfo[playerid][admPass]); //это я сделал мини-дебаг, чтобы узнать, почему пароль всегда неверный.
                    SPD(playerid,2936,DIALOG_STYLE_INPUT,"Админ авторизация","{FFFFFF}Введите Ваш пароль от админ панели в поле ниже","Войти","Отмена");
                    new notific[66];
                    new sendername[MAX_PLAYER_NAME];
                    GetPlayerName(playerid, sendername, sizeof(sendername));
                    format(notific, sizeof(notific), "[A] %s ввёл неверный пароль от админки", sendername);
                    ABroadCast(COLOR_LIGHTBLUE,notific,1);
                    SendClientMessage(playerid, COLOR_RED, "[Ошибка] {FFFFFF}Вы ввели неверный пароль. Повторите попытку");
                }
            }
        }

Вот, что выводит в консколь "Проверяю 49 с 1726".

Он проверяет 49 независимо от того, что я ввожу в диалог!!!
 
Решение
C++:
new inputpass = strval(inputtext); // считываем целочисленное значение из inputtext.
new admPass = PlayerInfo[playerid][admPass];
if(inputpass == admPass)
{
    // some code..
}

strcmp сравнивает две строки, а у тебя два целочисленных значения. их и оператором == сравнить можно

Orlov

Новичок
Автор темы
10
1
C++:
if(!strlen(inputtext))
{
    // твой код..
}
new inputpass = strval(inputtext); // считываем целочисленное значение из inputtext.
// теперь везде inputtext заменяем на inputpass
if(strcmp(PlayerInfo[playerid][admPass], inputpass, false, 6) == 0)
{
    // твой остальной код..
}

error 035: argument type mismatch (argument 2)

строка:
if(strcmp(PlayerInfo[playerid][admPass], inputpass, false, 6) == 0)
 

repugnantbytheway

Известный
140
38
C++:
new inputpass = strval(inputtext); // считываем целочисленное значение из inputtext.
new admPass = PlayerInfo[playerid][admPass];
if(inputpass == admPass)
{
    // some code..
}

strcmp сравнивает две строки, а у тебя два целочисленных значения. их и оператором == сравнить можно
 
  • Влюблен
Реакции: Orlov