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 131290983013249 dodana przez speedkill, 09.08.2011 18:10
Typ:


codmod
131290983013249
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.
1793.
1794.
1795.
1796.
1797.
1798.
1799.
1800.
1801.
1802.
1803.
1804.
1805.
1806.
1807.
1808.
1809.
1810.
1811.
1812.
1813.
1814.
1815.
1816.
1817.
1818.
1819.
1820.
1821.
1822.
1823.
1824.
1825.
1826.
1827.
1828.
1829.
1830.
1831.
1832.
1833.
1834.
1835.
1836.
1837.
1838.
1839.
1840.
1841.
1842.
1843.
1844.
1845.
1846.
1847.
1848.
1849.
1850.
1851.
1852.
1853.
1854.
1855.
1856.
1857.
1858.
1859.
1860.
1861.
1862.
1863.
1864.
1865.
1866.
1867.
1868.
1869.
1870.
1871.
1872.
1873.
1874.
1875.
1876.
1877.
1878.
1879.
1880.
1881.
1882.
1883.
1884.
1885.
1886.
1887.
1888.
1889.
1890.
1891.
1892.
1893.
1894.
1895.
1896.
1897.
1898.
1899.
1900.
1901.
1902.
1903.
1904.
1905.
1906.
1907.
1908.
1909.
1910.
1911.
1912.
1913.
1914.
1915.
1916.
1917.
1918.
1919.
1920.
1921.
1922.
1923.
1924.
1925.
1926.
1927.
1928.
1929.
1930.
1931.
1932.
1933.
1934.
1935.
1936.
1937.
1938.
1939.
1940.
1941.
1942.
1943.
1944.
1945.
1946.
1947.
1948.
1949.
1950.
1951.
1952.
1953.
1954.
1955.
1956.
1957.
1958.
1959.
1960.
1961.
1962.
1963.
1964.
1965.
1966.
1967.
1968.
1969.
1970.
1971.
1972.
1973.
1974.
1975.
1976.
1977.
1978.
1979.
1980.
1981.
1982.
1983.
1984.
1985.
1986.
1987.
1988.
1989.
1990.
1991.
1992.
1993.
1994.
1995.
1996.
1997.
1998.
1999.
2000.
2001.
2002.
2003.
2004.
2005.
2006.
2007.
2008.
2009.
2010.
2011.
2012.
2013.
2014.
2015.
2016.
2017.
2018.
2019.
2020.
2021.
2022.
2023.
2024.
2025.
2026.
2027.
2028.
2029.
2030.
2031.
2032.
2033.
2034.
2035.
2036.
2037.
2038.
2039.
2040.
2041.
2042.
2043.
2044.
2045.
2046.
2047.
2048.
2049.
2050.
2051.
2052.
2053.
2054.
2055.
2056.
2057.
2058.
2059.
2060.
2061.
2062.
2063.
2064.
2065.
2066.
2067.
2068.
2069.
2070.
2071.
2072.
2073.
2074.
2075.
2076.
2077.
2078.
2079.
2080.
2081.
2082.
2083.
2084.
2085.
2086.
2087.
2088.
2089.
2090.
2091.
2092.
2093.
2094.
2095.
2096.
2097.
2098.
2099.
2100.
2101.
2102.
2103.
2104.
2105.
2106.
2107.
2108.
2109.
2110.
2111.
2112.
2113.
2114.
2115.
2116.
2117.
2118.
2119.
2120.
2121.
2122.
2123.
2124.
2125.
2126.
2127.
2128.
2129.
2130.
2131.
2132.
2133.
2134.
2135.
2136.
2137.
2138.
2139.
2140.
2141.
2142.
2143.
2144.
2145.
2146.
2147.
2148.
2149.
2150.
2151.
2152.
2153.
2154.
2155.
2156.
2157.
2158.
2159.
2160.
2161.
2162.
2163.
2164.
2165.
2166.
2167.
2168.
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <codmod>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <nvault>
 
#define PLUGIN "Call of Duty: MW Mod"
#define VERSION "1.0-3"
#define AUTHOR "QTM_Peyote"
 
#define MAX_WIELKOSC_NAZWY 32
#define MAX_WIELKOSC_OPISU 256
#define MAX_ILOSC_PERKOW 120
#define MAX_ILOSC_KLAS 100
 
new szQuestion[512] = "";
new szAnswer[512] = "";
new szPyt[512] = "";
new szOdp[512] = "";
new message[512];
new gszFile[128];
 
// CVARS
new mode, qee, czas, odliczanie, zakonczenie, style, first, second, RGB, PosX, PosY, minF, maxF, minG, maxG;
new count, active, start, show_time;
 
// True answer;
new answer[512];
 
// Catch winner?
new bool:catch = false;
 
// Question / Equation is in progress?
new bool:is_in_progress;
 
// Arrays
new Array:questions, Array:answers;
 
new SyncHudObj5;
 
 
#define STANDARDOWA_SZYBKOSC 250.0
 
 
#define ZADANIE_POKAZ_INFORMACJE 672
#define ZADANIE_POKAZ_REKLAME 768
#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 vault;
new g_monety;
 
 
 
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, 1<<CSW_GLOCK18, 1<<CSW_USP},
bronie_dozwolone = 1<<CSW_KNIFE | 1<<CSW_C4;
 
new bool:freezetime = true;
 
new monety_gracza[33]
 
#define MAX_WIELKOSC_FRAKCJA 64
new frakcja_klas[MAX_ILOSC_KLAS+1][MAX_WIELKOSC_FRAKCJA+1]
 
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"); 
 
	// CVARS
	qee = register_cvar("qee_active", "1");               // 0 - Plugin Disable; 1 - Plugin Enable
	mode = register_cvar("qee_mode", "0");                // 0 - Questions; 1 - Equation; 2 - random;
	czas = register_cvar("qee_time_start", "300.0");      // Time to start Questions in second
	odliczanie = register_cvar("qee_count", "10");        // Time Countdown to the questions
	zakonczenie = register_cvar("qee_end", "8");          // Time to write answer
	style = register_cvar("qee_show", "0");               // Style to show questions 0 - HudMessage; 1 - ClientPrint
	first = register_cvar("qee_max_fnumber", "100");      // First number to equation
	second = register_cvar("qee_max_snumber", "200");     // Second number to equation
	RGB = register_cvar("qee_rgb", "255255255");          // Colors of HudMessages
	PosX = register_cvar("qee_posx", "-1.0");             // Position X of HudMessage
	PosY = register_cvar("qee_posy", "0.28");             // Position Y of HudMessage
	minF = register_cvar("qee_min_frags", "2");           // Minimum frags award
	maxF = register_cvar("qee_max_frags", "10");          // Maximum frags award
	minG = register_cvar("qee_min_gold", "500");          // Minimum gold award
	maxG = register_cvar("qee_max_gold", "5000");         // Maximum gold award
	show_time = register_cvar("qee_time_hud", "6.0");     // How long do you want to see a shout
 
	start = get_pcvar_num(czas);
 
	// ARRAYS
	questions = ArrayCreate(64,10)
	answers = ArrayCreate(64,10)
 
	// REGISTERS
	register_clcmd("say", "say_handle");
	register_clcmd("Pytanie", "pytanie");
	register_clcmd("Odpowiedz", "odpowiedz");
	register_clcmd("say /menu_qee", "admin_menu");
	register_clcmd("/menu_qee", "admin_menu");
	register_clcmd("/qee", "admin_menu");
	register_clcmd("say /qee", "admin_menu");
 
	set_task(float(start), "g_count", 2000);
 
	// FILES
	new szDir[128];
	get_configsdir(szDir, charsmax(szDir));
	add(szDir, sizeof szDir, "/Questions_Equation");
 
	if (!dir_exists(szDir))
		mkdir(szDir);
 
	format(gszFile, charsmax(gszFile), "%s/questions.ini", szDir);
	if(!file_exists(gszFile))
		write_file(gszFile, "^"Stolica Polski to?^" ^"Warszawa^"");
 
	SyncHudObj = CreateHudSyncObj();
	SyncHudObj5 = CreateHudSyncObj()
 
	ZaladujPlik();
 
	register_clcmd("say /klasa", "WybierzKlase");
	register_clcmd("say /sklep", "monety_shop");
	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 /drop", "WyrzucPerk");
	register_clcmd("say /wyrzuc", "WyrzucPerk");
	register_clcmd("say /reset", "KomendaResetujPunkty");
	register_clcmd("say /statystyki", "PrzydzielPunkty");
	register_clcmd("say /staty", "PrzydzielPunkty");
	register_clcmd("say /pomoc", "Pomoc");
	register_clcmd("useperk", "UzyjPerku");
	register_clcmd("radio3", "UzyjPerku");
	register_clcmd("fullupdate", "BlokujKomende");
	register_clcmd("cod_dajmonety","Dajmonety",ADMIN_IMMUNITY,"Uzycie cod_dajmonety <nick> <ilosc>")
 
	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_message(get_user_msgid("Health"),"MessageHealth");
 
	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", "DeathMsg", "a")
 
	vault = nvault_open("CodMod");
	g_monety = nvault_open("codmodmonety");
 
	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");
 
	set_task(1.0, "plugin_cfg");
}		
 
public plugin_cfg()
{
	new lokalizacja_cfg[33];
	get_configsdir(lokalizacja_cfg, charsmax(lokalizacja_cfg));
	server_cmd("exec %s/codmod.cfg", lokalizacja_cfg);
	server_exec();
}
 
 
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(punkty_gracza[id] > 0)
		PrzydzielPunkty(id);
 
	return PLUGIN_CONTINUE;
}
public DeathMsg()
{
	new kid = read_data(1)
	new vid = read_data(2)
	daj_monety(kid)
	ZapiszMonety(vid)
}
public daj_monety(id)
{ 
	WczytajMonety(id)
	if( get_user_flags(id) & ADMIN_LEVEL_H) monety_gracza[id]+=2
	else monety_gracza[id]++
 
	ZapiszMonety(id)
	PokazInformacje(id) 
}
public ZapiszMonety(id) //zapisz monety
{
	new AuthID[35]
 
	get_user_name(id,AuthID,34)
 
	new vaultkey[64],vaultdata[256]
	format(vaultkey,63,"%s-%s-Monety",AuthID,nazwy_klas[klasa_gracza[id]])
	format(vaultdata,255,"#%i#",monety_gracza[id])
	nvault_set(g_monety,vaultkey,vaultdata)
	return PLUGIN_CONTINUE
}
 
