Script errors
#1

Код:
Hey all, I'm making a convoy gamemode, but my script has some errors..

Here's a part of the script that made it error:
Код:
new cmd[256], tmp[256], tmp2[256];
  new idx;
  new string[256];
	//cmd = strtok(cmdtext, idx);
	GetPlayerName (playerid, playername, sizeof(playername));

  if (strcmp(cmd, "/register", true) == 0)
  {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
        SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /register (password)");
    }
    else
    {
        if(!dini_Exists(udb_encode(playername)))
        {
            dini_Create(udb_encode(playername));
            dini_IntSet(udb_encode(playername), "password", udb_hash(tmp));
            dini_IntSet(udb_encode(playername), "adminlevel", 0);
            dini_IntSet(udb_encode(playername), "money", 0);

            format(string, sizeof(string), "Your account is registered! You can now log in.", playername, tmp);
            SendClientMessage(playerid, COLOR_YELLOW, string);

        }
        else
        {
            format(string, sizeof(string), "is already registered.", playername,tmp);
            SendClientMessage(playerid, COLOR_RED, string);
        }
        return 1;
    }
  }

  if (strcmp(cmd, "/login", true) == 0)
  {
    if(logged[playerid] == 1)
    {
        SendClientMessage(playerid, COLOR_RED, "You are already logged in!");
    }

    if(!strlen(tmp))
    {
        SendClientMessage(playerid, COLOR_YELLOW, "Use: /login (password)");
    }
    else
    {
        if(dini_Exists(udb_encode(playername)))
        {
            tmp2 = dini_Get(udb_encode(playername), "password");
            if (udb_hash(tmp) != strval(tmp2))
            {
                SendClientMessage(playerid, COLOR_RED, "Wrong password!");
            }
            else
            {
                logged[playerid] = 1;
                money[playerid] = dini_Int(udb_encode(playername), "money");
                adminlevel[playerid] = dini_Int(udb_encode(playername), "adminlevel");

                format(string, sizeof(string), "%s, you are now logged in. Your adminlevel is %d and you have %d dollar", playername, adminlevel[playerid], money[playerid]);
                SendClientMessage(playerid, COLOR_GREEN, string);
                GivePlayerMoney(playerid, money[playerid]);
            }
        }
        else
        {
            format(string, sizeof(string), "The account %s, doesn't exist yet. Type /register [password] to make an account", playername);
            SendClientMessage(playerid, COLOR_RED, string);
        }
        return 1;
    }
  }
  return 1;
}
Here are the errors:

(103) : error 029: invalid expression, assumed zero
(103) : error 035: argument type mismatch (argument 2)
(103) : error 020: invalid symbol name ""
(103) : fatal error 107: too many error messages on one line

I have no idea what is wrong, but anyway, here is line 103:

Код:
	GetPlayerName (playerid, playername, sizeof(playername));
I need help.. Please?

TIA,
Daniel
Reply
#2

pawn Код:
GetPlayerName(playerid, playername, sizeof(playername));
Reply
#3

I already have that?
Reply
#4

Yes but you added a space that isn't required.
Reply
#5

Quote:
Originally Posted by Zimon95
Yes but you added a space that isn't required.
LOOOOOL, spaces don't make ANY diference..



BTW, you were missing a string.

pawn Код:
new cmd[256], tmp[256], tmp2[256], idx, string[256], playername[24];
    //cmd = strtok(cmdtext, idx);
    GetPlayerName (playerid, playername, sizeof(playername));

  if (strcmp(cmd, "/register", true) == 0)
  {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
        SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /register (password)");
    }
    else
    {
        if(!dini_Exists(udb_encode(playername)))
        {
            dini_Create(udb_encode(playername));
            dini_IntSet(udb_encode(playername), "password", udb_hash(tmp));
            dini_IntSet(udb_encode(playername), "adminlevel", 0);
            dini_IntSet(udb_encode(playername), "money", 0);

            format(string, sizeof(string), "Your account is registered! You can now log in.", playername, tmp);
            SendClientMessage(playerid, COLOR_YELLOW, string);

        }
        else
        {
            format(string, sizeof(string), "is already registered.", playername,tmp);
            SendClientMessage(playerid, COLOR_RED, string);
        }
        return 1;
    }
  }

  if (strcmp(cmd, "/login", true) == 0)
  {
    if(logged[playerid] == 1)
    {
        SendClientMessage(playerid, COLOR_RED, "You are already logged in!");
    }

    if(!strlen(tmp))
    {
        SendClientMessage(playerid, COLOR_YELLOW, "Use: /login (password)");
    }
    else
    {
        if(dini_Exists(udb_encode(playername)))
        {
            tmp2 = dini_Get(udb_encode(playername), "password");
            if (udb_hash(tmp) != strval(tmp2))
            {
                SendClientMessage(playerid, COLOR_RED, "Wrong password!");
            }
            else
            {
                logged[playerid] = 1;
                money[playerid] = dini_Int(udb_encode(playername), "money");
                adminlevel[playerid] = dini_Int(udb_encode(playername), "adminlevel");

                format(string, sizeof(string), "%s, you are now logged in. Your adminlevel is %d and you have %d dollar", playername, adminlevel[playerid], money[playerid]);
                SendClientMessage(playerid, COLOR_GREEN, string);
                GivePlayerMoney(playerid, money[playerid]);
            }
        }
        else
        {
            format(string, sizeof(string), "The account %s, doesn't exist yet. Type /register [password] to make an account", playername);
            SendClientMessage(playerid, COLOR_RED, string);
        }
        return 1;
    }
  }
  return 1;
}
There you go..
Reply
#6

Thanks, but now I get the same errors but a different line.

(8 : error 001: expected token: "-identifier-", but found "["
(89) : error 029: invalid expression, assumed zero
(89) : error 035: argument type mismatch (argument 2)
(89) : error 020: invalid symbol name ""
(89) : fatal error 107: too many error messages on one line

Lines 88 and 89:

Код:
    new cmd[256], tmp[256], tmp2[256], idx, string[256], playername[24];
    GetPlayerName(playerid, playername, sizeof(playername));
For better understanding, the whole thing:

Код:
public OnPlayerDeath(playerid, killerid, reason)
{
    new name[MAX_PLAYER_NAME+1];
    new cmd[256], tmp[256], tmp2[256], idx, string[256], playername[24];
    GetPlayerName(playerid, playername, sizeof(playername));
    format(string, sizeof(string), "*** %s died.", name);
    SendClientMessageToAll(COLOR_RED, string);
    return 1;
}
Reply
#7

pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
    new string[128], pname2[24];
    GetPlayerName(playerid, pname2, 24);
    format(string, sizeof(string), "*** %s died.", pname2);
    SendClientMessageToAll(COLOR_RED, string);
    return 1;
}
And don't do a string of 256, its useless, max chat text is 128.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)