Como paso esto?
#1

Hola, vuelvo yo, disculpen que lleno el foro pero ya no pregunto mбs.

Tengo este comando para mutear:
pawn Код:
dcmd_mute( playerid, params[ ] )
{
    new
        mString[ MAX_CLIENT_MSG ],
        MuteID,
        idx;

    mString = strtok( params, idx );

    if( mString[ 0 ] == '\0' || !IsNumeric( mString ) )
        return SendUsage( playerid, "/mute [id]" );

    MuteID = strval( mString );

    if ( !IsPlayerConnected( MuteID ) )
        return SendError( playerid, "Jugador no conectado." );

    else if ( pData[ playerid ][ P_LEVEL ] <= pData[ MuteID ][ P_LEVEL ] && !IsPlayerAdmin( playerid ) )
            return SendError( playerid, "No puedes mutear a un jugador de igual nivel o mas alto." );

    else if( pData[ MuteID ][ P_MUTE ] )
        return SendError( playerid, "El jugador ya esta silenciado." );

    GetPlayerName( MuteID, mString, MAX_PLAYER_NAME );
    format( mString, sizeof ( mString ), "%s ha sido silenciado", mString, MuteID, params[ idx + 1 ] );
    SendClientMessageToAll( COLOR_ORANGE, mString );

    pData[ MuteID ][ P_MUTE ]   = 1;

    return 1;
}
Y estoy haciendo una lista del tipo /mod (de moderar). Al poner /mod (id) se abre una lista de dialogo con varias opciones para moderar, quiero pasar el mute pero no se como. їcomo quedarнa adaptado? їo no se puede?

pawn Код:
if(listitem == 2)
            {
            //Aqui va el codigo
                return 1;
            }
Reply
#2

Utilizarнas dos diбlogos o no-sй como hacer en uno lo quй quieres.

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == ??)
    {
        if(response)
        {
            if(listitem == 2)
            {
                if(IsPlayerAdmin(playerid))
                {
                    ShowPlayerDialog(playerid, id, DIALOG_STYLE_INPUT, "Titulo", "Ingresa la id del jugador.", "aceptar", "salir");
                }
                else
                {
                    SendClientMessage(playerid, -1, "No eres administrador.");
                }
            }
        }
    }
    if(dialogid == id)
    {
        if(!isnull(inputtext))
        {
            if(IsPlayerConnected(inputtext))
            {
                if(pData[inputtext][P_LEVEL] > pData[playerid][P_LEVEL] && IsPlayerAdmin(playerid))
                {
                    if(pData[inputtext][P_MUTE] != 0)
                    {
                        new nombre_player[24], string[44];
                        GetPlayerName(inputtext, nombre_player, 24);
                        format(string, sizeof(string), "%s ha sido silenciado", nombre_player, inputtext);
                        SendClientMessageToAll(COLOR_ORANGE, string);
                        pData[inputtext][P_MUTE] = 1;
                    }
                    else
                    {
                        SendError( playerid, "El jugador ya esta silenciado." );
                    }
                }
                else
                {
                    SendError( playerid, "No puedes mutear a un jugador de igual nivel o mas alto." );
                }
            }
        }
    }
    return true;
}
Reply
#3

O simplemente puedes tomar la id del jugador que moderas con una variable, EJ: IDPlayer[playerid] = id; al usar el comando y usar esto en lugar del inputtext y te ahorras todo un paso.
Reply
#4

Gracias chicos, finalmente me funciona con esto:

pawn Код:
new playerame[24], string[44];
                GetPlayerName(playerid, playername, 24);
                format(string, sizeof(string), "%s ha sido muteado", playername);
                SendClientMessageToAll(colorazul, string);
                pData[ playerid ][P_MUTE] = 1;
Pero solo funciona conmigo mismo, o sea, no la id que seleccione sino que si hago el mute me lo da a mi, їcomo hago para que el efecto lo de en otra id?
Reply
#5

como guardas el id cuando pones /mod id?

Te mutea a ti porque estбs modificando la variable de playerid no del que habнas puesto como parбmetro
Reply
#6

Bueno, ahora lo he cambiado no lo dije porque pense que no importaba, el menu de moderaciуn de se abre al hacer doble click en el nombre del jugador.

Tengo el codigo asн:

OnDialogResponse
pawn Код:
if(dialogid == 1)
    {
        if(response)
        {
   
            if(listitem == 0)
            {
                new pName[24], string[44];
                GetPlayerName( playerid, playername, MAX_PLAYER_NAME );
                format(string, sizeof(string), "%s ha sido muteado", playername);
                SendClientMessageToAll(COLOR_ORANGE, string);
                pData[ playerid ][P_MUTE] = 1;
            }
           
            if(listitem == 1)
            {
                new pName[24], string[44];
                GetPlayerName(playerid, playername, 24);
                format(string, sizeof(string), "%s ha sido desmuteado", playername);
                SendClientMessageToAll(COLOR_ORANGE, string);
                pData[ playerid ][P_MUTE] = 0;
            }
         }

    }
OnPlayerClickPlayer
pawn Код:
if(IsPlayerAdmin(playerid) || pData[playerid][P_LEVEL] >= _:P_LEVEL_ADMIN)
    {
        SetPVarInt(playerid,"ClickedPlayer",clickedplayerid);
        ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Moderacion", "Mute\nUnmute", "OK", "Atras");
    }
Reply
#7

Quote:
Originally Posted by FlavioCesar
Посмотреть сообщение
Gracias chicos, finalmente me funciona con esto:

pawn Код:
new playerame[24], string[44];
                GetPlayerName(playerid, playername, 24);
                format(string, sizeof(string), "%s ha sido muteado", playername);
                SendClientMessageToAll(colorazul, string);
                pData[ playerid ][P_MUTE] = 1;
Pero solo funciona conmigo mismo, o sea, no la id que seleccione sino que si hago el mute me lo da a mi, їcomo hago para que el efecto lo de en otra id?
No se puede hacer eso si seleccionas 'mutear' a alguien en un diбlogo estilo lista, tu quieres ejecutar un comando donde al seleccionar la opciуn 'mutear' prohнbas hablar a un jugador, lo quй hiciste te 'mutearнa' atн, yo creo quй es necesario otro diбlogo tal & como te dн el ejemplo.

/dialogo → opciуn('mutear') → otro diбlogo → 'mutear' parбmetro escrito en diбlogo.
Reply
#8

Quiero intentar hacerlo en un solo dialogo, para que sea mбs sencillo.. y dejar la opciуn de 2 dialogos como ultimo recurso, pues en el dialogo donde puse Mute y Unmute planeo agregar unos comandos mбs
Reply
#9

Ey amigos, ya me funciona bien, quiero decir que ahora si va como quiero. Solo hay un detalle, me muestra el nombre mio cuando muteo, ejemplo:
hago click en Andres y selecciono "Mute" entonces lo mutea, pero el mensaje pone "FlavioCesar ha sido muteado"

El cуdigo va siendo este:

pawn Код:
new playername[MAX_PLAYER_NAME];
                new string[44];
                GetPlayerName(playerid, pName, 24);
                new clickedplayerid = GetPVarInt(playerid,"ClickedPlayer");
                new muteID[MAX_PLAYERS];
                new id;
                muteID[clickedplayerid] = id;
                format(string, sizeof(string), "%s ha sido muteado", playername);
                SendClientMessageToAll(colorazul, string);
                pData[ clickedplayerid ][P_MUTE] = 1;
Reply
#10

Si lo que quieres es que no diga nada solo quita esta dos lineas

pawn Код:
format(string, sizeof(string), "%s ha sido muteado", playername);
SendClientMessageToAll(colorazul, string);
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)