obergamler

myFriendlist

Jul 18th, 2014
342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 10.57 KB | None | 0 0
  1. #include <a_http>
  2.  
  3. //################  EINSTELLUNGEN  ######################
  4. #define MAX_MYFL_FRIENDS    10          //Maximale Freunde die ein User haben kann
  5. #define MYFL_HAUPTBEFEHL    "/fl"       //Der Befehl um die Freundschaftsliste zu öffnen
  6. //################  DIALOGE  ############################
  7. #define MYFL_D_F 9900
  8. #define MYFL_D_FO 9901
  9. #define MYFL_D_FADD 9902
  10. //#######################################################
  11. #define MYFL_VERSION "0.5"
  12. #define table_fl "friendlist"
  13. #define list_name "name"
  14. #define list_friend "friend"
  15.  
  16. new myfl_temp[MAX_PLAYERS][MAX_MYFL_FRIENDS][MAX_PLAYER_NAME];
  17. new myfl_tempsel[MAX_PLAYERS][MAX_PLAYER_NAME];
  18.  
  19. public OnGameModeInit()
  20. {
  21.     print("\n");
  22.     print("**myFriendlist** wird initialisiert!\n(c) by obergamler / GrumpyCat  (siehe: sa-mp.de)");
  23.     HTTP(0,HTTP_GET,"obergamler.square7.ch/friendversion.txt","","myFriendlist_UpdateChecker");
  24.     print("\n");
  25.     return CallLocalFunction("myfl_OnGameModeInit", "");
  26. }
  27.  
  28. #if defined _ALS_OnGameModeInit
  29.     #undef OnGameModeInit
  30. #else
  31.     #define _ALS_OnGameModeInit
  32. #endif
  33. #define OnGameModeInit myfl_OnGameModeInit
  34. forward myfl_OnGameModeInit();
  35.  
  36. forward myFriendlist_UpdateChecker(index, response_code, data[]);
  37. public myFriendlist_UpdateChecker(index, response_code, data[])
  38. {
  39.     if(response_code!=200)return 1;
  40.     if(strcmp(data,MYFL_VERSION,false))
  41.     {
  42.         printf("[myFriendlist] ACHTUNG: Sie verwenden eine veraltete Version von myFriendlist.\nIhre Version: %s. Aktuelle Version: %s",MYFL_VERSION,data);
  43.     }
  44.     return 1;
  45. }
  46.  
  47. public OnPlayerConnect(playerid)
  48. {
  49.     new Query[128],Name[MAX_PLAYER_NAME],friend[MAX_PLAYER_NAME];
  50.     GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
  51.     mysql_real_escape_string(Name, Name);
  52.     format(Query, sizeof(Query), "SELECT * FROM `%s` WHERE `%s` = '%s'", table_fl, list_friend, Name);
  53.     mysql_query(Query);
  54.     mysql_store_result();
  55.     new data[526];
  56.     while (mysql_fetch_row(data))
  57.     {
  58.         mysql_fetch_field_row(friend,list_name);
  59.         new str[128];
  60.         format(str,sizeof(str),"[Freund] %s hat den Server betreten",Name);
  61.         SendClientMessage(myfl_GetPlayerID(friend),0x00AFFFFF,str);
  62.     }
  63.     mysql_free_result();
  64.     return CallLocalFunction("OnPlayerConnect", "i",playerid);
  65. }
  66.  
  67. #if defined _ALS_OnPlayerConnect
  68.     #undef OnPlayerConnect
  69. #else
  70.     #define _ALS_OnPlayerConnect
  71. #endif
  72. #define OnPlayerConnect myfl_OnPlayerConnect
  73. forward myfl_OnPlayerConnect(playerid);
  74.  
  75. public OnPlayerDisconnect(playerid, reason)
  76. {
  77.     new Query[128],Name[MAX_PLAYER_NAME],friend[MAX_PLAYER_NAME];
  78.     GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
  79.     mysql_real_escape_string(Name, Name);
  80.     format(Query, sizeof(Query), "SELECT * FROM `%s` WHERE `%s` = '%s'", table_fl, list_friend, Name);
  81.     mysql_query(Query);
  82.     mysql_store_result();
  83.     new data[526];
  84.     while (mysql_fetch_row(data))
  85.     {
  86.         mysql_fetch_field_row(friend,list_name);
  87.         new str[128];
  88.         format(str,sizeof(str),"[Freund] %s hat den Server verlassen",Name);
  89.         SendClientMessage(myfl_GetPlayerID(friend),0x00AFFFFF,str);
  90.     }
  91.     mysql_free_result();
  92.     return CallLocalFunction("OnPlayerDisconnect", "ii",playerid,reason);
  93. }
  94.  
  95. #if defined _ALS_OnPlayerDisconnect
  96.     #undef OnPlayerDisconnect
  97. #else
  98.     #define _ALS_OnPlayerDisconnect
  99. #endif
  100. #define OnPlayerDisconnect myfl_OnPlayerDisconnect
  101. forward myfl_OnPlayerDisconnect(playerid,reason);
  102.  
  103. public OnPlayerCommandText(playerid, cmdtext[])
  104. {
  105.     if (strcmp(MYFL_HAUPTBEFEHL, cmdtext, true, 10) == 0)
  106.     {
  107.         for(new i=0;i<MAX_MYFL_FRIENDS;i++)
  108.         {
  109.             strdel(myfl_temp[playerid][i],0,strlen(myfl_temp[playerid][i]));
  110.         }
  111.         strdel(myfl_tempsel[playerid],0,strlen(myfl_tempsel[playerid]));
  112.         new str[2480];     
  113.         new Query[128],Name[MAX_PLAYER_NAME];
  114.         GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
  115.         mysql_real_escape_string(Name, Name);
  116.         format(Query, sizeof(Query), "SELECT * FROM `%s` WHERE `%s` = '%s'", table_fl, list_name, Name);
  117.         mysql_query(Query);
  118.         mysql_store_result();
  119.         new row=0;
  120.         new data[526];
  121.         while (mysql_fetch_row(data))
  122.         {
  123.             mysql_fetch_field_row(myfl_temp[playerid][row],list_friend);
  124.             new status[20];
  125.             if(myfl_IsPlayerNameConnected(myfl_temp[playerid][row])==1)format(status,sizeof(status),"{00FF00}Online");
  126.             else format(status,sizeof(status),"{B4B4B4}Offline");
  127.             if(strlen(myfl_temp[playerid][row])>13)format(str,sizeof(str),"%s%s\t\t%s\n",str,myfl_temp[playerid][row],status);
  128.             else if(strlen(myfl_temp[playerid][row])>6) format(str,sizeof(str),"%s%s\t\t\t%s\n",str,myfl_temp[playerid][row],status);
  129.             else format(str,sizeof(str),"%s%s\t\t\t\t%s\n",str,myfl_temp[playerid][row],status);
  130.             row++;
  131.         }
  132.         mysql_free_result();
  133.         if(row!=0)
  134.         {
  135.             new query1[500];
  136.             format(query1,sizeof(query1),"SELECT * FROM `%s` WHERE `%s` = '%s'",table_fl,list_name,Name);
  137.             mysql_query(query1);
  138.             mysql_store_result();
  139.             new count=mysql_num_rows();
  140.             mysql_free_result();
  141.             if(count<MAX_MYFL_FRIENDS)
  142.             {
  143.                 format(str,sizeof(str),"%s->{00C3FF} Freund hinzufügen\n",str);
  144.                 format(myfl_temp[playerid][row],MAX_PLAYER_NAME,"# #");
  145.             }
  146.         }
  147.         if(row==0)ShowPlayerDialog(playerid,MYFL_D_FADD,DIALOG_STYLE_INPUT,"Freund hinzufügen","{FF0000}Du hast momentan keine Freunde in deiner Liste!\n\n{FFFFFF}Bitte gib nun den Namen des Users an,\nden du als Freund hinzufügen möchtest:","Ok","Abbrechen");
  148.         else ShowPlayerDialog(playerid,MYFL_D_F,DIALOG_STYLE_LIST,"Freundesliste",str,"Optionen","Schliessen");
  149.         return 1;
  150.     }
  151.     return CallLocalFunction("OnPlayerCommandText", "is",playerid,cmdtext);
  152. }
  153.  
  154. #if defined _ALS_OnPlayerCommandText
  155.     #undef OnPlayerCommandText
  156. #else
  157.     #define _ALS_OnPlayerCommandText
  158. #endif
  159. #define OnPlayerCommandText myfl_OnPlayerCommandText
  160. forward myfl_OnPlayerCommandText(playerid, cmdtext[]);
  161.  
  162. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  163. {
  164.     switch(dialogid)
  165.     {
  166.         case MYFL_D_F:
  167.         {
  168.             if(!response)return 1;
  169.             if(!strcmp(myfl_temp[playerid][listitem],"# #"))
  170.             {
  171.                 ShowPlayerDialog(playerid,MYFL_D_FADD,DIALOG_STYLE_INPUT,"Freund hinzufügen","{FFFFFF}Bitte gib nun den Namen des Users an,\nden du als Freund hinzufügen möchtest:","Ok","Abbrechen");
  172.                 return 1;
  173.             }
  174.             //Optionen
  175.             format(myfl_tempsel[playerid],MAX_PLAYER_NAME,"%s",myfl_temp[playerid][listitem]);
  176.             new caption[128];
  177.             format(caption,sizeof(caption),"Optionen für {00CDFF}%s",myfl_temp[playerid][listitem]);
  178.             ShowPlayerDialog(playerid,MYFL_D_FO,DIALOG_STYLE_LIST,caption,"{FF0000}Löschen","Ok","Abbrechen");
  179.         }
  180.         case MYFL_D_FADD:
  181.         {
  182.             if(!response)return 1;
  183.             if(strlen(inputtext)>20||strlen(inputtext)==0)return ShowPlayerDialog(playerid,MYFL_D_FADD,DIALOG_STYLE_INPUT,"Freund hinzufügen","{FF0000}Ungültige Eingabe!\n\n{FFFFFF}Bitte gib nun den Namen des Users an,\nden du als Freund hinzufügen möchtest:","Ok","Abbrechen");
  184.             new name[MAX_PLAYER_NAME];
  185.             GetPlayerName(playerid,name,sizeof(name));
  186.             if(!strcmp(inputtext,name))return ShowPlayerDialog(playerid,MYFL_D_FADD,DIALOG_STYLE_INPUT,"Freund hinzufügen","{FF0000}Du kannst dich nicht selbst hinzufügen!\n\n{FFFFFF}Bitte gib nun den Namen des Users an,\nden du als Freund hinzufügen möchtest:","Ok","Abbrechen");
  187.             if(!myfl_IsPlayerNameConnected(inputtext))return ShowPlayerDialog(playerid,MYFL_D_FADD,DIALOG_STYLE_INPUT,"Freund hinzufügen","{FF0000}Dieser Spieler existiert nicht oder ist\nnicht online!\n\n{FFFFFF}Bitte gib nun den Namen des Users an,\nden du als Freund hinzufügen möchtest:","Ok","Abbrechen");
  188.             new query1[500],query[500];
  189.             mysql_real_escape_string(name,name);
  190.             mysql_real_escape_string(inputtext,inputtext);
  191.             format(query1,sizeof(query1),"SELECT * FROM `%s` WHERE `%s` = '%s' AND `%s` = '%s'",table_fl,list_name,name,list_friend,inputtext);
  192.             mysql_query(query1);
  193.             mysql_store_result();
  194.             new count=mysql_num_rows();
  195.             mysql_free_result();
  196.             if(count!=0)return ShowPlayerDialog(playerid,MYFL_D_FADD,DIALOG_STYLE_INPUT,"Freund hinzufügen","{FF0000}Dieser Spieler ist bereits in deiner Freundschaftsliste!\n\n{FFFFFF}Bitte gib nun den Namen des Users an,\nden du als Freund hinzufügen möchtest:","Ok","Abbrechen");
  197.             format(query,sizeof(query),"INSERT INTO `%s` (`%s` ,`%s`) VALUES ('%s', '%s')",table_fl,list_name,list_friend,name,inputtext);
  198.             mysql_query(query);
  199.             SendClientMessage(playerid,0x23FF00FF,"Du hast einen neuen Freund hinzugefügt.");
  200.         }
  201.         case MYFL_D_FO:
  202.         {
  203.             if(!response)return 1;
  204.             if(listitem==0)
  205.             {
  206.                 new query[500],name[MAX_PLAYER_NAME],friend[MAX_PLAYER_NAME];
  207.                 GetPlayerName(playerid,name,MAX_PLAYER_NAME);
  208.                 mysql_real_escape_string(name,name);
  209.                 mysql_real_escape_string(myfl_tempsel[playerid],friend);
  210.                 format(query,sizeof(query),"DELETE FROM `%s` WHERE `%s` = '%s' AND `%s` = '%s'",table_fl,list_name,name,list_friend,friend);
  211.                 mysql_query(query);
  212.                 SendClientMessage(playerid,0xFF1E00FF,"Freund gelöscht!");
  213.             }
  214.         }
  215.     }
  216.     return CallLocalFunction("myfl_OnDialogResponse", "iiiis", playerid, dialogid, response, listitem, inputtext);
  217. }
  218.  
  219. #if defined _ALS_OnDialogResponse
  220.     #undef OnDialogResponse
  221. #else
  222.     #define _ALS_OnDialogResponse
  223. #endif
  224. #define OnDialogResponse myfl_OnDialogResponse
  225. forward myfl_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
  226.  
  227. stock myfl_GetPlayerID(playername[])
  228. {
  229.     for(new playerid=1;playerid<MAX_PLAYERS;playerid++)
  230.     {
  231.         if(!IsPlayerConnected(playerid))continue;
  232.         new name[MAX_PLAYER_NAME];
  233.         GetPlayerName(playerid,name,sizeof(name));
  234.         if(!strcmp(name,playername))return playerid;
  235.     }
  236.     return -1;
  237. }
  238.  
  239. stock myfl_IsPlayerNameConnected(name[])
  240. {
  241.     for(new playerid=0;playerid<MAX_PLAYERS;playerid++)
  242.     {
  243.         if(!IsPlayerConnected(playerid))continue;
  244.         new name2[MAX_PLAYER_NAME];
  245.         GetPlayerName(playerid,name2,MAX_PLAYER_NAME);
  246.         if(!strcmp(name,name2))return 1;
  247.     }
  248.     return 0;
  249. }
  250.  
  251. stock myfl_mysql_GetInt(Table[], Field[], Where[], Is[])
  252. {
  253.     new query[128];
  254.     mysql_real_escape_string(Table, Table);
  255.     mysql_real_escape_string(Field, Field);
  256.     mysql_real_escape_string(Where, Where);
  257.     mysql_real_escape_string(Is, Is);
  258.     format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
  259.     mysql_query(query);
  260.     mysql_store_result();
  261.     new sqlint = mysql_fetch_int();
  262.     mysql_free_result();
  263.     return sqlint;
  264. }
  265.  
  266. stock myfl_mysql_GetString(Table[], Field[], Where[], Is[])
  267. {
  268.     new query[128], Get[128];
  269.     mysql_real_escape_string(Table, Table);
  270.     mysql_real_escape_string(Field, Field);
  271.     mysql_real_escape_string(Where, Where);
  272.     mysql_real_escape_string(Is, Is);
  273.     format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
  274.     mysql_query(query);
  275.     mysql_store_result();
  276.     mysql_fetch_row(Get);
  277.     mysql_free_result();
  278.     return Get;
  279. }
Advertisement
Add Comment
Please, Sign In to add comment