Advertisement
Guest User

messenger system

a guest
Aug 13th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 11.76 KB | None | 0 0
  1. #include <a_samp>
  2. #include <a_mysql>
  3. #include <zcmd>
  4. #include <sscanf2>
  5.  
  6. #define sql_host    "localhost"
  7. #define sql_user    "root"
  8. #define sql_data    "serveris"
  9. #define sql_pass    ""
  10.  
  11. #define DIALOG_MESSENGER        0
  12. #define DIALOG_MESSENGER1       1
  13. #define DIALOG_MESSENGER2       2
  14. #define DIALOG_MESSENGER3       3
  15. #define DIALOG_MESSENGER4       4
  16. #define DIALOG_MESSENGER5       5
  17. #define DIALOG_MESSENGER6       6
  18.  
  19. #define RANDOM(%0,%1) (random(%1-(%0))+%0)
  20. #define isnull(%1) ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
  21.  
  22. enum _playerdata
  23. {
  24.     bool:havephone,
  25.     bool:inmessengergroup,
  26.     messengergroupid,
  27.     bool:invitedingroup,
  28.     invitedgroupid
  29. }
  30.  
  31. new playerdata[MAX_PLAYERS][_playerdata];
  32.  
  33. main()
  34. {
  35.     print("on");
  36. }
  37.  
  38. public OnGameModeInit()
  39. {
  40.     SetGameModeText("0.0.1");
  41.     AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  42.  
  43.     mysql_debug(true);
  44.     mysql_connect(sql_host, sql_user, sql_data, sql_pass);
  45.  
  46.     if(mysql_ping() > 0) print("connected to mysql database!");
  47.     else  print("cant connect to mysql database!");
  48.  
  49.     return 1;
  50. }
  51.  
  52. public OnGameModeExit()
  53. {
  54.     return 1;
  55. }
  56.  
  57. public OnPlayerRequestClass(playerid, classid)
  58. {
  59.  
  60.     return 1;
  61. }
  62.  
  63. public OnPlayerConnect(playerid)
  64. {
  65.     return 1;
  66. }
  67.  
  68. public OnPlayerDisconnect(playerid, reason)
  69. {
  70.     return 1;
  71. }
  72.  
  73. public OnPlayerSpawn(playerid)
  74. {
  75.     loadplayer(playerid);
  76.     return 1;
  77. }
  78.  
  79. public OnPlayerDeath(playerid, killerid, reason)
  80. {
  81.     return 1;
  82. }
  83.  
  84. public OnVehicleSpawn(vehicleid)
  85. {
  86.     return 1;
  87. }
  88.  
  89. public OnVehicleDeath(vehicleid, killerid)
  90. {
  91.     return 1;
  92. }
  93.  
  94. public OnPlayerText(playerid, text[])
  95. {
  96.     return 1;
  97. }
  98.  
  99. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  100. {
  101.     return 1;
  102. }
  103.  
  104. public OnPlayerExitVehicle(playerid, vehicleid)
  105. {
  106.     return 1;
  107. }
  108.  
  109. public OnPlayerStateChange(playerid, newstate, oldstate)
  110. {
  111.     return 1;
  112. }
  113.  
  114. public OnPlayerEnterCheckpoint(playerid)
  115. {
  116.     return 1;
  117. }
  118.  
  119. public OnPlayerLeaveCheckpoint(playerid)
  120. {
  121.     return 1;
  122. }
  123.  
  124. public OnPlayerEnterRaceCheckpoint(playerid)
  125. {
  126.     return 1;
  127. }
  128.  
  129. public OnPlayerLeaveRaceCheckpoint(playerid)
  130. {
  131.     return 1;
  132. }
  133.  
  134. public OnRconCommand(cmd[])
  135. {
  136.     return 1;
  137. }
  138.  
  139. public OnPlayerRequestSpawn(playerid)
  140. {
  141.     return 1;
  142. }
  143.  
  144. public OnObjectMoved(objectid)
  145. {
  146.     return 1;
  147. }
  148.  
  149. public OnPlayerObjectMoved(playerid, objectid)
  150. {
  151.     return 1;
  152. }
  153.  
  154. public OnPlayerPickUpPickup(playerid, pickupid)
  155. {
  156.     return 1;
  157. }
  158.  
  159. public OnVehicleMod(playerid, vehicleid, componentid)
  160. {
  161.     return 1;
  162. }
  163.  
  164. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  165. {
  166.     return 1;
  167. }
  168.  
  169. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  170. {
  171.     return 1;
  172. }
  173.  
  174. public OnPlayerSelectedMenuRow(playerid, row)
  175. {
  176.     return 1;
  177. }
  178.  
  179. public OnPlayerExitedMenu(playerid)
  180. {
  181.     return 1;
  182. }
  183.  
  184. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  185. {
  186.     return 1;
  187. }
  188.  
  189. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  190. {
  191.     return 1;
  192. }
  193.  
  194. public OnRconLoginAttempt(ip[], password[], success)
  195. {
  196.     return 1;
  197. }
  198.  
  199. public OnPlayerUpdate(playerid)
  200. {
  201.     return 1;
  202. }
  203.  
  204. public OnPlayerStreamIn(playerid, forplayerid)
  205. {
  206.     return 1;
  207. }
  208.  
  209. public OnPlayerStreamOut(playerid, forplayerid)
  210. {
  211.     return 1;
  212. }
  213.  
  214. public OnVehicleStreamIn(vehicleid, forplayerid)
  215. {
  216.     return 1;
  217. }
  218.  
  219. public OnVehicleStreamOut(vehicleid, forplayerid)
  220. {
  221.     return 1;
  222. }
  223.  
  224. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  225. {
  226.     new query[128];
  227.  
  228.     switch(dialogid)
  229.     {
  230.         case DIALOG_MESSENGER:
  231.         {
  232.             if(response)
  233.             {
  234.                 switch(listitem)
  235.                 {
  236.                     case 0: messengergui(playerid, 2);
  237.                     case 1: messengergui(playerid, 3);
  238.                 }
  239.             }
  240.         }
  241.         case DIALOG_MESSENGER1:
  242.         {
  243.             if(response)
  244.             {
  245.                 switch(listitem)
  246.                 {
  247.                     case 0, 1: messengergui(playerid, 1);
  248.                     case 2: messengergui(playerid, 4);
  249.                     case 3: messengergui(playerid, 7);
  250.                     case 4: messengergui(playerid, 6);
  251.                     case 5: messengergui(playerid, 5);
  252.                 }
  253.             }
  254.         }
  255.         case DIALOG_MESSENGER2:
  256.         {
  257.             if(response)
  258.             {
  259.                 if(isnull(inputtext))
  260.                 {
  261.                     SendClientMessage(playerid, -1, "• Grupes pavadinimas turi but sudarytas is raidziu arba skaiciu!");
  262.                     messengergui(playerid, 2);
  263.                     return 1;
  264.                 }
  265.  
  266.                 playerdata[playerid][messengergroupid] = RANDOM(1000, 9999);
  267.                 playerdata[playerid][inmessengergroup] = true;
  268.  
  269.                 format(query, sizeof(query), "INSERT INTO `messenger_groups` (msngr_id, name, owner) VALUES ('%i', '%s', '%s')", playerdata[playerid][messengergroupid], inputtext, playername(playerid));
  270.                 mysql_query(query);
  271.  
  272.                 format(query, sizeof(query), "UPDATE `players` SET messengergroupid = '%i', inmessengergroup = '%i' WHERE name = '%s'", playerdata[playerid][messengergroupid], playerdata[playerid][inmessengergroup], playername(playerid));
  273.                 mysql_query(query);
  274.  
  275.                 mysql_free_result();
  276.  
  277.                 messengergui(playerid, 1);
  278.  
  279.                 printf("CREATED MESSENGER GROUP %s[%i] OWNER %s", inputtext, playerdata[playerid][messengergroupid], playername(playerid));
  280.  
  281.             }
  282.             else messengergui(playerid, 0);
  283.         }
  284.         case DIALOG_MESSENGER3:
  285.         {
  286.             if(response)
  287.             {
  288.                 if(isnull(inputtext))
  289.                 {
  290.                     SendClientMessage(playerid, -1, "• Grupes pavadinimas turi but sudarytas is raidziu arba skaiciu!");
  291.                     messengergui(playerid, 4);
  292.                     return 1;
  293.                 }
  294.  
  295.                 format(query, sizeof(query), "UPDATE `messenger_groups` SET name = '%s' WHERE msngr_id = '%i'", inputtext, playerdata[playerid][messengergroupid]);
  296.                 mysql_query(query);
  297.  
  298.                 messengergui(playerid, 1);
  299.             }
  300.             else messengergui(playerid, 1);
  301.         }
  302.         case DIALOG_MESSENGER4:
  303.         {
  304.             if(response)
  305.             {
  306.                 format(query, sizeof(query), "DELETE FROM `messenger_groups` WHERE msngr_id = '%i'", playerdata[playerid][messengergroupid]);
  307.                 mysql_query(query);
  308.                 mysql_free_result();
  309.  
  310.                 format(query, sizeof(query), "UPDATE `players` SET messengergroupid = 0, inmessengergroup = 0 WHERE name = '%s'", playername(playerid));
  311.                 mysql_query(query);
  312.                 mysql_free_result();
  313.  
  314.                 playerdata[playerid][messengergroupid] = 0;
  315.                 playerdata[playerid][inmessengergroup] = false;
  316.  
  317.                 SendClientMessage(playerid, -1, "• Istrynei Messenger grupe!");
  318.                 messengergui(playerid, 0);
  319.  
  320.             }
  321.             else messengergui(playerid, 1);
  322.         }
  323.         case DIALOG_MESSENGER5:
  324.         {
  325.             if(response)
  326.             {
  327.                 format(query, sizeof(query), "UPDATE `players` SET messengergroupid = 0, inmessengergroup = 0 WHERE name = '%s'", playername(playerid));
  328.                 mysql_query(query);
  329.                 mysql_free_result();
  330.  
  331.                 playerdata[playerid][messengergroupid] = 0;
  332.                 playerdata[playerid][inmessengergroup] = false;
  333.  
  334.                 SendClientMessage(playerid, -1, "• Isejai is Messenger grupes!");
  335.                 messengergui(playerid, 0);
  336.             }
  337.             else messengergui(playerid, 1);
  338.         }
  339.     }
  340.     return 1;
  341. }
  342.  
  343. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  344. {
  345.     return 1;
  346. }
  347.  
  348. // functions
  349. stock playername(playerid)
  350. {
  351.     new name[MAX_PLAYER_NAME];
  352.     GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  353.     return name;
  354. }
  355.  
  356. stock loadplayer(playerid)
  357. {
  358.     new query[128], fetch[16];
  359.  
  360.     format(query, sizeof(query), "SELECT * FROM `players` WHERE name = '%s'", playername(playerid));
  361.     mysql_query(query);
  362.     mysql_store_result();
  363.  
  364.     mysql_retrieve_row();
  365.  
  366.     mysql_fetch_field_row(fetch, "havephone");             
  367.     playerdata[playerid][havephone] = !!strval(fetch);
  368.  
  369.     mysql_fetch_field_row(fetch, "inmessengergroup");      
  370.     playerdata[playerid][inmessengergroup] = !!strval(fetch);
  371.  
  372.     mysql_fetch_field_row(fetch, "messengergroupid");
  373.     playerdata[playerid][messengergroupid] = strval(fetch);
  374.  
  375.     printf("loaded %s", playername(playerid));
  376. }
  377.  
  378. stock messengergui(playerid, gui_id)
  379. {
  380.     new info[200], resultline[200], name[50], owner[24], total;
  381.  
  382.     switch(gui_id)
  383.     {
  384.         case 0: ShowPlayerDialog(playerid, DIALOG_MESSENGER, DIALOG_STYLE_LIST, "{ffffff}Messenger:: Grupes", "- Sukurti nauja grupe\n- Informacija apie Messenger grupes", "o", "x");
  385.         case 1:
  386.         {
  387.  
  388.             format(info, sizeof(info), "SELECT `name`, `owner` FROM `messenger_groups` WHERE msngr_id = %i", playerdata[playerid][messengergroupid]);
  389.             mysql_query(info);
  390.             mysql_store_result();
  391.  
  392.             if(mysql_fetch_row_format(resultline)) sscanf(resultline,"p<|>s[50]s[24]", name, owner);
  393.  
  394.             if(!strcmp(owner, playername(playerid))) owner = "Savininkas";
  395.             else owner = "Narys";
  396.  
  397.             format(info, sizeof(info), "SELECT COUNT(messengergroupid) FROM players WHERE messengergroupid = %i", playerdata[playerid][messengergroupid]);
  398.             mysql_query(info);
  399.             total = mysql_num_rows();
  400.             mysql_store_result();
  401.  
  402.             format(info, sizeof(info), "{ffffff}Pavadinimas\t{ffffff}Pasnekovu skaicius\t{ffffff}Statusas grupeje\n{ffffff}%s\t%i\t%s\n \n- Keisti grupes pavadinima\n- Perziureti grupes narius\n- Iseiti is grupes\n- Istrinti grupe", name, total, owner);
  403.  
  404.             ShowPlayerDialog(playerid, DIALOG_MESSENGER1, DIALOG_STYLE_TABLIST_HEADERS, "{ffffff}Messenger:: Grupes", info, "o", "x");
  405.         }
  406.         case 2: ShowPlayerDialog(playerid, DIALOG_MESSENGER2, DIALOG_STYLE_INPUT, "{ffffff}Messenger:: Grupes", "{ffffff}Noredamas sukurti nauja Messenger grupe, pirmiausiai turi sugalvoti jos pavadinima:", "o", "x");
  407.         case 3:
  408.         {
  409.             if(!playerdata[playerid][invitedingroup] && playerdata[playerid][invitedgroupid] < 999)
  410.             {
  411.                 SendClientMessage(playerid, -1, "• Tu neesi pakviestas i jokia Messenger grupe!");
  412.                 messengergui(playerid, 0);
  413.             }
  414.             else
  415.             {
  416.                 // INFORMACIJA APIE MESSENGERIO GRUPES
  417.             }
  418.         }
  419.         case 4: ShowPlayerDialog(playerid, DIALOG_MESSENGER3, DIALOG_STYLE_INPUT, "{ffffff}Messenger:: Grupes", "{ffffff}Irasykite grupes nauja pavadinima:", "o", "x");
  420.         case 5: ShowPlayerDialog(playerid, DIALOG_MESSENGER4, DIALOG_STYLE_MSGBOX, "{ffffff}Messenger:: Grupes", "{ffffff}Ar tikrai norite istrinti grupe?", "o", "x");
  421.         case 6: ShowPlayerDialog(playerid, DIALOG_MESSENGER5, DIALOG_STYLE_MSGBOX, "{ffffff}Messenger:: Grupes", "{ffffff}Ar tikrai norite iseiti is grupes?", "o", "x");\
  422.         case 7:
  423.         {
  424.             for(new i = 0, size = GetPlayerPoolSize(); i <= size; i ++)
  425.             {
  426.                 if(playerdata[playerid][messengergroupid] == playerdata[i][messengergroupid])
  427.                 {
  428.                     format(info, sizeof(info), "%s\n", playername(i));
  429.                 }
  430.             }
  431.  
  432.             ShowPlayerDialog(playerid, DIALOG_MESSENGER6, DIALOG_STYLE_LIST, "{ffffff}Messenger:: Grupes", info, "o", "x");
  433.         }
  434.     }
  435. }
  436.  
  437. stock SendMessageToMessengerGroup(playerid, GroupID, text[])
  438. {
  439.     new msg[128];
  440.  
  441.     for(new i = 0, size = GetPlayerPoolSize(); i <= size; i ++)
  442.     {
  443.         if(playerdata[i][messengergroupid] == GroupID)
  444.         {
  445.             format(msg, sizeof(msg), "{ffffff} [MESSENGER GRUPE] %s: %s", playername(playerid), text);
  446.             SendClientMessage(i, -1, msg);
  447.         }
  448.     }
  449.     return 1;
  450. }
  451.  
  452. // cmommands
  453. cmd(messenger, playerid, params[])
  454. {
  455.     if(playerdata[playerid][havephone] && playerdata[playerid][inmessengergroup] && playerdata[playerid][messengergroupid] > 999)
  456.         messengergui(playerid, 1);
  457.     else
  458.         messengergui(playerid, 0);
  459.  
  460.     return 1;
  461. }
  462.  
  463. cmd(invitetogroup, playerid, params[])
  464. {
  465.     new id, query[128];
  466.  
  467.     if(sscanf(params, "u", id)) return SendClientMessage(playerid, -1, "• /invitetogroup [NAME]");
  468.     if(!playerdata[playerid][inmessengergroup] && playerdata[playerid][messengergroupid] < 999) return SendClientMessage(playerid, -1, "• Tu neesi jokioje grupeje!");
  469.  
  470.     playerdata[id][inmessengergroup] = true;
  471.     playerdata[id][messengergroupid] = playerdata[playerid][messengergroupid];
  472.  
  473.     format(query, sizeof(query), "UPDATE `players` SET inmessengergroup = '%i', messengergroupid = '%i'", playerdata[id][inmessengergroup], playerdata[id][messengergroupid]);
  474.     mysql_query(query);
  475.     mysql_free_result();
  476.  
  477.     SendClientMessage(playerid, -1, "• Jus esate pakviestas i grupe!");
  478.  
  479.     return 1;
  480. }
  481.  
  482. cmd(sendmessage, playerid, params[])
  483. {
  484.     if(isnull(params)) return SendClientMessage(playerid, -1, "/sendmessage [text]");
  485.     SendMessageToMessengerGroup(playerid, playerdata[playerid][messengergroupid], params);
  486.     return 1;
  487. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement