SA-MP Forums Archive
Saving jobs ( Using Seif Admin script ) - 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)
+---- Forum: Help Archive (https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: Saving jobs ( Using Seif Admin script ) (/showthread.php?tid=88672)



Saving jobs ( Using Seif Admin script ) - Takumi.WS - 28.07.2009

Hey all, So i tried to add a job saving system with SeifAdmin .

So i did this

Код:
public OnPlayerRegister(playerid, password[])
{
	if(IsPlayerConnected(playerid))
	{
	  new name[MAX_PLAYER_NAME], str[128], ip[15];
	  GetPlayerName(playerid, name, sizeof name);
	  GetPlayerIp(playerid, ip, sizeof ip);
	  format(str, sizeof str, "/sAccounts/%s.seifadmin", name);
	  new File:account = fopen(str, io_write);
	  if (account)
		{
 			strmid(AccountInfo[playerid][Password], password, 0, strlen(password), 255);
		  	AccountInfo[playerid][Cash] = GetPlayerPCash(playerid);
		  	AccountInfo[playerid][Job] = GetPlayerJobID(playerid);
			new file[128];
			{
				format(file, sizeof file, "Password: %s\n\r", AccountInfo[playerid][Password]);
				{	fwrite(account, file); }
				format(file, sizeof file, "AdminLevel: %d\n\r", 0);
				{	fwrite(account, file); AccountInfo[playerid][AdminLevel] = 0; }
				format(file, sizeof file, "Cash: %d\n\r", AccountInfo[playerid][Cash]);
				{	fwrite(account, file); }
				format(file, sizeof file, "JobID: %d\n\r", AccountInfo[playerid][Job]);
				{	fwrite(account, file); }
				format(file, sizeof file, "Warnings: %d\n\r",AccountInfo[playerid][Warns]);
				{	fwrite(account, file); }
				format(file, sizeof file, "WarnReason1: %s\n\r",AccountInfo[playerid][WarnReason1]);
				{	fwrite(account, file); }
				format(file, sizeof file, "WarnReason2: %s\n\r",AccountInfo[playerid][WarnReason2]);
				{	fwrite(account, file); }
				format(file, sizeof file, "WarnReason3: %s\n\r",AccountInfo[playerid][WarnReason3]);
				{	fwrite(account, file); }
				format(file, sizeof file, "IPAddress: %s\n\r",ip);
				{	fwrite(account, file); }
			}
			fclose(account);
			SendClientMessage(playerid, GREEN, "|- Account successfully registered. You can now login ( /login [password] ) -|");

			
		}
	}
	return 1;
}
&

Код:
public OnPlayerLogin(playerid, password[])
{
  new name[MAX_PLAYER_NAME], str[128];
  GetPlayerName(playerid, name, sizeof name);
	format(str, sizeof str, "/sAccounts/%s.seifadmin", name);
	new File:account = fopen(str, io_read);
	if (account)
	{
	  new pass[256];
	  new passres[128], value[128];
	  fread(account, pass, sizeof pass);
	  passres = GetFileString(pass);
	  if (!strcmp("Password", passres))
		{
			value = GetFileValue(pass);
			strmid(AccountInfo[playerid][Password], value, 0, strlen(value)-1, 128);
		}
		if (!strcmp(AccountInfo[playerid][Password], password, true))
		{
		  while (fread(account, pass, 256))
			{
				passres = GetFileString(pass);
				if (strfind(passres, "AdminLevel") != -1)
				{
					value = GetFileValue(pass);
					AccountInfo[playerid][AdminLevel] = strval(value);
				}
				if (strfind(passres, "Cash") != -1)
				{
					value = GetFileValue(pass);
					AccountInfo[playerid][Cash] = strval(value);
				}
        	if (strfind(passres, "JobID") != -1)
				{
					value = GetFileValue(pass);
					AccountInfo[playerid][Job] = strval(value);
				}
        if (strfind(passres, "Warnings") != -1)
				{
					value = GetFileValue(pass);
					AccountInfo[playerid][Warns] = strval(value);
				}
				if (strfind(passres, "WarnReason1") != -1)
				{
					value = GetFileValue(pass);
					strmid(AccountInfo[playerid][WarnReason1], value, 0, strlen(value)-1, 128);
				}
				if (strfind(passres, "WarnReason2") != -1)
				{
					value = GetFileValue(pass);
					strmid(AccountInfo[playerid][WarnReason2], value, 0, strlen(value)-1, 128);
				}
				if (strfind(passres, "WarnReason3") != -1)
				{
					value = GetFileValue(pass);
					strmid(AccountInfo[playerid][WarnReason3], value, 0, strlen(value)-1, 128);
				}
			}
  			fclose(account);
      AccountInfo[playerid][Logged] = 1;
		}
		else
		{
			SendClientMessage(playerid, RED, "Incorrect Password.");
	    fclose(account);
	    return 1;
		}
		GivePlayerPCash(playerid, AccountInfo[playerid][Cash]);
		SetJob(playerid, AccountInfo[playerid][Job]);
		format(str, sizeof str, "|- You have successfully logged in as %s -|", name);
		SendClientMessage(playerid, GREEN, str);
		printf("%s has logged in", name);
 		if (AccountInfo[playerid][AdminLevel] > 0)
		{
    	format(str, sizeof str, "|» You are now logged in as a level %d admin «|", AccountInfo[playerid][AdminLevel]);
			SendClientMessage(playerid, LIGHTGREEN, str);
			ViewCmds[playerid] = 0;
		}
	}
	return 1;
}
&
Код:
public OnPlayerUpdateAccount(playerid)
{
	if(IsPlayerConnected(playerid))
	{
		if(AccountInfo[playerid][Logged] == 1)
		{
			new name[MAX_PLAYER_NAME], str[128];
		  GetPlayerName(playerid, name, sizeof name);
		  format(str, sizeof str, "/sAccounts/%s.seifadmin", name);
		  new File:account = fopen(str, io_write);
		  if (account)
  			{
			  	AccountInfo[playerid][Cash] = GetPlayerPCash(playerid);
			  	AccountInfo[playerid][Job] = GetPlayerJobID(playerid);
				new file[128];
				{
					format(file, sizeof file, "Password: %s\n\r", AccountInfo[playerid][Password]);
					{	fwrite(account, file); }
					format(file, sizeof file, "AdminLevel: %d\n\r",AccountInfo[playerid][AdminLevel]);
					{	fwrite(account, file); }
					format(file, sizeof file, "Cash: %d\n\r", AccountInfo[playerid][Cash]);
					{	fwrite(account, file); }
					format(file, sizeof file, "JobID: %d\n\r", AccountInfo[playerid][Job]);
					{	fwrite(account, file); }
					format(file, sizeof file, "Warnings: %d\n\r",AccountInfo[playerid][Warns]);
					{	fwrite(account, file); }
					format(file, sizeof file, "WarnReason1: %s\n\r",AccountInfo[playerid][WarnReason1]);
					{	fwrite(account, file); }
					format(file, sizeof file, "WarnReason2: %s\n\r",AccountInfo[playerid][WarnReason2]);
					{	fwrite(account, file); }
					format(file, sizeof file, "WarnReason3: %s\n\r",AccountInfo[playerid][WarnReason3]);
					{	fwrite(account, file); }
					format(file, sizeof file, "IPAddress: %s\n\r",AccountInfo[playerid][IP]);
					{	fwrite(account, file); }
				}
				fclose(account);
			}
		}
	}
	return 1;
}

But sometimes jobs are saving, and sometimes not
Can anyone tell me why ?

thanks ^^


Re: Saving jobs ( Using Seif Admin script ) - yezizhu - 28.07.2009

Seems no problem in your code
When does OnPlayerUpdateAccount get called?



Re: Saving jobs ( Using Seif Admin script ) - Takumi.WS - 28.07.2009

Quote:
Originally Posted by yezizhu
Seems no problem in your code
When does OnPlayerUpdateAccount get called?
I'm new in scripting so i really don't know exactly



Re: Saving jobs ( Using Seif Admin script ) - Takumi.WS - 28.07.2009

Quote:
Originally Posted by Seif_ [adream-rp.com
]
Quote:
Originally Posted by yezizhu
Seems no problem in your code
When does OnPlayerUpdateAccount get called?
OnPlayerDisconnect.

Are you sure the player is logged in? And that GetPlayerJobID works properly? Show us the function.

GetPlayerJobID works properly ? yes
The Function ? I'm using xJobs ( link : http://forum.sa-mp.com/index.php?topic=66362.0 )

I'm really confused


Re: Saving jobs ( Using Seif Admin script ) - Takumi.WS - 28.07.2009

I just did another test

When you change your job first time, It saves.
When you change your job second time, It saves.
When you change your job third time, It saves.

When you try to change your job for the 4th time, It doesn't save, It Stays the Job id of the third try





Re: Saving jobs ( Using Seif Admin script ) - Takumi.WS - 28.07.2009

Quote:
Originally Posted by Takumi.
I'm new in scripting so i really don't know exactly
Sorry Seif, Didn't understand, can you explain please ?


Re: Saving jobs ( Using Seif Admin script ) - Gappy - 28.07.2009

add this and check if any job is returning 0.

pawn Код:
if (strcmp("/jobid", cmdtext, true, 10) == 0)
{
    new string[128];
    format(string, sizeof(string), "JobID: %d", GetPlayerJobID(playerid));
    SendClientMessage(playerid, string);
    return 1;
}



Re: Saving jobs ( Using Seif Admin script ) - Takumi.WS - 28.07.2009

Quote:
Originally Posted by Gappy
add this and check if any job is returning 0.

pawn Код:
if (strcmp("/jobid", cmdtext, true, 10) == 0)
{
    new string[128];
    format(string, sizeof(string), "JobID: %d", GetPlayerJobID(playerid));
    SendClientMessage(playerid, string);
    return 1;
}
As i said, It's not returning to 0 but sometimes it's just staying in the previous Job id
Can anyone help please ?


Re: Saving jobs ( Using Seif Admin script ) - yezizhu - 28.07.2009

pawn Код:
stock GetPlayerJobID(playerid){
   //do your old code here.
      new string[128];
   format(string,sizeof(string), "pJob:%d,%d",playerid, /*player job data*/);
  SendClientMessageToAll(422,string);
  return 1;
}



Re: Saving jobs ( Using Seif Admin script ) - Takumi.WS - 28.07.2009

Quote:
Originally Posted by yezizhu
pawn Код:
stock GetPlayerJobID(playerid){
  //do your old code here.
      new string[128];
  format(string,sizeof(string), "pJob:%d,%d",playerid, /*player job data*/);
  SendClientMessageToAll(422,string);
  return 1;
}
I have the old code in my include ( xJobs )