Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ////////////////////////////////////////////////////////////////////////////////
- // Buddy System by Rawr
- // Have fun! :)
- // Breadfish: http://forum.sa-mp.de/index.php?page=User&userID=27647
- // Skype: MrRawwwr
- ////////////////////////////////////////////////////////////////////////////////
- // Includes
- #include <a_samp>
- #include <zcmd>
- #include <banfix>
- ////////////////////////////////////////////////////////////////////////////////
- // Script Definierungen
- #pragma dynamic 55555
- //Maximale Anzahl an Freunden (nicht übertreiben (Name(24)*Maximale Anzahl))
- #define Max_Freunde 85
- //Dialog ID's
- #define DialogID 500
- enum
- {
- friendMenu=DialogID+1,
- addFriend=DialogID+2,
- delFriend=DialogID+3,
- sendMessage=DialogID+4,
- sendMessageToAll=DialogID+5,
- friendsOnline=DialogID+6
- }
- //Farben
- #define Blau 0x007DE0FF
- #define COLW "{FFFFFF}"
- #define COLO "{FF6A00}"
- #define COLR "{FF0000}"
- #define COLG "{00FF00}"
- ////////////////////////////////////////////////////////////////////////////////
- // Spieler Variablen
- new Name[MAX_PLAYERS][MAX_PLAYER_NAME+1],
- Freund[MAX_PLAYERS][Max_Freunde],
- ClickedPlayer[MAX_PLAYERS],
- bool:Anfrage[MAX_PLAYERS],
- Anfrager[MAX_PLAYERS],
- FileFriendList[MAX_PLAYERS][250];
- ////////////////////////////////////////////////////////////////////////////////
- // OnFilterScriptInit
- public OnFilterScriptInit()
- {
- print("\n====================================");
- print("<-| [ Info ] Buddy System by Rawr");
- print("<-| [ Info ] Erfolgreich geladen!");
- print("====================================\n");
- return 1;
- }
- ////////////////////////////////////////////////////////////////////////////////
- // OnFilterScriptExit
- public OnFilterScriptExit()
- {
- print("\n====================================");
- print("<-| [ Info ] Buddy System by Rawr");
- print("<-| [ Info ] Erfolgreich beendet!");
- print("====================================\n");
- return 1;
- }
- ////////////////////////////////////////////////////////////////////////////////
- // OnPlayerConnect
- public OnPlayerConnect(playerid)
- {
- GetPlayerName(playerid, Name[playerid],MAX_PLAYER_NAME);
- Anfrage[playerid]=false,Anfrager[playerid]=-1,ClickedPlayer[playerid]=-1;
- LoadFriends(playerid);
- new string[85];
- for(new a; a<Max_Freunde; a++)
- {
- if(Freund[playerid][a] != -1 && IsPlayerConnected(a))
- {
- format(string,sizeof(string),"[ Buddy System ]"COLO" %s "COLW"hat den Server betreten",Name[playerid]);
- SendClientMessage(a,Blau,string);
- }
- }
- return 1;
- }
- ////////////////////////////////////////////////////////////////////////////////
- // OnPlayerDisconnect
- public OnPlayerDisconnect(playerid, reason)
- {
- SaveFriends(playerid);
- new string[85];
- for(new a; a<Max_Freunde; a++)
- {
- if(Freund[playerid][a] != -1 && IsPlayerConnected(a))
- {
- format(string,sizeof(string),"[ Buddy System ]"COLO" %s "COLW"hat den Server verlassen",Name[playerid]);
- SendClientMessage(a,Blau,string);
- }
- }
- return 1;
- }
- ////////////////////////////////////////////////////////////////////////////////
- // OnDialogResponse
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case friendMenu:
- {
- if(!response)return 1;
- new string[100];
- switch(listitem)
- {
- case 0:
- {
- format(string,sizeof(string),""COLW"Gebe hier die Naricht ein die\ndu an "COLO"%s"COLW" senden möchtest",Name[ClickedPlayer[playerid]]);
- ShowPlayerDialog(playerid, sendMessage,DIALOG_STYLE_INPUT,""COLO"Buddy System by Rawr",string,"Senden","Zurück");
- }
- case 1:
- {
- format(string,sizeof(string),""COLW"Möchtest du "COLO"%s"COLW" von der Freundesliste löschen?",Name[ClickedPlayer[playerid]]);
- ShowPlayerDialog(playerid, delFriend,DIALOG_STYLE_MSGBOX,""COLO"Buddy System by Rawr",string,"Löschen","Zurück");
- }
- case 2:
- {
- 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");
- }
- }
- }
- case sendMessage:
- {
- new string[128];
- 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");
- 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");
- format(string,sizeof(string),"[ Buddy System ]"COLW" Du hast eine neue Naricht von "COLO"%s",Name[playerid]);
- SendClientMessage(ClickedPlayer[playerid],Blau,string);
- format(string,sizeof(string),"[ Buddy System ]"COLW" %s",inputtext);
- SendClientMessage(ClickedPlayer[playerid],Blau,string);
- }
- case delFriend:
- {
- 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");
- new string[128];
- for(new a; a<Max_Freunde; a++)
- {
- if(Freund[playerid][a]==ClickedPlayer[playerid])
- {
- format(string, sizeof(string),"[ Buddy System ]"COLW" Du hast "COLO"%s"COLW" von deiner Freundesliste gelöscht!",Name[ClickedPlayer[playerid]]);
- SendClientMessage(playerid,Blau,string);
- Freund[playerid][a]=-1;
- return 1;
- }
- }
- }
- case sendMessageToAll:
- {
- 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");
- 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");
- 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");
- new bool:gesendet,string[128];
- for(new a; a<Max_Freunde; a++)
- {
- if(Freund[playerid][a] != -1 && IsPlayerConnected(a))
- {
- gesendet=true;
- format(string,sizeof(string),"[ Buddy System ]"COLW" Du hast eine neue Naricht von "COLO"%s",Name[playerid]);
- SendClientMessage(a,Blau,string);
- format(string,sizeof(string),"[ Buddy System ]"COLW" %s",inputtext);
- SendClientMessage(a,Blau,string);
- }
- }
- if(gesendet==true)
- {
- SendClientMessage(playerid,Blau,"[ Buddy System ]"COLW" Deine Naricht wurde "COLG"erfolgreich"COLW" an alle Freunde gesendet!");
- }
- else SendClientMessage(playerid,Blau,"[ Buddy System ]"COLW" Es seind derzeit "COLR"keine"COLW" Freunde online!");
- }
- case addFriend:
- {
- new string[128];
- if(!response)return 1;
- format(string,sizeof(string),"[ Buddy System ]"COLW" Du hast "COLO"%s"COLW" eine Freundschaftsanfrage geschickt!",Name[ClickedPlayer[playerid]]);
- SendClientMessage(playerid, Blau,string);
- SendClientMessage(playerid, Blau,"[ Buddy System ]"COLW" Warte auf seine Antwort!");
- format(string,sizeof(string),"[ Buddy System ]"COLW" Du hast eine Freundschaftsanfrage von "COLO"%s"COLW"!",Name[playerid]);
- SendClientMessage(playerid, Blau,ClickedPlayer[playerid]);
- SendClientMessage(ClickedPlayer[playerid], Blau,"[ Buddy System ]"COLW" Benutze "COLO"/accept"COLW" um sie anzunehmen!");
- Anfrage[ClickedPlayer[playerid]]=true;
- Anfrager[ClickedPlayer[playerid]]=playerid;
- }
- }
- return 1;
- }
- ////////////////////////////////////////////////////////////////////////////////
- // OnPlayerClickPlayer
- public OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- if(clickedplayerid==playerid)return SendClientMessage(playerid, Blau, "[ Buddy System ]"COLW" Du kannst dich "COLR"nicht"COLW" selber auswählen!");
- ClickedPlayer[playerid]=clickedplayerid;
- if(IsCurrentFriend(playerid,clickedplayerid))
- {
- 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");
- }
- else
- {
- new string[58];
- format(string,sizeof(string),""COLW"Möchtest du "COLO"%s"COLW" als Freund hinzufügen?",Name[ClickedPlayer[playerid]]);
- ShowPlayerDialog(playerid,addFriend,DIALOG_STYLE_MSGBOX,""COLO"Buddy System by Rawr",string,"Adden","Abbrechen");
- }
- return 1;
- }
- ////////////////////////////////////////////////////////////////////////////////
- // Zeigt die Online Freunde an
- COMMAND:friends(playerid,params[])
- {
- new string[200],string2[50],bool:online;
- for(new a; a<MAX_PLAYERS; a++)
- {
- if(IsCurrentFriend(playerid, a)&&a!=playerid)
- {
- format(string2,sizeof(string2),""COLW"%s ("COLO"ID:"COLW" %d)\n",Name[a],a);
- strcat(string,string2,sizeof(string));
- online=true;
- }
- }
- if(online==true){ShowPlayerDialog(playerid,friendsOnline,DIALOG_STYLE_MSGBOX,""COLO"Buddy System by Rawr",string,"Schließen","");}
- else SendClientMessage(playerid, Blau, "[ Buddy System ]"COLW" Es sind "COLR"keine"COLW" Freunde online!");
- return 1;
- }
- ////////////////////////////////////////////////////////////////////////////////
- // Nimmt eine Freundschaftsanfrage an
- COMMAND:accept(playerid,params[])
- {
- new string[128];
- if(Anfrage[playerid]==false)return SendClientMessage(playerid, Blau,"[ Buddy System ]"COLW" Du hast "COLR"keine"COLW" Freundschaftsanfrage!");
- 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;
- 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;
- format(string,sizeof(string),"[ Buddy System ]"COLO" %s"COLW" hat deine Freundschaftsanfrage bestätigt!",Name[playerid]);
- SendClientMessage(Anfrager[playerid],Blau,string);
- format(string,sizeof(string),"[ Buddy System ]"COLW" Du hast die Freundschaftsanfrage von "COLO"%s"COLW" bestätigt!",Name[Anfrager[playerid]]);
- SendClientMessage(playerid,Blau,string);
- Freund[Anfrager[playerid]][ReturnFreeSlot(Anfrager[playerid])] = playerid;
- Freund[playerid][ReturnFreeSlot(playerid)] = Anfrager[playerid];
- format(string, sizeof(string),"%s|",Name[Anfrager[playerid]]);
- strins(FileFriendList[playerid], string, 0, 500);
- format(string, sizeof(string),"%s|",Name[playerid]);
- strins(FileFriendList[Anfrager[playerid]], string, 0, 500);
- Anfrage[playerid]=false;
- Anfrager[playerid]=-1;
- return 1;
- }
- ////////////////////////////////////////////////////////////////////////////////
- // Checkt ob man schon ein Freund von jemandem ist
- stock IsCurrentFriend(playerid, pID)
- {
- for(new a; a<Max_Freunde; a++)
- {if(Freund[playerid][a]==pID) return 1;}
- return 0;
- }
- ////////////////////////////////////////////////////////////////////////////////
- // Returnt die ID eines Spielers
- stock ReturnPlayerID(pname[])
- {
- for(new pID; pID<MAX_PLAYERS; pID++)
- {
- if(!IsPlayerConnected(pID)) continue;
- if(!strcmp(Name[pID],pname,false))return pID;
- }
- return -1;
- }
- ////////////////////////////////////////////////////////////////////////////////
- // Return den nächsten freien Freundes Slot
- stock ReturnFreeSlot(playerid)
- {
- for(new a; a<Max_Freunde; a++)
- {
- if(Freund[playerid][a]==-1) return a;
- }
- return 0;
- }
- ////////////////////////////////////////////////////////////////////////////////
- // Freunde werden gespeichert
- stock SaveFriends(playerid)
- {
- new Datei[MAX_PLAYER_NAME+1];
- format(Datei, sizeof(Datei), "%s", Name[playerid]);
- new File:Pfad = fopen(Datei, io_write);
- fwrite(Pfad, FileFriendList[playerid]);
- fclose(Pfad);
- return 1;
- }
- ////////////////////////////////////////////////////////////////////////////////
- // Freunde werden geladen
- stock LoadFriends(playerid)
- {
- new Datei[30];
- format(Datei, sizeof(Datei), "%s", Name[playerid]);
- if(!fexist(Datei)) return 1;
- new File:Pfad = fopen(Datei, io_read),string[500];
- fread(Pfad, string);
- fclose(Pfad);
- new xy[Max_Freunde][500];
- split(string, xy, '|');
- for(new i; i<Max_Freunde; i++)
- {
- Freund[playerid][i]=ReturnPlayerID(xy[i]);
- }
- return 1;
- }
- ////////////////////////////////////////////////////////////////////////////////
- // Split
- split(const strsrc[], strdest[][], delimiter)
- {
- new i, li,aNum,len;
- while(i <= strlen(strsrc))
- {
- if(strsrc[i] == delimiter || i == strlen(strsrc))
- {
- len = strmid(strdest[aNum], strsrc, li, i, 128);
- strdest[aNum][len] = 0;
- li = i+1;
- aNum++;
- }
- i++;
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement