А ты уверен, что игрок с первого раза ввел свой пароль?
Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman
Значит либо при регистрации пароль хэшируешь неправильно, либо проверяешь неверно. Функция работает нормально.
Возьми свой пароль, соль и захэшируй их в OnGameModeInit с выводом в консоль, а после посмотри с каким из двух результатов будет совпадать
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Ну логируй то, какие данные приходят в функцию до хэширования, какая получается соль и какой результат. А после смотри что попадает в БД.
Причина, скорее всего, в коде, который вызывает показанные тобой функции, а не в самих функциях
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Причина оказалось в самой функции CreatePlayerPassword, точно не знаю почему pawn так повел себя (очень странно). Короче говоря, перенес весь код (т.е. цикл с созданием соля) в OnGameModeInit и логировал длину получаемого соля (создавал массив с 65 ячейками для соля, так же как и в энуменаторе игрока), длина строки оказалась 67. Не знаю как так получалось. Изменил кол-во циклов с 65 на 64, длина строки изменилась на 64 (т.е. на нормальную длину, которая должна была быть). Ну вкратце, проблема решена, но тему оставлю открытой, вдруг кто знает в чем именно заключалась моя ошибка и почему длина строки получалась в 67 символов, хотя я компилировал дебаг режимом (-d3) и с подключенным crashdetect'ом.
P.S. Крашев не было (т.е. связанных с выходом за пределы массива). Crashdetect молчал.
Последний раз редактировалось Geebrox; 23.01.2017 в 19:28.
Код был выше, прочитай ранее сообщение и поймешь.
- - - Добавлено - - -
Для того чтобы лишние вопросы не возникали, скину код еще раз:
Логирование в OnGameModeInit:
Изменил на:PHP код:
new salt[64 + 1];
new length = strlen(random_letters);
for(new i = 0; i < 65; i++)
{
salt[i] = random_letters[random(length)];
}
printf(#%d, strlen(salt)); // выводило 67,крашев не было, выход за пределы массива тоже не было
Изменил код в CreatePlayerPassword:PHP код:
new salt[64 + 1];
new length = strlen(random_letters);
for(new i = 0; i < 64; i++)
{
salt[i] = random_letters[random(length)];
}
printf(#%d, strlen(salt)); // начал выводить 64 (длину которая должна была быть)
Проблема решена, но остается вопрос, почему же строка получалась с длиной в 67 символов?
Последний раз редактировалось Geebrox; 23.01.2017 в 19:41.
В первоначальном цикле у тебя итерации начинались с нуля до 64 включительно. Это и было проблемой. То бишь, с тем условием цикл совершал лишнюю итерацию.
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)