· 10 years ago · Sep 09, 2016, 11:08 PM
1//==============================================================================
2
3// H2O's Clan System, created in September 2016.
4
5//==============================================================================
6
7
8//Includes
9//--------------
10#include <a_samp>
11#include <sscanf>
12#include <zcmd>
13
14#define DIALOG_INVITE (7000)
15#define DIALOG_STATS (7001)
16#define DIALOG_CMDLIST (7002)
17
18
19new
20 DB: CLANDB,
21 Being_Invited[MAX_PLAYERS],
22 Invited_From[MAX_PLAYERS];
23
24forward PAY_TIME();
25forward EXPIRE_TIME();
26forward GiveClanWeapon(playerid);
27
28public OnFilterScriptInit()
29{
30 CLANDB = db_open("Clan_Database.db");
31 db_query(CLANDB, "CREATE TABLE IF NOT EXISTS `CLAN` (`CNAME`, `MOTD`, `WEAPON`, `TAG`, `RANK1`, `RANK2`, `RANK3`, `RANK4`, `WALLET`, `PAYDATE`, `EXPIREDATE`, `TOTALTAX`)");
32 db_query(CLANDB, "CREATE TABLE IF NOT EXISTS `MEMBERS` (`CNAME`, `PNAME`, `PRANK`, `INCLAN`, `SHOULDPAY`)");
33 SetTimer("PAY_TIME", 1000 * 60 * 60 * 12, true);
34 SetTimer("EXPIRE_TIME", 1000 * 60 * 60 * 12, true);
35 return 1;
36}
37
38public OnFilterScriptExit()
39{
40 db_close(CLANDB);
41 return 1;
42}
43
44public OnPlayerSpawn(playerid)
45{
46 if(IsPlayerInAnyClan(playerid))
47 {
48 SetTimerEx("GiveClanWeapon", 5000, false, "i", playerid);
49 if(PlayerClanLevel(playerid) == 4)
50 {
51 new QSTR[128], Should_Pay[5], DBResult: Result;
52 format(QSTR, sizeof(QSTR), "SELECT * FROM `MEMBERS` WHERE PNAME = '%d'", GetMemberName(playerid));
53 Result = db_query(CLANDB, QSTR);
54 if(db_num_rows(Result))
55 {
56 db_get_field_assoc(Result, "SHOULDPAY", Should_Pay, 5);
57 if(strval(Should_Pay) == 1)
58 {
59 SendClientMessage(playerid, -1, "{0099FF}[Clan-Pay]: {FFFFFF}Its time to pay for the clan to keep it alive. Use /paytax to pay.");
60 }
61 }
62 db_free_result(Result);
63 }
64 }
65 return 1;
66}
67
68public OnPlayerText(playerid, text[])
69{
70 if(text[0] == '+')
71 {
72 if(IsPlayerInAnyClan(playerid))
73 {
74 new
75 QSTR[300];
76 format(QSTR, sizeof(QSTR), "{0099FF}[C.Chat] {FF0000}%s %s [%d]: {FFFFFF}%s", GetPlayerClanRank(playerid), GetMemberName(playerid), playerid, text[1]);
77 for(new i = 0; i <= MAX_PLAYERS; i++)
78 {
79 if(PlayerInClan(playerid, GetPlayerClan(i)))
80 {
81 SendClientMessage(i, 0x0099FFFF, QSTR);
82 return 0;
83 }
84 }
85 }
86 }
87 if(text[0] == '!')
88 {
89 if(IsPlayerInAnyClan(playerid) && PlayerClanLevel(playerid) >= 3)
90 {
91 new
92 QSTR[300];
93 format(QSTR, sizeof(QSTR), "{0099FF}[CLAN]: {FF0000}%s's %s: {FFFFFF}%s", GetPlayerClan(playerid), GetPlayerClanRank(playerid), text[1]);
94 SendClientMessageToAll(0x0099FFFF, QSTR);
95 return 0;
96 }
97 }
98 return 1;
99}
100
101public OnPlayerDeath(playerid, killerid, reason)
102{
103 if(IsPlayerInAnyClan(killerid) && IsPlayerInAnyClan(playerid))
104 {
105 if(killerid != INVALID_PLAYER_ID)
106 {
107 if(PlayerInClan(killerid, GetPlayerClan(playerid)) == 0)
108 {
109 if(GetPlayerWeapon(killerid) == GetClanWeapon(GetPlayerClan(playerid)))
110 {
111 SendClientMessage(killerid, -1, "{0099FF}[CLAN]: {00FF00}You've earned +5 score for killing with this weapon.");
112 SetPlayerScore(killerid, GetPlayerScore(killerid) + 5);
113 }
114 }
115 }
116 }
117 return 1;
118}
119
120public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
121{
122 if(dialogid == DIALOG_INVITE)
123 {
124 if(response)
125 {
126 new
127 QSTR[128], Total_Tax;
128
129 if(IsPlayerConnected(Invited_From[playerid]))
130 {
131 format(QSTR, sizeof(QSTR), "INSERT INTO MEMBERS(CNAME, PNAME, PRANK, INCLAN, SHOULDPAY) VALUES('%s', '%s', 1, 1, 0)",
132 DB_Escape(GetPlayerClan(Invited_From[playerid])), DB_Escape(GetMemberName(playerid)));
133 db_query(CLANDB, QSTR);
134
135 Total_Tax = GetClanTax(GetPlayerClan(playerid));
136 SetClanTax(GetPlayerClan(playerid), Total_Tax + 10000);
137
138 format(QSTR, sizeof(QSTR), "{0099FF}[CLAN]: {FF00FF}Welcome to %s.", GetPlayerClan(playerid));
139 SendClientMessage(playerid, -1, QSTR);
140
141 SendClientMessage(Invited_From[playerid], -1, "{0099FF}[CLAN]: {FF0000}Player accepted your invite.");
142 AddTagToName(playerid, GetPlayerClan(playerid));
143
144 format(QSTR, sizeof(QSTR), "{0099FF}[CLAN]: {00FF00}%s has joined the clan.", GetMemberName(playerid));
145
146 for(new i = 0; i <= MAX_PLAYERS; i++)
147 {
148 if(PlayerInClan(playerid, GetPlayerClan(i)) == 1)
149 {
150 SendClientMessage(i, -1, QSTR);
151 }
152 }
153
154 Invited_From[playerid] = INVALID_PLAYER_ID;
155 Being_Invited[playerid] = 0;
156 }
157 else
158 {
159 Invited_From[playerid] = INVALID_PLAYER_ID;
160 Being_Invited[playerid] = 0;
161 }
162 }
163 else
164 {
165 SendClientMessage(Invited_From[playerid], -1, "{0099FF}[CLAN]: {FF0000}The player ignored your invite to your clan.");
166 Invited_From[playerid] = INVALID_PLAYER_ID;
167 Being_Invited[playerid] = 0;
168 }
169 return 1;
170 }
171 return 0;
172}
173
174//Admin Commands
175//--------------
176
177CMD:createclan(playerid, params[])
178{
179 new
180 clan_name[50], weaponid, id, tag[4];
181 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "You don't have the authority to use this command.");
182 if(sscanf(params, "s[50]dds[4]", clan_name, id, weaponid, tag)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /createclan [Clan Name] [Owner ID] [Clan Weapon ID] [Clan Tag].");
183 if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "Player is not connected.");
184
185 AddOfficialClan(playerid, id, clan_name, "Welcome to our new clan!", tag, "Member", "Advanced Member", "Co-Leader", "Leader", weaponid);
186 return 1;
187}
188
189CMD:removeclan(playerid, params[])
190{
191 if(IsPlayerAdmin(playerid))
192 {
193 RemoveOfficialClan(playerid, params);
194 }
195 return 1;
196}
197
198CMD:setcweapon(playerid, params[])
199{
200 new
201 clan_name[50], QSTR[128], DBResult: Result, weaponid;
202 if(IsPlayerAdmin(playerid))
203 {
204 if(sscanf(params, "s[50]d", clan_name, weaponid)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /setcweapon [Clan Name] [Weapon ID].");
205 if(weaponid <= 0 || weaponid >= 40) return SendClientMessage(playerid, 0xFF0000FF, "Wrong Weapon ID, ranges between 1 - 39.");
206
207 format(QSTR, sizeof(QSTR), "SELECT * FROM `CLAN` WHERE CNAME = '%s'", clan_name);
208 Result = db_query(CLANDB, QSTR);
209
210 if(!db_num_rows(Result)) return SendClientMessage(playerid, 0xFF0000FF, "ERROR: Clan does not exist.");
211 db_free_result(Result);
212
213 format(QSTR, sizeof(QSTR), "UPDATE `CLAN` SET WEAPON = '%d' WHERE CNAME = '%s'", weaponid, DB_Escape(clan_name));
214 db_query(CLANDB, QSTR);
215
216 SendClientMessage(playerid, -1, "[Clan-Admin]: {FF0000}Changes are successfully applied on the clan!");
217
218 } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have the authority to use this command.");
219 return 1;
220}
221
222CMD:getcinfo(playerid, params[])
223{
224 new
225 QSTR[128], STR[400], clan_name[50], wallet[50], DBResult: Result, owner_name[MAX_PLAYER_NAME], player_rank[5];
226
227 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}You are not authorized to use this command.");
228 if(sscanf(params, "s[50]", clan_name)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /getcinfo [Clan Name].");
229
230 format(QSTR, sizeof(QSTR), "SELECT * FROM `CLAN` WHERE CNAME = '%s'", clan_name);
231 Result = db_query(CLANDB, QSTR);
232
233 if(!db_num_rows(Result)) return SendClientMessage(playerid, 0xFF0000FF, "ERROR: Clan does not exist.");
234 db_free_result(Result);
235
236 strcat(STR, "You are now viewing your the specified clan's stats.\n\n", sizeof(STR));
237
238 format(QSTR, sizeof(QSTR), "{FFFFFF}Clan Name:{FF0000} %s\n", clan_name);
239 strcat(STR, QSTR, sizeof(STR));
240
241 format(QSTR, sizeof(QSTR), "{FFFFFF}Clan Message:{FF0000} %s\n", GetClanMOTD(clan_name));
242 strcat(STR, QSTR, sizeof(STR));
243
244 format(QSTR, sizeof(QSTR), "{FFFFFF}Clan Special Weapon:{FF0000} %d\n", GetClanWeapon(clan_name));
245 strcat(STR, QSTR, sizeof(STR));
246
247 format(QSTR, sizeof(QSTR), "SELECT * FROM `MEMBERS` WHERE CNAME = '%s'", DB_Escape(clan_name));
248 Result = db_query(CLANDB, QSTR);
249
250 format(QSTR, sizeof(QSTR), "{FFFFFF}Clan Total Members:{FF0000} %d\n", db_num_rows(Result));
251 strcat(STR, QSTR, sizeof(STR));
252
253 format(QSTR, sizeof(QSTR), "SELECT * FROM CLAN WHERE CNAME = '%s'", DB_Escape(clan_name));
254 Result = db_query(CLANDB, QSTR);
255
256 db_get_field_assoc(Result, "WALLET", wallet, 50);
257
258 format(QSTR, sizeof(QSTR), "{FFFFFF}Clan Wallet (Cash):{FF0000} %d\n", strval(wallet));
259 strcat(STR, QSTR, sizeof(STR));
260
261 format(QSTR, sizeof(QSTR), "{FFFFFF}Clan Tax:{FF0000} %d\n", GetClanTax(clan_name));
262 strcat(STR, QSTR, sizeof(STR));
263
264 format(QSTR, sizeof(QSTR), "SELECT * FROM MEMBERS WHERE CNAME = '%s'", DB_Escape(clan_name));
265 Result = db_query(CLANDB, QSTR);
266
267 db_get_field_assoc(Result, "PRANK", player_rank, 5);
268
269 if(strval(player_rank) == 4)
270 {
271 db_get_field_assoc(Result, "PNAME", owner_name, MAX_PLAYER_NAME);
272 }
273
274 format(QSTR, sizeof(QSTR), "{FFFFFF}Leader:{FF0000} %s\n\n", owner_name);
275 strcat(STR, QSTR, sizeof(STR));
276
277 ShowPlayerDialog(playerid, DIALOG_STATS, DIALOG_STYLE_MSGBOX, "{FF0000}Clan Stats", STR, "Close", "");
278
279 db_free_result(Result);
280 return 1;
281}
282
283CMD:setcptime(playerid, params[]) // Set all clans pay time.
284{
285 new
286 QSTR[128], DUETIME[5];
287
288 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}You are not authorized to use this command.");
289 if(sscanf(params, "d", DUETIME)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /setcptime [Due Time (In Days)].");
290
291
292 format(QSTR, sizeof(QSTR), "UPDATE `CLAN` SET PAYDATE = '%d'", DUETIME);
293 db_query(CLANDB, QSTR);
294
295 SendClientMessage(playerid, -1, "{00FF00}Action Applied Successfully.");
296 return 1;
297}
298
299CMD:setcetime(playerid, params[]) // Set all clans expire time.
300{
301 new
302 QSTR[128], DUETIME[5];
303
304 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}You are not authorized to use this command.");
305 if(sscanf(params, "d", DUETIME)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /setcptime [Expire Time (In Days)].");
306
307 format(QSTR, sizeof(QSTR), "UPDATE `CLAN` SET EXPIREDATE = '%d'", DUETIME);
308 db_query(CLANDB, QSTR);
309
310 SendClientMessage(playerid, -1, "{00FF00}Action Applied Successfully.");
311 return 1;
312}
313
314CMD:setplayercname(playerid, params[]) // Set player clan name.
315{
316 new
317 id, NEW_NAME[MAX_PLAYER_NAME];
318
319 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}You are not authorized to use this command.");
320 if(sscanf(params, "ds[50]", id, NEW_NAME)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /setplayercname [ID] [New Name].");
321 if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "{FF0000}Player is not connected.");
322 if(IsPlayerInAnyClan(id) == 0) return SendClientMessage(playerid, -1, "{FF0000}Player is not a clan member.");
323
324 SetPlayerClanName(playerid, NEW_NAME);
325 SendClientMessage(playerid, -1, "{00FF00}Name changed Successfully.");
326 return 1;
327}
328
329CMD:clanslist(playerid)
330{
331 new
332 QSTR[128], DBResult: Result, PNAME[50];
333 if(IsPlayerAdmin(playerid))
334 {
335 format(QSTR, sizeof(QSTR), "SELECT * FROM `CLAN`");
336 Result = db_query(CLANDB, QSTR);
337
338 db_get_field_assoc(Result, "CNAME", PNAME, 50);
339 SendClientMessage(playerid, -1, "{0099FF}[CLAN]: {FF0000}Clans list:");
340 for(new i = 0; i <= db_num_rows(Result); i++)
341 {
342 format(QSTR, sizeof(QSTR), "{FF0000}- {0099FF}%s", PNAME);
343 }
344 SendClientMessage(playerid, -1, QSTR);
345 db_free_result(Result);
346 } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have the authority to use this command.");
347 return 1;
348}
349
350//Clan Leader Commands
351//--------------
352
353CMD:paytax(playerid)
354{
355 if(IsPlayerInAnyClan(playerid) && PlayerClanLevel(playerid) >= 4)
356 {
357 new
358 QSTR[128], Should_Pay[5], DBResult: Result, Total_Tax[5];
359 format(QSTR, sizeof(QSTR), "SELECT * FROM `MEMBERS` WHERE CNAME = '%s'", GetPlayerClan(playerid));
360 Result = db_query(CLANDB, QSTR);
361 if(db_num_rows(Result))
362 {
363 db_get_field_assoc(Result, "SHOULDPAY", Should_Pay, 5);
364
365 if(strval(Should_Pay) == 1)
366 {
367 format(QSTR, sizeof(QSTR), "SELECT * FROM `CLAN` WHERE CNAME = '%s'", GetPlayerClan(playerid));
368 Result = db_query(CLANDB, QSTR);
369
370 db_get_field_assoc(Result, "TOTALTAX", Total_Tax, 5);
371
372 if(GetPlayerMoney(playerid) >= strval(Total_Tax))
373 {
374 new
375 CURDATE, Y, M, D, OVRDUEDATE, EXPIREDATE;
376 CURDATE = getdate(Y, M, D);
377
378 if(CURDATE > 300)
379 {
380 OVRDUEDATE = CURDATE + 28;
381 EXPIREDATE = CURDATE + 35;
382 }
383 else if(CURDATE < 300)
384 {
385 OVRDUEDATE = 1;
386 EXPIREDATE = 7;
387 }
388
389 format(QSTR, sizeof(QSTR), "UPDATE `CLAN` SET PAYDATE = '%d' WHERE CNAME = '%s'", OVRDUEDATE, DB_Escape(GetPlayerClan(playerid)));
390 db_query(CLANDB, QSTR);
391
392 format(QSTR, sizeof(QSTR), "UPDATE `CLAN` SET EXPIREDATE = '%d' WHERE CNAME = '%s'", EXPIREDATE, DB_Escape(GetPlayerClan(playerid)));
393 db_query(CLANDB, QSTR);
394
395 format(QSTR, sizeof(QSTR), "UPDATE `MEMBERS` SET SHOULDPAY = '0' WHERE PNAME = '%s'", DB_Escape(GetMemberName(playerid)));
396 db_query(CLANDB, QSTR);
397
398 SendClientMessage(playerid, 0xFF0000FF, "Successfully Re-paid for the clan.");
399
400 }
401 else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough money to fund the taxes.");
402 } else return SendClientMessage(playerid, 0xFF0000FF, "You don't need to pay the tax of your clan at the moment.");
403 }
404 db_free_result(Result);
405 } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have the authority to use this command.");
406 return 1;
407}
408
409CMD:taxtime(playerid)
410{
411 if(IsPlayerInAnyClan(playerid) && PlayerClanLevel(playerid) >= 4)
412 {
413 new
414 QSTR[128], DBResult: Result, DUEDATE[5], CURDATE, Y, M, D;
415 CURDATE = getdate(Y, M, D);
416
417 format(QSTR, sizeof(QSTR), "SELECT * FROM `CLAN` WHERE CNAME = '%s'", GetPlayerClan(playerid));
418 Result = db_query(CLANDB, QSTR);
419
420 db_get_field_assoc(Result, "PAYDATE", DUEDATE, 5);
421
422 format(QSTR, sizeof(QSTR), "Days Left: %d/%d", CURDATE, strval(DUEDATE));
423 SendClientMessage(playerid, -1, QSTR);
424 db_free_result(Result);
425 }
426 return 1;
427}
428
429CMD:setrank(playerid, params[])
430{
431 new
432 id, rankid, QSTR[128];
433 if(IsPlayerInAnyClan(playerid) && PlayerClanLevel(playerid) >= 4)
434 {
435 if(sscanf(params, "dd", id, rankid)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /setrank [ID] [Level].");
436 if(rankid <= 0 || rankid >= 4) return SendClientMessage(playerid, 0xFF0000FF, "Wrong rank ID, ranges between 1 - 3.");
437 if(id == playerid) return SendClientMessage(playerid, 0xFF0000FF, "You cannot set yourself.");
438 if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "Player is not connected.");
439 if(PlayerInClan(playerid, GetPlayerClan(id)) == 0) SendClientMessage(playerid, 0xFF0000FF, "Player is not in your clan.");
440
441 format(QSTR, sizeof(QSTR), "UPDATE `CLAN` SET PRANK = '%d' WHERE PNAME = '%s'", rankid, DB_Escape(GetMemberName(id)));
442 db_query(CLANDB, QSTR);
443
444 } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have the authority to use this command.");
445 return 1;
446}
447
448//Clan Co-Leader Commands
449//--------------
450
451CMD:clantax(playerid)
452{
453 if(IsPlayerInAnyClan(playerid) && PlayerClanLevel(playerid) >= 3)
454 {
455 new QSTR[128];
456 format(QSTR, sizeof(QSTR), "{0099FF}[CLAN]: {FF0000}Current clan Tax: %d", GetClanTax(GetPlayerClan(playerid)));
457 SendClientMessage(playerid, -1, QSTR);
458 } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have the authority to use this command.");
459 return 1;
460}
461
462CMD:clanwithdraw(playerid, params[])
463{
464 new
465 damount, wamount[50], QSTR[128], DBResult: Result;
466 if(IsPlayerInAnyClan(playerid) && PlayerClanLevel(playerid) >= 3)
467 {
468 if(sscanf(params, "i", damount)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /clanwithdraw [Amount].");
469 format(QSTR, sizeof(QSTR), "SELECT * FROM `CLAN` WHERE CNAME = '%s'", DB_Escape(GetPlayerClan(playerid)));
470 Result = db_query(CLANDB, QSTR);
471
472 db_get_field_assoc(Result, "WALLET", wamount, 50);
473 if(damount > strval(wamount)) return SendClientMessage(playerid, 0xFF0000FF, "The clan doesn't have enough cash.");
474
475 format(QSTR, sizeof(QSTR), "UPDATE `CLAN` SET WALLET = '%d' WHERE CNAME = '%s'", strval(wamount) - damount, GetPlayerClan(playerid));
476 db_query(CLANDB, QSTR);
477
478 format(QSTR, sizeof(QSTR), "{0099FF}[CLAN]:{00FF00} Withdrawn Amount: %d", damount);
479 SendClientMessage(playerid, -1, QSTR);
480
481 GivePlayerMoney(playerid, damount);
482
483 db_free_result(Result);
484 } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have the authority to use this command.");
485 return 1;
486}
487
488CMD:updateranks(playerid, params[])
489{
490 new
491 rankid, newrank[50], QSTR[128];
492 if(IsPlayerInAnyClan(playerid) && PlayerClanLevel(playerid) >= 3)
493 {
494 if(sscanf(params, "ds[50]", rankid, newrank)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /updateranks [Rank ID] [New Name].");
495 if(rankid <= 0 || rankid >= 5) return SendClientMessage(playerid, 0xFF0000FF, "Wrong rank ID, ranges between 1 - 4.");
496
497 if(rankid == 1)
498 {
499 format(QSTR, sizeof(QSTR), "UPDATE `CLAN` SET RANK1 = '%s' WHERE CNAME = '%s'", newrank, GetPlayerClan(playerid));
500 db_query(CLANDB, QSTR);
501
502 format(QSTR, sizeof(QSTR), "{0099FF}[CLAN]:{00FF00} Rank 1 Updated to: %s", newrank);
503 SendClientMessage(playerid, -1, QSTR);
504 }
505 else if(rankid == 2)
506 {
507 format(QSTR, sizeof(QSTR), "UPDATE `CLAN` SET RANK2 = '%s' WHERE CNAME = '%s'", newrank, GetPlayerClan(playerid));
508 db_query(CLANDB, QSTR);
509
510 format(QSTR, sizeof(QSTR), "{0099FF}[CLAN]:{00FF00} Rank 2 Updated to: %s", newrank);
511 SendClientMessage(playerid, -1, QSTR);
512 }
513 else if(rankid == 3)
514 {
515 format(QSTR, sizeof(QSTR), "UPDATE `CLAN` SET RANK3 = '%s' WHERE CNAME = '%s'", newrank, GetPlayerClan(playerid));
516 db_query(CLANDB, QSTR);
517
518 format(QSTR, sizeof(QSTR), "{0099FF}[CLAN]:{00FF00} Rank 3 Updated to: %s", newrank);
519 SendClientMessage(playerid, -1, QSTR);
520 }
521 else if(rankid == 4)
522 {
523 format(QSTR, sizeof(QSTR), "UPDATE `CLAN` SET RANK4 = '%s' WHERE CNAME = '%s'", newrank, GetPlayerClan(playerid));
524 db_query(CLANDB, QSTR);
525
526 format(QSTR, sizeof(QSTR), "{0099FF}[CLAN]:{00FF00} Rank 4 Updated to: %s", newrank);
527 SendClientMessage(playerid, -1, QSTR);
528 }
529
530 } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have the authority to use this command.");
531 return 1;
532}
533
534CMD:updatemotd(playerid, params[])
535{
536 new
537 motd[70], QSTR[128];
538 if(IsPlayerInAnyClan(playerid) && PlayerClanLevel(playerid) >= 3)
539 {
540 if(sscanf(params, "s[70]", motd)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /updatemotd [NEW MSG].");
541 format(QSTR, sizeof(QSTR), "UPDATE CLAN SET MOTD = '%s' WHERE CNAME = '%s'", motd, DB_Escape(GetPlayerClan(playerid)));
542 db_query(CLANDB, QSTR);
543
544 format(QSTR, sizeof(QSTR), "{0099FF}[CLAN]:{00FF00} Message OF Today: %s", motd);
545 SendClientMessage(playerid, -1, QSTR);
546 } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have the authority to use this command.");
547 return 1;
548}
549
550CMD:clankick(playerid, params[])
551{
552 new
553 id, reason[50];
554 if(IsPlayerInAnyClan(playerid) && PlayerClanLevel(playerid) >= 3)
555 {
556 if(sscanf(params, "ds[50]", id, reason)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /clankick [ID] [Reason].");
557 if(id == playerid) return SendClientMessage(playerid, 0xFF0000FF, "You cannot kick yourself.");
558 if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "Player is not connected.");
559 if(PlayerInClan(playerid, GetPlayerClan(id)) == 0) SendClientMessage(playerid, 0xFF0000FF, "Player is not in your clan.");
560
561 new
562 QSTR[128], Clan_Tax;
563
564 Clan_Tax = GetClanTax(GetPlayerClan(playerid));
565 SetClanTax(GetPlayerClan(playerid), Clan_Tax - 10000);
566
567 format(QSTR, sizeof(QSTR), "DELETE FROM MEMBERS WHERE PNAME = '%s'", DB_Escape(GetMemberName(id)));
568 db_query(CLANDB, QSTR);
569
570 format(QSTR, sizeof(QSTR), "{0099FF}[CLAN]: {FF0000}%s has been kicked by Clan Administrator %s.[Reason: %s]", GetMemberName(id), GetMemberName(playerid), reason);
571 for(new i = 0; i <= MAX_PLAYERS; i++)
572 {
573 if(PlayerInClan(playerid, GetPlayerClan(i)) == 1)
574 {
575 SendClientMessage(i, -1, QSTR);
576 }
577 }
578
579 } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have the authority to use this command.");
580 return 1;
581}
582
583//Clan Members Commands
584//--------------
585
586CMD:claninvite(playerid, params[])
587{
588 if(IsPlayerInAnyClan(playerid) && PlayerClanLevel(playerid) >= 1)
589 {
590 new
591 id, QSTR[290];
592 if(sscanf(params, "d", id)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /invite [ID].");
593 if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "Player is not connected.");
594 if(id == playerid) return SendClientMessage(playerid, 0xFF0000FF, "There is no point to invite yourself.");
595 if(Being_Invited[id] == 1) return SendClientMessage(playerid, 0xFF0000FF, "The player is being invited to a clan already.");
596 if(IsPlayerInAnyClan(id) == 1) return SendClientMessage(playerid, 0xFF0000FF, "The player is in a clan already.");
597
598 Being_Invited[id] = 1;
599 Invited_From[id] = playerid;
600
601 format(QSTR, sizeof(QSTR), "{FFFFFF}You have received a clan invite from {FF0000}%s{FFFFFF} to the clan {FF0000}%s.\n", GetMemberName(playerid), GetPlayerClan(playerid));
602 strcat(QSTR, "{FF0000}If you wish to join this clan, select 'Accept'.", sizeof(QSTR));
603 ShowPlayerDialog(id, DIALOG_INVITE, DIALOG_STYLE_MSGBOX, "{FF00FF}Clan Invite", QSTR, "Accept", "Refuse");
604
605 } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have the authority to use this command.");
606 return 1;
607}
608
609CMD:leaveclan(playerid)
610{
611 if(IsPlayerInAnyClan(playerid) && PlayerClanLevel(playerid) != 1)
612 {
613 new
614 QSTR[128], Clan_Tax;
615
616 Clan_Tax = GetClanTax(GetPlayerClan(playerid));
617 SetClanTax(GetPlayerClan(playerid), Clan_Tax - 10000);
618 format(QSTR, sizeof(QSTR), "DELETE FROM MEMBERS WHERE PNAME = '%s'", DB_Escape(GetMemberName(playerid)));
619 db_query(CLANDB, QSTR);
620
621 format(QSTR, sizeof(QSTR), "{0099FF}[CLAN]: {FF0000}%s has left the clan.", GetMemberName(playerid));
622 for(new i = 0; i <= MAX_PLAYERS; i++)
623 {
624 if(PlayerInClan(playerid, GetPlayerClan(i)) == 1)
625 {
626 SendClientMessage(i, -1, QSTR);
627 }
628 }
629 SendClientMessage(playerid, -1, "{0099FF}[CLAN]: {FF0000}You have left this clan!");
630 } else return SendClientMessage(playerid, 0xFF0000FF, "You're not in a clan, or your rank is higher than level 1.");
631 return 1;
632}
633
634CMD:memberlist(playerid)
635{
636 new
637 QSTR[128], DBResult: Result, PNAME[MAX_PLAYER_NAME], PRANK[5];
638 if(IsPlayerInAnyClan(playerid) && PlayerClanLevel(playerid) >= 1)
639 {
640 format(QSTR, sizeof(QSTR), "SELECT * FROM `MEMBERS` WHERE CNAME = '%s'", DB_Escape(GetPlayerClan(playerid)));
641 Result = db_query(CLANDB, QSTR);
642
643 db_get_field_assoc(Result, "PNAME", PNAME, MAX_PLAYER_NAME);
644 db_get_field_assoc(Result, "PRANK", PRANK, 5);
645 SendClientMessage(playerid, -1, "{0099FF}[CLAN]: {FF0000}Clan Members list:");
646 for(new i = 0; i <= db_num_rows(Result); i++)
647 {
648 format(QSTR, sizeof(QSTR), "%s (Level: %d)", PNAME, strval(PRANK));
649 }
650 SendClientMessage(playerid, -1, QSTR);
651 db_free_result(Result);
652 } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have the authority to use this command.");
653 return 1;
654}
655
656CMD:clanmotd(playerid)
657{
658 new
659 motd[70], QSTR[128], DBResult: Result;
660 if(IsPlayerInAnyClan(playerid) && PlayerClanLevel(playerid) >= 1)
661 {
662 format(QSTR, sizeof(QSTR), "SELECT `MOTD` FROM CLAN WHERE CNAME = '%s'", DB_Escape(GetPlayerClan(playerid)));
663 Result = db_query(CLANDB, QSTR);
664
665 db_get_field_assoc(Result, "MOTD", motd, 50);
666 format(QSTR, sizeof(QSTR), "{0099FF}[CLAN]:{00FF00} Message OF Today: %s", motd);
667 SendClientMessage(playerid, -1, QSTR);
668 db_free_result(Result);
669 } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have the authority to use this command.");
670 return 1;
671}
672
673CMD:clanwallet(playerid)
674{
675 new
676 wallet[50], QSTR[128], DBResult: Result;
677 if(IsPlayerInAnyClan(playerid) && PlayerClanLevel(playerid) >= 1)
678 {
679 format(QSTR, sizeof(QSTR), "SELECT * FROM CLAN WHERE CNAME = '%s'", DB_Escape(GetPlayerClan(playerid)));
680 Result = db_query(CLANDB, QSTR);
681
682 db_get_field_assoc(Result, "WALLET", wallet, 50);
683 format(QSTR, sizeof(QSTR), "{0099FF}[CLAN]:{00FF00} Clan Currency: %d", strval(wallet));
684 SendClientMessage(playerid, -1, QSTR);
685 db_free_result(Result);
686 } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have the authority to use this command.");
687 return 1;
688}
689
690CMD:clandonate(playerid, params[])
691{
692 new
693 damount, wamount[50], QSTR[128], DBResult: Result;
694 if(IsPlayerInAnyClan(playerid) && PlayerClanLevel(playerid) >= 1)
695 {
696 if(sscanf(params, "d", damount)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /clandonate [Amount].");
697 if(GetPlayerMoney(playerid) < damount) return SendClientMessage(playerid, 0xFF0000FF, "You don't have this amount.");
698
699 format(QSTR, sizeof(QSTR), "SELECT * FROM `CLAN` WHERE CNAME = '%s'", DB_Escape(GetPlayerClan(playerid)));
700 Result = db_query(CLANDB, QSTR);
701
702 db_get_field_assoc(Result, "WALLET", wamount, 50);
703
704 format(QSTR, sizeof(QSTR), "UPDATE `CLAN` SET WALLET = '%d' WHERE CNAME = '%s'", strval(wamount) + damount, GetPlayerClan(playerid));
705 db_query(CLANDB, QSTR);
706
707 format(QSTR, sizeof(QSTR), "{0099FF}[CLAN]:{00FF00} Donation Amount: %d", damount);
708 SendClientMessage(playerid, -1, QSTR);
709
710 GivePlayerMoney(playerid, -damount);
711 db_free_result(Result);
712 } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have the authority to use this command.");
713 return 1;
714}
715
716CMD:clanstats(playerid)
717{
718 if(IsPlayerInAnyClan(playerid) && PlayerClanLevel(playerid) >= 1)
719 {
720 new
721 QSTR[128], STR[400], DBResult: Result, wallet[50], owner_name[MAX_PLAYER_NAME], player_rank[5];
722 strcat(STR, "You are now viewing your clan's stats.\n\n", sizeof(STR));
723
724 format(QSTR, sizeof(QSTR), "{FFFFFF}Clan Name:{FF0000} %s\n", GetPlayerClan(playerid));
725 strcat(STR, QSTR, sizeof(STR));
726
727 format(QSTR, sizeof(QSTR), "{FFFFFF}Clan Message:{FF0000} %s\n", GetClanMOTD(GetPlayerClan(playerid)));
728 strcat(STR, QSTR, sizeof(STR));
729
730 format(QSTR, sizeof(QSTR), "{FFFFFF}Clan Special Weapon:{FF0000} %d\n", GetClanWeapon(GetPlayerClan(playerid)));
731 strcat(STR, QSTR, sizeof(STR));
732
733 format(QSTR, sizeof(QSTR), "SELECT * FROM `MEMBERS` WHERE CNAME = '%s'", DB_Escape(GetPlayerClan(playerid)));
734 Result = db_query(CLANDB, QSTR);
735
736 format(QSTR, sizeof(QSTR), "{FFFFFF}Clan Total Members:{FF0000} %d\n", db_num_rows(Result));
737 strcat(STR, QSTR, sizeof(STR));
738
739 format(QSTR, sizeof(QSTR), "SELECT * FROM CLAN WHERE CNAME = '%s'", DB_Escape(GetPlayerClan(playerid)));
740 Result = db_query(CLANDB, QSTR);
741
742 db_get_field_assoc(Result, "WALLET", wallet, 50);
743
744 format(QSTR, sizeof(QSTR), "{FFFFFF}Clan Wallet (Cash):{FF0000} %d\n", strval(wallet));
745 strcat(STR, QSTR, sizeof(STR));
746
747 format(QSTR, sizeof(QSTR), "{FFFFFF}Clan Tax:{FF0000} %d\n", GetClanTax(GetPlayerClan(playerid)));
748 strcat(STR, QSTR, sizeof(STR));
749
750 format(QSTR, sizeof(QSTR), "SELECT * FROM MEMBERS WHERE CNAME = '%s'", DB_Escape(GetPlayerClan(playerid)));
751 Result = db_query(CLANDB, QSTR);
752
753 db_get_field_assoc(Result, "PRANK", player_rank, 5);
754
755 if(strval(player_rank) == 4)
756 {
757 db_get_field_assoc(Result, "PNAME", owner_name, MAX_PLAYER_NAME);
758 }
759
760 format(QSTR, sizeof(QSTR), "{FFFFFF}Leader:{FF0000} %s\n", owner_name);
761 strcat(STR, QSTR, sizeof(STR));
762
763 ShowPlayerDialog(playerid, DIALOG_STATS, DIALOG_STYLE_MSGBOX, "{FF0000}Clan Stats", STR, "Close", "");
764
765 db_free_result(Result);
766 } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have the authority to use this command.");
767 return 1;
768}
769
770CMD:chelp(playerid)
771{
772 new QSTR[400];
773 strcat(QSTR, "{FFFFFF}Clan Leader(4): {FF0000}/paytax, /taxtime, /setrank.\n", sizeof(QSTR));
774 strcat(QSTR, "{FFFFFF}Clan Co-Leader(3): {FF0000}/clantax, /clanwithdraw, /updateranks, /updatemotd, /clankick. '!' for clan announcement.\n", sizeof(QSTR));
775 strcat(QSTR, "{FFFFFF}Clan Members (1-2): {FF0000}/claninvite, /leaveclan, /clandonate, /memberlist, /clanstats, /clanmotd, /clanwallet. '+' for clan chat.\n\n", sizeof(QSTR));
776 ShowPlayerDialog(playerid, DIALOG_CMDLIST, DIALOG_STYLE_MSGBOX, "Clan Commands", QSTR, "Close", "");
777 return 1;
778}
779
780//Stored Functions, Timers.
781//--------------
782
783public GiveClanWeapon(playerid)
784{
785 new
786 QSTR[128], WeaponID[7], WeaponName[50], DBResult: Result;
787 format(QSTR, sizeof(QSTR), "SELECT `WEAPON` FROM CLAN WHERE CNAME = '%s'", DB_Escape(GetPlayerClan(playerid)));
788 Result = db_query(CLANDB, QSTR);
789
790 db_get_field_assoc(Result, "WEAPON", WeaponID, 50);
791 if(strval(WeaponID) != 0)
792 {
793 GivePlayerWeapon(playerid, strval(WeaponID), 100);
794 GetWeaponName(strval(WeaponID), WeaponName, sizeof(WeaponName));
795
796 format(QSTR, sizeof(QSTR), "{0099FF}[CLAN]: {00FF00}You've been given an {FF0000}'%s' - 100 Ammo.", WeaponName);
797 SendClientMessage(playerid, -1, QSTR);
798 }
799 SendClientMessage(playerid, -1, "{0099FF}[CLAN]: {00FF00}To know the clan's Message OF Today use /clanmotd.");
800 db_free_result(Result);
801 return 1;
802}
803
804public PAY_TIME()
805{
806 new Y, M, D, CURDATE, QSTR[128], DBResult: Result, clan_name[50], Should_Pay[5], Level[5], owner_name[MAX_PLAYER_NAME];
807 CURDATE = getdate(Y, M, D);
808
809 format(QSTR, sizeof(QSTR), "SELECT * FROM `CLAN` WHERE PAYDATE = '%d'", CURDATE);
810 Result = db_query(CLANDB, QSTR);
811
812 db_get_field_assoc(Result, "CNAME", clan_name, 50);
813
814 format(QSTR, sizeof(QSTR), "SELECT * FROM `MEMBERS` WHERE CNAME = '%s'", DB_Escape(clan_name));
815 Result = db_query(CLANDB, QSTR);
816
817 db_get_field_assoc(Result, "PNAME", owner_name, MAX_PLAYER_NAME);
818 db_get_field_assoc(Result, "SHOULDPAY", Should_Pay, 5);
819 db_get_field_assoc(Result, "PRANK", Level, 5);
820
821 if(strval(Should_Pay) == 0 && strval(Level) == 4)
822 {
823 format(QSTR, sizeof(QSTR), "UPDATE `MEMBERS` SET SHOULDPAY = '1' WHERE PNAME = '%s'", DB_Escape(owner_name));
824 db_query(CLANDB, QSTR);
825 }
826 db_free_result(Result);
827 return 1;
828}
829
830public EXPIRE_TIME()
831{
832 new Y, M, D, CURDATE, QSTR[128], DBResult: Result, clan_name[50], Expire_Time[5];
833 CURDATE = getdate(Y, M, D);
834
835 format(QSTR, sizeof(QSTR), "SELECT * FROM `CLAN` WHERE EXPIREDATE = '%d'", CURDATE);
836 Result = db_query(CLANDB, QSTR);
837
838 db_get_field_assoc(Result, "EXPIREDATE", Expire_Time, 5);
839
840 if(strval(Expire_Time) == CURDATE)
841 {
842 db_get_field_assoc(Result, "CNAME", clan_name, 50);
843 format(QSTR, sizeof(QSTR), "DELETE FROM CLAN WHERE CNAME = '%s'", DB_Escape(clan_name));
844 db_query(CLANDB, QSTR);
845
846 format(QSTR, sizeof(QSTR), "DELETE FROM MEMBERS WHERE CNAME = '%s'", DB_Escape(clan_name));
847 db_query(CLANDB, QSTR);
848 }
849 db_free_result(Result);
850 return 1;
851}
852
853stock AddOfficialClan(playerid, id, CLAN_NAME[], CLAN_MOTD[], CLAN_TAG[], RANK1[], RANK2[], RANK3[], RANK4[], WEAPON)
854{
855 new
856 QSTR[500], DBResult: Result, Y, M, D, CURDATE, OVRDUEDATE, EXPIREDATE;
857
858 CURDATE = getdate(Y, M, D);
859
860 if(CURDATE > 300)
861 {
862 OVRDUEDATE = CURDATE + 28;
863 EXPIREDATE = CURDATE + 35;
864 }
865 else if(CURDATE < 300)
866 {
867 OVRDUEDATE = 1;
868 EXPIREDATE = 7;
869 }
870
871 format(QSTR, sizeof(QSTR), "SELECT `CNAME` FROM `CLAN` WHERE CNAME = '%s'", DB_Escape(CLAN_NAME));
872 Result = db_query(CLANDB, QSTR);
873
874 if(db_num_rows(Result)) return SendClientMessage(playerid, 0xFF0000FF, "ERROR: Clan name is taken already.");
875 db_free_result(Result);
876
877 format(QSTR, sizeof(QSTR), "SELECT `TAG` FROM `CLAN` WHERE TAG = '%s'", DB_Escape(CLAN_TAG));
878 Result = db_query(CLANDB, QSTR);
879
880 if(db_num_rows(Result)) return SendClientMessage(playerid, 0xFF0000FF, "ERROR: Clan tag is taken already.");
881 db_free_result(Result);
882
883 format(QSTR, sizeof(QSTR), "INSERT INTO CLAN(CNAME, MOTD, WEAPON, TAG, RANK1, RANK2, RANK3, RANK4, WALLET, PAYDATE, EXPIREDATE, TOTALTAX) \
884 VALUES('%s', '%s', '%d', '%s', '%s', '%s', '%s', '%s', '50000', '%d', '%d', '10000')",
885 DB_Escape(CLAN_NAME), CLAN_MOTD, WEAPON, CLAN_TAG, RANK1, RANK2, RANK3, RANK4, OVRDUEDATE, EXPIREDATE);
886 db_query(CLANDB, QSTR);
887
888 format(QSTR, sizeof(QSTR), "INSERT INTO MEMBERS(CNAME, PNAME, PRANK, INCLAN, SHOULDPAY) VALUES('%s', '%s', 4, 1, 0)",
889 DB_Escape(CLAN_NAME), DB_Escape(GetMemberName(id)));
890 db_query(CLANDB, QSTR);
891
892 format(QSTR, sizeof(QSTR), "Administrator %s has created a new clan.", GetMemberName(playerid));
893 SendClientMessageToAll(0x0099FFFF, QSTR);
894
895 new W_NAME[30];
896 GetWeaponName(WEAPON, W_NAME, sizeof(W_NAME));
897 if(WEAPON == 0) W_NAME = "None";
898 format(QSTR, sizeof(QSTR), "Clan Name: %s, Clan Tag: %s, Special Weapon: %s. ", CLAN_NAME, CLAN_TAG, W_NAME);
899 SendClientMessageToAll(0x0099FFFF, QSTR);
900
901 format(QSTR, sizeof(QSTR), "This Clan is official and its owner is %s.", GetMemberName(id));
902 SendClientMessageToAll(0x0099FFFF, QSTR);
903
904 SendClientMessage(id, -1, "{0099FF}Welcome to your own new clan which was assigned by administrator.");
905 SendClientMessage(id, -1, "{0099FF}Begin with building up your clan by updating the clan motd, /updatemotd.");
906 SendClientMessage(id, -1, "{0099FF}Invite players. Always remember you need to pay ever 28 days for the clan.");
907 SendClientMessage(id, -1, "{0099FF}If you exceed 5 days from the clan pay time your clan will be suspended.");
908 SendClientMessage(id, -1, "{0099FF}Clan tax is depending on the total amount of player, each player equals $10,000.");
909 SendClientMessage(id, -1, "{0099FF}Good luck managing your clan,");
910 SendClientMessage(id, -1, "{0099FF}-Lords OF War.");
911
912 SetClanTax(CLAN_NAME, 10000);
913 return 1;
914}
915
916stock RemoveOfficialClan(playerid, CLAN_NAME[])
917{
918 new
919 QSTR[500], DBResult: Result;
920
921 format(QSTR, sizeof(QSTR), "SELECT `CNAME` FROM CLAN WHERE CNAME = '%s'", DB_Escape(CLAN_NAME));
922 Result = db_query(CLANDB, QSTR);
923
924 if(!db_num_rows(Result)) return SendClientMessage(playerid, 0xFF0000FF, "ERROR: Clan does not exist.");
925 db_free_result(Result);
926
927 format(QSTR, sizeof(QSTR), "DELETE FROM CLAN WHERE CNAME = '%s'", DB_Escape(CLAN_NAME));
928 db_query(CLANDB, QSTR);
929
930 format(QSTR, sizeof(QSTR), "DELETE FROM MEMBERS WHERE CNAME = '%s'", DB_Escape(CLAN_NAME));
931 db_query(CLANDB, QSTR);
932
933 SendClientMessage(playerid, 0xFF0000FF, "{FF0000}[Clan-Admin]:{00FF00} You've successfully deleted this clan.");
934 return 1;
935}
936
937stock PlayerClanLevel(playerid)
938{
939 new
940 QSTR[128], DBResult:Result, Level[6];
941 format(QSTR, sizeof(QSTR), "SELECT `PRANK` FROM MEMBERS WHERE PNAME = '%s'", DB_Escape(GetMemberName(playerid)));
942 Result = db_query(CLANDB, QSTR);
943
944 db_get_field_assoc(Result, "PRANK", Level, 6);
945 db_free_result(Result);
946
947 return strval(Level);
948}
949
950stock GetPlayerClanRank(playerid)
951{
952 new
953 QSTR[128], DBResult:Result, Level[6], Rank[20];
954 format(QSTR, sizeof(QSTR), "SELECT `PRANK` FROM MEMBERS WHERE PNAME = '%s'", DB_Escape(GetMemberName(playerid)));
955 Result = db_query(CLANDB, QSTR);
956
957 db_get_field_assoc(Result, "PRANK", Level, 6);
958
959 if(strval(Level) == 1)
960 {
961 format(QSTR, sizeof(QSTR), "SELECT `RANK1` FROM CLAN WHERE CNAME = '%s'", DB_Escape(GetPlayerClan(playerid)));
962 Result = db_query(CLANDB, QSTR);
963
964 db_get_field_assoc(Result, "RANK1", Rank, 20);
965 }
966 else if(strval(Level) == 2)
967 {
968 format(QSTR, sizeof(QSTR), "SELECT `RANK2` FROM CLAN WHERE CNAME = '%s'", DB_Escape(GetPlayerClan(playerid)));
969 Result = db_query(CLANDB, QSTR);
970
971 db_get_field_assoc(Result, "RANK2", Rank, 20);
972 }
973 else if(strval(Level) == 3)
974 {
975 format(QSTR, sizeof(QSTR), "SELECT `RANK3` FROM CLAN WHERE CNAME = '%s'", DB_Escape(GetPlayerClan(playerid)));
976 Result = db_query(CLANDB, QSTR);
977
978 db_get_field_assoc(Result, "RANK3", Rank, 20);
979 }
980 else if(strval(Level) == 4)
981 {
982 format(QSTR, sizeof(QSTR), "SELECT `RANK4` FROM CLAN WHERE CNAME = '%s'", DB_Escape(GetPlayerClan(playerid)));
983 Result = db_query(CLANDB, QSTR);
984
985 db_get_field_assoc(Result, "RANK4", Rank, 20);
986 }
987 db_free_result(Result);
988 return Rank;
989}
990
991stock IsPlayerInAnyClan(playerid)
992{
993 new
994 QSTR[128], DBResult: Result;
995 format(QSTR, sizeof(QSTR), "SELECT `PNAME` FROM MEMBERS WHERE PNAME = '%s'", DB_Escape(GetMemberName(playerid)));
996 Result = db_query(CLANDB, QSTR);
997 if(db_num_rows(Result)) return true;
998 else return false;
999}
1000
1001stock GetPlayerClan(playerid)
1002{
1003 new
1004 QSTR[128], CLAN_NAME[50], DBResult: Result;
1005 format(QSTR, sizeof(QSTR), "SELECT `CNAME` FROM MEMBERS WHERE PNAME = '%s'", DB_Escape(GetMemberName(playerid)));
1006 Result = db_query(CLANDB, QSTR);
1007 db_get_field_assoc(Result, "CNAME", CLAN_NAME, 50);
1008 db_free_result(Result);
1009 return CLAN_NAME;
1010}
1011
1012stock PlayerInClan(playerid, CLAN_NAME[])
1013{
1014 new
1015 QSTR[128], DBResult: Result;
1016 format(QSTR, sizeof(QSTR), "SELECT `CNAME` FROM MEMBERS WHERE PNAME = '%s' AND CNAME= '%s'", DB_Escape(GetMemberName(playerid)), DB_Escape(CLAN_NAME));
1017 Result = db_query(CLANDB, QSTR);
1018 if(db_num_rows(Result)) return true;
1019 else return false;
1020}
1021
1022stock GetMemberName(playerid)
1023{
1024 new
1025 PNSTR[MAX_PLAYER_NAME];
1026 GetPlayerName(playerid, PNSTR, sizeof(PNSTR));
1027 return PNSTR;
1028}
1029
1030stock GetClanMOTD(CLAN_NAME[])
1031{
1032 new
1033 QSTR[128], CMOTD[50], DBResult: Result;
1034 format(QSTR, sizeof(QSTR), "SELECT * FROM CLAN WHERE CNAME = '%s'", DB_Escape(CLAN_NAME));
1035 Result = db_query(CLANDB, QSTR);
1036 db_get_field_assoc(Result, "MOTD", CMOTD, 50);
1037 db_free_result(Result);
1038 return CMOTD;
1039}
1040
1041stock GetClanTax(CLAN_NAME[])
1042{
1043 new
1044 QSTR[128], T_Tax[50], DBResult: Result;
1045 format(QSTR, sizeof(QSTR), "SELECT * FROM CLAN WHERE CNAME = '%s'", DB_Escape(CLAN_NAME));
1046 Result = db_query(CLANDB, QSTR);
1047 db_get_field_assoc(Result, "TOTALTAX", T_Tax, 50);
1048 db_free_result(Result);
1049 return strval(T_Tax);
1050}
1051
1052stock GetClanWeapon(CLAN_NAME[])
1053{
1054 new
1055 QSTR[128], Weapon[50], DBResult: Result;
1056 format(QSTR, sizeof(QSTR), "SELECT * FROM CLAN WHERE CNAME = '%s'", DB_Escape(CLAN_NAME));
1057 Result = db_query(CLANDB, QSTR);
1058 db_get_field_assoc(Result, "WEAPON", Weapon, 50);
1059 db_free_result(Result);
1060 return strval(Weapon);
1061}
1062
1063stock SetClanTax(CLAN_NAME[], T_Tax)
1064{
1065 new
1066 QSTR[128];
1067 format(QSTR, sizeof(QSTR), "UPDATE `CLAN` SET TOTALTAX = '%d' WHERE CNAME = '%s'", T_Tax, DB_Escape(CLAN_NAME));
1068 db_query(CLANDB, QSTR);
1069 return 1;
1070}
1071
1072stock SetClanWeapon(CLAN_NAME[], WEAPON)
1073{
1074 new
1075 QSTR[128];
1076 format(QSTR, sizeof(QSTR), "UPDATE `CLAN` SET WEAPON = '%d' WHERE CNAME = '%s'", WEAPON, DB_Escape(CLAN_NAME));
1077 db_query(CLANDB, QSTR);
1078 return 1;
1079}
1080
1081stock AddTagToName(playerid, CLAN_NAME[])
1082{
1083 new
1084 QSTR[128], New_Name[MAX_PLAYER_NAME], Tag[5], DBResult: Result;
1085 format(QSTR, sizeof(QSTR), "SELECT `TAG` FROM CLAN WHERE CNAME = '%s'", DB_Escape(CLAN_NAME));
1086 Result = db_query(CLANDB, QSTR);
1087
1088 db_get_field_assoc(Result, "TAG", Tag, 5);
1089
1090 format(New_Name, sizeof(New_Name), "%s[%s]", GetMemberName(playerid), Tag);
1091 format(QSTR, sizeof(QSTR), "UPDATE `MEMBERS` SET PNAME = '%s' WHERE PNAME = '%s'", New_Name, GetMemberName(playerid));
1092 SetPlayerName(playerid, New_Name);
1093 db_query(CLANDB, QSTR);
1094
1095
1096 db_free_result(Result);
1097 return 1;
1098}
1099
1100stock SetPlayerClanName(playerid, NEW_NAME[])
1101{
1102 if(IsPlayerInAnyClan(playerid))
1103 {
1104 new
1105 QSTR[128];
1106 format(QSTR, sizeof(QSTR), "UPDATE `MEMBERS` SET PNAME = '%s' WHERE PNAME = '%s'", NEW_NAME, GetMemberName(playerid));
1107 db_query(CLANDB, QSTR);
1108 }
1109 return 1;
1110}
1111
1112stock SetPlayerOfflineClanName(playerid, NAME[], NEW_NAME[])
1113{
1114 new QSTR[128], DBResult: Result;
1115 format(QSTR, sizeof(QSTR), "SELECT `PNAME` FROM `MEMBERS` WHERE PNAME = '%s'", DB_Escape(NAME));
1116 Result = db_query(CLANDB, QSTR);
1117 if(db_num_rows(Result))
1118 {
1119 format(QSTR, sizeof(QSTR), "UPDATE `MEMBERS` SET PNAME = '%s' WHERE PNAME = '%s'", NEW_NAME, NAME);
1120 db_query(CLANDB, QSTR);
1121 }
1122 else return SendClientMessage(playerid, -1, "{FF0000}Name doesn't exist.");
1123 return 1;
1124}
1125
1126stock DB_Escape(text[])
1127{
1128 new
1129 ret[80 * 2],
1130 ch,
1131 i,
1132 j;
1133 while ((ch = text[i++]) && j < sizeof (ret))
1134 {
1135 if (ch == '\'')
1136 {
1137 if (j < sizeof (ret) - 2)
1138 {
1139 ret[j++] = '\'';
1140 ret[j++] = '\'';
1141 }
1142 }
1143 else if (j < sizeof (ret))
1144 {
1145 ret[j++] = ch;
1146 }
1147 else
1148 {
1149 j++;
1150 }
1151 }
1152 ret[sizeof (ret) - 1] = '\0';
1153 return ret;
1154}