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