Register command
#1

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;
}
Reply
#2

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.
Reply
#3

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

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

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

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.
Reply
#7

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;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)