public WczytajMonety(id) //wczytaj monety
{
	new AuthID[35]
 
	get_user_name(id,AuthID,34)
 
	new vaultkey[64],vaultdata[256]
	format(vaultkey,63,"%s-%s-Monety",AuthID,nazwy_klas[klasa_gracza[id]])
	format(vaultdata,255,"#%i#",monety_gracza[id])
	nvault_get(g_monety,vaultkey,vaultdata,255)
 
	replace_all(vaultdata, 255, "#", " ")
 
	new monetygracza[32]
 
	parse(vaultdata, monetygracza, 31)
 
	monety_gracza[id] = str_to_num(monetygracza)
 
	return PLUGIN_CONTINUE
}
public client_connect(id) 
{
	WczytajMonety(id);
}
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;
	UstawPerk(id, perk_gracza[id], wartosc_perku_gracza[id], 0);
 
	WczytajDane(id, klasa_gracza[id]);
	WczytajMonety(id);
	PokazInformacje(id);
	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)*2;
 
	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;
 
	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 MessageHealth(msg_id, msg_dest, msg_entity)
{
	static health;
	health = get_msg_arg_int(1);
 
	if (health < 256) return;
 
	if (!(health % 256))
		set_pev(msg_entity, pev_health, pev(msg_entity, pev_health)-1);
 
	set_msg_arg_int(1, get_msg_argtype(1), 255);
}
 
public client_authorized(id)
{
	UsunUmiejetnosci(id);
 
	get_user_name(id, nazwa_gracza[id], 63);
 
	UsunZadania(id);
 
	set_task(10.0, "PokazReklame", id+ZADANIE_POKAZ_REKLAME);
}
 
