| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308 |
- /*
- trablon's Group System with mySQL R7 version
- Script coder: trablon(Onur AKAN)
- NOTE: Don't forget to check my topic on forum.sa-mp.com
- ---[INFO FOR SCRIPT]---
- table name: groupz
- columns: gID(int),gName(varchar=128),gLeaderName(varchar=32),gchat(int),gTAG(varchar=5) ...
- ---[INFO FOR YOUR DATABASE(players)]---
- table name: yourplayerstable
- columns: grouppid(int),grouprank(varchar=32) ...
- */
- //====================================================================[includes]
- #include <a_samp>
- #include <a_mysql>
- #include <zcmd>
- #include <sscanf2>
- //=================================================================[definitions]
- #define COLOR_GREY 0xAFAFAFAA
- #define COLOR_RED 0xFF6347AA
- #define COLOR_GREEN 0x9ACD32AA
- #define MAX_GROUPS 150//you can change it, if you know what you are doing.
- enum groupsDATA
- {
- gID,
- gName[128],
- gLeaderName[32],
- gchat,
- gTAG
- };
- new GroupInfo[MAX_GROUPS][groupsDATA];
- new mysql=1; // remember..Don't forget to delete it when you are copying the codes to your gamemode
- new groupid=-1;
- enum playerDATA
- {
- grouppid,
- grouprank[32]
- };
- new pInfo[MAX_PLAYERS][playerDATA];
- new groupvariables[MAX_PLAYERS][2];
- // =============================================================================
- public OnFilterScriptInit()
- {
- print("_________________________________________________________________________");
- print("> trablon's Group System - ALPHA");
- print("> Script Name : Group System");
- print("> Script Version : ALPHA");
- print("> Script Coder : trablon");
- print("> Last Update : 22/07/2015");
- print("> mySQL Version : R7 - threaded queries");
- print("_________________________________________________________________________");
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- groupvariables[playerid][0] = -1;
- groupvariables[playerid][1] = 0;
- return 1;
- }
- public OnPlayerDisconnect(playerid,reason)
- {
- groupvariables[playerid][0] = -1;
- groupvariables[playerid][1] = 0;
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- SetTagforPlayer(playerid,GroupInfo[pInfo[playerid][grouppid]][gTAG]);
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == 1)
- {
- new str[128];
- if(!response)
- {
- format(str,sizeof(str),"[SYSTEM]: '%s' has declined your invite.",GetPlayerNamee(playerid));
- SendClientMessage(groupvariables[playerid][0],COLOR_RED,str);
- SendClientMessage(playerid,COLOR_RED,"[SYSTEM]: You have declined the invite.");
- groupvariables[playerid][0] = -1;
- groupvariables[playerid][1] = 0;
- }
- if(response)
- {
- format(str,sizeof(str),"[SYSTEM]: '%s' has accepted your invite.",GetPlayerNamee(playerid));
- SendClientMessage(groupvariables[playerid][0],COLOR_GREEN,str);
- SendClientMessage(playerid,COLOR_RED,"[SYSTEM]: You have accepted the invite.");
- pInfo[playerid][grouppid] = pInfo[groupvariables[playerid][0]][grouppid];
- groupvariables[playerid][0] = -1;
- groupvariables[playerid][1] = 0;
- }
- }
- return 1;
- }
- stock LoadGroups()
- {
- return mysql_function_query(mysql, "SELECT * FROM `groupz`", true, "GroupsInformation", "");
- }
- stock SendGroupMessage(color, groupID, string[])
- {
- for(new i;i<MAX_PLAYERS;i++)
- {
- if(pInfo[i][grouppid] == groupID)
- {
- SendClientMessage(i, color, string);
- }
- }
- return 1;
- }
- forward GroupsInformation();
- public GroupsInformation()
- {
- new rows,fields,szQueryOutput[128];
- cache_get_data(rows, fields);
- if(rows)
- {
- for(new x = 0; x < rows; x++)
- {
- cache_get_row(x, 0, szQueryOutput); // gID
- GroupInfo[x][gID] = strval(szQueryOutput);
- cache_get_field_content(x, "gName", szQueryOutput); // group name
- format(GroupInfo[x][gName],sizeof(szQueryOutput),szQueryOutput);
- cache_get_field_content(x, "gLeaderName", szQueryOutput);
- format(GroupInfo[x][gLeaderName],sizeof(szQueryOutput),szQueryOutput);
- }
- }
- return 1;
- }
- forward MYSQL_SaveGroups(b);
- public MYSQL_SaveGroups(b)
- {
- new query[128];
- mysql_format(mysql,query, sizeof(query), "UPDATE `groups` SET `gchat` = %d, `gTAG` = %d,`gName` = '%s', `gLeaderName` = '%s' WHERE `gID` = %d",
- GroupInfo[b][gchat],GroupInfo[b][gTAG],GroupInfo[b][gName],GroupInfo[b][gLeaderName],GroupInfo[b][gID]);
- mysql_tquery(mysql, query, "", "");
- return 1;
- }
- forward GroupCreated(b);
- public GroupCreated(b)
- {
- GroupInfo[b][gID] = cache_insert_id();
- groupid++;
- printf("New Group is created: [%d]", groupid );
- }
- stock GetPlayerNamee(playerid)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- return name;
- }
- stock SetTagforPlayer(playerid,tag[])
- {
- new name[MAX_PLAYER_NAME];
- new newname[30];
- GetPlayerName(playerid,name,MAX_PLAYER_NAME);
- format(newname,sizeof(newname),"[%s]%s",tag,name);
- SetPlayerName(playerid,newname);
- return 1;
- }
- CMD:creategroup(playerid, params[])
- {
- new grID = groupid+1,query[128],player,str[128];
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: You have to log in as a rcon admin.");
- if(sscanf(params, "u", player)) return SendClientMessage(playerid,COLOR_GREY,"[USAGE]: /creategroup [Player ID/Player Name]");
- if(!IsPlayerConnected(player)) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: Player hasn't connected to server yet.");
- if(pInfo[player][grouppid] != 0) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: Player already is in a group.");
- if(playerid == player) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: You can't give a group to yourself.");
- GroupInfo[grID][gID] = grID;
- GroupInfo[grID][gchat] = 0;
- format(GroupInfo[grID][gTAG],5,"None");
- pInfo[player][grouppid] = grID; // change this line with your player variable.DONT FORGET IT!
- format(GroupInfo[grID][gName],128,"None");
- format(GroupInfo[grID][gLeaderName],32,GetPlayerNamee(player));
- mysql_format(mysql, query, sizeof(query), "INSERT INTO `groups` (`gID`, `gchat`, `gTAG`, `gName`, `gLeaderName`) VALUES (%d,%d,%d,'%s','%s')",
- grID+1,
- GroupInfo[grID][gchat],
- GroupInfo[grID][gTAG],
- GroupInfo[grID][gName],
- GroupInfo[grID][gLeaderName]);
- mysql_tquery(mysql, query, "GroupCreated", "i",grID);
- format(str,sizeof(str),"[SUCCESS]: '%s' named group has created for '%s'.",GroupInfo[grID][gName],GroupInfo[grID][gLeaderName]);
- SendClientMessage(playerid,COLOR_GREEN,str);
- return 1;
- }
- CMD:ginvite(playerid,params[])
- {
- new player,str[128],id=pInfo[playerid][grouppid];
- if(strcmp(GroupInfo[id][gLeaderName], GetPlayerNamee(playerid)) != 0) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: You are not a leader of any group.");
- if(groupvariables[playerid][1] == 1) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: You need to wait for response of your invite.");
- if(sscanf(params, "u", player)) return SendClientMessage(playerid,COLOR_GREY,"[USAGE]: /creategroup [Player ID/Player Name]");
- if(!IsPlayerConnected(player)) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: Player hasn't connected to server yet.");
- if(playerid == player) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: You can't invite yourself.");
- if(pInfo[player][grouppid] == pInfo[playerid][grouppid]) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: Player is already in your group.");
- groupvariables[player][0] = playerid;
- groupvariables[playerid][1] = 1;
- format(str,sizeof(str),"'%s' named group leader is inviting you to '%s' named group, what is your answer?",GroupInfo[id][gLeaderName],GroupInfo[id][gName]);
- ShowPlayerDialog(player, 1, DIALOG_STYLE_MSGBOX, "{808080}trablon's Group System", str, "Accept", "Decline");
- return 1;
- }
- CMD:g(playerid,params[])
- {
- new str[128],string[128],id=pInfo[playerid][grouppid];
- if(pInfo[playerid][grouppid] == 0) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: You are not in any group.");
- if(GroupInfo[id][gchat] == 1) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: Group chat has closed by leader of the group.");
- if(sscanf(params, "s[128]", str)) return SendClientMessage(playerid,COLOR_GREY,"[USAGE]: /g [Group Chat]");
- format(string,sizeof(string),"[GROUP-CHAT(%s)] %s: %s",GroupInfo[id][gName],GetPlayerNamee(playerid),str);
- SendGroupMessage(0x8080FFFF, id, string);
- return 1;
- }
- CMD:gkick(playerid,params[])
- {
- new str[128],id=pInfo[playerid][grouppid],player;
- if(strcmp(GroupInfo[id][gLeaderName], GetPlayerNamee(playerid)) != 0) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: You are not a leader of any group.");
- if(sscanf(params, "u", player)) return SendClientMessage(playerid,COLOR_GREY,"[USAGE]: /gkick [Player ID/Player Name]");
- if(!IsPlayerConnected(player)) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: Player hasn't connected to server yet.");
- if(playerid == player) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: You can't kick yourself.");
- if(pInfo[player][grouppid] != pInfo[playerid][grouppid]) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: Player is not in your group.");
- format(str,sizeof(str),"[GROUP-ATTENTION(%s)]: %s named group leader has kicked '%s' named player from your group.",GroupInfo[id][gName],GetPlayerNamee(playerid),GetPlayerNamee(player));
- SendGroupMessage(0x8080FFFF, id, str);
- return 1;
- }
- CMD:gonline(playerid,params[])
- {
- new str[168],string[168 * 4];
- if(pInfo[playerid][grouppid] == 0) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: You are not in any group.");
- for(new i=0; i < MAX_PLAYERS; i++)
- {
- if(pInfo[playerid][grouppid] == pInfo[i][grouppid])
- {
- format(str,sizeof(str),"{FFFFFF}Online Member: %s\tID:%d\tRank:%s\n",GetPlayerNamee(i),i,pInfo[i][grouprank]);
- strcat(string, str);
- }
- }
- ShowPlayerDialog(playerid, 2, DIALOG_STYLE_MSGBOX, "{808080}trablon's Group System", str, "Close", "");
- return 1;
- }
- CMD:setrank(playerid,params[])
- {
- new str[32],id=pInfo[playerid][grouppid],player,string[128];
- if(strcmp(GroupInfo[id][gLeaderName], GetPlayerNamee(playerid)) != 0) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: You are not a leader of any group.");
- if(sscanf(params, "us[32]", player,str)) return SendClientMessage(playerid,COLOR_GREY,"[USAGE]: /setrank [Player ID/Player Name] [New Rank Name]");
- if(!IsPlayerConnected(player)) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: Player hasn't connected to server yet.");
- if(playerid == player) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: You can't kick yourself.");
- if(pInfo[player][grouppid] != pInfo[playerid][grouppid]) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: Player is not in your group.");
- format(pInfo[player][grouprank],32,str);
- format(string,sizeof(string),"[SYSTEM]: '%s' has changed your rank as '%s' in the group.",GetPlayerNamee(playerid),str);
- SendClientMessage(player,COLOR_GREEN,string);
- format(string,sizeof(string),"[SYSTEM]: You have changed '%s' named player's rank as '%s' in the group.",GetPlayerNamee(player),str);
- SendClientMessage(playerid,COLOR_GREEN,string);
- return 1;
- }
- CMD:gchatlock(playerid,params[])
- {
- new str[128],id=pInfo[playerid][grouppid];
- if(strcmp(GroupInfo[id][gLeaderName], GetPlayerNamee(playerid)) != 0) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: You are not a leader of any group.");
- if(GroupInfo[id][gchat] == 0)
- {
- GroupInfo[id][gchat] = 1;
- format(str,sizeof(str),"[GROUP-ATTENTION(%s)]: %s named group leader has locked the group chat.",GroupInfo[id][gName],GetPlayerNamee(playerid));
- SendGroupMessage(0x8080FFFF, id, str);
- return 1;
- }
- if(GroupInfo[id][gchat] == 1)
- {
- GroupInfo[id][gchat] = 0;
- format(str,sizeof(str),"[GROUP-ATTENTION(%s)]: %s named group leader has unlocked the group chat.",GroupInfo[id][gName],GetPlayerNamee(playerid));
- SendGroupMessage(0x8080FFFF, id, str);
- return 1;
- }
- return 1;
- }
- CMD:gtag(playerid,params[])
- {
- new str[5],id=pInfo[playerid][grouppid],string[128];
- if(strcmp(GroupInfo[id][gLeaderName], GetPlayerNamee(playerid)) != 0) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: You are not a leader of any group.");
- if(sscanf(params, "s[5]",str)) return SendClientMessage(playerid,COLOR_GREY,"[USAGE]: /gtag [New Tag for GROUP]");
- if(strlen(str) > 5 || strlen(str) < 5 ) return SendClientMessage(playerid,COLOR_RED,"[ERROR]: Your group tag must be set max. 5 character.");
- format(GroupInfo[id][gTAG],5,str);
- format(string,sizeof(string),"[GROUP-ATTENTION(%s)]: %s named group leader has changed group TAG as '%s'.",GroupInfo[id][gName],GetPlayerNamee(playerid),str);
- SendGroupMessage(0x8080FFFF, id, string);
- return 1;
- }
- //=========================================================================[END]
|