Guest User

Turf

a guest
Jul 26th, 2016
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 31.55 KB | None | 0 0
  1. #define FILTERSCRIPT
  2.  
  3. #include <a_samp>
  4.  
  5. #undef MAX_PLAYERS
  6. #define MAX_PLAYERS (200)
  7.  
  8. #include <gangzones>
  9.  
  10. #define TURF_STATE_NORMAL (0)
  11. #define TURF_STATE_ATTACKED (1)
  12. #define TURF_STATE_PROVOKED (2)
  13.  
  14. #define TURF_REQUIRED_KILLS (3)
  15. #define TURF_REQUIRED_PLAYERS (1)
  16. #define TURF_REQUIRED_CAPTURETIME (2 * 60 * 1000)
  17. #define TURF_REQUIRED_PROVOKETIME (10 * 1000)
  18.  
  19. #define COLOR_GREEN (0x00CC00FF)
  20.  
  21. #define COLOR_CHANGE_ALPHA(%1) ((%1 & ~0xFF) | (clamp(100, 0x00, 0xFF)))
  22.  
  23. enum e_TEAM {
  24. teamName[35],
  25. teamColor
  26. };
  27.  
  28. enum e_TURF {
  29. turfName[35],
  30. turfOwner,
  31. turfAttacker,
  32. Float: turfPos[4],
  33. turfOwnerKills,
  34. turfAttackerKills,
  35. turfState,
  36. turfTimer,
  37. turfId
  38. };
  39.  
  40. new const g_Team[][e_TEAM] = {
  41. {"Groves", 0x00FF00FF},
  42. {"Ballas", 0x800080FF},
  43. {"Cops", 0x0080FFFF},
  44. {"Vagos", 0xFFFF00FF},
  45. {"Aztecas", 0x00FFFFFF},
  46. {"Bikers", 0xFF4B00FF},
  47. {"Barbers", 0xA52A2AFF}
  48. };
  49.  
  50. new const g_Turf[][e_TURF] = {
  51. {"Ganton", 0, NO_TEAM, {2222.50, -1852.80, 2632.80, -1722.30}},
  52. {"Ganton", 0, NO_TEAM, {2222.50, -1722.30, 2632.80, -1628.50}},
  53. {"Idlewood", 0, NO_TEAM, {2124.60, -1742.30, 2222.50, -1494.00}},
  54. {"Idlewood", 0, NO_TEAM, {1971.60, -1852.80, 2222.50, -1742.30}},
  55. {"Willow Field", 0, NO_TEAM, {2324.00, -2059.20, 2541.70, -1852.80}},
  56. {"East Los Santos", 0, NO_TEAM, {2421.00, -1628.50, 2632.80, -1454.30}},
  57. {"East Los Santos", 0, NO_TEAM, {2222.50, -1628.50, 2421.00, -1494.00}},
  58.  
  59. {"Jefferson", 1, NO_TEAM, {2056.80, -1372.00, 2281.40, -1210.70}},
  60. {"Jefferson", 1, NO_TEAM, {2056.80, -1210.70, 2185.30, -1126.30}},
  61. {"Jefferson", 1, NO_TEAM, {2056.80, -1449.60, 2266.20, -1372.00}},
  62. {"Las Colinas", 1, NO_TEAM, {1994.30, -1100.80, 2056.80, -920.80}},
  63. {"Las Colinas", 1, NO_TEAM, {2056.80, -1126.30, 2126.80, -920.80}},
  64. {"Las Colinas", 1, NO_TEAM, {2185.30, -1154.50, 2281.40, -934.40}},
  65. {"Las Colinas", 1, NO_TEAM, {2126.80, -1126.30, 2185.30, -934.40}},
  66. {"Las Colinas", 1, NO_TEAM, {2632.70, -1135.00, 2747.70, -945.00}},
  67. {"Glen Park", 1, NO_TEAM, {1812.60, -1350.70, 2056.80, -1100.80}},
  68.  
  69. {"Idlewood", 2, NO_TEAM, {1812.60, -1852.80, 1971.60, -1742.30}},
  70. {"Idlewood", 2, NO_TEAM, {1951.60, -1742.30, 2124.60, -1602.30}},
  71. {"Idlewood", 2, NO_TEAM, {1812.60, -1602.30, 2124.60, -1449.60}},
  72. {"Idlewood", 2, NO_TEAM, {1812.60, -1742.30, 1951.60, -1602.30}},
  73. {"Pershing Square", 2, NO_TEAM, {1327.8929,-1729.3352,1821.7725,-1573.5878}},
  74.  
  75. {"East Beach", 3, NO_TEAM, {2747.70, -1498.60, 2959.30, -1120.00}},
  76. {"Los Flores", 3, NO_TEAM, {2581.70, -1393.40, 2747.70, -1135.00}},
  77. {"Las Colinas", 3, NO_TEAM, {2281.40, -1135.00, 2632.70, -945.00}},
  78. {"East Los Santos", 3, NO_TEAM, {2266.20, -1494.00, 2381.60, -1372.00}},
  79. {"East Los Santos", 3, NO_TEAM, {2281.60, -1372.00, 2381.60, -1135.00}},
  80. {"East Los Santos", 3, NO_TEAM, {2381.60, -1454.30, 2462.10, -1135.00}},
  81. {"East Los Santos", 3, NO_TEAM, {2462.10, -1454.30, 2581.70, -1135.00}},
  82.  
  83. {"Willow Field", 5, NO_TEAM, {1970.60, -2179.20, 2089.00, -1852.80}},
  84. {"Willow Field", 5, NO_TEAM, {2089.00, -1989.90, 2324.00, -1852.80}},
  85. {"Willow Field", 5, NO_TEAM, {2089.00, -2235.80, 2201.80, -1989.90}},
  86. {"El Corona", 5, NO_TEAM, {1812.60, -2179.20, 1970.60, -1852.80}},
  87. {"El Corona", 5, NO_TEAM, {1692.60, -2179.20, 1812.60, -1842.20}},
  88. {"Rodeo", 5, NO_TEAM, {-187.7, -1596.76, 17.0632, -1276.6}},
  89. {"Rodeo", 5, NO_TEAM, {422.68, -1570.2, 466.223, -1406.05}},
  90. {"Rodeo", 5, NO_TEAM, {466.223, -1570.2, 558.099, -1385.07}},
  91. {"Rodeo", 5, NO_TEAM, {558.099, -1684.65, 647.522, -1384.93}},
  92. {"Rodeo", 5, NO_TEAM, {422.68, -1684.65, 558.099, -1570.2}},
  93. {"Rodeo", 5, NO_TEAM, {312.803, -1684.65, 422.68, -1501.95}},
  94. {"Rodeo", 5, NO_TEAM, {334.503, -1501.95, 422.68, -1406.05}},
  95. {"Rodeo", 5, NO_TEAM, {647.712, -1804.21, 851.449, -1577.59}},
  96.  
  97. {"Market", 6, NO_TEAM, {1252.33, -926.999, 1357.0, -910.17}},
  98. {"Market", 6, NO_TEAM, {1252.33, -1026.33, 1391.05, -926.999}},
  99. {"Market", 6, NO_TEAM, {1252.33, -1130.85, 1378.33, -1026.33}},
  100. {"Market", 6, NO_TEAM, {1072.66, -1416.25, 1370.85, -1130.85}},
  101. {"Temple", 6, NO_TEAM, {1391.05, -1026.33, 1463.9, -926.999}},
  102. {"Temple", 6, NO_TEAM, {1378.33, -1130.85, 1463.9, -1026.33}},
  103. {"Downtown LS.", 6, NO_TEAM, {1370.85, -1170.87, 1463.9, -1130.85}},
  104. {"Downtown LS.", 6, NO_TEAM, {1370.85, -1384.95, 1463.9, -1170.87}}
  105. };
  106.  
  107. new
  108. g_MembersInTurf[sizeof(g_Turf)][sizeof(g_Team)],
  109. PlayerText: g_PlayerTurfTxt[MAX_PLAYERS][3],
  110. PlayerText: g_PlayerTurfNotifyTxt[MAX_PLAYERS][4],
  111. g_PlayerTurfNotifyTimer[MAX_PLAYERS][4]
  112. ;
  113.  
  114. public OnFilterScriptInit() {
  115. new
  116. iTeamTurfs[sizeof(g_Team)]
  117. ;
  118. for (new i, j = sizeof(g_Turf); i < j; i++) {
  119. g_Turf[i][turfId] = GangZoneCreate(g_Turf[i][turfPos][0], g_Turf[i][turfPos][1], g_Turf[i][turfPos][2], g_Turf[i][turfPos][3], COLOR_CHANGE_ALPHA(g_Team[g_Turf[i][turfOwner]][teamColor]), 1.8);
  120.  
  121. g_Turf[i][turfTimer] = -1;
  122.  
  123. for (new k, l = sizeof(g_Team); k < l; k++) {
  124. g_MembersInTurf[i][k] = 0;
  125. }
  126.  
  127. iTeamTurfs[g_Turf[i][turfOwner]]++;
  128. }
  129.  
  130. print(" ");
  131. print("_________________| Turfwar Script |_________________");
  132. print("Attempting to initialize ''turfs.amx''...");
  133. print(" ");
  134. for (new i, j = sizeof(g_Team); i < j; i++) {
  135. printf("Loaded %i turfs for team %s", iTeamTurfs[i], g_Team[i][teamName]);
  136. }
  137. print(" ");
  138. printf("Total %i turfs loaded", sizeof(g_Turf));
  139. print("_________________________________________________");
  140. print(" ");
  141.  
  142. return 1;
  143. }
  144.  
  145. public OnFilterScriptExit() {
  146. for (new i, j = sizeof(g_Turf); i < j; i++) {
  147. GangZoneDestroy(g_Turf[i][turfId]);
  148.  
  149. if (g_Turf[i][turfTimer] != -1) {
  150. KillTimer(g_Turf[i][turfTimer]);
  151. }
  152. g_Turf[i][turfTimer] = -1;
  153. }
  154.  
  155. return 1;
  156. }
  157.  
  158. public OnPlayerConnect(playerid) {
  159. g_PlayerTurfTxt[playerid][0] = CreatePlayerTextDraw(playerid,317.000000, 378.000000, "Turfwar in ~b~~h~~h~~h~Gangton");
  160. PlayerTextDrawAlignment(playerid,g_PlayerTurfTxt[playerid][0], 2);
  161. PlayerTextDrawBackgroundColor(playerid,g_PlayerTurfTxt[playerid][0], 255);
  162. PlayerTextDrawFont(playerid,g_PlayerTurfTxt[playerid][0], 2);
  163. PlayerTextDrawLetterSize(playerid,g_PlayerTurfTxt[playerid][0], 0.240000, 1.200000);
  164. PlayerTextDrawColor(playerid,g_PlayerTurfTxt[playerid][0], -1);
  165. PlayerTextDrawSetOutline(playerid,g_PlayerTurfTxt[playerid][0], 1);
  166. PlayerTextDrawSetProportional(playerid,g_PlayerTurfTxt[playerid][0], 1);
  167. PlayerTextDrawSetSelectable(playerid,g_PlayerTurfTxt[playerid][0], 0);
  168.  
  169. g_PlayerTurfTxt[playerid][1] = CreatePlayerTextDraw(playerid,317.000000, 389.000000, "Grove~w~~h~: ~r~13 ~w~~h~kills with ~r~4 ~w~~h~players");
  170. PlayerTextDrawAlignment(playerid,g_PlayerTurfTxt[playerid][1], 2);
  171. PlayerTextDrawBackgroundColor(playerid,g_PlayerTurfTxt[playerid][1], 255);
  172. PlayerTextDrawFont(playerid,g_PlayerTurfTxt[playerid][1], 2);
  173. PlayerTextDrawLetterSize(playerid,g_PlayerTurfTxt[playerid][1], 0.180000, 0.899999);
  174. PlayerTextDrawColor(playerid,g_PlayerTurfTxt[playerid][1], 16711935);
  175. PlayerTextDrawSetOutline(playerid,g_PlayerTurfTxt[playerid][1], 1);
  176. PlayerTextDrawSetProportional(playerid,g_PlayerTurfTxt[playerid][1], 1);
  177. PlayerTextDrawSetSelectable(playerid,g_PlayerTurfTxt[playerid][1], 0);
  178.  
  179. g_PlayerTurfTxt[playerid][2] = CreatePlayerTextDraw(playerid,317.000000, 397.000000, "Aztecas~w~~h~: ~r~16 ~w~~h~kills with ~r~7 ~w~~h~players");
  180. PlayerTextDrawAlignment(playerid,g_PlayerTurfTxt[playerid][2], 2);
  181. PlayerTextDrawBackgroundColor(playerid,g_PlayerTurfTxt[playerid][2], 255);
  182. PlayerTextDrawFont(playerid,g_PlayerTurfTxt[playerid][2], 2);
  183. PlayerTextDrawLetterSize(playerid,g_PlayerTurfTxt[playerid][2], 0.180000, 0.899999);
  184. PlayerTextDrawColor(playerid,g_PlayerTurfTxt[playerid][2], 16777215);
  185. PlayerTextDrawSetOutline(playerid,g_PlayerTurfTxt[playerid][2], 1);
  186. PlayerTextDrawSetProportional(playerid,g_PlayerTurfTxt[playerid][2], 1);
  187. PlayerTextDrawSetSelectable(playerid,g_PlayerTurfTxt[playerid][2], 0);
  188.  
  189. g_PlayerTurfNotifyTxt[playerid][0] = CreatePlayerTextDraw(playerid,317.000000, 348.000000, "~g~We have won the turfwar against the ~b~~h~~h~~h~Grove ~g~in ~b~~h~~h~~h~Gangton ~g~(/turfs)");
  190. PlayerTextDrawAlignment(playerid,g_PlayerTurfNotifyTxt[playerid][0], 2);
  191. PlayerTextDrawBackgroundColor(playerid,g_PlayerTurfNotifyTxt[playerid][0], 255);
  192. PlayerTextDrawFont(playerid,g_PlayerTurfNotifyTxt[playerid][0], 1);
  193. PlayerTextDrawLetterSize(playerid,g_PlayerTurfNotifyTxt[playerid][0], 0.180000, 0.799999);
  194. PlayerTextDrawColor(playerid,g_PlayerTurfNotifyTxt[playerid][0], -1);
  195. PlayerTextDrawSetOutline(playerid,g_PlayerTurfNotifyTxt[playerid][0], 1);
  196. PlayerTextDrawSetProportional(playerid,g_PlayerTurfNotifyTxt[playerid][0], 1);
  197. PlayerTextDrawSetSelectable(playerid,g_PlayerTurfNotifyTxt[playerid][0], 0);
  198.  
  199. g_PlayerTurfNotifyTxt[playerid][1] = CreatePlayerTextDraw(playerid,317.000000, 355.000000, "~r~We have lost the turfwar against the ~b~~h~~h~~h~Azetecas ~r~in ~b~~h~~h~~h~LS. Beach ~r~(/turfs)");
  200. PlayerTextDrawAlignment(playerid,g_PlayerTurfNotifyTxt[playerid][1], 2);
  201. PlayerTextDrawBackgroundColor(playerid,g_PlayerTurfNotifyTxt[playerid][1], 255);
  202. PlayerTextDrawFont(playerid,g_PlayerTurfNotifyTxt[playerid][1], 1);
  203. PlayerTextDrawLetterSize(playerid,g_PlayerTurfNotifyTxt[playerid][1], 0.180000, 0.799999);
  204. PlayerTextDrawColor(playerid,g_PlayerTurfNotifyTxt[playerid][1], -1);
  205. PlayerTextDrawSetOutline(playerid,g_PlayerTurfNotifyTxt[playerid][1], 1);
  206. PlayerTextDrawSetProportional(playerid,g_PlayerTurfNotifyTxt[playerid][1], 1);
  207. PlayerTextDrawSetSelectable(playerid,g_PlayerTurfNotifyTxt[playerid][1], 0);
  208.  
  209. g_PlayerTurfNotifyTxt[playerid][2] = CreatePlayerTextDraw(playerid,317.000000, 362.000000, "~y~We have provoked a turfwar again ~b~~h~~h~~h~Vagos ~y~in ~b~~h~~h~~h~Blueberry ~y~(/findwar)");
  210. PlayerTextDrawAlignment(playerid,g_PlayerTurfNotifyTxt[playerid][2], 2);
  211. PlayerTextDrawBackgroundColor(playerid,g_PlayerTurfNotifyTxt[playerid][2], 255);
  212. PlayerTextDrawFont(playerid,g_PlayerTurfNotifyTxt[playerid][2], 1);
  213. PlayerTextDrawLetterSize(playerid,g_PlayerTurfNotifyTxt[playerid][2], 0.180000, 0.799999);
  214. PlayerTextDrawColor(playerid,g_PlayerTurfNotifyTxt[playerid][2], -1);
  215. PlayerTextDrawSetOutline(playerid,g_PlayerTurfNotifyTxt[playerid][2], 1);
  216. PlayerTextDrawSetProportional(playerid,g_PlayerTurfNotifyTxt[playerid][2], 1);
  217. PlayerTextDrawSetSelectable(playerid,g_PlayerTurfNotifyTxt[playerid][2], 0);
  218.  
  219. g_PlayerTurfNotifyTxt[playerid][3] = CreatePlayerTextDraw(playerid,317.000000, 369.000000, "~y~We have got a turfwar again ~b~~h~~h~~h~Vagos ~y~in ~b~~h~~h~~h~Blueberry ~y~(/findwar)");
  220. PlayerTextDrawAlignment(playerid,g_PlayerTurfNotifyTxt[playerid][3], 2);
  221. PlayerTextDrawBackgroundColor(playerid,g_PlayerTurfNotifyTxt[playerid][3], 255);
  222. PlayerTextDrawFont(playerid,g_PlayerTurfNotifyTxt[playerid][3], 1);
  223. PlayerTextDrawLetterSize(playerid,g_PlayerTurfNotifyTxt[playerid][3], 0.180000, 0.799999);
  224. PlayerTextDrawColor(playerid,g_PlayerTurfNotifyTxt[playerid][3], -1);
  225. PlayerTextDrawSetOutline(playerid,g_PlayerTurfNotifyTxt[playerid][3], 1);
  226. PlayerTextDrawSetProportional(playerid,g_PlayerTurfNotifyTxt[playerid][3], 1);
  227. PlayerTextDrawSetSelectable(playerid,g_PlayerTurfNotifyTxt[playerid][3], 0);
  228.  
  229. ShowAllGangZonesForPlayer(playerid);
  230.  
  231. return 1;
  232. }
  233.  
  234. public OnPlayerSpawn(playerid) {
  235. for (new i, j = sizeof(g_Turf); i < j; i++) {
  236. if (g_Turf[i][turfState] == TURF_STATE_ATTACKED) {
  237. GangZoneFlashForPlayer(playerid, g_Turf[i][turfId], COLOR_CHANGE_ALPHA(g_Team[g_Turf[i][turfAttacker]][teamColor]));
  238. }
  239. }
  240.  
  241. PlayerTextDrawHide(playerid, g_PlayerTurfTxt[playerid][0]);
  242. PlayerTextDrawHide(playerid, g_PlayerTurfTxt[playerid][1]);
  243. PlayerTextDrawHide(playerid, g_PlayerTurfTxt[playerid][2]);
  244.  
  245. PlayerTextDrawHide(playerid, g_PlayerTurfNotifyTxt[playerid][0]);
  246. PlayerTextDrawHide(playerid, g_PlayerTurfNotifyTxt[playerid][1]);
  247. PlayerTextDrawHide(playerid, g_PlayerTurfNotifyTxt[playerid][2]);
  248. PlayerTextDrawHide(playerid, g_PlayerTurfNotifyTxt[playerid][3]);
  249.  
  250. return 1;
  251. }
  252.  
  253. public OnPlayerRequestClass(playerid, classid) {
  254. PlayerTextDrawHide(playerid, g_PlayerTurfTxt[playerid][0]);
  255. PlayerTextDrawHide(playerid, g_PlayerTurfTxt[playerid][1]);
  256. PlayerTextDrawHide(playerid, g_PlayerTurfTxt[playerid][2]);
  257.  
  258. PlayerTextDrawHide(playerid, g_PlayerTurfNotifyTxt[playerid][0]);
  259. PlayerTextDrawHide(playerid, g_PlayerTurfNotifyTxt[playerid][1]);
  260. PlayerTextDrawHide(playerid, g_PlayerTurfNotifyTxt[playerid][2]);
  261. PlayerTextDrawHide(playerid, g_PlayerTurfNotifyTxt[playerid][3]);
  262.  
  263. return 1;
  264. }
  265.  
  266. NotifyTeam(team, type, text[]) {
  267. for (new i, j = GetPlayerPoolSize(); i <= j; i++) {
  268. if (IsPlayerConnected(i) && GetPlayerState(i) != PLAYER_STATE_WASTED && GetPlayerTeam(i) == team) {
  269. if (g_PlayerTurfNotifyTimer[i][type] != -1) {
  270. KillTimer(g_PlayerTurfNotifyTimer[i][type]);
  271. }
  272. g_PlayerTurfNotifyTimer[i][type] = SetTimerEx("OnTeamNotified", 5000, false, "ii", team, type);
  273.  
  274. PlayerTextDrawSetString(i, g_PlayerTurfNotifyTxt[i][type], text);
  275. PlayerTextDrawShow(i, g_PlayerTurfNotifyTxt[i][type]);
  276. }
  277. }
  278. }
  279.  
  280. forward OnTeamNotified(team, type);
  281. public OnTeamNotified(team, type) {
  282. for (new i, j = GetPlayerPoolSize(); i <= j; i++) {
  283. if (IsPlayerConnected(i) && GetPlayerTeam(i) == team) {
  284. g_PlayerTurfNotifyTimer[i][type] = -1;
  285.  
  286. PlayerTextDrawHide(i, g_PlayerTurfNotifyTxt[i][type]);
  287. }
  288. }
  289. }
  290.  
  291. public OnPlayerDeath(playerid, killerid, reason) {
  292. if (killerid != INVALID_PLAYER_ID) {
  293. if (0 <= GetPlayerTeam(playerid) < sizeof(g_Team) && 0 <= GetPlayerTeam(killerid) < sizeof(g_Team)) {
  294. for (new i, j = sizeof(g_Turf); i < j; i++) {
  295. if (IsPlayerInGangZone(playerid, g_Turf[i][turfId])) {
  296. if (g_Turf[i][turfState] == TURF_STATE_NORMAL) {
  297. if (GetPlayerTeam(killerid) != g_Turf[i][turfOwner]) {
  298. g_Turf[i][turfAttackerKills]++;
  299.  
  300. if (g_Turf[i][turfAttackerKills] >= TURF_REQUIRED_KILLS) {
  301. g_Turf[i][turfState] = TURF_STATE_ATTACKED;
  302. g_Turf[i][turfAttacker] = GetPlayerTeam(killerid);
  303. g_Turf[i][turfTimer] = SetTimerEx("OnTurfwarEnd", TURF_REQUIRED_CAPTURETIME, false, "i", i);
  304.  
  305. GangZoneFlashForAll(g_Turf[i][turfId], COLOR_CHANGE_ALPHA(g_Team[GetPlayerTeam(killerid)][teamColor]));
  306.  
  307. for (new p, q = GetPlayerPoolSize(); p <= q; p++) {
  308. if (IsPlayerConnected(p) && IsPlayerInGangZone(p, g_Turf[i][turfId]) && GetPlayerState(p) != PLAYER_STATE_WASTED && ! GetPlayerInterior(p) && ! GetPlayerVirtualWorld(p)) {
  309. new
  310. szBuffer[156]
  311. ;
  312. strcat(szBuffer, "Turfwar in ~b~~h~~h~~h~");
  313. strcat(szBuffer, g_Turf[i][turfName]);
  314. PlayerTextDrawSetString(p, g_PlayerTurfTxt[p][0], szBuffer);
  315. PlayerTextDrawShow(p, g_PlayerTurfTxt[p][0]);
  316.  
  317. format(szBuffer, sizeof(szBuffer), "%s~w~~h~: ~r~%i ~w~~h~kills with ~r~%i ~w~~h~players", g_Team[g_Turf[i][turfOwner]][teamName], g_Turf[i][turfOwnerKills], g_MembersInTurf[i][g_Turf[i][turfOwner]]);
  318. PlayerTextDrawSetString(p, g_PlayerTurfTxt[p][1], szBuffer);
  319. PlayerTextDrawColor(p, g_PlayerTurfTxt[p][1], g_Team[g_Turf[i][turfOwner]][teamColor]);
  320. PlayerTextDrawShow(p, g_PlayerTurfTxt[p][1]);
  321.  
  322. format(szBuffer, sizeof(szBuffer), "%s~w~~h~: ~r~%i ~w~~h~kills with ~r~%i ~w~~h~players", g_Team[g_Turf[i][turfAttacker]][teamName], g_Turf[i][turfAttackerKills], g_MembersInTurf[i][g_Turf[i][turfAttacker]]);
  323. PlayerTextDrawSetString(p, g_PlayerTurfTxt[p][2], szBuffer);
  324. PlayerTextDrawColor(p, g_PlayerTurfTxt[p][2], g_Team[g_Turf[i][turfAttacker]][teamColor]);
  325. PlayerTextDrawShow(p, g_PlayerTurfTxt[p][2]);
  326. }
  327. }
  328.  
  329. new
  330. szText[156]
  331. ;
  332. strcat(szText, "~y~We have provoked a turfwar against ~b~~h~~h~~h~");
  333. strcat(szText, g_Team[g_Turf[i][turfOwner]][teamName]);
  334. strcat(szText, " ~y~in ~b~~h~~h~~h~");
  335. strcat(szText, g_Turf[i][turfName]);
  336. strcat(szText, " ~y~(/findwar)");
  337. NotifyTeam(g_Turf[i][turfAttacker], 2, szText);
  338.  
  339. szText[0] = EOS;
  340. strcat(szText, "~y~We have been attacked by ~b~~h~~h~~h~");
  341. strcat(szText, g_Team[g_Turf[i][turfAttacker]][teamName]);
  342. strcat(szText, " ~y~in ~b~~h~~h~~h~");
  343. strcat(szText, g_Turf[i][turfName]);
  344. strcat(szText, " ~y~(/findwar)");
  345. NotifyTeam(g_Turf[i][turfOwner], 3, szText);
  346. }
  347. }
  348. }
  349. else if (g_Turf[i][turfState] == TURF_STATE_ATTACKED) {
  350. if (GetPlayerTeam(killerid) == g_Turf[i][turfOwner]) {
  351. g_Turf[i][turfOwnerKills]++;
  352.  
  353. for (new p, q = GetPlayerPoolSize(); p <= q; p++) {
  354. if (IsPlayerConnected(p) && IsPlayerInGangZone(p, g_Turf[i][turfId]) && GetPlayerState(p) != PLAYER_STATE_WASTED && ! GetPlayerInterior(p) && ! GetPlayerVirtualWorld(p)) {
  355. new
  356. szBuffer[156]
  357. ;
  358. format(szBuffer, sizeof(szBuffer), "%s~w~~h~: ~r~%i ~w~~h~kills with ~r~%i ~w~~h~players", g_Team[g_Turf[i][turfOwner]][teamName], g_Turf[i][turfOwnerKills], g_MembersInTurf[i][g_Turf[i][turfOwner]]);
  359. PlayerTextDrawSetString(p, g_PlayerTurfTxt[p][1], szBuffer);
  360. PlayerTextDrawColor(p, g_PlayerTurfTxt[p][1], g_Team[g_Turf[i][turfOwner]][teamColor]);
  361. }
  362. }
  363. }
  364. else if (GetPlayerTeam(killerid) == g_Turf[i][turfAttacker]) {
  365. g_Turf[i][turfAttackerKills]++;
  366.  
  367. for (new p, q = GetPlayerPoolSize(); p <= q; p++) {
  368. if (IsPlayerConnected(p) && IsPlayerInGangZone(p, g_Turf[i][turfId]) && GetPlayerState(p) != PLAYER_STATE_WASTED && ! GetPlayerInterior(p) && ! GetPlayerVirtualWorld(p)) {
  369. new
  370. szBuffer[156]
  371. ;
  372. format(szBuffer, sizeof(szBuffer), "%s~w~~h~: ~r~%i ~w~~h~kills with ~r~%i ~w~~h~players", g_Team[g_Turf[i][turfAttacker]][teamName], g_Turf[i][turfAttackerKills], g_MembersInTurf[i][g_Turf[i][turfAttacker]]);
  373. PlayerTextDrawSetString(p, g_PlayerTurfTxt[p][2], szBuffer);
  374. PlayerTextDrawColor(p, g_PlayerTurfTxt[p][2], g_Team[g_Turf[i][turfAttacker]][teamColor]);
  375. }
  376. }
  377. }
  378. }
  379.  
  380. return 1;
  381. }
  382. }
  383. }
  384. }
  385.  
  386. return 1;
  387. }
  388.  
  389. public OnPlayerEnterGangZone(playerid, zone) {
  390. if (0 <= GetPlayerTeam(playerid) < sizeof(g_Team) && GetPlayerState(playerid) != PLAYER_STATE_WASTED && ! GetPlayerInterior(playerid) && ! GetPlayerVirtualWorld(playerid)) {
  391. for (new i, j = sizeof(g_Turf); i < j; i++) {
  392. if (zone == g_Turf[i][turfId]) {
  393. new
  394. szTurfText[156]
  395. ;
  396. strcat(szTurfText, "~y~~h~");
  397. strcat(szTurfText, g_Team[g_Turf[i][turfOwner]][teamName]);
  398. strcat(szTurfText, "'s ");
  399. strcat(szTurfText, g_Turf[i][turfName]);
  400. GameTextForPlayer(playerid, szTurfText, 3000, 1);
  401.  
  402. g_MembersInTurf[i][GetPlayerTeam(playerid)]++;
  403.  
  404. if (GetPlayerTeam(playerid) != g_Turf[i][turfOwner]) {
  405. if (g_Turf[i][turfState] == TURF_STATE_NORMAL) {
  406. if (g_MembersInTurf[i][GetPlayerTeam(playerid)] >= TURF_REQUIRED_PLAYERS) {
  407. g_Turf[i][turfState] = TURF_STATE_PROVOKED;
  408. g_Turf[i][turfAttacker] = GetPlayerTeam(playerid);
  409. g_Turf[i][turfTimer] = SetTimerEx("OnTurfwarProvoked", TURF_REQUIRED_PROVOKETIME, false, "i", i);
  410.  
  411. return 1;
  412. }
  413. }
  414. }
  415. else if (g_Turf[i][turfState] == TURF_STATE_ATTACKED) {
  416. new
  417. szBuffer[156]
  418. ;
  419. strcat(szBuffer, "Turfwar in ~b~~h~~h~~h~");
  420. strcat(szBuffer, g_Turf[i][turfName]);
  421. PlayerTextDrawSetString(playerid, g_PlayerTurfTxt[playerid][0], szBuffer);
  422. PlayerTextDrawShow(playerid, g_PlayerTurfTxt[i][0]);
  423.  
  424. PlayerTextDrawColor(playerid, g_PlayerTurfTxt[playerid][1], g_Team[g_Turf[i][turfOwner]][teamColor]);
  425. PlayerTextDrawShow(playerid, g_PlayerTurfTxt[i][1]);
  426.  
  427. PlayerTextDrawColor(playerid, g_PlayerTurfTxt[playerid][2], g_Team[g_Turf[i][turfAttacker]][teamColor]);
  428. PlayerTextDrawShow(playerid, g_PlayerTurfTxt[i][2]);
  429.  
  430. if (GetPlayerTeam(playerid) == g_Turf[i][turfOwner]) {
  431. for (new p, q = GetPlayerPoolSize(); p <= q; p++) {
  432. if (IsPlayerConnected(p) && IsPlayerInGangZone(p, g_Turf[i][turfId]) && GetPlayerState(p) != PLAYER_STATE_WASTED && ! GetPlayerInterior(p) && ! GetPlayerVirtualWorld(p)) {
  433. format(szBuffer, sizeof(szBuffer), "%s~w~~h~: ~r~%i ~w~~h~kills with ~r~%i ~w~~h~players", g_Team[g_Turf[i][turfOwner]][teamName], g_Turf[i][turfOwnerKills], g_MembersInTurf[i][g_Turf[i][turfOwner]]);
  434. PlayerTextDrawSetString(p, g_PlayerTurfTxt[p][1], szBuffer);
  435. }
  436. }
  437. }
  438. else if (GetPlayerTeam(playerid) == g_Turf[i][turfAttacker]) {
  439. for (new p, q = GetPlayerPoolSize(); p <= q; p++) {
  440. if (IsPlayerConnected(p) && IsPlayerInGangZone(p, g_Turf[i][turfId]) && GetPlayerState(p) != PLAYER_STATE_WASTED && ! GetPlayerInterior(p) && ! GetPlayerVirtualWorld(p)) {
  441. format(szBuffer, sizeof(szBuffer), "%s~w~~h~: ~r~%i ~w~~h~kills with ~r~%i ~w~~h~players", g_Team[g_Turf[i][turfOwner]][teamName], g_Turf[i][turfOwnerKills], g_MembersInTurf[i][g_Turf[i][turfOwner]]);
  442. PlayerTextDrawSetString(p, g_PlayerTurfTxt[p][1], szBuffer);
  443. }
  444. }
  445. }
  446. }
  447.  
  448. return 1;
  449. }
  450. }
  451. }
  452.  
  453. return 1;
  454. }
  455.  
  456. forward OnTurfwarProvoked(turfid);
  457. public OnTurfwarProvoked(turfid) {
  458. g_Turf[turfid][turfState] = TURF_STATE_ATTACKED;
  459. g_Turf[turfid][turfTimer] = SetTimerEx("OnTurfwarEnd", TURF_REQUIRED_CAPTURETIME, false, "i", turfid);
  460.  
  461. new
  462. szText[156]
  463. ;
  464. strcat(szText, "~y~We have provoked a turfwar against ~b~~h~~h~~h~");
  465. strcat(szText, g_Team[g_Turf[turfid][turfOwner]][teamName]);
  466. strcat(szText, " ~y~in ~b~~h~~h~~h~");
  467. strcat(szText, g_Turf[turfid][turfName]);
  468. strcat(szText, " ~y~(/findwar)");
  469. NotifyTeam(g_Turf[turfid][turfAttacker], 2, szText);
  470.  
  471. szText[0] = EOS;
  472. strcat(szText, "~y~We have been attacked by ~b~~h~~h~~h~");
  473. strcat(szText, g_Team[g_Turf[turfid][turfAttacker]][teamName]);
  474. strcat(szText, " ~y~in ~b~~h~~h~~h~");
  475. strcat(szText, g_Turf[turfid][turfName]);
  476. strcat(szText, " ~y~(/findwar)");
  477. NotifyTeam(g_Turf[turfid][turfOwner], 3, szText);
  478.  
  479. GangZoneFlashForAll(g_Turf[turfid][turfId], COLOR_CHANGE_ALPHA(g_Team[g_Turf[turfid][turfAttacker]][teamColor]));
  480.  
  481. for (new p, q = GetPlayerPoolSize(); p <= q; p++) {
  482. if (IsPlayerConnected(p) && IsPlayerInGangZone(p, g_Turf[turfid][turfId]) && GetPlayerState(p) != PLAYER_STATE_WASTED && ! GetPlayerInterior(p) && ! GetPlayerVirtualWorld(p)) {
  483. new
  484. szBuffer[156]
  485. ;
  486. strcat(szBuffer, "Turfwar in ~b~~h~~h~~h~");
  487. strcat(szBuffer, g_Turf[turfid][turfName]);
  488. PlayerTextDrawSetString(p, g_PlayerTurfTxt[p][0], szBuffer);
  489. PlayerTextDrawShow(p, g_PlayerTurfTxt[p][0]);
  490.  
  491. format(szBuffer, sizeof(szBuffer), "%s~w~~h~: ~r~%i ~w~~h~kills with ~r~%i ~w~~h~players", g_Team[g_Turf[turfid][turfOwner]][teamName], g_Turf[turfid][turfOwnerKills], g_MembersInTurf[turfid][g_Turf[turfid][turfOwner]]);
  492. PlayerTextDrawSetString(p, g_PlayerTurfTxt[p][1], szBuffer);
  493. PlayerTextDrawColor(p, g_PlayerTurfTxt[p][1], g_Team[g_Turf[turfid][turfOwner]][teamColor]);
  494. PlayerTextDrawShow(p, g_PlayerTurfTxt[p][1]);
  495.  
  496. format(szBuffer, sizeof(szBuffer), "%s~w~~h~: ~r~%i ~w~~h~kills with ~r~%i ~w~~h~players", g_Team[g_Turf[turfid][turfAttacker]][teamName], g_Turf[turfid][turfAttackerKills], g_MembersInTurf[turfid][g_Turf[turfid][turfAttacker]]);
  497. PlayerTextDrawSetString(p, g_PlayerTurfTxt[p][2], szBuffer);
  498. PlayerTextDrawColor(p, g_PlayerTurfTxt[p][2], g_Team[g_Turf[turfid][turfAttacker]][teamColor]);
  499. PlayerTextDrawShow(p, g_PlayerTurfTxt[p][2]);
  500. }
  501. }
  502. }
  503.  
  504. forward OnTurfwarEnd(turfid);
  505. public OnTurfwarEnd(turfid) {
  506. g_Turf[turfid][turfTimer] = -1;
  507.  
  508. new
  509. iScores[2],
  510. szText[156]
  511. ;
  512. iScores[0] = g_Turf[turfid][turfOwnerKills] + g_MembersInTurf[turfid][g_Turf[turfid][turfOwner]];
  513. iScores[1] = g_Turf[turfid][turfAttackerKills] + g_MembersInTurf[turfid][g_Turf[turfid][turfAttacker]];
  514. if (iScores[0] < iScores[1]) {
  515. strcat(szText, "~y~We have won the turfwar against ~b~~h~~h~~h~");
  516. strcat(szText, g_Team[g_Turf[turfid][turfOwner]][teamName]);
  517. strcat(szText, " ~y~in ~b~~h~~h~~h~");
  518. strcat(szText, g_Turf[turfid][turfName]);
  519. strcat(szText, " ~y~(/turfs)");
  520. NotifyTeam(g_Turf[turfid][turfAttacker], 1, szText);
  521.  
  522. szText[0] = EOS;
  523. strcat(szText, "~y~We have lost the turfwar against ~b~~h~~h~~h~");
  524. strcat(szText, g_Team[g_Turf[turfid][turfAttacker]][teamName]);
  525. strcat(szText, " ~y~in ~b~~h~~h~~h~");
  526. strcat(szText, g_Turf[turfid][turfName]);
  527. strcat(szText, " ~y~(/turfs)");
  528. NotifyTeam(g_Turf[turfid][turfOwner], 0, szText);
  529.  
  530. format(szText, sizeof(szText), "* The last turf scores for \"%s\" were: %s - %i, %s - %i.", g_Turf[turfid][turfName], g_Team[g_Turf[turfid][turfOwner]][teamName], iScores[0], g_Team[g_Turf[turfid][turfAttacker]][teamName], iScores[1]);
  531. for (new i, j = sizeof(g_Team); i < j; i++) {
  532. if (GetPlayerTeam(i) == g_Turf[turfid][turfOwner]) {
  533. SendClientMessage(i, COLOR_GREEN, szText);
  534. }
  535. else if (GetPlayerTeam(i) == g_Turf[turfid][turfAttacker]) {
  536. GivePlayerMoney(i, 7000);
  537. SetPlayerScore(i, GetPlayerScore(i) + 5);
  538.  
  539. SendClientMessage(i, COLOR_GREEN, "Your team showed the opponenet team! [+$7000, +5 score]");
  540. SendClientMessage(i, COLOR_GREEN, szText);
  541. }
  542. }
  543.  
  544. g_Turf[turfid][turfOwner] = g_Turf[turfid][turfAttacker];
  545. }
  546. else {
  547. strcat(szText, "~y~We have won the turfwar against ~b~~h~~h~~h~");
  548. strcat(szText, g_Team[g_Turf[turfid][turfAttacker]][teamName]);
  549. strcat(szText, " ~y~in ~b~~h~~h~~h~");
  550. strcat(szText, g_Turf[turfid][turfName]);
  551. strcat(szText, " ~y~(/turfs)");
  552. NotifyTeam(g_Turf[turfid][turfOwner], 1, szText);
  553.  
  554. szText[0] = EOS;
  555. strcat(szText, "~y~We have lost the turfwar against ~b~~h~~h~~h~");
  556. strcat(szText, g_Team[g_Turf[turfid][turfOwner]][teamName]);
  557. strcat(szText, " ~y~in ~b~~h~~h~~h~");
  558. strcat(szText, g_Turf[turfid][turfName]);
  559. strcat(szText, " ~y~(/turfs)");
  560. NotifyTeam(g_Turf[turfid][turfAttacker], 0, szText);
  561.  
  562. format(szText, sizeof(szText), "* The last turf scores for \"%s\" were: %s - %i, %s - %i.", g_Turf[turfid][turfName], g_Team[g_Turf[turfid][turfOwner]][teamName], iScores[0], g_Team[g_Turf[turfid][turfAttacker]][teamName], iScores[1]);
  563. for (new i, j = sizeof(g_Team); i < j; i++) {
  564. if (GetPlayerTeam(i) == g_Turf[turfid][turfOwner]) {
  565. GivePlayerMoney(i, 7000);
  566. SetPlayerScore(i, GetPlayerScore(i) + 5);
  567.  
  568. SendClientMessage(i, COLOR_GREEN, "Your team showed the opponenet team! [+$7000, +5 score]");
  569. SendClientMessage(i, COLOR_GREEN, szText);
  570. }
  571. else if (GetPlayerTeam(i) == g_Turf[turfid][turfAttacker]) {
  572. SendClientMessage(i, COLOR_GREEN, szText);
  573. }
  574. }
  575. }
  576.  
  577. g_Turf[turfid][turfState] = TURF_STATE_NORMAL;
  578.  
  579. g_Turf[turfid][turfAttacker] = NO_TEAM;
  580.  
  581. g_Turf[turfid][turfAttackerKills] = 0;
  582. g_Turf[turfid][turfOwnerKills] = 0;
  583.  
  584. GangZoneStopFlashForAll(g_Turf[turfid][turfId]);
  585. GangZoneShowForAll(g_Turf[turfid][turfId], COLOR_CHANGE_ALPHA(g_Team[g_Turf[turfid][turfOwner]][teamColor]));
  586.  
  587. for (new p, q = GetPlayerPoolSize(); p <= q; p++) {
  588. if (IsPlayerConnected(p) && IsPlayerInGangZone(p, g_Turf[turfid][turfId]) && GetPlayerState(p) != PLAYER_STATE_WASTED && ! GetPlayerInterior(p) && ! GetPlayerVirtualWorld(p)) {
  589. PlayerTextDrawHide(p, g_PlayerTurfTxt[p][0]);
  590.  
  591. PlayerTextDrawHide(p, g_PlayerTurfTxt[p][1]);
  592.  
  593. PlayerTextDrawHide(p, g_PlayerTurfTxt[p][2]);
  594. }
  595. }
  596. }
  597.  
  598. public OnPlayerLeaveGangZone(playerid, zone) {
  599. if (0 <= GetPlayerTeam(playerid) < sizeof(g_Team)) {
  600. for (new i, j = sizeof(g_Turf); i < j; i++) {
  601. if (zone == g_Turf[i][turfId]) {
  602. g_MembersInTurf[i][GetPlayerTeam(playerid)]--;
  603.  
  604. if (g_Turf[i][turfState] == TURF_STATE_PROVOKED) {
  605. if (g_MembersInTurf[i][GetPlayerTeam(playerid)] < TURF_REQUIRED_PLAYERS) {
  606. g_Turf[i][turfState] = TURF_STATE_NORMAL;
  607. g_Turf[i][turfAttacker] = NO_TEAM;
  608. KillTimer(g_Turf[i][turfTimer]);
  609. g_Turf[i][turfTimer] = -1;
  610.  
  611. return 1;
  612. }
  613. }
  614. else if (g_Turf[i][turfState] == TURF_STATE_ATTACKED) {
  615. PlayerTextDrawHide(playerid, g_PlayerTurfTxt[playerid][0]);
  616.  
  617. PlayerTextDrawHide(playerid, g_PlayerTurfTxt[playerid][1]);
  618.  
  619. PlayerTextDrawHide(playerid, g_PlayerTurfTxt[playerid][2]);
  620.  
  621. if (g_MembersInTurf[i][GetPlayerTeam(playerid)] < TURF_REQUIRED_PLAYERS) {
  622. OnTurfwarEnd(i);
  623.  
  624. KillTimer(g_Turf[i][turfTimer]);
  625. g_Turf[i][turfTimer] = -1;
  626.  
  627. g_Turf[i][turfState] = TURF_STATE_NORMAL;
  628.  
  629. g_Turf[i][turfAttacker] = NO_TEAM;
  630.  
  631. g_Turf[i][turfAttackerKills] = 0;
  632. g_Turf[i][turfOwnerKills] = 0;
  633.  
  634. GangZoneStopFlashForAll(g_Turf[i][turfId]);
  635. GangZoneShowForAll(g_Turf[i][turfId], COLOR_CHANGE_ALPHA(g_Team[g_Turf[i][turfOwner]][teamColor]));
  636.  
  637. for (new p, q = GetPlayerPoolSize(); p <= q; p++) {
  638. if (IsPlayerConnected(p) && IsPlayerInGangZone(p, g_Turf[i][turfId])) {
  639. PlayerTextDrawHide(p, g_PlayerTurfTxt[p][0]);
  640.  
  641. PlayerTextDrawHide(p, g_PlayerTurfTxt[p][1]);
  642.  
  643. PlayerTextDrawHide(p, g_PlayerTurfTxt[p][2]);
  644. }
  645. }
  646.  
  647. return 1;
  648. }
  649. else {
  650. if (GetPlayerTeam(playerid) == g_Turf[i][turfOwner]) {
  651. for (new p, q = GetPlayerPoolSize(); p <= q; p++) {
  652. if (IsPlayerConnected(p) && IsPlayerInGangZone(p, g_Turf[i][turfId]) && GetPlayerState(p) != PLAYER_STATE_WASTED && ! GetPlayerInterior(p) && ! GetPlayerVirtualWorld(p)) {
  653. new
  654. szBuffer[156]
  655. ;
  656. format(szBuffer, sizeof(szBuffer), "%s~w~~h~: ~r~%i ~w~~h~kills with ~r~%i ~w~~h~players", g_Team[g_Turf[i][turfOwner]][teamName], g_Turf[i][turfOwnerKills], g_MembersInTurf[i][g_Turf[i][turfOwner]]);
  657. PlayerTextDrawSetString(p, g_PlayerTurfTxt[p][1], szBuffer);
  658. PlayerTextDrawColor(p, g_PlayerTurfTxt[p][1], g_Team[g_Turf[i][turfOwner]][teamColor]);
  659. }
  660. }
  661. }
  662. else if (GetPlayerTeam(playerid) == g_Turf[i][turfAttacker]) {
  663. for (new p, q = GetPlayerPoolSize(); p <= q; p++) {
  664. if (IsPlayerConnected(p) && IsPlayerInGangZone(p, g_Turf[i][turfId]) && GetPlayerState(p) != PLAYER_STATE_WASTED && ! GetPlayerInterior(p) && ! GetPlayerVirtualWorld(p)) {
  665. new
  666. szBuffer[156]
  667. ;
  668. format(szBuffer, sizeof(szBuffer), "%s~w~~h~: ~r~%i ~w~~h~kills with ~r~%i ~w~~h~players", g_Team[g_Turf[i][turfOwner]][teamName], g_Turf[i][turfOwnerKills], g_MembersInTurf[i][g_Turf[i][turfOwner]]);
  669. PlayerTextDrawSetString(p, g_PlayerTurfTxt[p][2], szBuffer);
  670. PlayerTextDrawColor(p, g_PlayerTurfTxt[p][2], g_Team[g_Turf[i][turfAttacker]][teamColor]);
  671. }
  672. }
  673. }
  674.  
  675. return 1;
  676. }
  677. }
  678. }
  679. }
  680. }
  681.  
  682. return 1;
  683. }
Add Comment
Please, Sign In to add comment