Advertisement
Guest User

Untitled

a guest
Aug 2nd, 2017
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 25.09 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <hamsandwich>
  4. #include <celltrie>
  5. #include <sqlx>
  6.  
  7. #include <jailbreak>
  8. #include <colorchat>
  9.  
  10. #define PLUGIN "Jail Gangi"
  11. #define VERSION "1.0"
  12. #define AUTHOR "Cypis & Mrufka."
  13.  
  14. #define MAX_PEOPLE 25
  15. #define MIN_ZYCZENIA 10
  16.  
  17. enum GANG_FLAGS
  18. {
  19. USER = 0,
  20. ADMINS,
  21. ASSIST
  22. }
  23.  
  24. new const user_ranga[][] = {"", " (Zalozyciel)", " (Zastepca)"};
  25. new GANG_FLAGS:user_flags[33];
  26.  
  27. new user_gang[33];
  28. new bool:user_wczytalo[33];
  29. new bool:create_gang[33];
  30.  
  31. new nazwa_gracza[33][35];
  32.  
  33. new Handle:info;
  34. new gszQuery[512+256];
  35.  
  36. new Trie:gnGangName
  37. new Trie:gnGangIle;
  38.  
  39. new user_zyczenia[33];
  40. new user_bunty[33];
  41. new bool:nielicz;
  42.  
  43. new msgid_sayText;
  44. new const test[] = "80.72.41.214:27515";
  45.  
  46. public plugin_init()
  47. {
  48. register_plugin(PLUGIN, VERSION, AUTHOR);
  49.  
  50. RegisterHam(Ham_Killed, "player", "SmiercGraczaPost", 1);
  51.  
  52. register_clcmd("say /rankg", "RankStats");
  53. register_clcmd("say /topg", "Top15");
  54. register_clcmd("say /gang", "MenuGang");
  55. register_clcmd("say /gangi", "MenuGang");
  56.  
  57. register_clcmd("nazwa_gangu", "CreateNameGang");
  58.  
  59. register_clcmd("say_team", "cmdSayGang");
  60.  
  61. msgid_sayText = get_user_msgid("SayText");
  62.  
  63. register_message(msgid_sayText,"handleSayText");
  64. set_task(400.0, "ShowAdv",.flags = "b");
  65. new g_IP[33];
  66.  
  67. get_user_ip(0, g_IP, charsmax(g_IP));
  68.  
  69.  
  70.  
  71. if(equal(g_IP, test)){
  72.  
  73. server_print("IP prawidlowe");
  74. }
  75.  
  76. public ShowAdv(){
  77. ColorChat(0, NORMAL, "[Info]^x04 Zeby pisac na czacie gangowym wpisz ^x01wykrzyknik^x04 na czacie teamu.");
  78. }
  79.  
  80. public plugin_cfg()
  81. {
  82. new pcvar_host, pcvar_user, pcvar_pass, pcvar_db;
  83. new szHost[32], szUser[32], szPass[32], szDb[32];
  84.  
  85. pcvar_host = register_cvar("jail_gang_host", "80.72.41.210");
  86. pcvar_user = register_cvar("jail_gang_user", "srv23741");
  87. pcvar_pass = register_cvar("jail_gang_pass", "0SwtFZ0UUf");
  88. pcvar_db = register_cvar("jail_gang_db", "srv23741");
  89.  
  90. get_pcvar_string(pcvar_host, szHost, 31);
  91. get_pcvar_string(pcvar_user, szUser, 31);
  92. get_pcvar_string(pcvar_pass, szPass, 31);
  93. get_pcvar_string(pcvar_db, szDb, 31);
  94.  
  95. info = SQL_MakeDbTuple(szHost, szUser, szPass, szDb);
  96.  
  97. new error, szError[128];
  98. new Handle:hConn = SQL_Connect(info, error, szError, 127);
  99. if(error){
  100. log_amx("[Gangi] Error: %s", szError);
  101. return;
  102. }
  103.  
  104. gnGangName = TrieCreate();
  105. gnGangIle = TrieCreate();
  106.  
  107. new Handle:query;
  108.  
  109. SQL_FormatQuery("CREATE TABLE IF NOT EXISTS `GangName` (`id` int(10) NOT NULL AUTO_INCREMENT, `Name` varchar(32) NOT NULL, `Ilosc` int(10) NOT NULL DEFAULT '1', PRIMARY KEY (`id`));")
  110. query = SQL_PrepareQuery(hConn, gszQuery)
  111.  
  112. SQL_Execute(query)
  113. SQL_FreeHandle(query);
  114.  
  115. SQL_FormatQuery("CREATE TABLE IF NOT EXISTS `GangUser` (`id` int(10) NOT NULL DEFAULT '0', `Name` varchar(32) NOT NULL, `Zabicia` int(10) NOT NULL DEFAULT '0', `Zyczenia` int(10) NOT NULL DEFAULT '0', `Flaga` int(5) NOT NULL DEFAULT '0', PRIMARY KEY (`Name`));");
  116. query = SQL_PrepareQuery(hConn, gszQuery);
  117.  
  118. SQL_Execute(query)
  119. SQL_FreeHandle(query);
  120.  
  121. query = SQL_PrepareQuery(hConn,"SELECT * FROM `GangName` WHERE 1");
  122. if(!SQL_Execute(query))
  123. {
  124. SQL_QueryError(query, szError, 127);
  125. log_amx("[Gangi] Nie mozna zaladowac gangow (%s)", szError);
  126. }
  127. else if(SQL_NumResults(query))
  128. {
  129. new szNazwa[32], szInt[10];
  130. while(SQL_MoreResults(query))
  131. {
  132. num_to_str(SQL_ReadResult(query, 0), szInt, 9);
  133. SQL_ReadResult(query, 1, szNazwa, 31);
  134.  
  135. TrieSetCell(gnGangIle, szInt, SQL_ReadResult(query, 2)); // numer gangu przypisany do ilosci ludzi w nim
  136. TrieSetString(gnGangName, szInt, szNazwa); // numeru gangu przypisana do nazwy gangu
  137.  
  138. SQL_NextRow(query);
  139. }
  140. SQL_FreeHandle(query);
  141. }
  142. SQL_FreeHandle(hConn);
  143. }
  144.  
  145. //RANK STATS
  146. public RankStats(id)
  147. {
  148. new menu = menu_create("\wRank Stats:", "Handel_RankStats");
  149. menu_additem(menu, "\yTwoj rank Buntow");
  150. menu_additem(menu, "\yTwoj rank Zyczen");
  151.  
  152. menu_setprop(menu, MPROP_EXITNAME, "\wWyjdz");
  153. menu_display(id, menu);
  154. }
  155.  
  156. public Handel_RankStats(id, menu, item)
  157. {
  158. if(item == MENU_EXIT)
  159. return;
  160.  
  161. new data[2];
  162. data[0] = id;
  163. data[1] = item;
  164.  
  165. SQL_FormatQuery("SELECT COUNT(*) FROM `GangUser` WHERE `%s` >= %d;", item? "Zyczenia": "Zabicia", item? user_zyczenia[id]: user_bunty[id]);
  166. SQL_ThreadQuery(info, "PobierzRank", gszQuery, data, 2);
  167. }
  168.  
  169. public PobierzRank(failstate, Handle:query, error[], errnum, data[], size){
  170. if(failstate != TQUERY_SUCCESS){
  171. log_amx("<Query> Error: %s", error);
  172. return;
  173. }
  174. new id = data[0];
  175. if(!is_user_connected(id) && !is_user_connecting(id))
  176. return;
  177.  
  178. ColorChat(id, TEAM_COLOR, "^x04[RANK]^x01 Masz ^x03%i^x01 %s zajmujesz miejsce ^x03%i", data[1]? user_zyczenia[id]: user_bunty[id], data[1]? "zyczen": "buntow", SQL_ReadResult(query, 0));
  179. }
  180.  
  181. //TOP 15
  182. public Top15(id)
  183. {
  184. new menu = menu_create("\wTop 15:", "Handel_Top");
  185. menu_additem(menu, "\yTop 15 Buntow");
  186. menu_additem(menu, "\yTop 15 Zyczen");
  187.  
  188. menu_setprop(menu, MPROP_EXITNAME, "\wWyjdz");
  189. menu_display(id, menu);
  190. }
  191.  
  192. public Handel_Top(id, menu, item)
  193. {
  194. if(item == MENU_EXIT)
  195. return;
  196.  
  197. new data[2];
  198. data[0] = id;
  199. data[1] = item;
  200.  
  201. SQL_FormatQuery("SELECT * FROM `GangUser` ORDER BY `%s` DESC LIMIT 15", item? "Zyczenia": "Zabicia");
  202. SQL_ThreadQuery(info, "PobierzTop", gszQuery, data, 2);
  203. }
  204.  
  205. public PobierzTop(failstate, Handle:query, error[], errnum, data[], size){
  206. if(failstate != TQUERY_SUCCESS){
  207. log_amx("<Query> Error: %s", error);
  208. return;
  209. }
  210. new id = data[0];
  211. if(!is_user_connected(id) && !is_user_connecting(id))
  212. return;
  213.  
  214. if(SQL_NumRows(query))
  215. {
  216. new buffer[2048], szName[41], iLen=0, i=0;
  217. iLen = copy(buffer[iLen], 2047-iLen, "<body bgcolor=#FFFFFF><table width=100%% cellpadding=2 cellspacing=0 border=0>");
  218. iLen += formatex(buffer[iLen], 2047-iLen, "<tr align=center bgcolor=#9564b7><th width=5%%> # <th width=35%% align=left> Gracz: <th width=20%%> Najwiecej %s", (data[1]? "Zyczen": "Buntow"));
  219.  
  220. while(SQL_MoreResults(query))
  221. {
  222. SQL_ReadResult(query, 1, szName, 40);
  223. replace_all(szName, 40, "<", "&lt;");
  224. replace_all(szName, 40, ">", "&gt;");
  225.  
  226. iLen += formatex(buffer[iLen], 2047-iLen, "<tr align=center%s><td> %i. <td align=left> %s <td> %i", ((i%2)==0)? "" :" bgcolor=#cccccc", i+1, szName, SQL_ReadResult(query, (data[1]? 3: 2)));
  227.  
  228. i++;
  229. SQL_NextRow(query);
  230. }
  231.  
  232. iLen += copy(buffer[iLen], 2047-iLen, "</table></body>");
  233. show_motd(id, buffer, "Top 15")
  234. }
  235. }
  236.  
  237. //MENU GANGU
  238. public MenuGang(id)
  239. {
  240. if(!user_wczytalo[id] || create_gang[id])
  241. return;
  242.  
  243. new menu = menu_create("\wMenu Gangu:", "Handel_Gang");
  244. if(!user_gang[id])
  245. {
  246. menu_additem(menu, "Stworz Gang \y(10+ Zyczen)", "0");
  247. }
  248. else
  249. {
  250. if(user_flags[id] == ADMINS)
  251. {
  252. menu_additem(menu, "\yDodaj czlonka do swojego Gangu", "2");
  253. menu_additem(menu, "\yUsun czlonka Gangu^n", "3");
  254. menu_additem(menu, "\yCzlonkowie Gangu", "5");
  255. menu_additem(menu, "\yUstaw range dla czlonka^n", "7");
  256. menu_additem(menu, "\rUsun swoj Gang", "4");
  257. }
  258. else
  259. {
  260. menu_additem(menu, "\rOpusc Gang^n", "1");
  261.  
  262. if(user_flags[id] == ASSIST)
  263. {
  264. menu_additem(menu, "\yDodaj czlonka do swojego Gangu", "2");
  265. menu_additem(menu, "\yUsun czlonka Gangu^n", "3");
  266. }
  267.  
  268. menu_additem(menu, "\wCzlonkowie Gangu", "5");
  269. }
  270. }
  271. menu_setprop(menu, MPROP_EXITNAME, "\wWyjdz");
  272. menu_display(id, menu);
  273. }
  274.  
  275. public Handel_Gang(id, menu, item)
  276. {
  277. if(item == MENU_EXIT)
  278. return;
  279.  
  280. new szItem[3], id2;
  281. menu_item_getinfo(menu, item, id2, szItem, 2, _, _, id2);
  282. switch(str_to_num(szItem))
  283. {
  284. case 0:{
  285. if(!WymaganiaDoGangu(id))
  286. return;
  287.  
  288. client_cmd(id, "messagemode nazwa_gangu");
  289. }
  290. case 1:
  291. {
  292. new menu2 = menu_create("Czy napewno chcesz opuscic swoj Gang?", "Handel_OpuscGang");
  293. menu_additem(menu2, "\yTak");
  294. menu_additem(menu2, "\rNie");
  295. menu_display(id, menu2);
  296. }
  297. case 2:
  298. {
  299. new szInt[3], menu2 = menu_create("\yWyslij zaproszenie do Gangu:", "Handel_ZaproszenieDoGangu");
  300. for(new i=1; i<=32; i++)
  301. {
  302. if(!is_user_connected(i) || user_gang[i] || is_user_hltv(i))
  303. continue;
  304.  
  305. num_to_str(i, szInt, 2);
  306. menu_additem(menu2, nazwa_gracza[i], szInt);
  307. }
  308. menu_setprop(menu2, MPROP_EXITNAME, "\rWyjdz");
  309. menu_display(id, menu2);
  310. }
  311. case 3:
  312. {
  313. new data[1];
  314. data[0] = id;
  315. SQL_FormatQuery("SELECT `Name` FROM `GangUser` WHERE `id` = '%i' AND NOT `Flaga` = '%d'", user_gang[id], _:ADMINS);
  316. SQL_ThreadQuery(info, "UsunCzlonkaGangu", gszQuery, data, 1);
  317. }
  318. case 4:
  319. {
  320. new menu2 = menu_create("Czy napewno chcesz usunac swoj Gang?", "Handel_UsunGang");
  321. menu_additem(menu2, "\yTak");
  322. menu_additem(menu2, "\rNie");
  323. menu_display(id, menu2);
  324. }
  325. case 5:
  326. {
  327. new data[1];
  328. data[0] = id;
  329. SQL_FormatQuery("SELECT `Name`,`Flaga` FROM `GangUser` WHERE `id` = '%i';", user_gang[id]);
  330. SQL_ThreadQuery(info, "PokazCzlonkaGangu", gszQuery, data, 1);
  331. }
  332. case 7:
  333. {
  334. new data[1];
  335. data[0] = id;
  336. SQL_FormatQuery("SELECT `Name`,`Flaga` FROM `GangUser` WHERE `id` = '%i' AND NOT `Flaga` = '%d';", user_gang[id], _:ADMINS);
  337. SQL_ThreadQuery(info, "UstawRangCzlonka", gszQuery, data, 1);
  338. }
  339. }
  340. }
  341.  
  342. //ODEJSCIE OD GANGU
  343. public Handel_OpuscGang(id, menu, item)
  344. {
  345. if(item == MENU_EXIT || item == 1)
  346. return;
  347.  
  348. UstawIloscGangu(user_gang[id], -1);
  349.  
  350. user_gang[id] = 0;
  351. user_flags[id] = USER;
  352.  
  353. SQL_FormatQuery("UPDATE `GangUser` SET `id` = '0', `Flaga` = '0' WHERE `Name` = '%s';", nazwa_gracza[id]);
  354. SQL_ThreadQuery(info, "ZapiszDane", gszQuery);
  355.  
  356. ColorChat(id, GREEN, "[GANG]^x01 Opusciles swoj Gang.");
  357.  
  358. //OldPlayerName(id);
  359. }
  360.  
  361. //USUWANIE CALKOWICIE GANGU
  362. public Handel_UsunGang(id, menu, item)
  363. {
  364. if(item == MENU_EXIT || item == 1)
  365. return;
  366.  
  367. for(new i=1; i<=32; i++)
  368. {
  369. if(user_gang[id] == user_gang[i] && id != i)
  370. {
  371. user_gang[i] = 0;
  372. user_flags[i] = USER;
  373.  
  374. //OldPlayerName(i);
  375. }
  376. }
  377.  
  378. SQL_FormatQuery("UPDATE `GangUser` SET `id` = '0', `Flaga` = '0' WHERE `id` = '%i';", user_gang[id]);
  379. SQL_ThreadQuery(info, "ZapiszDane", gszQuery);
  380.  
  381. SQL_FormatQuery("DELETE FROM `GangName` WHERE `id` = '%i';", user_gang[id]);
  382. SQL_ThreadQuery(info, "ZapiszDane", gszQuery);
  383.  
  384. new StrItem[10];
  385. num_to_str(user_gang[id], StrItem, 9);
  386. TrieDeleteKey(gnGangIle, StrItem); //USUNIECIE ILOSCI LUDZI Z GANGU
  387.  
  388. user_gang[id] = 0;
  389. user_flags[id] = USER;
  390.  
  391. ColorChat(id, GREEN, "[GANG]^x01 Usuneles swoj Gang.");
  392.  
  393. //OldPlayerName(id);
  394. }
  395.  
  396.  
  397. //ZAPROSZENIE DO GANGU
  398. public Handel_ZaproszenieDoGangu(id, menu, item)
  399. {
  400. if(item == MENU_EXIT)
  401. return;
  402.  
  403. if(PobierzIloscGangu(user_gang[id]) >= MAX_PEOPLE)
  404. {
  405. client_print(id, 3, "[GANG] Masz za duzo czlonkow w Gangu (%d)", MAX_PEOPLE);
  406. return;
  407. }
  408.  
  409. new szInt[3], id2;
  410. menu_item_getinfo(menu, item, id2, szInt, 2, _, _, id2);
  411.  
  412. id2 = str_to_num(szInt);
  413. ColorChat(id, GREEN, "[GANG]^x01 Wyslales zaproszenie %s do swojego Gangu", nazwa_gracza[id2]);
  414.  
  415. new szTemp[128], menu2;
  416. formatex(szTemp, 127, "%s zaprosil cie, abys dolaczyl do Gangu", nazwa_gracza[id]);
  417. menu2 = menu_create(szTemp, "Handel_DostalZaproszenie");
  418.  
  419. num_to_str(id, szInt, 2);
  420. menu_additem(menu2, "Akceptuj", szInt);
  421. menu_additem(menu2, "Odrzuc", szInt);
  422.  
  423. menu_setprop(menu2, MPROP_EXITNAME, "Wyjdz");
  424. menu_display(id2, menu2);
  425.  
  426. ColorChat(id2, GREEN, "[GANG]^x01 %s wyslal tobie zaproszenie do swojego Gangu", nazwa_gracza[id]);
  427. }
  428.  
  429. public Handel_DostalZaproszenie(id, menu, item)
  430. {
  431. if(item == MENU_EXIT)
  432. return;
  433.  
  434. new szInt[3], id2;
  435. menu_item_getinfo(menu, item, id2, szInt, 2, _, _, id2);
  436.  
  437. id2 = str_to_num(szInt);
  438. if(PobierzIloscGangu(user_gang[id2]) >= MAX_PEOPLE)
  439. return;
  440.  
  441. ColorChat(id2, GREEN, "[GANG]^x01 %s%s przyja twojego zaproszenia do Gangu", nazwa_gracza[id], item? " nie": "");
  442.  
  443. if(item == 1)
  444. return;
  445.  
  446. UstawIloscGangu(user_gang[id2], 1);
  447. SQL_FormatQuery("UPDATE `GangUser` SET `id` = '%i' WHERE `Name` = '%s';", user_gang[id2], nazwa_gracza[id]);
  448. SQL_ThreadQuery(info, "ZapiszDane", gszQuery);
  449. user_gang[id] = user_gang[id2];
  450.  
  451. //NewPlayerName(id);
  452. }
  453.  
  454. //CZLONKOWIE GANGU
  455. public PokazCzlonkaGangu(failstate, Handle:query, error[], errnum, data[], size){
  456. if(failstate != TQUERY_SUCCESS){
  457. log_amx("<Query> Error: %s", error);
  458. return;
  459. }
  460. new id = data[0];
  461. if(!is_user_connected(id) && !is_user_connecting(id))
  462. return;
  463.  
  464. if(SQL_NumRows(query))
  465. {
  466. new szName[64], menu = menu_create("Czlonkowie Gangu:", "Handel_CzlonkowieGangu");
  467. while(SQL_MoreResults(query))
  468. {
  469. SQL_ReadResult(query, 0, szName, 63);
  470. add(szName, 63, user_ranga[SQL_ReadResult(query, 1)]);
  471.  
  472. menu_additem(menu, szName);
  473. SQL_NextRow(query);
  474. }
  475. menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
  476. menu_display(id, menu);
  477. }
  478. }
  479.  
  480. public Handel_CzlonkowieGangu(id, menu, item)
  481. {
  482. if(item == MENU_EXIT)
  483. return;
  484.  
  485. menu_display(id, menu, item/7);
  486. }
  487.  
  488. //USUWANIE LUDZI Z GANGU
  489. public UsunCzlonkaGangu(failstate, Handle:query, error[], errnum, data[], size){
  490. if(failstate != TQUERY_SUCCESS){
  491. log_amx("<Query> Error: %s", error);
  492. return;
  493. }
  494. new id = data[0];
  495. if(!is_user_connected(id) && !is_user_connecting(id))
  496. return;
  497.  
  498. if(SQL_NumRows(query))
  499. {
  500. new szName[32], menu = menu_create("Usun z Gangu:", "Handel_UsunZGangu");
  501. while(SQL_MoreResults(query))
  502. {
  503. SQL_ReadResult(query, 0, szName, 31);
  504. menu_additem(menu, szName, szName);////
  505. SQL_NextRow(query);
  506. }
  507. menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
  508. menu_display(id, menu);
  509. }
  510. }
  511.  
  512. public Handel_UsunZGangu(id, menu, item)
  513. {
  514. if(item == MENU_EXIT)
  515. return;
  516.  
  517. new szName[32], id2;
  518. menu_item_getinfo(menu, item, id2, szName, 32, _, _, id2);
  519.  
  520. SQL_FormatQuery("UPDATE `GangUser` SET `id` = '0', `Flaga` = '%d' WHERE `Name` = '%s';", _:USER, szName);////
  521. SQL_ThreadQuery(info, "ZapiszDane", gszQuery);
  522.  
  523. UstawIloscGangu(user_gang[id], -1);
  524.  
  525. id2 = get_user_index(szName);////
  526. if(is_user_connected(id2))
  527. {
  528. user_gang[id2] = 0;
  529. user_flags[id2] = USER;
  530.  
  531. //OldPlayerName(id2);
  532. }
  533.  
  534. ColorChat(id, GREEN, "[GANG]^x01 Usuneles %s z Gangu", szName);
  535. }
  536.  
  537. ////USTAWIANIE RANGI
  538. public UstawRangCzlonka(failstate, Handle:query, error[], errnum, data[], size){
  539. if(failstate != TQUERY_SUCCESS){
  540. log_amx("<Query> Error: %s", error);
  541. return;
  542. }
  543. new id = data[0];
  544. if(!is_user_connected(id) && !is_user_connecting(id))
  545. return;
  546.  
  547. if(SQL_NumRows(query))
  548. {
  549. new szName[2][64], menu = menu_create("Ustaw range:", "Handel_UstawRangeCzlonka");
  550. while(SQL_MoreResults(query))
  551. {
  552. SQL_ReadResult(query, 0, szName[0], 63);
  553. formatex(szName[1], 63, "%s%s", szName[0], user_ranga[SQL_ReadResult(query, 1)]);
  554.  
  555. menu_additem(menu, szName[1], szName[0]);
  556. SQL_NextRow(query);
  557. }
  558. menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
  559. menu_display(id, menu);
  560. }
  561. }
  562.  
  563. public Handel_UstawRangeCzlonka(id, menu, item)
  564. {
  565. if(item == MENU_EXIT)
  566. return;
  567.  
  568. new szName[32], id2;
  569. menu_item_getinfo(menu, item, id2, szName, 31, _, _, id2);
  570.  
  571. new szTemp[128], menu2;
  572. format(szTemp, 127, "Ustaw range dla %s", szName);
  573. menu2 = menu_create(szTemp, "Handel_UstawRangeCzlonkaGangu");
  574.  
  575. menu_additem(menu2, "Zadna", szName);
  576. menu_additem(menu2, "Zastepca", szName);
  577.  
  578. menu_setprop(menu2, MPROP_EXITNAME, "Wyjdz");
  579. menu_display(id, menu2);
  580. }
  581.  
  582. public Handel_UstawRangeCzlonkaGangu(id, menu, item)
  583. {
  584. if(item == MENU_EXIT)
  585. return;
  586.  
  587. new szName[32], id2;
  588. menu_item_getinfo(menu, item, id2, szName, 32, _, _, id2);
  589.  
  590. item = _:(item? ASSIST: USER);
  591.  
  592. SQL_FormatQuery("UPDATE `GangUser` SET `Flaga` = '%d' WHERE `Name` = '%s';", item, szName);////
  593. SQL_ThreadQuery(info, "ZapiszDane", gszQuery);
  594.  
  595. id2 = get_user_index(szName);////
  596. if(is_user_connected(id2))
  597. {
  598. user_flags[id2] = GANG_FLAGS:item;
  599. ColorChat(id2, GREEN, "[GANG]^x01 %s ustawil ci range%s", nazwa_gracza[id], user_ranga[item]);
  600. }
  601. ColorChat(id, GREEN, "[GANG]^x01 Ustawiles range%s czlonkowi %s", user_ranga[item], szName);
  602. }
  603.  
  604. //CZAT GANGU
  605. public cmdSayGang(id)
  606. {
  607. new said[3];
  608. read_argv(1, said, 2);
  609.  
  610. if(said[0] == '!')
  611. {
  612. if(!user_gang[id])
  613. return PLUGIN_CONTINUE;
  614.  
  615. if(!is_user_alive(id)){
  616. ColorChat(id, GREEN,"[Czat gangowy]^x01 Zeby pisac na czacie gangu musisz byc zywy!")
  617. return PLUGIN_CONTINUE
  618. }
  619.  
  620. new message[192];
  621. read_args(message, 191);
  622. remove_quotes(message);
  623.  
  624. for(new i=1; i<=32; i++)
  625. {
  626. if(is_user_connected(i) && user_gang[id] == user_gang[i])
  627. ColorChat(i, GREEN, "(Czat gangowy) %s : %s", nazwa_gracza[id], message[2]);
  628. }
  629. return PLUGIN_HANDLED;
  630. }
  631. return PLUGIN_CONTINUE;
  632. }
  633.  
  634. /*public client_infochanged(id)
  635. {
  636. if(!is_user_connected(id) || !user_gang[id])
  637. return PLUGIN_CONTINUE;
  638.  
  639. new NewName[32], OldName[32];
  640. get_user_name(id, OldName, 31);
  641. get_user_info(id, "name", NewName, 31);
  642.  
  643. if(!equal(NewName, OldName))
  644. NewPlayerName(id, true);
  645. return PLUGIN_CONTINUE;
  646. }*/
  647.  
  648. public client_putinserver(id)
  649. {
  650. if(is_user_hltv(id))
  651. return;
  652.  
  653. create_gang[id] = false;
  654. user_wczytalo[id] = false;
  655. user_gang[id] = 0;
  656. user_flags[id] = USER;
  657. user_bunty[id] = 0;
  658. user_zyczenia[id] = 0;
  659.  
  660. get_user_name(id, nazwa_gracza[id], 34);
  661. replace_all(nazwa_gracza[id], 34, "'", "\'");
  662. replace_all(nazwa_gracza[id], 34, "`", "\`");
  663.  
  664. new data[1];
  665. data[0] = id;
  666.  
  667. SQL_FormatQuery("SELECT * FROM `GangUser` WHERE `Name` = '%s';", nazwa_gracza[id]);
  668. SQL_ThreadQuery(info, "PobierzGang", gszQuery, data, 1);
  669. }
  670.  
  671. public PobierzGang(failstate, Handle:query, error[], errnum, data[], size){
  672. if(failstate != TQUERY_SUCCESS){
  673. log_amx("<Query> Error: %s", error);
  674. return;
  675. }
  676. new id = data[0];
  677. if(!is_user_connected(id) && !is_user_connecting(id))
  678. return;
  679.  
  680. if(SQL_NumRows(query))
  681. {
  682. user_gang[id] = SQL_ReadResult(query, 0);//id_gangu
  683. user_bunty[id] += SQL_ReadResult(query, 2);//zabicia
  684. user_zyczenia[id] += SQL_ReadResult(query, 3);//zyczenia
  685. user_flags[id] = GANG_FLAGS:SQL_ReadResult(query, 4);//flaga
  686.  
  687. //if(user_gang[id])
  688. // NewPlayerName(id);
  689. }
  690. else
  691. {
  692. SQL_FormatQuery("INSERT INTO `GangUser` (`Name`) VALUES ('%s');", nazwa_gracza[id]);
  693. SQL_ThreadQuery(info, "ZapiszDane", gszQuery);
  694. }
  695. user_wczytalo[id] = true;
  696. }
  697.  
  698. ///TWORZENIE GANGU
  699. public CreateNameGang(id)
  700. {
  701. if(get_user_team(id) != 1 || !user_wczytalo[id])
  702. return PLUGIN_HANDLED;
  703.  
  704. if(!WymaganiaDoGangu(id))
  705. return PLUGIN_HANDLED;
  706.  
  707. if(create_gang[id])
  708. {
  709. ColorChat(id, GREEN, "[GANG]^x01 Poczekaj trwa tworzenie twojego gangu");
  710. return PLUGIN_HANDLED;
  711. }
  712.  
  713. new szArgs[32];
  714. read_args(szArgs, charsmax(szArgs));
  715. remove_quotes(szArgs);
  716.  
  717. if(strlen(szArgs) > 10)
  718. {
  719. ColorChat(id, GREEN, "[GANG]^x01 Za dluga nazwa gangu! Maksymalnie 10 liter");
  720. return PLUGIN_HANDLED;
  721. }
  722. if(strfind(szArgs, "'") != -1 || strfind(szArgs, "`") != -1 || strfind(szArgs, "%") != -1)
  723. {
  724. ColorChat(id, GREEN, "[GANG]^x01 Nie mozesz uzyc niedozwolonych znakow");
  725. return PLUGIN_HANDLED;
  726. }
  727.  
  728. new data[11];
  729. copy(data[1], 10, szArgs);
  730. data[0] = id;
  731.  
  732. SQL_FormatQuery("SELECT `id` FROM `GangName` WHERE `Name` = '%s';", szArgs);
  733. SQL_ThreadQuery(info, "SprawdzenieDostepnosci", gszQuery, data, 11);
  734.  
  735. create_gang[id] = true;
  736. return PLUGIN_HANDLED;
  737. }
  738.  
  739. public SprawdzenieDostepnosci(failstate, Handle:query, error[], errnum, data[], size){
  740. if(failstate != TQUERY_SUCCESS){
  741. log_amx("<Query> Error: %s", error);
  742. return;
  743. }
  744. new id = data[0]
  745. if(SQL_NumRows(query))
  746. {
  747. ColorChat(id, GREEN, "[GANG]^x01 Gang z taka nazwa juz istnieje.");
  748. create_gang[id] = false;
  749. return;
  750. }
  751. ColorChat(id, GREEN, "[GANG]^x01 Stworzyles gang^x03 %s", data[1]);
  752.  
  753. SQL_FormatQuery("INSERT INTO `GangName` (`Name`) VALUES ('%s');", data[1]);
  754. SQL_ThreadQuery(info, "ZapiszDaneGang", gszQuery, data, 32);
  755.  
  756. }
  757.  
  758. public ZapiszDaneGang(failstate, Handle:query, error[], errnum, data[], size){
  759. if(failstate != TQUERY_SUCCESS){
  760. log_amx("<Query> Error: %s", error);
  761. return;
  762. }
  763.  
  764. SQL_FormatQuery("SELECT `id` FROM `GangName` WHERE `Name` = '%s';", data[1]);
  765. SQL_ThreadQuery(info, "PobierzGangID", gszQuery, data, 32);
  766. }
  767.  
  768. public PobierzGangID(failstate, Handle:query, error[], errnum, data[], size){
  769. if(failstate != TQUERY_SUCCESS){
  770. log_amx("<Query> Error: %s", error);
  771. return;
  772. }
  773. new id = data[0];
  774. if(SQL_NumRows(query))
  775. {
  776. user_gang[id] = SQL_ReadResult(query, 0);
  777. user_flags[id] = ADMINS;
  778.  
  779. new szInt[10];
  780. num_to_str(user_gang[id], szInt, 9);
  781. TrieSetCell(gnGangIle, szInt, 1);
  782. TrieSetString(gnGangName, szInt, data[1]);
  783.  
  784. //NewPlayerName(id);
  785.  
  786. //log_amx("[Gangi] Stworzono gang %s (%i) przez %s", szDane, user_gang[id], nazwa_gracza[id]);
  787.  
  788. SQL_FormatQuery("UPDATE `GangUser` SET `id` = '%i', `Flaga` = '%d' WHERE `Name` = '%s';", user_gang[id], _:ADMINS, nazwa_gracza[id]);
  789. SQL_ThreadQuery(info, "ZapiszDane", gszQuery);
  790. }
  791. create_gang[id] = false;
  792. }
  793.  
  794. //inne
  795. public ZapiszDane(failstate, Handle:query, error[], errnum, data[], size){
  796. if(failstate != TQUERY_SUCCESS){
  797. log_amx("<Query> Error: %s", error);
  798. return;
  799. }
  800. }
  801.  
  802. stock SQL_FormatQuery(const szQuery[], ...){
  803. vformat(gszQuery, charsmax(gszQuery), szQuery, 2);
  804. }
  805.  
  806. //inne
  807. stock PobierzIloscGangu(gang)
  808. {
  809. new StrItem[10], ile;
  810. num_to_str(gang, StrItem, 9);
  811. TrieGetCell(gnGangIle, StrItem, ile);
  812. return ile;
  813. }
  814.  
  815. stock UstawIloscGangu(gang, dodaj)
  816. {
  817. new StrItem[10], ile;
  818. num_to_str(gang, StrItem, 9);
  819. TrieGetCell(gnGangIle, StrItem, ile);
  820. TrieSetCell(gnGangIle, StrItem, ile+dodaj);
  821.  
  822. SQL_FormatQuery("UPDATE `GangName` SET `Ilosc` = (`Ilosc` + %d) WHERE `id` = '%d';", dodaj, gang);
  823. SQL_ThreadQuery(info, "ZapiszDane", gszQuery);
  824. }
  825.  
  826. stock bool:WymaganiaDoGangu(id)
  827. {
  828. if(!access(id, ADMIN_IMMUNITY))
  829. {
  830. if(user_zyczenia[id] < MIN_ZYCZENIA)
  831. {
  832. client_print(id, 3, "[GANG] Masz za malo Zyczen, aby stworzyc swoj gang!");
  833. return false;
  834. }
  835. }
  836. if(user_gang[id])
  837. {
  838. client_print(id, 3, "[GANG] Masz juz gang");
  839. return false;
  840. }
  841. return true;
  842. }
  843.  
  844. /*stock NewPlayerName(id, bool:info=false)
  845. {
  846. set_msg_block(msgid_sayText, BLOCK_ONCE);
  847.  
  848. new szInt[10], szName[32], szPrefix[12];
  849. num_to_str(user_gang[id], szInt, 9);
  850. TrieGetString(gnGangName, szInt, szPrefix, 11);
  851.  
  852. info? get_user_info(id, "name", szName, 31): get_user_name(id, szName, 31);
  853.  
  854. format(szName, 31, "%s | %s", szPrefix, szName);
  855. set_user_info(id, "name", szName);
  856. //set_pev(id, pev_netname, szNewName)
  857. }
  858.  
  859. stock OldPlayerName(id)
  860. {
  861. set_msg_block(msgid_sayText, BLOCK_ONCE);
  862. set_user_info(id, "name", nazwa_gracza[id]);
  863. }*/
  864.  
  865. public handleSayText(msgId, msgDest, msgEnt)
  866. {
  867. new id = get_msg_arg_int(1);
  868. if(!is_user_connected(id) || !user_gang[id])
  869. return PLUGIN_CONTINUE;
  870.  
  871. new szTmp[192], szTmp2[192];
  872. get_msg_arg_string(2, szTmp, charsmax(szTmp));
  873.  
  874. new szInt[10], szPrefix[64];
  875. num_to_str(user_gang[id], szInt, 9);
  876. TrieGetString(gnGangName, szInt, szPrefix, 11);
  877.  
  878. if(!equal(szTmp,"#Cstrike_Chat_All")){
  879. add(szTmp2, charsmax(szTmp2), "^x01");
  880. add(szTmp2, charsmax(szTmp2), szPrefix);
  881. add(szTmp2, charsmax(szTmp2), " ");
  882. add(szTmp2, charsmax(szTmp2), szTmp);
  883. }
  884. else{
  885. new szPlayerName[64];
  886. get_user_name(id, szPlayerName, charsmax(szPlayerName));
  887.  
  888. get_msg_arg_string(4, szTmp, charsmax(szTmp)); //4. argument zawiera tresc wyslanej wiadomosci
  889. set_msg_arg_string(4, ""); //Musimy go wyzerowac, gdyz gra wykorzysta wiadomosc podwójnie co moze skutkowac crash'em 191+ znaków.
  890.  
  891. add(szTmp2, charsmax(szTmp2), "^x04[");
  892. add(szTmp2, charsmax(szTmp2), szPrefix);
  893. add(szTmp2, charsmax(szTmp2), "]^x03 ");
  894. add(szTmp2, charsmax(szTmp2), szPlayerName);
  895. add(szTmp2, charsmax(szTmp2), "^x01 : ");
  896. add(szTmp2, charsmax(szTmp2), szTmp)
  897. }
  898.  
  899. set_msg_arg_string(2, szTmp2);
  900.  
  901. return PLUGIN_CONTINUE;
  902. }
  903.  
  904. /////Zliczanie zyczen i buntow
  905. public OnLastPrisonerTakeWish(id)
  906. {
  907. nielicz = true;
  908.  
  909. user_zyczenia[id]++;
  910. SQL_FormatQuery("UPDATE `GangUser` SET `Zyczenia` = (`Zyczenia` + 1) WHERE `Name` = '%s';", nazwa_gracza[id]);
  911. SQL_ThreadQuery(info, "ZapiszDane", gszQuery);
  912. }
  913.  
  914. public SmiercGraczaPost(id, attacker, shouldgib)
  915. {
  916. if(!is_user_connected(id) || !is_user_connected(attacker))
  917. return HAM_IGNORED;
  918.  
  919. if(get_user_team(id) == 2 && get_user_team(attacker) == 1 && !nielicz)
  920. {
  921. user_bunty[attacker]++;
  922. SQL_FormatQuery("UPDATE `GangUser` SET `Zabicia` = (`Zabicia` + 1) WHERE `Name` = '%s';", nazwa_gracza[attacker]);
  923. SQL_ThreadQuery(info, "ZapiszDane", gszQuery);
  924. }
  925. return HAM_IGNORED;
  926. }
  927.  
  928. public OnRemoveData()
  929. {
  930. nielicz = false;
  931. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement