Status serveraONLINE
ServerBElite | Sniper Event 18H |Nagrada:BEFan i 2KG DR
Igrači40 / 200
VERZIJA© BE v7.4.2 by PaulC
IGRAJ
Novosti
NAGRADNA IGRA #12 || Postavite Vasu ideju ili predlog za server i osvojite /donator novac!
Vise o tome na linku ispod!
KLIKNI ME!!!
  • Simple Login/Register system - YSI
    Autor Legacy Vasquez
    Pročitano 4,140 puta
0 Članovi i 1 Gost pregledava ovu temu.
*
HERO MEMBER
751
IG: Legacy
Evidentirano
Pozdrav, danas cu Vam pokazati kako uraditi simple login/register system u YSI.
Pa.. mozemo poceti  ;)



Prvo morate skinuti pawno, a to mozete uraditi kliknom na http://files.sa-mp.com/samp037_svr_R2-1-1_win32.zip
Kad ste skinuli pawno,sledece jeste da uradite folder na desktopu i onda extraktujete pawno. u taj folder

Kada ste extraktovali pawno u folder, udjete u pawno i onda uradite blank skriptu.

Kada ste uradili blank skriptu, kopirate ovo ispod i nalepite na vrh skripte.
Ali prvo morate skinuti YSI includes, mozete  skinuti klikom na https://github.com/pawn-lang/YSI-Includes.git
Kada ste skinuli include ubacite sve te fajlove u pawno/include
#include <YSI\y_ini>
#include <a_samp>

Zatim moramo definisati dialoge ,path za korisnike i boje.
#define DIALOG_REGISTER 1
#define DIALOG_LOGIN 2
#define PATH "/Korisnici/%s.ini"
#define COL_WHITE "{FFFFFF}"
#define COL_RED "{F81414}"
#define COL_GREEN "{00FF22}"
#define COL_LIGHTBLUE "{00CED1}"

Kad ste definisali dialoge,moramo kreirati PlayerInfo
enum pInfo
{
    pPass,
    pNovacDzep,
    pAdmin,
    pUbistva,
    pSmrti
}
new PlayerInfo[MAX_PLAYERS][pInfo];

Kada ste uradili PlayerInfo mozemo krenuti sa ucitavanje naloga i hashom
forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
    INI_Int("Password",PlayerInfo[playerid][pPass]);
    INI_Int("Novac",PlayerInfo[playerid][pNovacDzep]);
    INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
    INI_Int("Ubistva",PlayerInfo[playerid][pUbistva]);
    INI_Int("Smrti",PlayerInfo[playerid][pSmrti]);
    return 1;
}
stock UserPath(playerid)
{
    new string[128],playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),PATH,playername);
    return string;
}
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;
}

Kad ste to uradili onda pod OnPlayerConnect stavite ovo.
if(fexist(UserPath(playerid)))
    {
        INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
        ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_WHITE"Ukucajte sifru dabi se ulogovali.","Login","Izadji");
    }
    else
    {
        ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,""COL_WHITE"Registracija...",""COL_WHITE"Ukucajte sifru kako bi se registrovali","Register","Izadji");
    }

Onda pod OnDialogResponse stavite ovo.
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"Registracija...",""COL_RED"Ukucali ste pogresnu lozinku.\n"COL_WHITE"Ukucajte sifru kako bi registrovali nov akaunt","Register","Izadji");
                new INI:File = INI_Open(UserPath(playerid));
                INI_SetTag(File,"data");
                INI_WriteInt(File,"Password",udb_hash(inputtext));
                INI_WriteInt(File,"NovacDzep",0);
                INI_WriteInt(File,"Admin",0);
                INI_WriteInt(File,"Ubistva",0);
                INI_WriteInt(File,"Smrti",0);
                INI_Close(File);

                SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
                SpawnPlayer(playerid);
                SCM(playerid, -1, "{FF0000}Uspesno ste se registrovali!");
            }
        }

        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][pNovacDzep]);
                    SCM(playerid, -1, "{FF0000}Uspesnos te se ulogovali!");
                }
                else
                {
                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_RED"Ukucali ste pogresnu sifru.\n"COL_WHITE"Ukucajte sifru kako bi se ulogovali.","Login","Izadji");
                }
                return 1;
            }
        }
    }

Kad ste to uradili dodamo da kad nekog ubijemo/neko nas ubije na nam upise u fajl broj smrti i ubistva!
Pod OnPlayerDeath stavite ovo.
PlayerInfo[killerid][pUbistva]++;
    PlayerInfo[playerid][pSmrti]++;

Nadam se da sam nekome pomogao :), ukoliko imate neke errore javite se ovde u temi ili na discord Legacy#3634
Ljubav
0
Sviđa mi se
0
Ljutito
0
Haha
0
Nema reakcija
Nema reakcija
Nema reakcija
Nema reakcija

*
SUPER HERO MEMBER
1,173
Evidentirano
Ljubav
0
Sviđa mi se
0
Ljutito
0
Haha
0
Nema reakcija
Nema reakcija
Nema reakcija
Nema reakcija

Direktor

Dejan