10.12.2015, 01:50
Guys i have a problem when i compile my script my pawno compiler it shows (pawno compiler library has stopped working )
/* X337 SIMPLE GANG SYSTEM Required Plugins : sscanf, mysql R39-2 */ #include <a_samp> // SA-MP Team #include <a_mysql> // BlueG #include <sscanf> // Y-Less #include <YSI\y_iterate> // Y-Less #include <YSI\y_areas> // Y-Less #include <zcmd> // Zeex /* DATABASE CONNECTION You must define database connection below and recompile this filterscript */ #define HOSTNAME "localhost" #define USERNAME "root" #define PASSWORD "" #define DATABASENAME "lscnr" /* ------------------------------------------------------------------------- */ #define AUTOSAVE 30 // 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 10 #define DIALOG_UNUSED 1337 // Dialog ID #define DEFAULT_ZONE_COLOR "000000AA" // Default hex colour for gang zone #define REQUIRED_SCORE 9999999 // Required score to make a new gang #define MAX_GANG_MEMBER 8 // Maximum gang member #undef MAX_PLAYERS #define MAX_PLAYERS 50 // 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 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], connection, AutoSaveTimer; stock bool:CheckGang(gangid) { new total = 0, query[128]; mysql_format(connection, query, sizeof(query), "SELECT count(*) AS `total` FROM `member` WHERE `gang` = %d", Gang[gangid][GangID]); mysql_query(connection, query, true); total = (cache_num_rows() > 0) ? cache_get_field_content_int(0, "total") : 0; return (total >= 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) mysql_format(connection, query, sizeof(query), "UPDATE `member` SET `gang` = %d, `status` = %d, `name` = '%e' WHERE `id` = '%d'", Gang[i][GangID], Player[playerid][PlayerStatus], name, Player[playerid][PlayerID]); else mysql_format(connection, query, sizeof(query), "UPDATE `member` SET `gang` = -1, `name` = '%e' WHERE `id` = %d", name, Player[playerid][PlayerID]); mysql_query(connection, query, false); return 1; } SaveGang(i) { new query[128]; mysql_format(connection, query, sizeof(query), "UPDATE `gang` SET `color` = '%e', `score` = %d WHERE `id` = '%d'", Gang[i][GangColor], Gang[i][GangScore], Gang[i][GangID]); mysql_query(connection, query, false); return 1; } SaveZone(i) { if(GangZone[i][ZoneOwner] != -1 && Iter_Contains(Gangs, GangZone[i][ZoneOwner])) { new query[128]; mysql_format(connection, query, sizeof(query), "UPDATE `zone` SET `owner` = '%d' WHERE `id` = '%d'", Gang[GangZone[i][ZoneOwner]][GangID], GangZone[i][ZoneID]); mysql_query(connection, query, false); } 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); mysql_format(connection, query, sizeof(query), "SELECT * FROM `member` WHERE `name` = '%e'", name); mysql_query(connection, query, true); new count = cache_num_rows(); if(count > 0) { new id = cache_get_field_content_int(0, "gang"); foreach(new i : Gangs) { if(Gang[i][GangID] == id) { Player[playerid][PlayerGang] = i; break; } } Player[playerid][PlayerStatus] = cache_get_field_content_int(0, "status"); Player[playerid][PlayerID] = cache_get_field_content_int(0, "id"); } else { mysql_format(connection, query, sizeof(query), "INSERT INTO `member`(`name`) VALUES ('%e')", name); mysql_query(connection, query, true); Player[playerid][PlayerID] = cache_insert_id(); } 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() { print("\n\n\n========================================================"); print("|| X-Gang System by X337 ||"); connection = mysql_connect(HOSTNAME, USERNAME, DATABASENAME, PASSWORD); if(mysql_errno(connection) != 0) { print("\n++++++++++++++++++ WARNING ++++++++++++++++++++++\n"); print("X-Gang System Filterscript failed to connect to database !\n"); print("++++++++++++++++++ WARNING ++++++++++++++++++++++\n"); SendRconCommand("unloadfs X-Gang"); } else { mysql_log(LOG_ERROR | LOG_WARNING, LOG_TYPE_HTML); print("|| Succesfully connected to database ! ||"); mysql_query(connection, "SELECT * FROM `zone`", true); new count = cache_num_rows(), TempString[56], time = GetTickCount(), i; for(new z = 0; z < count; z++) { i = Iter_Free(GangZones); GangZone[i][ZoneMinPos][0] = cache_get_field_content_float(z, "minx"); GangZone[i][ZoneMinPos][1] = cache_get_field_content_float(z, "miny"); GangZone[i][ZoneMaxPos][0] = cache_get_field_content_float(z, "maxx"); GangZone[i][ZoneMaxPos][1] = cache_get_field_content_float(z, "maxy"); GangZone[i][ZoneOwner] = GetGangID(cache_get_field_content_int(z, "owner")); GangZone[i][ZoneID] = cache_get_field_content_int(z, "id"); cache_get_field_content(z, "name", TempString); format(GangZone[i][ZoneName], 50, "%s", TempString); 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); } printf("|| %d Zone(s) Succesfully Loaded!!! (%d ms) ||", count, (GetTickCount() - time)); mysql_query(connection, "SELECT * FROM `gang`", true); count = cache_num_rows(), time = GetTickCount(); for(new z = 0; z < count; z++) { i = Iter_Free(Gangs); Gang[i][GangID] = cache_get_field_content_int(z, "id"); Gang[i][GangScore] = cache_get_field_content_int(z, "score"); Gang[i][CurrentZone] = -1; cache_get_field_content(z, "name", TempString); format(Gang[i][GangName], 30, "%s", TempString); cache_get_field_content(z, "color", TempString); format(Gang[i][GangColor], 7, "%s", TempString); cache_get_field_content(z, "tag", TempString); format(Gang[i][GangTag], 4, "%s", TempString); Iter_Add(Gangs, i); } printf("|| %d Gang(s) Succesfully Loaded!!! (%d ms) ||", count, (GetTickCount() - time)); print("========================================================"); foreach(new p : Player) { CallLocalFunction("OnPlayerConnect", "d", p); } AutoSaveTimer = SetTimer("AutoSave", AUTOSAVE * 60000, true); } 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("X-Gang System Filterscript unloaded!\n"); return 1; } COMMAND:creategang(playerid, params[]) { if(GetPlayerScore(playerid) >= REQUIRED_SCORE) { if(Player[playerid][PlayerGang] == -1) ShowPlayerDialog(playerid, DIALOG_CREATEGANG, DIALOG_STYLE_INPUT, "X337 Gang System - Gang Name", "Insert the gang name below :", "Submit", "Cancel"); else SendClientMessage(playerid, -1, "{FF0000}You already in gang!"); } else { new string[128]; format(string, sizeof(string), "{FF0000}You need %d score to create a gang!", REQUIRED_SCORE); SendClientMessage(playerid, -1, 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, -1, "{FF0000}Invalid hex color!"); 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, -1, "{FF0000}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, -1, "{FF0000}Usage : /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), "{FF0000}Succesfully promoted %s as new gang leader!", Name(id)); SendClientMessage(playerid, -1, msg); SendClientMessage(id, -1, "{FF0000}You have been promoted as new gang leader!"); SaveStats(id); SaveStats(playerid); } else SendClientMessage(playerid, -1, "{FF0000}That player isn't your gang member!"); } else SendClientMessage(playerid, -1, "{FF0000}That player isn't connected!"); } } else SendClientMessage(playerid, -1, "{FF0000}You must be a gang leader to use this command!"); } else SendClientMessage(playerid, -1, "{FF0000}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[256]; mysql_format(connection, query, sizeof(query), "SELECT * FROM `member` WHERE `gang` = %d", Gang[i][GangID]); mysql_query(connection, query, true); format(query, sizeof(query), "{FFFFFF}"); new count = cache_num_rows(); if(count > 0) { new TempString[MAX_PLAYER_NAME], tempid; for(new r = 0; r < count; r++) { cache_get_field_content(r, "name", TempString); tempid = GetID(TempString); format(query, sizeof(query), "%s%d. %s ", query, (r+1), TempString); if(IsPlayerConnected(tempid)) strcat(query, "{FE9A2E}(ONLINE) "); else strcat(query, "{FF0000}(OFFLINE) "); if(cache_get_field_content_int(r, "status") == GANG_LEADER) strcat(query, "{58D3F7} (LEADER) "); if(cache_get_field_content_int(r, "status") == GANG_STAFF) strcat(query, "{58D3F7} (STAFF) "); strcat(query, "\n{FFFFFF}"); } ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Gang Members", query, "Close", ""); } } else SendClientMessage(playerid, -1, "{FF0000}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), "{FFFFFF}Gang Name : {%s}%s {FFFFFF}", Gang[i][GangColor], Gang[i][GangName]); format(msg, sizeof(msg), "%s\nGang Tag : [%s]", msg, Gang[i][GangTag]); format(msg, sizeof(msg), "%s\nGang 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, -1, "{FF0000}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}%s left the gang!", Name(playerid)); SendGangMessage(Player[playerid][PlayerGang], msg); Player[playerid][PlayerGang] = -1; SaveStats(playerid); } else SendClientMessage(playerid, -1, "{FF0000}Gang leader can't use this command!"); } 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}%s has disbanded the gang!", Name(playerid)); SendGangMessage(i, query); mysql_format(connection, query, sizeof(query), "DELETE FROM `gang` WHERE `id` = %d", Gang[i][GangID]); mysql_query(connection, query, false); foreach(new p : Player) { if(Player[p][PlayerGang] == i) { Player[p][PlayerGang] = -1; Player[p][PlayerStatus] = GANG_MEMBER; } } mysql_format(connection, query, sizeof(query), "UPDATE `member` SET `gang` = -1, `status` = 1 WHERE `gang` = %d", Gang[i][GangID]); mysql_query(connection, query, false); 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, -1, "{FF0000}You must be gang leader to use this command!!"); } else SendClientMessage(playerid, -1, "{FF0000}You must be gang leader to use this command!!"); return 1; } COMMAND:topgang(playerid, params[]) { new query[128]; mysql_format(connection, query, sizeof(query), "SELECT * FROM `gang` ORDER BY `score` DESC LIMIT 20"); mysql_query(connection, query, true); new ganglist[512], count = cache_num_rows(), TempColor[7], TempName[30]; if(count != 0) { for(new i = 0; i < count; i++) { cache_get_field_content(i, "color", TempColor); cache_get_field_content(i, "name", TempName); format(ganglist, sizeof(ganglist), "%s%d. {%s}%s {FFFFFF}- Score : %d\n", ganglist, (i+1), TempColor, TempName, cache_get_field_content_int(i, "score")); } 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, -1, "{FF0000}There's no gangs present!"); return 1; } COMMAND:gangrank(playerid, params[]) { new TempName[30]; if(sscanf(params, "s[30]", TempName)) { SendClientMessage(playerid, -1, "{FF0000}Usage : /gangrank <gang name>"); } else { new query[512]; mysql_format(connection, 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` = '%e'", TempName); mysql_query(connection, query, true); if(cache_num_rows() != 0) { new msg[56]; format(msg, sizeof(msg), "{FF0000}%s - {FFFF00}Rank : %d", TempName, cache_get_field_content_int(0, "rank")); SendClientMessage(playerid, -1, msg); } else SendClientMessage(playerid, -1, "404! Gang name not found!"); } return 1; } COMMAND:promotestaff(playerid, params[]) { if(Player[playerid][PlayerStatus] == GANG_LEADER) { new id; if(sscanf(params, "u", id)) { SendClientMessage(playerid, -1, "{FF0000}Usage : /promotestaff <playerid>"); } else { if(IsPlayerConnected(id)) { if(Player[id][PlayerGang] == Player[playerid][PlayerGang]) { if(id != playerid) { if(Player[id][PlayerStatus] != GANG_STAFF) { SendClientMessage(playerid, -1, "{FF0000}Succesfully promoted a gang staff!"); SendClientMessage(id, -1, "{FF0000}You have been promoted as a gang staff!"); Player[id][PlayerStatus] = GANG_STAFF; SaveStats(id); } else SendClientMessage(playerid, -1, "{FF0000}That player already a gang staff!"); } else SendClientMessage(playerid, -1, "{FF0000}You can't promote yourself!"); } else SendClientMessage(playerid, -1, "{FF0000}That player isn't your gang member!"); } else SendClientMessage(playerid, -1, "{FF0000}That player isn't connected!"); } } else SendClientMessage(playerid, -1, "{FF0000}You must be 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, -1, "{FF0000}Usage : /demotestaff <playerid>"); } else { if(IsPlayerConnected(id)) { if(Player[id][PlayerGang] == Player[playerid][PlayerGang]) { if(id != playerid) { if(Player[id][PlayerStatus] == GANG_STAFF) { SendClientMessage(playerid, -1, "{FF0000}Succesfully promoted a gang staff!"); SendClientMessage(id, -1, "{FF0000}You have been demoted from gang staff!"); Player[id][PlayerStatus] = GANG_MEMBER; SaveStats(id); } else SendClientMessage(playerid, -1, "{FF0000}That player isn't a gang staff!"); } else SendClientMessage(playerid, -1, "{FF0000}You can't demote yourself!"); } else SendClientMessage(playerid, -1, "{FF0000}That player isn't your gang member!"); } else SendClientMessage(playerid, -1, "{FF0000}That player isn't connected!"); } } else SendClientMessage(playerid, -1, "{FF0000}You must be 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, -1, "You already in create zone mode, /cancelzone to cancel"); } else SendClientMessage(playerid, -1, "You must be onfoot to create gang zone"); } else SendClientMessage(playerid, -1, "{FF0000}You must be RCON admin to use this command!"); return 1; } COMMAND:ganginvite(playerid, params[]) { new p; if(Player[playerid][PlayerStatus] == GANG_LEADER && Player[playerid][PlayerGang] != -1) { if(sscanf(params, "d", p)) { SendClientMessage(playerid, -1, "{FF0000}Usage : /ganginvite <playerid>"); } else { if(IsPlayerConnected(p)) { if(Player[p][PlayerGang] == -1) { if(CheckGang(Player[playerid][PlayerGang])) { new msg[128]; format(msg, sizeof(msg), "%s want you to join %s gang! (/acceptgang)", Name(playerid), Gang[Player[playerid][PlayerGang]][GangName]); SendClientMessage(p, -1, msg); format(msg, sizeof(msg), "You have invited %s to join your gang!", Name(p)); SendClientMessage(playerid, -1, msg); Player[p][GangRequest] = Player[playerid][PlayerGang]; } else SendClientMessage(playerid, -1, "{FF0000}Your gang member is full!"); } else SendClientMessage(playerid, -1, "{FF0000}That player already a gang member!"); } else SendClientMessage(playerid, -1, "{FF0000}That player isn't connected!"); } } else SendClientMessage(playerid, -1, "{FF0000}You must be a gang leader 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), "%s has joined the gang!", Name(playerid)); SendGangMessage(Player[playerid][PlayerGang], msg); } } else SendClientMessage(playerid, -1, "{FF0000}Invalid Session!"); } } else SendClientMessage(playerid, -1, "{FF0000}You already inside a gang!"); return 1; } COMMAND:g(playerid, params[]) { new i = Player[playerid][PlayerGang]; if(i != -1) { new msg[128]; format(msg, sizeof(msg), "{%s}* %s(%d) {FFFFFF}: %s", Gang[i][GangColor], Name(playerid), playerid, params); SendGangMessage(Player[playerid][PlayerGang], msg); } else SendClientMessage(playerid, -1, "{FF0000}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(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)) { format(msg, sizeof(msg), "Capturing ~g~%s", GangZone[i][ZoneName]); foreach(new p : Player) { if(Player[p][PlayerGang] == Player[playerid][PlayerGang]) { if(Area_GetPlayerAreas(p, 0) == area) total++; 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), "{FE9A2E}** %s gang trying to capture %s zone with %d gang member!", 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), "{FF0000}* ALERT!!! %s gang 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), "{FF0000}This Zone is locked, please wait %.2f minute(s) to capture!", floatdiv(60000 * LOCKED_MINUTES - tick, 60 * 1000)); SendClientMessage(playerid, -1, msg); } } else SendClientMessage(playerid, -1, "{FF0000}Your gang already owned this zone!"); } else SendClientMessage(playerid, -1, "{FF0000}Someone is trying to capture this zone!"); } else SendClientMessage(playerid, -1, "{FF0000}You must be in gang zone to use this command!"); } else SendClientMessage(playerid, -1, "{FF0000}Your gang already started a war, please wait!"); } else SendClientMessage(playerid, -1, "{FF0000}You must be a gang member to use this command!"); return 1; } COMMAND:okickmember(playerid, params[]) { new TempName[MAX_PLAYER_NAME]; if(sscanf(params, "s[24]", TempName)) { SendClientMessage(playerid, -1, "{FF0000}Usage : /okickmember <member name>"); } else { new query[256], i = Player[playerid][PlayerGang]; mysql_format(connection, query, sizeof(query), "SELECT * FROM `member` WHERE `name` = '%e'", TempName); mysql_query(connection, query, true); if(cache_num_rows() != 0) { if(cache_get_field_content_int(0, "gang") == Gang[i][GangID]) { if(cache_get_field_content_int(0, "id") != Player[playerid][PlayerID]) { if(cache_get_field_content_int(0, "status") != GANG_LEADER) { mysql_format(connection, query, sizeof(query), "UPDATE `member` SET `gang` = -1, `status` = 1 WHERE `name` = '%e'", TempName); mysql_query(connection, query, false); format(query, sizeof(query), "{FF0000}%s has been kicked from gang!", TempName); SendGangMessage(i, query); new p = GetID(TempName); if(IsPlayerConnected(p)) { SendClientMessage(p, -1, "{FF0000}You have been kicked from gang!"); Player[p][PlayerGang] = -1; Player[p][PlayerStatus] = GANG_MEMBER; } } else SendClientMessage(playerid, -1, "{FF0000}You can't kick gang leader!"); } else SendClientMessage(playerid, -1, "{FF0000}You can't kick yourself!"); } else SendClientMessage(playerid, -1, "{FF0000}That player isn't in your gang!"); } else SendClientMessage(playerid, -1, "{FF0000}404! Name not found!"); } 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, -1, "{FF0000}Usage : /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], query[256]; format(msg, sizeof(msg), "{FF0000}%s has been kicked from gang!", Name(p)); SendGangMessage(Player[playerid][PlayerGang], msg); Player[p][PlayerGang] = -1; Player[p][PlayerStatus] = GANG_MEMBER; mysql_format(connection, query, sizeof(query), "UPDATE `member` SET `gang` = -1, `status` = 1 WHERE `id` = '%d'", Player[p][PlayerID]); mysql_query(connection, query, false); } else SendClientMessage(playerid, -1, "{FF0000}You can't kick gang leader!"); } else SendClientMessage(playerid, -1, "{FF0000}You can't kick yourself!"); } else SendClientMessage(playerid, -1, "{FF0000}That player isn't in your gang!"); } else SendClientMessage(playerid, -1, "{FF0000}That player isn't connected!"); } } else SendClientMessage(playerid, -1, "{FF0000}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), "{FF0000}** %s gang failed to capture %s zone!", Gang[Player[playerid][PlayerGang]][GangName], GangZone[zone][ZoneName]); SendClientMessageToAll(-1, msg); format(msg, sizeof(msg), "{FF0000}** %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]); } format(msg, sizeof(msg), "%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, "X337 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]) total++; } } } if(total == 0) { new msg[128]; format(msg, sizeof(msg), "{FF0000}** %s gang failed to capture %s zone!", Gang[Player[playerid][PlayerGang]][GangName], GangZone[zone][ZoneName]); SendClientMessageToAll(-1, msg); format(msg, sizeof(msg), "{FF0000}** %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, "X337 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]; mysql_format(connection, query, sizeof(query), "INSERT INTO `zone` (`minx`, `miny`, `maxx`, `maxy`, `name`) VALUES('%f', '%f', '%f', '%f', '%e')", MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1], inputtext); mysql_query(connection, query, true); 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] = cache_insert_id(); 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)); 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, "X337 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, "X337 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, "X337 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, "X337 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, "X337 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, "X337 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, "X337 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, "X337 Gang System - Create Gang", msg, "Sure", "Cancel"); } } } case DIALOG_HEXCOLOUR: { if(response) { if(strlen(inputtext) != 6) ShowPlayerDialog(playerid, DIALOG_HEXCOLOUR, DIALOG_STYLE_INPUT, "X337 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, "X337 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, "X337 Gang System - Create Gang", msg, "Sure", "Cancel"); } } } else { ShowPlayerDialog(playerid, DIALOG_GANGCOLOUR, DIALOG_STYLE_LIST, "X337 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, -1, "{FF0000}Gang name already used!"); break; } if(!strcmp(Gang[i][GangTag], TempGangTag[playerid], true)) { found = true; SendClientMessage(playerid, -1, "{FF0000}Gang tag already used!"); break; } } if(!found) { new query[256]; mysql_format(connection, query, sizeof(query), "INSERT INTO `gang` (`name`, `color`, `tag`) VALUES('%e', '%e', '%e')", TempGangName[playerid], TempGangColour[playerid], TempGangTag[playerid]); mysql_query(connection, query, true); new i = Iter_Free(Gangs); strcpy(Gang[i][GangColor], TempGangColour[playerid]); Gang[i][GangID] = cache_insert_id(); 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 {FFFFFF}gang has been created!", TempGangColour[playerid], TempGangTag[playerid], TempGangName[playerid]); SendClientMessageToAll(-1, query); 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]) total++; } } } if(total == 0) { new msg[128]; format(msg, sizeof(msg), "{FF0000}** %s gang failed to capture %s zone!", Gang[Player[playerid][PlayerGang]][GangName], GangZone[zone][ZoneName]); SendClientMessageToAll(-1, msg); format(msg, sizeof(msg), "{FF0000}** %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), "{FF0000}** %s gang succesfully captured %s zone!", Gang[gangid][GangName], GangZone[zoneid][ZoneName]); SendClientMessageToAll(-1, msg); format(msg, sizeof(msg), "{FF0000}** %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, "/creategang /gangcolor /changeleader /territory /gangmembers \n"); strcat(msg, "/gcp /leavegang /disbandgang /topgang /gangrank /promotestaff \n"); strcat(msg, "/demotestaff /createzone /ganginvite /acceptgang /g /capture \n"); strcat(msg, "/okickmember /kickmember\n"); ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "X337 Gang System - Commands", msg, "Close", ""); } /* 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; -- ------------------------------------------------ */