Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #if defined _pm_included
- #endinput
- #endif
- #define _pm_included
- /*
- Private Messages System by F1N4L
- ________________________________________
- SendPrivateMessageToPlayerName(from_playerid, to_player_name[], message[], bool:case_sensitive)
- SendPrivateMessageToPlayerID(from_playerid, to_playerid, message[])
- ShowPrivateMessages(player_name[], messages[])
- RemovePrivateMessageByID(player_name[], line_id)
- ClearPrivateMessages(player_name[])
- */
- #define FILE_SAVE_MODE 2 // 1 = Txt File | 2 = MySQL
- #if defined FILE_SAVE_MODE
- #if FILE_SAVE_MODE < 1 || FILE_SAVE_MODE > 2
- #error [PM Inc] Invalid save mode. Please select between 1-2.
- #endif
- #endif
- // -- Include Config
- #if FILE_SAVE_MODE == 1
- #define PRIVATE_MESSAGE_PATH "Private Messages/%s.pm"
- #elseif FILE_SAVE_MODE == 2
- #define MYSQL_HOST "127.0.0.1"
- #define MYSQL_USER "root"
- #define MYSQL_PASS ""
- #define MYSQL_DB "samp_db"
- #endif
- #define MAX_PRIVATE_MESSAGE_LINES (10) // Per file
- #define MAX_PRIVATE_MESSAGE_LENGHT (100) // Per line
- // -- PM Error Code
- #define PM_ERR_NONE (0)
- #define PM_ERR_INVALID_PLAYER_ID (1)
- #define PM_ERR_EXCEEDED_FILE_LINES (2)
- // -- Personalized Format
- #define PRIVATE_MESSAGE_FORMAT "[PM]: %s disse: %s" // [1]-From Player | [2]-Message
- // -- Forward's
- forward OnPlayerSendPrivateMessageOn(from_playerid, to_playerid, message[]);
- forward OnPlayerSendPrivateMessageOff(from_playerid, to_player_name[], message[], error);
- #if FILE_SAVE_MODE == 2
- static MySQL:MyConnnection;
- public OnGameModeInit()
- {
- MyConnnection = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DB);
- if(mysql_errno(MyConnnection) != 0)
- printf("Erro ao conectar-se na base de dados MySQL (%d)", mysql_errno(MyConnnection));
- #if defined PM_OnGameModeInit
- PM_OnGameModeInit();
- #endif
- return true;
- }
- #if defined _ALS_OnGameModeInit
- #undef OnGameModeInit
- #else
- #define _ALS_OnGameModeInit
- #endif
- #define OnGameModeInit PM_OnGameModeInit
- #if defined PM_OnGameModeInit
- forward PM_OnGameModeInit();
- #endif
- #endif
- stock SendPrivateMessageToPlayerName(from_playerid, to_player_name[MAX_PLAYER_NAME], message[MAX_PRIVATE_MESSAGE_LENGHT - MAX_PLAYER_NAME - 19], bool:case_sensitive)
- {
- static player_name[MAX_PLAYER_NAME];
- for(new i = 0, x = GetPlayerPoolSize()+1; i < x; ++ i)
- {
- GetPlayerName(i, player_name, MAX_PLAYER_NAME);
- if(strcmp(to_player_name, player_name, case_sensitive, MAX_PLAYER_NAME) == 0)
- {
- OnPlayerSendPrivateMessageOn(from_playerid, i, message);
- return true;
- }
- }
- SaveNewPrivateMessage(from_playerid, to_player_name, message);
- return true;
- }
- // 100 24 PRIVATE_MESSAGE_FORMAT ([%d] [PM]: %s disse: )
- // | | |
- stock SendPrivateMessageToPlayerID(from_playerid, to_playerid, message[MAX_PRIVATE_MESSAGE_LENGHT - MAX_PLAYER_NAME - 19])
- {
- new to_playerid_str[4];
- valstr(to_playerid_str, to_playerid, false);
- if(!IsPlayerConnected(to_playerid))
- return OnPlayerSendPrivateMessageOff(from_playerid, to_playerid_str, message, PM_ERR_INVALID_PLAYER_ID);
- OnPlayerSendPrivateMessageOn(from_playerid, to_playerid, message);
- return true;
- }
- stock ShowPrivateMessages(player_name[], messages[])
- {
- #if FILE_SAVE_MODE == 1
- static lines_str[MAX_PRIVATE_MESSAGE_LENGHT], get_message[MAX_PRIVATE_MESSAGE_LENGHT], player_file[MAX_PLAYER_NAME+20];
- new lines_count;
- format(player_file, sizeof player_file, PRIVATE_MESSAGE_PATH, player_name);
- if(!fexist(player_file))
- return false;
- new File:_priv_file = fopen(player_file, io_read);
- while(fread(_priv_file, lines_str))
- {
- lines_count ++;
- format(get_message, sizeof get_message, "%d | %s", lines_count, lines_str);
- strcat(messages, get_message, 1024);
- }
- #elseif FILE_SAVE_MODE == 2
- static string[129], Cache:rows, id, from_playerid[MAX_PLAYER_NAME], get_message[MAX_PRIVATE_MESSAGE_LENGHT], message[MAX_PRIVATE_MESSAGE_LENGHT];
- mysql_format(MyConnnection, string, sizeof string, "SELECT * FROM `private messages` WHERE `to player` = '%e' LIMIT %d", player_name, MAX_PRIVATE_MESSAGE_LINES);
- rows = mysql_query(MyConnnection, string);
- if(cache_num_rows())
- {
- for(new x = 0; x < cache_num_rows(); ++ x)
- {
- cache_get_value_name_int(x, "id", id);
- cache_get_value_name(x, "from player", from_playerid);
- cache_get_value_name(x, "message", message);
- format(get_message, sizeof get_message, "%d | "PRIVATE_MESSAGE_FORMAT"\n", id, from_playerid, message);
- strcat(messages, get_message, 1024);
- }
- }
- cache_delete(rows);
- #endif
- return true;
- }
- stock RemovePrivateMessageByID(player_name[], line_id)
- {
- if(line_id < 1 || line_id > MAX_PRIVATE_MESSAGE_LINES)
- return false;
- #if FILE_SAVE_MODE == 1
- static player_file[MAX_PLAYER_NAME+20];
- format(player_file, sizeof player_file, PRIVATE_MESSAGE_PATH, player_name);
- new File:_priv_file = fopen(player_file, io_read), lines_count, lines_str[MAX_PRIVATE_MESSAGE_LENGHT], save_str[MAX_PRIVATE_MESSAGE_LINES * MAX_PRIVATE_MESSAGE_LENGHT];
- while(fread(_priv_file, lines_str))
- {
- lines_count ++;
- if(lines_count == line_id)
- continue;
- strcat(save_str, lines_str, 1024);
- }
- fclose(_priv_file);
- _priv_file = fopen(player_file, io_write);
- fwrite(_priv_file, save_str);
- fclose(_priv_file);
- #elseif FILE_SAVE_MODE == 2
- static string[100];
- mysql_format(MyConnnection, string, sizeof string, "DELETE FROM `private messages` WHERE `id` = '%i' AND `to player` = '%e'", line_id, player_name);
- mysql_tquery(MyConnnection, string);
- #endif
- return true;
- }
- stock ClearPrivateMessages(player_name[])
- {
- #if FILE_SAVE_MODE == 1
- static player_file[MAX_PLAYER_NAME+20];
- format(player_file, sizeof player_file, PRIVATE_MESSAGE_PATH, player_name);
- if(fexist(player_file))
- fremove(player_file);
- else return false;
- #elseif FILE_SAVE_MODE == 2
- static string[90];
- mysql_format(MyConnnection, string, sizeof string, "DELETE FROM `private messages` WHERE `to player` = '%e'", player_name);
- mysql_tquery(MyConnnection, string);
- #endif
- return true;
- }
- static stock SaveNewPrivateMessage(from_playerid, to_player_name[MAX_PLAYER_NAME], message[])
- {
- static player_name[MAX_PLAYER_NAME], get_message[MAX_PRIVATE_MESSAGE_LENGHT], save_str[MAX_PRIVATE_MESSAGE_LENGHT];
- get_message[0] = EOS;
- GetPlayerName(from_playerid, player_name, MAX_PLAYER_NAME);
- strcat(get_message, message, MAX_PRIVATE_MESSAGE_LENGHT);
- format(save_str, sizeof save_str, PRIVATE_MESSAGE_FORMAT"\r\n", player_name, get_message);
- #if FILE_SAVE_MODE == 1
- static to_player_file[MAX_PLAYER_NAME+20], lines_str[MAX_PRIVATE_MESSAGE_LENGHT];
- new lines_count;
- format(to_player_file, sizeof to_player_file, PRIVATE_MESSAGE_PATH, to_player_name);
- new File:_priv_file = fopen(to_player_file, io_readwrite);
- while(fread(_priv_file, lines_str))
- {
- lines_count ++;
- if(lines_count >= MAX_PRIVATE_MESSAGE_LINES)
- {
- OnPlayerSendPrivateMessageOff(from_playerid, to_player_name, get_message, PM_ERR_EXCEEDED_FILE_LINES);
- return false;
- }
- }
- fwrite(_priv_file, save_str);
- fclose(_priv_file);
- OnPlayerSendPrivateMessageOff(from_playerid, to_player_name, get_message, PM_ERR_NONE);
- #elseif FILE_SAVE_MODE == 2
- static string[300];
- mysql_format(MyConnnection, string, sizeof string, "INSERT INTO `private messages` (`from player`, `to player`, `message`) VALUES ('%e', '%e', '%e')", player_name, to_player_name, get_message);
- mysql_tquery(MyConnnection, string);
- #endif
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement