Итак, задолбавшись каждый раз и в каждой теме писать как куда что и почему нужно сделать чтобы убрать какой-либо баг, решил создать данную тему где я распишу в точности что и где менять чтобы всё было ОК
Первым делом начнем с бага "хакерский пароль"
Меня очень смешило когда это называют таким образом
Суть этого бага состоит в сочетании нескольких букв в пароле при длине 14 символов(меньше не пробовал), которые при встроенной "шифровке" превращаются в перенос строки, тем самым смещая строки в сохранённом файле-аккаунте
Избавится от этой "заразы" можно двумя способами:
Сократить максимальную длинну пароля в командах "/regnick" и "/changepass" это делается следующим способом
находите строки
Quote
if (strcmp(cmd, "/regnick", true)==0)
{
tmp = strtok(cmdtext, idx);
и
Quote
if (strcmp(cmd, "/changepass", true)==0)
{
tmp = strtok(cmdtext, idx);
и после них вставте следующий код:
Quote
if(strlen(tmp)>тут укажите максимальное кол-во символов)
{
SendClientMessage(playerid, COLOR_GRAD1, " Вы превысили максимальную длину пароля");
return 1;
}
Всё, это был первый метод
Теперь второй:
Будим убирать шифровку пароля, это делается следующим способом ищим через поиск строки
и везде где вы их найдёте перед ними ставьте // , тем самым мы закомментируем данный код и он не будит выполняться, на этом всё, но тут есть 1 нюанс, после данного действия старые аккаунты игроков придется удалять, ТК в них будит зашифрованный пароль, а сейчас мы сделали чтобы он считывался не шифрованным
Ну вот мы и исправили так называемый "хакерский пароль"
Теперь перийдём к небольшому нюансу, он вам обязателен если у вас в моде разрешена кириллица(русские символы) при вводе пароля
Открываем скрипт, находим строки:
Quote
if (strcmp(cmd, "/regnick", true)==0)
{
tmp = strtok(cmdtext, idx);
и
Quote
if (strcmp(cmd, "/changepass", true)==0)
{
tmp = strtok(cmdtext, idx);
и сразу после них вставляем
Quote
new character[256];
new i, j;
new found = 0;
new foundchar[256];
for(i=0; i<(strlen(tmp)); i++)
{
strmid(character, tmp, i, i+1, 2);
for(j = 0; j<MAX_NICK_ALLOWED_CHARS; j++)
{
tmps1 = allowednickchars[j];
if(strcmp(hash(character), hash(tmps1), false) == 0)
{
found += 1;
foundchar = tmps1;
}
}