Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Wklejka 136689724630959 dodana przez pomocy4x45, 25.04.2013 14:40
Typ:


Silnik
136689724630959
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.
508.
509.
510.
511.
512.
513.
514.
515.
516.
517.
518.
519.
520.
521.
522.
523.
524.
525.
526.
527.
528.
529.
530.
531.
532.
533.
534.
535.
536.
537.
538.
539.
540.
541.
542.
543.
544.
545.
546.
547.
548.
549.
550.
551.
552.
553.
554.
555.
556.
557.
558.
559.
560.
561.
562.
563.
564.
565.
566.
567.
568.
569.
570.
571.
572.
573.
574.
575.
576.
577.
578.
579.
580.
581.
582.
583.
584.
585.
586.
587.
588.
589.
590.
591.
592.
593.
594.
595.
596.
597.
598.
599.
600.
601.
602.
603.
604.
605.
606.
607.
608.
609.
610.
611.
612.
613.
614.
615.
616.
617.
618.
619.
620.
621.
622.
623.
624.
625.
626.
627.
628.
629.
630.
631.
632.
633.
634.
635.
636.
637.
638.
639.
640.
641.
642.
643.
644.
645.
646.
647.
648.
649.
650.
651.
652.
653.
654.
655.
656.
657.
658.
659.
660.
661.
662.
663.
664.
665.
666.
667.
668.
669.
670.
671.
672.
673.
674.
675.
676.
677.
678.
679.
680.
681.
682.
683.
684.
685.
686.
687.
688.
689.
690.
691.
692.
693.
694.
695.
696.
697.
698.
699.
700.
701.
702.
703.
704.
705.
706.
707.
708.
709.
710.
711.
712.
713.
714.
715.
716.
717.
718.
719.
720.
721.
722.
723.
724.
725.
726.
727.
728.
729.
730.
731.
732.
733.
734.
735.
736.
737.
738.
739.
740.
741.
742.
743.
744.
745.
746.
747.
748.
749.
750.
751.
752.
753.
754.
755.
756.
757.
758.
759.
760.
761.
762.
763.
764.
765.
766.
767.
768.
769.
770.
771.
772.
773.
774.
775.
776.
777.
778.
779.
780.
781.
782.
783.
784.
785.
786.
787.
788.
789.
790.
791.
792.
793.
794.
795.
796.
797.
798.
799.
800.
801.
802.
803.
804.
805.
806.
807.
808.
809.
810.
811.
812.
813.
814.
815.
816.
817.
818.
819.
820.
821.
822.
823.
824.
825.
826.
827.
828.
829.
830.
831.
832.
833.
834.
835.
836.
837.
838.
839.
840.
841.
842.
843.
844.
845.
846.
847.
848.
849.
850.
851.
852.
853.
854.
855.
856.
857.
858.
859.
860.
861.
862.
863.
864.
865.
866.
867.
868.
869.
870.
871.
872.
873.
874.
875.
876.
877.
878.
879.
880.
881.
882.
883.
884.
885.
886.
887.
888.
889.
890.
891.
892.
893.
894.
895.
896.
897.
898.
899.
900.
901.
902.
903.
904.
905.
906.
907.
908.
909.
910.
911.
912.
913.
914.
915.
916.
917.
918.
919.
920.
921.
922.
923.
924.
925.
926.
927.
928.
929.
930.
931.
932.
933.
934.
935.
936.
937.
938.
939.
940.
941.
942.
943.
944.
945.
946.
947.
948.
949.
950.
951.
952.
953.
954.
955.
956.
957.
958.
959.
960.
961.
962.
963.
964.
965.
966.
967.
968.
969.
970.
971.
972.
973.
974.
975.
976.
977.
978.
979.
980.
981.
982.
983.
984.
985.
986.
987.
988.
989.
990.
991.
992.
993.
994.
995.
996.
997.
998.
999.
1000.
1001.
1002.
1003.
1004.
1005.
1006.
1007.
1008.
1009.
1010.
1011.
1012.
1013.
1014.
1015.
1016.
1017.
1018.
1019.
1020.
1021.
1022.
1023.
1024.
1025.
1026.
1027.
1028.
1029.
1030.
1031.
1032.
1033.
1034.
1035.
1036.
1037.
1038.
1039.
1040.
1041.
1042.
1043.
1044.
1045.
1046.
1047.
1048.
1049.
1050.
1051.
1052.
1053.
1054.
1055.
1056.
1057.
1058.
1059.
1060.
1061.
1062.
1063.
1064.
1065.
1066.
1067.
1068.
1069.
1070.
1071.
1072.
1073.
1074.
1075.
1076.
1077.
1078.
1079.
1080.
1081.
1082.
1083.
1084.
1085.
1086.
1087.
1088.
1089.
1090.
1091.
1092.
1093.
1094.
1095.
1096.
1097.
1098.
1099.
1100.
1101.
1102.
1103.
1104.
1105.
1106.
1107.
1108.
1109.
1110.
1111.
1112.
1113.
1114.
1115.
1116.
1117.
1118.
1119.
1120.
1121.
1122.
1123.
1124.
1125.
1126.
1127.
1128.
1129.
1130.
1131.
1132.
1133.
1134.
1135.
1136.
1137.
1138.
1139.
1140.
1141.
1142.
1143.
1144.
1145.
1146.
1147.
1148.
1149.
1150.
1151.
1152.
1153.
1154.
1155.
1156.
1157.
1158.
1159.
1160.
1161.
1162.
1163.
1164.
1165.
1166.
1167.
1168.
1169.
1170.
1171.
1172.
1173.
1174.
1175.
1176.
1177.
1178.
1179.
1180.
1181.
1182.
1183.
1184.
1185.
1186.
1187.
1188.
1189.
1190.
1191.
1192.
1193.
1194.
1195.
1196.
1197.
1198.
1199.
1200.
1201.
1202.
1203.
1204.
1205.
1206.
1207.
1208.
1209.
1210.
1211.
1212.
1213.
1214.
1215.
1216.
1217.
1218.
1219.
1220.
1221.
1222.
1223.
1224.
1225.
1226.
1227.
1228.
1229.
1230.
1231.
1232.
1233.
1234.
1235.
1236.
1237.
1238.
1239.
1240.
1241.
1242.
1243.
1244.
1245.
1246.
1247.
1248.
1249.
1250.
1251.
1252.
1253.
1254.
1255.
1256.
1257.
1258.
1259.
1260.
1261.
1262.
1263.
1264.
1265.
1266.
1267.
1268.
1269.
1270.
1271.
1272.
1273.
1274.
1275.
1276.
1277.
1278.
1279.
1280.
1281.
1282.
1283.
1284.
1285.
1286.
1287.
1288.
1289.
1290.
1291.
1292.
1293.
1294.
1295.
1296.
1297.
1298.
1299.
1300.
1301.
1302.
1303.
1304.
1305.
1306.
1307.
1308.
1309.
1310.
1311.
1312.
1313.
1314.
1315.
1316.
1317.
1318.
1319.
1320.
1321.
1322.
1323.
1324.
1325.
1326.
1327.
1328.
1329.
1330.
1331.
1332.
1333.
1334.
1335.
1336.
1337.
1338.
1339.
1340.
1341.
1342.
1343.
1344.
1345.
1346.
1347.
1348.
1349.
1350.
1351.
1352.
1353.
1354.
1355.
1356.
1357.
1358.
1359.
1360.
1361.
1362.
1363.
1364.
1365.
1366.
1367.
1368.
1369.
1370.
1371.
1372.
1373.
1374.
1375.
1376.
1377.
1378.
1379.
1380.
1381.
1382.
1383.
1384.
1385.
1386.
1387.
1388.
1389.
1390.
1391.
1392.
1393.
1394.
1395.
1396.
1397.
1398.
1399.
1400.
1401.
1402.
1403.
1404.
1405.
1406.
1407.
1408.
1409.
1410.
1411.
1412.
1413.
1414.
1415.
1416.
1417.
1418.
1419.
1420.
1421.
1422.
1423.
1424.
1425.
1426.
1427.
1428.
1429.
1430.
1431.
1432.
1433.
1434.
1435.
1436.
1437.
1438.
1439.
1440.
1441.
1442.
1443.
1444.
1445.
1446.
1447.
1448.
1449.
1450.
1451.
1452.
1453.
1454.
1455.
1456.
1457.
1458.
1459.
1460.
1461.
1462.
1463.
1464.
1465.
1466.
1467.
1468.
1469.
1470.
1471.
1472.
1473.
1474.
1475.
1476.
1477.
1478.
1479.
1480.
1481.
1482.
1483.
1484.
1485.
1486.
1487.
1488.
1489.
1490.
1491.
1492.
1493.
1494.
1495.
1496.
1497.
1498.
1499.
1500.
1501.
1502.
1503.
1504.
1505.
1506.
1507.
1508.
1509.
1510.
1511.
1512.
1513.
1514.
1515.
1516.
1517.
1518.
1519.
1520.
1521.
1522.
1523.
1524.
1525.
1526.
1527.
1528.
1529.
1530.
1531.
1532.
1533.
1534.
1535.
1536.
1537.
1538.
1539.
1540.
1541.
1542.
1543.
1544.
1545.
1546.
1547.
1548.
1549.
1550.
1551.
1552.
1553.
1554.
1555.
1556.
1557.
1558.
1559.
1560.
1561.
1562.
1563.
1564.
1565.
1566.
1567.
1568.
1569.
1570.
1571.
1572.
1573.
1574.
1575.
1576.
1577.
1578.
1579.
1580.
1581.
1582.
1583.
1584.
1585.
1586.
1587.
1588.
1589.
1590.
1591.
1592.
1593.
1594.
1595.
1596.
1597.
1598.
1599.
1600.
1601.
1602.
1603.
1604.
1605.
1606.
1607.
1608.
1609.
1610.
1611.
1612.
1613.
1614.
1615.
1616.
1617.
1618.
1619.
1620.
1621.
1622.
1623.
1624.
1625.
1626.
1627.
1628.
1629.
1630.
1631.
1632.
1633.
1634.
1635.
1636.
1637.
1638.
1639.
1640.
1641.
1642.
1643.
1644.
1645.
1646.
1647.
1648.
1649.
1650.
1651.
1652.
1653.
1654.
1655.
1656.
1657.
1658.
1659.
1660.
1661.
1662.
1663.
1664.
1665.
1666.
1667.
1668.
1669.
1670.
1671.
1672.
1673.
1674.
1675.
1676.
1677.
1678.
1679.
1680.
1681.
1682.
1683.
1684.
1685.
1686.
1687.
1688.
1689.
1690.
1691.
1692.
1693.
1694.
1695.
1696.
1697.
1698.
1699.
1700.
1701.
1702.
1703.
1704.
1705.
1706.
1707.
1708.
1709.
1710.
1711.
1712.
1713.
1714.
1715.
1716.
1717.
1718.
1719.
1720.
1721.
1722.
1723.
1724.
1725.
1726.
1727.
1728.
1729.
1730.
1731.
1732.
1733.
1734.
1735.
1736.
1737.
1738.
1739.
1740.
1741.
1742.
1743.
1744.
1745.
1746.
1747.
1748.
1749.
1750.
1751.
1752.
1753.
1754.
1755.
1756.
1757.
1758.
1759.
1760.
1761.
1762.
1763.
1764.
1765.
1766.
1767.
1768.
1769.
1770.
1771.
1772.
1773.
1774.
1775.
1776.
1777.
1778.
1779.
1780.
1781.
1782.
1783.
1784.
1785.
1786.
1787.
1788.
1789.
1790.
1791.
1792.
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <sqlx>
#include <csx>
#include <colorchat>
 
