· 8 years ago · Mar 18, 2018, 03:44 PM
1//Remove turf points table && edit turf table with
2b_query(Database, "CREATE TABLE IF NOT EXISTS `Turfs` (`turfid`, `name`,`minx`, `miny`, `maxx`, `maxy`, `capx`, `capy`, `capz`, `owner`, `gangid`)");
3new turfstuff[MAX_TURFS][stuff4];
4new bool:attendingturf[MAX_PLAYERS][MAX_TURFS];
5new bool:turfundercontrol[MAX_TURFS];
6new turfexcontrol[MAX_TURFS][MAX_GANGS];
7new turfidcappers[MAX_TURFS] = 0;
8new inturfid[MAX_PLAYERS];
9new realcappers[MAX_TURFS] = 0;
10new windowsclosed[MAX_VEHICLES];
11enum stuff4
12{
13 Text3D:ownermf[80],
14 pickupa,
15 gangzone,
16 area,
17 Text3D:sign
18};
19public OnPlayerEnterDynamicArea(playerid, areaid)
20{
21 new msg[500], DBResult: result, gangname[128], id;
22 if (GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
23 {
24 for (new i = 0; i < MAX_TURFS; i++)
25 {
26 if (!IsValidDynamicArea(turfstuff[i][gangzone])) continue;
27 if (turfstuff[i][gangzone] == areaid)
28 {
29 inturfid[playerid] = i; format(msg, sizeof(msg), "You are in turf id %d", inturfid[playerid]); SendClientMessage(playerid, ERRORCOLOR, msg);
30 format(msg, sizeof(msg), "SELECT * FROM `Turfs` WHERE `turfid` = %d", inturfid[playerid]);
31 result = db_query(Database, msg);
32 db_get_field_assoc(result, "owner", gangname, sizeof(gangname));
33 format(msg , sizeof(msg), "SELECT * FROM `Gangs` WHERE `name` = '%s'", gangname);
34 result = db_query(Database, msg);
35 id = strval(msg);
36 if(id == gang[playerid][0]) SendClientMessage(playerid, ERRORCOLOR, "Your gang already own this");
37 else if(attendingturf[playerid][inturfid[playerid]] == false && turfundercontrol[inturfid[playerid]] == false)
38 {
39 exturftimer[playerid] = SetTimerEx("turftimer", 3000, false, "i", playerid);
40 turftimerrunning[playerid] = true;
41 SendClientMessage(playerid, ERRORCOLOR, "entered inactive turf, and started capping");
42 }
43 else if(attendingturf[playerid][inturfid[playerid]] == false && turfundercontrol[inturfid[playerid]])
44 {
45 foreach(new f : Character)
46 {
47 if(attendingturf[f][inturfid[playerid]] && gang[playerid][0] == gang[f][0])
48 {
49 attendingturf[playerid][inturfid[playerid]] = true;
50 turfidcappers[inturfid[playerid]]++;
51 turfexcontrol[inturfid[playerid]][gang[playerid][0]] = gang[playerid][0];
52 SendClientMessage(playerid, ERRORCOLOR, "entered active turf of your team");
53 }
54 }
55 }
56 break;
57 }
58 }
59 }
60 return 1;
61}
62public OnPlayerLeaveDynamicArea(playerid, areaid)
63{
64 if(inturfid[playerid] != -1)
65 {
66 if(attendingturf[playerid][inturfid[playerid]])
67 {
68 attendingturf[playerid][inturfid[playerid]] = false;
69 turfidcappers[inturfid[playerid]]--;
70 SendClientMessage(playerid, ERRORCOLOR, "left active turf");
71 new msg[128];
72 if(turftimerrunning[playerid])
73 {
74 KillTimer(exturftimer[playerid]);
75 turftimerrunning[playerid] = false;
76 }
77 if(turfidcappers[inturfid[playerid]] == 0)
78 {
79 if(realcappers[inturfid[playerid]] == 1)
80 {
81 format(msg, sizeof(msg), "%s has failed in caping turf", GetGangName(gang[playerid][0]));
82 SendClientMessageToAll(ERRORCOLOR, msg);
83 turfundercontrol[inturfid[playerid]] = false;
84 KillTimer(player1timer[playerid]);
85 realcappers[inturfid[playerid]] = 0;
86 }
87 else if(realcappers[inturfid[playerid]] == 2)
88 {
89 format(msg, sizeof(msg), "%s has failed in caping turf", GetGangName(gang[playerid][0]));
90 SendClientMessageToAll(ERRORCOLOR, msg);
91 turfundercontrol[inturfid[playerid]] = false;
92 KillTimer(players2timer[playerid]);
93 realcappers[inturfid[playerid]] = 0;
94 }
95 else if(realcappers[inturfid[playerid]] == 3)
96 {
97 format(msg, sizeof(msg), "%s has failed in caping turf", GetGangName(gang[playerid][0]));
98 SendClientMessageToAll(ERRORCOLOR, msg);
99 turfundercontrol[inturfid[playerid]] = false;
100 KillTimer(players3timer[playerid]);
101 realcappers[inturfid[playerid]] = 0;
102 }
103 else if(realcappers[inturfid[playerid]] <= 4)
104 {
105 format(msg, sizeof(msg), "%s has failed in caping turf", GetGangName(gang[playerid][0]));
106 SendClientMessageToAll(ERRORCOLOR, msg);
107 turfundercontrol[inturfid[playerid]] = false;
108 KillTimer(players4timer[playerid]);
109 realcappers[inturfid[playerid]] = 0;
110 }
111 SetTimerEx("leavingarea", 1000, false, "i", playerid);
112 }
113 }
114 }
115 return 1;
116}
117forward leavingarea(playerid);
118public leavingarea(playerid)
119{
120 inturfid[playerid] = -1;
121 return 1;
122}
123CMD:addturf(playerid, params[])
124{
125 new Float:minx, Float:miny, Float:maxx, Float:maxy, query[500], DBResult: result, turfid;
126 if(!AdminCheck(playerid, 4)) return 0;
127 if (sscanf(params, "ffff", minx, miny, maxx, maxy)) return SendClientMessage(playerid, ERRORCOLOR, "Usage: /addturf [minx] [miny] [maxx] [maxy]");
128 result = db_query(Database, "SELECT * FROM `Turfs`");
129 if (db_num_rows(result) == MAX_TURFS-1)
130 {
131 db_free_result(result);
132 return SendClientMessage(playerid, ERRORCOLOR, "Turf limit has been reached.");
133 }
134 db_free_result(result);
135 if (maxx < minx || maxy < miny) return SendClientMessage(playerid, ERRORCOLOR, "Invalid input.");
136 for (new i = 0; i < MAX_TURFS; i++)
137 {
138 format(query, sizeof(query), "SELECT * FROM `Turfs` WHERE `turfid` = %d", i);
139 result = db_query(Database, query);
140 if (db_num_rows(result) == 0)
141 {
142 turfid = i;
143 break;
144 }
145 db_free_result(result);
146 }
147 db_free_result(result);
148 format(query, sizeof(query), "INSERT INTO `Turfs` (`turfid`, `name`,`minx`, `miny`, `maxx`, `maxy`, `capx`, `capy`, `capz`, `owner`, `gangid`) VALUES (%d, '-',%f, %f, %f, %f, 0, 0, 0, '-', 0)", turfid, minx, miny, maxx, maxy);
149 db_query(Database, query);
150 turfstuff[turfid][gangzone] = CreateDynamicRectangle(minx, miny, maxx, maxy);
151 turfstuff[turfid][area] = GangZoneCreate(minx, miny, maxx, maxy);
152 GangZoneShowForAll(turfstuff[turfid][area], 0x00FFFF99);
153 return 1;
154}
155forward turftimer(playerid);
156public turftimer(playerid)
157{
158 turftimerrunning[playerid] = false;
159 attendingturf[playerid][inturfid[playerid]] = true;
160 turfidcappers[inturfid[playerid]]++;
161 turfundercontrol[inturfid[playerid]] = true;
162 turfundercontrol[inturfid[playerid]] = true;
163 foreach(new i : Character)
164 {
165 if(inturfid[i] == inturfid[playerid] && gang[i][0] == gang[playerid][0])
166 {
167 turfidcappers[inturfid[playerid]]++;
168 attendingturf[i][inturfid[playerid]] = true;
169 realcappers[inturfid[playerid]]++;
170 }
171 }
172 if(turfidcappers[inturfid[playerid]] == 1)
173 {
174 player1timer[playerid] = SetTimerEx("player1", 5000, false, "i", playerid);
175 }
176 else if(turfidcappers[inturfid[playerid]] == 2)
177 {
178 players2timer[playerid] = SetTimerEx("players2", 4000, false, "i", playerid);
179 }
180 else if(turfidcappers[inturfid[playerid]] == 3)
181 {
182 players3timer[playerid] = SetTimerEx("players3", 30000, false, "i", playerid);
183 }
184 else if(turfidcappers[inturfid[playerid]] >= 4)
185 {
186 players4timer[playerid] = SetTimerEx("players4", 20000, false, "i", playerid);
187 }
188 return 1;
189}
190forward player1(playerid);
191public player1(playerid)
192{
193 new query[500], DBResult: result, name[126], str[128];
194 db_open("Database.db");
195 format(query, sizeof(query), "UPDATE `Gangs` SET `gangbank` = `gangbank` +500 WHERE `id` = %d", gang[playerid][0]);
196 db_query(Database, query);
197 format(query, sizeof(query), "Your gang bank has received 500$");
198 SendMessageToGang(gang[playerid][0], query);
199 format(query, sizeof(query), "SELECT * FROM `Turfs` WHERE `turfid` = %d", inturfid[playerid]);
200 result = db_query(Database, query);
201 db_get_field_assoc(result, "name", name, sizeof(name));
202 format(query, sizeof(query), "UPDATE `Turfs` SET `gangid` = %d, `owner` = '%s' WHERE `turfid` = %d", gang[playerid][0], GetGangName(gang[playerid][0]), inturfid[playerid]);
203 db_query(Database, query);
204 format(query, sizeof(query), "%s has successfuly capped %s turf", Name[playerid], name);
205 SendClientMessageToAll(ERRORCOLOR, query);
206 format(str, sizeof(str), "OWNER: {FF0000}%s", name);
207 Update3DTextLabelText(turfstuff[inturfid[playerid]][ownermf], 0x26FF00FF, str);
208 if(attendingturf[playerid][inturfid[playerid]])
209 {
210 foreach(new i : Character)
211 {
212 if(inturfid[playerid] == inturfid[i] && gang[playerid][0] == gang[i][0])
213 {
214 attendingturf[i][inturfid[playerid]] = false;
215 turfidcappers[inturfid[playerid]]--;
216 turfundercontrol[inturfid[playerid]] = false;
217 }
218 }
219 }
220 attendingturf[playerid][inturfid[playerid]] = false;
221 return 1;
222}
223forward players2(playerid);
224public players2(playerid)
225{
226 new query[500], DBResult: result, name[126], str[128];
227 format(query, sizeof(query), "UPDATE `Gangs` SET `gangbank` = `gangbank` +500 WHERE `id` = %d", gang[playerid][0]);
228 db_query(Database, query);
229 format(query, sizeof(query), "Your gang bank has received 500$");
230 SendMessageToGang(gang[playerid][0], query);
231 format(query, sizeof(query), "SELECT * FROM `Turfs` WHERE `turfid` = %d", inturfid[playerid]);
232 result = db_query(Database, query);
233 db_get_field_assoc(result, "name", name, sizeof(name));
234 format(query, sizeof(query), "%s has successfuly capped %s turf", Name[playerid], name);
235 SendClientMessageToAll(ERRORCOLOR, query);
236 format(query, sizeof(query), "UPDATE `Turfs` SET `gangid` = %d, `owner` = '%s' WHERE `turfid` = %d", gang[playerid][0], GetGangName(gang[playerid][0]), inturfid[playerid]);
237 db_query(Database, query);
238 format(str, sizeof(str), "OWNER: {FF0000}%s", name);
239 Update3DTextLabelText(turfstuff[inturfid[playerid]][ownermf], 0x26FF00FF, str);
240 if(attendingturf[playerid][inturfid[playerid]])
241 {
242 foreach(new i : Character)
243 {
244 if(inturfid[playerid] == inturfid[i] && gang[playerid][0] == gang[i][0])
245 {
246 attendingturf[i][inturfid[playerid]] = false;
247 turfidcappers[inturfid[playerid]]--;
248 turfundercontrol[inturfid[playerid]] = false;
249 }
250 }
251 }
252 attendingturf[playerid][inturfid[playerid]] = false;
253 return 1;
254}
255forward players3(playerid);
256public players3(playerid)
257{
258 new query[500], DBResult: result, name[126], str[128];
259 format(query, sizeof(query), "UPDATE `Gangs` SET `gangbank` = `gangbank` +500 WHERE `id` = %d", gang[playerid][0]);
260 db_query(Database, query);
261 format(query, sizeof(query), "Your gang bank has received 500$");
262 SendMessageToGang(gang[playerid][0], query);
263 format(query, sizeof(query), "SELECT * FROM `Turfs` WHERE `turfid` = %d", inturfid[playerid]);
264 result = db_query(Database, query);
265 db_get_field_assoc(result, "name", name, sizeof(name));
266 format(query, sizeof(query), "UPDATE `Turfs` SET `gangid` = %d, `owner` = '%s' WHERE `turfid` = %d", gang[playerid][0], GetGangName(gang[playerid][0]), inturfid[playerid]);
267 db_query(Database, query);
268 format(query, sizeof(query), "%s has successfuly capped %s turf", Name[playerid], name);
269 SendClientMessageToAll(ERRORCOLOR, query);
270 format(str, sizeof(str), "OWNER: {FF0000}%s", name);
271 Update3DTextLabelText(turfstuff[inturfid[playerid]][ownermf], 0x26FF00FF, str);
272 if(attendingturf[playerid][inturfid[playerid]])
273 {
274 foreach(new i : Character)
275 {
276 if(inturfid[playerid] == inturfid[i] && gang[playerid][0] == gang[i][0])
277 {
278 attendingturf[i][inturfid[playerid]] = false;
279 turfidcappers[inturfid[playerid]]--;
280 turfundercontrol[inturfid[playerid]] = false;
281 }
282 }
283 }
284 attendingturf[playerid][inturfid[playerid]] = false;
285 return 1;
286}
287forward players4(playerid);
288public players4(playerid)
289{
290 new query[500], DBResult: result, name[126], str[128];
291 format(query, sizeof(query), "UPDATE `Gangs ` SET `gangbank` = `gangbank` +500 WHERE `id` = %d", gang[playerid][0]);
292 db_query(Database, query);
293 format(query, sizeof(query), "Your gang bank has received 500$");
294 SendMessageToGang(gang[playerid][0], query);
295 format(query, sizeof(query), "SELECT * FROM `Turfs` WHERE `turfid` = %d", inturfid[playerid]);
296 result = db_query(Database, query);
297 db_get_field_assoc(result, "name", name, sizeof(name));
298 format(query, sizeof(query), "UPDATE `Turfs` SET `gangid` = %d, `owner` = '%s' WHERE `turfid` = %d", gang[playerid][0], GetGangName(gang[playerid][0]), inturfid[playerid]);
299 db_query(Database, query);
300 format(str, sizeof(str), "OWNER: {FF0000}%s", name);
301 Update3DTextLabelText(turfstuff[inturfid[playerid]][ownermf], 0x26FF00FF, str);
302 if(attendingturf[playerid][inturfid[playerid]])
303 {
304 foreach(new i : Character)
305 {
306 if(inturfid[playerid] == inturfid[i] && gang[playerid][0] == gang[i][0])
307 {
308 attendingturf[i][inturfid[playerid]] = false;
309 turfidcappers[inturfid[playerid]]--;
310 turfundercontrol[inturfid[playerid]] = false;
311 }
312 }
313 }
314 attendingturf[playerid][inturfid[playerid]] = false;
315 return 1;
316}
317public OnVehicleSpawn(vehicleid)
318{
319 windowsclosed[vehicleid] = false;
320}
321public OnPlayerText(playerid, text[])
322{
323 new vehicleid = GetPlayerVehicleID(playerid);
324 if(IsPlayerInAnyVehicle(playerid) && windowsclosed[vehicleid])
325 {
326 foreach(new i : Character)
327 {
328 if(IsPlayerInVehicle(i, vehicleid) && windowsclosed[vehicleid])
329 {
330 format(msg, sizeof(msg), "[Windows Closed] %s: %s", Name[playerid], text);
331 SendClientMessage(i, -1, msg);
332 SendMessageToAdmins(4, msg);
333 }
334 return 0;
335 }
336 }
337 return 1;
338}
339CMD:closewindows(playerid, params[])
340{
341 new str[128];
342 new vehicleid = GetPlayerVehicleID(playerid);
343 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, ERRORCOLOR, "You must be in any car to use this command");
344 foreach(new i : Character)
345 {
346 if(IsPlayerInVehicle(i, vehicleid) && windowsclosed[vehicleid] == false)
347 {
348 format(str, sizeof(str), "%s has closed this car's windows", Name[playerid]);
349 SendClientMessage(i, -1, str);
350 windowsclosed[vehicleid] = true;
351 }
352 else if(IsPlayerInVehicle(playerid, vehicleid) && windowsclosed[vehicleid])
353 {
354 format(str, sizeof(str), "%s has opened this car's windows", Name[playerid]);
355 SendClientMessage(i, -1, str);
356 windowsclosed[vehicleid] = false;
357 }
358 }
359 return 1;
360}