Something wrong with my register system.
#1

pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    new name[MAX_PLAYER_NAME], file[128], Float:x, Float:y, Float:z;
    GetPlayerName(playerid, name, sizeof(name));
    format(file, sizeof(file), SERVER_USER_FILE, name);
    if(gPlayerLogged[playerid] == 1)
    {
        dini_IntSet(file, "Score", PlayerInfo[playerid][pScore]);
        dini_IntSet(file, "Money", PlayerInfo[playerid][pCash]);
        dini_IntSet(file, "AdminLevel",PlayerInfo[playerid][pAdminLevel]);
        dini_IntSet(file, "WantedLevel",GetPlayerWantedLevel(playerid));
        dini_IntSet(file, "Skin", GetPlayerSkin(playerid));
        dini_IntSet(file, "Cop", PlayerInfo[playerid][pCop]);
        dini_IntSet(file, "Civilian", PlayerInfo[playerid][pCivilian]);
        dini_IntSet(file, "FirstTime", PlayerInfo[playerid][pFirstTime] = 1);
        GetPlayerPos(playerid, x, y, z);
        dini_FloatSet(file, "posX", x);
        dini_FloatSet(file, "posY", y);
        dini_FloatSet(file, "posZ", z);
    }
    gPlayerLogged[playerid] = 0;
    return 1;
}

public OnPlayerSpawn(playerid)
{
     new name[MAX_PLAYER_NAME], file[128], Float:x, Float:y, Float:z;
    GetPlayerName(playerid, name, sizeof(name));
    format(file, sizeof(file), SERVER_USER_FILE, name);
    if(PlayerInfo[playerid][pFirstTime] == 1)
    {
        PlayerInfo[playerid][pCop] = dini_Int(file, "Cop");
        PlayerInfo[playerid][pCivilian] = dini_Int(file, "Civilian");
        x = dini_Float(file, "posX");
        y = dini_Float(file, "posY");
        z = dini_Float(file, "posZ");
        SetPlayerPos(playerid, x, y, z);
        SetPlayerSkin(playerid,dini_Int(file,"Skin"));
        SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
        PlayerInfo[playerid][pAdminLevel] = dini_Int(file, "AdminLevel");
        GivePlayerMoney(playerid, dini_Int(file, "Money")-GetPlayerMoney(playerid));
        SetPlayerWantedLevel(playerid, dini_Int(file, "WantedLevel"));
        SendClientMessage(playerid,COLOR_GREEN, "[SYSTEM]: Logged in.");
    }
    return 1;
}


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if (dialogid == 1)
    {
        new name[MAX_PLAYER_NAME], file[128], string[128];
        GetPlayerName(playerid, name, sizeof(name));
        format(file, sizeof(file), SERVER_USER_FILE, name);
        if(!response) return Kick(playerid);
        if (!strlen(inputtext)) return
        ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Register:", "Register please.", "Register", "leave");
        dini_Create(file);
        dini_IntSet(file, "Password", udb_hash(inputtext));
        dini_IntSet(file, "AdminLevel",PlayerInfo[playerid][pAdminLevel] = 0);
        dini_IntSet(file, "Money",PlayerInfo[playerid][pCash] = 5000);
        dini_IntSet(file, "Score",PlayerInfo[playerid][pScore] = 0);
        dini_IntSet(file, "WantedLevel",PlayerInfo[playerid][pWanted] = 0);
        dini_IntSet(file, "Skin",PlayerInfo[playerid][pSkin] = 0);
        dini_IntSet(file, "Cop",PlayerInfo[playerid][pCop] = -1);
        dini_IntSet(file, "Civilian",PlayerInfo[playerid][pCivilian] = -1);
        dini_IntSet(file, "FirstTime",PlayerInfo[playerid][pFirstTime] = 0);
        format(string, 128, "[SYSTEM]: Registered and logged in.", name, inputtext);
        SendClientMessage(playerid, COLOR_YELLOW, string);
        gPlayerLogged[playerid] = 1;
    }
    if (dialogid == 2)
    {
        new name[MAX_PLAYER_NAME], file[128];
        GetPlayerName(playerid, name, sizeof(name));
        format(file, sizeof(file), SERVER_USER_FILE, name);
        if(!response) return Kick(playerid);
        if (!strlen(inputtext)) return ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Login:", "Please login", "Login", "Leave);
        new tmp;
        tmp = dini_Int(file, "
Password");
        if(udb_hash(inputtext) != tmp) {
            SendClientMessage(playerid, COLOR_RED, "
Vale parool!");
            ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "
Login:", "Please login", "Login", "Leave);
        }
        else
        {
            gPlayerLogged[playerid] = 1;
            PlayerInfo[playerid][pCop] = dini_Int(file, "Cop");
            PlayerInfo[playerid][pCivilian] = dini_Int(file, "Civilian");
            SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
            PlayerInfo[playerid][pAdminLevel] = dini_Int(file, "AdminLevel");
            GivePlayerMoney(playerid, dini_Int(file, "Money")-GetPlayerMoney(playerid));
            SetPlayerWantedLevel(playerid, dini_Int(file, "WantedLevel"));
            SetPlayerSkin(playerid,dini_Int(file,"Skin"));
            SendClientMessage(playerid,COLOR_GREEN, "[SYSTEM]: You are logged.");
        }
    }
    return 1;
}
Something wrong with it, if you register and get logged in then your money will be 000000 but if you relog then you will have 5000 money, you sould have 5000 money already then if you first register. I can't find missing stuff, mybe you can?
Reply
#2

pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    new name[MAX_PLAYER_NAME], file[128], Float:x, Float:y, Float:z;
    GetPlayerName(playerid, name, sizeof(name));
    format(file, sizeof(file), SERVER_USER_FILE, name);
    if(gPlayerLogged[playerid] == 1)
    {
        new pMoney;//
        pMoney = GetPlayerMoney(playerid);//
       
        dini_IntSet(file, "Score", PlayerInfo[playerid][pScore]);
        dini_IntSet(file, "Money", pMoney);//
        dini_IntSet(file, "AdminLevel",PlayerInfo[playerid][pAdminLevel]);
        dini_IntSet(file, "WantedLevel",GetPlayerWantedLevel(playerid));
        dini_IntSet(file, "Skin", GetPlayerSkin(playerid));
        dini_IntSet(file, "Cop", PlayerInfo[playerid][pCop]);
        dini_IntSet(file, "Civilian", PlayerInfo[playerid][pCivilian]);
        dini_IntSet(file, "FirstTime", PlayerInfo[playerid][pFirstTime] = 1);
        GetPlayerPos(playerid, x, y, z);
        dini_FloatSet(file, "posX", x);
        dini_FloatSet(file, "posY", y);
        dini_FloatSet(file, "posZ", z);
    }
    gPlayerLogged[playerid] = 0;
    return 1;
}

public OnPlayerSpawn(playerid)
{
     new name[MAX_PLAYER_NAME], file[128], Float:x, Float:y, Float:z;
    GetPlayerName(playerid, name, sizeof(name));
    format(file, sizeof(file), SERVER_USER_FILE, name);
    if(PlayerInfo[playerid][pFirstTime] == 1)
    {
        PlayerInfo[playerid][pCop] = dini_Int(file, "Cop");
        PlayerInfo[playerid][pCivilian] = dini_Int(file, "Civilian");
        x = dini_Float(file, "posX");
        y = dini_Float(file, "posY");
        z = dini_Float(file, "posZ");
        SetPlayerPos(playerid, x, y, z);
        SetPlayerSkin(playerid,dini_Int(file,"Skin"));
        SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
        PlayerInfo[playerid][pAdminLevel] = dini_Int(file, "AdminLevel");
        GivePlayerMoney(playerid, dini_Int(file, "Money")-GetPlayerMoney(playerid));
        SetPlayerWantedLevel(playerid, dini_Int(file, "WantedLevel"));
        SendClientMessage(playerid,COLOR_GREEN, "[SYSTEM]: Logged in.");
    }
    return 1;
}


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if (dialogid == 1)
    {
        new name[MAX_PLAYER_NAME], file[128], string[128];
        GetPlayerName(playerid, name, sizeof(name));
        format(file, sizeof(file), SERVER_USER_FILE, name);
        if(!response) return Kick(playerid);
        if (!strlen(inputtext)) return
        ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Register:", "Register please.", "Register", "leave");
        dini_Create(file);
        dini_IntSet(file, "Password", udb_hash(inputtext));
        dini_IntSet(file, "AdminLevel",PlayerInfo[playerid][pAdminLevel] = 0);
        dini_IntSet(file, "Money",PlayerInfo[playerid][pCash] = 5000);
        dini_IntSet(file, "Score",PlayerInfo[playerid][pScore] = 0);
        dini_IntSet(file, "WantedLevel",PlayerInfo[playerid][pWanted] = 0);
        dini_IntSet(file, "Skin",PlayerInfo[playerid][pSkin] = 0);
        dini_IntSet(file, "Cop",PlayerInfo[playerid][pCop] = -1);
        dini_IntSet(file, "Civilian",PlayerInfo[playerid][pCivilian] = -1);
        dini_IntSet(file, "FirstTime",PlayerInfo[playerid][pFirstTime] = 0);
        format(string, 128, "[SYSTEM]: Registered and logged in.", name, inputtext);
        SendClientMessage(playerid, COLOR_YELLOW, string);
        gPlayerLogged[playerid] = 1;
    }
    if (dialogid == 2)
    {
        new name[MAX_PLAYER_NAME], file[128];
        GetPlayerName(playerid, name, sizeof(name));
        format(file, sizeof(file), SERVER_USER_FILE, name);
        if(!response) return Kick(playerid);
        if (!strlen(inputtext)) return ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Login:", "Please login", "Login", "Leave);
        new tmp;
        tmp = dini_Int(file, "
Password");
        if(udb_hash(inputtext) != tmp) {
            SendClientMessage(playerid, COLOR_RED, "
Vale parool!");
            ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "
Login:", "Please login", "Login", "Leave);
        }
        else
        {
            gPlayerLogged[playerid] = 1;
            PlayerInfo[playerid][pCop] = dini_Int(file, "Cop");
            PlayerInfo[playerid][pCivilian] = dini_Int(file, "Civilian");
            SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
            PlayerInfo[playerid][pAdminLevel] = dini_Int(file, "AdminLevel");
            GivePlayerMoney(playerid, dini_Int(file, "Money")-GetPlayerMoney(playerid));
            SetPlayerWantedLevel(playerid, dini_Int(file, "WantedLevel"));
            SetPlayerSkin(playerid,dini_Int(file,"Skin"));
            SendClientMessage(playerid,COLOR_GREEN, "[SYSTEM]: You are logged.");
        }
    }
    return 1;
}
Saved the players actual money on disconnect so it loads it on login

EDIT: do the same thing with score if you have the same problem with it
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)