SA-MP Forums Archive
[Y_INI] User File public is not loading - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: [Y_INI] User File public is not loading (/showthread.php?tid=537470)



[Y_INI] User File public is not loading - Manyula - 15.09.2014

Hey folks,

I've already debugged my code and recognized that my "loadaccount_user" function is not being called.

OnplayerConnect (hooked)
pawn Код:
if(fexist(Path(playerid)))
    {
        INI_ParseFile(Path(playerid), "loadaccount_%s", .bExtra = true, .extra = playerid, .bPassTag = true);
        new pName_[MAX_PLAYER_NAME],
            stringDE_[128],
            stringEN_[128];
        GetPlayerName(playerid, pName_, sizeof(pName_));
        format(stringDE_, sizeof(stringDE_), "Willkommen zurьck, "#C_LIGHT_BLUE_E"%s"#C_DIALOG_E"! Dieser Account ist registriert!\nBitte gib das Passwort fьr diesen Account ein!", pName_);
        format(stringEN_, sizeof(stringEN_), "Welcome back, "#C_LIGHT_BLUE_E"%s"#C_DIALOG_E"! This account is registered!\nPlease type in the password for this account!", pName_);
        ShowLanguageDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Login", stringDE_, stringEN_, "Einloggen", "Log in", "Abbrechen", "Cancel");
    }
    else ShowPlayerDialog(playerid, DIALOG_LANGUAGES, DIALOG_STYLE_LIST, "Sprachauswahl | Language Selection", "[GER] Deutsch | German\n[ENG] Englisch | English", "OK", "");
OnPlayerDisconnect (hooked)
pawn Код:
print("OnPlayerDisconnect executed.");
    new INI:file = INI_Open(Path(playerid));
    INI_SetTag(file, "User Data");
    INI_WriteString(file, "IP", pInfo[playerid][IP]);
    INI_WriteInt(file, "AdminLevel", pInfo[playerid][AdminLevel]);
    INI_WriteInt(file, "Money", GetPlayerMoney(playerid));
    INI_WriteInt(file, "Bank", pInfo[playerid][Bank]);
    INI_WriteInt(file, "Score", GetPlayerScore(playerid));
    INI_WriteInt(file, "Kills", pInfo[playerid][Kills]);
    INI_WriteInt(file, "Deaths", pInfo[playerid][Deaths]);
    INI_WriteInt(file, "Language", pInfo[playerid][Language]);
    INI_Close(file);
Function for loading the user file
pawn Код:
forward loadaccount_user(playerid, name[], value[]);
public loadaccount_user(playerid, name[], value[])
{
    print("loadaccount_user executed.");
    INI_String("Password", pInfo[playerid][Password], 129);
    INI_String("IP", pInfo[playerid][IP], 16);
    INI_Int("AdminLevel", pInfo[playerid][AdminLevel]);
    INI_Int("Money", pInfo[playerid][Money]);
    INI_Int("Bank", pInfo[playerid][Bank]);
    INI_Int("Score", pInfo[playerid][Score]);
    INI_Int("Kills", pInfo[playerid][Kills]);
    INI_Int("Deaths", pInfo[playerid][Deaths]);
    INI_Int("Language", pInfo[playerid][Language]);
    return 1;
}
------------------------------------------------------------------------------------------------------------------

Additionally, no data is being saved even though OnPlayerDisconnect (hooked) is being called.

pawn Код:
public OnPlayerSpawn(playerid)
{
    SetPlayerColor(playerid, C_BLUE);

    new VirtualWorld = GetPlayerVirtualWorld(playerid);
    switch(VirtualWorld)
    {
        case 0:
        {
            if(pInfo[playerid][JustLoggedIn] == true)
            {
                print("JustLoggedIn == true");
                SetCameraBehindPlayer(playerid);
                GivePlayerMoneyEx(playerid, pInfo[playerid][Money]);
                SetPlayerScore(playerid, pInfo[playerid][Score]);
                UseTeleports[playerid] = true;
                SetSpawnProtection(playerid);
                pInfo[playerid][JustLoggedIn] = false;
                return 1;
            }
            if(pInfo[playerid][JustRegistered] == true)
            {
                print("JustRegistered == true");
                cmd_rules(playerid, "");
                pInfo[playerid][JustRegistered] = false;
                GivePlayerMoneyEx(playerid, 5000);
                return 1;
            }
            if(pInfo[playerid][JustLoggedIn] == false && pInfo[playerid][JustRegistered] == false)
            {
                print("Common spawn");
                GivePlayerMoneyEx(playerid, 5000);
                UseTeleports[playerid] = true;
                SetSpawnProtection(playerid);
                return 1;
            }
        }
    }
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    SendDeathMessage(killerid, playerid, reason);
   
    new cash = GetPlayerMoney(playerid);
    if(killerid != INVALID_PLAYER_ID) //Killed by another player
    {
        print("killerid != INVALID_PLAYER_ID, executing code.");
        GivePlayerMoneyEx(killerid, cash);
        GivePlayerMoneyEx(playerid, -cash);
        SetPlayerScore(killerid, pInfo[killerid][Score] + 1);
        pInfo[killerid][Kills] += 1;
    }
    if(killerid == INVALID_PLAYER_ID) //Suicide
    {
        print("killerid == INVALID_PLAYER_ID, executing code.");
        GivePlayerMoneyEx(playerid, -cash);
    }
    pInfo[playerid][Deaths] += 1;
    return 1;
}



Re: [Y_INI] User File public is not loading - biker122 - 15.09.2014

You can't have spaces between texts.
In you INI_SetTag, you've left some space between 2 words.
Make it as User_Data


Re: [Y_INI] User File public is not loading - Manyula - 15.09.2014

Thanks for that piece of advise, but that doesn't change anything concerning my actual problem...
I tried to modify the userdata manually, but everytime I connect to the server, the data is being resetted.

EDIT: It might be worth mentioning that I'm using y_ini from YSI 4.0 beta. As far as I recall, the exact same code worked under the previous YSI version, so it might be a 4.0 issue?


Re: [Y_INI] User File public is not loading - Manyula - 15.09.2014

Silly me.
I must have seen ghosts. -.- Thanks a lot for helping me out, Alex!


Re: [Y_INI] User File public is not loading - Manyula - 16.09.2014

Update: I am a 100% sure that my code worked with the previous YSI version. I followed this (https://sampforum.blast.hk/showthread.php?tid=352703) tutorial here, and it worked out very well, even though the "user" did not match the tag of the file.

For some reason, if I try to edit a user file manually, everything is being resetted. The only thing that (I think) is being displayed is the number of deaths. I'm going to post some more code later!