Advertisement
mssRawr

Buddy System by Rawr - Get Friends !

Sep 22nd, 2013
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 13.27 KB | None | 0 0
  1. ////////////////////////////////////////////////////////////////////////////////
  2. // Buddy System by Rawr
  3. //      Have fun! :)
  4. // Breadfish: http://forum.sa-mp.de/index.php?page=User&userID=27647
  5. // Skype: MrRawwwr
  6. ////////////////////////////////////////////////////////////////////////////////
  7. // Includes
  8. #include <a_samp>
  9. #include <zcmd>
  10. #include <banfix>
  11. ////////////////////////////////////////////////////////////////////////////////
  12. // Script Definierungen
  13. #pragma dynamic 55555
  14. //Maximale Anzahl an Freunden (nicht übertreiben (Name(24)*Maximale Anzahl))
  15. #define Max_Freunde 85
  16. //Dialog ID's
  17. #define DialogID 500
  18. enum
  19. {
  20.     friendMenu=DialogID+1,
  21.     addFriend=DialogID+2,
  22.     delFriend=DialogID+3,
  23.     sendMessage=DialogID+4,
  24.     sendMessageToAll=DialogID+5,
  25.     friendsOnline=DialogID+6
  26. }
  27. //Farben
  28. #define Blau    0x007DE0FF
  29. #define COLW    "{FFFFFF}"
  30. #define COLO    "{FF6A00}"
  31. #define COLR    "{FF0000}"
  32. #define COLG    "{00FF00}"
  33. ////////////////////////////////////////////////////////////////////////////////
  34. // Spieler Variablen
  35. new Name[MAX_PLAYERS][MAX_PLAYER_NAME+1],
  36.     Freund[MAX_PLAYERS][Max_Freunde],
  37.     ClickedPlayer[MAX_PLAYERS],
  38.     bool:Anfrage[MAX_PLAYERS],
  39.     Anfrager[MAX_PLAYERS],
  40.     FileFriendList[MAX_PLAYERS][250];
  41. ////////////////////////////////////////////////////////////////////////////////
  42. // OnFilterScriptInit
  43. public OnFilterScriptInit()
  44. {
  45.     print("\n====================================");
  46.     print("<-| [ Info ] Buddy System by Rawr");
  47.     print("<-| [ Info ] Erfolgreich geladen!");
  48.     print("====================================\n");
  49.     return 1;
  50. }
  51. ////////////////////////////////////////////////////////////////////////////////
  52. // OnFilterScriptExit
  53. public OnFilterScriptExit()
  54. {
  55.     print("\n====================================");
  56.     print("<-| [ Info ] Buddy System by Rawr");
  57.     print("<-| [ Info ] Erfolgreich beendet!");
  58.     print("====================================\n");
  59.     return 1;
  60. }
  61. ////////////////////////////////////////////////////////////////////////////////
  62. // OnPlayerConnect
  63. public OnPlayerConnect(playerid)
  64. {
  65.     GetPlayerName(playerid, Name[playerid],MAX_PLAYER_NAME);
  66.     Anfrage[playerid]=false,Anfrager[playerid]=-1,ClickedPlayer[playerid]=-1;
  67.     LoadFriends(playerid);
  68.     new string[85];
  69.     for(new a; a<Max_Freunde; a++)
  70.     {
  71.         if(Freund[playerid][a] != -1 && IsPlayerConnected(a))
  72.         {
  73.             format(string,sizeof(string),"[ Buddy System ]"COLO" %s "COLW"hat den Server betreten",Name[playerid]);
  74.             SendClientMessage(a,Blau,string);
  75.         }
  76.     }
  77.     return 1;
  78. }
  79. ////////////////////////////////////////////////////////////////////////////////
  80. // OnPlayerDisconnect
  81. public OnPlayerDisconnect(playerid, reason)
  82. {
  83.     SaveFriends(playerid);
  84.     new string[85];
  85.     for(new a; a<Max_Freunde; a++)
  86.     {
  87.         if(Freund[playerid][a] != -1 && IsPlayerConnected(a))
  88.         {
  89.             format(string,sizeof(string),"[ Buddy System ]"COLO" %s "COLW"hat den Server verlassen",Name[playerid]);
  90.             SendClientMessage(a,Blau,string);
  91.         }
  92.     }
  93.     return 1;
  94. }
  95. ////////////////////////////////////////////////////////////////////////////////
  96. // OnDialogResponse
  97. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  98. {
  99.     switch(dialogid)
  100.     {
  101.         case friendMenu:
  102.         {
  103.             if(!response)return 1;
  104.             new string[100];
  105.             switch(listitem)
  106.             {
  107.                 case 0:
  108.                 {
  109.                     format(string,sizeof(string),""COLW"Gebe hier die Naricht ein die\ndu an "COLO"%s"COLW" senden möchtest",Name[ClickedPlayer[playerid]]);
  110.                     ShowPlayerDialog(playerid, sendMessage,DIALOG_STYLE_INPUT,""COLO"Buddy System by Rawr",string,"Senden","Zurück");
  111.                 }
  112.                 case 1:
  113.                 {
  114.                     format(string,sizeof(string),""COLW"Möchtest du "COLO"%s"COLW" von der Freundesliste löschen?",Name[ClickedPlayer[playerid]]);
  115.                     ShowPlayerDialog(playerid, delFriend,DIALOG_STYLE_MSGBOX,""COLO"Buddy System by Rawr",string,"Löschen","Zurück");
  116.                 }
  117.                 case 2:
  118.                 {
  119.                     ShowPlayerDialog(playerid, sendMessageToAll,DIALOG_STYLE_INPUT,""COLO"Buddy System by Rawr",""COLW"Gebe hier die Naricht ein die du\nan alle Freunde senden möchtest","Senden","Zurück");
  120.                 }
  121.             }
  122.         }
  123.         case sendMessage:
  124.         {
  125.             new string[128];
  126.             if(!response)return ShowPlayerDialog(playerid,friendMenu,DIALOG_STYLE_LIST,""COLO"Buddy System by Rawr",""COLO"1 | "COLW"Narichten Senden\n"COLO"2 | "COLW"Freund Löschen\n"COLO"3 | "COLW"Naricht an alle Freunde","Weiter","Abbrechen");
  127.             if(!strlen(inputtext)||strlen(inputtext)<3)return ShowPlayerDialog(playerid, sendMessage,DIALOG_STYLE_INPUT,""COLO"Buddy System by Rawr",""COLR"Fehler"COLW"\nDie Naricht muss mindestens 3 Zeichen beinhalten!","Senden","Zurück");
  128.             format(string,sizeof(string),"[ Buddy System ]"COLW" Du hast eine neue Naricht von "COLO"%s",Name[playerid]);
  129.             SendClientMessage(ClickedPlayer[playerid],Blau,string);
  130.             format(string,sizeof(string),"[ Buddy System ]"COLW" %s",inputtext);
  131.             SendClientMessage(ClickedPlayer[playerid],Blau,string);
  132.         }
  133.         case delFriend:
  134.         {
  135.             if(!response)return ShowPlayerDialog(playerid,friendMenu,DIALOG_STYLE_LIST,""COLO"Buddy System by Rawr",""COLO"1 | "COLW"Narichten Senden\n"COLO"2 | "COLW"Freund Löschen\n"COLO"3 | "COLW"Naricht an alle Freunde","Weiter","Abbrechen");
  136.             new string[128];
  137.             for(new a; a<Max_Freunde; a++)
  138.             {
  139.                 if(Freund[playerid][a]==ClickedPlayer[playerid])
  140.                 {
  141.                     format(string, sizeof(string),"[ Buddy System ]"COLW" Du hast "COLO"%s"COLW" von deiner Freundesliste gelöscht!",Name[ClickedPlayer[playerid]]);
  142.                     SendClientMessage(playerid,Blau,string);
  143.                     Freund[playerid][a]=-1;
  144.                     return 1;
  145.                 }
  146.             }
  147.         }
  148.         case sendMessageToAll:
  149.         {
  150.             if(!response)return ShowPlayerDialog(playerid,friendMenu,DIALOG_STYLE_LIST,""COLO"Buddy System by Rawr",""COLO"1 | "COLW"Narichten Senden\n"COLO"2 | "COLW"Freund Löschen\n"COLO"3 | "COLW"Naricht an alle Freunde","Weiter","Abbrechen");
  151.             if(!response)return ShowPlayerDialog(playerid,friendMenu,DIALOG_STYLE_LIST,""COLO"Buddy System by Rawr",""COLO"1 | "COLW"Narichten Senden\n"COLO"2 | "COLW"Freund Löschen\n"COLO"3 | "COLW"Naricht an alle Freunde","Weiter","Abbrechen");
  152.             if(!strlen(inputtext)||strlen(inputtext)<3)return ShowPlayerDialog(playerid, sendMessageToAll,DIALOG_STYLE_INPUT,""COLO"Buddy System by Rawr",""COLR"Fehler"COLW"\nDie Naricht muss mindestens 3 Zeichen beinhalten!","Senden","Zurück");
  153.             new bool:gesendet,string[128];
  154.             for(new a; a<Max_Freunde; a++)
  155.             {
  156.                 if(Freund[playerid][a] != -1 && IsPlayerConnected(a))
  157.                 {
  158.                     gesendet=true;
  159.                     format(string,sizeof(string),"[ Buddy System ]"COLW" Du hast eine neue Naricht von "COLO"%s",Name[playerid]);
  160.                     SendClientMessage(a,Blau,string);
  161.                     format(string,sizeof(string),"[ Buddy System ]"COLW" %s",inputtext);
  162.                     SendClientMessage(a,Blau,string);
  163.                 }
  164.             }
  165.             if(gesendet==true)
  166.             {
  167.                 SendClientMessage(playerid,Blau,"[ Buddy System ]"COLW" Deine Naricht wurde "COLG"erfolgreich"COLW" an alle Freunde gesendet!");
  168.             }
  169.             else SendClientMessage(playerid,Blau,"[ Buddy System ]"COLW" Es seind derzeit "COLR"keine"COLW" Freunde online!");
  170.         }
  171.         case addFriend:
  172.         {
  173.             new string[128];
  174.             if(!response)return 1;
  175.             format(string,sizeof(string),"[ Buddy System ]"COLW" Du hast "COLO"%s"COLW" eine Freundschaftsanfrage geschickt!",Name[ClickedPlayer[playerid]]);
  176.             SendClientMessage(playerid, Blau,string);
  177.             SendClientMessage(playerid, Blau,"[ Buddy System ]"COLW" Warte auf seine Antwort!");
  178.             format(string,sizeof(string),"[ Buddy System ]"COLW" Du hast eine Freundschaftsanfrage von "COLO"%s"COLW"!",Name[playerid]);
  179.             SendClientMessage(playerid, Blau,ClickedPlayer[playerid]);
  180.             SendClientMessage(ClickedPlayer[playerid], Blau,"[ Buddy System ]"COLW" Benutze "COLO"/accept"COLW" um sie anzunehmen!");
  181.             Anfrage[ClickedPlayer[playerid]]=true;
  182.             Anfrager[ClickedPlayer[playerid]]=playerid;
  183.         }
  184.     }
  185.     return 1;
  186. }
  187. ////////////////////////////////////////////////////////////////////////////////
  188. // OnPlayerClickPlayer
  189. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  190. {
  191.     if(clickedplayerid==playerid)return SendClientMessage(playerid, Blau, "[ Buddy System ]"COLW" Du kannst dich "COLR"nicht"COLW" selber auswählen!");
  192.     ClickedPlayer[playerid]=clickedplayerid;
  193.     if(IsCurrentFriend(playerid,clickedplayerid))
  194.     {
  195.         ShowPlayerDialog(playerid,friendMenu,DIALOG_STYLE_LIST,""COLO"Buddy System by Rawr",""COLO"1 | "COLW"Narichten Senden\n"COLO"2 | "COLW"Freund Löschen\n"COLO"3 | "COLW"Naricht an alle Freunde","Weiter","Abbrechen");
  196.     }
  197.     else
  198.     {
  199.         new string[58];
  200.         format(string,sizeof(string),""COLW"Möchtest du "COLO"%s"COLW" als Freund hinzufügen?",Name[ClickedPlayer[playerid]]);
  201.         ShowPlayerDialog(playerid,addFriend,DIALOG_STYLE_MSGBOX,""COLO"Buddy System by Rawr",string,"Adden","Abbrechen");
  202.     }
  203.     return 1;
  204. }
  205. ////////////////////////////////////////////////////////////////////////////////
  206. // Zeigt die Online Freunde an
  207. COMMAND:friends(playerid,params[])
  208. {
  209.     new string[200],string2[50],bool:online;
  210.     for(new a; a<MAX_PLAYERS; a++)
  211.     {
  212.         if(IsCurrentFriend(playerid, a)&&a!=playerid)
  213.         {
  214.             format(string2,sizeof(string2),""COLW"%s ("COLO"ID:"COLW" %d)\n",Name[a],a);
  215.             strcat(string,string2,sizeof(string));
  216.             online=true;
  217.         }
  218.     }
  219.     if(online==true){ShowPlayerDialog(playerid,friendsOnline,DIALOG_STYLE_MSGBOX,""COLO"Buddy System by Rawr",string,"Schließen","");}
  220.     else SendClientMessage(playerid, Blau, "[ Buddy System ]"COLW" Es sind "COLR"keine"COLW" Freunde online!");
  221.     return 1;
  222. }
  223. ////////////////////////////////////////////////////////////////////////////////
  224. // Nimmt eine Freundschaftsanfrage an
  225. COMMAND:accept(playerid,params[])
  226. {
  227.     new string[128];
  228.     if(Anfrage[playerid]==false)return SendClientMessage(playerid, Blau,"[ Buddy System ]"COLW" Du hast "COLR"keine"COLW" Freundschaftsanfrage!");
  229.     if(!IsPlayerConnected(Anfrager[playerid]))return SendClientMessage(playerid, Blau,"[ Buddy System ]"COLW" Der Spieler der die Freundschaftsanfrage versendet hat, ist nun "COLR"offline"COLW"!"),Anfrage[playerid]=false,Anfrager[playerid]=-1;
  230.     if(!IsCurrentFriend(playerid,Anfrager[playerid]))return SendClientMessage(playerid, Blau,"[ Buddy System ]"COLW" Der Spieler ist "COLR"bereits"COLW" dein Freund!"),Anfrage[playerid]=false,Anfrager[playerid]=-1;
  231.     format(string,sizeof(string),"[ Buddy System ]"COLO" %s"COLW" hat deine Freundschaftsanfrage bestätigt!",Name[playerid]);
  232.     SendClientMessage(Anfrager[playerid],Blau,string);
  233.     format(string,sizeof(string),"[ Buddy System ]"COLW" Du hast die Freundschaftsanfrage von "COLO"%s"COLW" bestätigt!",Name[Anfrager[playerid]]);
  234.     SendClientMessage(playerid,Blau,string);
  235.     Freund[Anfrager[playerid]][ReturnFreeSlot(Anfrager[playerid])] = playerid;
  236.     Freund[playerid][ReturnFreeSlot(playerid)] = Anfrager[playerid];
  237.     format(string, sizeof(string),"%s|",Name[Anfrager[playerid]]);
  238.     strins(FileFriendList[playerid], string, 0, 500);
  239.     format(string, sizeof(string),"%s|",Name[playerid]);
  240.     strins(FileFriendList[Anfrager[playerid]], string, 0, 500);
  241.     Anfrage[playerid]=false;
  242.     Anfrager[playerid]=-1;
  243.     return 1;
  244. }
  245. ////////////////////////////////////////////////////////////////////////////////
  246. // Checkt ob man schon ein Freund von jemandem ist
  247. stock IsCurrentFriend(playerid, pID)
  248. {
  249.     for(new a; a<Max_Freunde; a++)
  250.     {if(Freund[playerid][a]==pID) return 1;}
  251.     return 0;
  252. }
  253. ////////////////////////////////////////////////////////////////////////////////
  254. // Returnt die ID eines Spielers
  255. stock ReturnPlayerID(pname[])
  256. {
  257.     for(new pID; pID<MAX_PLAYERS; pID++)
  258.     {
  259.         if(!IsPlayerConnected(pID)) continue;
  260.         if(!strcmp(Name[pID],pname,false))return pID;
  261.     }
  262.     return -1;
  263. }
  264. ////////////////////////////////////////////////////////////////////////////////
  265. // Return den nächsten freien Freundes Slot
  266. stock ReturnFreeSlot(playerid)
  267. {
  268.     for(new a; a<Max_Freunde; a++)
  269.     {
  270.         if(Freund[playerid][a]==-1) return a;
  271.     }
  272.     return 0;
  273. }
  274. ////////////////////////////////////////////////////////////////////////////////
  275. // Freunde werden gespeichert
  276. stock SaveFriends(playerid)
  277. {
  278.     new Datei[MAX_PLAYER_NAME+1];
  279.     format(Datei, sizeof(Datei), "%s", Name[playerid]);
  280.     new File:Pfad = fopen(Datei, io_write);
  281.     fwrite(Pfad, FileFriendList[playerid]);
  282.     fclose(Pfad);
  283.     return 1;
  284. }
  285. ////////////////////////////////////////////////////////////////////////////////
  286. // Freunde werden geladen
  287. stock LoadFriends(playerid)
  288. {
  289.     new Datei[30];
  290.     format(Datei, sizeof(Datei), "%s", Name[playerid]);
  291.     if(!fexist(Datei)) return 1;
  292.     new File:Pfad = fopen(Datei, io_read),string[500];
  293.     fread(Pfad, string);
  294.     fclose(Pfad);
  295.     new xy[Max_Freunde][500];
  296.     split(string, xy, '|');
  297.     for(new i; i<Max_Freunde; i++)
  298.     {
  299.         Freund[playerid][i]=ReturnPlayerID(xy[i]);
  300.     }
  301.     return 1;
  302. }
  303. ////////////////////////////////////////////////////////////////////////////////
  304. // Split
  305. split(const strsrc[], strdest[][], delimiter)
  306. {
  307.     new i, li,aNum,len;
  308.     while(i <= strlen(strsrc))
  309.     {
  310.         if(strsrc[i] == delimiter || i == strlen(strsrc))
  311.         {
  312.             len = strmid(strdest[aNum], strsrc, li, i, 128);
  313.             strdest[aNum][len] = 0;
  314.             li = i+1;
  315.             aNum++;
  316.         }
  317.         i++;
  318.     }
  319.     return 1;
  320. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement