Problem With y_ini
#1

y_ini not saving data correctly :/

here is the codes:
Код:
public OnPlayerDisconnect(playerid, reason)
{

	new float:x,float:y,float:z;
	GetPlayerPos(playerid,x,y,z);
	new float:health,float:armour;
 	GetPlayerHealth(playerid,health);
 	GetPlayerArmour(playerid,armour);
    new INI:File = INI_Open(UserPath(playerid));
	INI_SetTag(File,"data");
	INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
	INI_WriteInt(File,"BankCash",BankCash[playerid]);
	INI_WriteInt(File,"Score",GetPlayerScore(playerid));
	INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
	INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
	INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
	INI_WriteInt(File,"Helmets",Helmets[playerid]);
	INI_WriteInt(File,"Vests",Vests[playerid]);
	INI_WriteInt(File,"Medikits",Medikits[playerid]);
	INI_WriteInt(File,"Health",health);
	INI_WriteInt(File,"Armour",armour);
	INI_WriteInt(File,"Mats",PlayerInfo[playerid][pMats]);
	INI_WriteInt(File,"Skin",GetPlayerSkin(playerid));
	INI_WriteInt(File,"Job",PlayerInfo[playerid][pJob]);
	INI_WriteInt(File,"SalaryDate",PlayerInfo[playerid][SalaryDate]);
	INI_WriteInt(File,"JobLevel",PlayerInfo[playerid][JobLevel]);
	INI_WriteInt(File,"PosX",x);
	INI_WriteInt(File,"PosY",y);
	INI_WriteInt(File,"PosZ",z);
	INI_Close(File);
	return 1;
}

forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
	INI_Int("Password",PlayerInfo[playerid][pPass]);
	INI_Int("Cash",PlayerInfo[playerid][pCash]);
	INI_Int("BankCash",PlayerInfo[playerid][pBankCash]);
	INI_Int("Score",PlayerInfo[playerid][pScore]);
	INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
	INI_Int("Kills",PlayerInfo[playerid][pKills]);
	INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
	INI_Int("Helmets",Helmets[playerid]);
	INI_Int("Vests",Vests[playerid]);
	INI_Int("Medikits",Medikits[playerid]);
	INI_Int("Health",PlayerInfo[playerid][pHealth]);
	INI_Int("Armour",PlayerInfo[playerid][pArmour]);
	INI_Int("Mats",PlayerInfo[playerid][pMats]);
	INI_Int("Skin",PlayerInfo[playerid][pSkin]);
	INI_Int("Job",PlayerInfo[playerid][pJob]);
	INI_Int("SalaryDate",PlayerInfo[playerid][SalaryDate]);
	INI_Int("JobLevel",PlayerInfo[playerid][JobLevel]);
	INI_Int("PosX",PlayerInfo[playerid][PosX]);
	INI_Int("PosY",PlayerInfo[playerid][PosY]);
	INI_Int("PosZ",PlayerInfo[playerid][PosZ]);
	
	
	

	OldMats[playerid] = PlayerInfo[playerid][pMats];
 	return 1;
}
the variables are capturing them as well but when player disconnect it's not saving data

a player stats
Код:
[data]
Password = 66912664
Cash = 0
BankCash = 20000
Score = 0
Admin = 0
Kills = 0
Deaths = 0
Helmets = 0
Vests = 0
Medikits = 0
Health = 100
Armour = 0
Mats = 0
Skin = 0
Job = 4
SalaryDate = 0
JobLevel = 0
PosX = 0
PosY = 0
PosZ = 0
only registered values save i mean OnPlayerRegister INI_WriteInt(File,"Cash",0);
Reply
#2

INI_Int is for an integer, INI_String is for a string and INI_Float is for a float

