Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define FILTERSCRIPT
- #include <a_samp>
- #include <YSI\y_ini>
- #include <sscanf2>
- #include <zcmd>
- #define ContinueLoading() if(CallLocalFunction("OnPlayerConnect","d",0) != 9) return SendRconCommand("exit")
- #define MAX_GROUPS 32
- #define COLOR_RED 0xFF0F0FFF
- #define COLOR_YELLOW 0xFFFF00FF
- #define COLOR_ORANGE 0xFF8000FF
- enum pInfo
- {
- pChatGroup,
- pJoiningGroup,
- };
- enum cGroups
- {
- GroupUsed,
- GroupName[32],
- GroupOwner[24],
- GroupPassword[32],
- GroupCreated[20],
- GroupUsers
- };
- enum
- {
- DIALOG_LEAVEGROUP = 3387,
- DIALOG_JOINGROUP = 3388,
- DIALOG_NOTHING = 23345
- };
- new PlayerInfo[MAX_PLAYERS][pInfo];
- new GroupInfo[MAX_PLAYERS][cGroups];
- stock GetFreeGroupID()
- {
- for(new i = 0; i < MAX_GROUPS; i ++)
- {
- if(!GroupInfo[i][GroupUsed]) return i;
- }
- return -1;
- }
- stock SendChatGroupMessage(groupid, color, string[])
- {
- for(new i = 0; i < MAX_PLAYERS; i ++)
- {
- if(IsPlayerConnected(i))
- {
- if(PlayerInfo[i][pChatGroup] == groupid) SendClientMessage(i,color,string);
- }
- }
- return 1;
- }
- public OnFilterScriptInit()
- {
- INI_ParseFile("chatgroups.ini","LoadSavedGroups",.bPassTag = true);
- print("Loaded ChatGroups.amx by Jochemd ©");
- for(new i = 0; i < MAX_PLAYERS; i ++) PlayerInfo[i][pChatGroup] = -1;
- ContinueLoading();
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- SendClientMessage(playerid,COLOR_YELLOW,"This server is using Dynamic Chatgroups by Jochemd © 2012.");
- return 9;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- new pGroupID = PlayerInfo[playerid][pChatGroup];
- if(pGroupID != -1)
- {
- new string[64],pName[24];
- GetPlayerName(playerid,pName,24);
- format(string,sizeof(string),"** {22FC03}%s (%d){FFFFFF}has left the {FF8000}chatgroup {FFFFFF}as he left the server.",pName,playerid);
- SendChatGroupMessage(PlayerInfo[playerid][pChatGroup],COLOR_ORANGE,string);
- PlayerInfo[playerid][pChatGroup] = -1;
- GroupInfo[pGroupID][GroupUsers] --;
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case DIALOG_LEAVEGROUP:
- {
- if(!response) return 1;
- new string[128],pName[24],pGroupID = PlayerInfo[playerid][pChatGroup];
- GetPlayerName(playerid,pName,24);
- format(string,sizeof(string),"** {FFFFFF}You have successfully left your chatgroup {20D1DF}(%s, ID: %d).",GroupInfo[pGroupID][GroupName],pGroupID);
- SendClientMessage(playerid,COLOR_ORANGE,string);
- PlayerInfo[playerid][pChatGroup] = -1;
- GroupInfo[pGroupID][GroupUsers] --;
- format(string,sizeof(string),"** {FFFFFF}%s (ID: %d) has left the chatgroup {20D1DF}%s (ID: %d).",pName,playerid,GroupInfo[pGroupID][GroupName],pGroupID);
- SendChatGroupMessage(pGroupID,COLOR_ORANGE,string);
- return 1;
- }
- case DIALOG_JOINGROUP:
- {
- new newGroupID = PlayerInfo[playerid][pJoiningGroup];
- if(!response) return 1;
- if(!strcmp(inputtext,GroupInfo[newGroupID][GroupPassword],false))
- {
- new string[128],pName[24];
- GetPlayerName(playerid,pName,24);
- format(string,sizeof(string),"** {FFFFFF}You have successfully joined {22FC03}%s (ID: %d)",GroupInfo[newGroupID][GroupName],newGroupID);
- SendClientMessage(playerid,COLOR_ORANGE,string);
- format(string,sizeof(string),"** {FFFFFF}%s (ID: %d) has joined chatgroup {22FC03}%s (ID: %d){FFFFFF}.",pName,playerid,GroupInfo[newGroupID][GroupName],newGroupID);
- SendChatGroupMessage(newGroupID,COLOR_ORANGE,string);
- PlayerInfo[playerid][pChatGroup] = newGroupID;
- GroupInfo[newGroupID][GroupUsers] ++;
- return 1;
- }
- else return SendClientMessage(playerid,COLOR_RED,"Error: Invalid group password.");
- }
- }
- return 1;
- }
- forward LoadSavedGroups(tag[], name[], value[]);
- public LoadSavedGroups(tag[], name[], value[])
- {
- new groupid = strval(tag);
- GroupInfo[groupid][GroupUsed] = 1;
- INI_String("GroupName",GroupInfo[groupid][GroupName],32);
- INI_String("GroupOwner",GroupInfo[groupid][GroupOwner],24);
- INI_String("GroupPassword",GroupInfo[groupid][GroupPassword],32);
- INI_String("GroupCreated",GroupInfo[groupid][GroupCreated],20);
- return 0;
- }
- CMD:gc(playerid,params[])
- {
- new pGroupID = PlayerInfo[playerid][pChatGroup];
- if(pGroupID == -1) return SendClientMessage(playerid,COLOR_RED,"Error: You are currently not in a chatgroup.");
- new string[128],pName[24],len = strlen(params);
- if(len < 1 || len > 120) return SendClientMessage(playerid,COLOR_RED,"Error: Max input is 120 characters.");
- GetPlayerName(playerid,pName,24);
- format(string,sizeof(string),"** %s - %s (ID: %d): {FFFFFF}%s",GroupInfo[pGroupID][GroupName],pName,playerid,params);
- SendChatGroupMessage(pGroupID,COLOR_ORANGE,string);
- return 1;
- }
- CMD:creategroup(playerid,params[])
- {
- #if defined RCON_ADMIN_CREATE_ONLY
- if(!IsPlayerAdmin(playerid)) return 0;
- #endif
- if(PlayerInfo[playerid][pChatGroup] != -1) return SendClientMessage(playerid,COLOR_RED,"Error: You are already in a chat group.");
- new groupid = GetFreeGroupID(),string[128],date[6],INI:groupfile;
- if(groupid == -1) return SendClientMessage(playerid,COLOR_RED,"Error: You cannot create more groups as you reached the max. Increase MAX_GROUPS.");
- if(sscanf(params,"s[32]",GroupInfo[groupid][GroupName])) return SendClientMessage(playerid,-1,"Usage: /creategroup [name].");
- format(string,sizeof(string),"** {FFFFFF}You have successfully created a chatgroup {20D1DF}(%s, ID: %d){FFFFFF}.",GroupInfo[groupid][GroupName],groupid);
- SendClientMessage(playerid,COLOR_ORANGE,string);
- SendClientMessage(playerid,COLOR_ORANGE,"** {FFFFFF}To set a password to this chatgroup, type {FF8000}/grouppass{FFFFFF}.");
- GetPlayerName(playerid,GroupInfo[groupid][GroupOwner],24);
- getdate(date[0],date[1],date[2]);
- gettime(date[3],date[4],date[5]);
- PlayerInfo[playerid][pChatGroup] = groupid;
- GroupInfo[groupid][GroupUsed] = 1;
- GroupInfo[groupid][GroupUsers] = 1;
- format(GroupInfo[groupid][GroupCreated],20,"%02d/%02d/%d %02d:%02d",date[2],date[1],date[0],date[3],date[4]);
- valstr(string,groupid);
- groupfile = INI_Open("chatgroups.ini");
- INI_SetTag(groupfile,string);
- INI_WriteString(groupfile,"GroupName",GroupInfo[groupid][GroupName]);
- INI_WriteString(groupfile,"GroupOwner",GroupInfo[groupid][GroupOwner]);
- INI_WriteString(groupfile,"GroupCreated",GroupInfo[groupid][GroupCreated]);
- INI_Close(groupfile);
- return 1;
- }
- CMD:joingroup(playerid,params[])
- {
- new pName[24],pGroupID = PlayerInfo[playerid][pChatGroup],string[128],newGroupID = -1;
- GetPlayerName(playerid,pName,24);
- if(pGroupID != -1) return SendClientMessage(playerid,COLOR_RED,"Error: Please leave your current group before joining another one.");
- if(sscanf(params,"d",newGroupID)) return SendClientMessage(playerid,COLOR_RED,"Usage: /joingroup [groupid].");
- if(newGroupID >= MAX_GROUPS || !GroupInfo[newGroupID][GroupUsed]) return SendClientMessage(playerid,COLOR_RED,"Error: Invalid group ID (check /chatgroups).");
- if(!isnull(GroupInfo[newGroupID][GroupPassword]))
- {
- PlayerInfo[playerid][pJoiningGroup] = newGroupID;
- return ShowPlayerDialog(playerid,DIALOG_JOINGROUP,DIALOG_STYLE_PASSWORD,"{FFFFFF}Password Protected","{FFFFFF}This chatgroup is {FF0F0F}password protected{FFFFFF}. To join, please\nprovide the channel password down here.","Submit","Close");
- }
- format(string,sizeof(string),"** {FFFFFF}You have successfully joined {22FC03}%s (ID: %d)",GroupInfo[newGroupID][GroupName],newGroupID);
- SendClientMessage(playerid,COLOR_ORANGE,string);
- format(string,sizeof(string),"** {FFFFFF}%s (ID: %d) has joined chatgroup {22FC03}%s (ID: %d){FFFFFF}.",pName,playerid,GroupInfo[newGroupID][GroupName],newGroupID);
- SendChatGroupMessage(newGroupID,COLOR_ORANGE,string);
- PlayerInfo[playerid][pChatGroup] = newGroupID;
- GroupInfo[newGroupID][GroupUsers] ++;
- return 1;
- }
- CMD:leavegroup(playerid)
- {
- if(PlayerInfo[playerid][pChatGroup] == -1) return SendClientMessage(playerid,COLOR_RED,"Error: You are currently not in any group.");
- ShowPlayerDialog(playerid,DIALOG_LEAVEGROUP,DIALOG_STYLE_MSGBOX,"{FFFF00}Leave your group","{FFFFFF}Are you sure you want to leave your current chatgroup?","Yes","No");
- return 1;
- }
- CMD:chatgroups(playerid)
- {
- new string[96],total[96 * MAX_GROUPS];
- for(new i = 0; i < MAX_GROUPS; i ++)
- {
- if(!GroupInfo[i][GroupUsed]) continue;
- if(!i) format(string,sizeof(string),"{20D1DF}ID: %d\t\t{FFFF00}Groupname: %s\t\t{00FF00}Owner: %s",i,GroupInfo[i][GroupName],GroupInfo[i][GroupOwner]);
- else format(string,sizeof(string),"\n{20D1DF}ID: %d\t\t{FFFF00}Groupname: %s\t\t{00FF00}Owner: %s",i,GroupInfo[i][GroupName],GroupInfo[i][GroupOwner]);
- strcat(total,string);
- }
- ShowPlayerDialog(playerid,DIALOG_NOTHING,DIALOG_STYLE_MSGBOX,"{FFFFFF}Currently created chatgroups:",total,"Close","");
- return 1;
- }
- CMD:grouppass(playerid,params[])
- {
- new pName[24],string[5],pGroupID = PlayerInfo[playerid][pChatGroup],len = strlen(params),INI:groupfile;
- if(pGroupID == -1) return SendClientMessage(playerid,COLOR_RED,"Error: You are currently not in any group.");
- GetPlayerName(playerid,pName,24);
- if(strcmp(pName,GroupInfo[pGroupID][GroupOwner],false)) return SendClientMessage(playerid,COLOR_RED,"Error: You are not the owner of this chatgroup.");
- if(len > 30) return SendClientMessage(playerid,COLOR_RED,"Error: Max password length is 30 characters.");
- format(GroupInfo[pGroupID][GroupPassword],32,"%s",params);
- SendClientMessage(playerid,COLOR_ORANGE,"** {FFFFFF}The group password has been changed.");
- valstr(string,pGroupID);
- groupfile = INI_Open("chatgroups.ini");
- INI_SetTag(groupfile,string);
- INI_WriteString(groupfile,"GroupPassword",params);
- INI_Close(groupfile);
- return 1;
- }
- CMD:kickfromgroup(playerid,params[])
- {
- new pName[24],tName[24],string[128],pGroupID = PlayerInfo[playerid][pChatGroup],target;
- if(pGroupID == -1) return SendClientMessage(playerid,COLOR_RED,"Error: You are currently not in any group.");
- if(strcmp(pName,GroupInfo[pGroupID][GroupOwner],false)) return SendClientMessage(playerid,COLOR_RED,"Error: You are not the owner of this chatgroup.");
- if(sscanf(params,"u",target)) return SendClientMessage(playerid,-1,"Usage: /kickfromgroup [target].");
- if(PlayerInfo[target][pChatGroup] != PlayerInfo[playerid][pChatGroup]) return SendClientMessage(playerid,COLOR_RED,"Error: That player is not in your chat group.");
- GetPlayerName(playerid,pName,sizeof(pName));
- GetPlayerName(target,tName,sizeof(tName));
- PlayerInfo[target][pChatGroup] = -1;
- GroupInfo[pGroupID][GroupUsers] --;
- format(string,sizeof(string),"** %s (ID: %d) has been kicked from the chatgroup by %s (ID: %d).",tName,target,pName,playerid);
- SendChatGroupMessage(pGroupID,COLOR_RED,string);
- format(string,sizeof(string),"** You have been kicked from the chatgroup by %s (ID: %d).",pName,playerid);
- SendClientMessage(target,COLOR_RED,string);
- return 1;
- }
- CMD:groupinfo(playerid,params[])
- {
- new groupid = -1,string[256];
- if(sscanf(params,"d",groupid)) return SendClientMessage(playerid,-1,"Usage: /groupinfo [groupid].");
- if(groupid < 0 || groupid >= (MAX_GROUPS - 1) || !GroupInfo[groupid][GroupUsed]) return SendClientMessage(playerid,COLOR_RED,"Error: Invalid group ID.");
- format(string,sizeof(string),"{20D1DF}Group Name: {FFFFFF}%s\n\n{20D1DF}Group Owner: {FFFFFF}%s\n\n{20D1DF}Date Created: {FFFFFF}%s\n\n{20D1DF}Users: {FFFFFF}%d",GroupInfo[groupid][GroupName],GroupInfo[groupid][GroupOwner],GroupInfo[groupid][GroupCreated],GroupInfo[groupid][GroupUsers]);
- ShowPlayerDialog(playerid,DIALOG_NOTHING,DIALOG_STYLE_MSGBOX,"Group Info",string,"Close","");
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement