Вобщем такая проблема. Сделал регу через диалоговое окно, но сделал через одно место и оно регит/логинит в не зависимости от того какой пароль вводиш. вот стандартная рега
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { new tmppass[64];//преобразованный пароль if(dialogid == 1)//итак, наше первое окно { if(response) // при нажатие на левую кнопку (логин) { if(!strlen(inputtext))// если оставляет пустую строку, выводим ему опять окно { new loginmsg[256+1]; format(loginmsg,256,"Здравствуйте,Вы вошли на Сервер.\n\nЭтот ник зарегистрирован.\nУ вас есть 60 секунд что б ввести пароль."); ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Авторизация",loginmsg,"Логин","Отмена"); return 1; } strmid(tmppass, inputtext, 0, strlen(inputtext), 255); Encript(tmppass); if (gdebug){printf("DEBUG enterd %s", tmppass);} OnPlayerLogin(playerid,tmppass); } else // если нажимает правую кнопку (отмена) { SendClientMessage(playerid, COLOR_WHITE, "*Сервер: Вы не залогинилсь, учтите ваш прогрес не сохраниться. Рекомендуем перезайти и залогиниться"); // здесь вы уже сами выбирайте, но я кикну его, ибо я хочу, чтобы он авторизовывался } } else if(dialogid == 2)//переходим ко второму диалоговому окну (регистрация) { if(response)// всё так-же, это нажатие левой кнопки (регистрация) { if(!strlen(inputtext)) // если поле осталось пустым, выводим ему опять диалоговое окно { new loginmsg[256+1]; format(loginmsg,256,"Здравствуйте,Вы вошли на Сервер.\n\nИзпользуемый вами ник свободен.\nЗарегистрируйтесь чтоб продолжить.\nПароль для нового Аккаунта:"); ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Регистрация",loginmsg,"Регистрация","Отмена"); return 1; } new playername[MAX_PLAYER_NAME]; new string[256]; gPlayerAccount[playerid] = 1; strmid(tmppass, inputtext, 0, strlen(inputtext), 255); Encript(PlayerInfo[playerid][pPassword]); GetPlayerName(playerid, playername, sizeof(playername)); format(string, sizeof(string), "Accounts/%s.cer", playername); PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid); new File: file = fopen(string, io_read); if (file) { SendClientMessage(playerid, COLOR_GRAD1, " That nick is registered"); fclose(file); return 1; } // new Float:px, Float:py, Float:pz;// // new Float:health;// //new randphone = 1000 + random(8999);//minimum 1000 max 9999 //giving one at the start //PlayerInfo[playerid][pPnumber] = randphone; printf("%s has created an account.", playername); new File:hFile; hFile = fopen(string, io_append); new var[32];// format(var, 32, "%s\n", PlayerInfo[playerid][pPassword]);fwrite(hFile, var); format(var, 32, "%d pCash\n", PlayerInfo[playerid][pCash]);fwrite(hFile, var); format(var, 32, "%d pAccount\n", PlayerInfo[playerid][pAccount]);fwrite(hFile, var); format(var, 32, "%d pAdmin\n", PlayerInfo[playerid][pAdmin]);fwrite(hFile, var); format(var, 32, "%d pLevel\n", PlayerInfo[playerid][pLevel]);fwrite(hFile, var); format(var, 32, "%d pExp\n", PlayerInfo[playerid][pExp]);fwrite(hFile, var); format(var, 32, "%d gPupgrade\n", PlayerInfo[playerid][gPupgrade]);fwrite(hFile, var); format(var, 32, "%d pKills\n", PlayerInfo[playerid][pKills]);fwrite(hFile, var); format(var, 32, "%d pCB\n", PlayerInfo[playerid][pCB]);fwrite(hFile, var); format(var, 32, "%d pHW\n", PlayerInfo[playerid][pHW]);fwrite(hFile, var); format(var, 32, "%d pSR\n", PlayerInfo[playerid][pSR]);fwrite(hFile, var); format(var, 32, "%d pWA\n", PlayerInfo[playerid][pWA]);fwrite(hFile, var); format(var, 32, "%d pPEN\n", PlayerInfo[playerid][pPEN]);fwrite(hFile, var); format(var, 32, "%d pGun1\n", PlayerInfo[playerid][pGun1]);fwrite(hFile, var); format(var, 32, "%d pGun2\n", PlayerInfo[playerid][pGun2]);fwrite(hFile, var); format(var, 32, "%d pGun3\n", PlayerInfo[playerid][pGun3]);fwrite(hFile, var); format(var, 32, "%d pGun4\n", PlayerInfo[playerid][pGun4]);fwrite(hFile, var); format(var, 32, "%d pGun5\n", PlayerInfo[playerid][pGun5]);fwrite(hFile, var); format(var, 32, "%d pGun6\n", PlayerInfo[playerid][pGun6]);fwrite(hFile, var); format(var, 32, "%d pAmmo1\n", PlayerInfo[playerid][pAmmo1]);fwrite(hFile, var); format(var, 32, "%d pAmmo2\n", PlayerInfo[playerid][pAmmo2]);fwrite(hFile, var); format(var, 32, "%d pAmmo3\n", PlayerInfo[playerid][pAmmo3]);fwrite(hFile, var); format(var, 32, "%d pAmmo4\n", PlayerInfo[playerid][pAmmo4]);fwrite(hFile, var); format(var, 32, "%d pAmmo5\n", PlayerInfo[playerid][pAmmo5]);fwrite(hFile, var); format(var, 32, "%d pAmmo6\n", PlayerInfo[playerid][pAmmo6]);fwrite(hFile, var); format(var, 32, "%f pSHealth\n", PlayerInfo[playerid][pSHealth]);fwrite(hFile, var); format(var, 32, "%f pHealth\n", PlayerInfo[playerid][pHealth]);fwrite(hFile, var); format(var, 32, "%f pPos_x\n", PlayerInfo[playerid][pPos_x]);fwrite(hFile, var); format(var, 32, "%f pPos_y\n", PlayerInfo[playerid][pPos_y]);fwrite(hFile, var); format(var, 32, "%f pPos_z\n", PlayerInfo[playerid][pPos_z]);fwrite(hFile, var); if(accountplay) { PlayerInfo[playerid][pInt] = 0; } format(var, 32, "%d pInt\n", PlayerInfo[playerid][pInt]);fwrite(hFile, var); format(var, 32, "%d pLocal\n", PlayerInfo[playerid][pLocal]);fwrite(hFile, var); format(var, 32, "%d pTeam\n", PlayerInfo[playerid][pTeam]);fwrite(hFile, var); format(var, 32, "%d pModel\n", PlayerInfo[playerid][pModel]);fwrite(hFile, var); format(var, 32, "%d pPnumber\n", PlayerInfo[playerid][pPnumber]);fwrite(hFile, var); format(var, 32, "%d pPhousekey\n", PlayerInfo[playerid][pPhousekey]);fwrite(hFile, var); format(var, 32, "%d pPbiskey\n", PlayerInfo[playerid][pPbiskey]);fwrite(hFile, var); format(var, 32, "%d CDPlayer\n",PlayerInfo[playerid][pCDPlayer]);fwrite(hFile, var); format(var, 32, "%d TLicence\n",PlayerInfo[playerid][TLicence]);fwrite(hFile, var); format(var, 32, "%d PLicence\n",PlayerInfo[playerid][PLicence]);fwrite(hFile, var); format(var, 32, "%d DanceStyle\n",PlayerInfo[playerid][DanceStyle]);fwrite(hFile, var); format(var, 32, "%d PLicDate\n",PlayerInfo[playerid][PLicDate]);fwrite(hFile, var); format(var, 32, "%d TLicDate\n",PlayerInfo[playerid][TLicDate]);fwrite(hFile, var); format(var, 32, "%d BLicence\n",PlayerInfo[playerid][BLicence]);fwrite(hFile, var); format(var, 32, "%d BLicDate\n",PlayerInfo[playerid][BLicDate]);fwrite(hFile, var); format(var, 32, "%d pPgaragekey\n", PlayerInfo[playerid][pPgaragekey]);fwrite(hFile, var); format(var, 32, "%d pJailTime\n", PlayerInfo[playerid][pJailTime]);fwrite(hFile, var); format(var, 32, "%d pMarried\n", PlayerInfo[playerid][pMarried]);fwrite(hFile, var); format(var, 32, "%s pMarriedTo\n",PlayerInfo[playerid][pMarriedTo]);fwrite(hFile, var); format(var, 32, "%d pPfuelkey\n",PlayerInfo[playerid][pPfuelkey]);fwrite(hFile, var); format(var, 32, "%d pAllKills\n",PlayerInfo[playerid][pAllKills]);fwrite(hFile, var); format(var, 32, "%d pAllDeath\n",PlayerInfo[playerid][pAllDeath]);fwrite(hFile, var); format(var, 32, "%d pMuteTime\n",PlayerInfo[playerid][pMuteTime]);fwrite(hFile, var); format(var, 32, "%d gRang\n",PlayerInfo[playerid][gRang]);fwrite(hFile, var); format(var, 32, "%d pMutePmTime\n",PlayerInfo[playerid][pMutePmTime]);fwrite(hFile, var); fclose(hFile); OnPlayerLogin(playerid,PlayerInfo[playerid][pPassword]); return 1; } } return 1; }
я предполагю что проблема кроеться в strmid(tmppass, inputtext, 0, strlen(inputtext), 255); но ядибил и не понимаю как исправить=). Помогите чем можете)
эм, зачем извращатся? в выполнение диалогов он плеер комманд текст вставляешь не копипастя код и все.
More than 4 years of development, more than 250,000 lines of source code, more than a hundred units and more than 3400 revisions. Valakas Roleplay - choose your role.
код пиши в эту строчку [pwn] public OnPlayerConnect(playerid) {
Добавлено (14.12.2009, 13:46) --------------------------------------------- пардон не сюда...если так поставишь постоянно будет зарегится просить вот в эту [pwn] public OnPlayerCommandText(playerid, cmdtext[]) {
new message[128]; if(dialogid == 4) { new string2[256]; if(response) { if(!strlen(inputtext)) { format(string2, sizeof(string2),"Ошибка! Вы не ввели пароль!\nЧтобы войти введите пароль в поле ввода и нажмите \"Войти\""); ShowPlayerDialog(playerid,4,DIALOG_STYLE_INPUT,"Авторизация",string2,"Войти","Отмена"); return 1; } new tmppass[64]; strmid(tmppass, inputtext, 0, strlen(inputtext), 255); tmppassNorm = tmppass; Encript(tmppass); OnPlayerLogin(playerid,tmppass); } else { SendClientMessage(playerid, COLOR_RED, " Не хотите как хотите."); Kick(playerid); return 1; } } if(dialogid == 5) { if(response) { new string[512]; if(!strlen(inputtext)) { format(string, sizeof(string),"Ошибка! Вы не ввели пароль!\nПожалуйста, наберите пароль в поле ввода и нажмите кнопку \"Создать\nВнимание!!! пароль должен быть от 3 до 9 символов (ник не более 9 - возможны проблемы)\nВнимание!!! не ставьте пароль '111' или '123' или т.п. он легко поддается взлому... уж лучше 'qqq'."); ShowPlayerDialog(playerid,5,DIALOG_STYLE_INPUT,"Регистрация",string,"Создать","Отмена"); return 1; } if(strlen(inputtext) < 3 || strlen(inputtext) > 9) { // SendClientMessage(playerid, COLOR_GRAD1, " Не правильный пароль (не больше 9)"); format(string, sizeof(string),"Ошибка! Кол-во символов не соответствует требованиям!\nПароль должен быть от 3 до 9 символов (ник не более 9 - возможны проблемы)\nВнимание!!! не ставьте пароль '111' или '123' или т.п. он легко поддается взлому... уж лучше 'qqq'\nПожалуйста, наберите пароль в поле ввода и нажмите кнопку \"Создать."); ShowPlayerDialog(playerid,5,DIALOG_STYLE_INPUT,"Регистрация",string,"Создать","Отмена"); return 1; } new character[256]; new i, j; new found = 0; new foundchar[256]; for(i=0; i<(strlen(inputtext)); i++) { strmid(character, inputtext, i, i+1, 2); for(j = 0; j { tmps1 = allowednickchars[j]; if(strcmp(hash(character), hash(tmps1), false) == 0) { found += 1; foundchar = tmps1; } } } if (found != strlen(inputtext)) { // SendClientMessage(playerid, COLOR_RED, " * Вы использовали запрещенные символы. Используйте A-Z a-z 0-9 [ ] _"); format(string, sizeof(string),"Ошибка! Символы не соответствуют требованиям!\nИспользуйте только A-Z a-z 0-9 [ ] _\nПароль должен быть от 3 до 9 символов (ник не более 9 - возможны проблемы)\nВнимание!!! не ставьте пароль '111' или '123' или т.п. он легко поддается взлому... уж лучше 'qqq'\nПожалуйста, наберите пароль в поле ввода и нажмите кнопку \"Создать."); ShowPlayerDialog(playerid,5,DIALOG_STYLE_INPUT,"Регистрация",string,"Создать","Отмена"); return 1; }
fclose(hFile); SendClientMessage(playerid, COLOR_WHITE, " СЕРВЕР: Добро пожаловать ."); OnPlayerLogin(playerid,PlayerInfo[playerid][pPassword]); } else { SendClientMessage(playerid, COLOR_RED, " Не хотите как хотите."); Kick(playerid); return 1; } }[/pwn] В public OnPlayerRequestClass(playerid, classid) [pwn] new string[128]; if(gPlayerLogged[playerid] == 0) { format(string, sizeof(string), "accounts/%s.cer", oGetPlayerName(playerid)); new string2[512]; if(fexist(string)) { gPlayerAccount[playerid] = 1; format(string2, sizeof(string2),"Ваш ник зарегистрирован! Чтобы войти введите пароль в поле ввода и нажмите \"Войти\""); ShowPlayerDialog(playerid,4,DIALOG_STYLE_INPUT,"Авторизация",string2,"Войти","Отмена");
}
gPlayerAccount[playerid] = 0; format(string2, sizeof(string2),"Ваш ник не зарегистрирован!\nПожалуйста, наберите пароль в поле ввода и нажмите кнопку \"Создать\nВнимание!!! пароль должен быть от 3 до 9 символов (ник не более 9 - возможны проблемы)'."); ShowPlayerDialog(playerid,5,DIALOG_STYLE_INPUT,"Регистрация",string2,"Создать","Отмена");[/pwn][/cut]
SendClientMessage(playerid, COLOR_RED " SA:MP PEN1+GTO server 62.106.108.26:9999); SendClientMessage(playerid, COLOR_WHITE " IV:MP Liberty City RUSSIAN Role-Play server 62.106.108.26:7777);