discord.inc 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #include <socket>
  2. #define SOCKET_IP "0.0.0.0"
  3. #define SOCKET_PORT 5000
  4. #define MAX_CONNECTIONS 1
  5. new Socket:g_socket;
  6. new bool:g_alive;
  7. static discord_connect() {
  8. g_socket = socket_create(TCP);
  9. socket_set_max_connections(g_socket, MAX_CONNECTIONS);
  10. socket_connect(g_socket, SOCKET_IP, SOCKET_PORT);
  11. }
  12. stock Discord_GetTimeString() {
  13. new string[10];
  14. new h, m, s;
  15. gettime(h, m, s);
  16. h = FixHour(h);
  17. format(string, sizeof string, "%d:%d:%d", h, m, s);
  18. return string;
  19. }
  20. Hook:discord_OnGameModeInit() {
  21. printf("connecting to discord...");
  22. discord_connect();
  23. return 1;
  24. }
  25. Hook:discord_OnGameModeExit() {
  26. if(g_alive) socket_destroy(g_socket);
  27. return 1;
  28. }
  29. CMD:rediscord(playerid, params[]) {
  30. if(PlayerInfo[playerid][pDev] > 2) {
  31. if(!g_alive) {
  32. discord_connect();
  33. }
  34. }
  35. return;
  36. }
  37. public onSocketAnswer(Socket:id, data[], data_len) {
  38. if(id == g_socket) {
  39. print(data);
  40. if(strcmp(data, "!AMSG!", true, 6) == 0) {
  41. print("entering AMSG recieved");
  42. new msgtype[7], author[15], msg[128], string[144];
  43. if(!sscanf(data, "p<&>s[7]s[15]s[128]", msgtype, author, msg)) { //not a blank msg
  44. printf("msgtype: %s, author: %s, msg: %s", msgtype, author, msg);
  45. format(string, sizeof(string), "** [Discord] %s: %s **", author, msg);
  46. SendAdminChatMessage(0xFEB918FF, string);
  47. }
  48. }
  49. else if(strcmp(data, "!ADMINS!", true) == 0) {
  50. new string[200];
  51. format(string, sizeof string, "!ADMINS!!MSG!");
  52. new bool:first = true;
  53. for(new i; i < GetPlayerPoolSize()+1; i++) {
  54. if(PlayerInfo[i][pAdmin] > 0) {
  55. if(first == true) {
  56. format(string, sizeof(string), "%s%s (%d)", string, PlayerICName(i), PlayerInfo[i][pAdmin]);
  57. first = false;
  58. }
  59. else {
  60. format(string, sizeof string, "%s, %s (%d)", string, PlayerICName(i), PlayerInfo[i][pAdmin]);
  61. }
  62. }
  63. }
  64. format(string, sizeof string, "%s!MSG!", string);
  65. socket_send(g_socket, string, strlen(string));
  66. }
  67. else if(strcmp(data, "!SERVERTIME!", true) == 0) {
  68. new string[60];
  69. format(string, sizeof string, "!SERVERTIME!!MSG!%s!MSG!", Discord_GetTimeString());
  70. socket_send(g_socket, string, strlen(string));
  71. }
  72. else if(strcmp(data, "!GMX!", true) == 0) {
  73. #if DEVMODE
  74. SaveChars();
  75. new string[100];
  76. format(string, sizeof string, "!ANN!!MSG!I have restarted the server for you, boss.!MSG!");
  77. socket_send(g_socket, string, strlen(string));
  78. SendRconCommand("gmx");
  79. #else
  80. new string[100];
  81. format(string, sizeof(string), "!ANN!!MSG!Faggot, the server isn't in development mode.!MSG!");
  82. socket_send(g_socket, string, strlen(string));
  83. #endif
  84. }
  85. }
  86. return 1;
  87. }
  88. public onSocketClose(Socket:id) {
  89. g_alive = false;
  90. return 1;
  91. }
  92. #include "inc\discord\discord_cmds.inc"