public client_disconnect(id)
{
	ZapiszDane(id);
	ZapiszMonety(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_POKAZ_REKLAME);	
	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;
		client_print(id, print_chat, "[COD:MW] Dostales %i 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);
 
	client_print(id, print_chat, "Perk: %s.", nazwy_perkow[perk]);
	client_print(id, print_chat, "Opis: %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 bool:is_in_previous(frakcja[],from){
        for(new i = from - 1;i>=1;i--){
                if(equali(frakcja_klas[i],frakcja)){
                        return true;
                }
        }
        return false;
}
public WybierzKlase(id)
{
        new menu = menu_create("Wybierz klase:", "WybierzKlase_Frakcje");
        for(new i=1; i <= ilosc_klas; i++)
        {
                if(!is_in_previous(frakcja_klas[i],i)){
                        menu_additem(menu,frakcja_klas[i],frakcja_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);
}
 
public WybierzKlase_Frakcje(id, menu, item)
{
	if(item == MENU_EXIT){
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
 
	new data[65], iName[64] 
	new acces, callback 
	menu_item_getinfo(menu, item, acces, data,64, iName, 63, callback) 
 
	new menu2 = menu_create("Wybierz klase:", "WybierzKlase_Handle");
 
	new klasa[50],szTmp[5];
	for(new i=1; i <= ilosc_klas; i++)
	{
		if(equali(data,frakcja_klas[i])){
			WczytajDane(id, i);
			format(klasa, charsmax(klasa), "%s \yPoziom: %i", nazwy_klas[i], poziom_gracza[id]);
			num_to_str(i,szTmp,charsmax(szTmp));
			menu_additem(menu2, klasa,szTmp);
		}
	}
 
	WczytajDane(id, klasa_gracza[id]);
 
	menu_setprop(menu2, MPROP_EXITNAME, "Wyjdz");
	menu_setprop(menu2, MPROP_BACKNAME, "Poprzednia strona");
	menu_setprop(menu2, MPROP_NEXTNAME, "Nastepna strona");
	menu_display(id, menu2);
 
	client_cmd(id, "spk QTM_CodMod/select");
 
	menu_destroy(menu);
	return PLUGIN_CONTINUE;
}
 
public WybierzKlase_Handle(id, menu, item)
{
	client_cmd(id, "spk QTM_CodMod/select");
 
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}	
 
	new data[65], iName[64] 
	new acces, callback 
	menu_item_getinfo(menu, item, acces, data,64, iName, 63, callback) 
 
	item = str_to_num(data);
 
	if(item == klasa_gracza[id] && !nowa_klasa_gracza[id])
	return PLUGIN_CONTINUE;
 
	nowa_klasa_gracza[id] = item;
 
	if(klasa_gracza[id])
	client_print(id, print_chat, "[COD:MW] 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];
	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]);
	new menu = menu_create(tytul, "PrzydzielPunkty_Handler");
	menu_additem(menu, inteligencja);
	menu_additem(menu, zdrowie);
	menu_additem(menu, wytrzymalosc);
	menu_additem(menu, kondycja);
	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 
				client_print(id, print_chat, "[COD:MW] Maxymalny poziom inteligencji osiagniety");
 
 
		}
		case 1: 
		{	
			if(zdrowie_gracza[id] < limit_poziomu/2)
			{
				zdrowie_gracza[id]++;
				punkty_gracza[id]--;
			}
			else 
				client_print(id, print_chat, "[COD:MW] Maxymalny poziom sily osiagniety");
		}
		case 2: 
		{	
			if(wytrzymalosc_gracza[id] < limit_poziomu/2)
			{
				wytrzymalosc_gracza[id]++;
				punkty_gracza[id]--;
			}
			else 
				client_print(id, print_chat, "[COD:MW] Maxymalny poziom zrecznosci osiagniety");
 
		}
		case 3: 
		{	
			if(kondycja_gracza[id] < limit_poziomu/2)
			{
				kondycja_gracza[id]++;
				punkty_gracza[id]--;
			}
			else
				client_print(id, print_chat, "[COD:MW] Maxymalny poziom kondycji osiagniety");
		}
	}
 
	if(punkty_gracza[id] > 0)
		PrzydzielPunkty(id);
 
	return PLUGIN_CONTINUE;
}
 
public KomendaResetujPunkty(id)
{	
	client_print(id, print_chat, "[COD:MW] Umiejetnosci zostana zresetowane.");
	client_cmd(id, "spk QTM_CodMod/select");
 
	ResetujPunkty(id);
}
 
public ResetujPunkty(id)
{
	punkty_gracza[id] = (poziom_gracza[id]-1)*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 weaponname[22];
 
		get_weaponname(bron, weaponname, 21);
		ham_strip_weapon(id, weaponname);
	}
 
	if(cs_get_user_shield(id) && !gracz_ma_tarcze[id])
		engclient_cmd(id, "drop", "weapon_shield");	
 
	UstawSzybkosc(id);
}
 
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 ZapiszDane(id)
{
	if(!klasa_gracza[id])
		return PLUGIN_CONTINUE;
 
	new vaultkey[128],vaultdata[256], identyfikator[64];
	format(vaultdata, charsmax(vaultdata),"#%i#%i#%i#%i#%i#%i", doswiadczenie_gracza[id], poziom_gracza[id], inteligencja_gracza[id], zdrowie_gracza[id], wytrzymalosc_gracza[id], kondycja_gracza[id]);
 
	new typ_zapisu = get_pcvar_num(cvar_typ_zapisu);
 
	switch(typ_zapisu)
	{
		case 1: copy(identyfikator, charsmax(identyfikator), nazwa_gracza[id]);
			case 2: get_user_authid(id, identyfikator, charsmax(identyfikator));
			case 3: get_user_ip(id, identyfikator, charsmax(identyfikator));
		}
 
	format(vaultkey, charsmax(vaultkey),"%s-%s-%i-cod", identyfikator, nazwy_klas[klasa_gracza[id]], typ_zapisu);
	nvault_set(vault,vaultkey,vaultdata);
 
	return PLUGIN_CONTINUE;
}
 
public WczytajDane(id, klasa)
{
	new vaultkey[128],vaultdata[256], identyfikator[64];
 
	new typ_zapisu = get_pcvar_num(cvar_typ_zapisu);
 
	switch(typ_zapisu)
	{
		case 1: copy(identyfikator, charsmax(identyfikator), nazwa_gracza[id]);
			case 2: get_user_authid(id, identyfikator, charsmax(identyfikator));
			case 3: get_user_ip(id, identyfikator, charsmax(identyfikator));
		}
 
	format(vaultkey, charsmax(vaultkey),"%s-%s-%i-cod", identyfikator, nazwy_klas[klasa], typ_zapisu);
 
 
	if(!nvault_get(vault,vaultkey,vaultdata,255)) // Jezeli nie ma danych gracza sprawdza stary zapis. 
	{
		format(vaultkey, charsmax(vaultkey), "%s-%i-cod", nazwa_gracza[id], klasa);
		nvault_get(vault,vaultkey,vaultdata,255);
	}
 
	replace_all(vaultdata, 255, "#", " ");
 
	new danegracza[6][32];
 
	parse(vaultdata, danegracza[0], 31, danegracza[1], 31, danegracza[2], 31, danegracza[3], 31, danegracza[4], 31, danegracza[5], 31);
 
	doswiadczenie_gracza[id] = str_to_num(danegracza[0]);
	poziom_gracza[id] = str_to_num(danegracza[1])>0?str_to_num(danegracza[1]):1;
	inteligencja_gracza[id] = str_to_num(danegracza[2]);
	zdrowie_gracza[id] = str_to_num(danegracza[3]);
	wytrzymalosc_gracza[id] = str_to_num(danegracza[4]);
	kondycja_gracza[id] = str_to_num(danegracza[5]);
	punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id];
 
	return PLUGIN_CONTINUE;
} 
 
 
public WyrzucPerk(id)
{
	if(perk_gracza[id])
	{
		client_print(id, print_chat, "[COD:MW] Wyrzuciles %s.", nazwy_perkow[perk_gracza[id]]);
		UstawPerk(id, 0, 0, 0);
	}
	else
		client_print(id, print_chat, "[COD:MW] Nie masz zadnego perku.");
}
 
