Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Sistema de mensagens privadas - básico em MySQL
- Necessário alterar os dados de conexão para que funcione corretamente
- - v1.0 - Início
- Comandos /mp e /minhasmp (enviadas, recebidas, e não lidas);
- Comando /ativarmp, /desativarmp (/mps) para desativar/ativar o recebimento e envio de mensagens privadas
- Informação ao se conectar se tem novas mensagens;
- */
- #include a_samp
- #include sscanf2
- #include a_mysql
- #include zcmd
- /******************************************************************************/
- /************************ Dados de conexão ************************************/
- /******************************************************************************/
- #define MYSQL_HOST "localhost" // Seu host MySQL
- #define MYSQL_USER "root" // Usuário MySQL
- #define MYSQL_PASS "" // Senha
- #define MYSQL_DB "bmt_teste" // Database
- /******************************************************************************/
- /******************************************************************************/
- new con_mysql; // Armazena o ID da conexão
- #define DialogOpMsg 15240
- #define DialogMsgEnviada 15241
- #define DialogMsgRecebida 15242
- #define DialogMsgNaoLidas 15243
- #define DialogMsgRetorno 15244
- public OnFilterScriptInit() {
- print("Sistema de mensagens privadas: CARREGADO");
- con_mysql = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DB, MYSQL_PASS);
- if(mysql_errno(con_mysql)) return print("OCORREU UM ERRO DURANTE A TENTATIVA DE CONEXÃO COM A DB!");
- // Criar as tabelas
- mysql_query(con_mysql, "CREATE TABLE IF NOT EXISTS `mp_contas` (`id` int(11) NOT NULL AUTO_INCREMENT,`user` varchar(24) NOT NULL,`novas_mensagens` int(11) NOT NULL,PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;", false);
- mysql_query(con_mysql, "CREATE TABLE IF NOT EXISTS `mp_msgs` (`id` int(11) NOT NULL AUTO_INCREMENT,`de_contaid` int(11) NOT NULL,`para_contaid` int(11) NOT NULL,`horario` int(11) NOT NULL,`data` varchar(20) NOT NULL,`lida` int(11) NOT NULL,`Mensagem` varchar(128) NOT NULL,PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;", false);
- return 1;
- }
- public OnFilterScriptExit() {
- print("Sistema de mensagens privadas: DESCARREGADO");
- mysql_close(con_mysql);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- new Cache:n, str[128], Nome[24];
- GetPlayerName(playerid, Nome, 24);
- mysql_format(con_mysql, str, sizeof(str), "SELECT id,novas_mensagens FROM mp_contas WHERE user='%s' LIMIT 1", Nome);
- n = mysql_query(con_mysql, str, true);
- if(cache_num_rows(con_mysql) > 0) {
- SetPVarInt(playerid, "mp_system_contaid", cache_get_field_content_int(0, "id", con_mysql));
- if(cache_get_field_content_int(0, "novas_mensagens", con_mysql) > 0) {
- format(str, sizeof(str), "** Você tem %i novas mensagens privadas",cache_get_field_content_int(0, "novas_mensagens", con_mysql));
- SendClientMessage(playerid,-1,str);
- SetPVarInt(playerid, "mp_system_novas",cache_get_field_content_int(0, "novas_mensagens", con_mysql));
- }
- } else {
- new Cache:rn;
- mysql_format(con_mysql, str, sizeof(str), "INSERT INTO mp_contas (user) VALUES ('%s')", Nome);
- rn = mysql_query(con_mysql, str, true);
- SetPVarInt(playerid, "mp_system_contaid", cache_insert_id(con_mysql));
- cache_delete(rn, con_mysql);
- }
- cache_delete(n, con_mysql);
- SetPVarInt(playerid, "mp_system_bloqueado", 0);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- DeletePVar(playerid, "mp_system_contaid");
- DeletePVar(playerid, "mp_system_novas");
- DeletePVar(playerid, "mp_system_bloqueado");
- return 1;
- }
- // Dialogs
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid) {
- case DialogOpMsg: {
- if(!response) return 1;
- switch(listitem) {
- case 0: { // Recebidas
- SetPVarInt(playerid, "mp_system_paglist", 0);
- carregar_MsgRecebidas(playerid, false);
- }
- case 1: { // Enviadas
- SetPVarInt(playerid, "mp_system_paglist", 0);
- carregar_MsgEnviadas(playerid);
- }
- case 2: { // Não lidas
- SetPVarInt(playerid, "mp_system_paglist", 0);
- carregar_MsgRecebidas(playerid, true);
- }
- }
- }
- case DialogMsgEnviada: {
- if(!response) return cmd_minhasmp(playerid,"");
- if(listitem >= 21) return SetPVarInt(playerid, "mp_system_paglist", GetPVarInt(playerid, "mp_system_paglist")+20), carregar_MsgEnviadas(playerid);
- new query[220], Cache:info, Dialog[180], Nome[24], Mensagem[128], Data[20];
- mysql_format(con_mysql, query, sizeof(query), "SELECT `mp_msgs`.*,`mp_contas`.`user` FROM `mp_msgs` INNER JOIN `mp_contas` ON `mp_msgs`.`para_contaid` = `mp_contas`.`id` WHERE `mp_msgs`.`de_contaid` = %i ORDER BY `mp_msgs`.`id` DESC LIMIT %i,20",GetPVarInt(playerid, "mp_system_contaid"), GetPVarInt(playerid, "mp_system_paglist"));
- info = mysql_query(con_mysql, query, true);
- if(cache_num_rows(con_mysql) > 0 && listitem < cache_num_rows(con_mysql)) {
- cache_get_field_content(listitem, "Mensagem", Mensagem, con_mysql);
- cache_get_field_content(listitem, "user", Nome, con_mysql, 24);
- cache_get_field_content(listitem, "data", Data, con_mysql, 20);
- format(Dialog, sizeof(Dialog), "Mensagem enviada para %s em %s\nMensagem: %s", Nome, Data, Mensagem);
- ShowPlayerDialog(playerid, DialogMsgRetorno, DIALOG_STYLE_MSGBOX, "{FFFF00}# {FFFFFF}Visualizando mensagem enviada:", Dialog, "Ok", "");
- }
- else SendClientMessage(playerid, -1, "{FF0000}Ocorreu um erro!");
- cache_delete(info, con_mysql);
- }
- case DialogMsgRecebida: {
- if(!response) return cmd_minhasmp(playerid, "");
- if(listitem >= 21) return SetPVarInt(playerid, "mp_system_paglist", GetPVarInt(playerid, "mp_system_paglist")+20), carregar_MsgRecebidas(playerid, false);
- new query[220], Cache:info, Dialog[180], Nome[24], Mensagem[128], Data[20];
- mysql_format(con_mysql, query, sizeof(query), "SELECT `mp_msgs`.*,`mp_contas`.`user` FROM `mp_msgs` INNER JOIN `mp_contas` ON `mp_msgs`.`de_contaid` = `mp_contas`.`id` WHERE `mp_msgs`.`para_contaid` = %i ORDER BY `mp_msgs`.`id` DESC LIMIT %i,20",GetPVarInt(playerid, "mp_system_contaid"), GetPVarInt(playerid, "mp_system_paglist"));
- info = mysql_query(con_mysql, query, true);
- if(cache_num_rows(con_mysql) > 0 && listitem < cache_num_rows(con_mysql)) {
- cache_get_field_content(listitem, "Mensagem", Mensagem, con_mysql);
- cache_get_field_content(listitem, "user", Nome, con_mysql, 24);
- cache_get_field_content(listitem, "data", Data, con_mysql, 20);
- format(Dialog, sizeof(Dialog), "Mensagem recebida de %s em %s\nMensagem: %s", Nome, Data, Mensagem);
- ShowPlayerDialog(playerid, DialogMsgRetorno, DIALOG_STYLE_MSGBOX, "{FFFF00}# {FFFFFF}Visualizando mensagem recebida:", Dialog, "Ok", "");
- if(cache_get_field_content_int(listitem, "lida", con_mysql) == 0) {
- mysql_format(con_mysql, query, sizeof(query), "UPDATE mp_msgs SET lida=1 WHERE id=%i", cache_get_field_content_int(listitem, "id", con_mysql));
- mysql_query(con_mysql, query, false);
- if(GetPVarInt(playerid, "mp_system_novas") > 0) {
- SetPVarInt(playerid,"mp_system_novas", GetPVarInt(playerid, "mp_system_novas") - 1);
- mysql_format(con_mysql, query, sizeof(query), "UPDATE mp_contas SET novas_mensagens=%i WHERE id=%i",GetPVarInt(playerid, "mp_system_novas"), GetPVarInt(playerid, "mp_system_contaid"));
- mysql_query(con_mysql, query, false);
- }
- }
- }
- else SendClientMessage(playerid, -1, "{FF0000}Ocorreu um erro!");
- cache_delete(info, con_mysql);
- }
- case DialogMsgNaoLidas: {
- if(!response) return cmd_minhasmp(playerid, "");
- if(listitem >= 21) return SetPVarInt(playerid, "mp_system_paglist", GetPVarInt(playerid, "mp_system_paglist")+20), carregar_MsgRecebidas(playerid, true);
- new query[250], Cache:info, Dialog[180], Nome[24], Mensagem[128], Data[20];
- mysql_format(con_mysql, query, sizeof(query), "SELECT `mp_msgs`.*,`mp_contas`.`user` FROM `mp_msgs` INNER JOIN `mp_contas` ON `mp_msgs`.`de_contaid` = `mp_contas`.`id` WHERE `mp_msgs`.`para_contaid` = %i AND `mp_msgs`.`lida`=0 ORDER BY `mp_msgs`.`id` DESC LIMIT %i,20",GetPVarInt(playerid, "mp_system_contaid"), GetPVarInt(playerid, "mp_system_paglist"));
- info = mysql_query(con_mysql, query, true);
- if(cache_num_rows(con_mysql) > 0 && listitem < cache_num_rows(con_mysql)) {
- cache_get_field_content(listitem, "Mensagem", Mensagem, con_mysql);
- cache_get_field_content(listitem, "user", Nome, con_mysql, 24);
- cache_get_field_content(listitem, "data", Data, con_mysql, 20);
- format(Dialog, sizeof(Dialog), "Mensagem recebida de %s em %s\nMensagem: %s", Nome, Data, Mensagem);
- ShowPlayerDialog(playerid, DialogMsgRetorno, DIALOG_STYLE_MSGBOX, "{FFFF00}# {FFFFFF}Visualizando mensagem recebida:", Dialog, "Ok", "");
- if(cache_get_field_content_int(listitem, "lida", con_mysql) == 0) {
- mysql_format(con_mysql, query, sizeof(query), "UPDATE mp_msgs SET lida=1 WHERE id=%i", cache_get_field_content_int(listitem, "id", con_mysql));
- mysql_query(con_mysql, query, false);
- if(GetPVarInt(playerid, "mp_system_novas") > 0) {
- SetPVarInt(playerid,"mp_system_novas", GetPVarInt(playerid, "mp_system_novas") - 1);
- mysql_format(con_mysql, query, sizeof(query), "UPDATE mp_contas SET novas_mensagens=%i WHERE id=%i",GetPVarInt(playerid, "mp_system_novas"), GetPVarInt(playerid, "mp_system_contaid"));
- mysql_query(con_mysql, query, false);
- }
- }
- }
- else SendClientMessage(playerid, -1, "{FF0000}Ocorreu um erro!");
- cache_delete(info, con_mysql);
- }
- case DialogMsgRetorno: return cmd_minhasmp(playerid, "");
- }
- return 0;
- }
- // Stocks
- carregar_MsgRecebidas(playerid, bool:apenasnaolidas = false) {
- new str[250], Cache:re;
- mysql_format(con_mysql, str, sizeof(str), "SELECT `mp_msgs`.`Mensagem`,`mp_contas`.`user` FROM `mp_msgs` INNER JOIN `mp_contas` ON `mp_msgs`.`de_contaid` = `mp_contas`.`id` WHERE `mp_msgs`.`para_contaid` = %i %s ORDER BY `mp_msgs`.`id` DESC LIMIT %i,20", GetPVarInt(playerid, "mp_system_contaid"), (apenasnaolidas == true) ? ("AND `mp_msgs`.`lida`=0") : (""), GetPVarInt(playerid, "mp_system_paglist"));
- re = mysql_query(con_mysql, str, true);
- if(cache_num_rows(con_mysql) > 0) { // Se há mensagens
- new Nome[24], Mensagem[64], Dialog[1500];
- for(new i; i < cache_num_rows(con_mysql); i++) {
- cache_get_field_content(i, "user", Nome, con_mysql, 24);
- cache_get_field_content(i, "Mensagem", Mensagem, con_mysql, 64);
- format(Dialog, sizeof(Dialog), "%s%s: %s%s\r\n",Dialog,Nome,Mensagem,(strlen(Mensagem) >= 63) ? ("...") : (""));
- }
- if(cache_num_rows(con_mysql) >= 20)
- strcat(Dialog, "\r\n{FFFF00}Próxima Página");
- ShowPlayerDialog(playerid, (apenasnaolidas == false) ? (DialogMsgRecebida) : (DialogMsgNaoLidas), DIALOG_STYLE_LIST, "{FF0000}# {FFFFFF}Mensagens recebidas", Dialog, "Selecionar", "Cancelar");
- } else SendClientMessage(playerid, -1, "{FF0000}[MP] Não há mensagens!");
- cache_delete(re, con_mysql);
- return 1;
- }
- carregar_MsgEnviadas(playerid) {
- new str[250], Cache:en;
- mysql_format(con_mysql, str, sizeof(str), "SELECT `mp_msgs`.`Mensagem`,`mp_contas`.`user` FROM `mp_msgs` INNER JOIN `mp_contas` ON `mp_msgs`.`para_contaid` = `mp_contas`.`id` WHERE `mp_msgs`.`de_contaid` = %i ORDER BY `mp_msgs`.`id` DESC LIMIT %i,20", GetPVarInt(playerid, "mp_system_contaid"), GetPVarInt(playerid, "mp_system_paglist"));
- en = mysql_query(con_mysql, str, true);
- if(cache_num_rows(con_mysql) > 0) {
- new Nome[24], Mensagem[64], Dialog[1500];
- for(new i; i < cache_num_rows(con_mysql); i++) {
- cache_get_field_content(i, "user", Nome, con_mysql, 24);
- cache_get_field_content(i, "Mensagem", Mensagem, con_mysql, 64);
- format(Dialog, sizeof(Dialog), "%s%s: %s%s\r\n", Dialog,Nome,Mensagem,(strlen(Mensagem) >= 63) ? ("...") : (""));
- }
- if(cache_num_rows(con_mysql) >= 20)
- strcat(Dialog, "\r\n{FFFF00}Próxima Página");
- ShowPlayerDialog(playerid, DialogMsgEnviada, DIALOG_STYLE_LIST, "{FF0000}# {FFFFFF}Mensagens enviadas", Dialog, "Selecionar", "Cancelar");
- }
- else SendClientMessage(playerid, -1, "{FF0000}[MP] Não há mensagens!");
- cache_delete(en, con_mysql);
- return 1;
- }
- // Comandos
- CMD:mp(playerid, params[]) {
- new Msg[144], id, Mensagem[128];
- if(GetPVarInt(playerid, "mp_sytem_bloqueado") == 1) return SendClientMessage(playerid, -1, "{FF0000}Você bloqueou as mensagens privadas.");
- if(sscanf(params, "us[128]", id, Mensagem)) return SendClientMessage(playerid, -1, "{FF0000}* Use: /mp [id/nome] [mensagem]");
- if(playerid == id) return SendClientMessage(playerid, -1, "{FF0000}Você não pode enviar mensagem para si mesmo.");
- if(strlen(Mensagem) >= 127) return SendClientMessage(playerid, -1, "{FF0000}Mensagem grande demais!");
- if(!IsPlayerConnected(id)) { // Caso o jogador não esteja 'online', ele irá receber a mensagem assim que se conectar
- new Nome[24], Cache:ec, q1[250], Data[6];
- sscanf(params, "s[24]s[128]", Nome, Mensagem);
- getdate(Data[2], Data[1], Data[0]);
- gettime(Data[3], Data[4], Data[5]);
- mysql_format(con_mysql, q1, sizeof(q1), "SELECT id,novas_mensagens FROM mp_contas WHERE user='%e' LIMIT 1", Nome);
- ec = mysql_query(con_mysql, q1, true);
- if(cache_num_rows(con_mysql) > 0) {
- new pid = cache_get_field_content_int(0, "id", con_mysql), novas = cache_get_field_content_int(0, "novas_mensagens", con_mysql);
- mysql_format(con_mysql, q1, sizeof(q1), "INSERT INTO mp_msgs (de_contaid,para_contaid,Mensagem,lida,horario,data) VALUES (%i,%i,'%e',0,%i,'%02d/%02d/%d %02d:%02d')", GetPVarInt(playerid, "mp_system_contaid"), pid, Mensagem, gettime(), Data[0], Data[1], Data[2], Data[3], Data[4]);
- mysql_query(con_mysql, q1, false);
- mysql_format(con_mysql, q1, sizeof(q1), "UPDATE mp_contas SET novas_mensagens=%i WHERE id=%i", novas+1, pid);
- mysql_query(con_mysql, q1, false);
- format(Msg, sizeof(Msg), "{FFFF00}[MP ENVIADO] %s: %s",Nome,Mensagem);
- SendClientMessage(playerid, -1, Msg);
- }
- else SendClientMessage(playerid,-1, "{FF0000}Ocorreu um erro ao enviar uma mensagem privada a este jogador.");
- cache_delete(ec, con_mysql);
- return 1;
- }
- if(GetPVarInt(id, "mp_system_bloqueado") == 1) return SendClientMessage(playerid, -1, "{FF0000}Este jogador desabilitou o recebimento de mensagens privadas!");
- new MyNome[24], OtNome[24];
- GetPlayerName(playerid, MyNome, 24);
- GetPlayerName(id, OtNome, 24);
- format(Msg, 144, "{FFFF00}*[MP RECEBIDO] %s [%i]: %s", MyNome, playerid, Mensagem);
- SendClientMessage(id, -1, Msg);
- format(Msg, 144, "{FFFF00}*[MP ENVIADO] %s [%i]: %s", OtNome, id, Mensagem);
- SendClientMessage(playerid, -1, Msg);
- // Efetuar Query
- new query[200], Data[6];
- getdate(Data[2], Data[1], Data[0]);
- gettime(Data[3], Data[4], Data[5]);
- mysql_format(con_mysql, query, sizeof(query), "INSERT INTO mp_msgs (de_contaid,para_contaid,Mensagem,lida,horario,data) VALUES (%i,%i,'%e',1,%i,'%02d/%02d/%d %02d:%02d')", GetPVarInt(playerid, "mp_system_contaid"), GetPVarInt(id, "mp_system_contaid"), Mensagem, gettime(), Data[0], Data[1], Data[2], Data[3], Data[4]);
- mysql_query(con_mysql, query, false);
- return 1;
- }
- CMD:minhasmp(playerid, params[]) return ShowPlayerDialog(playerid, DialogOpMsg, DIALOG_STYLE_LIST, "{FFFF00}# {FFFFFF}Mensagens privadas:", "Recebidas\r\nEnviadas\r\nApenas não lidas", "Selecionar", "Cancelar");
- CMD:ativarmp(playerid, params[]) {
- if(GetPVarInt(playerid, "mp_system_bloqueado") == 0) return SendClientMessage(playerid, -1, "{FF0000}As mensagens privadas já estão ativadas!");
- SetPVarInt(playerid, "mp_system_bloqueado", 0);
- SendClientMessage(playerid, -1, "{FFFF00}Mensagens privadas ativadas!");
- return 1;
- }
- CMD:desativarmp(playerid, params[]) {
- if(GetPVarInt(playerid, "mp_system_bloqueado") == 1) return SendClientMessage(playerid, -1, "{FF0000}As mensagens privadas já estão desativadas!");
- SetPVarInt(playerid, "mp_system_bloqueado", 1);
- SendClientMessage(playerid, -1, "{FFFF00}Mensagens privadas desativadas!");
- return 1;
- }
- CMD:mps(playerid, params[]) return (GetPVarInt(playerid, "mp_system_bloqueado") == 0) ? (cmd_desativarmp(playerid, params)) : (cmd_ativarmp(playerid, params));
- /*
- www.brasilmegatrucker.com
- Sistema criado por Nícolas Corrêa
- */
Advertisement
Add Comment
Please, Sign In to add comment