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



Не найдено.

5 posts in this topic

При вводе любого пароля выдаёт что он верный, помогите сделать проверку на правильность пароля.

Ошибок при компиляции нет

Вот код: 

Спойлер

		case DLG_LOG:
		{
		    if(response)
		    {
          		new checkpass[30];
          		if(strcmp(player_info[playerid][PASSWORD], checkpass, true, 30) == 0)
		        {
		            static const fmt_query[] = "SELECT * FROM `userss` WHERE `name` = '%s' AND `password` = '%s'";
		            new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)+(-2+30)];
				 	format(query, sizeof(query), fmt_query, player_info[playerid][NAME], player_info[playerid][PASSWORD]);
				 	mysql_tquery(dbHandle, query, "PlayerLogin", "i", playerid);
				}
		        else
				{
				    new string[68];
				    SetPVarInt(playerid, "WrongPassword", GetPVarInt(playerid, "WrongPassword")-1);
				    if(GetPVarInt(playerid, "WrongPassword") > 0)
					{
						format(string, sizeof(string), "[Ошибка] {FFFFFF}Вы ввели неверный пароль. Осталось %d попыток входа", GetPVarInt(playerid, "WrongPassword"));
					    SCM(playerid, COLOR_RED, string);
					}
				    if(GetPVarInt(playerid, "WrongPassword") == 0)
				    {
						SCM(playerid, COLOR_RED, "[Ошибка] {FFFFFF}Вы исчерпали лимит попыток входа и были отключены от сервера");
						SPD(playerid, -1, 0, " ", " ", " ", "");
                        return Kick(playerid);
					}
					ShowLogin(playerid);
				}
			}
		    else
		    {
		    	SCM(playerid, COLOR_RED, "Используйте /q для выхода с сервера");
			    SPD(playerid, -1, 0, " ", " ", " ", "");
			    return Kick(playerid);
			}
		}

 

 

Edited by Shakoladka

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

Большой код нужно брать под спойлер. Как это сделать можно узнать тут

Share this post


Link to post
Share on other sites

Попробуй сделать так:
 

if(!strcmp(pInfo[playerid][Password], inputtext))
        {
//тут твой код
        }
   	  else
        {
       Тут тоже
      }

 

Share this post


Link to post
Share on other sites

Не работает

Share this post


Link to post
Share on other sites

@Saito, функция, сравнивающая строки (strcmp), возвращает успешное значение (строки идентичны) еще в случае, когда одна из строк оказалась пустой. То есть в вашем случае player_info[playerid][PASSOWRD] или inputtext могут принимать пустые значения, из-за чего возникает такая ошибка. Выведите значения этих переменных в консоль или чат, чтобы проверить.

Share this post


Link to post
Share on other sites

Специально взял проверку со своего мода, у меня работает.

if(!strcmp(inputtext, массив с паролем, false, макс. длина))
{
    если верно;
}
else
{ 
	неверно;
}

 

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Человек-редиска
      By Редиска
      ПОМОГИТЕ!!!!!!!!
      НЕ СОХРАНЯЮТСЯ НОМЕРА НА АВТО.
      ПОЛУЧАЮ НОМЕРА, А ОНИ ПРОПАДАЮТ ПОСЛЕ ПОЛУЧЕНИЯ.
      ТО ЕСТЬ, КОГДА ПРОПИСЫВАЮ КОМАНДУ /FIXCAR И ВЫБЕРАЮ ВЫГРУЗИТЬ А ПОТОМ ЗАГРУЗИТЬ.
      ТО НОМЕРОВ УЖЕ НЕТУ, ТУПО ПРОПАЛИ!
      ЗАХОДИЛ В БД ТАМ ОНИ ПОЯВЛЯЮТСЯ, А НА АВТО ПОЧЕМУ ТО НЕ ОТОБРАЖАЮТСЯ.
      ПОТОМ Я РЕШИЛ ЗАЙТИ В ТАБЛИЦУ ПОД НАЗВАНИЕМ OWNABLE_CARS ТАМ Я УВИДЕЛ СТРОКУ C_NUMBERS
      В ЭТОМ СТРОКЕ Я ПРОПИСАЛ СВОЁ ИМЯ, ПОТОМ ЗАШЁЛ В ИГРУ, ЗАГРУЖАЮ АВТО И ЕСТЬ НОМЕРА.
      А ТО ЧТО У МЕНЯ ЕСТЬ ЕЩЁ ОДНА ТАБЛИЦА ПОД НАЗВАНИЕМ OWNABLE_NUMBERS.
      ТАМ У МЕНЯ ТОЛЬКО НОМЕРА ПОЯВЛЯЮТСЯ И ВСЁ. ТОЕСТЬ ОНИ НЕ ПРИВЯЗЫВАЮТСЯ К АВТО КОРОЧЕ ВОТ И ВСЁ!!!!!!
      ПОМОГИТЕ УЖЕ ПОЖАЛУЙСТА СРОЧНО НУЖНО.