#define PLUGIN "Call of Duty: MW Mod"
#define VERSION "1.0-2"
#define AUTHOR "QTM_Peyote"
 
#define MAX_WIELKOSC_NAZWY 32
#define MAX_WIELKOSC_OPISU 256
#define MAX_ILOSC_PERKOW 120
#define MAX_ILOSC_KLAS 100
 
#define STANDARDOWA_SZYBKOSC 250.0
 
#define ZADANIE_POKAZ_INFORMACJE 672
#define ZADANIE_USTAW_SZYBKOSC 832
 
new const maxAmmo[31] = {0, 52, 0, 90, 1, 31, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 31, 90, 120,
 90, 2, 35, 90, 90,0, 100};
 
new MsgScreenfade;
 
new SyncHudObj, SyncHudObj2;
 
new cvar_doswiadczenie_za_zabojstwo,
     cvar_doswiadczenie_za_obrazenia,
     cvar_doswiadczenie_za_wygrana,
     cvar_typ_zapisu,
     cvar_limit_poziomu,
     cvar_proporcja_poziomu,
     cvar_blokada_broni;
 
 
new perk_zmieniony,
     klasa_zmieniona;
 
new nazwy_perkow[MAX_ILOSC_PERKOW+1][MAX_WIELKOSC_NAZWY+1],
     opisy_perkow[MAX_ILOSC_PERKOW+1][MAX_WIELKOSC_OPISU+1],
     max_wartosci_perkow[MAX_ILOSC_PERKOW+1],
     min_wartosci_perkow[MAX_ILOSC_PERKOW+1],
     pluginy_perkow[MAX_ILOSC_PERKOW+1],
     ilosc_perkow;
 
new nazwa_gracza[33][64],
     klasa_gracza[33],
     nowa_klasa_gracza[33],
     poziom_gracza[33],
     doswiadczenie_gracza[33],
     perk_gracza[33],
     wartosc_perku_gracza[33];
 
new Float:maksymalne_zdrowie_gracza[33],
     Float:szybkosc_gracza[33],
     Float:redukcja_obrazen_gracza[33];
 
new punkty_gracza[33],
     zdrowie_gracza[33],
     inteligencja_gracza[33],
     wytrzymalosc_gracza[33],
     kondycja_gracza[33];
 
new bool:gracz_ma_tarcze[33],
     bool:gracz_ma_noktowizor[33];     
 
new bonusowe_bronie_gracza[33],
     bonusowe_zdrowie_gracza[33],
     bonusowa_inteligencja_gracza[33],
     bonusowa_wytrzymalosc_gracza[33],
     bonusowa_kondycja_gracza[33];
 
new bronie_klasy[MAX_ILOSC_KLAS+1], 
     zdrowie_klas[MAX_ILOSC_KLAS+1],
     kondycja_klas[MAX_ILOSC_KLAS+1], 
     inteligencja_klas[MAX_ILOSC_KLAS+1], 
     wytrzymalosc_klas[MAX_ILOSC_KLAS+1],
     nazwy_klas[MAX_ILOSC_KLAS+1][MAX_WIELKOSC_NAZWY+1],
     opisy_klas[MAX_ILOSC_KLAS+1][MAX_WIELKOSC_OPISU+1],
     pluginy_klas[MAX_ILOSC_KLAS+1],
     ilosc_klas;
 
new bronie_druzyny[] = {0, 0, 0},
     bronie_dozwolone = 1<<CSW_KNIFE | 1<<CSW_C4;
 
new bool:freezetime = true;
 
new licznik_zabiccod[33];
new weaponname[22];
new min_lvl = 0;
new Float:procent = 0.10; // liczba 0.20 oznacza 20 % max lvl'u. Dajac 0.5 damy 50 % a 1.0 - 100 % lvlu
 
new lvl_klasy_gracza[33][sizeof nazwy_klas];
new xp_klasy_gracza[33][sizeof nazwy_klas];
new int_klasy_gracza[33][sizeof nazwy_klas];
new zdr_klasy_gracza[33][sizeof nazwy_klas];
new wyt_klasy_gracza[33][sizeof nazwy_klas];
new kon_klasy_gracza[33][sizeof nazwy_klas];
 
new polaczony_raz[33], wczytane_dane[33];
new Handle:info
 
public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
 
	cvar_doswiadczenie_za_zabojstwo = register_cvar("cod_killxp", "10");
	cvar_doswiadczenie_za_obrazenia = register_cvar("cod_damagexp", "1"); // ilosc doswiadczenia za 20 obrazen 
	cvar_doswiadczenie_za_wygrana = register_cvar("cod_winxp", "50");
	cvar_typ_zapisu = register_cvar("cod_savetype", "2");  // 1-Nick; 2-SID dla Steam; 3-IP
	cvar_limit_poziomu = register_cvar("cod_maxlevel", "200"); 
	cvar_proporcja_poziomu = register_cvar("cod_levelratio", "35"); 
	cvar_blokada_broni = register_cvar("cod_weaponsblocking", "1"); 
 
	register_cvar("cod_host", "mody.wilan.pl");
	register_cvar("cod_user", "givera12");
	register_cvar("cod_pass", "szemkow20");
	register_cvar("cod_db", "givera126045");
	register_cvar("cod_table", "codmod_table");
 
	register_clcmd("say /klasa", "WybierzKlase");
	register_clcmd("say /class", "WybierzKlase");
	register_clcmd("say /klasy", "OpisKlasy");
	register_clcmd("say /classinfo", "OpisKlasy");
	register_clcmd("say /perk", "KomendaOpisPerku");
	register_clcmd("say /perki", "OpisPerkow");
	register_clcmd("say /perks", "OpisPerkow");
	register_clcmd("say /item", "Pomoc");
	register_clcmd("say /przedmiot", "OpisPerku");
	register_clcmd("say /dropp", "WyrzucPerk");
	register_clcmd("say /wyrzuc", "WyrzucPerk");
	register_clcmd("say /reset", "KomendaResetujPunkty");
	register_clcmd("say /statystyki", "PrzydzielPunkty");
	register_clcmd("say /skille", "statystyki_klasy");
	register_clcmd("say /staty", "statystyki_klasy");
	register_clcmd("say /vip","ShowMotd")
	register_clcmd("say /pomoc", "Pomoc");
	register_clcmd("useperk", "UzyjPerku");
	register_clcmd("radio3", "UzyjPerku");
	register_clcmd("fullupdate", "BlokujKomende");
 
	register_menucmd(register_menuid("Klasa:"), 1023, "OpisKlasy");
 
	RegisterHam(Ham_TakeDamage, "player", "Obrazenia");
	RegisterHam(Ham_TakeDamage, "player", "ObrazeniaPost", 1);
	RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);
	RegisterHam(Ham_Killed, "player", "SmiercGraczaPost", 1);
 
	RegisterHam(Ham_Touch, "armoury_entity", "DotykBroni");
	RegisterHam(Ham_Touch, "weapon_shield", "DotykTarczy");
	RegisterHam(Ham_Touch, "weaponbox", "DotykBroni");
 
	register_forward(FM_CmdStart, "CmdStart");
	register_forward(FM_EmitSound, "EmitSound");
 
 
	register_logevent("PoczatekRundy", 2, "1=Round_Start"); 
 
	register_event("SendAudio", "WygranaTerro" , "a", "2&%!MRAD_terwin");
	register_event("SendAudio", "WygranaCT", "a", "2&%!MRAD_ctwin");
	register_event("CurWeapon","CurWeapon","be", "1=1");
	register_event("HLTV", "NowaRunda", "a", "1=0", "2=0");
	register_event("DeathMsg", "SmiercGraczaKillCod", "a");
 
	MsgScreenfade = get_user_msgid("ScreenFade");
 
	SyncHudObj = CreateHudSyncObj();
	SyncHudObj2 = CreateHudSyncObj();
 
	perk_zmieniony = CreateMultiForward("cod_perk_changed", ET_CONTINUE, FP_CELL, FP_CELL, FP_CELL);
	klasa_zmieniona = CreateMultiForward("cod_class_changed", ET_CONTINUE, FP_CELL, FP_CELL);
 
	copy(nazwy_perkow[0], MAX_WIELKOSC_NAZWY, "Brak");
	copy(opisy_perkow[0], MAX_WIELKOSC_OPISU, "Zabij kogos, aby otrzymac przedmiot");
	copy(nazwy_klas[0], MAX_WIELKOSC_NAZWY, "Brak");
}		
 
