YSI/Y_ini question
#1

How do I save custom things using YSI/Y_ini. I got fully working save and load system but how do I for example enable the player to save custom things.

Example:
Код:
CMD:buyme(playerid, params[])
{
	if(!strcmp(params, "meh", true))
	{
		if(GetPlayerMoney(playerid, < 3000)
		{
		    GivePlayerMoney(playerid, -3000);
		    SendClientMessage(playerid, COLOR_YELLOW, "<!>Purchased meh!");
		    //what here?
		}
		else
		{
		    SendClientMessage(playerid, COLOR_RED, "<!>Not enough money for this!");
		}
		return 1;
	}
	return 1;
}
Код:
enum PlayerInfo
{
    Pass[129],
    Adminlevel,
    VIPlevel,
    Money,
    Scores,
    Kills,
    Deaths,
    meh //This one is the one that I want to save.
}
new pInfo[MAX_PLAYERS][PlayerInfo];
How do I set it so it writes the file upon purchase?


Should I just add like
Код:
pInfo[playerid][meh]++;
And then like on loadaccountdata
Код:
INI_Int("Meh",pInfo[playerid][mah]);
Reply
#2

I'm not sure but I think it can be done this way:

pawn Код:
new
    INI:myini = INI_Open("myfile.ini");
INI_WriteInt(myini, "meh", pInfo[playerid][meh];
INI_Close(myini);
Reply
#3

Hmmm my current code is this
Код:
CMD:buy(playerid, params[])
{
    if(!strcmp(params, "camo", true))
    {
        if(pInfo[playerid][Camo] == 0)
        {
	        if(GetPlayerMoney(playerid) < 5000)
	        {
	            GivePlayerMoney(playerid, -5000);
				SendClientMessage(playerid, COLOR_YELLOW, "You have purchased camoflauge!");
				pInfo[playerid][Camo]++;
			}
			else
			{
			    SendClientMessage(playerid, COLOR_WHITE, "List of purchases!");
			    SendClientMessage(playerid, COLOR_YELLOW, "Camo");
			}
			return 1;
		}
		if(pInfo[playerid][Camo] == 1)
		{
		    SendClientMessage(playerid, COLOR_RED, "<!>You already have camouflage!");
		}
		return 1;
	}
	return 1;
}

CMD:camo(playerid, params[])
{
	if(pInfo[playerid][Camo] == 0)
	{
	    SendClientMessage(playerid, COLOR_RED, "<!>You dont have camo!");
	}
	else if(pInfo[playerid][Camo] == 1)
	{
	    SetPlayerVirtualWorld(playerid, 1337);
	}
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    if(fexist(Path(playerid)))
    {
        new INI:file = INI_Open(Path(playerid));
        INI_SetTag(file,"Player's Data");
        INI_WriteInt(file,"AdminLevel",pInfo[playerid][Adminlevel]);
        INI_WriteInt(file,"VIPLevel",pInfo[playerid][VIPlevel]);
        INI_WriteInt(file,"Money",GetPlayerMoney(playerid));
        INI_WriteInt(file,"Scores",GetPlayerScore(playerid));
        INI_WriteInt(file,"Kills",pInfo[playerid][Kills]);
        INI_WriteInt(file,"Deaths",pInfo[playerid][Deaths]);
        INI_WriteInt(file,"Camo",pInfo[playerid][Camo]);
        INI_Close(file);
        return 1;
    }
    return 1;
}


enum PlayerInfo
{
    Pass[129],
    Adminlevel,
    VIPlevel,
    Money,
    Scores,
    Kills,
    Deaths,
    Camo
}
new pInfo[MAX_PLAYERS][PlayerInfo];

forward loadaccount_user(playerid, name[], value[]);
public loadaccount_user(playerid, name[], value[])
{
    INI_String("Password", pInfo[playerid][Pass],129); 
    INI_Int("AdminLevel",pInfo[playerid][Adminlevel]);
    INI_Int("VIPLevel",pInfo[playerid][VIPlevel]);
    INI_Int("Money",pInfo[playerid][Money]); 
    INI_Int("Scores",pInfo[playerid][Scores]);
    INI_Int("Kills",pInfo[playerid][Kills]);
    INI_Int("Deaths",pInfo[playerid][Deaths]);
    INI_Int("Camo",pInfo[playerid][Camo]);
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == dregister) 
    {
        if(!response) return Kick(playerid); 
        if(response) 
        {
            if(!strlen(inputtext)) 
            {
                ShowPlayerDialog(playerid,dregister,DIALOG_STYLE_INPUT,"Register","Welcome! This account is not registered.\nEnter your own password to create a new account.\nPlease enter the password!","Register","Quit");
                return 1;
            }

            new hashpass[129]; 
            WP_Hash(hashpass,sizeof(hashpass),inputtext);
            new INI:file = INI_Open(Path(playerid)); 
            INI_SetTag(file,"Player's Data");
            INI_WriteString(file,"Password",hashpass);
            INI_WriteInt(file,"AdminLevel",0); 
            INI_WriteInt(file,"VIPLevel",0);
            INI_WriteInt(file,"Money",0);
            INI_WriteInt(file,"Scores",0);
            INI_WriteInt(file,"Kills",0);
            INI_WriteInt(file,"Deaths",0);
            INI_WriteInt(file,"Camo",0);
			INI_Close(file);
            SendClientMessage(playerid,-1,"You have been successfully registered");
            return 1;
        }
    }
    if(dialogid == dlogin) 
    {
        if(!response) return Kick(playerid); 
        if(response) 
        {
            new hashpass[129]; 
            WP_Hash(hashpass,sizeof(hashpass),inputtext); 
            if(!strcmp(hashpass,pInfo[playerid][Pass])) 
            {
                INI_ParseFile(Path(playerid),"loadaccount_%s",.bExtra = true, .extra = playerid);
                SetPlayerScore(playerid,pInfo[playerid][Scores]);
                GivePlayerMoney(playerid,pInfo[playerid][Money]);
                SendClientMessage(playerid,-1,"Welcome back! You have successfully logged in");
            }
            else 
            {
                ShowPlayerDialog(playerid,dlogin,DIALOG_STYLE_INPUT,"Login","Welcome back. This account is registered. \nInsert your password to login to your account.\nIncorrect password!","Login","Quit");
                return 1;
            }
        }
    }
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    KillCam[playerid] = false;
    KillTimer(PayCheck[playerid]);
    if(fexist(Path(playerid)))
    {
        new INI:file = INI_Open(Path(playerid));
        INI_SetTag(file,"Player's Data");
        INI_WriteInt(file,"AdminLevel",pInfo[playerid][Adminlevel]);
        INI_WriteInt(file,"VIPLevel",pInfo[playerid][VIPlevel]);
        INI_WriteInt(file,"Money",GetPlayerMoney(playerid));
        INI_WriteInt(file,"Scores",GetPlayerScore(playerid));
        INI_WriteInt(file,"Kills",pInfo[playerid][Kills]);
        INI_WriteInt(file,"Deaths",pInfo[playerid][Deaths]);
        INI_WriteInt(file,"Camo",pInfo[playerid][Camo]);
        INI_Close(file);
        return 1;
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)