SA-MP Forums Archive
Register command - 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: Register command (/showthread.php?tid=75655)



Register command - SpiderPork - 03.05.2009

When I register with the following command, it creates a file, but not with the name of the player. Some of the letters are missing. E.g. if my name is James_Hawk, it registers like ames_Hawk or mes_Hawk.

Here's the command:
pawn Код:
dcmd_register(playerid,params[])
{
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, sizeof(pname));
    if (AccountInfo[playerid][Logged] == 1) return SendClientMessage(playerid, GREY, "ERROR: You are already registered and logged in.");
    if (udb_Exists(pname[playerid])) return SendClientMessage(playerid, GREY, "ERROR: This account is already registered, please login using /login [password].");
    if (strlen(params) == 0) return SendClientMessage(playerid, GREY, "USAGE: /register [password]");
    if (strlen(params) < 4 || strlen(params) > 20) return SendClientMessage(playerid, GREY, "ERROR: Password length must be greater than 3 characters and lower than 20.");
    if (udb_Create(pname[playerid], params))
    {
      dUserSetINT(pname[playerid]).("Registered", 1);
      dUserSetINT(pname[playerid]).("AdminLevel", 0);
      dUserSetINT(pname[playerid]).("AntiVirus", 0);
      dUserSetINT(pname[playerid]).("Remote", 0);
      dUserSetINT(pname[playerid]).("Radio", 0);
      dUserSetINT(pname[playerid]).("Suit", 0);
      dUserSetINT(pname[playerid]).("pFMember", 0);
      dUserSetINT(pname[playerid]).("pTeam", 0);
      dUserSetINT(pname[playerid]).("pRank", 0);
      dUserSetINT(pname[playerid]).("pChar", 0);
      dUserSetINT(pname[playerid]).("pMember", 0);
      dUserSetINT(pname[playerid]).("pLeader", 0);
      dUserSetINT(pname[playerid]).("Experience", 0);
      dUserSetINT(pname[playerid]).("VIPStatus", 0);
      dUserSetINT(pname[playerid]).("Warnings", 0);
      dUserSetINT(pname[playerid]).("WarnReason1", 0);
      dUserSetINT(pname[playerid]).("WarnReason2", 0);
      dUserSetINT(pname[playerid]).("WarnReason3", 0);
      SendClientMessage(playerid, LIGHTBLUE, "You are now registered. Please login with /login [password].");
      PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
      return 1;
    }
  return 1;
}



Re: Register command - HB - 03.05.2009

You're using an array for the players name, thats the problem(I think). Create a string in the beginning of the command and use 24 as string size since the players name can't be longer then 24 characters.


Re: Register command - SpiderPork - 03.05.2009

So new string[24]; on the beggining and then?


Re: Register command - HB - 03.05.2009

Quote:
Originally Posted by SpiderPork
So new string[24]; on the beggining and then?
Change all "pname[playerid]" to "pname"..


Re: Register command - SpiderPork - 03.05.2009

That'd return "undefined symbol". Could you give me an example, I don't seem to think logic.


Re: Register command - HB - 03.05.2009

Quote:
Originally Posted by SpiderPork
That'd return "undefined symbol". Could you give me an example, I don't seem to think logic.
Oh sorry, you need to get the players name at the top of the script also. Under new pname[24]; ofcourse.


Re: Register command - SpiderPork - 04.05.2009

It still doesn't work.
Here's what I did:

Код:
dcmd_register(playerid, params[])
{
    new pname[24];
    GetPlayerName(playerid, pname, sizeof(pname));
    if (AccountInfo[playerid][Logged] == 1) return SendClientMessage(playerid, GREY, "ERROR: You are already registered and logged in.");
    if (udb_Exists(pname)) return SendClientMessage(playerid, GREY, "ERROR: This account is already registered, please login using /login [password].");
    if (strlen(params) == 0) return SendClientMessage(playerid, GREY, "USAGE: /register [password]");
    if (strlen(params) < 4 || strlen(params) > 20) return SendClientMessage(playerid, GREY, "ERROR: Password length must be greater than 3 characters and lower than 20.");
    if (udb_Create(pname, params))
	{
	  dUserSetINT(pname).("Registered", 1);
	  dUserSetINT(pname).("AdminLevel", 0);
	  dUserSetINT(pname).("AntiVirus", 0);
	  dUserSetINT(pname).("Remote", 0);
	  dUserSetINT(pname).("Radio", 0);
  	  dUserSetINT(pname).("Suit", 0);
	  dUserSetINT(pname).("pFMember", 0);
	  dUserSetINT(pname).("pTeam", 0);
	  dUserSetINT(pname).("pRank", 0);
	  dUserSetINT(pname).("pChar", 0);
	  dUserSetINT(pname).("pMember", 0);
	  dUserSetINT(pname).("pLeader", 0);
	  dUserSetINT(pname).("Experience", 0);
	  dUserSetINT(pname).("VIPStatus", 0);
	  dUserSetINT(pname).("Warnings", 0);
	  dUserSetINT(pname).("WarnReason1", 0);
	  dUserSetINT(pname).("WarnReason2", 0);
	  dUserSetINT(pname).("WarnReason3", 0);
	  SendClientMessage(playerid, LIGHTBLUE, "You are now registered. Please login with /login [password].");
	  PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
	  return 1;
	}
  return 1;
}