public plugin_cfg() 
{	
	new lokalizacja_cfg[33];
	get_configsdir(lokalizacja_cfg, charsmax(lokalizacja_cfg));
	server_cmd("exec %s/codmod.cfg", lokalizacja_cfg);
	server_exec();
 
	new Host[64], User[64], Pass[64], DB[64], Table[32];
 
	get_cvar_string("cod_host", Host, 63);
	get_cvar_string("cod_user", User, 63);
	get_cvar_string("cod_pass", Pass, 63);
	get_cvar_string("cod_db", DB, 63);
	get_cvar_string("cod_table", Table, 31);
 
	info = SQL_MakeDbTuple(Host, User, Pass, DB);
	if(info == Empty_Handle){
		set_fail_state("Brak polaczenia z baza danych!");
		return;
	}
 
	new szTemp[1028], iLen = 0
	iLen += formatex(szTemp[iLen], charsmax(szTemp)-iLen, "CREATE TABLE IF NOT EXISTS `%s` (`nick` VARCHAR(64)", Table);
 
	for(new i=1; i<= ilosc_klas; i++)
		iLen += formatex(szTemp[iLen], charsmax(szTemp)-iLen, ", `%i` VARCHAR(32)", i);
 
	iLen += copy(szTemp[iLen], charsmax(szTemp)-iLen, ")");
 
	SQL_ThreadQuery(info, "IgnoreHandle", szTemp);
}
 
public plugin_precache()
{	
	precache_sound("QTM_CodMod/select.wav");
	precache_sound("QTM_CodMod/start.wav");
	precache_sound("QTM_CodMod/start2.wav");
	precache_sound("QTM_CodMod/levelup.wav");
}
 
public plugin_natives()
{
	register_native("cod_set_user_xp", "UstawDoswiadczenie", 1);
	register_native("cod_set_user_class", "UstawKlase", 1);
	register_native("cod_set_user_perk", "UstawPerk", 1);
	register_native("cod_set_user_bonus_health", "UstawBonusoweZdrowie", 1);
	register_native("cod_set_user_bonus_intelligence", "UstawBonusowaInteligencje", 1);
	register_native("cod_set_user_bonus_trim", "UstawBonusowaKondycje", 1);
	register_native("cod_set_user_bonus_stamina", "UstawBonusowaWytrzymalosc", 1);
 
	register_native("cod_points_to_health", "PrzydzielZdrowie", 1);	
	register_native("cod_points_to_intelligence", "PrzydzielInteligencje", 1);	
	register_native("cod_points_to_trim", "PrzydzielKondycje", 1);	
	register_native("cod_points_to_stamina", "PrzydzielWytrzymalosc", 1);	
 
	register_native("cod_get_user_xp", "PobierzDoswiadczenie", 1);
	register_native("cod_get_user_level", "PobierzPoziom", 1);
	register_native("cod_get_user_points", "PobierzPunkty", 1);
	register_native("cod_get_user_class", "PobierzKlase", 1);
	register_native("cod_get_user_perk", "PobierzPerk", 1);
	register_native("cod_get_user_health", "PobierzZdrowie", 1);
	register_native("cod_get_user_intelligence", "PobierzInteligencje", 1);
	register_native("cod_get_user_trim", "PobierzKondycje", 1);
	register_native("cod_get_user_stamina", "PobierzWytrzymalosc", 1);
 
	register_native("cod_get_level_xp", "PobierzDoswiadczeniePoziomu", 1);
 
	register_native("cod_get_perkid", "PobierzPerkPrzezNazwe", 1);
	register_native("cod_get_perks_num", "PobierzIloscPerkow", 1);
	register_native("cod_get_perk_name", "PobierzNazwePerku", 1);
	register_native("cod_get_perk_desc", "PobierzOpisPerku", 1);
 
	register_native("cod_get_classid", "PobierzKlasePrzezNazwe", 1);
	register_native("cod_get_classes_num", "PobierzIloscKlas", 1);
	register_native("cod_get_class_name", "PobierzNazweKlasy", 1);
	register_native("cod_get_class_desc", "PobierzOpisKlasy", 1);
 
	register_native("cod_get_class_health", "PobierzZdrowieKlasy", 1);
	register_native("cod_get_class_intelligence", "PobierzInteligencjeKlasy", 1);
	register_native("cod_get_class_trim", "PobierzKondycjeKlasy", 1);
	register_native("cod_get_class_stamina", "PobierzWytrzymaloscKlasy", 1);
 
	register_native("cod_give_weapon", "DajBron", 1);
	register_native("cod_take_weapon", "WezBron", 1);
	register_native("cod_set_user_shield", "UstawTarcze", 1);
	register_native("cod_set_user_nightvision", "UstawNoktowizor", 1);
 
	register_native("cod_inflict_damage", "ZadajObrazenia", 1);
 
	register_native("cod_register_perk", "ZarejestrujPerk");
	register_native("cod_register_class", "ZarejestrujKlase");
}
 
public CmdStart(id, uc_handle)
{		
	if(!is_user_alive(id))
		return FMRES_IGNORED;
 
	new Float: velocity[3];
	pev(id, pev_velocity, velocity);
	new Float: speed = vector_length(velocity);
	if(szybkosc_gracza[id] > speed*1.8)
		set_pev(id, pev_flTimeStepSound, 300);
 
	return FMRES_IGNORED;
}
 
public Odrodzenie(id)
{	
	if(!task_exists(id+ZADANIE_POKAZ_INFORMACJE))
		set_task(0.1, "PokazInformacje", id+ZADANIE_POKAZ_INFORMACJE, _, _, "b");
 
	if(nowa_klasa_gracza[id])
		UstawNowaKlase(id);
 
	if(!klasa_gracza[id])
	{
		WybierzKlase(id);
		return PLUGIN_CONTINUE;
	}
 
	DajBronie(id);
	ZastosujAtrybuty(id);
 
	if(poziom_gracza[id] < min_lvl)
	{
  	ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Wykrylem duze problemy z balansem lvli na serwerze");
  	ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 W ramach tego dostales ^x04%i^x01 na start",min_lvl);
  	UstawDoswiadczenie(id,PobierzDoswiadczeniePoziomu(min_lvl)+1);
  	poziom_gracza[id] = min_lvl;
  	SprawdzPoziom(id);
	}
 
	if(punkty_gracza[id] > 0)
		PrzydzielPunkty(id);
 
	return PLUGIN_CONTINUE;
}
 
public UstawNowaKlase(id)
{
	new ret;
 
	new forward_handle = CreateOneForward(pluginy_klas[klasa_gracza[id]], "cod_class_disabled", FP_CELL, FP_CELL);
	ExecuteForward(forward_handle, ret, id, klasa_gracza[id]);
	DestroyForward(forward_handle);
 
	forward_handle = CreateOneForward(pluginy_klas[nowa_klasa_gracza[id]], "cod_class_enabled", FP_CELL, FP_CELL);
	ExecuteForward(forward_handle, ret, id, nowa_klasa_gracza[id]);
	DestroyForward(forward_handle);
 
 
	if(ret == 4)	
	{
		klasa_gracza[id] = 0;
		return PLUGIN_CONTINUE;
	}
 
	ExecuteForward(klasa_zmieniona, ret, id, klasa_gracza[id]);
 
	if(ret == 4)	
	{
		klasa_gracza[id] = 0;
		return PLUGIN_CONTINUE;
	}
 
	klasa_gracza[id] = nowa_klasa_gracza[id];
	nowa_klasa_gracza[id] = 0;
 
	WczytajDane(id, klasa_gracza[id]);
	UstawPerk(id, 0, 0, 0);
	return PLUGIN_CONTINUE;
}
 
public DajBronie(id)
{
	for(new i=1; i < 32; i++)
	{
		if((1<<i) & (bronie_klasy[klasa_gracza[id]] | bonusowe_bronie_gracza[id]))
		{
			new weaponname[22];
			get_weaponname(i, weaponname, 21);
			fm_give_item(id, weaponname);
		}
	}
 
	if(gracz_ma_tarcze[id])
		fm_give_item(id, "weapon_shield");
 
	if(gracz_ma_noktowizor[id])
		cs_set_user_nvg(id, 1);
 
	new weapons[32];
	new weaponsnum;
	get_user_weapons(id, weapons, weaponsnum);
	for(new i=0; i<weaponsnum; i++)
		if(is_user_alive(id))
			if(maxAmmo[weapons[i]] > 0)
				cs_set_user_bpammo(id, weapons[i], maxAmmo[weapons[i]]);
}
 
public ZastosujAtrybuty(id)
{
	redukcja_obrazen_gracza[id] = 0.7*(1.0-floatpower(1.1, -0.112311341*PobierzWytrzymalosc(id, 1, 1, 1)));
 
	maksymalne_zdrowie_gracza[id] = 100.0+PobierzZdrowie(id, 1, 1, 1);
 
	szybkosc_gracza[id] = STANDARDOWA_SZYBKOSC+PobierzKondycje(id, 1, 1, 1)*1.3;
 
	set_pev(id, pev_health, maksymalne_zdrowie_gracza[id]);
}
 
public PoczatekRundy()	
{
	freezetime = false;
	for(new id=0;id<=32;id++)
	{
		if(!is_user_alive(id))
			continue;
 
		Display_Fade(id, 1<<9, 1<<9, 1<<12, 0, 255, 70, 100);
 
		set_task(0.1, "UstawSzybkosc", id+ZADANIE_USTAW_SZYBKOSC);
 
		switch(get_user_team(id))
		{
			case 1: client_cmd(id, "spk QTM_CodMod/start2");
			case 2: client_cmd(id, "spk QTM_CodMod/start");
		}
	}
}
 
public NowaRunda()
	freezetime = true;
 
