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