problem with register system
#2

pawn Код:
#include <a_samp>
#include <Dini>
#include <zcmd>
#include <sscanf2>

new Logged[MAX_PLAYERS] = 0;

#define COLOUR_GREEN    0x00FF00AA
#define COLOUR_RED      0xFF0000FF

adler32_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 OnFilterScriptInit()
{
    print("   Loaded successful.");
    return 1;
}

public OnPlayerConnect(playerid)
{
    Logged[playerid]=0;
    return 1;
}

public OnPlayerUpdate(playerid)
{
    new name[MAX_PLAYER_NAME], file[200];
    GetPlayerName(playerid, name, sizeof(name));
    format(file, sizeof(file), "\\users\\%s.ini", name);
    dini_IntSet(file, "money", GetPlayerMoney(playerid));
    dini_IntSet(file, "score", GetPlayerScore(playerid));
    return 1;
}

CMD:register(playerid, params[])
{
    new name[MAX_PLAYER_NAME], file[200], text[60];
    GetPlayerName(playerid, name, sizeof(name));
    format(file, sizeof(file), "\\users\\%s.ini", name);
    if (!dini_Exists(file))
    {
        if (!sscanf(params, "s[60]", text))
        {
            new pass=adler32_hash(text);
            dini_Create(file);
            dini_IntSet(file, "password", pass);
            dini_IntSet(file, "money", GetPlayerMoney(playerid));
            dini_IntSet(file, "score", GetPlayerScore(playerid));
            Logged[playerid] = 1;
            SendClientMessage(playerid, COLOUR_GREEN, "You registered and automatically logged in.");
        }
        else
        {
            SendClientMessage(playerid, COLOUR_RED, "You must enter a password to register.");
        }
    }
    else
    {
        SendClientMessage(playerid, COLOUR_RED, "This name is already registered.");
    }
    return 1;
}


CMD:login(playerid, params[])
{
    new name[MAX_PLAYER_NAME], file[200], text[60];
    GetPlayerName(playerid, name, sizeof(name));
    format(file, sizeof(file), "\\users\\%s.ini", name);
    if (Logged[playerid]==0)
    {
        if (!sscanf(params, "s[60]", text))
        {
            if (dini_Exists(file))
            {
                if (adler32_hash(text)==dini_Int(file, "password"))
                {
                    new mon=dini_Int(file, "money"), sc=dini_Int(file, "score");
                    GivePlayerMoney(playerid, mon);
                    SetPlayerScore(playerid, sc);
                    Logged[playerid] = 1;
                    SendClientMessage(playerid, COLOUR_GREEN, "You are now logged in, and your stats were automatically loaded.");
                }
                else
                {
                    SendClientMessage(playerid, COLOUR_RED, "Login failed - wrong password!");
                }
            }
            else
            {
                if(!dini_Exists(file))  SendClientMessage(playerid, COLOUR_RED, "This name isn't registered! Please register now.");
            }
        }
        else
        {
            SendClientMessage(playerid, COLOUR_RED, "You must enter a password to register.");
        }
    }
    else
    {
        SendClientMessage(playerid, COLOUR_RED, "You are already logged in.");
    }
    return 1;
}
I ain't sure, try to test it.
Reply


Messages In This Thread
problem with register system - by HurtLocker - 31.03.2013, 18:47
Re: problem with register system - by Private200 - 31.03.2013, 18:50
Re: problem with register system - by HurtLocker - 31.03.2013, 18:52

Forum Jump:


Users browsing this thread: 1 Guest(s)