 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
Пароль...
| |
| Vagrant | Дата: Понедельник, 27.07.2009, 07:36 | Сообщение # 1 |
|
Уважаемый человек
Группа:
I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус: 
| Такая проблема: [pwn] enum pInfo { pPassword[128], pKills, pDeaths, pCash, nAdmin, nCarKey, nSIC, nTak1, nTak2, nTak3, nTak4, nTak5, nTak6, nTak7, nKon1, nKonO 1, nKon2, nKonO2, nKon3, nKonO3, }; new fmo[MAX_PLAYERS]; forward ShowStats(playerid,targetid); forward OnPlayerUpdate(playerid); forward Encrypt(string[]); forward OnPlayerLogin(playerid,const string[]); public OnPlayerRequestSpawn(playerid) { new PlayerName[MAX_PLAYER_NAME+4]; GetPlayerName(playerid,PlayerName,MAX_PLAYER_NAME+4); format(PlayerName,sizeof(PlayerName),"%s.txt",PlayerName); if(fexist(PlayerName)) { if(!gPlayerLogged[playerid]) { if(fmo[playerid] == 0) { SendClientMessage(playerid,COLOR_WHITE, " Ваш ник зарегистрирован, Введите /login [пароль] для входа"); fmo[playerid] = 1; } return 0; } else return 1; } else { if(fmo[playerid] == 0) { SendClientMessage(playerid,COLOR_WHITE, " Ваш ник не зарегистрирован, Введите /register [пароль] для регистрации"); fmo[playerid] = 1; } return 0; } } public OnPlayerDisconnect(playerid, reason) { OnPlayerUpdate(playerid); gPlayerLogged[playerid] = 0; return 1; } public OnPlayerDeath(playerid, killerid, reason) { new kills = PlayerInfo[playerid][pKills]; SetPlayerScore(playerid, kills); // Устанавливает + 1 Score new Float:Health; // Переменная жизни GetPlayerHealth(playerid, Health); // Проверка жизней у игрока if(Health == 0.0) // Если жизнией 0.0 то: { PlayerInfo[playerid][pDeaths] += 1; // Если жизней 0.0 то в /stats +1 Deaths } PlayerInfo[killerid][pKills] = PlayerInfo[killerid][pKills] + 1; // Если жизней больше чем 0.0 то в /stats + 1 Kills (+1 Score) return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { //==================[Регистрация]=============================================== new cmd[256]; new idx; cmd = strtok(cmdtext, idx); new tmp[256]; new playername[MAX_PLAYER_NAME]; if (strcmp(cmd, "/login", true) ==0 ) { if(IsPlayerConnected(playerid)) { new tmppass[64]; if(gPlayerLogged[playerid] == 1) { SendClientMessage(playerid, COLOR_GREY, " Вы уже вошли в свой Аккаунт."); return 1; } tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GREY, " Введите: /login [пароль]"); return 1; } strmid(tmppass, tmp, 0, strlen(cmdtext), 255); Encrypt(tmppass); OnPlayerLogin(playerid,tmppass); } return 1; } if (strcmp(cmd, "/register", true)==0) { new string[265]; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GREY, " Введите: /register [пароль]"); return 1; } if (gPlayerAccount[playerid] == 1) { SendClientMessage(playerid, COLOR_GREY, " Такой ник уже зарегистрирован !"); return 1; } strmid(PlayerInfo[playerid][pPassword], tmp, 0, strlen(cmdtext), 255); Encrypt(PlayerInfo[playerid][pPassword]); GetPlayerName(playerid, playername, sizeof(playername)); format(string, sizeof(string), "%s.txt", playername); new File: file = fopen(string, io_read); if (file) { SendClientMessage(playerid, COLOR_GREY, " Такой ник уже зарегистрирован !"); fclose(file); return 1; } new File:hFile; hFile = fopen(string, io_append); new var[32];// format(var, 32, "Pass=[%s]", PlayerInfo[playerid][pPassword]);fwrite(hFile, var); format(var, 32, "Kills=[%d]",PlayerInfo[playerid][pKills]);fwrite(hFile, var); format(var, 32, "Deaths=[%d]",PlayerInfo[playerid][pDeaths]);fwrite(hFile, var); format(var, 32, "Money=[%d]",PlayerInfo[playerid][pCash]);fwrite(hFile, var); PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid); format(var, 32, "Admin=[%d]",PlayerInfo[playerid][nAdmin]);fwrite(hFile, var); format(var, 32, "CarKey=[%d]",PlayerInfo[playerid][nCarKey]);fwrite(hFile, var); format(var, 32, "SIC=[%d]",PlayerInfo[playerid][nSIC]);fwrite(hFile, var); format(var, 32, "Tak1=[%d]",PlayerInfo[playerid][nTak1]);fwrite(hFile, var); format(var, 32, "Tak2=[%d]",PlayerInfo[playerid][nTak2]);fwrite(hFile, var); format(var, 32, "Tak3=[%d]",PlayerInfo[playerid][nTak3]);fwrite(hFile, var); format(var, 32, "Tak4=[%d]",PlayerInfo[playerid][nTak4]);fwrite(hFile, var); format(var, 32, "Tak5=[%d]",PlayerInfo[playerid][nTak5]);fwrite(hFile, var); format(var, 32, "Tak6=[%d]",PlayerInfo[playerid][nTak6]);fwrite(hFile, var); format(var, 32, "Tak7=[%d]",PlayerInfo[playerid][nTak7]);fwrite(hFile, var); format(var, 32, "Kon1=[%d]",PlayerInfo[playerid][nKon1]);fwrite(hFile, var); format(var, 32, "KonO1=[%d]",PlayerInfo[playerid][nKonO1]);fwrite(hFile, var); format(var, 32, "Kon2=[%d]",PlayerInfo[playerid][nKon2]);fwrite(hFile, var); format(var, 32, "KonO2=[%d]",PlayerInfo[playerid][nKonO2]);fwrite(hFile, var); format(var, 32, "Kon3=[%d]",PlayerInfo[playerid][nKon3]);fwrite(hFile, var); format(var, 32, "KonO3=[%d]",PlayerInfo[playerid][nKonO3]);fwrite(hFile, var); fclose(hFile); SendClientMessage(playerid, COLOR_WHITE, " Ваш ник успешно зарегистрирован !"); SendClientMessage(playerid, COLOR_WHITE, " При следующем входе введите: /login [пароль] что бы войти !"); OnPlayerLogin(playerid,PlayerInfo[playerid][pPassword]); return 1; } if (strcmp(cmd, "/stats", true) == 0) { if(IsPlayerConnected(playerid)) { if (gPlayerLogged[playerid] != 0) { ShowStats(playerid,playerid); } else { SendClientMessage(playerid, COLOR_GRAD1, " Вы не вошли в Аккаунт !"); } } return 1; } public Encrypt(string[]) { for(new x=0; x < strlen(string); x++) { string[x] += (3^x) * (x % 15); if(string[x] > (0xff)) { string[x] -= 64; } } return 1; } public OnPlayerLogin(playerid,const string[]) { new pname2[MAX_PLAYER_NAME]; new pname3[MAX_PLAYER_NAME]; new string2[64]; new string3[128]; GetPlayerName(playerid, pname2, sizeof(pname2)); format(string2, sizeof(string2), "%s.txt", pname2); new File: UserFile = fopen(string2, io_read); if (UserFile) { new valtmp[128]; fread(UserFile, valtmp);strmid(PlayerInfo[playerid][pPassword], valtmp, 0, strlen(valtmp)-1, 255); if ((strcmp(PlayerInfo[playerid][pPassword], string, true, strlen(valtmp)-1) == 0)) { new key[128],val[128]; new Data[128]; while(fread(UserFile,Data,sizeof(Data))) { key = ini_GetKey(Data); if( strcmp( key , "Kills" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pKills] = strval( val ); } if( strcmp( key , "Deaths" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pDeaths] = strval( val ); } if( strcmp( key , "Money" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pCash] = strval( val ); } if( strcmp( key , "Admin" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][nAdmin] = strval( val ); } if( strcmp( key , "CarKey" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][nCarKey] = strval( val ); } if( strcmp( key , "SIC" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][nSIC] = strval( val ); } if( strcmp( key , "Tak1" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][nTak1] = strval( val ); } if( strcmp( key , "Tak2" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][nTak2] = strval( val ); } if( strcmp( key , "Tak3" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][nTak3] = strval( val ); } if( strcmp( key , "Tak4" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][nTak4] = strval( val ); } if( strcmp( key , "Tak5" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][nTak5] = strval( val ); } if( strcmp( key , "Tak6" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][nTak6] = strval( val ); } if( strcmp( key , "Tak7" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][nTak7] = strval( val ); } if( strcmp( key , "Kon1" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][nKon1] = strval( val ); } if( strcmp( key , "KonO1" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][nKonO1] = strval( val ); } if( strcmp( key , "Kon2" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][nKon2] = strval( val ); } if( strcmp( key , "KonO2" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][nKonO2] = strval( val ); } if( strcmp( key , "Kon3" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][nKon3] = strval( val ); } if( strcmp( key , "KonO3" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][nKonO3] = strval( val ); } } fclose(UserFile); GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]); gPlayerLogged[playerid] = 1; gPlayerAccount[playerid] = 1; new kills = PlayerInfo[playerid][pKills]; SetPlayerScore(playerid, kills); GetPlayerName(playerid, pname3, sizeof(pname3)); format(string3, sizeof(string3), " Добро пожаловать %s, Вы успешно вошли в свой Аккаунт !", pname3); SendClientMessage(playerid, COLOR_WHITE,string3); } else { SendClientMessage(playerid, COLOR_GREY, " Пароль не соответствует вашему нику !"); fclose(UserFile); } } return 1; } public OnPlayerUpdate(playerid) { if(IsPlayerConnected(playerid)) { if(gPlayerLogged[playerid]) { new string3[32]; new pname3[MAX_PLAYER_NAME]; GetPlayerName(playerid, pname3, sizeof(pname3)); format(string3, sizeof(string3), "%s.txt", pname3); new File: pFile = fopen(string3, io_write); if (pFile) { new var[32]; format(var, 32, "Pass=[%s]", PlayerInfo[playerid][pPassword]);fwrite(pFile, var); fclose(pFile); new File: hFile = fopen(string3, io_append); format(var, 32, "Kills=[%d]",PlayerInfo[playerid][pKills]);fwrite(hFile, var); format(var, 32, "Deaths=[%d]",PlayerInfo[playerid][pDeaths]);fwrite(hFile, var); format(var, 32, "Money=[%d]",PlayerInfo[playerid][pCash]);fwrite(hFile, var); PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid); format(var, 32, "Admin=[%d]",PlayerInfo[playerid][nAdmin]);fwrite(hFile, var); format(var, 32, "CarKey=[%d]",PlayerInfo[playerid][nCarKey]);fwrite(hFile, var); format(var, 32, "SIC=[%d]",PlayerInfo[playerid][nSIC]);fwrite(hFile, var); format(var, 32, "Tak1=[%d]",PlayerInfo[playerid][nTak1]);fwrite(hFile, var); format(var, 32, "Tak2=[%d]",PlayerInfo[playerid][nTak2]);fwrite(hFile, var); format(var, 32, "Tak3=[%d]",PlayerInfo[playerid][nTak3]);fwrite(hFile, var); format(var, 32, "Tak4=[%d]",PlayerInfo[playerid][nTak4]);fwrite(hFile, var); format(var, 32, "Tak5=[%d]",PlayerInfo[playerid][nTak5]);fwrite(hFile, var); format(var, 32, "Tak6=[%d]",PlayerInfo[playerid][nTak6]);fwrite(hFile, var); format(var, 32, "Tak7=[%d]",PlayerInfo[playerid][nTak7]);fwrite(hFile, var); format(var, 32, "Kon1=[%d]",PlayerInfo[playerid][nKon1]);fwrite(hFile, var); format(var, 32, "KonO1=[%d]",PlayerInfo[playerid][nKonO1]);fwrite(hFile, var); format(var, 32, "Kon2=[%d]",PlayerInfo[playerid][nKon2]);fwrite(hFile, var); format(var, 32, "KonO2=[%d]",PlayerInfo[playerid][nKonO1]);fwrite(hFile, var); format(var, 32, "Kon3=[%d]",PlayerInfo[playerid][nKon3]);fwrite(hFile, var); format(var, 32, "KonO3=[%d]",PlayerInfo[playerid][nKonO3]);fwrite(hFile, var); fclose(hFile); } } } return 1; } stock ini_GetKey( line[] ) { new keyRes[128]; keyRes[0] = 0; if ( strfind( line , "=" , true ) == -1 ) return keyRes; strmid( keyRes , line , 0 , strfind( line , "=" , true ) , sizeof( keyRes) ); return keyRes; } stock ini_GetValue( line[] ) { new valRes[128]; valRes[0]=0; if ( strfind( line , "=" , true ) == -1 ) return valRes; strmid( valRes , line , strfind( line , "=" , true )+1 , strlen( line ) , sizeof( valRes ) ); return valRes; } strtok(const string[], &index) { new length = strlen(string); while ((index < length) && (string[index] <= ' ')) { index++; } new offset = index; new result[20]; while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1))) { result[index - offset] = string[index]; index++; } result[index - offset] = EOS; return result; } public ShowStats(playerid,targetid) { if(IsPlayerConnected(playerid)&&IsPlayerConnected(targetid)) { new cash = GetPlayerMoney(targetid); new deaths = PlayerInfo[targetid][pDeaths]; new kills = PlayerInfo[targetid][pKills]; new admin = PlayerInfo[targetid][nAdmin]; new carkey = PlayerInfo[targetid][nCarKey]; new sic = PlayerInfo[targetid][nSIC]; new tak1 = PlayerInfo[targetid][nTak1]; new tak2 = PlayerInfo[targetid][nTak2]; new tak3 = PlayerInfo[targetid][nTak3]; new tak4 = PlayerInfo[targetid][nTak4]; new tak5 = PlayerInfo[targetid][nTak5]; new tak6 = PlayerInfo[targetid][nTak6]; new tak7 = PlayerInfo[targetid][nTak7]; new kon1 = PlayerInfo[targetid][nKon1]; new konO1 = PlayerInfo[targetid][nKonO1]; new kon2 = PlayerInfo[targetid][nKon2]; new konO2 = PlayerInfo[targetid][nKonO2]; new kon3 = PlayerInfo[targetid][nKon3]; new konO3 = PlayerInfo[targetid][nKonO3]; new name[MAX_PLAYER_NAME]; GetPlayerName(targetid, name, sizeof(name)); new Float:px,Float:py,Float:pz; GetPlayerPos(targetid, px, py, pz); new coordsstring[256]; SendClientMessage(playerid, 0x316BFFAA,"_______________________________________"); format(coordsstring, sizeof(coordsstring),"*** %s ***",name); SendClientMessage(playerid, COLOR_WHITE,coordsstring); format(coordsstring, sizeof(coordsstring), " Убийств:[%d] Смертей:[%d] Денег:[$%d] [%d][%d]",kills,deaths,cash,carkey,sic); SendClientMessage(playerid, COLOR_GRAD5,coordsstring); format(coordsstring, sizeof(coordsstring), " [%d]",admin); SendClientMessage(playerid, COLOR_GRAD5,coordsstring); format(coordsstring, sizeof(coordsstring), " [%d] [%d] [%d]",tak1,tak2,tak3); SendClientMessage(playerid, COLOR_GRAD5,coordsstring); format(coordsstring, sizeof(coordsstring), " [%d] [%d] [%d] [%d]",tak4,tak5,tak6,tak7); SendClientMessage(playerid, COLOR_GRAD5,coordsstring); format(coordsstring, sizeof(coordsstring), " [%d][%d] [%d][%d] [%d][%d]",kon1,konO1,kon2,konO2,kon3,konO3); SendClientMessage(playerid, COLOR_GRAD5,coordsstring); SendClientMessage(playerid, 0x316BFFAA,"_______________________________________"); } } [/pwn] В даной системе регистрации есть косяк с паролем. Кто шарит помогите найти. Создал тему так как сам уже 2 дня мучаюсь с ней. В чём может быть проблема понятия не имею так как в чём она могла быть я проверил. Единственное что я сделал с паролем это раньше стояло так: %s\n а я заменил на так: Pass=[%s] но потом понял что парольничинает парить мозги... При входе когда ввожу /login пароль пишет что Пароль не соответствует вашему нику... Канечно самоё лёгкое это сделать наоборот: "SendClientMessage(playerid, COLOR_GREY, " Вы ввели правельный пароль всё нештяк. Щас попрёт!"); но не охото так себя насиловать пытался сделать как раньше %s\n но при входе ввожу /login пароль и тупняк вообще какой-то другой появляется. Типо вы вошли и Unknow Command в низу. Хотя раньше когда я не менял на Pass=[%s] он работал олично! Как поменял так пошли какие-то тупняки. При первом заходе вводится. После выхода захожу опять пишет не соответствует вашему нику... И там такая штука стоит что пока не введёшь не заспавнишься. Вот ввожу пишет не соответствует нику и могу на респе появиться. Но когда на респе набираю /stats пишит вы не авторезированы... То есть он сам по себе думает что я вроди как авторезирован и вроди как нет надеюсь поняли проблему. Кто решит 2 + поставлю и медальки. По + каждый день желательно канечно что бы работало с Pass=[%s].
Человек учась ходить падает, и только падая, он учится ходить! Мои работы: [GM] W.F.S.A. V. 1.0 - 100% [GM] San Fierro Enigmatic (TDM) V. 1.0 - 100% [FS] Clan House V. 1.0 - 100% [FS] Save Car Tun System V. 1.0 - 100% [FS] Vagrant Anti-CapsLock V. 2.1 - 100% [FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100% [APP] SA-MP Interior Viewer V. 1.0 - 100%
Принимаю заказы на помощь в скриптинге!
|
| |
|
|
| sSeRegA | Дата: Понедельник, 27.07.2009, 15:05 | Сообщение # 2 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 174
Награды: 6
Город: Рузаевка
Репутация: 43
Замечания: 60%
Статус: 
| Vagrant, мод какой?
--------------------     
http://maps.serverhex.com/
|
| |
|
|
| Vagrant | Дата: Понедельник, 27.07.2009, 16:43 | Сообщение # 3 |
|
Уважаемый человек
Группа:
I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус: 
| Serega14, Мой. В самом моде всё впорядке. До этой проблемы я контролировал что бы регистрация работала нормально. Так как до этого с ней 2 недели мучился. Весь код который я скинул это чисто регистрация. Больше ничего. А в моде всё впорядке. Я его часто проверяю после того как добавлю что-то новое.
Человек учась ходить падает, и только падая, он учится ходить! Мои работы: [GM] W.F.S.A. V. 1.0 - 100% [GM] San Fierro Enigmatic (TDM) V. 1.0 - 100% [FS] Clan House V. 1.0 - 100% [FS] Save Car Tun System V. 1.0 - 100% [FS] Vagrant Anti-CapsLock V. 2.1 - 100% [FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100% [APP] SA-MP Interior Viewer V. 1.0 - 100%
Принимаю заказы на помощь в скриптинге!
|
| |
|
|
| bleyz | Дата: Вторник, 28.07.2009, 03:29 | Сообщение # 4 |
|
Постоялец
Группа:
Продвинутые
Сообщений: 479
Награды: 3
Город: Мехико
Репутация: 44
Замечания: 20%
Статус: 
| Quote (Vagrant) пытался сделать как раньше %s\n но при входе ввожу /login пароль и тупняк вообще какой-то другой появляется. Типо вы вошли и Unknow Command в низу. Это значит что команда работает, однако в конце команды нету return 1; =\
[GM] League Script [GM] Drift-Mod Свалка - дом Блейза [oS]_[HIT]©
|
| |
|
|
| Vagrant | Дата: Вторник, 28.07.2009, 14:50 | Сообщение # 5 |
|
Уважаемый человек
Группа:
I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус: 
| bleyz, Нет, ретурн в конце стоит. Просто если изменить код на тот который я изменил. То при регистрации и появлении на спавне получается краш сервера... Но когда регистрируюсь то Unknow Command нету... А если сделать так как я в цитате написал то получается с Unknow Command. Добавлено (28.07.2009, 14:49) --------------------------------------------- Есть другой вариант канечно. Можно просто сделать старую регу без новых переменных. Тупо заменить короче эту регистрацию на старую и опять по добовлять туда новые переменные с таким же названием... Но я пытаюсь делать мод и паралельно учиться. И мне просто интересно что может по влиять на работу пароля в системе регистрации что бы потом на этой же ошибке и не попасться снова. Добавлено (28.07.2009, 14:50) --------------------------------------------- А если и попасться то знать как исправить...
Человек учась ходить падает, и только падая, он учится ходить! Мои работы: [GM] W.F.S.A. V. 1.0 - 100% [GM] San Fierro Enigmatic (TDM) V. 1.0 - 100% [FS] Clan House V. 1.0 - 100% [FS] Save Car Tun System V. 1.0 - 100% [FS] Vagrant Anti-CapsLock V. 2.1 - 100% [FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100% [APP] SA-MP Interior Viewer V. 1.0 - 100%
Принимаю заказы на помощь в скриптинге!
|
| |
|
|
| stepmex | Дата: Среда, 29.07.2009, 01:19 | Сообщение # 6 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| Для начала упростим команду: [pwn]if (strcmp(cmd, "/login", true) ==0 ) { if(IsPlayerConnected(playerid)) //в сибирь если игрока нет в онлайне команду некому отправить, а если ты пытаешься отпрвить команду через админку от ид несуществующего игрока, ты ты нуб полный потому что при создании подобных команд нужно делать проверку на онлайн подопытного кролика! { new tmppass[64]; if(gPlayerLogged[playerid] == 1) { SendClientMessage(playerid, COLOR_GREY, " Вы уже вошли в свой Аккаунт."); return 1; } tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GREY, " Введите: /login [пароль]"); return 1; } strmid(tmppass, tmp, 0, strlen(cmdtext), 255); Encrypt(tmppass); OnPlayerLogin(playerid,tmppass); } return 1; }[/pwn]получаем:[pwn]if (strcmp(cmd, "/login", true) ==0 ) { if(gPlayerLogged[playerid] != 1)return SendClientMessage(playerid, COLOR_GREY, " Вы уже вошли в свой Аккаунт."); new tmppass[64]; tmp = strtok(cmdtext, idx); if(!strlen(tmp))return SendClientMessage(playerid, COLOR_GREY, " Введите: /login [пароль]"); strmid(tmppass, tmp, 0, strlen(tmp), sizeof(tmppass)); Encrypt(tmppass); OnPlayerLogin(playerid,tmppass); return 1; }[/pwn] теперь ещё один пункт:[pwn]public OnPlayerUpdate(playerid) { if(IsPlayerConnected(playerid)) // из тойже серии, этот паблик вызываеться исключительно только если игрок в онлайне, даже если ESC нажал она не вызываеться. { if(gPlayerLogged[playerid]) { new string3[32]; new pname3[MAX_PLAYER_NAME]; GetPlayerName(playerid, pname3, sizeof(pname3)); format(string3, sizeof(string3), "%s.txt", pname3); new File: pFile = fopen(string3, io_write); if (pFile) { new var[32]; format(var, 32, "Pass=[%s]", PlayerInfo[playerid][pPassword]);fwrite(pFile, var); fclose(pFile); new File: hFile = fopen(string3, io_append); format(var, 32, "Kills=[%d]",PlayerInfo[playerid][pKills]);fwrite(hFile, var); format(var, 32, "Deaths=[%d]",PlayerInfo[playerid][pDeaths]);fwrite(hFile, var); format(var, 32, "Money=[%d]",PlayerInfo[playerid][pCash]);fwrite(hFile, var); PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid); format(var, 32, "Admin=[%d]",PlayerInfo[playerid][nAdmin]);fwrite(hFile, var); format(var, 32, "CarKey=[%d]",PlayerInfo[playerid][nCarKey]);fwrite(hFile, var); format(var, 32, "SIC=[%d]",PlayerInfo[playerid][nSIC]);fwrite(hFile, var); format(var, 32, "Tak1=[%d]",PlayerInfo[playerid][nTak1]);fwrite(hFile, var); format(var, 32, "Tak2=[%d]",PlayerInfo[playerid][nTak2]);fwrite(hFile, var); format(var, 32, "Tak3=[%d]",PlayerInfo[playerid][nTak3]);fwrite(hFile, var); format(var, 32, "Tak4=[%d]",PlayerInfo[playerid][nTak4]);fwrite(hFile, var); format(var, 32, "Tak5=[%d]",PlayerInfo[playerid][nTak5]);fwrite(hFile, var); format(var, 32, "Tak6=[%d]",PlayerInfo[playerid][nTak6]);fwrite(hFile, var); format(var, 32, "Tak7=[%d]",PlayerInfo[playerid][nTak7]);fwrite(hFile, var); format(var, 32, "Kon1=[%d]",PlayerInfo[playerid][nKon1]);fwrite(hFile, var); format(var, 32, "KonO1=[%d]",PlayerInfo[playerid][nKonO1]);fwrite(hFile, var); format(var, 32, "Kon2=[%d]",PlayerInfo[playerid][nKon2]);fwrite(hFile, var); format(var, 32, "KonO2=[%d]",PlayerInfo[playerid][nKonO1]);fwrite(hFile, var); format(var, 32, "Kon3=[%d]",PlayerInfo[playerid][nKon3]);fwrite(hFile, var); format(var, 32, "KonO3=[%d]",PlayerInfo[playerid][nKonO3]);fwrite(hFile, var); fclose(hFile); } } } return 1; }[/pwn]вписать этот код в данный паблик было глупостью почему, до банального просто данный паблик вызываеться от 40 до 100 раз в секунду, вы представляете какая эта нагрузка на сервер столько раз за секунду фаилы обрабатывать, ага мы об этом не подумали. К сведению, сохранение статы достаточно поместить в 2 паблика OnGameModeExit и OnPlayerDisconect. Первый выполняеться когда мод перезагружаеться или вы закрываете сервер, не важно как, набрали вы exit в консоли или щелкнули крестик, единственный вариант когда он не выполниться это закрыть сервер завершением его задачи в диспетчере задач. Второй выполняетьс я каждый раз когда игрок отключаеться от сервера, причина не важна, паблик выполниться всегда. Эти два паблика вполне достаточны для сохранения статистики, необходимость в каки-либо сохранениях через интервалы вообще не нужна. Теперь к твоим ошибкам: Quote (Vagrant) но при входе ввожу /login пароль и тупняк вообще какой-то другой появляется. Типо вы вошли и Unknow Command в низу. заремь в команде вызов OnPlayerLogin(playerid,tmppass); и посмотри что будет, у меня есть подозрение что ошибка в вызываемом паблике Кстати вот тебе этот паблик без ошибок и более упращенный: [pwn]public OnPlayerLogin(playerid,const string[]) { new name[MAX_PLAYER_NAME],string2[256]; GetPlayerName(playerid, name, sizeof(name)); format(string2, sizeof(string2), "%s.txt", name); if(!fexist(string2))return SendClientMessage(playerid, COLOR_RED, " Вы не зарегестрированны!"); new File: UserFile = fopen(string2, io_read); fread(UserFile, string2); strmid(PlayerInfo[playerid][pPassword], string2, 0, strlen(string2)-2, 255); if ((strcmp(PlayerInfo[playerid][pPassword], string, true, strlen(PlayerInfo[playerid][pPassword])) != 0)) { SendClientMessage(playerid, COLOR_GREY, " Пароль не соответствует вашему нику !"); fclose(UserFile); return 1; } new key[128],Data[256]; while(fread(UserFile,Data,sizeof(Data))) { key = ini_GetKey(Data); if( strcmp( key , "Kills" , true ) == 0 ) { string2 = ini_GetValue( Data ); PlayerInfo[playerid][pKills] = strval( string2 ); } if( strcmp( key , "Deaths" , true ) == 0 ) { string2 = ini_GetValue( Data ); PlayerInfo[playerid][pDeaths] = strval( string2 ); } if( strcmp( key , "Money" , true ) == 0 ) { string2 = ini_GetValue( Data ); PlayerInfo[playerid][pCash] = strval( string2 ); } if( strcmp( key , "Admin" , true ) == 0 ) { string2 = ini_GetValue( Data ); PlayerInfo[playerid][nAdmin] = strval( string2 ); } if( strcmp( key , "CarKey" , true ) == 0 ) { string2 = ini_GetValue( Data ); PlayerInfo[playerid][nCarKey] = strval( string2 ); } if( strcmp( key , "SIC" , true ) == 0 ) { string2 = ini_GetValue( Data ); PlayerInfo[playerid][nSIC] = strval( string2 ); } if( strcmp( key , "Tak1" , true ) == 0 ) { string2 = ini_GetValue( Data ); PlayerInfo[playerid][nTak1] = strval( string2 ); } if( strcmp( key , "Tak2" , true ) == 0 ) { string2 = ini_GetValue( Data ); PlayerInfo[playerid][nTak2] = strval( string2 ); } if( strcmp( key , "Tak3" , true ) == 0 ) { string2 = ini_GetValue( Data ); PlayerInfo[playerid][nTak3] = strval( string2 ); } if( strcmp( key , "Tak4" , true ) == 0 ) { string2 = ini_GetValue( Data ); PlayerInfo[playerid][nTak4] = strval( string2 ); } if( strcmp( key , "Tak5" , true ) == 0 ) { string2 = ini_GetValue( Data ); PlayerInfo[playerid][nTak5] = strval( string2 ); } if( strcmp( key , "Tak6" , true ) == 0 ) { string2 = ini_GetValue( Data ); PlayerInfo[playerid][nTak6] = strval( string2 ); } if( strcmp( key , "Tak7" , true ) == 0 ) { string2 = ini_GetValue( Data ); PlayerInfo[playerid][nTak7] = strval( string2 ); } if( strcmp( key , "Kon1" , true ) == 0 ) { string2 = ini_GetValue( Data ); PlayerInfo[playerid][nKon1] = strval( string2 ); } if( strcmp( key , "KonO1" , true ) == 0 ) { string2 = ini_GetValue( Data ); PlayerInfo[playerid][nKonO1] = strval( string2 ); } if( strcmp( key , "Kon2" , true ) == 0 ) { string2 = ini_GetValue( Data ); PlayerInfo[playerid][nKon2] = strval( string2 ); } if( strcmp( key , "KonO2" , true ) == 0 ) { string2 = ini_Getstring2ue( Data ); PlayerInfo[playerid][nKonO2] = strval( string2 ); } if( strcmp( key , "Kon3" , true ) == 0 ) { string2 = ini_GetValue( Data ); PlayerInfo[playerid][nKon3] = strval( string2 ); } if( strcmp( key , "KonO3" , true ) == 0 ) { string2 = ini_GetValue( Data ); PlayerInfo[playerid][nKonO3] = strval( string2 ); } } fclose(UserFile); GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]); SetPlayerScore(playerid, PlayerInfo[playerid][pKills]); format(string2, sizeof(string2), " Добро пожаловать %s, Вы успешно вошли в свой Аккаунт !", name); SendClientMessage(playerid, COLOR_WHITE,string2); gPlayerLogged[playerid] = 1; gPlayerAccount[playerid] = 1; return 1; }[/pwn] И кстати учитесь искать ошибки самостоятельно методом исключения кода пример на твоей команде: [pwn]if (strcmp(cmd, "/login", true) ==0 ) { if(IsPlayerConnected(playerid)) { SendClientMessageAll(playerid, COLOR_RED, "<<<1>>>>"); new tmppass[64]; if(gPlayerLogged[playerid] == 1) { SendClientMessage(playerid, COLOR_GREY, " Вы уже вошли в свой Аккаунт."); return 1; } SendClientMessageAll(playerid, COLOR_RED, "<<<2>>>>"); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GREY, " Введите: /login [пароль]"); return 1; } SendClientMessageAll(playerid, COLOR_RED, "<<<3>>>>"); strmid(tmppass, tmp, 0, strlen(cmdtext), 255); Encrypt(tmppass); OnPlayerLogin(playerid,tmppass); } SendClientMessageAll(playerid, COLOR_RED, "<<<4>>>>"); return 1; }[/pwn]затем смотришь какие цифры появились в чате, а какие нет, соответственно так находишь место в коде до которого все работает и на котором дальнейшая работа стопориться.
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
|
| |
|
|
| Vagrant | Дата: Среда, 29.07.2009, 13:00 | Сообщение # 7 |
|
Уважаемый человек
Группа:
I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус: 
| Quote заремь в команде вызов OnPlayerLogin(playerid,tmppass); и посмотри что будет, у меня есть подозрение что ошибка в вызываемом паблике Ничего не изменилось. Сохранение статы переместил в OnPlayerDisconnect и перестал вылетать при входе. Но при выходе появляется ошибка... И сервер сам выключается. [pwn] public OnPlayerDisconnect(playerid, reason) { if(gPlayerLogged[playerid]) { new string3[32]; new pname3[MAX_PLAYER_NAME]; GetPlayerName(playerid, pname3, sizeof(pname3)); format(string3, sizeof(string3), "%s.txt", pname3); new File: pFile = fopen(string3, io_write); SendClientMessage(playerid, 0xFFCCCCCC," <<1>>"); if (pFile) { new var[32]; SendClientMessage(playerid, 0xFFCCCCCC," <<2>>"); format(var, 32, "Pass=[%s]", PlayerInfo[playerid][pPassword]);fwrite(pFile, var); SendClientMessage(playerid, 0xFFCCCCCC," <<3>>"); fclose(pFile); new File: hFile = fopen(string3, io_append); format(var, 32, "Kills=[%d]",PlayerInfo[playerid][pKills]);fwrite(hFile, var); format(var, 32, "Deaths=[%d]",PlayerInfo[playerid][pDeaths]);fwrite(hFile, var); format(var, 32, "Money=[%d]",PlayerInfo[playerid][pCash]);fwrite(hFile, var); PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid); format(var, 32, "Admin=[%d]",PlayerInfo[playerid][nAdmin]);fwrite(hFile, var); format(var, 32, "CarKey=[%d]",PlayerInfo[playerid][nCarKey]);fwrite(hFile, var); format(var, 32, "SIC=[%d]",PlayerInfo[playerid][nSIC]);fwrite(hFile, var); format(var, 32, "Tak1=[%d]",PlayerInfo[playerid][nTak1]);fwrite(hFile, var); format(var, 32, "Tak2=[%d]",PlayerInfo[playerid][nTak2]);fwrite(hFile, var); format(var, 32, "Tak3=[%d]",PlayerInfo[playerid][nTak3]);fwrite(hFile, var); format(var, 32, "Tak4=[%d]",PlayerInfo[playerid][nTak4]);fwrite(hFile, var); format(var, 32, "Tak5=[%d]",PlayerInfo[playerid][nTak5]);fwrite(hFile, var); format(var, 32, "Tak6=[%d]",PlayerInfo[playerid][nTak6]);fwrite(hFile, var); format(var, 32, "Tak7=[%d]",PlayerInfo[playerid][nTak7]);fwrite(hFile, var); format(var, 32, "Kon1=[%d]",PlayerInfo[playerid][nKon1]);fwrite(hFile, var); format(var, 32, "KonO1=[%d]",PlayerInfo[playerid][nKonO1]);fwrite(hFile, var); format(var, 32, "Kon2=[%d]",PlayerInfo[playerid][nKon2]);fwrite(hFile, var); format(var, 32, "KonO2=[%d]",PlayerInfo[playerid][nKonO1]);fwrite(hFile, var); format(var, 32, "Kon3=[%d]",PlayerInfo[playerid][nKon3]);fwrite(hFile, var); format(var, 32, "KonO3=[%d]",PlayerInfo[playerid][nKonO3]);fwrite(hFile, var); fclose(hFile); SendClientMessage(playerid, 0xFFCCCCCC," <<4>>"); } } gPlayerLogged[playerid] = 0; return 1; } [/pwn] Как видишь делал проверку твоим способом. Когда вылитал до того как я в OnPlayerDisconnect перенёс сохранение то в чат вылазило только <<1>> и <<2>> дальше ничего. Значит ошибка в строчке: "format(var, 32, "Pass=[%s]", PlayerInfo[playerid][pPassword]);fwrite(pFile, var);" но я в ней кроме Pass=[%s] больше ничего не менял...
Человек учась ходить падает, и только падая, он учится ходить! Мои работы: [GM] W.F.S.A. V. 1.0 - 100% [GM] San Fierro Enigmatic (TDM) V. 1.0 - 100% [FS] Clan House V. 1.0 - 100% [FS] Save Car Tun System V. 1.0 - 100% [FS] Vagrant Anti-CapsLock V. 2.1 - 100% [FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100% [APP] SA-MP Interior Viewer V. 1.0 - 100%
Принимаю заказы на помощь в скриптинге!
|
| |
|
|
| stepmex | Дата: Среда, 29.07.2009, 13:37 | Сообщение # 8 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| [pwn]public OnPlayerDisconnect(playerid, reason) { if(!gPlayerLogged[playerid])return 1; new string[256],name[MAX_PLAYER_NAME]; GetPlayerName(playerid, name, sizeof(name)); format(string, sizeof(string), "%s.txt", name); if(!fexist(string))return 1; new File: pFile = fopen(string, io_write); format(string, sizeof(string), "Pass=[%s]", PlayerInfo[playerid][pPassword]);fwrite(pFile, string); fclose(pFile); format(string, sizeof(string), "%s.txt", name); new File: hFile = fopen(string, io_append); format(string, sizeof(string), "Kills=[%d]",PlayerInfo[playerid][pKills]);fwrite(hFile, string); format(string, sizeof(string), "Deaths=[%d]",PlayerInfo[playerid][pDeaths]);fwrite(hFile, string); PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid); format(string, sizeof(string), "Money=[%d]",PlayerInfo[playerid][pCash]);fwrite(hFile, string); format(string, sizeof(string), "Admin=[%d]",PlayerInfo[playerid][nAdmin]);fwrite(hFile, string); format(string, sizeof(string), "CarKey=[%d]",PlayerInfo[playerid][nCarKey]);fwrite(hFile, string); format(string, sizeof(string), "SIC=[%d]",PlayerInfo[playerid][nSIC]);fwrite(hFile, string); format(string, sizeof(string), "Tak1=[%d]",PlayerInfo[playerid][nTak1]);fwrite(hFile, string); format(string, sizeof(string), "Tak2=[%d]",PlayerInfo[playerid][nTak2]);fwrite(hFile, string); format(string, sizeof(string), "Tak3=[%d]",PlayerInfo[playerid][nTak3]);fwrite(hFile, string); format(string, sizeof(string), "Tak4=[%d]",PlayerInfo[playerid][nTak4]);fwrite(hFile, string); format(string, sizeof(string), "Tak5=[%d]",PlayerInfo[playerid][nTak5]);fwrite(hFile, string); format(string, sizeof(string), "Tak6=[%d]",PlayerInfo[playerid][nTak6]);fwrite(hFile, string); format(string, sizeof(string), "Tak7=[%d]",PlayerInfo[playerid][nTak7]);fwrite(hFile, string); format(string, sizeof(string), "Kon1=[%d]",PlayerInfo[playerid][nKon1]);fwrite(hFile, string); format(string, sizeof(string), "KonO1=[%d]",PlayerInfo[playerid][nKonO1]);fwrite(hFile, string); format(string, sizeof(string), "Kon2=[%d]",PlayerInfo[playerid][nKon2]);fwrite(hFile, string); format(string, sizeof(string), "KonO2=[%d]",PlayerInfo[playerid][nKonO1]);fwrite(hFile, string); format(string, sizeof(string), "Kon3=[%d]",PlayerInfo[playerid][nKon3]);fwrite(hFile, string); format(string, sizeof(string), "KonO3=[%d]",PlayerInfo[playerid][nKonO3]);fwrite(hFile, string); fclose(hFile); return 1; }[/pwn]пробуй.
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
|
| |
|
|
| Vagrant | Дата: Среда, 29.07.2009, 16:22 | Сообщение # 9 |
|
Уважаемый человек
Группа:
I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус: 
| stepmex, Пишит почему-то: "Вы уже вошли в свой Аккаунт!" хотя /login ещё не ввёл.
Человек учась ходить падает, и только падая, он учится ходить! Мои работы: [GM] W.F.S.A. V. 1.0 - 100% [GM] San Fierro Enigmatic (TDM) V. 1.0 - 100% [FS] Clan House V. 1.0 - 100% [FS] Save Car Tun System V. 1.0 - 100% [FS] Vagrant Anti-CapsLock V. 2.1 - 100% [FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100% [APP] SA-MP Interior Viewer V. 1.0 - 100%
Принимаю заказы на помощь в скриптинге!
|
| |
|
|
| stepmex | Дата: Среда, 29.07.2009, 17:27 | Сообщение # 10 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| if(gPlayerLogged[playerid] != 1) исправь на if(gPlayerLogged[playerid]), сам бы догодался
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
Сообщение отредактировал stepmex - Среда, 29.07.2009, 17:27 |
| |
|
|
|
 |
|
 | |
| |
|