public Obrazenia(this, idinflictor, idattacker, Float:damage, damagebits)
{
	if(!is_user_alive(idattacker))
		return HAM_IGNORED;
 
	if(get_user_team(this) == get_user_team(idattacker))
		return HAM_IGNORED;
 
	if(get_user_health(this) <= 1)
		return HAM_IGNORED;
 
	if(PobierzWytrzymalosc(this, 1, 1, 1) <= 0)
		return HAM_IGNORED;
 
	SetHamParamFloat(4, damage*(1.0-redukcja_obrazen_gracza[this]));
 
	return HAM_IGNORED;
}
 
public ObrazeniaPost(id, idinflictor, attacker, Float:damage, damagebits)
{
	if(!is_user_connected(attacker) || !klasa_gracza[attacker])
		return HAM_IGNORED;
 
	if(get_user_team(id) != get_user_team(attacker))
	{
		new doswiadczenie_za_obrazenia = get_pcvar_num(cvar_doswiadczenie_za_obrazenia);
		while(damage>20)
		{
			damage -= 20;
			doswiadczenie_gracza[attacker] += doswiadczenie_za_obrazenia;
		}
	}
	SprawdzPoziom(attacker);
	return HAM_IGNORED;
}
 
public SmiercGraczaPost(id, attacker, shouldgib)
{	
	if(!is_user_connected(attacker))
		return HAM_IGNORED;
 
	if(get_user_team(id) != get_user_team(attacker) && klasa_gracza[attacker])
	{
		new doswiadczenie_za_zabojstwo = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo);
		new nowe_doswiadczenie = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo);
 
		if(poziom_gracza[id] > poziom_gracza[attacker])
			nowe_doswiadczenie += (poziom_gracza[id]-poziom_gracza[attacker])*(doswiadczenie_za_zabojstwo/10);
 
		if(!perk_gracza[attacker])
			UstawPerk(attacker, -1, -1, 1);
		doswiadczenie_gracza[attacker] += nowe_doswiadczenie;
	}
 
	SprawdzPoziom(attacker);
 
	return HAM_IGNORED;
}
 
 
public client_authorized(id)
{
	UsunUmiejetnosci(id);
 
	wczytane_dane[id] = 0;
	polaczony_raz[id] = 0;
 
	for(new i=1 ;i<sizeof nazwy_klas; i++)
	{
		lvl_klasy_gracza[id][i] = 0;
		xp_klasy_gracza[id][i] = 0;
		int_klasy_gracza[id][i] = 0;
		zdr_klasy_gracza[id][i] = 0;
		wyt_klasy_gracza[id][i] = 0;
		kon_klasy_gracza[id][i] = 0;
	}
 
	get_user_name(id, nazwa_gracza[id], 63);
 
	UsunZadania(id);
}
 
public client_disconnect(id)
{
	ZapiszDane(id);
	UsunUmiejetnosci(id);
	UsunZadania(id);
}
 
public UsunUmiejetnosci(id)
{
	nowa_klasa_gracza[id] = 0;
	UstawNowaKlase(id);
	klasa_gracza[id] = 0;
	poziom_gracza[id] = 0;
	doswiadczenie_gracza[id] = 0;
	punkty_gracza[id] = 0;
	zdrowie_gracza[id] = 0;
	inteligencja_gracza[id] = 0;
	wytrzymalosc_gracza[id] = 0;
	kondycja_gracza[id] = 0;
	bonusowe_zdrowie_gracza[id] = 0;
	bonusowa_wytrzymalosc_gracza[id] = 0;
	bonusowa_inteligencja_gracza[id] = 0;
	bonusowa_kondycja_gracza[id] = 0;
	maksymalne_zdrowie_gracza[id] = 0.0;
	szybkosc_gracza[id] = 0.0;
	UstawPerk(id, 0, 0, 0);
}
 
public UsunZadania(id)
{
	remove_task(id+ZADANIE_POKAZ_INFORMACJE);
	remove_task(id+ZADANIE_USTAW_SZYBKOSC);
}
 
public WygranaTerro()
	WygranaRunda("TERRORIST");
 
public WygranaCT()
	WygranaRunda("CT");
 
public WygranaRunda(const Team[])
{
	new Players[32], playerCount, id;
	get_players(Players, playerCount, "aeh", Team);
	new doswiadczenie_za_wygrana = get_pcvar_num(cvar_doswiadczenie_za_wygrana);
 
	if(get_playersnum() < 3)
		return;
 
	for (new i=0; i<playerCount; i++) 
	{
		id = Players[i];
		if(!klasa_gracza[id])
			continue;
 
		doswiadczenie_gracza[id] += doswiadczenie_za_wygrana;
		ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Dostales ^x04%i^x01 doswiadczenia za wygrana runde.", doswiadczenie_za_wygrana);
		SprawdzPoziom(id);
	}
}
 
public KomendaOpisPerku(id)
	OpisPerku(id, perk_gracza[id], wartosc_perku_gracza[id]);
 
public OpisPerku(id, perk, wartosc)
{
	new opis_perku[MAX_WIELKOSC_OPISU];
	new losowa_wartosc[15];
	if(wartosc > -1)
		num_to_str(wartosc, losowa_wartosc, 14);
	else
		format(losowa_wartosc, charsmax(losowa_wartosc), "%i-%i", min_wartosci_perkow[perk], max_wartosci_perkow[perk]);
 
	format(opis_perku, charsmax(opis_perku), opisy_perkow[perk]);
	replace_all(opis_perku, charsmax(opis_perku), "LW", losowa_wartosc);
 
	ColorChat(id, GREEN, "^x01Perk: ^x04%s.", nazwy_perkow[perk]);
	ColorChat(id, GREEN, "^x04Opis: ^x01%s.", opis_perku);
}
 
public OpisPerkow(id)
{
	new menu = menu_create("Wybierz Perk:", "OpisPerkow_Handle");
	for(new i=1; i <= ilosc_perkow; i++)
		menu_additem(menu, nazwy_perkow[i]);
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
	menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
	menu_display(id, menu);
	client_cmd(id, "spk QTM_CodMod/select");
}
 