PHP код:
forward LoadUser_data(playerid,name[],value[]);
public 
LoadUser_data(playerid,name[],value[])
{
    
INI_Int("Password",PlayerInfo[playerid][pPass]);
    
INI_Int("Cash",PlayerInfo[playerid][pCash]);
    
INI_Int("BankCash",PlayerInfo[playerid][pBankCash]);
    
INI_Int("Score",PlayerInfo[playerid][pScore]);
    
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
    
INI_Int("Kills",PlayerInfo[playerid][pKills]);
    
INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
    
INI_Int("Helmets",Helmets[playerid]);
    
INI_Int("Vests",Vests[playerid]);
    
INI_Int("Medikits",Medikits[playerid]);
    
INI_Float("Health",PlayerInfo[playerid][pHealth]); //This is a float, you need to use INI_Float
    
INI_Float("Armour",PlayerInfo[playerid][pArmour]); //This is a float, you need to use INI_Float
    
INI_Int("Mats",PlayerInfo[playerid][pMats]);
    
INI_Int("Skin",PlayerInfo[playerid][pSkin]);
    
INI_Int("Job",PlayerInfo[playerid][pJob]);
    
INI_Int("SalaryDate",PlayerInfo[playerid][SalaryDate]);
    
INI_Int("JobLevel",PlayerInfo[playerid][JobLevel]);
    
INI_Float("PosX",PlayerInfo[playerid][PosX]); //This is a float, you need to use INI_Float
    
INI_Float("PosY",PlayerInfo[playerid][PosY]); //This is a float, you need to use INI_Float
    
INI_Float("PosZ",PlayerInfo[playerid][PosZ]); //This is a float, you need to use INI_Float
    
    
    
    
OldMats[playerid] = PlayerInfo[playerid][pMats];
     return 
1;

I suggest you to create a new function like 'SaveUser', so that if you want to save players data you can easily use SaveUser(playerid) on it, I code this for you. And also I've added how to solve your problem with that saving system

PHP код:
forward SaveUser(playerid);
public 
SaveUser(playerid)
{
    new 
float:x,float:y,float:z;
    
GetPlayerPos(playerid,x,y,z);
    new 
float:health,float:armour;
     
GetPlayerHealth(playerid,health);
     
GetPlayerArmour(playerid,armour);
    new 
INI:File INI_Open(UserPath(playerid));
    
INI_SetTag(File,"data");
    
INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
    
INI_WriteInt(File,"BankCash",BankCash[playerid]);
    
INI_WriteInt(File,"Score",GetPlayerScore(playerid));
    
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
    
INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
    
INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
    
INI_WriteInt(File,"Helmets",Helmets[playerid]);
    
INI_WriteInt(File,"Vests",Vests[playerid]);
    
INI_WriteInt(File,"Medikits",Medikits[playerid]);
    
INI_WriteFloat(File,"Health",health); //This is a float, you need to use INI_WriteFloat
    
INI_WriteFloat(File,"Armour",armour); //This is a float, you need to use INI_WriteFloat
    
INI_WriteInt(File,"Mats",PlayerInfo[playerid][pMats]);
    
INI_WriteInt(File,"Skin",GetPlayerSkin(playerid));
    
INI_WriteInt(File,"Job",PlayerInfo[playerid][pJob]);
    
INI_WriteInt(File,"SalaryDate",PlayerInfo[playerid][SalaryDate]);
    
INI_WriteInt(File,"JobLevel",PlayerInfo[playerid][JobLevel]);
    
INI_WriteFloat(File,"PosX",x); //This is a float, you need to use INI_WriteFloat
    
INI_WriteFloat(File,"PosY",y); //This is a float, you need to use INI_WriteFloat
    
INI_WriteFloat(File,"PosZ",z); //This is a float, you need to use INI_WriteFloat
    
INI_Close(File);
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason)
{    
    
SaveUser(playerid);
    return 
1;
}
CMD:savemydataplz(playeridparams[])
{
    
SaveUser(playerid);
    return 
1;

Reply
#3

Quote:
Originally Posted by Hreesang
Посмотреть сообщение
INI_Int is for an integer, INI_String is for a string and INI_Float is for a float

PHP код:
forward LoadUser_data(playerid,name[],value[]);
public 
LoadUser_data(playerid,name[],value[])
{
    
INI_Int("Password",PlayerInfo[playerid][pPass]);
    
INI_Int("Cash",PlayerInfo[playerid][pCash]);
    
INI_Int("BankCash",PlayerInfo[playerid][pBankCash]);
    
INI_Int("Score",PlayerInfo[playerid][pScore]);
    
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
    
INI_Int("Kills",PlayerInfo[playerid][pKills]);
    
INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
    
INI_Int("Helmets",Helmets[playerid]);
    
INI_Int("Vests",Vests[playerid]);
    
INI_Int("Medikits",Medikits[playerid]);
    
INI_Float("Health",PlayerInfo[playerid][pHealth]); //This is a float, you need to use INI_Float
    
INI_Float("Armour",PlayerInfo[playerid][pArmour]); //This is a float, you need to use INI_Float
    
INI_Int("Mats",PlayerInfo[playerid][pMats]);
    
INI_Int("Skin",PlayerInfo[playerid][pSkin]);
    
INI_Int("Job",PlayerInfo[playerid][pJob]);
    
INI_Int("SalaryDate",PlayerInfo[playerid][SalaryDate]);
    
INI_Int("JobLevel",PlayerInfo[playerid][JobLevel]);
    
INI_Float("PosX",PlayerInfo[playerid][PosX]); //This is a float, you need to use INI_Float
    
INI_Float("PosY",PlayerInfo[playerid][PosY]); //This is a float, you need to use INI_Float
    
INI_Float("PosZ",PlayerInfo[playerid][PosZ]); //This is a float, you need to use INI_Float
    
    
    
    
OldMats[playerid] = PlayerInfo[playerid][pMats];
     return 
1;

I suggest you to create a new function like 'SaveUser', so that if you want to save players data you can easily use SaveUser(playerid) on it, I code this for you. And also I've added how to solve your problem with that saving system

PHP код:
forward SaveUser(playerid);
public 
SaveUser(playerid)
{
    new 
float:x,float:y,float:z;
    
GetPlayerPos(playerid,x,y,z);
    new 
float:health,float:armour;
     
GetPlayerHealth(playerid,health);
     
GetPlayerArmour(playerid,armour);
    new 
INI:File INI_Open(UserPath(playerid));
    
INI_SetTag(File,"data");
    
INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
    
INI_WriteInt(File,"BankCash",BankCash[playerid]);
    
INI_WriteInt(File,"Score",GetPlayerScore(playerid));
    
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
    
INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
    
INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
    
INI_WriteInt(File,"Helmets",Helmets[playerid]);
    
INI_WriteInt(File,"Vests",Vests[playerid]);
    
INI_WriteInt(File,"Medikits",Medikits[playerid]);
    
INI_WriteFloat(File,"Health",health); //This is a float, you need to use INI_WriteFloat
    
INI_WriteFloat(File,"Armour",armour); //This is a float, you need to use INI_WriteFloat
    
INI_WriteInt(File,"Mats",PlayerInfo[playerid][pMats]);
    
INI_WriteInt(File,"Skin",GetPlayerSkin(playerid));
    
INI_WriteInt(File,"Job",PlayerInfo[playerid][pJob]);
    
INI_WriteInt(File,"SalaryDate",PlayerInfo[playerid][SalaryDate]);
    
INI_WriteInt(File,"JobLevel",PlayerInfo[playerid][JobLevel]);
    
INI_WriteFloat(File,"PosX",x); //This is a float, you need to use INI_WriteFloat
    
INI_WriteFloat(File,"PosY",y); //This is a float, you need to use INI_WriteFloat
    
INI_WriteFloat(File,"PosZ",z); //This is a float, you need to use INI_WriteFloat
    
INI_Close(File);
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason)
{    
    
SaveUser(playerid);
    return 
1;
}
CMD:savemydataplz(playeridparams[])
{
    
SaveUser(playerid);
    return 
1;

thank you so much bro it is working!!
Reply
#4

Quote:
Originally Posted by Hreesang
Посмотреть сообщение
INI_Int is for an integer, INI_String is for a string and INI_Float is for a float

PHP код:
forward LoadUser_data(playerid,name[],value[]);
public 
LoadUser_data(playerid,name[],value[])
{
    
INI_Int("Password",PlayerInfo[playerid][pPass]);
    
INI_Int("Cash",PlayerInfo[playerid][pCash]);
    
INI_Int("BankCash",PlayerInfo[playerid][pBankCash]);
    
INI_Int("Score",PlayerInfo[playerid][pScore]);
    
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
    
INI_Int("Kills",PlayerInfo[playerid][pKills]);
    
INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
    
INI_Int("Helmets",Helmets[playerid]);
    
INI_Int("Vests",Vests[playerid]);
    
INI_Int("Medikits",Medikits[playerid]);
    
INI_Float("Health",PlayerInfo[playerid][pHealth]); //This is a float, you need to use INI_Float
    
INI_Float("Armour",PlayerInfo[playerid][pArmour]); //This is a float, you need to use INI_Float
    
INI_Int("Mats",PlayerInfo[playerid][pMats]);
    
INI_Int("Skin",PlayerInfo[playerid][pSkin]);
    
INI_Int("Job",PlayerInfo[playerid][pJob]);
    
INI_Int("SalaryDate",PlayerInfo[playerid][SalaryDate]);
    
INI_Int("JobLevel",PlayerInfo[playerid][JobLevel]);
    
INI_Float("PosX",PlayerInfo[playerid][PosX]); //This is a float, you need to use INI_Float
    
INI_Float("PosY",PlayerInfo[playerid][PosY]); //This is a float, you need to use INI_Float
    
INI_Float("PosZ",PlayerInfo[playerid][PosZ]); //This is a float, you need to use INI_Float
    
    
    
    
OldMats[playerid] = PlayerInfo[playerid][pMats];
     return 
1;

I suggest you to create a new function like 'SaveUser', so that if you want to save players data you can easily use SaveUser(playerid) on it, I code this for you. And also I've added how to solve your problem with that saving system

PHP код:
forward SaveUser(playerid);
public 
SaveUser(playerid)
{
    new 
float:x,float:y,float:z;
    
GetPlayerPos(playerid,x,y,z);
    new 
float:health,float:armour;
     
GetPlayerHealth(playerid,health);
     
GetPlayerArmour(playerid,armour);
    new 
INI:File INI_Open(UserPath(playerid));
    
INI_SetTag(File,"data");
    
INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
    
INI_WriteInt(File,"BankCash",BankCash[playerid]);
    
INI_WriteInt(File,"Score",GetPlayerScore(playerid));
    
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
    
INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
    
INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
    
INI_WriteInt(File,"Helmets",Helmets[playerid]);
    
INI_WriteInt(File,"Vests",Vests[playerid]);
    
INI_WriteInt(File,"Medikits",Medikits[playerid]);
    
INI_WriteFloat(File,"Health",health); //This is a float, you need to use INI_WriteFloat
    
INI_WriteFloat(File,"Armour",armour); //This is a float, you need to use INI_WriteFloat
    
INI_WriteInt(File,"Mats",PlayerInfo[playerid][pMats]);
    
INI_WriteInt(File,"Skin",GetPlayerSkin(playerid));
    
INI_WriteInt(File,"Job",PlayerInfo[playerid][pJob]);
    
INI_WriteInt(File,"SalaryDate",PlayerInfo[playerid][SalaryDate]);
    
INI_WriteInt(File,"JobLevel",PlayerInfo[playerid][JobLevel]);
    
INI_WriteFloat(File,"PosX",x); //This is a float, you need to use INI_WriteFloat
    
INI_WriteFloat(File,"PosY",y); //This is a float, you need to use INI_WriteFloat
    
INI_WriteFloat(File,"PosZ",z); //This is a float, you need to use INI_WriteFloat
    
INI_Close(File);
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason)
{    
    
SaveUser(playerid);
    return 
1;
}
CMD:savemydataplz(playeridparams[])
{
    
SaveUser(playerid);
    return 
1;

but bro job not saving :/
Reply
#5

Quote:
Originally Posted by akib
Посмотреть сообщение
but bro job not saving :/
How do you save your job?
Reply
#6

Quote:
Originally Posted by Hreesang
Посмотреть сообщение
How do you save your job?
by number

Defines:
Код:
#define Army            1
#define ArmyOfficer     2
#define Cop             3
#define CopLeader       4
#define Paramedic       5
#define ParamedicLeader 6
Command:
Код:
CMD:givearmyjob(playerid, params[])
{
	new string[256],year,month,day;
    getdate(year, month, day);
    format(string, sizeof string, "%d/%s%d/%s%d", day, ((month < 10) ? ("0") : ("")), month, (year < 10) ? ("0") : (""), year);
	if(PlayerInfo[playerid][pAdmin] > 2)
	{
		new targetid,pName[MAX_PLAYER_NAME];
		if(sscanf(params,"u", targetid)) return SendClientMessage(playerid,COLOR_RED , "Correct Usage: /givearmyjob [Playerid]");
		if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid,COLOR_RED,"Player not connected.");
		GetPlayerName(targetid,pName,sizeof(pName));
		new msg[126];
		format(msg,sizeof(msg),"[Army]{FFFFFF}You are now a army. Job given by president.");
		PlayerInfo[targetid][pJob] = 1;
		SendClientMessage(targetid,COLOR_GREEN,msg);
		new msg2[126];
		format(msg2,sizeof(msg2),"[Army]{FFFFFF}You given army job to %s",pName);
		SendClientMessage(playerid,COLOR_GREEN,msg2);
        PlayerInfo[targetid][SalaryDate] = gettime() + 604800;
        new job[126];
        format(job,sizeof(job),"Your Job Code Is %i",PlayerInfo[targetid][pJob]);
        SendClientMessage(targetid,COLOR_GREEN,job);
        //PlayerInfo[targetid][SalaryDate] = gettime()+604800;
	}
	else
	{
	    SendClientMessage(playerid,COLOR_RED,"{FF0000}[Insufficient]{FFFFFF}You don't have sufficient power.");
	}
	return 1;
}
Код:
PlayerInfo[targetid][pJob] = 1;
Reply
#7

The code is correct, but I don't know why it still can't saving, maybe before player disconnects you set the players pJob to zero?
Reply
#8

Checkout https://sampwiki.blast.hk/wiki/YSI:INI#I...2C_function.29

As most of the function calls such as INI_Int, INI_Float, etc are deprecated.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)