[FilterScript] Private Messages System
#1

Bem, sei que hб muitos scripts do gкnero nesta board, mas como nгo hб regras contra isso, estarei postando aqui meu sistema de mensagens privadas, posto que tenho visto muitos sistemas iguais, fiz este sistema que funciona tanto em dialogs, ou com comandos, o dialog, aparece ao clicar no nome de um jogador. Exibindo um DIALOG_STYLE_LIST com as opзхes: Enviar PM - Bloquear PM - Desbloquear PM, funзхes que podem ser executadas tambйm atravйs de comandos, sгo eles: /pm, /blockpm, /desblockpm.

O sistema utiliza ZCMD e sscanf.

Bem, chega de blб blб blб.


Source:

pawn Код:
#include <a_samp>
#include <zcmd>
#include <sscanf2>

const DIALOG_MENU_PM = 1;
const DIALOG_SEND_PM = 2;

new
    bool: blockPM [ MAX_PLAYERS ] [ MAX_PLAYERS ];
   
public OnPlayerClickPlayer ( playerid , clickedplayerid , source ) {
    new
        name [ MAX_PLAYER_NAME ],
        str[ 100 ];

    SetPVarInt ( playerid , "clickedplayerid" , clickedplayerid );
    GetPlayerName( clickedplayerid , name , sizeof name );
    format ( str , sizeof ( str ) , "Enviar PM para %s\nBloquear PM's de %s\nDesbloquear PM's de %s" , name , name , name );
    ShowPlayerDialog ( playerid , DIALOG_MENU_PM , DIALOG_STYLE_LIST , "{FFFFFF}Menu: Mensagens Particulares" , str , "Selecionar", "Cancelar" );
    return 1;
}

public OnDialogResponse ( playerid , dialogid , response , listitem , inputtext [ ] ) {
    new
        str [ 100 ],
        name [ 24 ];
       
    switch ( dialogid ) {
        case DIALOG_MENU_PM: {
            if ( !response ) {
                SetPVarInt ( playerid , "clickedplayerid", INVALID_PLAYER_ID );
            }
            else {
                switch ( listitem ) {
                    case 0: {
                        GetPlayerName ( GetPVarInt ( playerid , "clickedplayerid" ) , name , sizeof name );
                        format ( str , sizeof str , "{FFFFFF}Digite abaixo a mensagem a ser enviada para {0000FF}%s" , name );
                        ShowPlayerDialog ( playerid , DIALOG_SEND_PM , DIALOG_STYLE_INPUT , "{FFFFFF}Enviar mensagem particular" , str , "Enviar" , "Cancelar" );
                    }
                    case 1: {
                        format ( str , 4 , "%i" , GetPVarInt ( playerid , "clickedplayerid" ) );
                        cmd_blockpm ( playerid , str );
                        SetPVarInt ( playerid , "clickedplayerid", INVALID_PLAYER_ID );
                    }
                    case 2: {
                        format ( str , 4 , "%i" , GetPVarInt ( playerid , "clickedplayerid" ) );
                        cmd_desblockpm ( playerid , str );
                        SetPVarInt ( playerid , "clickedplayerid", INVALID_PLAYER_ID );
                    }
                }
            }
        }
        case DIALOG_SEND_PM: {
            if ( !response ) {
                SetPVarInt ( playerid , "clickedplayerid", INVALID_PLAYER_ID );
            }
            else {
                format ( str , 100 , "%i %s" , GetPVarInt ( playerid , "clickedplayerid" ) , inputtext );
                cmd_pm ( playerid , str );
                SetPVarInt ( playerid , "clickedplayerid", INVALID_PLAYER_ID );
            }
        }
    }
    return 1;
}
   
CMD:pm( playerid , params [ ] ) {
    new
        playerID,
        pmText [ 90 ],
        str [ 128 ],
        name [ 24 ];
       
    if ( sscanf ( params , "us[90]" , playerID , pmText ) )
        return SendClientMessage ( playerid , 0xFFFFFFFF , "Use /PM [ID/Nome] [Texto]" );
    if ( !IsPlayerConnected ( playerID  ) )
        return SendClientMessage ( playerid , 0xFFFFFFFF , "Jogador inativo.");
    if ( playerID == INVALID_PLAYER_ID )
        return SendClientMessage ( playerid , 0xFFFFFFFF , "ID Invбlido." );
    if ( blockPM [ playerID ] [ playerid ] )
        return SendClientMessage ( playerid , 0xE31919FF , "Este jogador bloqueou mensagens particulares suas." );

    GetPlayerName ( playerid , name , sizeof name );
    format ( str , sizeof ( str ) , "PM de %s: %s" , name , pmText );
    SendClientMessage ( playerID , 0xF6F600FF , str );
    SendClientMessage ( playerid , 0xF6F600FF , "Mensagem particular enviada." );
    return true;
}