public OpisPerkow_Handle(id, menu, item)
{
	if(item++ == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
	OpisPerku(id, item, -1);
	OpisPerkow(id);
	return PLUGIN_CONTINUE;
}
 
 
public OpisKlasy(id)
{
	new menu = menu_create("Wybierz klase:", "OpisKlasy_Handle");
	for(new i=1; i <= ilosc_klas; i++)
		menu_additem(menu, nazwy_klas[i]);
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
	menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
	menu_display(id, menu);
 
	client_cmd(id, "spk QTM_CodMod/select");
}
 
public OpisKlasy_Handle(id, menu, item)
{
	client_cmd(id, "spk QTM_CodMod/select");
 
	if(item++ == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
 
	new bronie[320];
	for(new i=1, n=1; i <= 32; i++)
	{
		if((1<<i) & bronie_klasy[item])
		{
			new weaponname[22];
			get_weaponname(i, weaponname, 21);
			replace_all(weaponname, 21, "weapon_", " ");
			if(n > 1)	
				add(bronie, charsmax(bronie), ",");
			add(bronie, charsmax(bronie), weaponname);
			n++;
		}
	}
 
	new opis[416+MAX_WIELKOSC_OPISU];
	format(opis, charsmax(opis), "\yKlasa: \w%s^n\yInteligencja: \w%i^n\yZdrowie: \w%i^n\yWytrzymalosc: \w%i^n\yKondycja: \w%i^n\yBronie:\w%s^n\yDodatkowy opis: \w%s^n%s", nazwy_klas[item], inteligencja_klas[item], zdrowie_klas[item], wytrzymalosc_klas[item], kondycja_klas[item], bronie, opisy_klas[item], opisy_klas[item][79]);
	show_menu(id, 1023, opis);
 
	return PLUGIN_CONTINUE;
}
 
public WybierzKlase(id)
{
	if(polaczony_raz[id])
	{
		client_print(id, print_center, "Poczekaj na klase, a nie spamujesz!");
		return PLUGIN_CONTINUE;
	}
	if(!wczytane_dane[id])
	{
		new szTemp[1024], data[1], Table[32];
		new identyfikator[64], typ_zapisu = get_pcvar_num(cvar_typ_zapisu);
 
		get_cvar_string("cod_table", Table, 31);
		data[0] = id;
 
		switch(typ_zapisu)
		{
			case 1:{
				copy(identyfikator, charsmax(identyfikator), nazwa_gracza[id]);
				replace_all(identyfikator, charsmax(identyfikator), "'", "\'");
				replace_all(identyfikator, charsmax(identyfikator), "`", "\`");
			}
			case 2: get_user_authid(id, identyfikator, charsmax(identyfikator));
			case 3: get_user_ip(id, identyfikator, charsmax(identyfikator));
		}
 
		formatex(szTemp, charsmax(szTemp), "SELECT * FROM `%s` WHERE `nick` = '%s'", Table, identyfikator)
		SQL_ThreadQuery(info, "KlasaHandle", szTemp, data, sizeof data)
		polaczony_raz[id] = 1;
	}
	else
	{
		lvl_klasy_gracza[id][klasa_gracza[id]] = poziom_gracza[id];
		xp_klasy_gracza[id][klasa_gracza[id]] = doswiadczenie_gracza[id];
		int_klasy_gracza[id][klasa_gracza[id]] = inteligencja_gracza[id];
		zdr_klasy_gracza[id][klasa_gracza[id]] = zdrowie_gracza[id];
		wyt_klasy_gracza[id][klasa_gracza[id]] = wytrzymalosc_gracza[id];
		kon_klasy_gracza[id][klasa_gracza[id]] = kondycja_gracza[id];
 
		new klasa[50], menu = menu_create("Wybierz klase:", "WybierzKlase_Handle");
		for(new i=1; i <= ilosc_klas; i++)
		{
			format(klasa, 49, "%s \yPoziom: %i", nazwy_klas[i], lvl_klasy_gracza[id][i]);
			menu_additem(menu, klasa);
		}
		menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
		menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
		menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
		menu_display(id, menu);
 
		client_cmd(id, "spk QTM_CodMod/select");
	}
	return PLUGIN_CONTINUE;
}
 
public KlasaHandle(failstate, Handle:query, error[], errnum, Data[], size){
	if(failstate != TQUERY_SUCCESS){
		log_amx("MySQL Select error: %s",error);
		return;
	}
	new id = Data[0]
	new szTemp[2028], klasa[50], menu = menu_create("Wybierz klase:", "WybierzKlase_Handle");
 
	if(SQL_NumRows(query))
	{
		new daneklasy[6][32];
		for(new i=1; i <= ilosc_klas; i++)
		{
			formatex(szTemp, charsmax(szTemp), "%i", i);
			SQL_ReadResult(query, SQL_FieldNameToNum(query, szTemp), szTemp, charsmax(szTemp))
 
			replace_all(szTemp, charsmax(szTemp), "#", " ");
 
			parse(szTemp, daneklasy[0], 31, daneklasy[1], 31, daneklasy[2], 31, daneklasy[3], 31, daneklasy[4], 31, daneklasy[5], 31);
			lvl_klasy_gracza[id][i] = str_to_num(daneklasy[0])
			xp_klasy_gracza[id][i] = str_to_num(daneklasy[1])
			int_klasy_gracza[id][i] = str_to_num(daneklasy[2])
			zdr_klasy_gracza[id][i] = str_to_num(daneklasy[3])
			wyt_klasy_gracza[id][i] = str_to_num(daneklasy[4])
			kon_klasy_gracza[id][i] = str_to_num(daneklasy[5])
 
			formatex(klasa, 49, "%s \yPoziom: %i", nazwy_klas[i], lvl_klasy_gracza[id][i]);
			menu_additem(menu, klasa);
		}
		menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
		menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
		menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
		menu_display(id, menu);
 
		client_cmd(id, "spk QTM_CodMod/select");
		wczytane_dane[id] = 1;
	} 
	else
	{
		new iLen = 0, Table[32];
		new identyfikator[64], typ_zapisu = get_pcvar_num(cvar_typ_zapisu);
		get_cvar_string("cod_table", Table, 31);
 
		switch(typ_zapisu)
		{
			case 1:{
				copy(identyfikator, charsmax(identyfikator), nazwa_gracza[id]);
				replace_all(identyfikator, charsmax(identyfikator), "'", "\'");
				replace_all(identyfikator, charsmax(identyfikator), "`", "\`");
			}
			case 2: get_user_authid(id, identyfikator, charsmax(identyfikator));
			case 3: get_user_ip(id, identyfikator, charsmax(identyfikator));
		}
 
		iLen += formatex(szTemp[iLen], charsmax(szTemp)-iLen, "INSERT INTO `%s` (`nick`", Table);
 
		for(new i=1; i <= ilosc_klas; i++)
			iLen += formatex(szTemp[iLen], charsmax(szTemp)-iLen, ", `%i`", i);
 
		iLen += copy(szTemp[iLen], charsmax(szTemp)-iLen, ") VALUES (");
		iLen += formatex(szTemp[iLen], charsmax(szTemp)-iLen, "'%s'", identyfikator);
 
		for(new i=1; i <= ilosc_klas; i++)
			iLen += copy(szTemp[iLen], charsmax(szTemp)-iLen, ", '1#0#0#0#0#0'");
 
		iLen += copy(szTemp[iLen], charsmax(szTemp)-iLen, ")");
		SQL_ThreadQuery(info, "IgnoreHandle", szTemp)
 
		for(new i=1; i <= ilosc_klas; i++)
		{
			formatex(klasa, 49, "%s \yPoziom: 1", nazwy_klas[i]);
			menu_additem(menu, klasa);
		}
		menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
		menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
		menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
		menu_display(id, menu);
 
		client_cmd(id, "spk QTM_CodMod/select");
	}
	polaczony_raz[id] = 0;
}
 
public WybierzKlase_Handle(id, menu, item)
{
	client_cmd(id, "spk QTM_CodMod/select");
 
	if(item++ == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}	
 
	if(item == klasa_gracza[id] && !nowa_klasa_gracza[id])
		return PLUGIN_CONTINUE;
 
	nowa_klasa_gracza[id] = item;
 
	if(klasa_gracza[id])
		ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Klasa zostanie zmieniona w nastepnej rundzie.");
	else
	{
		UstawNowaKlase(id);
		DajBronie(id);
		ZastosujAtrybuty(id);
	}
	return PLUGIN_CONTINUE;
}
 
public PrzydzielPunkty(id)
{
	new inteligencja[65];
	new zdrowie[60];
	new wytrzymalosc[60];
	new kondycja[60];
	new tytul[25];
	new kondycjaa[60];
	new wytrzymalosca[60];
	new zdrowiea[60];
	new inteligencjaa[60];
	format(inteligencja, charsmax(inteligencja), "Inteligencja: \r%i \y(Zwieksza sile perkow i umiejetnosci klasy)", PobierzInteligencje(id, 1, 1, 1));
	format(zdrowie, charsmax(zdrowie), "Zdrowie: \r%i \y(Zwieksza zdrowie)", PobierzZdrowie(id, 1, 1, 1));
	format(wytrzymalosc, charsmax(wytrzymalosc), "Wytrzymalosc: \r%i \y(Zmniejsza obrazenia)", PobierzWytrzymalosc(id, 1, 1, 1));
	format(kondycja, charsmax(kondycja), "Kondycja: \r%i \y(Zwieksza tempo chodu)", PobierzKondycje(id, 1, 1, 1));
	format(tytul, charsmax(tytul), "Przydziel Punkty(%i):", punkty_gracza[id]);
	format(inteligencjaa, charsmax(inteligencjaa), "Dodaj 5 punktow w inteligencje");
	format(zdrowiea, charsmax(zdrowiea), "Dodaj 5 punktow w zdrowie");
	format(wytrzymalosca, charsmax(wytrzymalosca), "Dodaj 5 punktow w wytrzymalosc");
	format(kondycjaa, charsmax(kondycjaa), "Dodaj 5 punktow w kondycje");
	new menu = menu_create(tytul, "PrzydzielPunkty_Handler");
	menu_additem(menu, inteligencja);
	menu_additem(menu, zdrowie);
	menu_additem(menu, wytrzymalosc);
	menu_additem(menu, kondycja);
	menu_additem(menu, inteligencjaa);
	menu_additem(menu, zdrowiea);
	menu_additem(menu, wytrzymalosca);
	menu_additem(menu, kondycjaa);
	menu_setprop(menu, MPROP_EXIT, 0);
	menu_display(id, menu);
}
 
public PrzydzielPunkty_Handler(id, menu, item)
{
	client_cmd(id, "spk QTM_CodMod/select");
 
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
 
	if(punkty_gracza[id] < 1)
		return PLUGIN_CONTINUE;
 
	new limit_poziomu = get_pcvar_num(cvar_limit_poziomu);
 
	switch(item) 
	{ 
		case 0: 
		{	
			if(inteligencja_gracza[id] < limit_poziomu/2)
			{
				inteligencja_gracza[id]++;
				punkty_gracza[id]--;
			}
			else 
				ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Maxymalny poziom ^x04inteligencji^x01 osiagniety");
 
 
		}
		case 1: 
		{	
			if(zdrowie_gracza[id] < limit_poziomu/2)
			{
				zdrowie_gracza[id]++;
				punkty_gracza[id]--;
			}
			else 
				ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Maxymalny poziom ^x04zdrowia^x01 osiagniety");
		}
		case 2: 
		{	
			if(wytrzymalosc_gracza[id] < limit_poziomu/2)
			{
				wytrzymalosc_gracza[id]++;
				punkty_gracza[id]--;
			}
			else 
				ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Maxymalny poziom ^x04wytrzymalosci^x01 osiagniety");
 
		}
		case 3: 
		{	
			if(kondycja_gracza[id] < limit_poziomu/2)
			{
				kondycja_gracza[id]++;
				punkty_gracza[id]--;
			}
			else
				ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Maxymalny poziom ^x04kondycji^x01 osiagniety");
		}
		case 4: 
		{	
			if(inteligencja_gracza[id] < limit_poziomu/2)
			{
				if(punkty_gracza[id] < 5)
				{
					ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Masz za malo punktow do rozdania");
				}
				else
				{
					if(inteligencja_gracza[id] + 5 <= limit_poziomu/2)
					{
						inteligencja_gracza[id] += 5;
						punkty_gracza[id] -= 5;
					}
					else
					{
						new punktydododania;
						punktydododania = limit_poziomu/2 - inteligencja_gracza[id];
						inteligencja_gracza[id] += punktydododania;
						punkty_gracza[id] -= punktydododania;
					}
				}
			}
			else 
				ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Maksymalny poziom ^x04inteligencji^x01 osiagniety");
 
 
		}
		case 5: 
		{	
			if(zdrowie_gracza[id] < limit_poziomu/2)
			{
				if(punkty_gracza[id] < 5)
				{
					ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Masz za malo punktow do rozdania");
				}
				else
				{
					if(zdrowie_gracza[id] + 5 <= limit_poziomu/2)
					{
						zdrowie_gracza[id] += 5;
						punkty_gracza[id] -= 5;
					}
					else
					{
						new punktydododania;
						punktydododania = limit_poziomu/2 - zdrowie_gracza[id];
						zdrowie_gracza[id] += punktydododania;
						punkty_gracza[id] -= punktydododania;
					}
				}
			}
			else 
				ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Maksymalny poziom ^x04zdrowia^x01 osiagniety");
		}
		case 6: 
		{	
			if(wytrzymalosc_gracza[id] < limit_poziomu/2)
			{
				if(punkty_gracza[id] < 5)
				{
					ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Masz za malo punktow do rozdania");
				}
				else
				{
					if(wytrzymalosc_gracza[id] + 5 <= limit_poziomu/2)
					{
						wytrzymalosc_gracza[id] += 5;
						punkty_gracza[id] -= 5;
					}
					else
					{
						new punktydododania;
						punktydododania = limit_poziomu/2 - wytrzymalosc_gracza[id];
						wytrzymalosc_gracza[id] += punktydododania;
						punkty_gracza[id] -= punktydododania;
					}
				}
			}
			else 
				ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Maksymalny poziom ^x04wytrzymalosci^x01 osiagniety");
 
		}
		case 7: 
		{	
			if(kondycja_gracza[id] < limit_poziomu/2)
			{
				if(punkty_gracza[id] < 5)
				{
					ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Masz za malo punktow do rozdania");
				}
				else
				{
					if(kondycja_gracza[id] + 5 <= limit_poziomu/2)
					{
						kondycja_gracza[id] += 5;
						punkty_gracza[id] -= 5;
					}
					else
					{
						new punktydododania;
						punktydododania = limit_poziomu/2 - kondycja_gracza[id];
						kondycja_gracza[id] += punktydododania;
						punkty_gracza[id] -= punktydododania;
					}
				}
			}
			else
				ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Maksymalny poziom ^x04kondycji^x01 osiagniety");
		}
	}
 
	if(punkty_gracza[id] > 0)
		PrzydzielPunkty(id);
 
	return PLUGIN_CONTINUE;
}
 
public KomendaResetujPunkty(id)
{	
	ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Umiejetnosci zostana zresetowane.");
	client_cmd(id, "spk QTM_CodMod/select");
 
	ResetujPunkty(id);
}
 
public ResetujPunkty(id)
{
	punkty_gracza[id] = poziom_gracza[id]*2-2;
	inteligencja_gracza[id] = 0;
	zdrowie_gracza[id] = 0;
	kondycja_gracza[id] = 0;
	wytrzymalosc_gracza[id] = 0;
 
	if(punkty_gracza[id])
		PrzydzielPunkty(id);
}
 
public CurWeapon(id)
{
        if(!is_user_connected(id))
                return;
 
        new team = get_user_team(id);
 
        if(team > 2)
                return;
 
        new bron = read_data(2);
 
        new bronie = (bronie_klasy[klasa_gracza[id]] | bonusowe_bronie_gracza[id] | bronie_druzyny[team] | bronie_dozwolone);
 
        if(!(1<<bron & bronie))
        {
                new param[2];
                param[0] = id;
                param[1] = bron;
                set_task(0.1, "Strip", _, param, 2);
        }
 
        if(cs_get_user_shield(id) && !gracz_ma_tarcze[id])
                engclient_cmd(id, "drop", "weapon_shield");    
 
        UstawSzybkosc(id);
}
public Strip(param[2])
{
if(is_user_alive(param[0]) && ( 1 <= param[1] <= 30) )
{
  get_weaponname(param[1], weaponname, 21);
  ham_strip_weapon(param[0], weaponname);
}
}
 
public EmitSound(id, iChannel, szSound[], Float:fVol, Float:fAttn, iFlags, iPitch ) 
{
	if(!is_user_alive(id))
		return FMRES_IGNORED;
 
	if(equal(szSound, "common/wpn_denyselect.wav"))
	{
		new forward_handle = CreateOneForward(pluginy_klas[klasa_gracza[id]], "cod_class_skill_used", FP_CELL);
		ExecuteForward(forward_handle, id, id);
		DestroyForward(forward_handle);
		return FMRES_SUPERCEDE;
	}
 
	if(equal(szSound, "items/ammopickup2.wav"))
	{
		cs_set_user_armor(id, 0, CS_ARMOR_NONE);
		return FMRES_SUPERCEDE;
	}
 
	if(equal(szSound, "items/equip_nvg.wav") && !gracz_ma_noktowizor[id])
	{
		cs_set_user_nvg(id, 0);
		return FMRES_SUPERCEDE;
	}
 
	return FMRES_IGNORED;
}
 
public UzyjPerku(id)
{
	if(!is_user_alive(id))
		return PLUGIN_HANDLED;
 
	new forward_handle = CreateOneForward(pluginy_perkow[perk_gracza[id]], "cod_perk_used", FP_CELL);
	ExecuteForward(forward_handle, id, id);
	DestroyForward(forward_handle);
	return PLUGIN_HANDLED;
}
 
public WczytajDane(id, klasa)
{
	poziom_gracza[id] = max(1, lvl_klasy_gracza[id][klasa]);
	doswiadczenie_gracza[id] = xp_klasy_gracza[id][klasa];
	inteligencja_gracza[id] = int_klasy_gracza[id][klasa];
	zdrowie_gracza[id] = zdr_klasy_gracza[id][klasa];
	wytrzymalosc_gracza[id] = wyt_klasy_gracza[id][klasa];
	kondycja_gracza[id] = kon_klasy_gracza[id][klasa];
	punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id];
	return PLUGIN_CONTINUE;
}
 
public ZapiszDane(id)
{
	if(!klasa_gracza[id])
		return PLUGIN_CONTINUE;
 
	new szTemp[512], szTemp2[512], Table[32], identyfikator[64];
	get_cvar_string("cod_table", Table, 31);
 
	new typ_zapisu = get_pcvar_num(cvar_typ_zapisu);
 
	switch(typ_zapisu)
	{
		case 1:{
			copy(identyfikator, charsmax(identyfikator), nazwa_gracza[id]);
			replace_all(identyfikator, 63, "'", "\'");
			replace_all(identyfikator, 63, "`", "\`");
		}
		case 2: get_user_authid(id, identyfikator, charsmax(identyfikator));
		case 3: get_user_ip(id, identyfikator, charsmax(identyfikator));
	}
 
	formatex(szTemp2, charsmax(szTemp2),"%i#%i#%i#%i#%i#%i", poziom_gracza[id], doswiadczenie_gracza[id], inteligencja_gracza[id], zdrowie_gracza[id], wytrzymalosc_gracza[id], kondycja_gracza[id]);
	formatex(szTemp, charsmax(szTemp), "UPDATE `%s` SET `%i` = '%s' WHERE `nick` = '%s'", Table, klasa_gracza[id], szTemp2, identyfikator);
 
	SQL_ThreadQuery(info, "IgnoreHandle",szTemp)
	return PLUGIN_CONTINUE;
}
 
public IgnoreHandle(FailState,Handle:query,Error[],Errcode,Data[],DataSize)
{
	if(FailState != TQUERY_SUCCESS){
		log_amx("MySQL save error: %s", Error);
		return;
	}
}
 
public plugin_end()
	SQL_FreeHandle(info)
 
public WyrzucPerk(id)
{
	if(perk_gracza[id])
	{
		ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Wyrzuciles ^x04%s.", nazwy_perkow[perk_gracza[id]]);
		UstawPerk(id, 0, 0, 0);
	}
	else
		ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Nie masz zadnego perku.");
}
 
public SprawdzPoziom(id)
{	
	new limit_poziomu = get_pcvar_num(cvar_limit_poziomu);
 
	new bool:zdobyl_poziom, bool:stracil_poziom;
 
	while(doswiadczenie_gracza[id] >= PobierzDoswiadczeniePoziomu(poziom_gracza[id]) && poziom_gracza[id] < limit_poziomu)
	{
		poziom_gracza[id]++;
		punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id];
		zdobyl_poziom = true;
	}
 
	while(doswiadczenie_gracza[id] < PobierzDoswiadczeniePoziomu(poziom_gracza[id]-1))
	{
		poziom_gracza[id]--;
		stracil_poziom = true;
	}
 
	if(poziom_gracza[id] > limit_poziomu)
	{
		poziom_gracza[id] = limit_poziomu;
		ResetujPunkty(id);
		ZapiszDane(id);
	}
 
	if(stracil_poziom)
	{
		ResetujPunkty(id);
		set_hudmessage(255, 255, 0, 0.31, 0.32, 0, 6.0, 5.0);
		ShowSyncHudMsg(id, SyncHudObj2,"Spadles do %i poziomu!", poziom_gracza[id]);
		ZapiszDane(id);
	}
	else if(zdobyl_poziom)
	{
		set_hudmessage(255, 255, 0, 0.31, 0.32, 0, 6.0, 5.0);
		ShowSyncHudMsg(id, SyncHudObj2,"Awansowales do %i poziomu!", poziom_gracza[id]);
		client_cmd(id, "spk QTM_CodMod/levelup");
		ZapiszDane(id);
	}
}
 
public PokazInformacje(id) 
{
	id -= ZADANIE_POKAZ_INFORMACJE;
 
	if(!is_user_connected(id))
	{
		remove_task(id+ZADANIE_POKAZ_INFORMACJE);
		return PLUGIN_CONTINUE;
	}
 
	new name[32];
 
	if(!is_user_alive(id))
	{
		new target = pev(id, pev_iuser2);
 
		if(!target)
			return PLUGIN_CONTINUE;
 
		get_user_name(target, name, 31);
		new hp = get_user_health(target);
		new ileMa = doswiadczenie_gracza[target],ilePotrzeba = PobierzDoswiadczeniePoziomu(poziom_gracza[target]),ilePotrzebaBylo = PobierzDoswiadczeniePoziomu(poziom_gracza[target]-1)
		new Float:fProcent = 0.0;
		fProcent = (float((ileMa - ilePotrzebaBylo)) / float((ilePotrzeba - ilePotrzebaBylo))) * 100.0;
		static stats[8], body[8]
		get_user_stats(target, stats, body)	
		set_hudmessage(255, 255, 0, 0.02, 0.14, 0, 1.0, 1.0, 0.1, 0.1);
		ShowSyncHudMsg(id, SyncHudObj, "    INFO:^n|Gracz: %s^n|Klasa : %s^n|Exp : %i | %0.1f%%^n|Poziom : %i^n|Perk : %s^n|KillStreak : x%d^n|HP : %d^n^n^n    STATY:^n|Inteligencja : %i^n|Zycie : %i^n|Wytrzymalosc : %i^n|Kondycja : %i^n|Fragi : %d^n^n||VIP : %s||"
		, name, nazwy_klas[klasa_gracza[target]], doswiadczenie_gracza[target], fProcent, poziom_gracza[target], nazwy_perkow[perk_gracza[target]], licznik_zabiccod[target], hp, inteligencja_gracza[target], zdrowie_gracza[target], wytrzymalosc_gracza[target], kondycja_gracza[target], stats[0], get_user_flags(target) & ADMIN_LEVEL_H ? "Tak" : "Nie");
		return PLUGIN_CONTINUE;
	}
 
	new Time[9]
	new ileMa = doswiadczenie_gracza[id],ilePotrzeba = PobierzDoswiadczeniePoziomu(poziom_gracza[id]),ilePotrzebaBylo = poziom_gracza[id]-1 >= 0 ?PobierzDoswiadczeniePoziomu(poziom_gracza[id]-1) : 0
	new Float:fProcent = 0.0;
	fProcent = (float((ileMa - ilePotrzebaBylo)) / float((ilePotrzeba - ilePotrzebaBylo))) * 100.0;
	new hp = get_user_health(id);
	static stats[8], body[8]
	get_user_stats(id, stats, body)
	get_time("%H:%M:%S",Time,8)
	set_hudmessage(255, 255, 0, -1.0, 0.01, 0, 1.0, 1.0, 0.1, 0.1);
	ShowSyncHudMsg(id, SyncHudObj, "[Klasa : %s]|[Exp: %i | %0.1f%%]|[LvL : %i]^n[CoD 301]|[Nocny Exp]|[Eventy]|[Cs-Maniek.pl]^n[Perk : [%s]|[HP : %d]^n[KillStreak : x%d]|[Fragi : %d]|[Godzina : %s]"
	, nazwy_klas[klasa_gracza[id]], doswiadczenie_gracza[id], fProcent, poziom_gracza[id], nazwy_perkow[perk_gracza[id]], hp, licznik_zabiccod[id], stats[0], Time);
	return PLUGIN_CONTINUE;
}
 
