Pages

Ads 468x60px


[FilterScript] Private Messages System

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 Code:
#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
Y_Less: sscanf
Eu: Desenvolvimento do script.

DOWNLOAD