Problem With y_ini -
akib - 05.05.2017
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);
Re: Problem With y_ini -
Hreesang - 05.05.2017
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(playerid, reason)
{
SaveUser(playerid);
return 1;
}
CMD:savemydataplz(playerid, params[])
{
SaveUser(playerid);
return 1;
}
Re: Problem With y_ini -
akib - 05.05.2017
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(playerid, reason)
{
SaveUser(playerid);
return 1;
}
CMD:savemydataplz(playerid, params[])
{
SaveUser(playerid);
return 1;
}
|
thank you so much bro
it is working!!
Re: Problem With y_ini -
akib - 05.05.2017
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(playerid, reason)
{
SaveUser(playerid);
return 1;
}
CMD:savemydataplz(playerid, params[])
{
SaveUser(playerid);
return 1;
}
|
but bro job not saving :/
Re: Problem With y_ini -
Hreesang - 05.05.2017
Quote:
Originally Posted by akib
but bro job not saving :/
|
How do you save your job?
Re: Problem With y_ini -
akib - 05.05.2017
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;
Re: Problem With y_ini -
Hreesang - 05.05.2017
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?
Re: Problem With y_ini -
ShihabSoft - 05.05.2017
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.