public Pomoc(id)
	show_menu(id, 1023, "\y/reset\w - resetuje statystyki^n\y/statystyki\w - wyswietla statystyki^n\y/klasa\w - uruchamia menu wyboru klas^n\y/wyrzuc\w - wyrzuca perk^n\y/perk\w - pokazuje opis twojego perku^n\y/klasy\w - pokazuje opisy klas^n\y+use\w - Uzycie umiejetnosci klasy^n\y[c]\w - Uzycie umiejetnosci klasy", -1, "Pomoc");
 
public UstawSzybkosc(id)
{
	id -= id>32? ZADANIE_USTAW_SZYBKOSC: 0;
 
	if(klasa_gracza[id] && !freezetime)
		set_pev(id, pev_maxspeed, szybkosc_gracza[id]);
}
 
public DotykBroni(weapon, id)
{
	if(get_pcvar_num(cvar_blokada_broni) != 1)
		return HAM_IGNORED;
 
	if(!is_user_connected(id))
		return HAM_IGNORED;
 
	new model[23];
	pev(weapon, pev_model, model, 22);
	if(pev(weapon, pev_owner) == id || containi(model, "w_backpack") != -1)
		return HAM_IGNORED;
	return HAM_SUPERCEDE;
}
 
public DotykTarczy(weapon, id)
{
        if(get_pcvar_num(cvar_blokada_broni) != 1)
                return HAM_IGNORED;
 
        if(!is_user_connected(id))
                return HAM_IGNORED;
 
        if(gracz_ma_tarcze[id])
                return HAM_IGNORED;
        return HAM_SUPERCEDE;
}	
 
public UstawPerk(id, perk, wartosc, pokaz_info)
{
	if(!ilosc_perkow)
		return PLUGIN_CONTINUE;
 
	static obroty[33];
 
	if(obroty[id]++ >= 5)
	{
		UstawPerk(id, 0, 0, 0);
		obroty[id] = 0;
		return PLUGIN_CONTINUE;
	}
 
	perk = (perk == -1)? random_num(1, ilosc_perkow): perk;
	wartosc = (wartosc == -1 || min_wartosci_perkow[perk] > wartosc ||  wartosc > max_wartosci_perkow[perk])? random_num(min_wartosci_perkow[perk], max_wartosci_perkow[perk]): wartosc; 
 
	new ret;
 
	new forward_handle = CreateOneForward(pluginy_perkow[perk_gracza[id]], "cod_perk_disabled", FP_CELL, FP_CELL);
	ExecuteForward(forward_handle, ret, id, perk);
	DestroyForward(forward_handle);
 
	perk_gracza[id] = 0;
 
	forward_handle = CreateOneForward(pluginy_perkow[perk], "cod_perk_enabled", FP_CELL, FP_CELL, FP_CELL);
	ExecuteForward(forward_handle, ret, id, wartosc, perk);
	DestroyForward(forward_handle);
 
	if(ret == 4)
	{
		UstawPerk(id, -1, -1, 1);
		return PLUGIN_CONTINUE;
	}
 
	ExecuteForward(perk_zmieniony, ret, id, perk, wartosc);
 
	if(ret == 4)
	{
		UstawPerk(id, -1, -1, 1);
		return PLUGIN_CONTINUE;
	}
 
	perk_gracza[id] = perk;	
	wartosc_perku_gracza[id] = wartosc;
 
	obroty[id] = 0;
 
	if(pokaz_info && perk_gracza[id]) 
		ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Zdobyles ^x04%s.", nazwy_perkow[perk_gracza[id]]);
 
	return PLUGIN_CONTINUE;
}
 
public UstawDoswiadczenie(id, wartosc)
{
	doswiadczenie_gracza[id] = wartosc;
	SprawdzPoziom(id);
}
 
public UstawKlase(id, klasa, zmien)
{
	nowa_klasa_gracza[id] = klasa;
	if(zmien)
	{
		UstawNowaKlase(id);
		DajBronie(id);
		ZastosujAtrybuty(id);
	}
}
 
public UstawTarcze(id, wartosc)
{
	if((gracz_ma_tarcze[id] = (wartosc > 0)))
		fm_give_item(id, "weapon_shield");
}
 
public UstawNoktowizor(id, wartosc)
{
	if((gracz_ma_noktowizor[id] = (wartosc > 0)))
		cs_set_user_nvg(id, 1);
}
 
public DajBron(id, bron)
{
	bonusowe_bronie_gracza[id] |= (1<<bron);
	new weaponname[22];
	get_weaponname(bron, weaponname, 21);
	return fm_give_item(id, weaponname);
}
 
public WezBron(id, bron)
{
	bonusowe_bronie_gracza[id] &= ~(1<<bron);
 
	if((1<<bron) & (bronie_dozwolone | bronie_klasy[get_user_team(id)] | bronie_klasy[klasa_gracza[id]])) 
		return;
 
	new weaponname[22];
	get_weaponname(bron, weaponname, 21);
	ham_strip_weapon(id, weaponname);
}
 
public UstawBonusoweZdrowie(id, wartosc)
	bonusowe_zdrowie_gracza[id] = wartosc;
 
 
public UstawBonusowaInteligencje(id, wartosc)
	bonusowa_inteligencja_gracza[id] = wartosc;
 
 
public UstawBonusowaKondycje(id, wartosc)
	bonusowa_kondycja_gracza[id] = wartosc;
 
 
public UstawBonusowaWytrzymalosc(id, wartosc)
	bonusowa_wytrzymalosc_gracza[id] = wartosc;
 
public PrzydzielZdrowie(id, wartosc)
{
	new max_statystyka = get_pcvar_num(cvar_limit_poziomu)/2;
	wartosc = min(min(punkty_gracza[id], wartosc), max_statystyka-zdrowie_gracza[id]);
 
	punkty_gracza[id] -= wartosc;
	zdrowie_gracza[id] += wartosc;
}
 
public PrzydzielInteligencje(id, wartosc)
{
	new max_statystyka = get_pcvar_num(cvar_limit_poziomu)/2;
	wartosc = min(min(punkty_gracza[id], wartosc), max_statystyka-inteligencja_gracza[id]);
 
	punkty_gracza[id] -= wartosc;
	inteligencja_gracza[id] += wartosc;
}
 
public PrzydzielKondycje(id, wartosc)
{
	new max_statystyka = get_pcvar_num(cvar_limit_poziomu)/2;
	wartosc = min(min(punkty_gracza[id], wartosc), max_statystyka-kondycja_gracza[id]);
 
	punkty_gracza[id] -= wartosc;
	kondycja_gracza[id] += wartosc;
}
 
public PrzydzielWytrzymalosc(id, wartosc)
{
	new max_statystyka = get_pcvar_num(cvar_limit_poziomu)/2;
	wartosc = min(min(punkty_gracza[id], wartosc), max_statystyka-wytrzymalosc_gracza[id]);
 
	punkty_gracza[id] -= wartosc;
	wytrzymalosc_gracza[id] += wartosc;
}
 
public PobierzPerk(id, &wartosc)
{
	wartosc = wartosc_perku_gracza[id];
	return perk_gracza[id];
}
 
public PobierzIloscPerkow()
	return ilosc_perkow;
 
 
public PobierzNazwePerku(perk, Return[], len)
{
	if(perk <= ilosc_perkow)
	{
		param_convert(2);
		copy(Return, len, nazwy_perkow[perk]);
	}
}
 
public PobierzOpisPerku(perk, Return[], len)
{
	if(perk <= ilosc_perkow)
	{
		param_convert(2);
		copy(Return, len, opisy_perkow[perk]);
	}
}
 
public PobierzPerkPrzezNazwe(const nazwa[])
{
	param_convert(1);
	for(new i=1; i <= ilosc_perkow; i++)
		if(equal(nazwa, nazwy_perkow[i]))
			return i;
	return 0;
}
 
public PobierzDoswiadczeniePoziomu(poziom)
	return power(poziom, 2)*get_pcvar_num(cvar_proporcja_poziomu);
 
public PobierzDoswiadczenie(id)
	return doswiadczenie_gracza[id];
 
public PobierzPunkty(id)
	return punkty_gracza[id];
 
public PobierzPoziom(id)
	return poziom_gracza[id];
 
public PobierzZdrowie(id, zdrowie_zdobyte, zdrowie_klasy, zdrowie_bonusowe)
{
	new zdrowie;
 
	if(zdrowie_zdobyte)
		zdrowie += zdrowie_gracza[id];
	if(zdrowie_bonusowe)
		zdrowie += bonusowe_zdrowie_gracza[id];
	if(zdrowie_klasy)
		zdrowie += zdrowie_klas[klasa_gracza[id]];
 
	return zdrowie;
}
 
