Guest User

Untitled

a guest
Jun 16th, 2022
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 36.30 KB | None | 0 0
  1. /* Plugin generated by AMXX-Studio */
  2.  
  3. #include <amxmodx>
  4. #include <hamsandwich>
  5. #include <cstrike>
  6. #include <codmod>
  7. #include <colorchat>
  8. #include <nvault>
  9.  
  10. #define LIMIT_CZLONKOW 15 //Ile maksymalnie czlonkow moze wystepowac w klanie
  11. #define WYMAGANY_POZIOM 15 //Jaki poziom jest wymagany aby moc zalozyc klan
  12. #define WYMAGANA_ILOSC_MONET 500 //Ile trzeba monet do zalozenia klanu
  13. //Zakomentuj aby wylaczyc udzial monet w klanach
  14.  
  15. #if defined WYMAGANA_ILOSC_MONET
  16. native cod_get_user_coins(id) // zwraca ilosc monet
  17. native cod_set_user_coins(id, wartosc) // ustawia ilosc monet
  18. #endif
  19.  
  20.  
  21.  
  22. #define DO_ROZDANIA 0
  23. #define XP 1
  24. #define KRYTYK 2
  25. #define BOGACTWO 3
  26.  
  27. new g_iAktywnyKlan[33];
  28. new g_szNazwaAktywnegoKlanu[33][32];
  29. new g_szWlascicielAktywnegoKlanu[33][32];
  30. new g_szCzlonekAktywnegoKlanu[33][LIMIT_CZLONKOW+1][32];
  31. new g_iIloscCzlonkowAktywnegoKlanu[33];
  32. new g_iPunktyAktywnegoKlanu[33][4];
  33. new g_iPoziomAktywnegoKlanu[33];
  34. new g_iDoswiadczenieAktywnegoKlanu[33];
  35.  
  36. new g_szTop15Motd[2048];
  37.  
  38. new g_iIloscKlanow;
  39. new g_iIloscAktywnychKlanow;
  40. new g_iVault;
  41. new g_iHud;
  42. new g_iIloscSlotow;
  43.  
  44. new g_iDoswiadczenieZaFraga;
  45.  
  46. new g_iIdAktywnegoKlanuGracza[33];
  47. new bool:g_bCzyWlascicielKlanu[33];
  48.  
  49. new g_szNickGracza[33][32];
  50. new g_iPytanieOdKlanuGracza[33];
  51.  
  52. public plugin_init()
  53. {
  54. register_plugin("COD: Klany", "1.0.0b", "d0naciak");
  55.  
  56. register_clcmd("say /grupa", "cmd_Klany");
  57. register_clcmd("say /klan", "cmd_Klany");
  58. register_clcmd("say /klany", "cmd_Klany");
  59.  
  60. register_clcmd("say /resetklanow", "cmd_Reset");
  61.  
  62. RegisterHam(Ham_Spawn, "player", "fw_Odrodzenie_Post", 1);
  63. RegisterHam(Ham_TakeDamage, "player", "fw_Obrazenia");
  64. RegisterHam(Ham_Killed, "player", "fw_SmiercGracza_Post", 1);
  65.  
  66. register_clcmd("WpiszNazweKlanu", "cmd_WpisalNazweKlanu");
  67. register_clcmd("NowaNazwaKlanu", "cmd_ZmienilNazweKlanu");
  68.  
  69. g_iVault = nvault_open("SystemGrup_v2");
  70. g_iIloscKlanow = nvault_get(g_iVault, "IloscKlanow");
  71. g_iHud = CreateHudSyncObj();
  72. g_iIloscSlotow = get_maxplayers();
  73.  
  74. FormatTop15();
  75. }
  76.  
  77. public cmd_Reset(id)
  78. {
  79. if(get_user_flags(id) & ADMIN_IMMUNITY)
  80. {
  81. nvault_prune(g_iVault, 0, get_systime());
  82. g_iIloscKlanow = 0;
  83. }
  84.  
  85. return PLUGIN_HANDLED;
  86. }
  87.  
  88. public plugin_cfg()
  89. {
  90. g_iDoswiadczenieZaFraga = get_cvar_num("cod_killxp");
  91. }
  92.  
  93. public plugin_end()
  94. {
  95. new szIloscKlanow[8];
  96. num_to_str(g_iIloscKlanow, szIloscKlanow, 7);
  97. nvault_set(g_iVault, "IloscKlanow", szIloscKlanow);
  98. nvault_close(g_iVault);
  99. }
  100.  
  101. public client_authorized(id)
  102. {
  103. g_iIdAktywnegoKlanuGracza[id] = 0;
  104.  
  105. new szKluczVault[128], szDaneVault[36*LIMIT_CZLONKOW+1], szDane[6][8], iIdKlanu;
  106.  
  107. get_user_name(id, g_szNickGracza[id], 31);
  108. formatex(szKluczVault, 127, "%s-DaneGracza", g_szNickGracza[id]);
  109. nvault_get(g_iVault, szKluczVault, szDaneVault, 36*LIMIT_CZLONKOW);
  110. parse(szDaneVault, szDane[0], 7, szDane[1], 7);
  111.  
  112. iIdKlanu = str_to_num(szDane[0]);
  113. g_bCzyWlascicielKlanu[id] = bool:str_to_num(szDane[1]);
  114.  
  115. if(!iIdKlanu)
  116. return;
  117.  
  118. for(new i = 1; i <= g_iIloscAktywnychKlanow; i++)
  119. {
  120. if(iIdKlanu == g_iAktywnyKlan[i])
  121. {
  122. g_iIdAktywnegoKlanuGracza[id] = i;
  123. return;
  124. }
  125. }
  126.  
  127. new iIdAktKlanu = g_iIdAktywnegoKlanuGracza[id] = g_iIloscAktywnychKlanow = g_iIloscAktywnychKlanow + 1;
  128. g_iAktywnyKlan[iIdAktKlanu] = iIdKlanu;
  129. formatex(szKluczVault, 127, "%d-1-DaneKlanow", iIdKlanu);
  130. nvault_get(g_iVault, szKluczVault, g_szNazwaAktywnegoKlanu[iIdAktKlanu], 31);
  131. formatex(szKluczVault, 127, "%d-2-DaneKlanow", iIdKlanu);
  132. nvault_get(g_iVault,szKluczVault, szDaneVault, 36*LIMIT_CZLONKOW);
  133. parse(szDaneVault, szDane[0], 7, szDane[1], 7, szDane[2], 7, szDane[3], 7, szDane[4], 7, szDane[5], 7);
  134. g_iPoziomAktywnegoKlanu[iIdAktKlanu] = str_to_num(szDane[0]);
  135. g_iDoswiadczenieAktywnegoKlanu[iIdAktKlanu] = str_to_num(szDane[1]);
  136. g_iPunktyAktywnegoKlanu[iIdAktKlanu][XP] = str_to_num(szDane[2]);
  137. g_iPunktyAktywnegoKlanu[iIdAktKlanu][KRYTYK] = str_to_num(szDane[3]);
  138. g_iPunktyAktywnegoKlanu[iIdAktKlanu][BOGACTWO] = str_to_num(szDane[4]);
  139. g_iPunktyAktywnegoKlanu[iIdAktKlanu][DO_ROZDANIA] = (g_iPoziomAktywnegoKlanu[iIdAktKlanu] - 1) * 2 - g_iPunktyAktywnegoKlanu[iIdAktKlanu][XP] - g_iPunktyAktywnegoKlanu[iIdAktKlanu][KRYTYK] - g_iPunktyAktywnegoKlanu[iIdAktKlanu][BOGACTWO];
  140. g_iIloscCzlonkowAktywnegoKlanu[iIdAktKlanu] = str_to_num(szDane[5]);
  141. formatex(szKluczVault, 127, "%d-3-DaneKlanow", iIdKlanu);
  142. nvault_get(g_iVault,szKluczVault, g_szWlascicielAktywnegoKlanu[iIdAktKlanu], 31);
  143. formatex(szKluczVault, 127, "%d-4-DaneKlanow", iIdKlanu);
  144. nvault_get(g_iVault,szKluczVault, szDaneVault, 36*LIMIT_CZLONKOW);
  145. parse(szDaneVault, g_szCzlonekAktywnegoKlanu[iIdAktKlanu][1], 31, g_szCzlonekAktywnegoKlanu[iIdAktKlanu][2], 31, g_szCzlonekAktywnegoKlanu[iIdAktKlanu][3], 31, g_szCzlonekAktywnegoKlanu[iIdAktKlanu][4], 31,
  146. g_szCzlonekAktywnegoKlanu[iIdAktKlanu][5], 31, g_szCzlonekAktywnegoKlanu[iIdAktKlanu][6], 31, g_szCzlonekAktywnegoKlanu[iIdAktKlanu][7], 31, g_szCzlonekAktywnegoKlanu[iIdAktKlanu][8], 31,
  147. g_szCzlonekAktywnegoKlanu[iIdAktKlanu][9], 31, g_szCzlonekAktywnegoKlanu[iIdAktKlanu][10], 31, g_szCzlonekAktywnegoKlanu[iIdAktKlanu][11], 31, g_szCzlonekAktywnegoKlanu[iIdAktKlanu][12], 31,
  148. g_szCzlonekAktywnegoKlanu[iIdAktKlanu][13], 31, g_szCzlonekAktywnegoKlanu[iIdAktKlanu][14], 31, g_szCzlonekAktywnegoKlanu[iIdAktKlanu][15], 31);
  149.  
  150.  
  151. }
  152.  
  153. public client_disconnect(id)
  154. {
  155. new iIdAktKlanu = g_iIdAktywnegoKlanuGracza[id];
  156.  
  157. if(!iIdAktKlanu)
  158. return;
  159.  
  160. new szKluczVault[128], szDaneVault[36*LIMIT_CZLONKOW+1];
  161. new iIdKlanu = g_iAktywnyKlan[iIdAktKlanu];
  162.  
  163. formatex(szKluczVault, 127, "%s-DaneGracza", g_szNickGracza[id]);
  164. formatex(szDaneVault, 36 * LIMIT_CZLONKOW, "%d %d", iIdKlanu, _:g_bCzyWlascicielKlanu[id]);
  165. nvault_set(g_iVault, szKluczVault, szDaneVault);
  166.  
  167. g_iIdAktywnegoKlanuGracza[id] = 0;
  168. g_bCzyWlascicielKlanu[id] = false;
  169.  
  170. for(new i = 1; i <= g_iIloscSlotow; i++)
  171. if(g_iIdAktywnegoKlanuGracza[i] == iIdAktKlanu && i != id)
  172. return;
  173.  
  174. formatex(szKluczVault, 127, "%d-1-DaneKlanow", iIdKlanu);
  175. nvault_set(g_iVault, szKluczVault, g_szNazwaAktywnegoKlanu[iIdAktKlanu]);
  176. formatex(szKluczVault, 127, "%d-2-DaneKlanow", iIdKlanu);
  177. formatex(szDaneVault, 36*LIMIT_CZLONKOW, "%d %d %d %d %d %d", g_iPoziomAktywnegoKlanu[iIdAktKlanu], g_iDoswiadczenieAktywnegoKlanu[iIdAktKlanu],
  178. g_iPunktyAktywnegoKlanu[iIdAktKlanu][XP], g_iPunktyAktywnegoKlanu[iIdAktKlanu][KRYTYK], g_iPunktyAktywnegoKlanu[iIdAktKlanu][BOGACTWO],
  179. g_iIloscCzlonkowAktywnegoKlanu[iIdAktKlanu]);
  180. nvault_set(g_iVault, szKluczVault, szDaneVault);
  181. formatex(szKluczVault, 127, "%d-3-DaneKlanow", iIdKlanu);
  182. nvault_set(g_iVault, szKluczVault, g_szWlascicielAktywnegoKlanu[iIdAktKlanu]);
  183. formatex(szKluczVault, 127, "%d-4-DaneKlanow", iIdKlanu);
  184. copy(szDaneVault, 36*LIMIT_CZLONKOW, "");
  185. for(new i = 1; i <= g_iIloscCzlonkowAktywnegoKlanu[iIdAktKlanu]; i++)
  186. {
  187. add(szDaneVault, 36*LIMIT_CZLONKOW, "^"");
  188. add(szDaneVault, 36*LIMIT_CZLONKOW, g_szCzlonekAktywnegoKlanu[iIdAktKlanu][i]);
  189. add(szDaneVault, 36*LIMIT_CZLONKOW, "^" ");
  190. }
  191. nvault_set(g_iVault, szKluczVault, szDaneVault);
  192.  
  193. for(new i = iIdAktKlanu + 1; i <= g_iIloscAktywnychKlanow; i++)
  194. {
  195. g_iAktywnyKlan[i-1] = g_iAktywnyKlan[i];
  196. copy(g_szNazwaAktywnegoKlanu[i-1], 31, g_szNazwaAktywnegoKlanu[i]);
  197. copy(g_szWlascicielAktywnegoKlanu[i-1], 31, g_szWlascicielAktywnegoKlanu[i]);
  198. g_iPoziomAktywnegoKlanu[i-1] = g_iPoziomAktywnegoKlanu[i];
  199. g_iDoswiadczenieAktywnegoKlanu[i-1] = g_iDoswiadczenieAktywnegoKlanu[i];
  200. g_iPunktyAktywnegoKlanu[i-1][DO_ROZDANIA] = g_iPunktyAktywnegoKlanu[i][DO_ROZDANIA];
  201. g_iPunktyAktywnegoKlanu[i-1][XP] = g_iPunktyAktywnegoKlanu[i][XP];
  202. g_iPunktyAktywnegoKlanu[i-1][KRYTYK] = g_iPunktyAktywnegoKlanu[i][KRYTYK];
  203. g_iPunktyAktywnegoKlanu[i-1][BOGACTWO] = g_iPunktyAktywnegoKlanu[i][BOGACTWO];
  204. g_iIloscCzlonkowAktywnegoKlanu[i-1] = g_iIloscCzlonkowAktywnegoKlanu[i];
  205. for(new j = 1; j <= g_iIloscCzlonkowAktywnegoKlanu[i]; j++)
  206. copy(g_szCzlonekAktywnegoKlanu[i-1][j], 31, g_szCzlonekAktywnegoKlanu[i][j]);
  207.  
  208. for(new j = 1; j <= g_iIloscSlotow; j++)
  209. if(g_iIdAktywnegoKlanuGracza[j] == i)
  210. g_iIdAktywnegoKlanuGracza[j] = i - 1;
  211. }
  212.  
  213. g_iIloscAktywnychKlanow --;
  214. }
  215.  
  216. public fw_Odrodzenie_Post(id)
  217. {
  218. if(!is_user_alive(id))
  219. return HAM_IGNORED;
  220.  
  221. new iIdAktKlanu = g_iIdAktywnegoKlanuGracza[id];
  222.  
  223. if(!iIdAktKlanu)
  224. return HAM_IGNORED;
  225.  
  226. if(g_iPunktyAktywnegoKlanu[iIdAktKlanu][DO_ROZDANIA] && g_bCzyWlascicielKlanu[id])
  227. PunktyKlanu(id);
  228.  
  229. return HAM_IGNORED;
  230. }
  231.  
  232. public fw_Obrazenia(id, iEnt, iAtt, Float:fDmg, iDmgBits)
  233. {
  234. if(!is_user_connected(iAtt) || get_user_team(id) == get_user_team(iAtt))
  235. return HAM_IGNORED;
  236.  
  237. new iIdAktKlanu = g_iIdAktywnegoKlanuGracza[iAtt];
  238.  
  239. if(!iIdAktKlanu)
  240. return HAM_IGNORED;
  241.  
  242. if(random_num(1, 100) <= floatround(g_iPunktyAktywnegoKlanu[iIdAktKlanu][KRYTYK]*0.375))
  243. {
  244. SetHamParamFloat(4, fDmg * 3.0);
  245. return HAM_HANDLED;
  246. }
  247.  
  248. return HAM_IGNORED;
  249. }
  250.  
  251. public fw_SmiercGracza_Post(id, iAtt, iShouldGib)
  252. {
  253. if(!is_user_connected(iAtt) || get_user_team(id) == get_user_team(iAtt))
  254. return;
  255.  
  256. new iIdAktKlanu = g_iIdAktywnegoKlanuGracza[iAtt];
  257.  
  258. if(!iIdAktKlanu)
  259. return;
  260.  
  261. new iDoswiadczenie = g_iDoswiadczenieZaFraga;
  262.  
  263. if(cod_get_user_level(id) > cod_get_user_level(iAtt))
  264. iDoswiadczenie += (cod_get_user_level(id)-cod_get_user_level(iAtt))*(iDoswiadczenie/10);
  265.  
  266. #if defined WYMAGANA_ILOSC_MONET
  267. cod_set_user_coins(iAtt, cod_get_user_coins(iAtt) + g_iPunktyAktywnegoKlanu[iIdAktKlanu][BOGACTWO] / 20);
  268. #endif
  269. cs_set_user_money(iAtt, cs_get_user_money(iAtt) + g_iPunktyAktywnegoKlanu[iIdAktKlanu][BOGACTWO] * 10);
  270. cod_set_user_xp(iAtt, cod_get_user_xp(iAtt) + g_iPunktyAktywnegoKlanu[iIdAktKlanu][XP]*2);
  271.  
  272. g_iDoswiadczenieAktywnegoKlanu[iIdAktKlanu] += iDoswiadczenie;
  273.  
  274. set_hudmessage(255, 255, 0, -1.0, 0.2, 0, 3.0, 3.0, _, _, -1);
  275. ShowSyncHudMsg(iAtt, g_iHud, "XP Klanu: +%d", iDoswiadczenie);
  276.  
  277. SprawdzPoziomKlanu(iIdAktKlanu);
  278. }
  279.  
  280. public SprawdzPoziomKlanu(iIdAktKlanu)
  281. {
  282. while(g_iDoswiadczenieAktywnegoKlanu[iIdAktKlanu] >= cod_get_level_xp(g_iPoziomAktywnegoKlanu[iIdAktKlanu])*20)
  283. {
  284. g_iPoziomAktywnegoKlanu[iIdAktKlanu] ++;
  285. g_iPunktyAktywnegoKlanu[iIdAktKlanu][DO_ROZDANIA] += 2;
  286.  
  287. for(new i = 1; i <= g_iIloscSlotow; i++)
  288. {
  289. if(g_iIdAktywnegoKlanuGracza[i] == iIdAktKlanu)
  290. {
  291. client_cmd(i, "spk QTM_CodMod/levelup.wav");
  292.  
  293. set_hudmessage(252, 252, 0, -1.0, 0.23, 0, 0.0, 1.1, 0.0, 0.0, -1);
  294. ShowSyncHudMsg(i, g_iHud, "Twoja grupa awansowala do %d poziomu!", g_iPoziomAktywnegoKlanu[iIdAktKlanu]);
  295. }
  296. }
  297. }
  298. }
  299.  
  300. public cmd_Klany(id)
  301. {
  302. new iIdAktKlanu = g_iIdAktywnegoKlanuGracza[id];
  303. new szMenu[128];
  304. if(iIdAktKlanu) formatex(szMenu, 127, "\wTwoj klan:\r %s^n\wPoziom:\r %d (%.1f %%)^n\wKlany by \rdonaciak.pl",
  305. g_szNazwaAktywnegoKlanu[iIdAktKlanu], g_iPoziomAktywnegoKlanu[iIdAktKlanu],
  306. float(g_iDoswiadczenieAktywnegoKlanu[iIdAktKlanu])/float(cod_get_level_xp(g_iPoziomAktywnegoKlanu[iIdAktKlanu])*20)*100.0);
  307. else copy(szMenu, 127, "Klany by \rdonaciak.pl");
  308. new iMenu = menu_create(szMenu, "Klany_Handler");
  309.  
  310. menu_additem(iMenu, "Stworz swoj klan");
  311. menu_additem(iMenu, "Rozwiaz klan");
  312. menu_additem(iMenu, "Wyjdz z klanu");
  313. menu_additem(iMenu, "Dodaj czlonkow");
  314. menu_additem(iMenu, "Wyrzuc czlonkow");
  315. menu_additem(iMenu, "Zmien nazwe klanu");
  316. menu_additem(iMenu, "Zmien wlasciciela klanu");
  317. menu_additem(iMenu, "Punkty klanu");
  318. menu_additem(iMenu, "Resetuj punkty klanu");
  319. menu_additem(iMenu, "\rTop 15 klanow");
  320. menu_additem(iMenu, "Informacje o twoim klanie");
  321.  
  322. menu_setprop(iMenu, MPROP_BACKNAME, "Powrot");
  323. menu_setprop(iMenu, MPROP_NEXTNAME, "Dalej");
  324. menu_setprop(iMenu, MPROP_EXITNAME, "Wyjscie");
  325.  
  326. menu_display(id, iMenu);
  327. }
  328.  
  329. public Klany_Handler(id, iMenu, iItem)
  330. {
  331. if(iItem < 0)
  332. {
  333. if(iItem == MENU_EXIT)
  334. menu_destroy(iMenu);
  335.  
  336. return PLUGIN_CONTINUE;
  337. }
  338.  
  339. switch(iItem)
  340. {
  341. case 0: StworzKlan(id);
  342. case 1: RozwiazKlan(id);
  343. case 2: WyjdzZKlanu(id);
  344. case 3: DodajCzlonkowDoKlanu(id);
  345. case 4: WyrzucCzlonkowZKlanu(id);
  346. case 5: ZmienNazweKlanu(id);
  347. case 6: ZmienWlascicielaKlanu(id);
  348. case 7: PunktyKlanu(id);
  349. case 8: ResetujPunktyKlanu(id);
  350. case 9: Top15Klanow(id);
  351. case 10: InfoOKlanie(id);
  352. }
  353.  
  354. menu_destroy(iMenu);
  355. return PLUGIN_CONTINUE;
  356. }
  357.  
  358. public StworzKlan(id)
  359. {
  360. if(g_iIdAktywnegoKlanuGracza[id])
  361. {
  362. PrintMsg(id, "Jestes juz w klanie!");
  363. return PLUGIN_CONTINUE;
  364. }
  365.  
  366. if(cod_get_user_level(id) < WYMAGANY_POZIOM)
  367. {
  368. PrintMsg(id, "Musisz posiadac^x03 %dLv^x01 aby moc posiadac swoj wlasny klan!", WYMAGANY_POZIOM);
  369. return PLUGIN_CONTINUE;
  370. }
  371. #if defined WYMAGANA_ILOSC_MONET
  372. if(cod_get_user_coins(id) < WYMAGANA_ILOSC_MONET)
  373. {
  374. PrintMsg(id, "Musisz posiadac^x03 %d monet^x01 aby moc posiadac swoj wlasny klan!", WYMAGANA_ILOSC_MONET);
  375. return PLUGIN_CONTINUE;
  376. }
  377. #endif
  378. client_cmd(id, "messagemode WpiszNazweKlanu");
  379. PrintMsg(id, "Wpisz nazwe jaka ma posiadac twoj klan.");
  380. #if defined WYMAGANA_ILOSC_MONET
  381. PrintMsg(id, "Pamietaj, ze zalozenie klanu kosztuje ^x03 %d monet^x01.", WYMAGANA_ILOSC_MONET);
  382. #endif
  383. PrintMsg(id, "Limit to 32 znaki.");
  384.  
  385. return PLUGIN_CONTINUE;
  386. }
  387.  
  388. public cmd_WpisalNazweKlanu(id)
  389. {
  390. if(g_iIdAktywnegoKlanuGracza[id])
  391. {
  392. PrintMsg(id, "Wystapil blad.");
  393. return PLUGIN_CONTINUE;
  394. }
  395.  
  396. #if defined WYMAGANA_ILOSC_MONET
  397. if(cod_get_user_coins(id) < WYMAGANA_ILOSC_MONET)
  398. {
  399. PrintMsg(id, "Wystapil blad.");
  400. return PLUGIN_CONTINUE;
  401. }
  402. #endif
  403. new szNazwaKlanu[32], szKluczVault[128], szDaneVault[32], szNick[32];
  404. read_argv(1, szNazwaKlanu, 31);
  405. get_user_name(id, szNick, 31);
  406.  
  407. g_iIloscKlanow ++;
  408. g_iIloscAktywnychKlanow ++;
  409.  
  410. formatex(szKluczVault, 127, "%d-1-DaneKlanow", g_iIloscKlanow);
  411. nvault_set(g_iVault, szKluczVault, szNazwaKlanu);
  412.  
  413. formatex(szKluczVault, 127, "%d-2-DaneKlanow", g_iIloscKlanow);
  414. nvault_set(g_iVault, szKluczVault, "1 0 0 0 0 0");
  415.  
  416. formatex(szKluczVault, 127, "%d-3-DaneKlanow", g_iIloscKlanow);
  417. get_user_name(id, szNick, 31);
  418. nvault_set(g_iVault, szKluczVault, szNick);
  419.  
  420. formatex(szKluczVault, 127, "%d-4-DaneKlanow", g_iIloscKlanow);
  421. nvault_set(g_iVault, szKluczVault, "^"^" ^"^" ^"^" ^"^" ^"^" ^"^" ^"^" ^"^" ^"^" ^"^" ^"^" ^"^" ^"^" ^"^" ^"^" ");
  422.  
  423. formatex(szKluczVault, 127, "%s-DaneGracza", szNick);
  424. formatex(szDaneVault, 31, "%d 1", g_iIloscKlanow);
  425. nvault_set(g_iVault, szKluczVault, szDaneVault);
  426.  
  427. g_iIdAktywnegoKlanuGracza[id] = g_iIloscAktywnychKlanow;
  428. g_bCzyWlascicielKlanu[id] = true;
  429.  
  430. g_iAktywnyKlan[g_iIloscAktywnychKlanow] = g_iIloscKlanow;
  431. g_iPoziomAktywnegoKlanu[g_iIloscAktywnychKlanow] = 1;
  432. g_iDoswiadczenieAktywnegoKlanu[g_iIloscAktywnychKlanow] = 0;
  433. g_iPunktyAktywnegoKlanu[g_iIloscAktywnychKlanow][DO_ROZDANIA] = 0;
  434. g_iPunktyAktywnegoKlanu[g_iIloscAktywnychKlanow][XP] = 0;
  435. g_iPunktyAktywnegoKlanu[g_iIloscAktywnychKlanow][KRYTYK] = 0;
  436. g_iPunktyAktywnegoKlanu[g_iIloscAktywnychKlanow][BOGACTWO] = 0;
  437. g_iIloscCzlonkowAktywnegoKlanu[g_iIloscAktywnychKlanow] = 0;
  438. copy(g_szNazwaAktywnegoKlanu[g_iIloscAktywnychKlanow], 31, szNazwaKlanu);
  439. copy(g_szWlascicielAktywnegoKlanu[g_iIloscAktywnychKlanow], 31, szNick);
  440. for(new i = 1; i <= LIMIT_CZLONKOW; i++)
  441. copy(g_szCzlonekAktywnegoKlanu[g_iIloscAktywnychKlanow][i], 31, "");
  442.  
  443. #if defined WYMAGANA_ILOSC_MONET
  444. cod_set_user_coins(id, cod_get_user_coins(id) - 500);
  445. #endif
  446. PrintMsg(id, "Klan^x03 %s^x01 zostal stworzony!", szNazwaKlanu);
  447.  
  448. return PLUGIN_HANDLED;
  449. }
  450.  
  451. public RozwiazKlan(id)
  452. {
  453. if(!g_iIdAktywnegoKlanuGracza[id])
  454. {
  455. PrintMsg(id, "Nie jestes w zadnym klanie!");
  456. return PLUGIN_CONTINUE;
  457. }
  458.  
  459. if(!g_bCzyWlascicielKlanu[id])
  460. {
  461. PrintMsg(id, "Dostep to tej funkcji ma tylko wlasciciel klanu!");
  462. return PLUGIN_CONTINUE;
  463. }
  464.  
  465. new iMenu = menu_create("Czy jestes pewny ze chcesz rozwiazac swoj klan?", "RozwiazKlan_Handler");
  466.  
  467. menu_additem(iMenu, "Tak");
  468. menu_additem(iMenu, "Nie");
  469.  
  470. menu_setprop(iMenu, MPROP_BACKNAME, "Powrot");
  471. menu_setprop(iMenu, MPROP_NEXTNAME, "Dalej");
  472. menu_setprop(iMenu, MPROP_EXITNAME, "Wyjscie");
  473.  
  474. menu_display(id, iMenu);
  475. return PLUGIN_CONTINUE;
  476. }
  477.  
  478. public RozwiazKlan_Handler(id, iMenu, iItem)
  479. {
  480. menu_destroy(iMenu);
  481.  
  482. if(iItem == 0)
  483. {
  484. new iIdAktKlanu = g_iIdAktywnegoKlanuGracza[id];
  485.  
  486. if(!iIdAktKlanu || !g_bCzyWlascicielKlanu[id])
  487. {
  488. PrintMsg(id, "Wystapil blad.");
  489. return PLUGIN_CONTINUE;
  490. }
  491.  
  492. new szKluczVault[128], szDaneVault[36*LIMIT_CZLONKOW], szCzlonek[LIMIT_CZLONKOW+1][32];
  493. new iIdKlanu = g_iAktywnyKlan[iIdAktKlanu];
  494.  
  495. formatex(szKluczVault, 127, "%d-1-DaneKlanow", iIdKlanu);
  496. nvault_remove(g_iVault ,szKluczVault);
  497. formatex(szKluczVault, 127, "%d-2-DaneKlanow", iIdKlanu);
  498. nvault_remove(g_iVault ,szKluczVault);
  499. formatex(szKluczVault, 127, "%d-3-DaneKlanow", iIdKlanu);
  500. nvault_remove(g_iVault ,szKluczVault);
  501. formatex(szKluczVault, 127, "%d-4-DaneKlanow", iIdKlanu);
  502. nvault_remove(g_iVault ,szKluczVault);
  503.  
  504. for(new i = 1; i <= g_iIloscCzlonkowAktywnegoKlanu[iIdAktKlanu]; i++)
  505. {
  506. formatex(szKluczVault, 127, "%s-DaneGracza", g_szCzlonekAktywnegoKlanu[iIdAktKlanu][i]);
  507. nvault_remove(g_iVault, szKluczVault);
  508. }
  509.  
  510. for(new i = 1; i <= g_iIloscSlotow; i++)
  511. if(g_iIdAktywnegoKlanuGracza[i] == iIdAktKlanu)
  512. g_iIdAktywnegoKlanuGracza[i] = 0;
  513.  
  514. for(new i = iIdKlanu + 1; i <= g_iIloscKlanow; i++)
  515. {
  516. formatex(szKluczVault, 127, "%d-1-DaneKlanow", i);
  517. nvault_get(g_iVault ,szKluczVault, szDaneVault, 36*LIMIT_CZLONKOW-1);
  518. nvault_remove(g_iVault, szKluczVault);
  519. formatex(szKluczVault, 127, "%d-1-DaneKlanow", i-1);
  520. nvault_set(g_iVault, szKluczVault, szDaneVault);
  521. formatex(szKluczVault, 127, "%d-2-DaneKlanow", i);
  522. nvault_get(g_iVault ,szKluczVault, szDaneVault, 36*LIMIT_CZLONKOW-1);
  523. nvault_remove(g_iVault, szKluczVault);
  524. formatex(szKluczVault, 127, "%d-2-DaneKlanow", i-1);
  525. nvault_set(g_iVault, szKluczVault, szDaneVault);
  526. formatex(szKluczVault, 127, "%d-3-DaneKlanow", i);
  527. nvault_get(g_iVault ,szKluczVault, szDaneVault, 36*LIMIT_CZLONKOW-1);
  528. nvault_remove(g_iVault, szKluczVault);
  529. formatex(szKluczVault, 127, "%d-3-DaneKlanow", i-1);
  530. nvault_set(g_iVault, szKluczVault, szDaneVault);
  531. formatex(szKluczVault, 127, "%s-DaneGracza", szDaneVault);
  532. formatex(szDaneVault, 36 * LIMIT_CZLONKOW - 1, "%d 1", i-1);
  533. nvault_set(g_iVault, szKluczVault, szDaneVault);
  534. formatex(szKluczVault, 127, "%d-4-DaneKlanow", i);
  535. nvault_get(g_iVault ,szKluczVault, szDaneVault, 36*LIMIT_CZLONKOW-1);
  536. nvault_remove(g_iVault, szKluczVault);
  537. formatex(szKluczVault, 127, "%d-4-DaneKlanow", i-1);
  538. nvault_set(g_iVault, szKluczVault, szDaneVault);
  539. parse(szDaneVault, szCzlonek[1], 31, szCzlonek[2], 31, szCzlonek[3], 31, szCzlonek[4], 31,
  540. szCzlonek[5], 31, szCzlonek[6], 31, szCzlonek[7], 31, szCzlonek[8], 31,
  541. szCzlonek[9], 31, szCzlonek[10], 31, szCzlonek[11], 31, szCzlonek[12], 31,
  542. szCzlonek[13], 31, szCzlonek[14], 31, szCzlonek[15], 31);
  543. for(new j = 1; j <= LIMIT_CZLONKOW; j++)
  544. {
  545. if(!szCzlonek[i][0])
  546. break;
  547.  
  548. formatex(szKluczVault, 127, "%s-DaneGracza", szCzlonek[j]);
  549. formatex(szDaneVault, 36 * LIMIT_CZLONKOW - 1, "%d 0", i-1);
  550. nvault_set(g_iVault, szKluczVault, szDaneVault);
  551. }
  552. }
  553.  
  554.  
  555. for(new i = iIdAktKlanu + 1; i <= g_iIloscAktywnychKlanow; i++)
  556. {
  557. g_iAktywnyKlan[i-1] = g_iAktywnyKlan[i];
  558. copy(g_szNazwaAktywnegoKlanu[i-1], 31, g_szNazwaAktywnegoKlanu[i]);
  559. copy(g_szWlascicielAktywnegoKlanu[i-1], 31, g_szWlascicielAktywnegoKlanu[i]);
  560. g_iPoziomAktywnegoKlanu[i-1] = g_iPoziomAktywnegoKlanu[i];
  561. g_iDoswiadczenieAktywnegoKlanu[i-1] = g_iPoziomAktywnegoKlanu[i];
  562. g_iPunktyAktywnegoKlanu[i-1][DO_ROZDANIA] = g_iPunktyAktywnegoKlanu[i][DO_ROZDANIA];
  563. g_iPunktyAktywnegoKlanu[i-1][XP] = g_iPunktyAktywnegoKlanu[i][XP];
  564. g_iPunktyAktywnegoKlanu[i-1][KRYTYK] = g_iPunktyAktywnegoKlanu[i][KRYTYK];
  565. g_iPunktyAktywnegoKlanu[i-1][BOGACTWO] = g_iPunktyAktywnegoKlanu[i][BOGACTWO];
  566. g_iIloscCzlonkowAktywnegoKlanu[i-1] = g_iIloscCzlonkowAktywnegoKlanu[i];
  567. for(new j = 1; j <= g_iIloscCzlonkowAktywnegoKlanu[i]; j++)
  568. copy(g_szCzlonekAktywnegoKlanu[i-1][j], 31, g_szCzlonekAktywnegoKlanu[i][j]);
  569.  
  570. for(new j = 1; j <= g_iIloscSlotow; j++)
  571. if(g_iIdAktywnegoKlanuGracza[j] == i)
  572. g_iIdAktywnegoKlanuGracza[j] = i - 1;
  573. }
  574.  
  575. formatex(szKluczVault, 127, "%s-DaneGracza", g_szNickGracza[id]);
  576. nvault_remove(g_iVault, szKluczVault);
  577.  
  578. g_iIloscKlanow --;
  579. g_iIloscAktywnychKlanow --;
  580. g_iIdAktywnegoKlanuGracza[id] = 0;
  581. g_bCzyWlascicielKlanu[id] = false;
  582.  
  583. PrintMsg(id, "Klan zostal rozwiazany.");
  584. }
  585.  
  586. return PLUGIN_CONTINUE;
  587. }
  588.  
  589. public WyjdzZKlanu(id)
  590. {
  591. if(!g_iIdAktywnegoKlanuGracza[id])
  592. {
  593. PrintMsg(id, "Nie jestes w zadnym klanie!");
  594. return PLUGIN_CONTINUE;
  595. }
  596.  
  597. if(g_bCzyWlascicielKlanu[id])
  598. {
  599. PrintMsg(id, "Jako wlasciciel klanu nie mozesz go opuscic, jedynie zniszczyc.");
  600. return PLUGIN_CONTINUE;
  601. }
  602.  
  603. new iMenu = menu_create("Czy jestes pewny ze chcesz opuscic klan?", "WyjdzZKlanu_Handler");
  604.  
  605. menu_additem(iMenu, "Tak");
  606. menu_additem(iMenu, "Nie");
  607.  
  608. menu_setprop(iMenu, MPROP_BACKNAME, "Powrot");
  609. menu_setprop(iMenu, MPROP_NEXTNAME, "Dalej");
  610. menu_setprop(iMenu, MPROP_EXITNAME, "Wyjscie");
  611.  
  612. menu_display(id, iMenu);
  613. return PLUGIN_CONTINUE;
  614. }
  615.  
  616. public WyjdzZKlanu_Handler(id, iMenu, iItem)
  617. {
  618. menu_destroy(iMenu);
  619.  
  620. if(!g_iIdAktywnegoKlanuGracza[id])
  621. return PLUGIN_CONTINUE;
  622.  
  623. if(iItem == 0)
  624. {
  625. new szKluczVault[128];
  626. new iIdAktKlanu = g_iIdAktywnegoKlanuGracza[id];
  627. new iTarget;
  628.  
  629. formatex(szKluczVault, 127, "%s-DaneGracza", g_szNickGracza[id]);
  630. nvault_remove(g_iVault, szKluczVault);
  631.  
  632. for(new i = 1; i <= g_iIloscCzlonkowAktywnegoKlanu[iIdAktKlanu]; i++)
  633. {
  634. if(equal(g_szCzlonekAktywnegoKlanu[iIdAktKlanu][i], g_szNickGracza[id]))
  635. {
  636. iTarget = i;
  637. break;
  638. }
  639. }
  640.  
  641. for(new i = iTarget + 1; i <= g_iIloscCzlonkowAktywnegoKlanu[iIdAktKlanu]; i++)
  642. copy(g_szCzlonekAktywnegoKlanu[iIdAktKlanu][i-1], 31, g_szCzlonekAktywnegoKlanu[iIdAktKlanu][i]);
  643.  
  644. g_iIloscCzlonkowAktywnegoKlanu[iIdAktKlanu] --;
  645.  
  646. g_iIdAktywnegoKlanuGracza[id] = 0;
  647. PrintMsg(id, "Wyszedles z klanu.");
  648. }
  649.  
  650. return PLUGIN_CONTINUE;
  651. }
  652.  
  653. public DodajCzlonkowDoKlanu(id)
  654. {
  655. if(!g_iIdAktywnegoKlanuGracza[id])
  656. {
  657. PrintMsg(id, "Nie jestes w zadnym klanie!");
  658. return PLUGIN_CONTINUE;
  659. }
  660.  
  661. if(!g_bCzyWlascicielKlanu[id])
  662. {
  663. PrintMsg(id, "Dostep do tej funkcji ma tylko wlasciciel klanu.");
  664. return PLUGIN_CONTINUE;
  665. }
  666.  
  667. if(g_iIloscCzlonkowAktywnegoKlanu[g_iIdAktywnegoKlanuGracza[id]] >= LIMIT_CZLONKOW)
  668. {
  669. PrintMsg(id, "Klan osiagnal juz maksymalna liczbe czlonkow.");
  670. return PLUGIN_CONTINUE;
  671. }
  672.  
  673. new szNick[32], szId[4];
  674. new iMenu = menu_create("Kogo chcesz dodac do klanu?", "DodajCzlonkowDoKlanu_Handler");
  675.  
  676. for(new i = 1; i <= g_iIloscSlotow; i++)
  677. {
  678. if(!is_user_connected(i) || g_iIdAktywnegoKlanuGracza[i])
  679. continue;
  680.  
  681. num_to_str(i, szId, 3);
  682. get_user_name(i, szNick, 31);
  683.  
  684. menu_additem(iMenu, szNick, szId);
  685. }
  686.  
  687. if(!szId[0])
  688. {
  689. PrintMsg(id, "Nie znaleziono graczy na serwerze!");
  690. return PLUGIN_CONTINUE;
  691. }
  692.  
  693. menu_setprop(iMenu, MPROP_BACKNAME, "Powrot");
  694. menu_setprop(iMenu, MPROP_NEXTNAME, "Dalej");
  695. menu_setprop(iMenu, MPROP_EXITNAME, "Wyjscie");
  696.  
  697. menu_display(id, iMenu);
  698. return PLUGIN_CONTINUE;
  699. }
  700.  
  701. public DodajCzlonkowDoKlanu_Handler(id, iMenu, iItem)
  702. {
  703. if(iItem < 0)
  704. {
  705. if(iItem == MENU_EXIT)
  706. menu_destroy(iMenu);
  707.  
  708. return PLUGIN_CONTINUE;
  709. }
  710.  
  711. new iAccess, iCb, szId[4], szNick[32];
  712. menu_item_getinfo(iMenu, iItem, iAccess, szId, 3, szNick, 31, iCb);
  713. menu_destroy(iMenu);
  714.  
  715. new iTarget = str_to_num(szId);
  716.  
  717. if(!is_user_connected(iTarget))
  718. {
  719. PrintMsg(id, "Nie znaleziono tego gracza.");
  720. return PLUGIN_CONTINUE;
  721. }
  722.  
  723. if(g_iIdAktywnegoKlanuGracza[iTarget])
  724. {
  725. PrintMsg(id, "Ten gracz nalezy juz do jakiegos klanu.");
  726. return PLUGIN_CONTINUE;
  727. }
  728.  
  729. new szTytul[128];
  730.  
  731. g_iPytanieOdKlanuGracza[iTarget] = id;
  732. formatex(szTytul, 127, "Czy chcesz przejsc do klanu \r%s?", g_szNazwaAktywnegoKlanu[g_iIdAktywnegoKlanuGracza[id]]);
  733. new iMenu2 = menu_create(szTytul, "PotwierdzPrzejscie_Handler");
  734. menu_additem(iMenu2, "Tak");
  735. menu_additem(iMenu2, "Nie");
  736.  
  737. menu_setprop(iMenu2, MPROP_BACKNAME, "Powrot");
  738. menu_setprop(iMenu2, MPROP_NEXTNAME, "Dalej");
  739. menu_setprop(iMenu2, MPROP_EXITNAME, "Wyjscie");
  740. menu_display(iTarget, iMenu2);
  741.  
  742. PrintMsg(id, "Wyslano zaproszenie do gracza^x03 %s", szNick);
  743. return PLUGIN_CONTINUE;
  744. }
  745.  
  746. public PotwierdzPrzejscie_Handler(id, iMenu, iItem)
  747. {
  748. menu_destroy(iMenu);
  749.  
  750. if(iItem == 0)
  751. {
  752. new iZapraszajacy = g_iPytanieOdKlanuGracza[id];
  753.  
  754. if(!is_user_connected(iZapraszajacy))
  755. {
  756. PrintMsg(id, "Nie znaleziono gracza, ktory zaprosil Cie do klanu.");
  757. return PLUGIN_CONTINUE;
  758. }
  759.  
  760. //new szKluczVault[128], szDaneVault[16];
  761. //new iIdKlanu = g_iAktywnyKlan[g_iIdAktywnegoKlanuGracza[iZapraszajacy]];
  762. new iIdAktKlanu = g_iIdAktywnegoKlanuGracza[id] = g_iIdAktywnegoKlanuGracza[iZapraszajacy];
  763.  
  764. if(!iIdAktKlanu)
  765. {
  766. PrintMsg(id, "Klan do ktorego chciales dolaczyc zostal zniszczony.");
  767. return PLUGIN_CONTINUE;
  768. }
  769.  
  770. g_iIloscCzlonkowAktywnegoKlanu[iIdAktKlanu] ++;
  771. get_user_name(id, g_szCzlonekAktywnegoKlanu[iIdAktKlanu][g_iIloscCzlonkowAktywnegoKlanu[iIdAktKlanu]], 31);
  772.  
  773. /*formatex(szKluczVault, 127, "%s-DaneGracza", g_szCzlonekAktywnegoKlanu[iIdAktKlanu][g_iIloscCzlonkowAktywnegoKlanu[iIdAktKlanu]]);
  774. formatex(szDaneVault, 15, "%d 0", iIdKlanu);
  775. nvault_set(g_iVault, szKluczVault, szDaneVault);*/
  776.  
  777. PrintMsg(iZapraszajacy, "Gracz^x03 %s^x01 dolaczyl do klanu.", g_szCzlonekAktywnegoKlanu[iIdAktKlanu][g_iIloscCzlonkowAktywnegoKlanu[iIdAktKlanu]]);
  778. PrintMsg(id, "Dolaczyles do klanu^x03 %s", g_szNazwaAktywnegoKlanu[iIdAktKlanu]);
  779.  
  780. }
  781.  
  782. return PLUGIN_CONTINUE;
  783. }
  784.  
  785. public WyrzucCzlonkowZKlanu(id)
  786. {
  787. new iIdAktKlanu = g_iIdAktywnegoKlanuGracza[id];
  788.  
  789. if(!iIdAktKlanu)
  790. {
  791. PrintMsg(id, "Nie jestes w zadnym klanie!");
  792. return PLUGIN_CONTINUE;
  793. }
  794.  
  795. if(!g_bCzyWlascicielKlanu[id])
  796. {
  797. PrintMsg(id, "Dostep do tej funkcji ma tylko wlasciciel klanu.");
  798. return PLUGIN_CONTINUE;
  799. }
  800.  
  801. if(!g_iIloscCzlonkowAktywnegoKlanu[iIdAktKlanu])
  802. {
  803. PrintMsg(id, "Klan nie posiada zadnych czlonkow!");
  804. return PLUGIN_CONTINUE;
  805. }
  806.  
  807. new iMenu = menu_create("Kogo chcesz wyrzucic z klanu?", "WyrzucCzlonkowZKlanu_Handler");
  808.  
  809. for(new i = 1; i <= g_iIloscCzlonkowAktywnegoKlanu[iIdAktKlanu]; i++)
  810. menu_additem(iMenu, g_szCzlonekAktywnegoKlanu[iIdAktKlanu][i]);
  811.  
  812. menu_setprop(iMenu, MPROP_BACKNAME, "Powrot");
  813. menu_setprop(iMenu, MPROP_NEXTNAME, "Dalej");
  814. menu_setprop(iMenu, MPROP_EXITNAME, "Wyjscie");
  815.  
  816. menu_display(id, iMenu);
  817. return PLUGIN_CONTINUE;
  818. }
  819.  
  820. public WyrzucCzlonkowZKlanu_Handler(id, iMenu, iItem)
  821. {
  822. if(iItem < 0)
  823. {
  824. if(iItem == MENU_EXIT)
  825. menu_destroy(iMenu);
  826.  
  827. return PLUGIN_CONTINUE;
  828. }
  829.  
  830. new szKluczVault[128], szNick[32];
  831. new iIdAktKlanu = g_iIdAktywnegoKlanuGracza[id];
  832. new iTarget = iItem + 1;
  833.  
  834. copy(szNick, 31, g_szCzlonekAktywnegoKlanu[iIdAktKlanu][iTarget]);
  835. new iTargetId = get_user_index(szNick);
  836.  
  837. formatex(szKluczVault, 127, "%s-DaneGracza", szNick);
  838. nvault_remove(g_iVault, szKluczVault);
  839.  
  840. for(new i = iTarget + 1; i <= g_iIloscCzlonkowAktywnegoKlanu[iIdAktKlanu]; i++)
  841. copy(g_szCzlonekAktywnegoKlanu[iIdAktKlanu][i-1], 31, g_szCzlonekAktywnegoKlanu[iIdAktKlanu][i]);
  842.  
  843. g_iIloscCzlonkowAktywnegoKlanu[iIdAktKlanu] --;
  844.  
  845. if(iTargetId)
  846. {
  847. g_iIdAktywnegoKlanuGracza[iTargetId] = 0;
  848. PrintMsg(iTargetId, "Zostales wyrzucony z klanu^x03 %s", g_szNazwaAktywnegoKlanu[iIdAktKlanu]);
  849. }
  850.  
  851. PrintMsg(id, "Gracz^x03 %s^x01 zostal wyrzucony z klanu.", szNick);
  852. menu_destroy(iMenu);
  853. return PLUGIN_CONTINUE;
  854. }
  855.  
  856. public ZmienNazweKlanu(id)
  857. {
  858. if(!g_iIdAktywnegoKlanuGracza[id])
  859. {
  860. PrintMsg(id, "Nie jestes w zadnym klanie!");
  861. return PLUGIN_CONTINUE;
  862. }
  863.  
  864. if(!g_bCzyWlascicielKlanu[id])
  865. {
  866. PrintMsg(id, "Dostep do tej funkcji ma tylko wlasciciel klanu.");
  867. return PLUGIN_CONTINUE;
  868. }
  869.  
  870. client_cmd(id, "messagemode NowaNazwaKlanu");
  871. PrintMsg(id, "Wpisz nowa nazwe jaka ma posiadac twoj klan.");
  872. PrintMsg(id, "Limit to 32 znaki.");
  873.  
  874. return PLUGIN_CONTINUE;
  875. }
  876.  
  877. public cmd_ZmienilNazweKlanu(id)
  878. {
  879. new iIdAktKlanu = g_iIdAktywnegoKlanuGracza[id];
  880. if(!iIdAktKlanu || !g_bCzyWlascicielKlanu[id])
  881. {
  882. PrintMsg(id, "Wystapil blad.");
  883. return PLUGIN_CONTINUE;
  884. }
  885.  
  886. read_argv(1, g_szNazwaAktywnegoKlanu[iIdAktKlanu], 31);
  887. PrintMsg(id, "Nazwa klanu zostala zmieniona na^x03 %s", g_szNazwaAktywnegoKlanu[iIdAktKlanu]);
  888. return PLUGIN_HANDLED;
  889. }
  890.  
  891. public ZmienWlascicielaKlanu(id)
  892. {
  893. new iIdAktKlanu = g_iIdAktywnegoKlanuGracza[id];
  894.  
  895. if(!iIdAktKlanu)
  896. {
  897. PrintMsg(id, "Nie jestes w zadnym klanie!");
  898. return PLUGIN_CONTINUE;
  899. }
  900.  
  901. if(!g_bCzyWlascicielKlanu[id])
  902. {
  903. PrintMsg(id, "Dostep do tej funkcji ma tylko wlasciciel klanu.");
  904. return PLUGIN_CONTINUE;
  905. }
  906.  
  907. new iMenu = menu_create("Komu chcesz przekazac uprawnienia wlasciciela?", "ZmienWlascicielaKlanu_Handler");
  908.  
  909. for(new i = 1; i <= g_iIloscCzlonkowAktywnegoKlanu[iIdAktKlanu]; i++)
  910. menu_additem(iMenu, g_szCzlonekAktywnegoKlanu[iIdAktKlanu][i]);
  911.  
  912. menu_setprop(iMenu, MPROP_BACKNAME, "Powrot");
  913. menu_setprop(iMenu, MPROP_NEXTNAME, "Dalej");
  914. menu_setprop(iMenu, MPROP_EXITNAME, "Wyjscie");
  915.  
  916. menu_display(id, iMenu);
  917. return PLUGIN_CONTINUE;
  918. }
  919.  
  920. public ZmienWlascicielaKlanu_Handler(id, iMenu, iItem)
  921. {
  922. if(iItem < 0)
  923. {
  924. if(iItem == MENU_EXIT)
  925. menu_destroy(iMenu);
  926.  
  927. return PLUGIN_CONTINUE;
  928. }
  929.  
  930. new iIdAktKlanu = g_iIdAktywnegoKlanuGracza[id];
  931. new iTarget = iItem + 1;
  932. new iTargetId = get_user_index(g_szCzlonekAktywnegoKlanu[iIdAktKlanu][iTarget]);
  933.  
  934. copy(g_szWlascicielAktywnegoKlanu[iIdAktKlanu], 31, g_szCzlonekAktywnegoKlanu[iIdAktKlanu][iTarget]);
  935. get_user_name(id, g_szCzlonekAktywnegoKlanu[iIdAktKlanu][iTarget], 31);
  936.  
  937. if(iTargetId)
  938. {
  939. g_bCzyWlascicielKlanu[iTargetId] = true;
  940. PrintMsg(iTargetId, "Zostales mianowany na wlasciciela klanu! Gratulacje!");
  941. }
  942. else
  943. {
  944. new szKluczVault[128], szDaneVault[32];
  945. formatex(szKluczVault, 127, "%s-DaneGracza", g_szWlascicielAktywnegoKlanu[iIdAktKlanu]);
  946. formatex(szDaneVault, 31, "%d 1", g_iAktywnyKlan[iIdAktKlanu]);
  947. }
  948.  
  949. g_bCzyWlascicielKlanu[id] = false;
  950. PrintMsg(id, "Wlasciciel klanu trafil do^x03 %s", g_szWlascicielAktywnegoKlanu[iIdAktKlanu]);
  951.  
  952. menu_destroy(iMenu);
  953. return PLUGIN_CONTINUE;
  954. }
  955.  
  956. public PunktyKlanu(id)
  957. {
  958. new iIdAktKlanu = g_iIdAktywnegoKlanuGracza[id];
  959.  
  960. if(!iIdAktKlanu)
  961. {
  962. PrintMsg(id, "Nie jestes w zadnym klanie!");
  963. return PLUGIN_CONTINUE;
  964. }
  965.  
  966. new szItem[128];
  967.  
  968. formatex(szItem, 127, "Rozdaj \r%d\y punktow:", g_iPunktyAktywnegoKlanu[iIdAktKlanu][DO_ROZDANIA]);
  969. new iMenu = menu_create(szItem, "PunktyKlanu_Handler");
  970. formatex(szItem, 127, "Doswiadczenie \r[Dostajesz +%d doswiadczenia za fraga] \y[%.1f%%]", g_iPunktyAktywnegoKlanu[iIdAktKlanu][XP]*2, g_iPunktyAktywnegoKlanu[iIdAktKlanu][XP]/40.0);
  971. menu_additem(iMenu, szItem);
  972. formatex(szItem, 127, "Krytyk \r[Masz %.1f%% szans na zadanie krytycznego ataku] \y[%.1f%%]", g_iPunktyAktywnegoKlanu[iIdAktKlanu][KRYTYK]*0.375, g_iPunktyAktywnegoKlanu[iIdAktKlanu][KRYTYK]/40.0);
  973. menu_additem(iMenu, szItem);
  974. formatex(szItem, 127, "Bogactwo \r[Dostajesz +%d$ za fraga] \y[%.1f%%]", g_iPunktyAktywnegoKlanu[iIdAktKlanu][BOGACTWO]*10, g_iPunktyAktywnegoKlanu[iIdAktKlanu][BOGACTWO]/40.0);
  975. #if defined WYMAGANA_ILOSC_MONET
  976. formatex(szItem, 127, "Bogactwo \r[Dostajesz +%d$ oraz +%d monet za fraga] \y[%.1f%%]", g_iPunktyAktywnegoKlanu[iIdAktKlanu][BOGACTWO]*10, g_iPunktyAktywnegoKlanu[iIdAktKlanu][BOGACTWO]/10, g_iPunktyAktywnegoKlanu[iIdAktKlanu][BOGACTWO]/40.0);
  977. #endif
  978.  
  979. menu_additem(iMenu, szItem);
  980.  
  981. menu_setprop(iMenu, MPROP_BACKNAME, "Powrot");
  982. menu_setprop(iMenu, MPROP_NEXTNAME, "Dalej");
  983. menu_setprop(iMenu, MPROP_EXITNAME, "Wyjscie");
  984.  
  985. menu_display(id, iMenu);
  986. return PLUGIN_CONTINUE;
  987. }
  988.  
  989. public PunktyKlanu_Handler(id, iMenu, iItem)
  990. {
  991. if(iItem == MENU_EXIT)
  992. {
  993. menu_destroy(iMenu);
  994. return PLUGIN_CONTINUE;
  995. }
  996.  
  997. new iIdAktKlanu = g_iIdAktywnegoKlanuGracza[id];
  998.  
  999. menu_destroy(iMenu);
  1000.  
  1001. if(!iIdAktKlanu)
  1002. {
  1003. PrintMsg(id, "Wystapil blad.");
  1004. return PLUGIN_CONTINUE;
  1005. }
  1006.  
  1007. if(!g_bCzyWlascicielKlanu[id])
  1008. {
  1009. PrintMsg(id, "Rozdawac punkty moze tylko wlasciciel klanu.");
  1010. return PLUGIN_CONTINUE;
  1011. }
  1012.  
  1013. if(!g_iPunktyAktywnegoKlanu[iIdAktKlanu][DO_ROZDANIA])
  1014. {
  1015. PrintMsg(id, "Nie posiadasz punktow do rozdania.");
  1016. return PLUGIN_CONTINUE;
  1017. }
  1018.  
  1019. switch(iItem)
  1020. {
  1021. case 0:
  1022. {
  1023. if(g_iPunktyAktywnegoKlanu[iIdAktKlanu][XP] < 40)
  1024. {
  1025. g_iPunktyAktywnegoKlanu[iIdAktKlanu][DO_ROZDANIA] --;
  1026. g_iPunktyAktywnegoKlanu[iIdAktKlanu][XP] ++;
  1027. }
  1028. else
  1029. PrintMsg(id, "Osiagnieto limit statystyki^x03 Doswiadczenie");
  1030. }
  1031. case 1:
  1032. {
  1033. if(g_iPunktyAktywnegoKlanu[iIdAktKlanu][KRYTYK] < 40)
  1034. {
  1035. g_iPunktyAktywnegoKlanu[iIdAktKlanu][DO_ROZDANIA] --;
  1036. g_iPunktyAktywnegoKlanu[iIdAktKlanu][KRYTYK] ++;
  1037. }
  1038. else
  1039. PrintMsg(id, "Osiagnieto limit statystyki^x03 Krytyk");
  1040. }
  1041. case 2:
  1042. {
  1043. if(g_iPunktyAktywnegoKlanu[iIdAktKlanu][BOGACTWO] < 40)
  1044. {
  1045. g_iPunktyAktywnegoKlanu[iIdAktKlanu][DO_ROZDANIA] --;
  1046. g_iPunktyAktywnegoKlanu[iIdAktKlanu][BOGACTWO] ++;
  1047. }
  1048. else
  1049. PrintMsg(id, "Osiagnieto limit statystyki^x03 Bogactwo");
  1050. }
  1051. }
  1052.  
  1053. if(g_iPunktyAktywnegoKlanu[iIdAktKlanu][DO_ROZDANIA])
  1054. PunktyKlanu(id);
  1055.  
  1056. return PLUGIN_CONTINUE;
  1057. }
  1058.  
  1059. public ResetujPunktyKlanu(id)
  1060. {
  1061. new iIdAktKlanu = g_iIdAktywnegoKlanuGracza[id];
  1062.  
  1063. if(!iIdAktKlanu)
  1064. {
  1065. PrintMsg(id, "Nie jestes w zadnym klanie!");
  1066. return PLUGIN_CONTINUE;
  1067. }
  1068.  
  1069. if(!g_bCzyWlascicielKlanu[id])
  1070. {
  1071. PrintMsg(id, "Dostep do tej funkcji ma tylko wlasciciel klanu.");
  1072. return PLUGIN_CONTINUE;
  1073. }
  1074.  
  1075. g_iPunktyAktywnegoKlanu[iIdAktKlanu][DO_ROZDANIA] = (g_iPoziomAktywnegoKlanu[iIdAktKlanu] - 1) * 2;
  1076. for(new i = 1; i < 4; i++)
  1077. g_iPunktyAktywnegoKlanu[iIdAktKlanu][i] = 0;
  1078.  
  1079. PrintMsg(id, "Statystyki klanu zostaly zresetowane!");
  1080. return PLUGIN_CONTINUE;
  1081. }
  1082.  
  1083. public Top15Klanow(id)
  1084. {
  1085. show_motd(id, g_szTop15Motd, "Top 15 Klanow");
  1086. return PLUGIN_CONTINUE;
  1087. }
  1088.  
  1089. public InfoOKlanie(id)
  1090. {
  1091. PrintMsg(id, "Funkcja zostanie dodana wkrotce!");
  1092. return PLUGIN_CONTINUE;
  1093. }
  1094.  
  1095. stock FormatTop15()
  1096. {
  1097. new iDoswiadczenieRanku, iOstatniKlan, iRankowaneKlany, iMaxRank = (g_iIloscKlanow > 15) ? 15 : g_iIloscKlanow, iLen;
  1098. new szKluczVault[128], szDaneVault[256], szDane[6][8], szNazwaKlanu[32], szWlasciciel[32], iDoswiadczenie;
  1099. new iPoziom, iPunkty[3];
  1100.  
  1101. iLen = formatex(g_szTop15Motd, 2047, "<body bgcolor=#000000><font color=#FFB000><pre>");
  1102. iLen += formatex(g_szTop15Motd[iLen], 2047 - iLen, "%2s. %22.22s | %6s | %13s | %22.22s | %12s | %12s | %12s^n", "#", "Nazwa grupy", "Poziom", "Doswiadczenie", "Wlasciciel", "Pkt. XP", "Pkt. Krytyka", "Pkt. Bogactwa");
  1103.  
  1104. for(new i = 0; i <= iMaxRank-1; i++)
  1105. {
  1106. for(new j = 1; j <= g_iIloscKlanow; j++)
  1107. {
  1108. formatex(szKluczVault, 127, "%d-2-DaneKlanow", j);
  1109. nvault_get(g_iVault, szKluczVault, szDaneVault, 255);
  1110. parse(szDaneVault, szDane[0], 7, szDane[1], 7, szDane[2], 7, szDane[3], 7, szDane[4], 7, szDane[5], 7);
  1111. iDoswiadczenie = str_to_num(szDane[1]);
  1112.  
  1113. if(iDoswiadczenie >= iDoswiadczenieRanku)
  1114. {
  1115. if(!(iRankowaneKlany & (1<<j)))
  1116. {
  1117. iDoswiadczenieRanku = iDoswiadczenie;
  1118. iPoziom = str_to_num(szDane[0]);
  1119. iPunkty[0] = str_to_num(szDane[2]);
  1120. iPunkty[1] = str_to_num(szDane[3]);
  1121. iPunkty[2] = str_to_num(szDane[4]);
  1122. iOstatniKlan = j;
  1123. }
  1124. }
  1125. }
  1126.  
  1127. formatex(szKluczVault, 127, "%d-1-DaneKlanow", iOstatniKlan);
  1128. nvault_get(g_iVault, szKluczVault, szNazwaKlanu, 31);
  1129. formatex(szKluczVault, 127, "%d-3-DaneKlanow", iOstatniKlan);
  1130. nvault_get(g_iVault, szKluczVault, szWlasciciel, 31);
  1131.  
  1132. iLen += formatex(g_szTop15Motd[iLen], 2047 - iLen, "%2d. %22.22s | %6d | %13d | %22.22s | %12d | %12d | %12d^n", i + 1, szNazwaKlanu, iPoziom,
  1133. iDoswiadczenieRanku, szWlasciciel, iPunkty[0], iPunkty[1], iPunkty[2]);
  1134.  
  1135. iRankowaneKlany |= (1<<iOstatniKlan);
  1136. iDoswiadczenieRanku = 0;
  1137. }
  1138. }
  1139.  
  1140. stock PrintMsg(id, szText[], any:...)
  1141. {
  1142. new szOutPut[256];
  1143.  
  1144. vformat(szOutPut, 255, szText, 3);
  1145.  
  1146. ColorChat(id, GREEN, "[COD:KLANY]^x01 %s", szOutPut);
  1147.  
  1148. return 1;
  1149. }
  1150. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  1151. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
  1152. */
  1153.  
Add Comment
Please, Sign In to add comment