public SprawdzPoziom(id)
{	
	if(!is_user_connected(id))
		return;
 
	new limit_poziomu = get_pcvar_num(cvar_limit_poziomu);
 
	new bool:zdobyl_poziom = false, bool:stracil_poziom = false;
 
	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);
	}
 
	if(stracil_poziom)
	{
		ResetujPunkty(id);
		set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0);
		ShowSyncHudMsg(id, SyncHudObj2,"Spadles do %i poziomu!", poziom_gracza[id]);
	}
	else if(zdobyl_poziom)
	{
		punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id];
		set_hudmessage(212, 255, 85, 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;
	}
 
	if(!is_user_alive(id))
	{
		new target = pev(id, pev_iuser2);
 
		if(!target)
			return PLUGIN_CONTINUE;
 
		set_hudmessage(255, 255, 255, 0.6, -1.0, 0, 0.0, 0.3, 0.0, 0.0, 2);
		ShowSyncHudMsg(id, SyncHudObj, "Klasa : %s^nDoswiadczenie : %i / %i^nPoziom : %i^nPerk : %s", nazwy_klas[klasa_gracza[target]], doswiadczenie_gracza[target], PobierzDoswiadczeniePoziomu(poziom_gracza[target]), poziom_gracza[target], nazwy_perkow[perk_gracza[target]]);
		return PLUGIN_CONTINUE;
	}
 
	set_hudmessage(0, 255, 0, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0);
	ShowSyncHudMsg(id, SyncHudObj, "[Klasa : %s]^n[Doswiadczenie : %i / %i]^n[Poziom : %i]^n[Perk : %s]^n[Monety : %i]", nazwy_klas[klasa_gracza[id]], doswiadczenie_gracza[id], PobierzDoswiadczeniePoziomu(poziom_gracza[id]), poziom_gracza[id], nazwy_perkow[perk_gracza[id]], monety_gracza[id])
 
	return PLUGIN_CONTINUE;
}  
 
