16:36
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 1
  • 1
Модератор форума: AXE, Weddew  
Пароль...
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]вписать этот код в данный паблик было глупостью cool почему, до банального просто данный паблик вызываеться от 40 до 100 раз в секунду, вы представляете какая эта нагрузка на сервер столько раз за секунду фаилы обрабатывать, ага мы об этом не подумали.
К сведению, сохранение статы достаточно поместить в 2 паблика OnGameModeExit и OnPlayerDisconect. Первый выполняеться когда мод перезагружаеться или вы закрываете сервер, не важно как, набрали вы exit в консоли или щелкнули крестик, единственный вариант когда он не выполниться это закрыть сервер завершением его задачи в диспетчере задач.
Второй выполняетьс я каждый раз когда игрок отключаеться от сервера, причина не важна, паблик выполниться всегда.
Эти два паблика вполне достаточны для сохранения статистики, необходимость в каки-либо сохранениях через интервалы вообще не нужна.

Теперь к твоим ошибкам:

Quote (Vagrant)
но при входе ввожу /login пароль и тупняк вообще какой-то другой появляется. Типо вы вошли и Unknow Command в низу.
заремь в команде вызов OnPlayerLogin(playerid,tmppass); и посмотри что будет, у меня есть подозрение что ошибка в вызываемом паблике yes

Кстати вот тебе этот паблик без ошибок и более упращенный:
[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
  • Страница 1 из 1
  • 1
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua