Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- X337 SIMPLE GANG SYSTEM
- Required Plugins : sscanf, mysql R39-2
- */
- #include <a_samp> // SA-MP Team
- #include <mysql> // BlueG
- #include <required/sscanf2> // Y-Less
- #include <YSI\y_iterate> // Y-Less
- #include <YSI\y_areas> // Y-Less
- #include <required/zcmd> // Zeex
- Escape(str[])
- {
- new s[512];
- mysql_real_escape_string(str, s);
- return s;
- }
- /*
- DATABASE CONNECTION
- You must define database connection below and recompile this filterscript
- */
- #define HOSTNAME "127.0.0.1"
- #define USERNAME "algemliam"
- #define PASSWORD "rbjcb1ztib"
- #define DATABASENAME "algemliam"
- /*
- -------------------------------------------------------------------------
- */
- #define AUTOSAVE 1 // Save Player, Gangs, Zones data automatically! (In - Minutes);
- #define MAX_ZONES 100 // Maximum Gang Zone
- #define MAX_GANGS 100 // Maximum Gang
- #define CAPTURE_TIME 60 // Capture Time
- #define LOCKED_MINUTES 30
- #define DIALOG_UNUSED 1337 // Dialog ID
- #define DEFAULT_ZONE_COLOR "000000AA" // Default hex colour for gang zone
- #define REQUIRED_SCORE 1000 // Required score to make a new gang
- #define MAX_GANG_MEMBER 32 // Maximum gang member
- #undef MAX_PLAYERS
- #define MAX_PLAYERS 100 // MAX_PLAYERS
- #define DIALOG_SAVEZONE DIALOG_UNUSED+1
- #define DIALOG_CREATEGANG DIALOG_UNUSED+2
- #define DIALOG_GANGTAG DIALOG_UNUSED+3
- #define DIALOG_GANGCOLOUR DIALOG_UNUSED+4
- #define DIALOG_HEXCOLOUR DIALOG_UNUSED+5
- #define DIALOG_CREATEGANG_CONFIRM DIALOG_UNUSED+6
- #define DIALOG_GCP DIALOG_UNUSED+7
- #define strcpy(%0,%1) \
- strcat((%0[0] = '\0', %0), %1)
- #define GANG_MEMBER 1
- #define GANG_STAFF 2
- #define GANG_LEADER 3
- #define COLOR_RED 0xAA3333AA
- #define COLOR_WHITE 0xFFFFFFFF
- enum _gangzone
- {
- ZoneID,
- Float:ZoneMinPos[2],
- Float:ZoneMaxPos[2],
- ZoneOwner,
- ZoneName[50],
- ZoneHolder,
- ZoneArea,
- ZoneLocked,
- bool:ZoneStatus,
- ZoneTimer
- }
- enum _player
- {
- PlayerID,
- bool:CreatingZone,
- PlayerText:TDZone[2],
- PlayerGang,
- PlayerStatus,
- GangRequest,
- PlayerText:CaptureTD[2]
- }
- enum _gang
- {
- GangID,
- GangColor[7],
- GangName[30],
- GangTag[4],
- GangScore,
- CurrentZone,
- GangTimer
- }
- new Player[MAX_PLAYERS][_player],
- GangZone[MAX_ZONES][_gangzone],
- Gang[MAX_GANGS][_gang],
- Iterator:GangZones<MAX_ZONES>,
- Iterator:Gangs<MAX_GANGS>,
- Float:MinPos[MAX_PLAYERS][2],
- Float:MaxPos[MAX_PLAYERS][2],
- PlayerZone[MAX_PLAYERS],
- TempGangName[MAX_PLAYERS][30],
- TempGangTag[MAX_PLAYERS][4],
- TempGangColour[MAX_PLAYERS][7],
- MySQL:connection,
- AutoSaveTimer;
- stock bool:CheckGang(gangid)
- {
- new t[56], query[128];
- format(query, sizeof(query), "SELECT count(*) AS `total` FROM `member` WHERE `gang` = %d", Gang[gangid][GangID]);
- mysql_query(query, -1, 0, connection);
- mysql_store_result(connection);
- if(mysql_num_rows(connection) > 0)
- mysql_fetch_field("total", t, connection);
- mysql_free_result(connection);
- return (strval(t) >= MAX_GANG_MEMBER) ? false : true;
- }
- stock IsAlpha(const string[])
- {
- for(new i = 0; i < strlen(string); i++)
- {
- if(string[i] == 45 || (string[i] >= 48 && string[i] <= 57) || (string[i] >= 65 && string[i] <= 90) || (string[i] >= 97 && string[i] <= 122))
- continue;
- return false;
- }
- return true;
- }
- stock HexToInt(string[]) // DracoBlue
- {
- if (string[0] == 0) return 0;
- new i, cur=1, res = 0;
- for (i=strlen(string);i>0;i--) {
- if (string[i-1]<58) res=res+cur*(string[i-1]-48); else res=res+cur*(string[i-1]-65+10);
- cur=cur*16;
- }
- return res;
- }
- stock GetGangID(id)
- {
- foreach(new i : Gangs)
- if(Gang[i][GangID] == id)
- return i;
- return -1;
- }
- stock GetID(const name[])
- {
- foreach(new i : Player)
- {
- if(!strcmp(name, Name(i)))
- return i;
- }
- return -1;
- }
- SaveStats(playerid)
- {
- new query[128], name[MAX_PLAYER_NAME], i = Player[playerid][PlayerGang];
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- if(Iter_Contains(Gangs, i) && i != -1)
- format(query, sizeof(query), "UPDATE `member` SET `gang` = %d, `status` = %d, `name` = '%s' WHERE `id` = '%d'", Gang[i][GangID], Player[playerid][PlayerStatus], Escape(name), Player[playerid][PlayerID]);
- else
- format(query, sizeof(query), "UPDATE `member` SET `gang` = -1, `name` = '%s' WHERE `id` = %d", Escape(name), Player[playerid][PlayerID]);
- mysql_query(query, -1, 0, connection);
- return 1;
- }
- SaveGang(i)
- {
- new query[128];
- format(query, sizeof(query), "UPDATE `gang` SET `color` = '%s', `score` = %d WHERE `id` = '%d'", Escape(Gang[i][GangColor]), Gang[i][GangScore], Gang[i][GangID]);
- mysql_query(query, -1, 0, connection);
- return 1;
- }
- SaveZone(i)
- {
- if(GangZone[i][ZoneOwner] != -1 && Iter_Contains(Gangs, GangZone[i][ZoneOwner]))
- {
- new query[128];
- format(query, sizeof(query), "UPDATE `zone` SET `owner` = '%d' WHERE `id` = '%d'", Gang[GangZone[i][ZoneOwner]][GangID], GangZone[i][ZoneID]);
- mysql_query(query, -1, 0, connection);
- }
- return 1;
- }
- LoadPlayerGang(playerid)
- {
- Player[playerid][PlayerGang] = -1;
- Player[playerid][PlayerStatus] = GANG_MEMBER;
- Player[playerid][GangRequest] = -1;
- new name[MAX_PLAYER_NAME], query[128];
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- format(query, sizeof(query), "SELECT * FROM `member` WHERE `name` = '%s'", Escape(name));
- mysql_query(query, -1, 0, connection);
- mysql_store_result(connection);
- new count = mysql_num_rows(connection);
- if(count > 0)
- {
- new xz[56], id;
- mysql_fetch_field("gang", xz, connection);
- id = strval(xz);
- foreach(new i : Gangs)
- {
- if(Gang[i][GangID] == id)
- {
- Player[playerid][PlayerGang] = i;
- break;
- }
- }
- mysql_fetch_field("status", xz, connection);
- Player[playerid][PlayerStatus] = strval(xz);
- mysql_fetch_field("id", xz, connection);
- Player[playerid][PlayerID] = strval(xz);
- }
- else
- {
- format(query, sizeof(query), "INSERT INTO `member`(`name`) VALUES ('%s')", Escape(name));
- mysql_query(query, -1, 0, connection);
- Player[playerid][PlayerID] = mysql_insert_id(connection);
- }
- mysql_free_result(connection);
- return 1;
- }
- SendGangMessage(i, msg[])
- {
- foreach(new p : Player)
- {
- if(i == Player[p][PlayerGang])
- SendClientMessage(p, -1, msg);
- }
- return 1;
- }
- stock Name(playerid)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- return name;
- }
- public OnFilterScriptInit()
- {
- SetTimer("LoadFS", 5000, 0);
- return 1;
- }
- public OnFilterScriptExit()
- {
- AutoSave();
- foreach(new i : GangZones)
- {
- GangZoneDestroy(GangZone[i][ZoneHolder]);
- Area_Delete(GangZone[i][ZoneArea]);
- }
- Iter_Clear(GangZones);
- foreach(new i : Player)
- {
- PlayerTextDrawHide(i, Player[i][TDZone][0]);
- PlayerTextDrawHide(i, Player[i][TDZone][1]);
- }
- KillTimer(AutoSaveTimer);
- print("\n========= |LOADING!| =========");
- print("=== |Gang System by Blade| ===");
- print("=== |SUCCESSFULLY LOADED!| ===\n");
- return 1;
- }
- COMMAND:creategang(playerid, params[])
- {
- if(GetPlayerScore(playerid) >= REQUIRED_SCORE)
- {
- if(Player[playerid][PlayerGang] == -1)
- ShowPlayerDialog(playerid, DIALOG_CREATEGANG, DIALOG_STYLE_INPUT, "Gang System - Gang Name", "Insert the gang name below :", "Submit", "Cancel");
- else
- SendClientMessage(playerid, COLOR_RED, "You are already in a gang!");
- }
- else
- {
- new string[128];
- format(string, sizeof(string), "You need atleast %d score to create a gang!", REQUIRED_SCORE);
- SendClientMessage(playerid, COLOR_RED, string);
- }
- return 1;
- }
- COMMAND:gangcolor(playerid, params[])
- {
- new i = Player[playerid][PlayerGang];
- if(i != -1)
- {
- new color[7];
- if(sscanf(params, "h", color) || strlen(params) != 6)
- SendClientMessage(playerid, COLOR_RED, "Invalid hex colour!");
- else
- {
- new msg[56];
- format(msg, sizeof(msg), "{%s}Your gang color has been changed!", params);
- SendClientMessage(playerid, -1, msg);
- format(Gang[i][GangColor], 7, "%s", params);
- }
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You must be a gang leader to use this command!");
- return 1;
- }
- COMMAND:changeleader(playerid, params[])
- {
- if(Player[playerid][PlayerGang] != -1)
- {
- if(Player[playerid][PlayerStatus] == GANG_LEADER)
- {
- new id;
- if(sscanf(params, "u", id))
- {
- SendClientMessage(playerid, COLOR_WHITE, "[SYNTAX] '/changeleader' <playerid>");
- }
- else
- {
- if(IsPlayerConnected(id))
- {
- if(Player[playerid][PlayerGang] == Player[id][PlayerGang])
- {
- Player[playerid][PlayerStatus] = GANG_MEMBER;
- Player[id][PlayerStatus] = GANG_LEADER;
- new msg[56];
- format(msg, sizeof(msg), "[HINT] You have promoted %s as new gang leader!", Name(id));
- SendClientMessage(playerid, COLOR_WHITE, msg);
- SendClientMessage(id, COLOR_WHITE, "[HINT] You have been promoted as new gang leader!");
- SaveStats(id);
- SaveStats(playerid);
- }
- else
- SendClientMessage(playerid, COLOR_RED, "That player isn't in your gang!");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "That player isn't connected!");
- }
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You must be a gang leader to use this command!");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You must be a gang member to use this command!");
- return 1;
- }
- COMMAND:territory(playerid, params[])
- {
- new msg[512], p;
- foreach(new i : GangZones)
- {
- p = GangZone[i][ZoneOwner];
- if(p == -1)
- format(msg, sizeof(msg), "%s{B7B7B7}%s (-)\n", msg, GangZone[i][ZoneName]);
- else
- format(msg, sizeof(msg), "%s{%s}%s (%s)\n", msg, Gang[p][GangColor], GangZone[i][ZoneName], Gang[p][GangName]);
- }
- ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Territory", msg, "Close", "");
- return 1;
- }
- COMMAND:gangmembers(playerid, params[])
- {
- new i = Player[playerid][PlayerGang];
- if(i != -1)
- {
- new query[600];
- format(query, sizeof(query), "SELECT * FROM `member` WHERE `gang` = %d", Gang[i][GangID]);
- mysql_query(query, -1, 0, connection);
- mysql_store_result(connection);
- format(query, sizeof(query), "{FFFFFF}");
- new count = mysql_num_rows(connection);
- if(count > 0)
- {
- new tempid, r = 1, row[1000];
- new id,
- n[56],
- st,
- g;
- while(mysql_fetch_row(row, "|", connection))
- {
- sscanf(row, "p<|>ds[56]dd", id, n, st, g);
- tempid = GetID(n);
- format(query, sizeof(query), "%s%d. %s ", query, r, n);
- if(IsPlayerConnected(tempid))
- strcat(query, "{FE9A2E}(ONLINE) ");
- else
- strcat(query, "{FF0000}(OFFLINE) ");
- if(st == GANG_LEADER)
- strcat(query, "{58D3F7} (LEADER) ");
- if(st == GANG_STAFF)
- strcat(query, "{58D3F7} (STAFF) ");
- strcat(query, "\n{FFFFFF}");
- r++;
- }
- ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Gang Members", query, "Close", "");
- }
- mysql_free_result(connection);
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You must be a gang member to use this command!");
- return 1;
- }
- COMMAND:gcp(playerid, params[])
- {
- new i = Player[playerid][PlayerGang];
- if(i != -1)
- {
- if(Iter_Contains(Gangs, i))
- {
- new msg[256];
- format(msg, sizeof(msg), "{FFFF00}Gang Name : {%s}%s {FFFFFF}", Gang[i][GangColor], Gang[i][GangName]);
- format(msg, sizeof(msg), "%s\n{FFFF00}Gang Tag : [%s]", msg, Gang[i][GangTag]);
- format(msg, sizeof(msg), "%s\n{FFFF00}Gang Score : %d", msg, Gang[i][GangScore]);
- format(msg, sizeof(msg), "%s\n{B7B7B7}Gang Member", msg);
- format(msg, sizeof(msg), "%s\n{B7B7B7}Territory", msg);
- ShowPlayerDialog(playerid, DIALOG_GCP, DIALOG_STYLE_LIST, "Gang Control Panel", msg, "Chooose", "Cancel");
- }
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You must be a gang member to use this command!");
- return 1;
- }
- COMMAND:leavegang(playerid, params[])
- {
- new i = Player[playerid][PlayerGang];
- if(i != -1)
- {
- if(Player[playerid][PlayerStatus] != GANG_LEADER)
- {
- new msg[56];
- format(msg, sizeof(msg), "{FF0000}(Gang Chat) %s(%i) has left the gang!", Name(playerid), playerid);
- SendGangMessage(Player[playerid][PlayerGang], msg);
- Player[playerid][PlayerGang] = -1;
- SaveStats(playerid);
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You cannot leave gang since you are Gang Leader!");
- }
- return 1;
- }
- COMMAND:disbandgang(playerid, params[])
- {
- new i = Player[playerid][PlayerGang];
- if(i != -1)
- {
- if(Player[playerid][PlayerStatus] == GANG_LEADER)
- {
- if(Gang[i][CurrentZone] == -1)
- {
- new query[256];
- format(query, sizeof(query), "{FF0000}(Gang Chat) %s has disbanded the gang!", Name(playerid));
- SendGangMessage(i, query);
- format(query, sizeof(query), "DELETE FROM `gang` WHERE `id` = %d", Gang[i][GangID]);
- mysql_query(query, -1, 0, connection);
- foreach(new p : Player)
- {
- if(Player[p][PlayerGang] == i)
- {
- Player[p][PlayerGang] = -1;
- Player[p][PlayerStatus] = GANG_MEMBER;
- }
- }
- format(query, sizeof(query), "UPDATE `member` SET `gang` = -1, `status` = 1 WHERE `gang` = %d", Gang[i][GangID]);
- mysql_query(query, -1, 0, connection);
- Iter_Remove(Gangs, i);
- foreach(new p : GangZones)
- {
- if(GangZone[p][ZoneOwner] == i)
- {
- GangZone[p][ZoneOwner] = -1;
- GangZoneShowForAll(GangZone[p][ZoneHolder], HexToInt(DEFAULT_ZONE_COLOR));
- }
- }
- }
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You must be gang leader to use this command!!");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You must be a gang leader to use this command!!");
- return 1;
- }
- COMMAND:topgang(playerid, params[])
- {
- new query[128];
- format(query, sizeof(query), "SELECT * FROM `gang` ORDER BY `score` DESC LIMIT 20");
- mysql_query(query, -1, 0, connection);
- mysql_store_result(connection);
- new ganglist[1600], count = mysql_num_rows(connection), TempColor[7], TempName[30], ts[56];
- if(count != 0)
- {
- new i = 1, row[1000];
- new id, ta;
- while(mysql_fetch_row(row, "|", connection))
- {
- sscanf(row, "p<|>ds[30]s[7]s[5]d", id, TempName, TempColor, ta, ts);
- format(ganglist, sizeof(ganglist), "%s%d. {FFFFFF}%s {FFFFFF}- Score : %d\n", ganglist, i, TempName, ts);
- i++;
- }
- format(ganglist, sizeof(ganglist), "%s\n* This top list updated every %d minutes", ganglist, AUTOSAVE);
- ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Top Gangs", ganglist, "Close", "");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "There is not any gang present right now!");
- mysql_free_result(connection);
- return 1;
- }
- COMMAND:gangrank(playerid, params[])
- {
- new TempName[30];
- if(sscanf(params, "s[30]", TempName))
- {
- SendClientMessage(playerid, COLOR_WHITE, "[SYNTAX] '/gangrank' <gang name>");
- }
- else
- {
- new query[512];
- format(query, sizeof(query), "SELECT `rank` FROM (SELECT `name`,`score`, @current := @current + 1 as `rank` from `gang`, (select @current := 0) r order by `score` desc) z WHERE `name` = '%s'", Escape(TempName));
- mysql_query(query, -1, 0, connection);
- mysql_store_result(connection);
- if(mysql_num_rows(connection) != 0)
- {
- new msg[56];
- mysql_fetch_field("rank", query, connection);
- format(msg, sizeof(msg), "{FFFF00}%s - {FFFF00}Rank : %d", TempName, strval(query));
- SendClientMessage(playerid, -1, msg);
- }
- else
- SendClientMessage(playerid, COLOR_RED, "Error 404! Gang name not found!");
- mysql_free_result(connection);
- }
- return 1;
- }
- COMMAND:promotestaff(playerid, params[])
- {
- if(Player[playerid][PlayerStatus] == GANG_LEADER)
- {
- new id;
- if(sscanf(params, "u", id))
- {
- SendClientMessage(playerid, COLOR_RED, "[SYNTAX] '/promotestaff' <playerid>");
- }
- else
- {
- if(IsPlayerConnected(id))
- {
- if(Player[id][PlayerGang] == Player[playerid][PlayerGang])
- {
- if(id != playerid)
- {
- if(Player[id][PlayerStatus] != GANG_STAFF)
- {
- SendClientMessage(playerid, COLOR_WHITE, "[HINT] You have promoted %s to Gang Staff!");
- SendClientMessage(id, COLOR_WHITE, "[HINT] You have been promoted to a Gang Staff!");
- Player[id][PlayerStatus] = GANG_STAFF;
- SaveStats(id);
- }
- else
- SendClientMessage(playerid, COLOR_RED, "That player is already a gang staff!");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You can't promote yourself!");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "That player isn't your gang member!");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "That player isn't connected!");
- }
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You must be a gang leader to use this command!!");
- return 1;
- }
- COMMAND:demotestaff(playerid, params[])
- {
- if(Player[playerid][PlayerStatus] == GANG_LEADER)
- {
- new id;
- if(sscanf(params, "u", id))
- {
- SendClientMessage(playerid, COLOR_WHITE, "[SYNTAX] '/demotestaff' <playerid>");
- }
- else
- {
- if(IsPlayerConnected(id))
- {
- if(Player[id][PlayerGang] == Player[playerid][PlayerGang])
- {
- if(id != playerid)
- {
- if(Player[id][PlayerStatus] == GANG_STAFF)
- {
- SendClientMessage(playerid, COLOR_WHITE, "[HINT] You have demoted %s from gang staff!");
- SendClientMessage(id, COLOR_WHITE, "[HINT] You have been demoted from gang staff!");
- Player[id][PlayerStatus] = GANG_MEMBER;
- SaveStats(id);
- }
- else
- SendClientMessage(playerid, COLOR_RED, "That player isn't a gang staff!");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You can't demote yourself!");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "That player isn't your gang member!");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "That player isn't connected!");
- }
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You must be a gang leader to use this command!!");
- return 1;
- }
- COMMAND:createzone(playerid, params[])
- {
- if(IsPlayerAdmin(playerid))
- {
- if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
- {
- if(!Player[playerid][CreatingZone])
- {
- new Float:z;
- Player[playerid][CreatingZone] = true;
- new msg[128];
- format(msg, sizeof(msg), "Gangzone Mode! Use arrow keys to make the zone bigger or less");
- SendClientMessage(playerid, -1, msg);
- format(msg, sizeof(msg), "Using ~k~~PED_FIREWEAPON~ + Arrow keys you minus the height or width.");
- SendClientMessage(playerid, -1, msg);
- format(msg, sizeof(msg), "Press ~k~~VEHICLE_ENTER_EXIT~ when you are done!");
- SendClientMessage(playerid, -1, msg);
- GetPlayerPos(playerid, MinPos[playerid][0], MinPos[playerid][1], z);
- GetPlayerPos(playerid, MaxPos[playerid][0], MaxPos[playerid][1], z);
- TogglePlayerControllable(playerid, false);
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You are already in create zone mode, /cancelzone to cancel");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You must be onfoot to create gang zone");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You don't have correct permissions to use this command!");
- return 1;
- }
- COMMAND:ganginvite(playerid, params[])
- {
- new p;
- if(Player[playerid][PlayerStatus] >= 2 && Player[playerid][PlayerGang] != -1)
- {
- if(sscanf(params, "d", p))
- {
- SendClientMessage(playerid, COLOR_WHITE, "[SYNTAX] '/ganginvite' <playerid>");
- }
- else
- {
- if(IsPlayerConnected(p))
- {
- if(Player[p][PlayerGang] == -1)
- {
- if(CheckGang(Player[playerid][PlayerGang]))
- {
- new msg[128];
- format(msg, sizeof(msg), "{A7C4E4}%s want you to join %s gang! (/acceptgang)", Name(playerid), Gang[Player[playerid][PlayerGang]][GangName]);
- SendClientMessage(p, COLOR_WHITE, msg);
- format(msg, sizeof(msg), "[HINT] You have invited %s to join your gang!", Name(p));
- SendClientMessage(playerid, COLOR_WHITE, msg);
- Player[p][GangRequest] = Player[playerid][PlayerGang];
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You cannot invite anyone else since your gang is full!");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "That player already a gang member!");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "That player isn't connected!");
- }
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You must be a gang leader or gang staff to use this command!");
- return 1;
- }
- COMMAND:acceptgang(playerid, params[])
- {
- if(Player[playerid][PlayerGang] == -1)
- {
- if(Player[playerid][GangRequest] != -1)
- {
- if(Iter_Contains(Gangs, Player[playerid][GangRequest]))
- {
- if(CheckGang(Player[playerid][GangRequest]))
- {
- Player[playerid][PlayerGang] = Player[playerid][GangRequest];
- Player[playerid][GangRequest] = -1;
- Player[playerid][PlayerStatus] = GANG_MEMBER;
- new msg[56];
- format(msg, sizeof(msg), "{FF0000}(Gang Chat) %s has joined the gang!", Name(playerid));
- SendGangMessage(Player[playerid][PlayerGang], msg);
- SaveStats(playerid);
- }
- }
- else
- SendClientMessage(playerid, COLOR_RED, "ERROR 404: Invalid Session!");
- }
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You are already member of another gang!");
- return 1;
- }
- COMMAND:g(playerid, params[])
- {
- if(!params[1])
- SendClientMessage(playerid, COLOR_WHITE, "[SYNTAX] '/g' <message>");
- else
- {
- new i = Player[playerid][PlayerGang];
- if(i != -1)
- {
- new msg[128];
- format(msg, sizeof(msg), "{FF0000}(Gang Chat) %s(%i): {FFFFFF}%s", Name(playerid), playerid, params);
- SendGangMessage(Player[playerid][PlayerGang], msg);
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You must be a gang member to use this command!");
- }
- return 1;
- }
- COMMAND:capture(playerid, params[])
- {
- if(Player[playerid][PlayerGang] != -1)
- {
- if(Gang[Player[playerid][PlayerGang]][CurrentZone] == -1)
- {
- new bool:found = false, i, total = 0, area = Area_GetPlayerAreas(playerid, 0);
- foreach(i : GangZones)
- {
- if(area == GangZone[i][ZoneArea])
- {
- found = true;
- break;
- }
- }
- if(GetPlayerTeam(playerid) == 1 || GetPlayerTeam(playerid) == 2 || GetPlayerTeam(playerid) == 3 || GetPlayerTeam(playerid) == 4 || GetPlayerTeam(playerid) == 5 || GetPlayerTeam(playerid) == 6 || GetPlayerTeam(playerid) == 7)
- {
- return SendClientMessage(playerid, COLOR_RED, "You need to be a Civilian to capture zones!");
- }
- if(IsPlayerInAnyVehicle(playerid))
- {
- return SendClientMessage(playerid, COLOR_RED, "You cannot capture zones whilst in vehicle!");
- }
- if(found)
- {
- if(!GangZone[i][ZoneStatus])
- {
- if(GangZone[i][ZoneOwner] != Player[playerid][PlayerGang])
- {
- new tick = GetTickCount() - GangZone[i][ZoneLocked], msg[128];
- if(tick > (60000 * LOCKED_MINUTES))
- {
- foreach(new p : Player)
- {
- if(Player[p][PlayerGang] == Player[playerid][PlayerGang])
- {
- if(Area_GetPlayerAreas(p, 0) == area)
- total++;
- }
- }
- if(total < 1)
- {
- SendClientMessage(playerid, COLOR_RED, "You need atleast 3 members to capture this zone!");
- return 1;
- }
- format(msg, sizeof(msg), "Capturing ~g~%s", GangZone[i][ZoneName]);
- foreach(new p : Player)
- {
- if(Player[p][PlayerGang] == Player[playerid][PlayerGang])
- {
- PlayerTextDrawSetString(p, Player[p][CaptureTD][0], msg);
- PlayerTextDrawSetString(p, Player[p][CaptureTD][1], "-");
- PlayerTextDrawShow(p, Player[p][CaptureTD][0]);
- PlayerTextDrawShow(p, Player[p][CaptureTD][1]);
- Gang[Player[playerid][PlayerGang]][GangTimer] = CAPTURE_TIME;
- }
- }
- format(msg, sizeof(msg), "{A7C4E4}%s gang is trying to capture %s zone with %d gang members!", Gang[Player[playerid][PlayerGang]][GangName], GangZone[i][ZoneName], total);
- SendClientMessageToAll(-1, msg);
- GangZone[i][ZoneStatus] = true;
- GangZone[i][ZoneTimer] = SetTimerEx("AttackZone", 1000, true, "dd", Player[playerid][PlayerGang], i);
- Gang[Player[playerid][PlayerGang]][CurrentZone] = i;
- GangZoneFlashForAll(GangZone[i][ZoneHolder], HexToInt("FF0000AA"));
- if(GangZone[i][ZoneOwner] != -1)
- {
- format(msg, sizeof(msg), "{A7C4E4}[ALERT] %s gang is trying to capture your territory in %s!", Gang[Player[playerid][PlayerGang]][GangName], GangZone[i][ZoneName]);
- SendGangMessage(GangZone[i][ZoneOwner], msg);
- }
- }
- else
- {
- format(msg, sizeof(msg), "This Zone is locked, Please wait %.2f minute(s) to capture this zone!", floatdiv(60000 * LOCKED_MINUTES - tick, 60 * 1000));
- SendClientMessage(playerid, COLOR_RED, msg);
- }
- }
- else
- SendClientMessage(playerid, COLOR_RED, "Your gang already owned this zone!");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "Someone is already trying to capture this zone!");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You must be in gang zone to use this command!");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "Your gang already started a war, please wait!");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You must be a gang member to use this command!");
- return 1;
- }
- COMMAND:okickmember(playerid, params[])
- {
- new TempName[MAX_PLAYER_NAME];
- if(Player[playerid][PlayerStatus] == GANG_STAFF)
- {
- if(sscanf(params, "s[24]", TempName))
- {
- SendClientMessage(playerid, COLOR_WHITE, "[SYNTAX] '/okickmember' <member name>");
- }
- else
- {
- new query[256], i = Player[playerid][PlayerGang];
- format(query, sizeof(query), "SELECT * FROM `member` WHERE `name` = '%s'", Escape(TempName));
- mysql_query(query, -1, 0, connection);
- mysql_store_result(connection);
- if(mysql_num_rows(connection) != 0)
- {
- mysql_fetch_field("gang", query, connection);
- if(strval(query) == Gang[i][GangID])
- {
- mysql_fetch_field("id", query, connection);
- if(strval(query) != Player[playerid][PlayerID])
- {
- mysql_fetch_field("status", query, connection);
- if(strval(query) != GANG_LEADER)
- {
- format(query, sizeof(query), "UPDATE `member` SET `gang` = -1, `status` = 1 WHERE `name` = '%s'", Escape(TempName));
- mysql_query(query, -1, 0, connection);
- format(query, sizeof(query), "{FF0000}(Gang Chat) %s has been kicked from gang!", TempName);
- SendGangMessage(i, query);
- new p = GetID(TempName);
- if(IsPlayerConnected(p))
- {
- SendClientMessage(p, COLOR_WHITE, "[HINT] You have been kicked from gang!");
- Player[p][PlayerGang] = -1;
- Player[p][PlayerStatus] = GANG_MEMBER;
- }
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You can't kick gang leader!");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You can't kick yourself!");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "That player isn't in your gang!");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "ERROR 404: Name not found!");
- mysql_free_result(connection);
- }
- else
- {
- SendClientMessage(playerid, COLOR_RED, "You must be a gang leader or gang staff to use this command!");
- }
- }
- return 1;
- }
- COMMAND:kickmember(playerid, params[])
- {
- new p;
- if(Player[playerid][PlayerStatus] != GANG_MEMBER && Player[playerid][PlayerGang] != -1)
- {
- if(sscanf(params, "d", p))
- {
- SendClientMessage(playerid, COLOR_WHITE, "[SYNTAX] '/kickmember' <playerid>");
- }
- else
- {
- if(IsPlayerConnected(p))
- {
- if(Player[playerid][PlayerGang] == Player[p][PlayerGang])
- {
- if(playerid != p)
- {
- if(Player[p][PlayerStatus] != GANG_LEADER)
- {
- new msg[56];
- format(msg, sizeof(msg), "{FF0000}(Gang Chat) %s has been kicked from gang!", Name(p));
- SendGangMessage(Player[playerid][PlayerGang], msg);
- Player[p][PlayerGang] = -1;
- Player[p][PlayerStatus] = GANG_MEMBER;
- SaveStats(p);
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You can't kick gang leader!");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You can't kick yourself!");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "That player isn't in your gang!");
- }
- else
- SendClientMessage(playerid, COLOR_RED, "That player isn't connected!");
- }
- }
- else
- SendClientMessage(playerid, COLOR_RED, "You must be a gang leader to use this command!");
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- Player[playerid][CreatingZone] = false;
- Player[playerid][TDZone][0] = CreatePlayerTextDraw(playerid, 320.000000, 376.666290, "ZONE NAME");
- PlayerTextDrawLetterSize(playerid, Player[playerid][TDZone][0], 0.400000, 1.600000);
- PlayerTextDrawAlignment(playerid, Player[playerid][TDZone][0], 2);
- PlayerTextDrawColor(playerid, Player[playerid][TDZone][0], -1);
- PlayerTextDrawSetShadow(playerid, Player[playerid][TDZone][0], 0);
- PlayerTextDrawSetOutline(playerid, Player[playerid][TDZone][0], 1);
- PlayerTextDrawBackgroundColor(playerid, Player[playerid][TDZone][0], 255);
- PlayerTextDrawFont(playerid, Player[playerid][TDZone][0], 3);
- PlayerTextDrawSetProportional(playerid, Player[playerid][TDZone][0], 1);
- PlayerTextDrawSetShadow(playerid, Player[playerid][TDZone][0], 0);
- Player[playerid][TDZone][1] = CreatePlayerTextDraw(playerid, 318.000000, 391.599609, "Owned By : ~r~Unowned");
- PlayerTextDrawLetterSize(playerid, Player[playerid][TDZone][1], 0.264999, 1.310666);
- PlayerTextDrawAlignment(playerid, Player[playerid][TDZone][1], 2);
- PlayerTextDrawColor(playerid, Player[playerid][TDZone][1], -1);
- PlayerTextDrawSetShadow(playerid, Player[playerid][TDZone][1], 1);
- PlayerTextDrawSetOutline(playerid, Player[playerid][TDZone][1], 0);
- PlayerTextDrawBackgroundColor(playerid, Player[playerid][TDZone][1], 255);
- PlayerTextDrawFont(playerid, Player[playerid][TDZone][1], 1);
- PlayerTextDrawSetProportional(playerid, Player[playerid][TDZone][1], 1);
- PlayerTextDrawSetShadow(playerid, Player[playerid][TDZone][1], 1);
- Player[playerid][CaptureTD][0] = CreatePlayerTextDraw(playerid, 633.000000, 358.000030, "");
- PlayerTextDrawLetterSize(playerid, Player[playerid][CaptureTD][0], 0.323000, 1.357333);
- PlayerTextDrawAlignment(playerid, Player[playerid][CaptureTD][0], 3);
- PlayerTextDrawColor(playerid, Player[playerid][CaptureTD][0], -1);
- PlayerTextDrawSetShadow(playerid, Player[playerid][CaptureTD][0], 1);
- PlayerTextDrawSetOutline(playerid, Player[playerid][CaptureTD][0], 0);
- PlayerTextDrawBackgroundColor(playerid, Player[playerid][CaptureTD][0], 255);
- PlayerTextDrawFont(playerid, Player[playerid][CaptureTD][0], 1);
- PlayerTextDrawSetProportional(playerid, Player[playerid][CaptureTD][0], 1);
- PlayerTextDrawSetShadow(playerid, Player[playerid][CaptureTD][0], 1);
- Player[playerid][CaptureTD][1] = CreatePlayerTextDraw(playerid, 633.000000, 343.999938, "00:00");
- PlayerTextDrawLetterSize(playerid, Player[playerid][CaptureTD][1], 0.400000, 1.600000);
- PlayerTextDrawAlignment(playerid, Player[playerid][CaptureTD][1], 3);
- PlayerTextDrawColor(playerid, Player[playerid][CaptureTD][1], -1);
- PlayerTextDrawSetShadow(playerid, Player[playerid][CaptureTD][1], 0);
- PlayerTextDrawSetOutline(playerid, Player[playerid][CaptureTD][1], 1);
- PlayerTextDrawBackgroundColor(playerid, Player[playerid][CaptureTD][1], 255);
- PlayerTextDrawFont(playerid, Player[playerid][CaptureTD][1], 3);
- PlayerTextDrawSetProportional(playerid, Player[playerid][CaptureTD][1], 1);
- PlayerTextDrawSetShadow(playerid, Player[playerid][CaptureTD][1], 0);
- LoadPlayerGang(playerid);
- foreach(new i : GangZones)
- {
- if(GangZone[i][ZoneOwner] == -1)
- GangZoneShowForPlayer(playerid, GangZone[i][ZoneHolder], HexToInt(DEFAULT_ZONE_COLOR));
- else
- {
- new colour[9];
- format(colour, 9, "%s50", Gang[GangZone[i][ZoneOwner]][GangColor]);
- GangZoneShowForPlayer(playerid, GangZone[i][ZoneHolder], HexToInt(colour));
- }
- }
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- new i = Player[playerid][PlayerGang], msg[56];
- SaveStats(playerid);
- if(Iter_Contains(Gangs, i) && i != -1)
- {
- new zone = Gang[i][CurrentZone], total = -1;
- if(zone != -1)
- {
- total = 0;
- foreach(new p : Player)
- {
- if(Player[p][PlayerGang] == Player[playerid][PlayerGang])
- {
- if(Area_GetPlayerAreas(p, 0) == GangZone[zone][ZoneArea])
- total++;
- }
- }
- }
- if(total == 0)
- {
- format(msg, sizeof(msg), "{A7C4E4}%s Gang failed to capture %s zone!", Gang[Player[playerid][PlayerGang]][GangName], GangZone[zone][ZoneName]);
- SendClientMessageToAll(COLOR_WHITE, msg);
- format(msg, sizeof(msg), "{A7C4E4}%s zone will be locked for %d minutes!", GangZone[zone][ZoneName], LOCKED_MINUTES);
- SendClientMessageToAll(COLOR_WHITE, msg);
- Gang[Player[playerid][PlayerGang]][CurrentZone] = -1;
- GangZone[zone][ZoneLocked] = GetTickCount();
- GangZone[zone][ZoneStatus] = false;
- GangZoneStopFlashForAll(GangZone[zone][ZoneHolder]);
- }
- format(msg, sizeof(msg), "{FF0000}(Gang Chat) %s has been logged out!", Name(playerid));
- SendGangMessage(i, msg);
- }
- return 1;
- }
- public OnPlayerUpdate(playerid) //RyDer
- {
- if(Player[playerid][CreatingZone])
- {
- new Keys, UpDown, LeftRight;
- GetPlayerKeys(playerid, Keys, UpDown, LeftRight);
- TogglePlayerControllable(playerid, false);
- if(LeftRight == KEY_LEFT)
- {
- MinPos[playerid][0] -= 8.0;
- GangZoneDestroy(PlayerZone[playerid]);
- PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
- GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
- }
- else if(LeftRight & KEY_LEFT && Keys & KEY_FIRE)
- {
- MinPos[playerid][0] += 8.0;
- GangZoneDestroy(PlayerZone[playerid]);
- PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
- GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
- }
- else if(LeftRight == KEY_RIGHT)
- {
- MaxPos[playerid][0] += 8.0;
- GangZoneDestroy(PlayerZone[playerid]);
- PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
- GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
- }
- else if(LeftRight & KEY_RIGHT && Keys & KEY_FIRE)
- {
- MaxPos[playerid][0] -= 8.0;
- GangZoneDestroy(PlayerZone[playerid]);
- PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
- GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
- }
- else if(UpDown == KEY_UP)
- {
- MaxPos[playerid][1] += 8.0;
- GangZoneDestroy(PlayerZone[playerid]);
- PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
- GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
- }
- else if(UpDown & KEY_UP && Keys & KEY_FIRE)
- {
- MaxPos[playerid][1] -= 8.0;
- GangZoneDestroy(PlayerZone[playerid]);
- PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
- GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
- }
- else if(UpDown == KEY_DOWN)
- {
- MinPos[playerid][1] -= 8.0;
- GangZoneDestroy(PlayerZone[playerid]);
- PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
- GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
- }
- else if(UpDown & KEY_DOWN && Keys & KEY_FIRE)
- {
- MinPos[playerid][1] += 8.0;
- GangZoneDestroy(PlayerZone[playerid]);
- PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
- GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
- }
- else if(Keys & KEY_SECONDARY_ATTACK)
- {
- TogglePlayerControllable(playerid, true);
- Player[playerid][CreatingZone] = false;
- ShowPlayerDialog(playerid, DIALOG_SAVEZONE, DIALOG_STYLE_INPUT, "Gang System", "Input gang zone name below, press \"Delete\" to delete current zone", "Save", "Delete");
- }
- }
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- if(Player[playerid][PlayerGang] != -1)
- {
- new zone = Gang[Player[playerid][PlayerGang]][CurrentZone], total = -1;
- if(zone != -1)
- {
- total = 0;
- foreach(new p : Player)
- {
- if(Player[p][PlayerGang] == Player[playerid][PlayerGang])
- {
- if(Area_GetPlayerAreas(p, 0) == GangZone[zone][ZoneArea] && !IsPlayerInAnyVehicle(p))
- total++;
- }
- }
- }
- if(total == 0)
- {
- new msg[128];
- format(msg, sizeof(msg), "{A7C4E4}%s Gang failed to capture %s zone!", Gang[Player[playerid][PlayerGang]][GangName], GangZone[zone][ZoneName]);
- SendClientMessageToAll(-1, msg);
- format(msg, sizeof(msg), "{A7C4E4}%s zone will be locked for %d minutes!", GangZone[zone][ZoneName], LOCKED_MINUTES);
- SendClientMessageToAll(-1, msg);
- Gang[Player[playerid][PlayerGang]][CurrentZone] = -1;
- GangZone[zone][ZoneLocked] = GetTickCount();
- GangZone[zone][ZoneStatus] = false;
- GangZoneStopFlashForAll(GangZone[zone][ZoneHolder]);
- }
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case DIALOG_SAVEZONE:
- {
- if(response)
- {
- if(strlen(inputtext) < 3 || strlen(inputtext) > 50)
- ShowPlayerDialog(playerid, DIALOG_SAVEZONE, DIALOG_STYLE_INPUT, "Gang System", "{FF0000}Gang zone name must be between 3 - 50 characters! \nInput gang zone name below, press \"Delete\" to delete current zone", "Save", "Delete");
- else
- {
- new query[256];
- format(query, sizeof(query), "INSERT INTO `zone` (`minx`, `miny`, `maxx`, `maxy`, `name`) VALUES('%f', '%f', '%f', '%f', '%s')", MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1], Escape(inputtext));
- mysql_query(query, -1, 0, connection);
- mysql_store_result(connection);
- GangZoneDestroy(PlayerZone[playerid]);
- new i = Iter_Free(GangZones);
- GangZone[i][ZoneMinPos][0] = MinPos[playerid][0];
- GangZone[i][ZoneMinPos][1] = MinPos[playerid][1];
- GangZone[i][ZoneMaxPos][0] = MaxPos[playerid][0];
- GangZone[i][ZoneMaxPos][1] = MaxPos[playerid][1];
- GangZone[i][ZoneOwner] = -1;
- format(GangZone[i][ZoneName], 50, "%s", inputtext);
- GangZone[i][ZoneID] = mysql_insert_id(connection);
- GangZone[i][ZoneArea] = Area_AddBox(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
- GangZone[i][ZoneHolder] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
- GangZone[i][ZoneLocked] = 0;
- GangZone[i][ZoneStatus] = false;
- GangZoneShowForAll(GangZone[i][ZoneHolder], HexToInt(DEFAULT_ZONE_COLOR));
- mysql_free_result(connection);
- Iter_Add(GangZones, i);
- }
- }
- else
- GangZoneDestroy(PlayerZone[playerid]);
- }
- case DIALOG_CREATEGANG:
- {
- if(response)
- {
- if(strlen(inputtext) < 5 || strlen(inputtext) > 30)
- {
- ShowPlayerDialog(playerid, DIALOG_CREATEGANG, DIALOG_STYLE_INPUT, "Gang System - Gang Name", "{FF0000}Gang name must be between 5 - 30 characters! \nInsert the gang name below :", "Submit", "Cancel");
- }
- else if(!IsAlpha(inputtext))
- {
- ShowPlayerDialog(playerid, DIALOG_CREATEGANG, DIALOG_STYLE_INPUT, "Gang System - Gang Name", "{FF0000}Please insert only a-z,A-Z,0-9 character! \nInsert the gang name below :", "Submit", "Cancel");
- }
- else
- {
- strcpy(TempGangName[playerid], inputtext);
- ShowPlayerDialog(playerid, DIALOG_GANGTAG, DIALOG_STYLE_INPUT, "Gang System - Gang Tag", "Insert the gang tag below :", "Submit", "Cancel");
- }
- }
- }
- case DIALOG_GANGTAG:
- {
- if(response)
- {
- if(strlen(inputtext) < 1 || strlen(inputtext) > 3)
- {
- ShowPlayerDialog(playerid, DIALOG_GANGTAG, DIALOG_STYLE_INPUT, "Gang System - Gang Tag", "{FF0000}Gang tag must be between 1 - 3 character! \nInsert the gang tag below :", "Submit", "Cancel");
- }
- else if(!IsAlpha(inputtext))
- {
- ShowPlayerDialog(playerid, DIALOG_GANGTAG, DIALOG_STYLE_INPUT, "Gang System - Gang Tag", "{FF0000}Please insert only a-z,A-Z,0-9 character! \nInsert the gang tag below :", "Submit", "Cancel");
- }
- else
- {
- strcpy(TempGangTag[playerid], inputtext);
- ShowPlayerDialog(playerid, DIALOG_GANGCOLOUR, DIALOG_STYLE_LIST, "Gang System - Gang Colour",
- "{00FFFF}Aqua \n{000000}Black \n{0000FF}Blue \n{A52A2A}Brown \n{FF0000}Red \n{FFFFFF}Use HEX Colour", "Choose", "Cancel");
- }
- }
- }
- case DIALOG_GANGCOLOUR:
- {
- if(response)
- {
- switch(listitem)
- {
- case 0:
- strcpy(TempGangColour[playerid], "00FFFF");
- case 1:
- strcpy(TempGangColour[playerid], "000000");
- case 2:
- strcpy(TempGangColour[playerid], "0000FF");
- case 3:
- strcpy(TempGangColour[playerid], "A52A2A");
- case 4:
- strcpy(TempGangColour[playerid], "FF0000");
- case 5:
- {
- ShowPlayerDialog(playerid, DIALOG_HEXCOLOUR, DIALOG_STYLE_INPUT, "Gang System - Hex Colour", "Enter hexadecimal colour below :", "Submit", "Back");
- }
- }
- if(listitem != 5)
- {
- new msg[128];
- format(msg, sizeof(msg), "Are you sure you want to make a gang? \
- \nGang Name : %s \
- \nGang Tag : [%s] \
- \nGang Colour : {%s}%s", TempGangName[playerid], TempGangTag[playerid], TempGangColour[playerid], TempGangColour[playerid]);
- ShowPlayerDialog(playerid, DIALOG_CREATEGANG_CONFIRM, DIALOG_STYLE_MSGBOX, "Gang System - Create Gang", msg, "Sure", "Cancel");
- }
- }
- }
- case DIALOG_HEXCOLOUR:
- {
- if(response)
- {
- if(strlen(inputtext) != 6)
- ShowPlayerDialog(playerid, DIALOG_HEXCOLOUR, DIALOG_STYLE_INPUT, "Gang System - Hex Colour", "{FF0000}Hex colour must be 6 character!\n{FFFFFF}Enter hexadecimal colour below :", "Submit", "Back");
- else
- {
- if(sscanf(inputtext, "h", TempGangColour[playerid]))
- ShowPlayerDialog(playerid, DIALOG_HEXCOLOUR, DIALOG_STYLE_INPUT, "Gang System - Hex Colour", "{FF0000}Invalid HEX colour!\n{FFFFFF}Enter hexadecimal colour below :", "Submit", "Back");
- else
- {
- new msg[128];
- format(msg, sizeof(msg), "Are you sure you want to make a gang? \
- \nGang Name : %s \
- \nGang Tag : [%s] \
- \nGang Colour : {%s}%s", TempGangName[playerid], TempGangTag[playerid], TempGangColour[playerid], TempGangColour[playerid]);
- ShowPlayerDialog(playerid, DIALOG_CREATEGANG_CONFIRM, DIALOG_STYLE_MSGBOX, "Gang System - Create Gang", msg, "Sure", "Cancel");
- }
- }
- }
- else
- {
- ShowPlayerDialog(playerid, DIALOG_GANGCOLOUR, DIALOG_STYLE_LIST, "Gang System - Gang Colour",
- "{00FFFF}Aqua \n{000000}Black \n{0000FF}Blue \n{A52A2A}Brown \n{FF0000}Red \n{FFFFFF}Use HEX Colour", "Choose", "Cancel");
- }
- }
- case DIALOG_CREATEGANG_CONFIRM:
- {
- if(response)
- {
- new bool:found = false;
- foreach(new i : Gangs)
- {
- if(!strcmp(Gang[i][GangName], TempGangName[playerid], true))
- {
- found = true;
- SendClientMessage(playerid, COLOR_RED, "Gang Name is already taken!");
- break;
- }
- if(!strcmp(Gang[i][GangTag], TempGangTag[playerid], true))
- {
- found = true;
- SendClientMessage(playerid, COLOR_RED, "Gang Tag is already taken!");
- break;
- }
- }
- if(!found)
- {
- new query[256];
- format(query, sizeof(query), "INSERT INTO `gang` (`name`, `color`, `tag`) VALUES('%s', '%s', '%s')", Escape(TempGangName[playerid]), Escape(TempGangColour[playerid]), Escape(TempGangTag[playerid]));
- mysql_query(query, -1, 0, connection);
- mysql_store_result(connection);
- new i = Iter_Free(Gangs);
- Gang[i][GangColor][0] = EOS;
- strcat(Gang[i][GangColor][0], TempGangColour[playerid]);
- Gang[i][GangID] = mysql_insert_id(connection);
- Gang[i][GangName] = TempGangName[playerid];
- Gang[i][GangScore] = 0;
- Gang[i][GangTag] = TempGangTag[playerid];
- Gang[i][CurrentZone] = -1;
- Player[playerid][PlayerGang] = i;
- Player[playerid][PlayerStatus] = GANG_LEADER;
- Iter_Add(Gangs, i);
- format(query, sizeof(query), "{%s}[%s]%s {A7C4E4}Gang has been created!", TempGangColour[playerid], TempGangTag[playerid], TempGangName[playerid]);
- SendClientMessageToAll(-1, query);
- mysql_free_result(connection);
- SaveStats(playerid);
- }
- }
- }
- case DIALOG_GCP:
- {
- if(response)
- {
- switch(listitem)
- {
- case 3:
- cmd_gangmembers(playerid, "");
- case 4:
- cmd_territory(playerid, "");
- }
- }
- }
- }
- return 1;
- }
- public OnPlayerEnterArea(playerid, areaid)
- {
- foreach(new i : GangZones)
- {
- if(areaid == GangZone[i][ZoneArea])
- {
- PlayerTextDrawSetString(playerid, Player[playerid][TDZone][0], GangZone[i][ZoneName]);
- new msg[128];
- if(GangZone[i][ZoneOwner] == -1)
- format(msg, sizeof(msg), "Owned by : ~r~Unowned");
- else
- format(msg, sizeof(msg), "Owned by : ~r~%s", Gang[GangZone[i][ZoneOwner]][GangName]);
- PlayerTextDrawSetString(playerid, Player[playerid][TDZone][1], msg);
- PlayerTextDrawShow(playerid, Player[playerid][TDZone][0]);
- PlayerTextDrawShow(playerid, Player[playerid][TDZone][1]);
- return 1;
- }
- }
- return 1;
- }
- public OnPlayerLeaveArea(playerid, areaid)
- {
- PlayerTextDrawHide(playerid, Player[playerid][TDZone][0]);
- PlayerTextDrawHide(playerid, Player[playerid][TDZone][1]);
- if(Player[playerid][PlayerGang] != -1)
- {
- new zone = Gang[Player[playerid][PlayerGang]][CurrentZone], total = -1;
- if(zone != -1)
- {
- total = 0;
- foreach(new p : Player)
- {
- if(Player[p][PlayerGang] == Player[playerid][PlayerGang])
- {
- if(Area_GetPlayerAreas(p, 0) == GangZone[zone][ZoneArea] && !IsPlayerInAnyVehicle(p))
- total++;
- }
- }
- }
- if(total == 0)
- {
- new msg[128];
- format(msg, sizeof(msg), "{A7C4E4}%s gang failed to capture %s zone!", Gang[Player[playerid][PlayerGang]][GangName], GangZone[zone][ZoneName]);
- SendClientMessageToAll(-1, msg);
- format(msg, sizeof(msg), "{A7C4E4}%s zone will be locked for %d minutes!", GangZone[zone][ZoneName], LOCKED_MINUTES);
- SendClientMessageToAll(-1, msg);
- Gang[Player[playerid][PlayerGang]][CurrentZone] = -1;
- GangZone[zone][ZoneLocked] = GetTickCount();
- GangZone[zone][ZoneStatus] = false;
- GangZoneStopFlashForAll(GangZone[zone][ZoneHolder]);
- }
- }
- return 1;
- }
- forward AttackZone(gangid, zoneid);
- public AttackZone(gangid, zoneid)
- {
- if(Gang[gangid][CurrentZone] == zoneid && Iter_Contains(Gangs, gangid))
- {
- Gang[gangid][GangTimer]--;
- if(Gang[gangid][GangTimer] > 0)
- {
- new minutes = Gang[gangid][GangTimer] / 60, seconds = Gang[gangid][GangTimer] % 60, msg[10];
- format(msg, sizeof(msg), "%02d:%02d", minutes, seconds);
- foreach(new p : Player)
- {
- if(Player[p][PlayerGang] == gangid)
- PlayerTextDrawSetString(p, Player[p][CaptureTD][1], msg);
- }
- }
- else
- {
- KillTimer(GangZone[zoneid][ZoneTimer]);
- new msg[128];
- format(msg, sizeof(msg), "Owned by : ~r~%s", Gang[gangid][GangName]);
- foreach(new p : Player)
- {
- if(Player[p][PlayerGang] == gangid)
- {
- PlayerTextDrawHide(p, Player[p][CaptureTD][0]);
- PlayerTextDrawHide(p, Player[p][CaptureTD][1]);
- }
- if(Area_GetPlayerAreas(p, 0) == GangZone[zoneid][ZoneArea])
- PlayerTextDrawSetString(p, Player[p][TDZone][1], msg);
- }
- GangZoneStopFlashForAll(GangZone[zoneid][ZoneHolder]);
- new colour[9];
- format(colour, 9, "%s50", Gang[gangid][GangColor]);
- GangZoneShowForAll(GangZone[zoneid][ZoneHolder], HexToInt(colour));
- GangZone[zoneid][ZoneOwner] = gangid;
- format(msg, sizeof(msg), "{A7C4E4} %s Gang succesfully captured %s zone!", Gang[gangid][GangName], GangZone[zoneid][ZoneName]);
- SendClientMessageToAll(-1, msg);
- format(msg, sizeof(msg), "{A7C4E4} %s zone will be locked for %d minutes!", GangZone[zoneid][ZoneName], LOCKED_MINUTES);
- SendClientMessageToAll(-1, msg);
- Gang[gangid][CurrentZone] = -1;
- GangZone[zoneid][ZoneLocked] = GetTickCount();
- GangZone[zoneid][ZoneStatus] = false;
- Gang[gangid][GangScore]+=5;
- }
- }
- else
- {
- foreach(new p : Player)
- {
- if(Player[p][PlayerGang] == gangid)
- {
- PlayerTextDrawHide(p, Player[p][CaptureTD][0]);
- PlayerTextDrawHide(p, Player[p][CaptureTD][1]);
- }
- }
- KillTimer(GangZone[zoneid][ZoneTimer]);
- GangZoneStopFlashForAll(GangZone[zoneid][ZoneHolder]);
- }
- return 1;
- }
- forward AutoSave();
- public AutoSave()
- {
- foreach(new i : Player)
- SaveStats(i);
- foreach(new i : Gangs)
- SaveGang(i);
- foreach(new i : GangZones)
- SaveZone(i);
- return 1;
- }
- COMMAND:gangcmds(playerid, params[])
- {
- new msg[512];
- strcat(msg, "{FFFF00}/creategang /gangcolor /changeleader /territory /gangmembers \n");
- strcat(msg, "{ffff00}/gcp /leavegang /disbandgang /topgang /gangrank /promotestaff \n");
- strcat(msg, "{FFFF00}/demotestaff /createzone /ganginvite /acceptgang /g /capture \n");
- strcat(msg, "{FFFF00}/okickmember /kickmember\n");
- ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Gang System - Commands", msg, "Close", "");
- }
- forward LoadFS();
- public LoadFS()
- {
- print("/n================= | Blade Gaming Gang System! | =================");
- connection = mysql_init(LOG_ALL);
- if(!mysql_connect(HOSTNAME, USERNAME, PASSWORD, DATABASENAME, connection, 1))
- {
- print("\n================= | WARNING | =================");
- print("==== | Failed to connect to MySQL Database | ====");
- print("================= | WARNING | =================\n");
- SendRconCommand("exit");
- }
- else
- {
- print("\n================= | Blade Gaming Gang System! | =================");
- print("============== | Successfully Connected to MySQL | ==============\n");
- mysql_query("SELECT * FROM `zone`", -1, 0, connection);
- mysql_store_result(connection);
- new count = mysql_num_rows(connection), time = GetTickCount(), i, baris[1000];
- new id,
- Float:mix,
- Float:miy,
- Float:maxx,
- Float:may,
- own,
- nam[128]
- ;
- while(mysql_fetch_row(baris, "|", connection))
- {
- sscanf(baris, "p<|>dffffds[128]", id, mix, miy, maxx, may, own, nam);
- i = Iter_Free(GangZones);
- GangZone[i][ZoneMinPos][0] = mix;
- GangZone[i][ZoneMinPos][1] = miy;
- GangZone[i][ZoneMaxPos][0] = maxx;
- GangZone[i][ZoneMaxPos][1] = may;
- GangZone[i][ZoneOwner] = GetGangID(own);
- GangZone[i][ZoneID] = id;
- format(GangZone[i][ZoneName], 50, "%s", nam);
- GangZone[i][ZoneArea] = Area_AddBox(GangZone[i][ZoneMinPos][0], GangZone[i][ZoneMinPos][1], GangZone[i][ZoneMaxPos][0], GangZone[i][ZoneMaxPos][1]);
- GangZone[i][ZoneHolder] = GangZoneCreate(GangZone[i][ZoneMinPos][0], GangZone[i][ZoneMinPos][1], GangZone[i][ZoneMaxPos][0], GangZone[i][ZoneMaxPos][1]);
- GangZone[i][ZoneLocked] = 0;
- GangZone[i][ZoneStatus] = false;
- Iter_Add(GangZones, i);
- }
- mysql_free_result(connection);
- printf("\n================= | Blade Gaming Gang System | =================");
- printf("========== | %d Zone(s) Succesfully Loaded (%d ms)! | ==========\n", count, (GetTickCount() - time));
- mysql_query("SELECT * FROM `gang`", -1, 0, connection);
- mysql_store_result(connection);
- count = mysql_num_rows(connection), time = GetTickCount();
- new col[7],
- ta[5],
- sc;
- while(mysql_fetch_row(baris, "|", connection))
- {
- sscanf(baris, "p<|>ds[128]s[7]s[5]d", id, nam, col, ta, sc);
- i = Iter_Free(Gangs);
- Gang[i][GangID] = id;
- Gang[i][GangScore] = sc;
- Gang[i][CurrentZone] = -1;
- format(Gang[i][GangName], 30, "%s", nam);
- format(Gang[i][GangColor], 7, "%s", col);
- format(Gang[i][GangTag], 4, "%s", ta);
- Iter_Add(Gangs, i);
- }
- printf("\n================== | Blade Gaming Gang System | ==================");
- printf("=========== | %d Gang(s) Succesfully Loaded (%d ms)! | ===========\n", count, (GetTickCount() - time));
- foreach(new p : Player)
- {
- CallLocalFunction("OnPlayerConnect", "d", p);
- }
- AutoSaveTimer = SetTimer("AutoSave", AUTOSAVE * 60000, true);
- mysql_free_result(connection);
- }
- return 1;
- }
- /* SQL DUMP <X-Gang.sql>
- -- phpMyAdmin SQL Dump
- -- version 4.2.7.1
- -- http://www.phpmyadmin.net
- -- --------------------------------------------------------
- --
- -- Table structure for table `gang`
- --
- CREATE TABLE IF NOT EXISTS `gang` (
- `id` int(10) NOT NULL,
- `name` varchar(30) NOT NULL,
- `color` varchar(6) NOT NULL,
- `tag` varchar(3) NOT NULL,
- `score` int(10) NOT NULL DEFAULT '0'
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
- -- --------------------------------------------------------
- --
- -- Table structure for table `member`
- --
- CREATE TABLE IF NOT EXISTS `member` (
- `id` int(10) NOT NULL,
- `name` varchar(30) NOT NULL,
- `status` int(1) NOT NULL DEFAULT '1',
- `gang` int(10) NOT NULL DEFAULT '-1'
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
- -- --------------------------------------------------------
- --
- -- Table structure for table `zone`
- --
- CREATE TABLE IF NOT EXISTS `zone` (
- `id` int(10) NOT NULL,
- `minx` varchar(10) NOT NULL,
- `miny` varchar(10) NOT NULL,
- `maxx` varchar(10) NOT NULL,
- `maxy` varchar(10) NOT NULL,
- `owner` int(10) NOT NULL DEFAULT '-1',
- `name` varchar(50) NOT NULL DEFAULT 'Undefined Zone'
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
- --
- -- Indexes for dumped tables
- --
- --
- -- Indexes for table `gang`
- --
- ALTER TABLE `gang`
- ADD PRIMARY KEY (`id`);
- --
- -- Indexes for table `member`
- --
- ALTER TABLE `member`
- ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `name` (`name`);
- --
- -- Indexes for table `zone`
- --
- ALTER TABLE `zone`
- ADD PRIMARY KEY (`id`);
- --
- -- AUTO_INCREMENT for dumped tables
- --
- --
- -- AUTO_INCREMENT for table `gang`
- --
- ALTER TABLE `gang`
- MODIFY `id` int(10) NOT NULL AUTO_INCREMENT;
- --
- -- AUTO_INCREMENT for table `member`
- --
- ALTER TABLE `member`
- MODIFY `id` int(10) NOT NULL AUTO_INCREMENT;
- --
- -- AUTO_INCREMENT for table `zone`
- --
- ALTER TABLE `zone`
- MODIFY `id` int(10) NOT NULL AUTO_INCREMENT;
- -- ------------------------------------------------
- */
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
- {
- new i = Player[playerid][PlayerGang],
- z;
- if(i != -1)
- {
- z = Gang[i][CurrentZone];
- if(z != -1 && Area_GetPlayerAreas(playerid, 0) == GangZone[z][ZoneArea])
- {
- SendClientMessage(playerid, COLOR_RED, "Sorry, entering vehicle whilst capturing gang zone is not allowed!");
- PlayerTextDrawHide(playerid, Player[playerid][TDZone][0]);
- PlayerTextDrawHide(playerid, Player[playerid][TDZone][1]);
- new total = 0;
- foreach(new p : Player)
- {
- if(Player[p][PlayerGang] == Player[playerid][PlayerGang])
- {
- if(Area_GetPlayerAreas(p, 0) == GangZone[z][ZoneArea] && !IsPlayerInAnyVehicle(p))
- total++;
- }
- }
- if(total == 0)
- {
- new msg[128];
- format(msg, sizeof(msg), "{a7C4E4}%s gang failed to capture %s zone!", Gang[i][GangName], GangZone[z][ZoneName]);
- SendClientMessageToAll(-1, msg);
- format(msg, sizeof(msg), "{A7C4E4}%s zone will be locked for %d minutes!", GangZone[z][ZoneName], LOCKED_MINUTES);
- SendClientMessageToAll(-1, msg);
- Gang[i][CurrentZone] = -1;
- GangZone[z][ZoneLocked] = GetTickCount();
- GangZone[z][ZoneStatus] = false;
- GangZoneStopFlashForAll(GangZone[z][ZoneHolder]);
- }
- }
- }
- }
- return 1;
- }
Add Comment
Please, Sign In to add comment