public PokazReklame(id)
{
	id-=ZADANIE_POKAZ_REKLAME;
	client_print(id, print_chat, "[COD:MW] Witaj w Modyfikacji Call of Duty stworzonej przez QTM_Peyote");
	client_print(id, print_chat, "[COD:MW] W celu uzyskania informacji o komendach napisz /pomoc.");
}
 
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\yradio3\w (standardowo C) lub  \yuseperk\w - Uzycie perku", -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]) 
		client_print(id, print_chat, "[COD:MW] Zdobyles %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);
	if(!((1<<bron) & (1<<CSW_HEGRENADE | 1<<CSW_SMOKEGRENADE | 1<<CSW_FLASHBANG)))
		engclient_cmd(id, "drop", 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 != 8)
	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);
	get_string(8, frakcja_klas[ilosc_klas], MAX_WIELKOSC_FRAKCJA);
 
	return ilosc_klas;
}
 
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
}
 
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 monety_shop(id)
{
	new menu = menu_create("Monety - Glowne Menu :", "menu_handler")
	menu_additem(menu, "\wDoladuj Zycie \d[Otwiera Menu]", "1", 0)
	menu_additem(menu, "\wExp i Itemy \d[Otwiera Menu]", "2", 0)
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
	menu_display(id, menu, 0)
}
public menu_handler(id, menu, item)
{
	if (item == MENU_EXIT)
	{
		return PLUGIN_HANDLED
	}
	new data[6], iName[64]
	new access, callback
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
	new key = str_to_num(data)
	switch(key)
	{
		case 1: 
		{
			doladuj_hp(id)
		}
		case 2: 
		{
			exp_i_itemy(id)
		}
	}
	menu_destroy(menu)
	return PLUGIN_HANDLED
}
public doladuj_hp(id)
{
	new menu = menu_create("Monety - Doladuj Zycie :", "menu_handler1")
	menu_additem(menu, "\wDoladuj +5HP \d[25 Monet]", "1", 0)
	menu_additem(menu, "\wDoladuj +10HP \d[40 Monet]", "2", 0)
	menu_additem(menu, "\wDoladuj +15HP \d[70 Monet]", "3", 0)
	menu_additem(menu, "\wDoladuj +20HP \d[95 Monet]", "4", 0)
	menu_additem(menu, "\wDoladuj +25HP \d[120 Monet]", "5", 0)
	menu_additem(menu, "\wDoladuj +30HP \d[135 Monet]", "6", 0)
	menu_additem(menu, "\wDoladuj +35HP \d[160 Monet]", "7", 0)
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
	menu_display(id, menu, 0)
	client_cmd(id, "spk QTM_CodMod/select");
}
public menu_handler1(id, menu, item)
{
	if (item == MENU_EXIT)
	{
		return PLUGIN_HANDLED
	}
	new data[6], iName[64]
	new access, callback
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
	new key = str_to_num(data)
	switch(key)
	{
		case 1: 
		{
			new koszt = 25;
			if (monety_gracza[id]<koszt)
			{
				set_hudmessage(42, 255, 42, -1.0, -1.0, 0, 6.0, 3.0)
				show_hudmessage(id, "Nie masz wystarczajacej ilosci monet")
				return PLUGIN_CONTINUE;
			}
			if (monety_gracza[id]>=koszt)
			{
				monety_gracza[id] -= koszt;
				set_user_health(id,get_user_health(id) + 5);
			}
		}
		case 2: 
		{
			new koszt = 40;
			if (monety_gracza[id]<koszt)
			{
				set_hudmessage(42, 255, 42, -1.0, -1.0, 0, 6.0, 3.0)
				show_hudmessage(id, "Nie masz wystarczajacej ilosci monet")
				return PLUGIN_CONTINUE;
			}
			if (monety_gracza[id]>=koszt)
			{
				monety_gracza[id] -= koszt;
				set_user_health(id,get_user_health(id) + 10);
			}
		}
		case 3: 
		{
			new koszt = 70;
			if (monety_gracza[id]<koszt)
			{
				set_hudmessage(42, 255, 42, -1.0, -1.0, 0, 6.0, 3.0)
				show_hudmessage(id, "Nie masz wystarczajacej ilosci monet")
				return PLUGIN_CONTINUE;
			}
			if (monety_gracza[id]>=koszt)
			{
				monety_gracza[id] -= koszt;
				set_user_health(id,get_user_health(id) + 15);
			}
		}
		case 4: 
		{
			new koszt = 95;
			if (monety_gracza[id]<koszt)
			{
				set_hudmessage(42, 255, 42, -1.0, -1.0, 0, 6.0, 3.0)
				show_hudmessage(id, "Nie masz wystarczajacej ilosci monet")
				return PLUGIN_CONTINUE;
			}
			if (monety_gracza[id]>=koszt)
			{
				monety_gracza[id] -= koszt;
				set_user_health(id,get_user_health(id) + 20);
			}
		}
		case 5: 
		{
			new koszt = 120;
			if (monety_gracza[id]<koszt)
			{
				set_hudmessage(42, 255, 42, -1.0, -1.0, 0, 6.0, 3.0)
				show_hudmessage(id, "Nie masz wystarczajacej ilosci monet")
				return PLUGIN_CONTINUE;
			}
			if (monety_gracza[id]>=koszt)
			{
				monety_gracza[id] -= koszt;
				set_user_health(id,get_user_health(id) + 25);
			}
		}
		case 6: 
		{
			new koszt = 135;
			if (monety_gracza[id]<koszt)
			{
				set_hudmessage(42, 255, 42, -1.0, -1.0, 0, 6.0, 3.0)
				show_hudmessage(id, "Nie masz wystarczajacej ilosci monet")
				return PLUGIN_CONTINUE;
			}
			if (monety_gracza[id]>=koszt)
			{
				monety_gracza[id] -= koszt;
				set_user_health(id,get_user_health(id) + 30);
			}
		}
		case 7: 
		{
			new koszt = 160;
			if (monety_gracza[id]<koszt)
			{
				set_hudmessage(42, 255, 42, -1.0, -1.0, 0, 6.0, 3.0)
				show_hudmessage(id, "Nie masz wystarczajacej ilosci monet")
				return PLUGIN_CONTINUE;
			}
			if (monety_gracza[id]>=koszt)
			{
				monety_gracza[id] -= koszt;
				set_user_health(id,get_user_health(id) + 35);
			}
		}
 
	}
	client_cmd(id, "spk QTM_CodMod/select");
	menu_destroy(menu)
	return PLUGIN_HANDLED
}
public exp_i_itemy(id)
{
	new menu = menu_create("Monety - Glowne Menu :", "menu_handler2")
	menu_additem(menu, "\wLosuj Doswiadczenie Male \d[150 Monet]", "1", 0)
	menu_additem(menu, "\wLosuj Doswiadczebue Srednie \d[300 Monet]", "2", 0)
	menu_additem(menu, "\wLosuj Doswiadczebue Mega \d[600 Monet]", "2", 0)
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
	menu_display(id, menu, 0)
	client_cmd(id, "spk QTM_CodMod/select");
}
public menu_handler2(id, menu, item)
{
	if (item == MENU_EXIT)
	{
		return PLUGIN_HANDLED
	}
	new data[6], iName[64]
	new access, callback
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
	new key = str_to_num(data)
	switch(key)
	{
		case 1: 
		{
			new koszt = 150;
			if (monety_gracza[id]<koszt)
			{
				set_hudmessage(42, 255, 42, -1.0, -1.0, 0, 6.0, 3.0)
				show_hudmessage(id, "Nie masz wystarczajacej ilosci monet")
				return PLUGIN_CONTINUE;
			}
			if (monety_gracza[id]>=koszt)
			{
				new exp = poziom_gracza[id]+random_num(500,10000)
				doswiadczenie_gracza[id] += exp
				monety_gracza[id] -= koszt;
				set_hudmessage(42, 255, 42, -1.0, -1.0, 0, 6.0, 3.0)
				show_hudmessage(id, "Gratulujemy ! wylosowales %i expa", exp)
				client_cmd(id, "spk QTM_CodMod/select");
			}
		}
		case 2: 
		{
			new koszt = 300;
			if (monety_gracza[id]<koszt)
			{
				set_hudmessage(42, 255, 42, -1.0, -1.0, 0, 6.0, 3.0)
				show_hudmessage(id, "Nie masz wystarczajacej ilosci monet")
				return PLUGIN_CONTINUE;
			}
			if (monety_gracza[id]>=koszt)
			{
				new exp = poziom_gracza[id]*2+random_num(1000,20000)
				doswiadczenie_gracza[id] += exp
				monety_gracza[id] -= koszt;
				set_hudmessage(42, 255, 42, -1.0, -1.0, 0, 6.0, 3.0)
				show_hudmessage(id, "Gratulujemy ! wylosowales %i expa", exp)
				client_cmd(id, "spk QTM_CodMod/select");
			}
		}
		case 3: 
		{
			new koszt = 600;
			if (monety_gracza[id]<koszt)
			{
				set_hudmessage(42, 255, 42, -1.0, -1.0, 0, 6.0, 3.0)
				show_hudmessage(id, "Nie masz wystarczajacej ilosci monet")
				return PLUGIN_CONTINUE;
			}
			if (monety_gracza[id]>=koszt)
			{
				new exp = poziom_gracza[id]*4+random_num(2000,40000)
				doswiadczenie_gracza[id] += exp
				monety_gracza[id] -= koszt;
				set_hudmessage(42, 255, 42, -1.0, -1.0, 0, 6.0, 3.0)
				show_hudmessage(id, "Gratulujemy ! wylosowales %i expa", exp)
				client_cmd(id, "spk QTM_CodMod/select");
			}
		}
	}
	ZapiszMonety(id)
	menu_destroy(menu)
	return PLUGIN_HANDLED
}
public Dajmonety(id, level, cid)
{
	if(!cmd_access(id,level,cid,3))
		return PLUGIN_HANDLED;
 
	new arg1[33];
	new arg2[6];
	read_argv(1, arg1, 32);
	read_argv(2, arg2, 5);
	new gracz  = cmd_target(id, arg1, 0);
	new punkty = str_to_num(arg2);
 
	if(punkty < 1)
	{
		client_print(id, print_console, "Podales nieprawidlowa liczbe punktow.")
		return PLUGIN_HANDLED;
	}
 
	monety_gracza[gracz]+=punkty
	ZapiszMonety(id);
	client_print(id, print_console,"%i monet zostaly przyznane graczowi %s",punkty,gracz);
	return PLUGIN_HANDLED;
}
public ZaladujPlik()
{
	new sz1[64],sz2[64];
 
	new line=0, text[128],chars
	do
{
	line = read_file(gszFile,line,text,127,chars)
	parse(text, sz1, 63, sz2, 63);
	ArrayPushString(questions,sz1);
	ArrayPushString(answers,sz2);
 
}
while(line!=0)
}
 