CMD:blockpm ( playerid , params [ ] ) {
    new
        playerID,
        str [ 90 ],
        name [ 24 ];
       
    if ( sscanf ( params , "u" , playerID ) )
        return SendClientMessage ( playerid , 0xFFFFFFFF , "Use /blockpm [ID/Nome]" );
    if ( !IsPlayerConnected ( playerID  ) )
        return SendClientMessage ( playerid , 0xFFFFFFFF , "Jogador inativo.");
    if ( playerID == INVALID_PLAYER_ID )
        return SendClientMessage ( playerid , 0xFFFFFFFF , "ID Invбlido." );
    if ( blockPM [ playerid ] [ playerID ] )
        return SendClientMessage ( playerid , 0xE31919FF , "Vocк jб bloqueou mensagens particulares deste jogador." );

    blockPM [ playerid ] [ playerID ] = true;
    GetPlayerName ( playerID , name , sizeof ( name ) );
    format ( str , sizeof ( str ) , "Mensagens particulares de %s bloqueadas!" , name );
    SendClientMessage ( playerid , 0x00CD00FF , str );
    GetPlayerName ( playerid , name , sizeof ( name ) );
    format ( str , sizeof ( str ) , "O jogador %s bloqueou suas mensagens particulares." , name );
    SendClientMessage ( playerID , 0xE31919FF , str );
    return 1;
}

CMD:desblockpm ( playerid , params [ ] ) {
    new
        playerID,
        str [ 90 ],
        name [ 24 ];

    if ( sscanf ( params , "u" , playerID ) )
        return SendClientMessage ( playerid , 0xFFFFFFFF , "Use /blockpm [ID/Nome]" );
    if ( !IsPlayerConnected ( playerID  ) )
        return SendClientMessage ( playerid , 0xFFFFFFFF , "Jogador inativo.");
    if ( playerID == INVALID_PLAYER_ID )
        return SendClientMessage ( playerid , 0xFFFFFFFF , "ID Invбlido." );
    if ( !blockPM [ playerid ] [ playerID ] )
        return SendClientMessage ( playerid , 0xE31919FF , "Vocк nгo bloqueou mensagens particulares deste jogador." );

    blockPM [ playerid ] [ playerID ] = false;
    GetPlayerName ( playerID , name , sizeof ( name ) );
    format ( str , sizeof ( str ) , "Mensagens particulares de %s desbloqueadas!" , name );
    SendClientMessage ( playerid , 0x00CD00FF , str );
    GetPlayerName ( playerid , name , sizeof ( name ) );
    format ( str , sizeof ( str ) , "O jogador %s desbloqueou suas mensagens particulares." , name );
    SendClientMessage ( playerID , 0xE31919FF , str );
    return 1;
}

Crйditos:

SA:MP Team
Zeex: ZCMD
******: sscanf
Eu: Desenvolvimento do script.

DOWNLOAD

Espero que gostem, e principalmente que seja ъtil para alguйm
Reply


Messages In This Thread
Private Messages System - by Jason` - 08.04.2012, 19:29
Re: Private Messages System - by Đeagle - 08.04.2012, 19:32
Re: Private Messages System - by Jason` - 08.04.2012, 19:33
Re: Private Messages System - by Abravanel - 08.04.2012, 19:36
Re: Private Messages System - by SlashPT - 08.04.2012, 19:51
Re: Private Messages System - by Abravanel - 08.04.2012, 20:07
Re: Private Messages System - by SlashPT - 08.04.2012, 20:11
Re: Private Messages System - by Abravanel - 08.04.2012, 20:16
Re: Private Messages System - by Lucas_Alemao - 08.04.2012, 20:21
Re: Private Messages System - by SlashPT - 08.04.2012, 20:24

Forum Jump:


Users browsing this thread: 1 Guest(s)