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