public Zapisz(id){
	new file = fopen(gszFile, "a");
	new szData[512];
 
	formatex(szData, 512, "^"%s^" ^"%s^"^n", szPyt, szOdp);
	fputs(file, szData);
 
	client_print(id, 3, "******Zapisano!******");
 
	fclose(file);
}
 
public g_count()
{
	active = get_pcvar_num(qee);
	if(active && !is_in_progress)	
	{
		count = get_pcvar_num(odliczanie);
 
		format(message, charsmax(message), "Do zadania pytania pozostalo %i sekund", count);
		show_text(message)
 
		remove_task(2000);
		set_task(1.0, "odswiezzz", 2000,_,_,"b");
 
		is_in_progress = true;
	}
}
 
public odswiezzz()
{
	new modes = get_pcvar_num(mode);
	if(count-- <= 0){
		remove_task(2000)
		for(new id = 1; id < 33; id++) choose_style(modes)
	}
	else
	{
		format(message, charsmax(message), "Do zadania pytania pozostalo %i sekund", count);
		show_text(message)
	}
}
 
public choose_style(style)
{
	if(active)
	{
		new end = get_pcvar_num(zakonczenie);
		set_task(float(end), "Zakoncz", 3000);
		catch = true;
 
		switch(style)
		{
			case 0:
			{
				static line;
				if(++line >= ArraySize(questions)){
					line = 0;
				}
				ArrayGetString(questions,line,szQuestion,charsmax(szQuestion));
				ArrayGetString(answers,line,szAnswer,charsmax(szAnswer));
 
				format(message, charsmax(message), "%s", szQuestion);
				show_text(message)
 
				format(answer, charsmax(answer), "%s", szAnswer); 
 
				return PLUGIN_HANDLED;
			}
			case 1:
			{
				new fnumber = get_pcvar_num(first); new snumber = get_pcvar_num(second);
				new rnd1 = random_num(10, fnumber);
				new rnd2 = random_num(10, snumber);
				new rnd3 = rnd2 / 2;
				new wynik = rnd1 + rnd2 - rnd3;
				format(answer, 511, "%i", wynik); 
 
				format(message, charsmax(message), "Rozwiaz rownanie: %i + %i - %i", rnd1, rnd2, rnd3);
				show_text(message)
 
				return PLUGIN_HANDLED;
			}
			case 2:
			{
				new rnd = random_num(0,1);
				choose_style(rnd);
				return PLUGIN_HANDLED;
			}
		}
	}
	return PLUGIN_CONTINUE;
}
 
public say_handle(id){
	if(!catch || !active)
		return PLUGIN_CONTINUE;
 
	new command[192]
	read_argv(1,command,191)
 
	if(equali(command,answer)) 
	{
		awards(id);
		remove_task(3000);
		set_task(float(start), "g_count", 2000);
 
		catch = false;
		is_in_progress = false;
	}
	return PLUGIN_CONTINUE;
}
 
public Zakoncz()
{
	if(!active || !catch) return PLUGIN_HANDLED;
 
	format(message, charsmax(message), "Przykro mi, nikt nie wygral!");
	show_text(message)
 
	catch = false;
	is_in_progress = false;
	set_task(float(start), "g_count", 2000);
 
	return PLUGIN_CONTINUE;
}
 
public plugin_end(){
	ArrayDestroy(questions);
	ArrayDestroy(answers);
}
 
public admin_menu(id)
{
	new menu = menu_create("Dodawanie Pytan", "admin_menu_handle")
	menu_additem(menu, "Dodaj Pytanie");
	menu_additem(menu, "Przeladuj pytania");
 
	if(get_user_flags(id) & ADMIN_BAN)
		menu_display(id, menu, 0)
}
public admin_menu_handle(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	if(item == 0)
		client_cmd(id, "messagemode Pytanie");
	if(item == 1){
		ZaladujPlik();
		client_print(id, 3, "******Przeladowano pytania!******");
	}
 
	menu_destroy(menu);
	return PLUGIN_CONTINUE;
}
 
public pytanie(id){     
	new text[192]
	read_argv(1,text,191)
	format(szPyt, charsmax(szPyt), "%s", text);  
	client_cmd(id, "messagemode Odpowiedz");
}
public odpowiedz(id){   
	new text[192]
	read_argv(1,text,191)
	format(szOdp, charsmax(szOdp), "%s", text);  
	Zapisz(id);
}
 
stock show_text(message[])
{
	ClearSyncHud(0, SyncHudObj);
 
	new show = get_pcvar_num(style);
	new color[10] 
	new r, g, b, c
	get_pcvar_string(RGB, color, 9) 
	c = str_to_num(color) 
	r = c / 1000000 
	c %= 1000000  
	g = c / 1000 
	b = c % 1000 
 
	new Float:timeshow = get_pcvar_float(show_time);
	new Float:X = get_pcvar_float(PosX);
	new Float:Y = get_pcvar_float(PosY);
	set_hudmessage(r, g, b, X, Y, 0, 6.0, timeshow)
 
	if(show == 0)
		ShowSyncHudMsg(0, SyncHudObj5, "%s", message)
	else if(show == 1)
		client_print(0, print_center, "%s", message)
}
 
public awards(id)
{
	new rannum = random_num(0,1);
	new nick[34];
	get_user_name(id, nick, 33)
	switch(rannum)
	{
		case 0:
		{
			new minf = get_pcvar_num(minF); new maxf = get_pcvar_num(maxF);
			new rnd = random_num(minf, maxf);
			set_user_frags(id,get_user_frags(id) + rnd);
 
			format(message, charsmax(message), "Poprawna odpowiedz! %s wygral +%i fragow!", nick, rnd);
			show_text(message);
 
			message_begin(MSG_ALL,85)
			write_byte(id)
			write_short(get_user_frags(id))
			write_short(get_user_deaths(id))
			write_short(0)
			write_short(get_user_team(id))
			message_end()
 
			return PLUGIN_HANDLED;
		}
		case 1:
		{
			new ming = get_pcvar_num(minG); new maxg = get_pcvar_num(maxG);
			new rnd = random_num(ming, maxg);
			monety_gracza[id] += rnd
 
			format(message, charsmax(message), "Poprawna odpowiedz! %s wygral +%i monet!", nick, rnd);
			show_text(message);
 
			return PLUGIN_HANDLED;
		}
	}
	ZapiszMonety(id)
	return PLUGIN_HANDLED;
}
public BlokujKomende()
	return PLUGIN_HANDLED;
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/