public PobierzInteligencje(id, inteligencja_zdobyta, inteligencja_klasy, inteligencja_bonusowa)
{
	new inteligencja;
 
	if(inteligencja_zdobyta)
		inteligencja += inteligencja_gracza[id];
	if(inteligencja_bonusowa)
		inteligencja += bonusowa_inteligencja_gracza[id];
	if(inteligencja_klasy)
		inteligencja += inteligencja_klas[klasa_gracza[id]];
 
	return inteligencja;
}
 
public PobierzKondycje(id, kondycja_zdobyta, kondycja_klasy, kondycja_bonusowa)
{
	new kondycja;
 
	if(kondycja_zdobyta)
		kondycja += kondycja_gracza[id];
	if(kondycja_bonusowa)
		kondycja += bonusowa_kondycja_gracza[id];
	if(kondycja_klasy)
		kondycja += kondycja_klas[klasa_gracza[id]];
 
	return kondycja;
}
 
public PobierzWytrzymalosc(id, wytrzymalosc_zdobyta, wytrzymalosc_klasy, wytrzymalosc_bonusowa)
{
	new wytrzymalosc;
 
	if(wytrzymalosc_zdobyta)
		wytrzymalosc += wytrzymalosc_gracza[id];
	if(wytrzymalosc_bonusowa)
		wytrzymalosc += bonusowa_wytrzymalosc_gracza[id];
	if(wytrzymalosc_klasy)
		wytrzymalosc += wytrzymalosc_klas[klasa_gracza[id]];
 
	return wytrzymalosc;
}
 
public PobierzKlase(id)
	return klasa_gracza[id];
 
public PobierzIloscKlas()
	return ilosc_klas;
 
public PobierzNazweKlasy(klasa, Return[], len)
{
	if(klasa <= ilosc_klas)
	{
		param_convert(2);
		copy(Return, len, nazwy_klas[klasa]);
	}
}
 
public PobierzOpisKlasy(klasa, Return[], len)
{
	if(klasa <= ilosc_klas)
	{
		param_convert(2);
		copy(Return, len, opisy_klas[klasa]);
	}
}
 
public PobierzKlasePrzezNazwe(const nazwa[])
{
	param_convert(1);
	for(new i=1; i <= ilosc_klas; i++)
		if(equal(nazwa, nazwy_klas[i]))
			return i;
	return 0;
}
 
public PobierzZdrowieKlasy(klasa)
{
	if(klasa <= ilosc_klas)
		return zdrowie_klas[klasa];
	return -1;
}
 
public PobierzInteligencjeKlasy(klasa)
{
	if(klasa <= ilosc_klas)
		return inteligencja_klas[klasa];
	return -1;
}
 
public PobierzKondycjeKlasy(klasa)
{
	if(klasa <= ilosc_klas)
		return kondycja_klas[klasa];
	return -1;
}
 
public PobierzWytrzymaloscKlasy(klasa)
{
	if(klasa <= ilosc_klas)
		return wytrzymalosc_klas[klasa];
	return -1;
}
 
public ZadajObrazenia(atakujacy, ofiara, Float:obrazenia, Float:czynnik_inteligencji, byt_uszkadzajacy, dodatkowe_flagi)
	ExecuteHam(Ham_TakeDamage, ofiara, byt_uszkadzajacy, atakujacy, obrazenia+PobierzInteligencje(atakujacy, 1, 1, 1)*czynnik_inteligencji, /*1<<31 |*/ dodatkowe_flagi);
 
public ZarejestrujPerk(plugin, params)
{
	if(params != 4)
		return PLUGIN_CONTINUE;
 
	if(++ilosc_perkow > MAX_ILOSC_PERKOW)
		return -1;
 
	pluginy_perkow[ilosc_perkow] = plugin;
	get_string(1, nazwy_perkow[ilosc_perkow], MAX_WIELKOSC_NAZWY);
	get_string(2, opisy_perkow[ilosc_perkow], MAX_WIELKOSC_OPISU);
	min_wartosci_perkow[ilosc_perkow] = get_param(3);
	max_wartosci_perkow[ilosc_perkow] = get_param(4);
 
	return ilosc_perkow;
}
 
public ZarejestrujKlase(plugin, params)
{
	if(params != 7)
		return PLUGIN_CONTINUE;
 
	if(++ilosc_klas > MAX_ILOSC_KLAS)
		return -1;
 
	pluginy_klas[ilosc_klas] = plugin;
 
	get_string(1, nazwy_klas[ilosc_klas], MAX_WIELKOSC_NAZWY);
	get_string(2, opisy_klas[ilosc_klas], MAX_WIELKOSC_OPISU);
 
	bronie_klasy[ilosc_klas] = get_param(3);
	zdrowie_klas[ilosc_klas] = get_param(4);
	kondycja_klas[ilosc_klas] = get_param(5);
	inteligencja_klas[ilosc_klas] = get_param(6);
	wytrzymalosc_klas[ilosc_klas] = get_param(7);
 
	return ilosc_klas;
}
 
public SmiercGraczaKillCod(id)
{       
        new zabojcacod = read_data(1)
        new ofiaracod = read_data(2)
 
        licznik_zabiccod[zabojcacod]++;
 
        if(!is_user_alive(id))
        {
                licznik_zabiccod[ofiaracod] = 0;
        }
}
 
public statystyki_klasy(id)
{
                if(!is_user_alive(id) || !is_user_connected(id))
                {
                                ColorChat(id, GREEN, "[Cs-Maniek.pl]^x01 Statystyki mozesz podgladac tylko gdy zyjesz!")
                                return PLUGIN_CONTINUE;
                }
                else
                {
                                new name[64];
                                get_user_name(id, name, 63);
                                new hp_klasy = PobierzZdrowie(id, 1, 1, 1);
                                new hp = hp_klasy+100
 
                                const SIZE = 1024;
                                new staty[SIZE+1],len = 0;
                                len += formatex(staty[len], SIZE - len, "<html><body style=^"background-color:black;color:white;font-size:14;text-align:center;^"<br>");
                                len += formatex(staty[len], SIZE - len, "Witaj <font color=#00c000>%s</font> w statystykach twojej klasy.<br><br>", name);
                                len += formatex(staty[len], SIZE - len, "Klasa: <font color=#00c000><b>%s</b></font><br><br>", nazwy_klas[klasa_gracza[id]]);
                                len += formatex(staty[len], SIZE - len, "Masz <font color=#00c000><b>%d</b></font> Hp wiecej.<br>", zdrowie_gracza[id]);
                                len += formatex(staty[len], SIZE - len, "Masz <font color=#00c000><b>%0.1f%%</b></font> redukcji obrazen.<br>", redukcja_obrazen_gracza[id]*100);
                                len += formatex(staty[len], SIZE - len, "Jestes szybszy o <font color=#00c000><b>%d</b></font>.<br>", floatround(kondycja_gracza[id]*1.3));
                                len += formatex(staty[len], SIZE - len, "Masz o <font color=#00c000><b>%d</b></font> obrazen wiecej  z rakiet/min/itp.<br>", inteligencja_gracza[id]);
                                len += formatex(staty[len], SIZE - len, "Laczna ilosc zycia wynosi <font color=#00c000><b>%d</b></font><br><br>", hp);
                                len += formatex(staty[len], SIZE - len, "Twoj Perk to: <font color=#00c000><b>%s</b></font><br>", nazwy_perkow[perk_gracza[id]]);
                                len += formatex(staty[len], SIZE - len, "Opis Perku: <font color=#00c000><b>%s</b></font><br><br>", opisy_perkow[perk_gracza[id]]);
                                len += formatex(staty[len], SIZE - len, "Forum: <b><font color=#00c000>Cs-Maniek.pl</b></font><br>");
                                len += formatex(staty[len], SIZE - len, "</body></html>");
 
                                show_motd(id, staty, "Statystyki Klasy");
                }
                return PLUGIN_CONTINUE;
}
 
public FindMaxLvl()
{
min_lvl = 0;
new max_lvl=0;
for(new id=1;id<=32;id++)
{
  if(poziom_gracza[id] > max_lvl)
   max_lvl = poziom_gracza[id];
}
min_lvl = floatround(max_lvl*procent);
}
 
stock Display_Fade(id,duration,holdtime,fadetype,red,green,blue,alpha)
{
	message_begin( MSG_ONE, MsgScreenfade,{0,0,0},id );
	write_short( duration );	// Duration of fadeout
	write_short( holdtime );	// Hold time of color
	write_short( fadetype );	// Fade type
	write_byte ( red );		// Red
	write_byte ( green );		// Green
	write_byte ( blue );		// Blue
	write_byte ( alpha );	// Alpha
	message_end();
}
 
stock fm_give_item(index, const item[]) {
	if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
		return 0;
 
	new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item));
	if (!pev_valid(ent))
		return 0;
 
	new Float:origin[3];
	pev(index, pev_origin, origin);
	set_pev(ent, pev_origin, origin);
	set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN);
	dllfunc(DLLFunc_Spawn, ent);
 
	new save = pev(ent, pev_solid);
	dllfunc(DLLFunc_Touch, ent, index);
	if (pev(ent, pev_solid) != save)
		return ent;
 
	engfunc(EngFunc_RemoveEntity, ent);
 
	return -1;
}
 
public ShowMotd(id)
{
	show_motd(id, "vip.txt")
}
 
public BlokujKomende()
	return PLUGIN_HANDLED;
 
stock ham_strip_weapon(id, weapon[])
{
if(!equal(weapon, "weapon_", 7) ) return 0
new wId = get_weaponid(weapon)
if(!wId) return 0
new wEnt
while( (wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname", weapon) ) && pev(wEnt, pev_owner) != id) {}
if(!wEnt) return 0
 
if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon, wEnt)
 
if(!ExecuteHamB(Ham_RemovePlayerItem, id, wEnt)) return 0
ExecuteHamB(Ham_Item_Kill ,wEnt)
 
set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<wId) )
return 1
}