Advertisement
Guest User

Mathias Mail Filterscript

a guest
Dec 19th, 2014
698
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 10.67 KB | None | 0 0
  1. /////////////////
  2. /////////////////
  3. // Scripted by //
  4. //   Mathias   //
  5. /////////////////
  6. /////////////////
  7.  
  8. #include <a_samp>
  9. #include <zcmd>
  10. #include <mysql>
  11.  
  12. // Defines
  13. #define DIALOG_MAIL_MAIN 1
  14. #define DIALOG_MAIL_COMPOSE_MAIN 2
  15. #define DIALOG_MAIL_COMPOSE_SEND 3
  16. #define DIALOG_MAIL_COMPOSE_ADD 4
  17. #define DIALOG_MAIL_MSGBOX 5
  18. #define DIALOG_MAIL_INBOX 6
  19. #define DIALOG_STYLE_READ_MSG 7
  20.  
  21. // Database settings
  22. #define MYSQL_HOST "host"
  23. #define MYSQL_USER "user"
  24. #define MYSQL_PASS "pass"
  25. #define MYSQL_DB "db"
  26.  
  27. // Global variables.
  28. new Mail[MAX_PLAYERS][2048]; // The reason why this is so big is in case someone want to send one big ass mail, lol!
  29. new mList[MAX_PLAYERS][100];
  30. new lastRead[MAX_PLAYERS];
  31.  
  32. public OnFilterScriptInit()
  33. {
  34.     print("\n--------------------------------------");
  35.     print(" MySQL Mail filterscript by Mathias");
  36.     print("--------------------------------------\n");
  37.     new MySQL:connection = mysql_init(LOG_ONLY_ERRORS, 1);
  38.     mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DB, connection, 1);
  39.     return 1;
  40. }
  41.  
  42. public OnFilterScriptExit()
  43. {
  44.     return 1;
  45. }
  46.  
  47. public OnPlayerRequestClass(playerid, classid)
  48. {
  49.     return 1;
  50. }
  51.  
  52. public OnPlayerConnect(playerid)
  53. {
  54.     Mail[playerid] = "";
  55.     return 1;
  56. }
  57.  
  58. public OnPlayerDisconnect(playerid, reason)
  59. {
  60.     return 1;
  61. }
  62.  
  63. public OnPlayerSpawn(playerid)
  64. {
  65.     return 1;
  66. }
  67.  
  68. public OnPlayerDeath(playerid, killerid, reason)
  69. {
  70.     return 1;
  71. }
  72.  
  73. public OnVehicleSpawn(vehicleid)
  74. {
  75.     return 1;
  76. }
  77.  
  78. public OnVehicleDeath(vehicleid, killerid)
  79. {
  80.     return 1;
  81. }
  82.  
  83. public OnPlayerText(playerid, text[])
  84. {
  85.     return 1;
  86. }
  87.  
  88. public OnPlayerCommandText(playerid, cmdtext[])
  89. {
  90.     if (strcmp("/mycommand", cmdtext, true, 10) == 0)
  91.     {
  92.         // Do something here
  93.         return 1;
  94.     }
  95.     return 0;
  96. }
  97.  
  98. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  99. {
  100.     return 1;
  101. }
  102.  
  103. public OnPlayerExitVehicle(playerid, vehicleid)
  104. {
  105.     return 1;
  106. }
  107.  
  108. public OnPlayerStateChange(playerid, newstate, oldstate)
  109. {
  110.     return 1;
  111. }
  112.  
  113. public OnPlayerEnterCheckpoint(playerid)
  114. {
  115.     return 1;
  116. }
  117.  
  118. public OnPlayerLeaveCheckpoint(playerid)
  119. {
  120.     return 1;
  121. }
  122.  
  123. public OnPlayerEnterRaceCheckpoint(playerid)
  124. {
  125.     return 1;
  126. }
  127.  
  128. public OnPlayerLeaveRaceCheckpoint(playerid)
  129. {
  130.     return 1;
  131. }
  132.  
  133. public OnRconCommand(cmd[])
  134. {
  135.     return 1;
  136. }
  137.  
  138. public OnPlayerRequestSpawn(playerid)
  139. {
  140.     return 1;
  141. }
  142.  
  143. public OnObjectMoved(objectid)
  144. {
  145.     return 1;
  146. }
  147.  
  148. public OnPlayerObjectMoved(playerid, objectid)
  149. {
  150.     return 1;
  151. }
  152.  
  153. public OnPlayerPickUpPickup(playerid, pickupid)
  154. {
  155.     return 1;
  156. }
  157.  
  158. public OnVehicleMod(playerid, vehicleid, componentid)
  159. {
  160.     return 1;
  161. }
  162.  
  163. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  164. {
  165.     return 1;
  166. }
  167.  
  168. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  169. {
  170.     return 1;
  171. }
  172.  
  173. public OnPlayerSelectedMenuRow(playerid, row)
  174. {
  175.     return 1;
  176. }
  177.  
  178. public OnPlayerExitedMenu(playerid)
  179. {
  180.     return 1;
  181. }
  182.  
  183. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  184. {
  185.     return 1;
  186. }
  187.  
  188. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  189. {
  190.     return 1;
  191. }
  192.  
  193. public OnRconLoginAttempt(ip[], password[], success)
  194. {
  195.     return 1;
  196. }
  197.  
  198. public OnPlayerUpdate(playerid)
  199. {
  200.     return 1;
  201. }
  202.  
  203. public OnPlayerStreamIn(playerid, forplayerid)
  204. {
  205.     return 1;
  206. }
  207.  
  208. public OnPlayerStreamOut(playerid, forplayerid)
  209. {
  210.     return 1;
  211. }
  212.  
  213. public OnVehicleStreamIn(vehicleid, forplayerid)
  214. {
  215.     return 1;
  216. }
  217.  
  218. public OnVehicleStreamOut(vehicleid, forplayerid)
  219. {
  220.     return 1;
  221. }
  222.  
  223. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  224. {
  225.     if(dialogid == DIALOG_MAIL_MAIN)
  226.     {
  227.         if(response)
  228.         {
  229.             switch(listitem)
  230.             {
  231.                 case 0: // Inbox selected
  232.                 {
  233.                     new pName[MAX_PLAYER_NAME], query[256], mails[1000], tmp[126], i = 0;
  234.                     GetPlayerName(playerid, pName, sizeof(pName));
  235.                     format(query, sizeof(query), "SELECT * FROM mails WHERE mto = '%s'", pName);
  236.                     mysql_query(query);
  237.                     mysql_store_result();
  238.                     if(mysql_num_rows() < 1) return SendClientMessage(playerid, -1, "No e-mails could be found!");
  239.                     while(mysql_fetch_row(query, "|"))
  240.                     {
  241.                         new from[24], read, rstr[32], mid;
  242.                         mysql_fetch_field("mfrom", from);
  243.                         mysql_fetch_field("mread", query); read = strval(query);
  244.                         mysql_fetch_field("id", query); mid = strval(query);
  245.                         switch(read)
  246.                         {
  247.                             case 0: rstr = "{FF0000}(unread)";
  248.                             case 1: rstr = "{00FF00}(read)";
  249.                         }
  250.                         format(tmp, sizeof(tmp), "{FFFFFF}From: %[email protected] %s\n", from, rstr);
  251.                         mList[playerid][i] = mid;
  252.                         strins(mails, tmp, strlen(mails));
  253.                         i++;
  254.                     }
  255.                     ShowPlayerDialog(playerid, DIALOG_MAIL_INBOX, DIALOG_STYLE_LIST, "Inbox", mails, "Read", "Go back");
  256.                 }
  257.                 case 1: // Compose new selected
  258.                 {
  259.                     ShowPlayerDialog(playerid, DIALOG_MAIL_COMPOSE_MAIN, DIALOG_STYLE_LIST, "Compose new", "Send e-mail\nAdd text\nReset text", "Select", "Go back");
  260.                 }
  261.             }
  262.         } else {
  263.             return SendClientMessage(playerid, -1, "You have signed out of your e-mail account!");
  264.         }
  265.     }
  266.     if(dialogid == DIALOG_MAIL_COMPOSE_MAIN)
  267.     {
  268.         if(response)
  269.         {
  270.             switch(listitem)
  271.             {
  272.                 case 0: // Send e-mail
  273.                 {
  274.                     ShowPlayerDialog(playerid, DIALOG_MAIL_COMPOSE_SEND, DIALOG_STYLE_INPUT, "Sending e-mail", "Enter the name of who you'd like to send it to. (Case-sensitive, underscore required)", "Send", "Go back");
  275.                 }
  276.                 case 1: // Add text
  277.                 {
  278.                     ShowPlayerDialog(playerid, DIALOG_MAIL_COMPOSE_ADD, DIALOG_STYLE_INPUT, "Editing e-mail", "Enter the text you wish to add to your mail! (newline with ;)", "Add", "Go back");
  279.                 }
  280.                 case 2: // Reset text
  281.                 {
  282.                     Mail[playerid] = "";
  283.                     ShowPlayerDialog(playerid, DIALOG_MAIL_COMPOSE_MAIN, DIALOG_STYLE_LIST, "Compose new", "Send e-mail\nAdd text\nReset text", "Select", "Go back");
  284.                     return SendClientMessage(playerid, -1, "E-mail text has been reset!");
  285.                 }
  286.             }
  287.         } else {
  288.             ShowPlayerDialog(playerid, DIALOG_MAIL_MAIN, DIALOG_STYLE_LIST, "Outlook E-Mail", "Inbox\nCompose new mail", "Select", "Sign out");
  289.         }
  290.     }
  291.     if(dialogid == DIALOG_MAIL_COMPOSE_SEND)
  292.     {
  293.         if(response)
  294.         {
  295.             new query[256];
  296.             strreplace(inputtext, ''', '*');
  297.            if(strlen(inputtext) > 24) return SendClientMessage(playerid, -1, "You can't enter a name longer than 24 characters!");
  298.            new string[50], pName[MAX_PLAYER_NAME], id;
  299.            GetPlayerName(playerid, pName, sizeof(pName));
  300.             format(string, sizeof(string), "To: %[email protected];;", inputtext); // ; = \n
  301.             strins(Mail[playerid], string, 0);
  302.             format(string, sizeof(string), ";;From: %[email protected]", pName);
  303.             strins(Mail[playerid], string, strlen(Mail[playerid]));
  304.            id = GetPlayerIDFromName(inputtext);
  305.            format(query, sizeof(query), "INSERT INTO mails VALUES('', '%s', '%s', '%s', '0')", inputtext, pName, Mail[playerid]);
  306.            mysql_query(query);
  307.            if(id != 65535) SendClientMessage(id, -1, "You have received a new e-mail! (/mail)");
  308.            strreplace(Mail[playerid], ';', '\n');
  309.             ShowPlayerDialog(playerid, DIALOG_MAIL_MSGBOX, DIALOG_STYLE_MSGBOX, "E-Mail sent!", Mail[playerid], "Close", "");
  310.             Mail[playerid] = "";
  311.             return 1;
  312.        } else {
  313.            ShowPlayerDialog(playerid, DIALOG_MAIL_COMPOSE_MAIN, DIALOG_STYLE_LIST, "Compose new", "Send e-mail\nAdd text\nReset text", "Select", "Go back");
  314.        }
  315.    }
  316.    if(dialogid == DIALOG_MAIL_COMPOSE_ADD)
  317.    {
  318.        if(response)
  319.        {
  320.            strreplace(inputtext, ''', '*');
  321.            strins(Mail[playerid], inputtext, strlen(Mail[playerid]));
  322.            SendClientMessage(playerid, -1, "You have added the text to your mail!");
  323.            return ShowPlayerDialog(playerid, DIALOG_MAIL_COMPOSE_MAIN, DIALOG_STYLE_LIST, "Compose new", "Send e-mail\nAdd text\nReset text", "Select", "Go back");
  324.        } else {
  325.            return ShowPlayerDialog(playerid, DIALOG_MAIL_COMPOSE_MAIN, DIALOG_STYLE_LIST, "Compose new", "Send e-mail\nAdd text\nReset text", "Select", "Go back");
  326.        }
  327.    }
  328.    if(dialogid == DIALOG_MAIL_INBOX)
  329.    {
  330.        if(response)
  331.        {
  332.             new msgStr[2048], query[256], mid;
  333.             format(query, sizeof(query), "SELECT * FROM mails WHERE id = '%d'", mList[playerid][listitem]);
  334.             mysql_query(query);
  335.             mysql_store_result();
  336.             while(mysql_fetch_row(query, "|"))
  337.             {
  338.                 mysql_fetch_field("message", msgStr);
  339.                 mysql_fetch_field("id", query); mid = strval(query);
  340.                 lastRead[playerid] = mid;
  341.                strreplace(msgStr, ';', '\n');
  342.                return ShowPlayerDialog(playerid, DIALOG_STYLE_READ_MSG, DIALOG_STYLE_MSGBOX, "Reading e-mail.", msgStr, "Mark as read", "Go back");
  343.             }
  344.         }
  345.     }
  346.     if(dialogid == DIALOG_STYLE_READ_MSG)
  347.     {
  348.         if(response)
  349.         {
  350.             new query[256];
  351.             format(query, sizeof(query), "UPDATE mails SET mread = 1 WHERE id = '%d'", lastRead[playerid]);
  352.             mysql_query(query);
  353.             lastRead[playerid] = -1;
  354.             SendClientMessage(playerid, -1, "Message has been marked as read!");
  355.             return ShowPlayerDialog(playerid, DIALOG_MAIL_MAIN, DIALOG_STYLE_LIST, "Outlook E-Mail", "Inbox\nCompose new mail", "Select", "Sign out");
  356.         } else {
  357.             return ShowPlayerDialog(playerid, DIALOG_MAIL_MAIN, DIALOG_STYLE_LIST, "Outlook E-Mail", "Inbox\nCompose new mail", "Select", "Sign out");
  358.         }
  359.     }
  360.     return 1;
  361. }
  362.  
  363. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  364. {
  365.     return 1;
  366. }
  367.  
  368. // Command(s)
  369.  
  370. CMD:mail(playerid, params[])
  371. {
  372.     SendClientMessage(playerid, -1, "You have signed in to your outlook e-mail!");
  373.     ShowPlayerDialog(playerid, DIALOG_MAIL_MAIN, DIALOG_STYLE_LIST, "Outlook E-Mail", "Inbox\nCompose new mail", "Select", "Sign out");
  374.     return 1;
  375. }
  376.  
  377. // Just used for my vid.
  378.  
  379. CMD:cc(playerid, params[])
  380. {
  381.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "You are not admin!");
  382.     for(new i = 0; i < 51; i++)
  383.     {
  384.         SendClientMessageToAll(-1, "");
  385.     }
  386.     return 1;
  387. }
  388.  
  389. // Stocks
  390.  
  391. stock strreplace(string[], find, replace)
  392. {
  393.    for(new i=0; string[i]; i++)
  394.    {
  395.        if(string[i] == find)
  396.        {
  397.            string[i] = replace;
  398.        }
  399.    }
  400.    return replace;
  401. }
  402.  
  403. stock GetPlayerIDFromName(playername[])
  404. {
  405.     for(new i = 0; i < MAX_PLAYERS; i++)
  406.     {
  407.         if(IsPlayerConnected(i))
  408.         {
  409.             new playername2[MAX_PLAYER_NAME];
  410.             GetPlayerName(i, playername2, sizeof(playername2));
  411.             if(strcmp(playername2, playername, true, strlen(playername)) == 0)
  412.             {
  413.                 return i;
  414.             }
  415.         }
  416.     }
  417.     return 65535;
  418. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement