Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: AristoN poslato Septembar 23, 2020, 22:19:49 POSLE PODNE

Naslov: Ucitavanje Lozinke
Poruka od: AristoN poslato Septembar 23, 2020, 22:19:49 POSLE PODNE
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): ///
Naslov: Odg: Ucitavanje Lozinke
Poruka od: V01D poslato Septembar 24, 2020, 00:58:51 PRE PODNE
Sta koristis za cuvanje? Posalji nam sve vezano za cuvanje i ucitavanje acc-ova
Naslov: Odg: Ucitavanje Lozinke
Poruka od: AristoN poslato Septembar 24, 2020, 10:47:51 PRE PODNE
[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]
Naslov: Odg: Ucitavanje Lozinke
Poruka od: kaizer poslato Septembar 24, 2020, 10:50:11 PRE PODNE
Pošalji response dialoga za login, koji hash koristiš ?
Naslov: Odg: Ucitavanje Lozinke
Poruka od: AristoN poslato Septembar 24, 2020, 10:55:06 PRE PODNE
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]
Naslov: Odg: Ucitavanje Lozinke
Poruka od: kaizer poslato Septembar 24, 2020, 11:02:38 PRE PODNE
DIALOG_LOGIN, od ovog dialoga pošalji
Naslov: Odg: Ucitavanje Lozinke
Poruka od: V01D poslato Septembar 24, 2020, 11:09:37 PRE PODNE
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]

Naslov: Odg: Ucitavanje Lozinke
Poruka od: AristoN poslato Septembar 24, 2020, 11:52:10 PRE PODNE
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]
Naslov: Odg: Ucitavanje Lozinke
Poruka od: V01D poslato Septembar 24, 2020, 12:41:27 POSLE PODNE
Daj mi ceo OnDialogResponse za dialog DIALOG_LOGIN, apsolutno sve
Naslov: Odg: Ucitavanje Lozinke
Poruka od: AristoN poslato Septembar 24, 2020, 13:17:22 POSLE PODNE
Vcrs da dodjem kuci
Naslov: Odg: Ucitavanje Lozinke
Poruka od: V01D poslato Septembar 24, 2020, 13:26:59 POSLE PODNE
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?
Naslov: Odg: Ucitavanje Lozinke
Poruka od: AristoN poslato Septembar 24, 2020, 20:14:48 POSLE PODNE
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]
Naslov: Odg: Ucitavanje Lozinke
Poruka od: 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
Naslov: Odg: Ucitavanje Lozinke
Poruka od: AristoN poslato Septembar 25, 2020, 18:00:51 POSLE PODNE
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.
Naslov: Odg: Ucitavanje Lozinke
Poruka od: AristoN 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 ?
Naslov: Odg: Ucitavanje Lozinke
Poruka od: V01D poslato Septembar 25, 2020, 20:39:48 POSLE PODNE
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)

Naslov: Odg: Ucitavanje Lozinke
Poruka od: AristoN poslato Septembar 25, 2020, 21:56:46 POSLE PODNE
Ne otvora mi link.
Naslov: Odg: Ucitavanje Lozinke
Poruka od: M Ө M Σ N Z I poslato Septembar 25, 2020, 22:25:29 POSLE PODNE
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)
Naslov: Odg: Ucitavanje Lozinke
Poruka od: AristoN poslato Septembar 25, 2020, 22:53:46 POSLE PODNE
Ako mos mi ovde kopiras posto mi ne otvora  nikako i kad idem napredne opcije ide gogle support

(https://i.imgur.com/GvzZbYb.png)
Naslov: Odg: Ucitavanje Lozinke
Poruka od: Ray_Gonzalez poslato Septembar 25, 2020, 23:29:17 POSLE PODNE
Kliknes na ADVANCED i onda imas tu nesto kao "open link" ili tako nesto ne znam tacno.
Naslov: Odg: Ucitavanje Lozinke
Poruka od: AristoN poslato Septembar 25, 2020, 23:48:52 POSLE PODNE
@V01D  sutra ti javljam dali radi ili ne
Naslov: Odg: Ucitavanje Lozinke
Poruka od: V01D poslato Septembar 27, 2020, 10:05:11 PRE PODNE
Lock Neaktivnost