[Include] Private Messages System [On/Offline]
#1

Private Messages System
Por conta de uma solicitaзгo (Pedido) e por eu achar, particularmente, um sistema interessante, fiz esta include para quem quer trabalhar com mensagem privada tanto online quanto offline.

Por se tratar de um sistema um tanto quanto simples, decidi entгo optar por salvamento em texto. Porйm nгo foi usado include para isso, pois nгo sгo salvos palavras chaves, mas sim as linhas de mensagem privada apenas.

Vale ressaltar que essa include nгo faz verificaзгo caso o jogador exista ou nгo em seu servidor.
A verificaзгo ocorre somente para a pasta designada no macro PRIVATE_MESSAGE_PATH.
Isso pode ser facilmente adaptado!!!


Atualizado
Agora com suporte а MySQL R-40.
Mantкm-se as funзхes iguais, mudando somente o valor do macro FILE_SAVE_MODE.


Configurando:
Код:
// -- Include Config
#define FILE_SAVE_MODE					2  // 1 = Txt File | 2 = MySQL

// Caso o salvamento seja em arquivos de texto
#define PRIVATE_MESSAGE_PATH            "Private Messages/%s.pm" // Pasta do sistema (crie a pasta)

// Caso o salvamento seja em MySQL
#define MYSQL_HOST						"127.0.0.1"
#define MYSQL_USER						"root"
#define MYSQL_PASS						""
#define MYSQL_DB						"samp_db"

// -- Include Config І
#define MAX_PRIVATE_MESSAGE_LINES       (10) // Per file
#define MAX_PRIVATE_MESSAGE_LENGHT      (100) // Per line
 
// -- Personalized Format
#define PRIVATE_MESSAGE_FORMAT          "[PM]: %s disse: %s" // [1]-From Player | [2]-Message
Stock's:
Код:
SendPrivateMessageToPlayerName(from_playerid, to_player_name[], message[], bool:case_sensitive)

Parвmetros:
from_playerid - ID que vai enviar a mensagem (Integer)
to_player_name - Nome do receptor da mensagem (String)
message - Mensagem que serб enviada (String)
bool:case_sensitive - Ativa/desativa distinзгo entre caracteres maiъsculos/minъsculos (para os receptores).

Objetivo:
Enviar uma mensagem privada atravйs do NOME do jogador.
Код:
SendPrivateMessageToPlayerID(from_playerid, to_playerid, message[])

Parвmetros:
from_playerid - ID que vai enviar a mensagem (Integer)
to_playerid - ID do receptor da mensagem (Integer)
message - Mensagem que serб enviada (String)

Objetivo:
Enviar uma mensagem privada atravйs do ID do jogador.
Код:
ShowPrivateMessages(player_name[], messages[])

Parвmetros:
player_name - Nome do jogador que terб suas informaзхes (mensagens) puxadas (String)
messages - Array que armazenarб informaзхes de mensagens e que irб passб-las por referкncia (String)

Objetivo:
Puxar mensagens privadas atravйs do NOME do jogador.
Код:
RemovePrivateMessageByID(player_name[], line_id) (Nova nomenclatura)

Parвmetros:
player_name - Nome do jogador (String)
line_id - Linha identificadora da mensagem (Integer)

Objetivo:
Remover uma determinada linha do arquivo que armazena mensagens.
Код:
ClearPrivateMessages(player_name[])

Parвmetros:
player_name - Nome do jogador (String)

Objetivo:
Remover o arquivo que armazena mensagens.
Callback's
Код:
OnPlayerSendPrivateMessageOn(from_playerid, to_playerid, message[])

Parвmetros:
from_playerid - ID que enviou a mensagem (Integer)
to_playerid - ID que receberб a mensagem (Integer)
message - Mensagem enviada ao jogador (String)

Chamada:
Quando um jogador envia uma mensagem a outro (Online).
Код:
OnPlayerSendPrivateMessageOff(from_playerid, to_player_name[], message[], error)

Parвmetros:
from_playerid - ID que enviou a mensagem (Integer)
to_player_name - Nome que receberб a mensagem (String)
message - Mensagem enviada ao jogador (String)
error -
PM_ERR_NONE                     (0) // Sem erro
PM_ERR_INVALID_PLAYER_ID        (1) // Jogador й invбlido
PM_ERR_EXCEEDED_FILE_LINES      (2) // O jogador jб possui o nъmero mбximo de linhas, portanto, nгo pode mais receber mensagens.

Chamada:
Quando um jogador envia uma mensagem a outro (Offline).
P.S.: A nomenclatura das callback's indicam somente ENVIO de mensagem, porйm elas tambйm sгo chamadas ao RECEBER (atua com os dois objetivos em uma mesma chamada).


Download:
Pastebin


Crйditos finais:
F1N4L
@BlueG pelo MySQL
SA:MP Team
Reply
#2

Boa.
Reply
#3

Bem ъtil!
Reply
#4

Mais para um cуdigo ъtil, nгo sei.
Nгo curti muito nгo.
Reply
#5

muito bacana vou usar e deixar os creditos
Reply
#6

Gostei,bom trabalho
Reply
#7

Excelente a ideia. Para uma base estб bom, mas seria muito interessante se desenvolvesse o salvamento opcional em MySql e transferisse o controle das mensagens para um painel, em textdraw ou dialog.

Abзs.
Reply
#8

Quote:
Originally Posted by NelsonC
Посмотреть сообщение
Boa.
Obrigado!

Quote:
Originally Posted by DarkBr
Посмотреть сообщение
Bem ъtil!
Obrigado!

Quote:
Originally Posted by GuiKommander
Посмотреть сообщение
Mais para um cуdigo ъtil, nгo sei.
Nгo curti muito nгo.
Obrigado pelo feedback!
Existem includes menores que essa.

Quote:
Originally Posted by zG
Посмотреть сообщение
muito bacana vou usar e deixar os creditos
Obrigado!

Quote:
Originally Posted by FerrariL
Посмотреть сообщение
Gostei,bom trabalho
Obrigado!

Quote:
Originally Posted by Bruno13
Посмотреть сообщение
Excelente a ideia. Para uma base estб bom, mas seria muito interessante se desenvolvesse o salvamento opcional em MySql e transferisse o controle das mensagens para um painel, em textdraw ou dialog.

Abзs.
Obrigado, @Bruno13!
Como fiz por conta de um pedido e por eu nгo jogar mais samp (nгo tenho instalado), resolvi fazer esta base simples que vai ajudar muitos interessados no proposito da include.
Confesso que a ideia em dialog й muito boa (estava pensando no tipo de diбlogo LISTA), mas como eu disse, nгo jogo mais samp, prefiro sу a programaзгo.

Sobre MySQL: Farei, quando possнvel, uma versгo em MySQL!

Abraзo.
Reply
#9

Muito bom gostei. +REP
Reply
#10

Quote:
Originally Posted by Adiiti
Посмотреть сообщение
Muito bom gostei. +REP
Obrigado!

@TOPIC

Suporte а MySQL R-40 adicionado.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)