SA-MP Forums Archive
[DUDA]Onplayertext - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: [DUDA]Onplayertext (/showthread.php?tid=340380)



[DUDA]Onplayertext - Fluid016 - 07.05.2012

Hola forum samp, bueno queria saber como puedo hacer para que un usuario no pueda leer el chat ni escribir en йl.

Para que no pueda escribir en el chat es facil pero lo que se me complica es para que no pueda leer ningun mensaje.
pawn Код:
public OnPlayerText(playerid, text[])
{
    if(NoPuederVerElChat[playerid] == 1)
    {
        return 0;
    }
    return 1;
}
eso para que no salga el mensaje que intenta escribir pero alguien me puede decir como hago para que no lea el chat?


Respuesta: [DUDA]Onplayertext - TheChaoz - 07.05.2012

Para que un usuario no lea ningun mensaje tienes 2 opciones:
La mas simple pero menos estetica seria crear un textdraw sobre el chat.
La correcta seria algo asi:
pawn Код:
public OnPlayerText(playerid, text[])
{
    if(PuedeEscribir[playerid])return 0;
    new str[128], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    format(str, 128, "{%x}%s{FFFFFF}: %s", GetPlayerColor(playerid) >>> 8, name, text);
    for(new i; i<GetMaxPlayers(); i++){
        if(IsPlayerConnected(i) && PuedeLeer[playerid]){
            SendClientMessage(playerid, -1, str);
        }
    }
    return 0;
}
/*Nota:
Para que el codigo funcione sin bugs deberas utilizar SetPlayerColor cuando el jugador se conecta, de lo contrario GetPlayerColor funcionara de forma incorrecta.*/
Edit: El textdraw no servira ya que no tapa el chat, dejando solo la opcion de realizarlo mediante script.


Re: [DUDA]Onplayertext - Mr.acu - 07.05.2012

pawn Код:
public OnPlayerText(playerid, text[])
{
    if(NoPuedeEscribir[Playerid])return 0; // error
    new str[128], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    format(str, 128, "{%x}%s{FFFFFF}: %s", GetPlayerColor(playerid) >>> 8, name, text);
    for(new i; i<GetMaxPlayers(); i++){
        if(IsPlayerConnected(i) && PuedeLeer[playerid]){
            SendClientMessage(playerid, -1, str);
        }
    }
    return 0;
}



Respuesta: [DUDA]Onplayertext - Fluid016 - 07.05.2012

No hacia falta comentar Mr.acu.

Gracias chaoz.


Respuesta: Re: [DUDA]Onplayertext - TheChaoz - 07.05.2012

Quote:
Originally Posted by Mr.acu
Посмотреть сообщение
pawn Код:
public OnPlayerText(playerid, text[])
{
    if(NoPuedeEscribir[Playerid])return 0; // error
    new str[128], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    format(str, 128, "{%x}%s{FFFFFF}: %s", GetPlayerColor(playerid) >>> 8, name, text);
    for(new i; i<GetMaxPlayers(); i++){
        if(IsPlayerConnected(i) && PuedeLeer[playerid]){
            SendClientMessage(playerid, -1, str);
        }
    }
    return 0;
}
Los nombres de las variables que utilize son descriptivos para que sepa que debe colocar, no por las variables definidas que el tiene en su GM/FS.


Respuesta: [DUDA]Onplayertext - OTACON - 07.05.2012

Hay otra manera de hacerlo , Creando un stock y reemplazando el SendClientMessage y poniendo dentro del stock la variable ke determinara si lo leera, ejemplo:

pawn Код:
public OnPlayerText(playerid, text[])
{
    new str[128], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
   
    format(str, 128, "%s: %s", name, text);
    New_SendClientMessage(-1,str)
    return 0;
}

//al final del gm
stock New_SendClientMessage(color,const str[])
{
    for(new i; i < GetMaxPlayers(); i++)
    {
        if(IsPlayerConnected(i))
        {
            if(NoPuedeEscribir[i] == 0) //Si el player no tiene la variable en 0 no le dara el SendClientMessage
            {
                 SendClientMessage(i, color, str);
            }
        }
    }
    return 1;
}