Problem(error/warning): Pozdrav,kao sto mozete da procitate u Working in Progress radim mod od 0.Nema obavestenja vec 2-3 dana posto koci me ova stvar sto cu je napisem u temu,
- Npr sad kad uradim acc na primer Test_Server lozinka je tripet124 idem relog logujem se izbacuje netacnu lozinku zasto nije mi jasno ?
Deo skripte: [pawn]///[/pawn]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): ///
Sta koristis za cuvanje? Posalji nam sve vezano za cuvanje i ucitavanje acc-ova
[pawn]forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
INI_Int("Password",PlayerInfo[playerid][pPass]);
INI_Int("Cash",PlayerInfo[playerid][pCash]);
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
INI_Int("Kills",PlayerInfo[playerid][pKills]);
INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
INI_Int("Skin",PlayerInfo[playerid][pSkin]);
INI_Int("Vip",PlayerInfo[playerid][pVip]);
INI_Int("Ban",PlayerInfo[playerid][pBanovan]);
INI_Int("DMwin",PlayerInfo[playerid][pDM]);
return 1;
}
=============================
stock udb_hash(buf[]) {
new length=strlen(buf);
new s1 = 1;
new s2 = 0;
new n;
for (n=0; n<length; n++)
{
s1 = (s1 + buf[n]) % 65521;
s2 = (s2 + s1) % 65521;
}
return (s2 << 16) + s1;
}
=============================
Public OnPlayer Connect
TogglePlayerSpectating(playerid, true);
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_WHITE"Type your password below to login.","Login","Quit");
//=================================================
}
else
{
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,""COL_WHITE"Registering...",""COL_WHITE"Type your password below to register a new account.","Register","Quit");
}
=============================
public OnPlayerDisconnect(playerid, reason)
{
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
INI_WriteInt(File,"Skin",PlayerInfo[playerid][pSkin]);
INI_WriteInt(File,"Vip",PlayerInfo[playerid][pVip]);
INI_WriteInt(File,"Ban",PlayerInfo[playerid][pBanovan]);
INI_WriteInt(File,"DMwin",PlayerInfo[playerid][pDM]);
INI_Close(File);
}
=============================
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch( dialogid )
{
case DIALOG_REGISTER:
{
if (!response) return Kick(playerid);
if(response)
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_WHITE"Registering...",""COL_RED"You have entered an invalid password.n"COL_WHITE"Type your password below to register a new account.","Register","Quit");
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Password",udb_hash(inputtext));
INI_WriteInt(File,"Cash",0);
INI_WriteInt(File,"Admin",0);
INI_WriteInt(File,"Kills",0);
INI_WriteInt(File,"Deaths",0);
INI_WriteInt(File,"Skin",0);
INI_WriteInt(File,"Vip",0);
INI_WriteInt(File,"Ban",0);
INI_WriteInt(File,"DMWin",0);
INI_Close(File);
SetSpawnInfo(playerid, 0, 0,1728.7982,-1668.4337,22.6094,43.5554, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
SetCameraBehindPlayer(playerid);
SetPlayerArmour(playerid, 999999);
GivePlayerMoney(playerid, 5000000);
SetPlayerScore(playerid, 24);
SetPlayerSkin(playerid, 121);
SetPlayerScore(playerid,3);
GivePlayerWeapon(playerid,24,100);
GivePlayerWeapon(playerid,25,500);
GivePlayerWeapon(playerid,31,500);
TogglePlayerSpectating(playerid, false);
//ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"Great! Your Y_INI system works perfectly. Relog to save your stats!","Ok","");
=============================
=============================
[/pawn]
Pošalji response dialoga za login, koji hash koristiš ?
evo on Dialog Response a za hash koristim ovo
[pawn]stock udb_hash(buf[]) {
new length=strlen(buf);
new s1 = 1;
new s2 = 0;
new n;
for (n=0; n<length; n++)
{
s1 = (s1 + buf[n]) % 65521;
s2 = (s2 + s1) % 65521;
}
return (s2 << 16) + s1;
}[/pawn]
[pawn]public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch( dialogid )
{
case DIALOG_REGISTER:
{
if (!response) return Kick(playerid);
if(response)
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_WHITE"Registering...",""COL_RED"You have entered an invalid password.n"COL_WHITE"Type your password below to register a new account.","Register","Quit");
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Password",udb_hash(inputtext));
INI_WriteInt(File,"Cash",0);
INI_WriteInt(File,"Admin",0);
INI_WriteInt(File,"Kills",0);
INI_WriteInt(File,"Deaths",0);
INI_WriteInt(File,"Skin",0);
INI_WriteInt(File,"Vip",0);
INI_WriteInt(File,"Ban",0);
INI_WriteInt(File,"DMWin",0);
INI_Close(File);
SetSpawnInfo(playerid, 0, 0,1728.7982,-1668.4337,22.6094,43.5554, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
SetCameraBehindPlayer(playerid);
SetPlayerArmour(playerid, 999999);
GivePlayerMoney(playerid, 5000000);
SetPlayerScore(playerid, 24);
SetPlayerSkin(playerid, 121);
SetPlayerScore(playerid,3);
GivePlayerWeapon(playerid,24,100);
GivePlayerWeapon(playerid,25,500);
GivePlayerWeapon(playerid,31,500);
TogglePlayerSpectating(playerid, false);
//ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"Great! Your Y_INI system works perfectly. Relog to save your stats!","Ok","");[/pawn]
DIALOG_LOGIN, od ovog dialoga pošalji
Pre svega ovoga ispod posalji mi dialog za login ( OnDialogResponse ), mozda si zeznuo nesto unutar njega :P
Sve deluje u redu!
Ajmo ovako, probaj izbaci hash, stavi da ti pPass bude string, zatim samo sacuvaj kao string, ne kao integer, tako da ti izbaci tekst koju sifru sacuva i da li uopste sacuva :
[pawn]INI_WriteString(File, "Password", strval(inputtext));[/pawn]
Ovo gore je kada se igrac registruje, OnDialogResponse za DIALOG_REGISTER
Takodje svuda gde koristis sifru moras staviti string umesto integer
[pawn]forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
INI_String("Password", PlayerInfo[playerid][pPass]);
INI_Int("Cash",PlayerInfo[playerid][pCash]);
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);[/pawn]
Evo ti dialog login kod On Dialog Response
[pawn]
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_RED"You have entered an incorrect password.n"COL_WHITE"Type your password below to login.","Login","Quit");[/pawn]
Daj mi ceo OnDialogResponse za dialog DIALOG_LOGIN, apsolutno sve
Vcrs da dodjem kuci
Okej, dok ne dodjes pogledaj primer kako najjednostavnije treba da izgleda OnDialogResponse za Login :
[pawn]if(!response) return Kick(playerid); //Ako klikne na izlaz da ga kicka
if(response)
{
if(udb_hash(inputtext) == PlayerInfo[playerid][pLozinka]) //Proverava sifru igraca
{
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid); //Ucitava igraca
SpawnPlayer(playerid); //Spawnuje ga
return 1;
}
else //Ako ne pogodi sifru da mu opet izadje dialog za login
{
Dialog_Show(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Login", "Sifra koju ste ukucali nije tacna!\nVas account je pronadjen.Unesite lozinku","Login","Izadji");
}
}
return 1;[/pawn]
Ovako nesto maybe?
Evo cjeli onDialogResponse
[pawn]public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch( dialogid )
{
case DIALOG_REGISTER:
{
if (!response) return Kick(playerid);
if(response)
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_WHITE"Registering...",""COL_RED"You have entered an invalid password.n"COL_WHITE"Type your password below to register a new account.","Register","Quit");
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Password",udb_hash(inputtext));
INI_WriteInt(File,"Cash",0);
INI_WriteInt(File,"Admin",0);
INI_WriteInt(File,"Kills",0);
INI_WriteInt(File,"Deaths",0);
INI_WriteInt(File,"Skin",0);
INI_WriteInt(File,"Vip",0);
INI_WriteInt(File,"Ban",0);
INI_WriteInt(File,"DMWin",0);
INI_Close(File);
SetSpawnInfo(playerid, 0, 0,1728.7982,-1668.4337,22.6094,43.5554, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
SetCameraBehindPlayer(playerid);
SetPlayerArmour(playerid, 999999);
GivePlayerMoney(playerid, 5000000);
SetPlayerScore(playerid, 24);
SetPlayerSkin(playerid, 121);
SetPlayerScore(playerid,3);
GivePlayerWeapon(playerid,24,100);
GivePlayerWeapon(playerid,25,500);
GivePlayerWeapon(playerid,31,500);
TogglePlayerSpectating(playerid, false);
//ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"Great! Your Y_INI system works perfectly. Relog to save your stats!","Ok","");
}
}
case DIALOG_LOGIN:
{
if ( !response ) return Kick ( playerid );
if( response )
{
if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
{
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
GivePlayerMoney(playerid,PlayerInfo[playerid][pCash]);
SetSpawnInfo(playerid, 0, 0,1728.7982,-1668.4337,22.6094,43.5554, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
SetPlayerSkin(playerid, 121);
SetPlayerScore(playerid,3);
SetPlayerArmour(playerid, 999999);
GivePlayerWeapon(playerid,24,100);
GivePlayerWeapon(playerid,25,500);
GivePlayerWeapon(playerid,31,500);
TogglePlayerSpectating(playerid, false);
ShowPlayerDialog(playerid, DIALOG_SUCCESS_2, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"You have successfully logged in!","Ok","");
}
else
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_RED"You have entered an incorrect password.n"COL_WHITE"Type your password below to login.","Login","Quit");
}
return 1;
if(dialogid == 1)
{[/pawn]
Ovo je sve super, probaj onu metodu sto sam ti naveo gore, da ne hash-ujes sifru vec da sacuvas kao plain tekst, tako da vidis sta ce sacuvati
Citat: V01D poslato Septembar 24, 2020, 22:44:18 POSLE PODNE
Ovo je sve super, probaj onu metodu sto sam ti naveo gore, da ne hash-ujes sifru vec da sacuvas kao plain tekst, tako da vidis sta ce sacuvati
Mos mi malo objasniti detalnije nisam nesta najvise skonto.
Izvinjavam se na dp
@V01D jel mogu da ubacim novi reg/log system ali kao FilterScriptu ?
Citat: Luhzzie poslato Septembar 25, 2020, 19:54:41 POSLE PODNE
Izvinjavam se na dp
@V01D jel mogu da ubacim novi reg/log system ali kao FilterScriptu ?
Mozes, mada ti ne bih preporucio bilo sta da radis preko FS!
Mozda bi mogao probati da koristis nesto drugo za hash??
Probaj ovako nesto : KLIKNI ME (https://forum.sa-mp.com/showthread.php?t=376424)
Ne otvora mi link.
Citat: Luhzzie poslato Septembar 25, 2020, 21:56:46 POSLE PODNE
Ne otvora mi link.
(https://i.ibb.co/fqftxhn/screencapture-forum-sa-mp-showthread-php-2020-09-25-22-23-51.png)
Ako mos mi ovde kopiras posto mi ne otvora nikako i kad idem napredne opcije ide gogle support
(https://i.imgur.com/GvzZbYb.png)
Kliknes na ADVANCED i onda imas tu nesto kao "open link" ili tako nesto ne znam tacno.
@V01D sutra ti javljam dali radi ili ne
Lock Neaktivnost