SA-MP Forums Archive
ReturnUser. - 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)
+--- Thread: ReturnUser. (/showthread.php?tid=514897)



ReturnUser. - TheSy - 23.05.2014

Good evening.

So I use a system of numbered Unknown on my server which replaces the nickname of the player to avoid metagame.

So it looks like this:
Inconnu_14698 says: Blabla

So I for example my order /report but it works with the ids of players (0, 1, 2, 3 etc.).

So I'd like it to work with the id of the unknown, for example:

/report 14698

Thank you!


Re: ReturnUser. - Jefff - 24.05.2014

you must modify ReturnUser function


Re: ReturnUser. - DerickClark - 24.05.2014

pawn Код:
ReturnUser(text[], playerid = INVALID_PLAYER_ID)
{
    new pos = 0;
    while (text[pos] < 0x21)
    {
        if (text[pos] == 0) return INVALID_PLAYER_ID;
        pos++;
    }

    new userid = INVALID_PLAYER_ID;
    if (IsNumeric(text[pos]))
    {
        userid = strval(text[pos]);
        if (userid >=0 && userid < MAX_PLAYERS)
        {
            if(!IsPlayerConnected(userid))
            userid = INVALID_PLAYER_ID;
            else return userid;
        }
    }

    new len = strlen(text[pos]);
    new count = 0;
    new pname[MAX_PLAYER_NAME];

    for (new i = 0; i < MAX_PLAYERS; i++)
    {
        if (IsPlayerConnected(i))
        {
            GetPlayerName(i, pname, sizeof (pname));
            if (strcmp(pname, text[pos], true, len) == 0)
            {
                if (len == strlen(pname)) return i;
                else
                {
                    count++;
                    userid = i;
                }
            }
        }
    }
   
    if (count != 1)
    {
        if (playerid != INVALID_PLAYER_ID)
        {
            if (count) SendClientMessage(playerid, COLOR_WHITE, "Enter the full name of the user.");
            else SendClientMessage(playerid, COLOR_GREY, "No results found for the specified phrase.");
        }
        userid = INVALID_PLAYER_ID;
    }
    return userid;
}



Re: ReturnUser. - TheSy - 24.05.2014

I know it has this function, but I do not know how to do it.

Derick if the code is changed, you can comment please?

So I understand, thank you


Re: ReturnUser. - SKAzini - 24.05.2014

pawn Код:
ReturnUser(playerid)
{
    new name[24];
    GetPlayerName(playerid, name, sizeof name);
    return name;
}
??


Re: ReturnUser. - TheSy - 24.05.2014

No, because it is mainly for my system Unknown numbered.

So when the player talks being unknown it does:
Inconnu_14698 says: Blabla

The number varies of course.

So the player who reported the Unknown numbered does not know the name of the player, just unknown number.

To get a result like this for example:

/report 14698 (This is the number of the Unknown (But it is variable, it may change)) Blabla.

/report 14698 blabla


Re: ReturnUser. - RajatPawar - 24.05.2014

Does that mean every player who joins gets a new ID pressed against a constant prefix as their name?

Like -

Player_1
Player_2
Player_3

Is that it?

If you want to do that -

pawn Код:
#define CONST_PREFIX    "Inconnu_"

ReturnUserBySuffix( suffix )
{
    new name[MAX_PLAYER_NAME] = CONST_PREFIX,
           suff[7];

    valstr(suff, suffix);
    strcat(name, suff);

    new pName[MAX_PLAYER_NAME];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
          GetPlayerName(i, pName, MAX_PLAYER_NAME);
          if(!strcmp(pName, name)) return i;
     }

     return INVALID_PLAYER_ID;
}
EDIT: I am really sorry, I realise there are better ways of doing this, but I am really tired and I'll edit this and post some better code when I can


Re: ReturnUser. - TheSy - 24.05.2014

pawn Код:
PlayerInfo[playerid][p_NbrInconnu] = 1000 + random(19999);
    Inconnu_infos[playerid][Inconnu_id] = PlayerInfo[playerid][p_NbrInconnu];
    memcpy(Inconnu_infos[playerid][Inconnu_Pseudo], pName[playerid], 0, MAX_PLAYER_NAME*4, MAX_PLAYER_NAME*4);
In my OnPlayerLogin.

So the unknown number assigned to it the connection, but it is visible or not in the chat if activated with a command.

In my /me:

pawn Код:
if(Player_use_nomoff[playerid] == 1) format(proxy_msg, sizeof(proxy_msg), "Inconnu %d %s", PlayerInfo[playerid][p_NbrInconnu], result);
        else format(proxy_msg, sizeof(proxy_msg), "%s %s", pName[playerid], result);
        proxy_sendMsg(playerid, proxy_msg);



Re: ReturnUser. - SKAzini - 24.05.2014

Try something like this:

pawn Код:
new UnknownID[MAX_PLAYERS];

public OnPlayerConnect(playerid)
{
    UnknownID[playerid] = 14698;
    //or random numbers:
    UnknownID[playerid] = random(50000);
}

public OnPlayerText(playerid, text[])
{
    new str[144];
    format(str, sizeof (str), "Inconnu_%d: %s", UnknownID[playerid], text);
    SendPlayerMessageToAll(playerid, str);
    return 0;
}

ReturnUser(id)
{
    new pid=-1, name[24];
    for(new i; i < MAX_PLAYERS; i++)
    {
        if(UnknownID[i] == id)
        {
            pid = i;
            break;
        }
    }
    if(pid=-1) return 0;
    GetPlayerName(pid, name, sizeof name);
    return name;
}
ReturnUser( 14698 ) should return the player name of the user with the "unknown number" 14698. Also, if there's no player online with the ID 14698, it will return 0, so check for that:

pawn Код:
if(!ReturnUser(14698)) return SendClientMessage(playerid, -1, "There's no player online with that number.");



Re: ReturnUser. - TheSy - 24.05.2014

Your function will only work with Unknown.

Me, I want it to work with both, the Unknown and the players with the normal nametag.

But a friend told me that succeeds it happens in "IsNumeric" ...